新CPUで仮想化がもっと使える!
セキュリティーへの応用
仮想化の応用例としては、サーバーコンソリデーション、ディザスタリカバリーなどサーバー向けのソリューションが多くあります。その一方で最近のCPUベンダーは、仮想化の機能を拡張しTPM(Trusted Platform Module)などと組み合わせて、セキュリティーに特化したビジネスクライアントシステムを提案しています。例えばIntelでは「バーチャルアプライアンス」と呼ぶVproテクノロジーとともに新しい利用形態を提案しています。
セキュリティーや内部統制の必要性の高まりなどから、最近シンクライアントが注目されています。個人的な見解ですが、シンクライアントはセキュリティーの面ではすばらしいのですが、ユーザーの使い勝手はあまり考えられていないように思われます。シンクライアントの利用で生産性(それにモチベーションも)が下がってしまっているような気がします。
それに比べCPUベンダー、特にIntelが出しているビジネスクライアントの利用形態は個人のPCを使って生産性を上げつつ、セキュリティーを上げていくという提案であり、1ユーザーとしては期待したい使い方です。一方、AMDもTrinityやraidenといったテクノロジーを提案しています。
トラステッドコンピューティングのTXT
セキュリティーを高める方法には、大きく2つのアプローチがあると言えます。それはブラックリストによるものホワイトリストによるものです。
前者はウイルス対策ソフトウエアなどが採用している方法で、ウイルスなどのいわゆる悪者を発見したらブラックリストに登録しておいて、それがシステムに何らかの形で侵入しようとしてきたらそれを防ごうというものです。
一方ホワイトリストによるセキュリティーは、信頼できるものを登録していく方法で、信頼できるもののみを利用していくことでセキュリティーを保っていくものです。
この信頼できるものの一連の流れは、トラストチェーンと呼ばれています(図3)。このようなトラステッドコンピューティングはTCG(Trusted Computing Group)が以前から推進しているものです。TCGは2003年に設立されたNPO団体で、世界中の140の企業が参加し共同でこのトラステッドコンピューティングを推進しています。
さてPCが起動する時の順番を見てみると、まずBIOS(EFIの場合もありますが)、次にOSが起動します。仮想環境下の場合は、BIOSに続いてVMMが起動し、次にOSが起動します。
よって仮想環境下ではVMMが信頼できるものでないとシステムのセキュリティーを上げることはできません。このためVMMのブートローダが信頼のおけるものかを判断してから起動するための機能が用意されています。Intelでは「トラステッドエグゼーキューションユニット(インテルTXT)」と呼ばれる機能がこれに当たります。この機能はCPUとチップセット、TPMで実現されています。
このTXTを使ってシステムを起動する場合、システムのソフトウエアコンポーネントが起動する際にそれぞれのハッシュ値を取ります。Intelではこの方法を「メジャーメント」と呼んでいます。このメジャーメントで得た値はTPMに格納されます。次回システムを起動した時は、再び各ソフトウエアコンポーネントのハッシュ値を取得し、TPMに格納された値と比較します。もしハッシュ値が異なれば何らかの改ざんが行われたと判断し、そのソフトウエアコンポーネントをホワイトリストから外します。これにより、セキュリティーを保つことができるわけです。
ソフトウエアでも同様の処理を行うことができますが、その場合そのソフトウエアが信頼できるかどうかを証明するための仕組みが必要になってきます。ハードウエアがこうしたサポートを行うことで、より強固で高いセキュリティーを保つことが可能になります。
また仮にゲストOSにセキュリティー上の問題があった場合でも、VMMがネットワークのトラフィックを監視することによってセキュリティーを保つことも可能です。
CPUの仮想化について一通り説明しました。仮想化のテクノロジーそのものは昔からメインフレームなどで使われてきた考え方であり、特別新しいわけでわけではありません。しかしながらそのようなテクノロジーがx86系のシステムで使われるようになり、選択肢が広がったことは特筆すべきでしょう。
加えて言うならば、XenあるいはKVM(Kernel Virtual Machine)といったオープンなコミュニティでこれらのテクノロジーが使われている点も注目すべきでしょう。こういった意味からも、どのソフトウエアがCPUの仮想化テクノロジーをどのように組み込んでいくか、またどれが自分の使用環境にあっているかなど考える意味でも、今後も動向が注目されるでしょう。