【文献】
山市 良,仮想化テクノロジー・アップデート,COMPUTERWORLD Get Technology Right,日本,(株)IDGジャパン,2008年 1月 1日,第5巻,第1号,58〜65頁
(58)【調査した分野】(Int.Cl.,DB名)
前記ブートローダバイナリは、前記仮想マシンイメージの前記位置として特定された前記ハードウェアシステムのハードディスクの位置のうちの最初の512バイトに置かれ、あるいは
前記ブートローダバイナリは、前記ハードディスクのパーティションテーブルを読むことによって決定される前記ハードディスクのパーティション内に置かれる、
請求項1乃至3の何れか一項に記載の方法。
前記ブートローダバイナリからインスタンス化されたブートローダにより、前記オペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成するステップと、
前記オペレーティングシステムメジャーメントを前記機密メモリに格納するステップと、
前記オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムにより、前記1つ以上のアプリケーションバイナリを計測して1つ以上のアプリケーションメジャーメントを生成するステップと、
前記1つ以上のアプリケーションメジャーメントを前記機密メモリに格納するステップと、
を更に有する請求項1乃至3の何れか一項に記載の方法。
前記ハイパーバイザは、当該ハードウェアシステムのオペレーティングシステムバイナリからインスタンス化され、当該ハードウェアシステムは更にハードウェアトラストアンカーと前記ブートローダバイナリとを有する、請求項9に記載のハードウェアシステム。
前記ハードウェアトラストアンカーは、トラステッド・プラットフォーム・モジュール(TPM)チップを有し、前記機密メモリは、前記TPMチップ内の1つ以上のレジスタを有する、請求項10に記載のハードウェアシステム。
【発明を実施するための形態】
【0010】
仮想マシンは、クラウドコンピューティングの要素として広く使用されている。仮想マシンは、自身が動作するハードウェアを仮想化し、異なる複数のハードウェアプラットフォームへのソフトウェアの容易な移行を可能にする。仮想マシンにおけるリモートアテステーションは、該仮想マシンをインスタンス化する前に、完全なる対応する仮想マシンイメージを計測することを伴い得る。仮想マシンイメージは大きなものとなることがあり、仮想マシンをインスタンス化する前に仮想マシンイメージ全体を計測することには有意な性能ペナルティが存在し得る。
【0011】
代替的あるいは付加的に、オペレーティングシステム及び/又はアプリケーションのアップデート、及び/又は新たなアプリケーションの追加は、対応する遠隔エンティティによって許可されたときであっても、新たな対応する仮想マシンイメージを生じさせる。新たな仮想マシンイメージのメジャーメントは、以前のメジャーメントとは異なったものとなり、ひいては、リモートアテステーションのために新たなメジャーメントが比較されることが可能な対応する予期されるメジャーメントとは異なったものとなり得る。従って、仮想マシンイメージが権限ある手法でアップデートされたときにトラストチェーンをリフレッシュするための自明な手法は存在していない。
【0012】
ここに記載される一部の実施形態によれば、仮想マシンイメージ全体を計測するのではなく、仮想マシンイメージの不変の部分が計測され得る。不変部分は、ブートローダバイナリを含むことができ、且つ/或いは、データのうちの比較的少量を表すデータの約512バイトのみを含むことができる。故に、対応する仮想マシンをインスタンス化する前に、仮想マシンイメージ全体を計測するのではなく、ブートローダバイナリのみを計測することによってトラストチェーンを構築しながら、性能が向上され得る。それに代えて、あるいは加えて、オペレーティングシステム又はアプリケーションがアップデートされたときにも、仮想マシンがリブートされる度にトラストチェーンがリフレッシュされ得る。
【0013】
以下、図面を参照して本発明の実施形態を説明する。
【0014】
図1は、ここに記載される少なくとも一部の実施形態に従って構成された、仮想マシン内でトラストチェーンが構築され得る動作環境100の一例を示している。動作環境100は、クラウドコンピューティングシステム102と、通信ネットワーク104と、1つ以上のユーザ106とを含み得る。
【0015】
一般的に、通信ネットワーク104は、クラウドコンピューティングシステム102とユーザ106とが相互に通信することを可能にする1つ以上のワイドエリアネットワーク(WAN)及び/又はローカルエリアネットワーク(LAN)を含み得る。一部の実施形態において、通信ネットワーク104は、複数のWAN及び/又はLAN間の論理・物理接続によって形成される世界的な相互接続ネットワークを含むインターネットを含む。それに代えて、あるいは加えて、通信ネットワーク104は、1つ以上のセルラー方式RFネットワークを含んでいてもよく、且つ/或いは、以下に限られないが例えば802.xxネットワーク、ブルートゥースアクセスポイント、無線アクセスポイント、IPベースネットワーク、又はこれらに類するものなどの、1つ以上の有線ネットワーク及び/又は無線ネットワークを含んでいてもよい。通信ネットワーク104はまた、一種類のネットワークが他の一種類のネットワークとのインタフェースをとることを可能にするサーバを含んでいてもよい。
【0016】
ユーザ106は、クラウドコンピューティングシステム102によって提供されるサービスにアクセスすることを望む、例えば個人、企業及び/又はその他の組織などの、エンティティを含み得る。例えば、クラウドコンピューティングシステム102は、有料IaaS(infrastructure-as-a-service)サービス及び/又は無料IaaSサービスをユーザ106に提供し得る。ユーザ106は更に、通信ネットワーク104上でクラウドコンピューティングシステム102と通信するための好適なハードウェア及び/又はソフトウェアを含んだコンピューティング装置を含み、あるいはそのような装置に結合され得る。しかしながら、以下の説明を単純化するため、コンピューティング装置及び関連エンティティを単に“ユーザ106”と呼ぶことにする。
【0017】
クラウドコンピューティングシステム102は、1つ以上のハードウェアシステムを含む計算リソースプール108を含み得る。計算リソースプール108は通信ネットワーク104を介してユーザ106にアクセス可能である。計算リソースプール108に含まれ得るハードウェアシステムの例には、以下に限られないが、ストレージ110、1つ以上のネットワーク及び/又はネットワーク装置112、並びに1つ以上のサーバ又はその他のコンピューティング装置114(以下、“サーバ114”と称する)がある。
【0018】
ストレージ110は、例えば磁気ストレージ、光ストレージ、半導体ストレージ、若しくはこれらに類するもの、又はこれらの組合せなどの不揮発性記憶装置を含み得る。
【0019】
1つ以上のネットワーク及び/又はネットワーク装置112は、クラウドコンピューティングシステム102内でのストレージ110とサーバ114との間の通信を容易にすることができ、例えば、ストレージエリアネットワーク(storage area network;SAN)、SANファブリック、ルータ、交換器、ハブ、若しくはこれらに類するもの、又はこれらの組合せを含み得る。
【0020】
サーバ114は各々、メモリ及び/又は1つ以上のプロセッサを含むことができ、ソフトウェアを実行して走らせ、且つ/或いはクラウドコンピューティングシステム102へのアクセスを提供し、且つ/或いはクラウドコンピューティングシステム102内でユーザ106が利用可能なソフトウェアを実行するように構成され得る。
【0021】
図1に例示するように、クラウドコンピューティングシステム102は更に仮想基盤(インフラ)116と1つ以上の仮想マシン118とを含み得る。仮想基盤116は、計算リソースプール108内のリソースの、上記1つ以上の仮想マシン118に対する動的マッピングを提供するように構成され得る。
【0022】
各仮想マシン118は、仮想基盤116によって該仮想マシン118に提示された仮想リソース上で走るように構成されたオペレーティングシステム120を含み得る。各仮想マシン118は更に、対応するオペレーティングシステム上で走る1つ以上のアプリケーション122を含んでいてもよい。
【0023】
従って、クラウドコンピューティングシステム102は、ユーザ106へのIaaSサービスの提供を支援し得る。例えば、各ユーザ106は、クラウドコンピューティングシステム102から、X演算性能及びYメモリ、及び/又は特定のソフトウェア、又はこれらに類するもの、を有するコンピュートノードを借りることができる。計算リソースプール108を仮想化することにより、IaaSプロバイダは各ユーザ106に、複数の仮想マシン118のうちの対応する1つを介して、所望のコンピュートノードを提供し、それにより、計算リソースプール108を効率的に利用し得る。
【0024】
一部の実施形態において、各仮想マシン118は、計算リソースプール108に保存された仮想マシンイメージからインスタンス化され得る。仮想マシンイメージは、実行されるときに対応する仮想マシン118をインスタンス化し得るバイナリコードを含んだ一組のファイルを含み得る。各仮想マシンイメージは、例えばブートローダバイナリなどの不変部分と、例えばオペレーティングシステム120に対応するオペレーティングシステムバイナリ及び1つ以上のアプリケーション122に対応する1つ以上のアプリケーションバイナリなどの1つ以上のその他の部分と、を含む複数の部分を含み得る。
【0025】
仮想基盤116は、計算リソースプール108にインストールされた1つ以上のハイパーバイザを含み得る。一部の実施形態において、例えば、仮想基盤116は、計算リソースプール108の別々の複数のハードウェアシステム上(例えば、複数のサーバ114の各々上など)にインストールされた1つのハイパーバイザを含んでいてもよい。
【0026】
各ハイパーバイザは、各仮想マシン118内にトラストチェーンを構築するように構成され得る。トラストチェーンは、各仮想マシン118内に、その仮想マシン118のインスタンス化の前又は間に構築されることができ、例えば、対応する仮想マシンイメージの不変部分を計測してトラストアンカーメジャーメントを生成し、機密メモリ(シールされた(sealed)メモリ)に該トラストアンカーメジャーメントを格納することを含み得る。機密メモリは概して、例えばトラステッド・プラットフォーム・モジュール(trusted platform module;TPM)チップ内の1つ以上のレジスタなど、リード(読出し)アクセス及び/又はライト(書込み)アクセスが制限されたメモリ位置を含み得る。それに代えて、あるいは加えて、更に詳細に後述するように、各仮想マシン118内のトラストチェーンは、対応する仮想マシン118がインスタンス化された計算リソースプール108内のハードウェアシステムのトラストチェーンとリンクされ得る。
【0027】
それに代えて、あるいは加えて、トラストチェーンは、各仮想マシン118内まで延長され得る。例えば、複数の仮想マシン118のうちの所与の1つに関して、ブートローダは、オペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成するように構成されることができ、且つオペレーティングシステムメジャーメントを機密メモリに格納するように更に構成され得る。さらに、オペレーティングシステム120をオペレーティングシステムバイナリからインスタンス化した後、オペレーティングシステム120は、仮想マシンイメージの1つ以上のアプリケーションバイナリの各々を計測して対応するアプリケーションメジャーメントを生成するように構成されることができ、且つアプリケーションメジャーメントを機密メモリに格納するように更に構成され得る。
【0028】
一部の実施形態において、クラウドコンピューティングシステム102は、特定のソフトウェア攻撃の検出を可能にするよう、各仮想マシン118のリモートアテステーションを複数のユーザ106のうちの対応する1つに提供するように構成され得る。具体的には、クラウドコンピューティングシステム102は、複数のユーザ106のうちの対応する1つによる要求に応答して、複数の仮想マシン118のうちの所与の1つに関して、ブートローダバイナリの対応するトラストアンカーメジャーメントと、オペレーティングシステムバイナリのオペレーティングシステムメジャーメントと、1つ以上のアプリケーションバイナリの1つ以上のアプリケーションメジャーメントと、を含む一組のメジャーメント(メジャーメントセット)を、該ユーザ106に提供するように構成され得る。このメジャーメントセットは、クラウドコンピューティングシステム102によって、より具体的には、対応する仮想マシン118がインスタンス化されるクラウドコンピューティングシステム102のハードウェアシステムによって署名され得る。メジャーメントセットに署名することは、クラウドコンピューティングシステム102の該ハードウェアシステムが、メジャーメントセットとともに、該ハードウェアシステムに関連付けられた確率的に無二の識別子を含めることを含み得る。
【0029】
ユーザ106は、メジャーメントセットを該ユーザ106に既知の予期されるメジャーメントと比較することによって、対応する仮想マシン118内で権限のないアプリケーションが実行されているか、又は対応するブートローダバイナリ、オペレーティングシステムバイナリ又は1つ以上のアプリケーションバイナリの何れかで権限のない改竄が行われたか、を決定するように構成され得る。一部の実施形態において、ユーザ106は更に、メジャーメントセットの署名に基づいて、クラウドコンピューティングシステム102が正当なものであるかを確認し得る。それに代えて、あるいは加えて、ユーザ106は、例えば該ユーザ106がクラウドコンピューティングシステム102内の対応する仮想マシン118を最初にインスタンス化するときに、予期されるメジャーメントをクラウドコンピューティングシステム102から事前に受信してもよい。
【0030】
図2は、ここに記載される少なくとも一部の実施形態に従って構成された、
図1の動作環境100内で実現され得るハードウェアシステム200の一実施形態のブロック図である。例えば、ハードウェアシステム200は、
図1のクラウドコンピューティングシステム102内の複数のサーバ114のうちの1つに相当し得る。ハードウェアシステム200は1つ以上のハードウェアリソース202を含むことができ、該1つ以上のハードウェアリソース202は、以下に限られないが、中央演算処理ユニット(CPU)204若しくはその他のプロセッサ、メモリ206、ネットワークインタフェースコントローラ(NIC)208、ハードウェアトラストアンカー210及びストレージ212を含み得る。
【0031】
ハードウェアシステム200は更に、ハードウェアリソース202にインストールされた例えばハイパーバイザなどの仮想基盤(仮想インフラ)214を含み得る。仮想基盤214は、例えば、
図1の仮想基盤116に相当し、一般に、ハードウェアリソース202へのアクセスを管理し、あるいは、ハードウェアリソース202を一様なプールへと“仮想化”し且つこのプールのハードウェアを1つ以上の仮想マシン216、218から分離し得る。
図2には2つの仮想マシン216、218が描かれているが、より一般的には、ハードウェアシステム200はその上で走る2つより多い或いは少ない仮想マシンを含み得る。ハードウェアリソース202を仮想化することにより、仮想基盤214は、所望の構成を有する標準ハードウェア220、222を各仮想マシン216、218のオペレーティングシステム224、226に提示し得る。各仮想マシン216、218内で、対応するオペレーティングシステム224、226上で、1つ以上のアプリケーション228、230が走り得る。
【0032】
ここに記載される一部の実施形態によれば、各仮想マシン216、218は、ここに記載される不変部分と1つ以上のその他の部分とを含む対応する仮想マシンイメージからインスタンス化され得る。これら及びその他の実施形態において、例えばハイパーバイザなどの仮想基盤214は、上述のように、仮想マシン216、218の各々内にトラストチェーンを構築し得る。
【0033】
図3Aは、ここに記載される少なくとも一部の実施形態に従って構成された、ネットワークサーバ300として実装されるハードウェアシステムの他の一実施形態のブロック図である。ネットワークサーバ300は、
図1の動作環境100内に実装されることができ、例えば、
図1のクラウドコンピューティングシステム102内の複数のサーバ114のうちの1つに相当し得る。ネットワークサーバ300は、プロセッサ302、メモリ304、スタートアップストレージ306、プログラムストレージ308、ハードウェアトラストアンカー310及び通信バス312を含むことができ、これらのコンポーネントは共に通信可能に結合するように構成されている。
【0034】
一部の実施形態において、ハードウェアトラストアンカー310はTPMセキュリティデバイス又はチップとし得る。他の実施形態において、ハードウェアトラストアンカー310は、別種類の暗号プロセッサ又は暗号マイクロプロセッサなどとし得る。より一般的には、ハードウェアトラストアンカー310は、ここに記載される機能を実行するように構成された如何なる種類のデバイスを含んでいてもよい。
【0035】
図3Aに例示するように、ハードウェアトラストアンカー310は、トラストプロセッサ314及び機密メモリ316を含み得る。機密メモリ316は、例えばTPMチップ内の1つ以上のレジスタなど、ハードウェアトラストアンカー310内の1つ以上のレジスタを用いて実装され得る。より一般的には、機密メモリ316は、例えばハードウェアトラストアンカー310のメモリデバイス内のアドレス可能な位置など、リードアクセス及び/又はライトアクセスが制限された如何なるメモリ位置を含んでいてもよい。
【0036】
図3Aは更に、プログラムストレージ308、又はネットワークサーバ300のその他のストレージ位置が、そこに格納された1つ以上の仮想マシンイメージ318Aを含み得ることを示している。各仮想マシンイメージ318Aは、例えば
図1−2の仮想マシン118、216、218のうちの対応する1つなど、対応する仮想マシンをインスタンス化するように構成され得る。具体的には、ネットワークサーバ300がブートアップされた後、仮想マシンイメージ318Aのうちの1つ以上が、メモリ304にロードされてプロセッサ302によって実行されることで、ネットワークサーバ300上で走る対応する仮想マシン(図示せず)がインスタンス化され得る。
【0037】
上述のように、各仮想マシンイメージ318Aは、例えばブートローダとしてインスタンス化するように構成されたブートローダバイナリなどの不変部分を含み得る。各仮想マシンイメージは更に、例えばオペレーティングシステムバイナリ及び1つ以上のアプリケーションバイナリなどの1つ以上のその他の部分を含み得る。ここで、オペレーティングシステムバイナリ、及び1つ以上のアプリケーションバイナリは、それぞれ、仮想マシンイメージ318Aからインスタンス化される対応する仮想マシンにて走り得るオペレーティングシステム、及び1つ以上のアプリケーションに対応する。
【0038】
図3Bは、ここに記載される少なくとも一部の実施形態に従って構成された、
図3Aのネットワークサーバ300上の仮想マシン318Bをブートアップするために実装され得る起動チェーン320の一例を示している。仮想マシン318Bは、例えば、
図3Aの仮想マシンイメージ318Aのうちの対応する1つからインスタンス化され得る。許可されたソフトウェアのみが仮想マシン318Bにて走っていること、及び/又は許可されたソフトウェア内に不正な手法で改竄されたものがないことを、対応するユーザが確認することを可能にするため、起動チェーン320が進められるときにトラストチェーン322も構築され得る。
【0039】
図3Aと3Bとを共に参照するに、起動チェーン320は、ネットワークサーバ300の電源投入で開始することができ、その時、ハードウェアトラストアンカー310、より具体的にはトラストプロセッサ314が、スタートアップストレージ306に格納され且つブートローダ324としてインスタンス化するように構成されたブートローダバイナリ(図示せず)にアクセスし得る。ブートローダ324は、トラストプロセッサ314及び/又はプロセッサ302によって実行され得る。
【0040】
電源投入時、ハードウェアトラストアンカー310は更に、326で指し示されるように、トラストチェーン322を構築することの一部として、ブートローダ324に対応するブートローダバイナリを計測してブートローダメジャーメントを生成し得る。ブートローダメジャーメントは、機密メモリ316に格納され得る。
【0041】
これら及びその他の実施形態において、計測は、計測対象に対して、確率的に無二の識別子を生成することによって実行され得る。例えば、この例ではブートローダ324に対応するブートローダバイナリである計測対象に対して、ハッシュ関数が適用されて、該対象のメジャーメント(計測値)としてハッシュ値が生成され得る。より一般的には、対象のメジャーメントは、以下に限られないが、例えばハッシュ値、チェックサム、フィンガープリント、又はチェックディジットなどの、確率的に無二の如何なる好適な識別子を含んでいてもよい。
【0042】
一般に、ブートローダ324は、一部の実施形態においてハイパーバイザとして実装され得るオペレーティングシステム328をインスタンス化するように構成されたオペレーティングシステムバイナリ(図示せず)の実行をトリガーするように構成され得る。例えば、ブートローダ324の実行により、オペレーティングシステム328をインスタンス化するプロセッサ302による実行のために、オペレーティングシステムバイナリがスタートアップストレージ306からメモリ304に読み出され得る。
【0043】
ブートローダ324は更に、330で指し示されるように、トラストチェーン322を構築することの一部として、オペレーティングシステム328に対応するオペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成し得る。オペレーティングシステムメジャーメントは、機密メモリ316に格納され得る。
【0044】
起動チェーン320は、オペレーティングシステム328が仮想マシン318Bに対応する仮想マシンイメージ318Aのブートローダバイナリを呼び出して、対応するブートローダ332をインスタンス化することへと続き得る。ブートローダ332は、仮想マシンイメージ318Aのオペレーティングシステムバイナリを呼び出して、対応するオペレーティングシステム334をインスタンス化し得る。オペレーティングシステム334は、仮想マシンイメージ318Aの1つ以上のアプリケーションバイナリを呼び出して、1つ以上の対応するアプリケーション336をインスタンス化し得る。
【0045】
トラストチェーン322の構築は、起動チェーン320と同様に続き得る。具体的には、仮想マシン318Bのインスタンス化の間及び/又は前に、338で指し示されるように、オペレーティングシステム328が、ブートローダ332に対応するブートローダバイナリを計測して、機密メモリ316に格納されるトラストアンカーメジャーメントを生成し得る。ブートローダ332が、340で指し示されるように、オペレーティングシステム334に対応するオペレーティングシステムバイナリを計測して、機密メモリ316に格納される仮想マシン318Bに関するオペレーティングシステムメジャーメントを生成し得る。オペレーティングシステム334が、342で指し示されるように、1つ以上のアプリケーション336に対応する1つ以上のアプリケーションバイナリを計測して、機密メモリ316に格納される1つ以上のアプリケーションメジャーメントを生成し得る。
【0046】
上述のように、トラストチェーン322は、例えば
図1のユーザ106のうちの1つなどの、対応するユーザが、許可されたソフトウェアのみが仮想マシン318Bにて走っていること、及び/又は許可されたソフトウェア内に不正な手法で改竄されたものがないことを確認することを可能にし得る。具体的には、例えば仮想マシン318Bに関連付けられたユーザ106のうちの1つといった、ユーザ106のうちの対応する1つによる要求に応答して、ハードウェアトラストアンカー310が、一組のメジャーメントに署名して該ユーザ106に送信するように構成され得る。このメジャーメントセットは、
図3A−3Bに関して説明したブートローダメジャーメント、第1のオペレーティングシステムメジャーメント、トラストアンカーメジャーメント、第2のオペレーティングシステムメジャーメント、及び1つ以上のアプリケーションメジャーメントのうちの1つ以上を含み得る。
【0047】
ユーザ106は、メジャーメントセットを該ユーザ106に既知の予期されるメジャーメントと比較することによって、対応する仮想マシン318B内で権限のないアプリケーションが実行されているか、又は対応する仮想マシンイメージ318Aの対応するブートローダバイナリ、オペレーティングシステムバイナリ又は1つ以上のアプリケーションバイナリの何れかで権限のない改竄が行われたか、を決定するように構成され得る。一部の実施形態において、ユーザ106は更に、メジャーメントセットの署名に基づいて、ハードウェアトラストアンカー310が正当なものであるかを確認し得る。ユーザ106は、上述のように、予期されるメジャーメントを事前に受信してもよい。
【0048】
図4は、ここに記載される少なくとも一部の実施形態に従って構成された、ハードウェアシステム上の仮想マシン内にトラストチェーンを構築する方法400の一例のフローチャートである。一部の実施形態において、方法400は、全体的あるいは部分的に、例えば
図1のクラウドコンピューティングシステム102などのクラウドコンピューティングシステムによって実行され得る。より具体的には、方法400は、全体的あるいは部分的に、例えば
図2のハードウェアシステム200又は
図3のネットワークサーバ300などのハードウェアシステムによって実行され、且つ/或いは対応するハードウェアシステム上で走るソフトウェアによって実行され得る。
【0049】
方法400はブロック402にて開始し、そこで、仮想マシンとしてインスタンス化するように構成された仮想マシンイメージの不変部分が計測されて、トラストアンカーメジャーメントが生成される。上述のように、仮想マシンイメージは、ブートローダバイナリと、オペレーティングシステムバイナリと、1つ以上のアプリケーションバイナリとを含むことができ、仮想マシンイメージの不変部分は、ブートローダバイナリを含み得る。それに代えて、あるいは加えて、トラストアンカーメジャーメントは、以下に限られないが例えばハッシュ値、チェックサム、フィンガープリント又はチェックディジットなどの、不変部分の確率的に無二の識別子を含み得る。
【0050】
方法400はブロック404に続き、そこで、トラストアンカーメジャーメントが機密メモリに格納される。機密メモリは、例えばTPMチップなどのハードウェアトラストアンカー内の1つ以上のレジスタを含むことができ、例えば、
図3Aの機密メモリ316に相当し得る。
【0051】
当業者によって認識されるように、ここに開示されるこの及びその他のプロセス及び方法において、それらプロセス及び方法で実行される機能は異なる順序で実行されてもよい。また、概説されるステップ及び処理は、単に例として提示されるものであり、それらステップ及び処理の一部は、開示の実施形態の本質を損ねることなく、省略され、より少ない数のステップ及び処理へと結合され、あるいは更なるステップ及び処理に展開されてもよい。
【0052】
例えば、
図4には示されていないが、方法400は更に、仮想マシンのブートローダによって、仮想マシンイメージのオペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成することを含み得る。オペレーティングシステムメジャーメントは、機密メモリに格納され得る。方法400は更に、オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムによって、仮想マシンイメージの1つ以上のアプリケーションバイナリを計測して1つ以上のアプリケーションメジャーメントを生成することを含み得る。該1つ以上のアプリケーションメジャーメントは、機密メモリに格納され得る。
【0053】
方法400は更に、仮想マシンイメージから仮想マシンをインスタンス化することを含み得る。トラストアンカーメジャーメントと、オペレーティングシステムメジャーメントと、1つ以上のアプリケーションメジャーメントとを含むメジャーメントセットの要求が受信され得る。メジャーメントセットは署名を付され得る。例えば、メジャーメントセットは、例えば
図2−3Aのハードウェアトラストアンカー210、310などのハードウェアトラストアンカーによって署名され得る。署名されたメジャーメントセットは、例えば
図1のユーザ106のうちの1つなど、メジャーメントセットを要求したエンティティに送信され得る。
【0054】
一部の実施形態において、エンティティは、署名を検証するように構成され得る。署名の検証は、署名を予期される署名と比較することによって行われ得る。エンティティはまた、署名されたメジャーメントセットを予期されるメジャーメントと比較するように構成され得る。予期される署名及び/又は予期されるメジャーメントは、そのエンティティがアクセス可能なストレージに格納されているとし得る。エンティティは、署名されたメジャーメントを予期されるメジャーメントと比較して、何らかの不正なアプリケーションが仮想マシン上で実行されているかどうか、または、何らかの不正な改竄がブートローダバイナリ、オペレーティングシステムバイナリ若しくは1つ以上のアプリケーションバイナリの何れかで行われたかどうかを決定し得る。これらのメジャーメントにおける相違は、1つ以上の不正なアプリケーションが仮想マシン上で実行されていること、及び/又は、ブートローダバイナリ、オペレーティングシステムバイナリ及び/又はアプリケーションバイナリが不正な手法で改変あるいは変更されていること、又はこれらに類することを指し示す。従って、エンティティは、該エンティティに関連付けられた仮想マシンにおける不正なソフトウェア及び/又は改竄の存在を特定して、例えば、不正なアプリケーションを削除したり、不正な改竄を有するブートローダバイナリ、オペレーティングシステムバイナリ又はアプリケーションバイナリを、対応する未改竄バージョンに修復したりすることなどによって、然るべく行動し得る。
【0055】
代替的あるいは付加的に、方法400は更に、仮想マシンがリブートする都度、仮想マシン内のトラストチェーンをリフレッシュすることを含んでいてもよい。仮想マシンがリブートする度に仮想マシン内のトラストチェーンをリフレッシュすることは、仮想マシンのリブートに応答して、ブートローダバイナリを含む不変部分を再計測してトラストアンカーメジャーメントを再生成することを含み得る。再生成されたトラストアンカーメジャーメントは、機密メモリに格納され得る。ブートローダが、オペレーティングシステムバイナリを再計測してオペレーティングシステムメジャーメントを再生成し得る。再生成されたオペレーティングシステムメジャーメントは、機密メモリに格納され得る。オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムが、1つ以上のアプリケーションバイナリを再計測して1つ以上のアプリケーションメジャーメントを再生成し得る。再生成された1つ以上のアプリケーションメジャーメントは、機密メモリに格納され得る。
【0056】
一部の実施形態において、方法400は更に、仮想マシンイメージ内でのブートローダバイナリの位置及びサイズを特定することを含み得る。ブートローダバイナリの位置及びサイズを特定することは、ブートローダバイナリのサイズ及び仮想マシンイメージの位置を返すように構成され得るブートローダ情報データベース(boot loader information database;BLIDB)にクエリーを行うことを含み得る。これら及びその他の実施形態において、ブートローダバイナリは、仮想マシンイメージの位置として特定されるハードウェアシステムのハードディスクの位置のうちの最初の512バイトに置かれ得る。代替的に、ブートローダバイナリは、ハードディスクのパーティションテーブルを読むことによって決定されるハードディスクのパーティション内に置かれてもよい。
【0057】
図5Aは、ここに記載される少なくとも一部の実施形態に従って構成された、仮想マシンをインスタンス化することに関する様々なコンポーネントのブロック図である。具体的には、
図5Aは、BLIDB502と、ハイパーバイザ504と、機密メモリ506と、ブートローダバイナリ510を含む仮想マシンイメージ508とを示している。
【0058】
BLIDB502は、
図2のストレージ212及び/又は
図3Aのプログラムストレージ308などに格納され得る。
【0059】
ハイパーバイザ504は、
図2のハードウェアシステム200及び/又は
図3Aのネットワークサーバ300などの上でインスタンス化され得る。ハイパーバイザ504は、例えば、
図3Bのオペレーティングシステム328に相当し得る。
【0060】
機密メモリ506は、例えば、
図3Aの機密メモリ316に相当し得る。
【0061】
仮想マシンイメージ508、及びブートローダバイナリ510は、それぞれ、例えば、
図3Aの仮想マシンイメージ318A、及び
図3Bのブートローダ332がそこからインスタンス化されるブートローダバイナリに相当し得る。
【0062】
図5Bは、ここに記載される少なくとも一部の実施形態に従って構成された、仮想マシンをインスタンス化する方法550の一例のフローチャートである。方法550は、全体的あるいは部分的に、例えば
図5Aのハイパーバイザ504によって実行され得る。
図5Aとの関係で
図5Bの方法550を説明することとする。
【0063】
方法550はブロック552で開始し、そこで、ハイパーバイザ504は、ブートローダバイナリ510のサイズ及び仮想マシンイメージ508の位置をBLIDB502にクエリーする。BLIDB502は、ブートローダバイナリ510のサイズ及び仮想マシンイメージ508の位置を返し得る。一部の実施形態において、上述のように、ブートローダバイナリ510は、仮想マシンイメージの位置として特定されるハードディスクの位置のうちの最初の512バイトに置かれ、あるいは、ブートローダは、ハードディスクのパーティションテーブルを読むことによって決定されるハードディスクのパーティション内に置かれ得る。
【0064】
方法550はブロック554に続き、そこで、ハイパーバイザ504は、仮想マシンイメージ内のブートローダバイナリを計測する。例えば、ハイパーバイザ504は、ブートローダバイナリ510のハッシュ値を生成することによって、あるいはブートローダバイナリ510のその他の確率的に無二の識別子を生成することによって、ブートローダバイナリ510を計測し得る。
【0065】
方法550は、メジャーメントが機密メモリ506に格納されるブロック556、及び対応する仮想マシンが仮想マシンイメージ508からインスタンス化されるブロック558に続き得る。
【0066】
従って、ここに記載される一部の実施形態は、対応する仮想マシンイメージの例えばブートローダバイナリなどの不変部分のみを最初に計測することによって仮想マシン内にトラストチェーンを構築することにより、性能を向上させ得る。ブートローダバイナリは仮想マシンイメージのうちの比較的小さい部分のみを表し、ブートローダバイナリは、仮想マシンイメージ全体を計測することより少ない処理リソース及び/又は短い時間で計測されることができる。
【0067】
また、一部のシステムは仮想マシンイメージ全体を計測することによってトラストチェーンを構築し、仮想マシンイメージの一部が変更されたとき、例えばオペレーティングシステムがアップデートされたとき、そのトラストチェーンは再構築されることができない。特に、そのようなアップデートは、予期される値ともはや合致しない仮想マシンイメージのメジャーメントを生じさせ得る。
【0068】
対照的に、ここに記載される一部の実施形態は、ブートローダバイナリのみを計測することによって仮想マシン内にトラストチェーンを構築し、その結果、オペレーティングシステムのアップデート又はこれに類するものを考慮しても、トラストチェーンは依然として仮想マシン内に構築され得る。これら及びその他の実施形態において、オペレーティングシステムのアップデートがダウンロードされるとき、仮想マシンに関連付けられた対応するユーザ又はエンティティに、オペレーティングシステムの新たな予期されるメジャーメントが提供され、その結果、トラストチェーンは、アップデートされたオペレーティングシステム上で走る1つ以上のアプリケーションまで構築されることができる。
【0069】
ここに記載される実施形態は、より詳細に後述するような様々なコンピュータハードウェア又はソフトウェアモジュールを含んだ専用あるいは汎用のコンピュータの使用を含み得る。
【0070】
ここに記載される実施形態は、コンピュータ実行可能命令又はデータ構造を担持あるいは格納したコンピュータ読み取り可能媒体を用いて実現されてもよい。そのようなコンピュータ読み取り可能媒体は、汎用あるいは専用のコンピュータによってアクセスされることが可能な如何なる入手可能な媒体であってもよい。非限定的な例として、そのようなコンピュータ読み取り可能媒体は、RAM、ROM、EEPROM、CD−ROM若しくはその他の光ディスクストレージ、磁気ディスクストレージ若しくはその他の磁気記憶装置、又は、所望のプログラムコード手段をコンピュータ実行可能命令又はデータ構造の形態で担持あるいは格納するように使用され且つ汎用あるいは専用のコンピュータによってアクセスされることが可能なその他の媒体を有し得る。情報がネットワーク又はその他の通信接続(有線、無線、又は有線と無線との組合せ)上でコンピュータに伝送あるいは提供されるとき、コンピュータは適宜、そのような接続をコンピュータ読み取り可能媒体として見る。故に、そのような接続も適宜、コンピュータ読み取り可能媒体と呼ばれ得る。以上のものの組合せもコンピュータ読み取り可能媒体の範囲に含まれる。
【0071】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ又は専用処理装置に特定の機能又は機能群を実行させる命令及びデータを有する。ここでは構成上の機構及び/又は方法のステップに特有の言葉にて説明してきたが、理解されるように、請求項に規定される事項は必ずしも、ここで説明された特有の機構又はステップに限定されるものではない。むしろ、ここで説明された特有の機構及びステップは、請求項に規定される事項を実現する形態の例として開示されたものである。
【0072】
ここでは、用語“モジュール”又は“コンポーネント”は、コンピュータシステム上で実行されるソフトウェアオブジェクト又はルーチンを意味し得る。ここに記載された様々なコンポーネント、モジュール、エンジン及びサービスは、コンピュータシステム上で(例えば、別々のスレッドとして)実行される複数のオブジェクト又はプロセスとして実装され得る。ここに記載されるシステム及び方法は好ましくはソフトウェアにて実装されるが、ハードウェア又はソフトウェアとハードウェアとの組合せでの実装も可能であり、且つ意図されるものである。本明細書において、“コンピューティングエンティティ”は、上述のような何らかのコンピューティングシステム、又はコンピューティングシステム上で走る何らかのモジュール又はモジュール群の組合せとし得る。
【0073】
ここに記載された全ての例及び条件の説明は、本発明及び技術を進歩させるために本発明者が提供する概念を読者が理解することを支援するための教育的目的でのものであり、そのような具体的に記載された例及び条件への限定ではないとして解釈されるべきである。また、本明細書における例の編成は、発明の優位性及び劣位性を示すものでもない。本発明の実施形態を詳細に説明してきたが、理解されるように、これらの実施形態には、本発明の精神及び範囲を逸脱することなく、様々な変形、代用及び改変が為され得る。
【0074】
以上の説明に関し、更に以下の付記を開示する。
【0075】
(付記1) ハードウェアシステム上の仮想マシン内にトラストチェーンを構築する方法であって、
前記仮想マシンとしてインスタンス化するように構成された仮想マシンイメージの不変部分を計測して、トラストアンカーメジャーメントを生成するステップと、
前記トラストアンカーメジャーメントを機密メモリに格納するステップと
を有する方法。
【0076】
(付記2) 前記トラストアンカーメジャーメントは、前記不変部分の確率的に無二の識別子を有する、付記1に記載の方法。
【0077】
(付記3) 前記確率的に無二の識別子はハッシュ値を有する、付記2に記載の方法。
【0078】
(付記4) 前記仮想マシンイメージは、ブートローダバイナリ、オペレーティングシステムバイナリ、及び1つ以上のアプリケーションバイナリを有し、且つ
前記不変部分は前記ブートローダバイナリを有する、
付記1に記載の方法。
【0079】
(付記5) 前記ブートローダバイナリの前記仮想マシンイメージ内での位置及びサイズを特定するステップ、を更に有する付記4に記載の方法。
【0080】
(付記6) 前記ブートローダバイナリの前記仮想マシンイメージ内での位置及びサイズを特定するステップは、前記ブートローダバイナリのサイズと前記仮想マシンイメージの位置とを返すブートローダ情報データベースにクエリーすることを有する、付記5に記載の方法。
【0081】
(付記7) 前記ブートローダバイナリは、前記仮想マシンイメージの前記位置として特定された前記ハードウェアシステムのハードディスクの位置のうちの最初の512バイトに置かれ、あるいは
前記ブートローダバイナリは、前記ハードディスクのパーティションテーブルを読むことによって決定される前記ハードディスクのパーティション内に置かれる、
付記6に記載の方法。
【0082】
(付記8) 前記ブートローダバイナリからインスタンス化されたブートローダにより、前記オペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成するステップと、
前記オペレーティングシステムメジャーメントを前記機密メモリに格納するステップと、
前記オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムにより、前記1つ以上のアプリケーションバイナリを計測して1つ以上のアプリケーションメジャーメントを生成するステップと、
前記1つ以上のアプリケーションメジャーメントを前記機密メモリに格納するステップと、
を更に有する付記4に記載の方法。
【0083】
(付記9) 前記仮想マシンイメージから仮想マシンをインスタンス化するステップと、
前記トラストアンカーメジャーメントと、前記オペレーティングシステムメジャーメントと、前記1つ以上のアプリケーションメジャーメントとを含むメジャーメントセットの要求を受信するステップと、
前記メジャーメントセットに署名を付すステップと、
前記メジャーメントセットを要求したエンティティに、署名されたメジャーメントセットを送信するステップと、
を更に有し、
該エンティティは、前記署名を検証し、且つ前記署名されたメジャーメントセットを予期されるメジャーメントと比較して、前記仮想マシン上で不正なアプリケーションが実行されているか、又は前記ブートローダバイナリ、前記オペレーティングシステムバイナリ、若しくは前記1つ以上のアプリケーションバイナリの何れかに不正な改竄が行われたか、を決定するように構成される、
付記8に記載の方法。
【0084】
(付記10) 前記仮想マシンがリブートする度に前記仮想マシン内の前記トラストチェーンをリフレッシュするステップ、を更に有する付記8に記載の方法。
【0085】
(付記11) 前記仮想マシンがリブートする度に前記仮想マシン内の前記トラストチェーンをリフレッシュするステップは、前記仮想マシンがリブートすることに応答して、
前記ブートローダバイナリを有する前記不変部分を再計測して、トラストアンカーメジャーメントを再生成し、
再生成されたトラストアンカーメジャーメントを前記機密メモリに格納し、
前記ブートローダにより、前記オペレーティングシステムバイナリを再計測して、オペレーティングシステムメジャーメントを再生成し、
再生成されたオペレーティングシステムメジャーメントを前記機密メモリに格納し、
前記オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムにより、前記1つ以上のアプリケーションバイナリを再計測して1つ以上のアプリケーションメジャーメントを再生成し、且つ
再生成された1つ以上のアプリケーションメジャーメントを前記機密メモリに格納する、
ことを有する、付記10に記載の方法。
【0086】
(付記12) 1つ以上のハードウェアリソースと、
前記1つ以上のハードウェアリソース上で仮想マシンとしてインスタンス化するように構成された仮想マシンイメージであり、不変部分と1つ以上のその他の部分とを含む仮想マシンイメージと、
前記1つ以上のハードウェアリソース上にインストールされたハイパーバイザであり、
前記仮想マシンイメージの前記不変部分を計測してトラストアンカーメジャーメントを生成し、且つ
前記トラストアンカーメジャーメントを機密メモリに格納する
ことによって前記仮想マシン内にトラストチェーンを構築するように構成されたハイパーバイザと
を有するハードウェアシステム。
【0087】
(付記13) 前記ハイパーバイザは、当該ハードウェアシステムのオペレーティングシステムバイナリからインスタンス化され、当該ハードウェアシステムは更にハードウェアトラストアンカーとブートローダバイナリとを有する、付記12に記載のハードウェアシステム。
【0088】
(付記14) 前記ハードウェアトラストアンカーは、トラステッド・プラットフォーム・モジュール(TPM)チップを有し、前記機密メモリは、前記TPMチップ内の1つ以上のレジスタを有する、付記13に記載のハードウェアシステム。
【0089】
(付記15) 前記仮想マシンイメージの前記不変部分はブートローダバイナリを有し、前記仮想マシンイメージの前記1つ以上のその他の部分は、オペレーティングシステムをインスタンス化するように構成されたオペレーティングシステムバイナリと、前記仮想マシンの前記オペレーティングシステム上で走るアプリケーションをインスタンス化するように構成されたアプリケーションバイナリとを有し、
当該ハードウェアシステムは更に、前記アプリケーションのトラストチェーンを、
前記ハードウェアトラストアンカーが、当該ハードウェアシステムの前記ブートローダバイナリを計測してブートローダメジャーメントを生成し、且つ前記ハードウェアトラストアンカーが、該ブートローダメジャーメントを前記機密メモリに格納し、
当該ハードウェアシステムの前記ブートローダバイナリからインスタンス化されたブートローダが、当該ハードウェアシステムの前記オペレーティングシステムバイナリを計測して第1のオペレーティングシステムメジャーメントを生成し、且つ当該ハードウェアシステムの前記ブートローダが、前記第1のオペレーティングシステムメジャーメントを前記機密メモリに格納し、
前記ハイパーバイザが前記仮想マシン内に前記トラストチェーンを構築し、
前記仮想マシンの前記ブートローダバイナリからインスタンス化されたブートローダが、前記仮想マシンイメージの前記オペレーティングシステムバイナリを測定して第2のオペレーティングシステムメジャーメントを生成し、且つ前記仮想マシンの前記ブートローダが、前記第2のオペレーティングシステムメジャーメントを前記機密メモリに格納し、且つ
前記仮想マシンの前記オペレーティングシステムが、前記アプリケーションバイナリを計測してアプリケーションメジャーメントを生成し、前記仮想マシンの前記オペレーティングシステムが、前記アプリケーションメジャーメントを前記機密メモリに格納する、
ことによって構築するように構成されている、
付記13に記載のハードウェアシステム。
【0090】
(付記16) 前記ハイパーバイザは、前記仮想マシンイメージの前記不変部分を計測し、前記不変部分のハッシュ値を生成することによって前記トラストアンカーメジャーメントを生成するように構成される、付記12に記載のハードウェアシステム。
【0091】
(付記17) 前記不変部分はブートローダバイナリを有し、前記ハイパーバイザは更に、ブートローダ情報データベースにクエリーして前記ブートローダバイナリの前記仮想マシンイメージ内での位置及びサイズを特定することによって、前記仮想マシン内にトラストチェーンを構築するように構成される、付記12に記載のハードウェアシステム。
【0092】
(付記18) 1つ以上のハードウェアシステムを含む計算リソースプールであり、通信ネットワーク上でユーザにアクセス可能な計算リソースプールと、
複数の仮想マシンイメージであり、各仮想マシンイメージが前記計算リソースプール上の仮想マシンとしてインスタンス化するように構成され、且つ各仮想マシンイメージが不変部分と1つ以上のその他の部分とを含む、複数の仮想マシンイメージと、
前記計算リソースプール上にインストールされた1つ以上のハイパーバイザであり、各ハイパーバイザが、各仮想マシンに対して、
対応する仮想マシンイメージの前記不変部分を計測してトラストアンカーメジャーメントを生成し、且つ
該トラストアンカーメジャーメントを機密メモリに格納する
ことによって、複数の仮想マシンのうちの1つ以上内にトラストチェーンを構築するように構成された、1つ以上のハイパーバイザと、
を有するクラウドコンピューティングシステム。
【0093】
(付記19) 各仮想マシンイメージの前記不変部分はブートローダバイナリを有し、各仮想マシンイメージの前記1つ以上のその他の部分は、オペレーティングシステムをインスタンス化するように構成されたオペレーティングシステムバイナリと、該オペレーティングシステム上で走るアプリケーションをインスタンス化するように構成されたアプリケーションバイナリとを含み、各仮想マシンに関し、
前記ブートローダバイナリからインスタンス化されるブートローダが、前記オペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成し、且つ該オペレーティングシステムメジャーメントを前記機密メモリに格納するように構成され、
前記オペレーティングシステムが、前記アプリケーションバイナリを計測してアプリケーションメジャーメントを生成し、且つ該アプリケーションメジャーメントを前記機密メモリに格納するように構成される、
付記18に記載のクラウドコンピューティングシステム。
【0094】
(付記20) 当該クラウドコンピューティングシステムは、特定のソフトウェア攻撃の検出を可能にするよう、各仮想マシンのリモートアテステーションを対応するユーザに、
前記対応するユーザによる要求に応答して、対応するトラストアンカーメジャーメント、オペレーティングシステムメジャーメント及びアプリケーションメジャーメントを含むメジャーメントセットを、前記対応するユーザに提供する
ことによって提供するように構成され、
前記ユーザは、前記メジャーメントセットを前記ユーザに知られた予期されるメジャーメントと比較することによって、対応する仮想マシン上で不正なアプリケーションが実行されているか、又は対応するブートローダバイナリ、オペレーティングシステムバイナリ若しくはアプリケーションバイナリの何れかに不正な改竄が行われたか、を決定するように構成される、
付記19に記載のクラウドコンピューティングシステム。