(57)【特許請求の範囲】
【請求項１】
ハードウェアシステム上の仮想マシン内にトラストチェーンを構築する方法であって、
前記仮想マシンとしてインスタンス化するように構成された仮想マシンイメージの不変部分を計測して、トラストアンカーメジャーメントを生成するステップと、
前記トラストアンカーメジャーメントを機密メモリに格納するステップと
を有し、
前記仮想マシンイメージは、ブートローダバイナリ、オペレーティングシステムバイナリ、及び１つ以上のアプリケーションバイナリを有し、
前記不変部分は前記ブートローダバイナリを有し、
当該方法は更に、前記ブートローダバイナリの前記仮想マシンイメージ内での位置及びサイズを特定するステップを有し、
前記ブートローダバイナリの前記仮想マシンイメージ内での位置及びサイズを特定するステップは、前記ブートローダバイナリのサイズと前記仮想マシンイメージの位置とを返すブートローダ情報データベースにクエリーすることを有する、
方法。
【請求項２】
前記トラストアンカーメジャーメントは、前記不変部分の確率的に無二の識別子を有する、請求項１に記載の方法。
【請求項３】
前記確率的に無二の識別子はハッシュ値を有する、請求項２に記載の方法。
【請求項４】
前記ブートローダバイナリは、前記仮想マシンイメージの前記位置として特定された前記ハードウェアシステムのハードディスクの位置のうちの最初の５１２バイトに置かれ、あるいは
前記ブートローダバイナリは、前記ハードディスクのパーティションテーブルを読むことによって決定される前記ハードディスクのパーティション内に置かれる、
請求項１乃至３の何れか一項に記載の方法。
【請求項５】
前記ブートローダバイナリからインスタンス化されたブートローダにより、前記オペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成するステップと、
前記オペレーティングシステムメジャーメントを前記機密メモリに格納するステップと、
前記オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムにより、前記１つ以上のアプリケーションバイナリを計測して１つ以上のアプリケーションメジャーメントを生成するステップと、
前記１つ以上のアプリケーションメジャーメントを前記機密メモリに格納するステップと、
を更に有する請求項１乃至３の何れか一項に記載の方法。
【請求項６】
前記仮想マシンイメージから仮想マシンをインスタンス化するステップと、
前記トラストアンカーメジャーメントと、前記オペレーティングシステムメジャーメントと、前記１つ以上のアプリケーションメジャーメントとを含むメジャーメントセットの要求を受信するステップと、
前記メジャーメントセットに署名を付すステップと、
前記メジャーメントセットを要求したエンティティに、署名されたメジャーメントセットを送信するステップと、
を更に有し、
該エンティティは、前記署名を検証し、且つ前記署名されたメジャーメントセットを予期されるメジャーメントと比較して、前記仮想マシン上で不正なアプリケーションが実行されているか、又は前記ブートローダバイナリ、前記オペレーティングシステムバイナリ、若しくは前記１つ以上のアプリケーションバイナリの何れかに不正な改竄が行われたか、を決定するように構成される、
請求項５に記載の方法。
【請求項７】
前記仮想マシンがリブートする度に前記仮想マシン内の前記トラストチェーンをリフレッシュするステップ、を更に有する請求項５に記載の方法。
【請求項８】
前記仮想マシンがリブートする度に前記仮想マシン内の前記トラストチェーンをリフレッシュするステップは、前記仮想マシンがリブートすることに応答して、
前記ブートローダバイナリを有する前記不変部分を再計測して、トラストアンカーメジャーメントを再生成し、
再生成されたトラストアンカーメジャーメントを前記機密メモリに格納し、
前記ブートローダにより、前記オペレーティングシステムバイナリを再計測して、オペレーティングシステムメジャーメントを再生成し、
再生成されたオペレーティングシステムメジャーメントを前記機密メモリに格納し、
前記オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムにより、前記１つ以上のアプリケーションバイナリを再計測して１つ以上のアプリケーションメジャーメントを再生成し、且つ
再生成された１つ以上のアプリケーションメジャーメントを前記機密メモリに格納する、
ことを有する、請求項７に記載の方法。
【請求項９】
１つ以上のハードウェアリソースと、
前記１つ以上のハードウェアリソース上で仮想マシンとしてインスタンス化するように構成された仮想マシンイメージであり、不変部分と１つ以上のその他の部分とを含む仮想マシンイメージと、
前記１つ以上のハードウェアリソース上にインストールされたハイパーバイザであり、
前記仮想マシンイメージの前記不変部分を計測してトラストアンカーメジャーメントを生成し、且つ
前記トラストアンカーメジャーメントを機密メモリに格納する
ことによって前記仮想マシン内にトラストチェーンを構築するように構成されたハイパーバイザと
を有し、
前記仮想マシンイメージの前記不変部分はブートローダバイナリを有し、前記ハイパーバイザは更に、ブートローダ情報データベースにクエリーして前記ブートローダバイナリの前記仮想マシンイメージ内での位置及びサイズを特定することによって、前記仮想マシン内にトラストチェーンを構築するように構成される、
ハードウェアシステム。
【請求項１０】
前記ハイパーバイザは、当該ハードウェアシステムのオペレーティングシステムバイナリからインスタンス化され、当該ハードウェアシステムは更にハードウェアトラストアンカーと前記ブートローダバイナリとを有する、請求項９に記載のハードウェアシステム。
【請求項１１】
前記ハードウェアトラストアンカーは、トラステッド・プラットフォーム・モジュール（ＴＰＭ）チップを有し、前記機密メモリは、前記ＴＰＭチップ内の１つ以上のレジスタを有する、請求項１０に記載のハードウェアシステム。
【請求項１２】
前記仮想マシンイメージの前記１つ以上のその他の部分は、オペレーティングシステムをインスタンス化するように構成されたオペレーティングシステムバイナリと、前記仮想マシンの前記オペレーティングシステム上で走るアプリケーションをインスタンス化するように構成されたアプリケーションバイナリとを有し、
当該ハードウェアシステムは更に、前記アプリケーションのトラストチェーンを、
前記ハードウェアトラストアンカーが、当該ハードウェアシステムの前記ブートローダバイナリを計測してブートローダメジャーメントを生成し、且つ前記ハードウェアトラストアンカーが、該ブートローダメジャーメントを前記機密メモリに格納し、
当該ハードウェアシステムの前記ブートローダバイナリからインスタンス化されたブートローダが、当該ハードウェアシステムの前記オペレーティングシステムバイナリを計測して第１のオペレーティングシステムメジャーメントを生成し、且つ当該ハードウェアシステムの前記ブートローダが、前記第１のオペレーティングシステムメジャーメントを前記機密メモリに格納し、
前記ハイパーバイザが前記仮想マシン内に前記トラストチェーンを構築し、
前記仮想マシンの前記ブートローダバイナリからインスタンス化されたブートローダが、前記仮想マシンイメージの前記オペレーティングシステムバイナリを測定して第２のオペレーティングシステムメジャーメントを生成し、且つ前記仮想マシンの前記ブートローダが、前記第２のオペレーティングシステムメジャーメントを前記機密メモリに格納し、且つ
前記仮想マシンの前記オペレーティングシステムが、前記アプリケーションバイナリを計測してアプリケーションメジャーメントを生成し、前記仮想マシンの前記オペレーティングシステムが、前記アプリケーションメジャーメントを前記機密メモリに格納する、
ことによって構築するように構成されている、
請求項１０に記載のハードウェアシステム。
【請求項１３】
１つ以上のハードウェアシステムを含む計算リソースプールであり、通信ネットワーク上でユーザにアクセス可能な計算リソースプールと、
複数の仮想マシンイメージであり、各仮想マシンイメージが前記計算リソースプール上の仮想マシンとしてインスタンス化するように構成され、且つ各仮想マシンイメージが不変部分と１つ以上のその他の部分とを含む、複数の仮想マシンイメージと、
前記計算リソースプール上にインストールされた１つ以上のハイパーバイザであり、各ハイパーバイザが、各仮想マシンに対して、
対応する仮想マシンイメージの前記不変部分を計測してトラストアンカーメジャーメントを生成し、且つ
該トラストアンカーメジャーメントを機密メモリに格納する
ことによって、複数の仮想マシンのうちの１つ以上内にトラストチェーンを構築するように構成された、１つ以上のハイパーバイザと、
を有し、
各仮想マシンイメージの前記不変部分はブートローダバイナリを有し、前記ハイパーバイザは更に、ブートローダ情報データベースにクエリーして前記ブートローダバイナリの前記仮想マシンイメージ内での位置及びサイズを特定することによって、前記仮想マシン内にトラストチェーンを構築するように構成される、
クラウドコンピューティングシステム。
【請求項１４】
各仮想マシンイメージの前記１つ以上のその他の部分は、オペレーティングシステムをインスタンス化するように構成されたオペレーティングシステムバイナリと、該オペレーティングシステム上で走るアプリケーションをインスタンス化するように構成されたアプリケーションバイナリとを含み、各仮想マシンに関し、
前記ブートローダバイナリからインスタンス化されるブートローダが、前記オペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成し、且つ該オペレーティングシステムメジャーメントを前記機密メモリに格納するように構成され、
前記オペレーティングシステムが、前記アプリケーションバイナリを計測してアプリケーションメジャーメントを生成し、且つ該アプリケーションメジャーメントを前記機密メモリに格納するように構成される、
請求項１３に記載のクラウドコンピューティングシステム。
【請求項１５】
当該クラウドコンピューティングシステムは、特定のソフトウェア攻撃の検出を可能にするよう、各仮想マシンのリモートアテステーションを対応するユーザに、
前記対応するユーザによる要求に応答して、対応するトラストアンカーメジャーメント、オペレーティングシステムメジャーメント及びアプリケーションメジャーメントを含むメジャーメントセットを、前記対応するユーザに提供する
ことによって提供するように構成され、
前記ユーザは、前記メジャーメントセットを前記ユーザに知られた予期されるメジャーメントと比較することによって、対応する仮想マシン上で不正なアプリケーションが実行されているか、又は対応するブートローダバイナリ、オペレーティングシステムバイナリ若しくはアプリケーションバイナリの何れかに不正な改竄が行われたか、を決定するように構成される、
請求項１４に記載のクラウドコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の実施形態は、仮想マシン内でトラストチェーンを構築することに関する。
【背景技術】
【０００２】
或る特定種類のソフトウェア攻撃は、アプリケーションバイナリを改竄可能なことに頼っている。リモートアテステーション（遠隔検証）は、遠隔エンティティに対して、環境内で現在どのソフトウェアすなわちアプリケーションが走っているかを特定するための手続き（プロシージャ）である。リモートアテステーション手続きは、それが開始する前に各対応アプリケーションバイナリを計測することと、メジャーメント（計測値）を遠隔エンティティに送信することとを含み得る。そのメジャーメントを予期されるメジャーメントと比較することにより、アプリケーションバイナリを改竄する攻撃を遠隔検出することが可能である。
【０００３】
リモートアテステーションのために実行される計測を信頼できるものにするため、トラストチェーン（一連のトラスト）がブートアップ中に作成され得る。トラストチェーンはトラストアンカーから開始することができ、トラストチェーン内の各要素は先ず、次の要素が開始される前に、次の要素のアプリケーションバイナリを計測し得る。斯くして、常に、信頼できるエンティティが各計測を実行することになる。
【０００４】
請求項に記載される事項は、上述のような環境でのみ問題を解決したり動作したりする実施形態に限定されるものではない。むしろ、この背景技術の説明は、本明細書に記載される実施形態が実施され得る技術領域の一例を示すために提供されているに過ぎないものである。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一実施形態の一態様によれば、ハードウェアシステム上の仮想マシン内にトラストチェーンを構築する方法が提供される。
【課題を解決するための手段】
【０００６】
ハードウェアシステム上の仮想マシン内にトラストチェーンを構築する方法は、仮想マシンとしてインスタンス化するように構成された仮想マシンイメージの不変部分を計測して、トラストアンカーメジャーメントを生成することを含み得る。この方法はまた、トラストアンカーメジャーメントを機密メモリに格納することを含み得る。
【０００７】
実施形態の目的及び利点は、請求項中に具体的に指し示される要素及び組合せによって実現・達成されることになる。
【０００８】
理解されるべきことには、以上の概略説明及び以下の詳細説明は何れも、例示的且つ説明的なものであり、請求項記載発明を限定するものではない。
【図面の簡単な説明】
【０００９】
以下の図を含む添付図面を使用して、実施形態例を更なる特異性とともに記載・説明する。以下の図に示されるものは全て、ここに記載される少なくとも一部の実施形態に従って構成されたものである。
【図１】仮想マシン内でトラストチェーンが構築され得る動作環境の一例を示す図である。
【図２】図１の動作環境内で実現され得るハードウェアシステムの一実施形態を示すブロック図である。
【図３Ａ】ネットワークサーバとして実装されるハードウェアシステムの他の一実施形態を示すブロック図である。
【図３Ｂ】図３Ａのネットワークサーバ上の仮想マシンをブートアップするために実装され得る起動チェーンの一例を示す図である。
【図４】ハードウェアシステム上の仮想マシン内にトラストチェーンを構築する一手法を示すフローチャートである。
【図５Ａ】仮想マシンをインスタンス化することに関する様々なコンポーネントを示すブロック図である。
【図５Ｂ】仮想マシンをインスタンス化する一手法を示すフローチャートである。
【発明を実施するための形態】
【００１０】
仮想マシンは、クラウドコンピューティングの要素として広く使用されている。仮想マシンは、自身が動作するハードウェアを仮想化し、異なる複数のハードウェアプラットフォームへのソフトウェアの容易な移行を可能にする。仮想マシンにおけるリモートアテステーションは、該仮想マシンをインスタンス化する前に、完全なる対応する仮想マシンイメージを計測することを伴い得る。仮想マシンイメージは大きなものとなることがあり、仮想マシンをインスタンス化する前に仮想マシンイメージ全体を計測することには有意な性能ペナルティが存在し得る。
【００１１】
代替的あるいは付加的に、オペレーティングシステム及び／又はアプリケーションのアップデート、及び／又は新たなアプリケーションの追加は、対応する遠隔エンティティによって許可されたときであっても、新たな対応する仮想マシンイメージを生じさせる。新たな仮想マシンイメージのメジャーメントは、以前のメジャーメントとは異なったものとなり、ひいては、リモートアテステーションのために新たなメジャーメントが比較されることが可能な対応する予期されるメジャーメントとは異なったものとなり得る。従って、仮想マシンイメージが権限ある手法でアップデートされたときにトラストチェーンをリフレッシュするための自明な手法は存在していない。
【００１２】
ここに記載される一部の実施形態によれば、仮想マシンイメージ全体を計測するのではなく、仮想マシンイメージの不変の部分が計測され得る。不変部分は、ブートローダバイナリを含むことができ、且つ／或いは、データのうちの比較的少量を表すデータの約５１２バイトのみを含むことができる。故に、対応する仮想マシンをインスタンス化する前に、仮想マシンイメージ全体を計測するのではなく、ブートローダバイナリのみを計測することによってトラストチェーンを構築しながら、性能が向上され得る。それに代えて、あるいは加えて、オペレーティングシステム又はアプリケーションがアップデートされたときにも、仮想マシンがリブートされる度にトラストチェーンがリフレッシュされ得る。
【００１３】
以下、図面を参照して本発明の実施形態を説明する。
【００１４】
図１は、ここに記載される少なくとも一部の実施形態に従って構成された、仮想マシン内でトラストチェーンが構築され得る動作環境１００の一例を示している。動作環境１００は、クラウドコンピューティングシステム１０２と、通信ネットワーク１０４と、１つ以上のユーザ１０６とを含み得る。
【００１５】
一般的に、通信ネットワーク１０４は、クラウドコンピューティングシステム１０２とユーザ１０６とが相互に通信することを可能にする１つ以上のワイドエリアネットワーク（ＷＡＮ）及び／又はローカルエリアネットワーク（ＬＡＮ）を含み得る。一部の実施形態において、通信ネットワーク１０４は、複数のＷＡＮ及び／又はＬＡＮ間の論理・物理接続によって形成される世界的な相互接続ネットワークを含むインターネットを含む。それに代えて、あるいは加えて、通信ネットワーク１０４は、１つ以上のセルラー方式ＲＦネットワークを含んでいてもよく、且つ／或いは、以下に限られないが例えば８０２．ｘｘネットワーク、ブルートゥースアクセスポイント、無線アクセスポイント、ＩＰベースネットワーク、又はこれらに類するものなどの、１つ以上の有線ネットワーク及び／又は無線ネットワークを含んでいてもよい。通信ネットワーク１０４はまた、一種類のネットワークが他の一種類のネットワークとのインタフェースをとることを可能にするサーバを含んでいてもよい。
【００１６】
ユーザ１０６は、クラウドコンピューティングシステム１０２によって提供されるサービスにアクセスすることを望む、例えば個人、企業及び／又はその他の組織などの、エンティティを含み得る。例えば、クラウドコンピューティングシステム１０２は、有料ＩａａＳ（infrastructure-as-a-service）サービス及び／又は無料ＩａａＳサービスをユーザ１０６に提供し得る。ユーザ１０６は更に、通信ネットワーク１０４上でクラウドコンピューティングシステム１０２と通信するための好適なハードウェア及び／又はソフトウェアを含んだコンピューティング装置を含み、あるいはそのような装置に結合され得る。しかしながら、以下の説明を単純化するため、コンピューティング装置及び関連エンティティを単に“ユーザ１０６”と呼ぶことにする。
【００１７】
クラウドコンピューティングシステム１０２は、１つ以上のハードウェアシステムを含む計算リソースプール１０８を含み得る。計算リソースプール１０８は通信ネットワーク１０４を介してユーザ１０６にアクセス可能である。計算リソースプール１０８に含まれ得るハードウェアシステムの例には、以下に限られないが、ストレージ１１０、１つ以上のネットワーク及び／又はネットワーク装置１１２、並びに１つ以上のサーバ又はその他のコンピューティング装置１１４（以下、“サーバ１１４”と称する）がある。
【００１８】
ストレージ１１０は、例えば磁気ストレージ、光ストレージ、半導体ストレージ、若しくはこれらに類するもの、又はこれらの組合せなどの不揮発性記憶装置を含み得る。
【００１９】
１つ以上のネットワーク及び／又はネットワーク装置１１２は、クラウドコンピューティングシステム１０２内でのストレージ１１０とサーバ１１４との間の通信を容易にすることができ、例えば、ストレージエリアネットワーク（storage  area  network；ＳＡＮ）、ＳＡＮファブリック、ルータ、交換器、ハブ、若しくはこれらに類するもの、又はこれらの組合せを含み得る。
【００２０】
サーバ１１４は各々、メモリ及び／又は１つ以上のプロセッサを含むことができ、ソフトウェアを実行して走らせ、且つ／或いはクラウドコンピューティングシステム１０２へのアクセスを提供し、且つ／或いはクラウドコンピューティングシステム１０２内でユーザ１０６が利用可能なソフトウェアを実行するように構成され得る。
【００２１】
図１に例示するように、クラウドコンピューティングシステム１０２は更に仮想基盤（インフラ）１１６と１つ以上の仮想マシン１１８とを含み得る。仮想基盤１１６は、計算リソースプール１０８内のリソースの、上記１つ以上の仮想マシン１１８に対する動的マッピングを提供するように構成され得る。
【００２２】
各仮想マシン１１８は、仮想基盤１１６によって該仮想マシン１１８に提示された仮想リソース上で走るように構成されたオペレーティングシステム１２０を含み得る。各仮想マシン１１８は更に、対応するオペレーティングシステム上で走る１つ以上のアプリケーション１２２を含んでいてもよい。
【００２３】
従って、クラウドコンピューティングシステム１０２は、ユーザ１０６へのＩａａＳサービスの提供を支援し得る。例えば、各ユーザ１０６は、クラウドコンピューティングシステム１０２から、Ｘ演算性能及びＹメモリ、及び／又は特定のソフトウェア、又はこれらに類するもの、を有するコンピュートノードを借りることができる。計算リソースプール１０８を仮想化することにより、ＩａａＳプロバイダは各ユーザ１０６に、複数の仮想マシン１１８のうちの対応する１つを介して、所望のコンピュートノードを提供し、それにより、計算リソースプール１０８を効率的に利用し得る。
【００２４】
一部の実施形態において、各仮想マシン１１８は、計算リソースプール１０８に保存された仮想マシンイメージからインスタンス化され得る。仮想マシンイメージは、実行されるときに対応する仮想マシン１１８をインスタンス化し得るバイナリコードを含んだ一組のファイルを含み得る。各仮想マシンイメージは、例えばブートローダバイナリなどの不変部分と、例えばオペレーティングシステム１２０に対応するオペレーティングシステムバイナリ及び１つ以上のアプリケーション１２２に対応する１つ以上のアプリケーションバイナリなどの１つ以上のその他の部分と、を含む複数の部分を含み得る。
【００２５】
仮想基盤１１６は、計算リソースプール１０８にインストールされた１つ以上のハイパーバイザを含み得る。一部の実施形態において、例えば、仮想基盤１１６は、計算リソースプール１０８の別々の複数のハードウェアシステム上（例えば、複数のサーバ１１４の各々上など）にインストールされた１つのハイパーバイザを含んでいてもよい。
【００２６】
各ハイパーバイザは、各仮想マシン１１８内にトラストチェーンを構築するように構成され得る。トラストチェーンは、各仮想マシン１１８内に、その仮想マシン１１８のインスタンス化の前又は間に構築されることができ、例えば、対応する仮想マシンイメージの不変部分を計測してトラストアンカーメジャーメントを生成し、機密メモリ（シールされた（sealed）メモリ）に該トラストアンカーメジャーメントを格納することを含み得る。機密メモリは概して、例えばトラステッド・プラットフォーム・モジュール（trusted  platform  module；ＴＰＭ）チップ内の１つ以上のレジスタなど、リード（読出し）アクセス及び／又はライト（書込み）アクセスが制限されたメモリ位置を含み得る。それに代えて、あるいは加えて、更に詳細に後述するように、各仮想マシン１１８内のトラストチェーンは、対応する仮想マシン１１８がインスタンス化された計算リソースプール１０８内のハードウェアシステムのトラストチェーンとリンクされ得る。
【００２７】
それに代えて、あるいは加えて、トラストチェーンは、各仮想マシン１１８内まで延長され得る。例えば、複数の仮想マシン１１８のうちの所与の１つに関して、ブートローダは、オペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成するように構成されることができ、且つオペレーティングシステムメジャーメントを機密メモリに格納するように更に構成され得る。さらに、オペレーティングシステム１２０をオペレーティングシステムバイナリからインスタンス化した後、オペレーティングシステム１２０は、仮想マシンイメージの１つ以上のアプリケーションバイナリの各々を計測して対応するアプリケーションメジャーメントを生成するように構成されることができ、且つアプリケーションメジャーメントを機密メモリに格納するように更に構成され得る。
【００２８】
一部の実施形態において、クラウドコンピューティングシステム１０２は、特定のソフトウェア攻撃の検出を可能にするよう、各仮想マシン１１８のリモートアテステーションを複数のユーザ１０６のうちの対応する１つに提供するように構成され得る。具体的には、クラウドコンピューティングシステム１０２は、複数のユーザ１０６のうちの対応する１つによる要求に応答して、複数の仮想マシン１１８のうちの所与の１つに関して、ブートローダバイナリの対応するトラストアンカーメジャーメントと、オペレーティングシステムバイナリのオペレーティングシステムメジャーメントと、１つ以上のアプリケーションバイナリの１つ以上のアプリケーションメジャーメントと、を含む一組のメジャーメント（メジャーメントセット）を、該ユーザ１０６に提供するように構成され得る。このメジャーメントセットは、クラウドコンピューティングシステム１０２によって、より具体的には、対応する仮想マシン１１８がインスタンス化されるクラウドコンピューティングシステム１０２のハードウェアシステムによって署名され得る。メジャーメントセットに署名することは、クラウドコンピューティングシステム１０２の該ハードウェアシステムが、メジャーメントセットとともに、該ハードウェアシステムに関連付けられた確率的に無二の識別子を含めることを含み得る。
【００２９】
ユーザ１０６は、メジャーメントセットを該ユーザ１０６に既知の予期されるメジャーメントと比較することによって、対応する仮想マシン１１８内で権限のないアプリケーションが実行されているか、又は対応するブートローダバイナリ、オペレーティングシステムバイナリ又は１つ以上のアプリケーションバイナリの何れかで権限のない改竄が行われたか、を決定するように構成され得る。一部の実施形態において、ユーザ１０６は更に、メジャーメントセットの署名に基づいて、クラウドコンピューティングシステム１０２が正当なものであるかを確認し得る。それに代えて、あるいは加えて、ユーザ１０６は、例えば該ユーザ１０６がクラウドコンピューティングシステム１０２内の対応する仮想マシン１１８を最初にインスタンス化するときに、予期されるメジャーメントをクラウドコンピューティングシステム１０２から事前に受信してもよい。
【００３０】
図２は、ここに記載される少なくとも一部の実施形態に従って構成された、図１の動作環境１００内で実現され得るハードウェアシステム２００の一実施形態のブロック図である。例えば、ハードウェアシステム２００は、図１のクラウドコンピューティングシステム１０２内の複数のサーバ１１４のうちの１つに相当し得る。ハードウェアシステム２００は１つ以上のハードウェアリソース２０２を含むことができ、該１つ以上のハードウェアリソース２０２は、以下に限られないが、中央演算処理ユニット（ＣＰＵ）２０４若しくはその他のプロセッサ、メモリ２０６、ネットワークインタフェースコントローラ（ＮＩＣ）２０８、ハードウェアトラストアンカー２１０及びストレージ２１２を含み得る。
【００３１】
ハードウェアシステム２００は更に、ハードウェアリソース２０２にインストールされた例えばハイパーバイザなどの仮想基盤（仮想インフラ）２１４を含み得る。仮想基盤２１４は、例えば、図１の仮想基盤１１６に相当し、一般に、ハードウェアリソース２０２へのアクセスを管理し、あるいは、ハードウェアリソース２０２を一様なプールへと“仮想化”し且つこのプールのハードウェアを１つ以上の仮想マシン２１６、２１８から分離し得る。図２には２つの仮想マシン２１６、２１８が描かれているが、より一般的には、ハードウェアシステム２００はその上で走る２つより多い或いは少ない仮想マシンを含み得る。ハードウェアリソース２０２を仮想化することにより、仮想基盤２１４は、所望の構成を有する標準ハードウェア２２０、２２２を各仮想マシン２１６、２１８のオペレーティングシステム２２４、２２６に提示し得る。各仮想マシン２１６、２１８内で、対応するオペレーティングシステム２２４、２２６上で、１つ以上のアプリケーション２２８、２３０が走り得る。
【００３２】
ここに記載される一部の実施形態によれば、各仮想マシン２１６、２１８は、ここに記載される不変部分と１つ以上のその他の部分とを含む対応する仮想マシンイメージからインスタンス化され得る。これら及びその他の実施形態において、例えばハイパーバイザなどの仮想基盤２１４は、上述のように、仮想マシン２１６、２１８の各々内にトラストチェーンを構築し得る。
【００３３】
図３Ａは、ここに記載される少なくとも一部の実施形態に従って構成された、ネットワークサーバ３００として実装されるハードウェアシステムの他の一実施形態のブロック図である。ネットワークサーバ３００は、図１の動作環境１００内に実装されることができ、例えば、図１のクラウドコンピューティングシステム１０２内の複数のサーバ１１４のうちの１つに相当し得る。ネットワークサーバ３００は、プロセッサ３０２、メモリ３０４、スタートアップストレージ３０６、プログラムストレージ３０８、ハードウェアトラストアンカー３１０及び通信バス３１２を含むことができ、これらのコンポーネントは共に通信可能に結合するように構成されている。
【００３４】
一部の実施形態において、ハードウェアトラストアンカー３１０はＴＰＭセキュリティデバイス又はチップとし得る。他の実施形態において、ハードウェアトラストアンカー３１０は、別種類の暗号プロセッサ又は暗号マイクロプロセッサなどとし得る。より一般的には、ハードウェアトラストアンカー３１０は、ここに記載される機能を実行するように構成された如何なる種類のデバイスを含んでいてもよい。
【００３５】
図３Ａに例示するように、ハードウェアトラストアンカー３１０は、トラストプロセッサ３１４及び機密メモリ３１６を含み得る。機密メモリ３１６は、例えばＴＰＭチップ内の１つ以上のレジスタなど、ハードウェアトラストアンカー３１０内の１つ以上のレジスタを用いて実装され得る。より一般的には、機密メモリ３１６は、例えばハードウェアトラストアンカー３１０のメモリデバイス内のアドレス可能な位置など、リードアクセス及び／又はライトアクセスが制限された如何なるメモリ位置を含んでいてもよい。
【００３６】
図３Ａは更に、プログラムストレージ３０８、又はネットワークサーバ３００のその他のストレージ位置が、そこに格納された１つ以上の仮想マシンイメージ３１８Ａを含み得ることを示している。各仮想マシンイメージ３１８Ａは、例えば図１−２の仮想マシン１１８、２１６、２１８のうちの対応する１つなど、対応する仮想マシンをインスタンス化するように構成され得る。具体的には、ネットワークサーバ３００がブートアップされた後、仮想マシンイメージ３１８Ａのうちの１つ以上が、メモリ３０４にロードされてプロセッサ３０２によって実行されることで、ネットワークサーバ３００上で走る対応する仮想マシン（図示せず）がインスタンス化され得る。
【００３７】
上述のように、各仮想マシンイメージ３１８Ａは、例えばブートローダとしてインスタンス化するように構成されたブートローダバイナリなどの不変部分を含み得る。各仮想マシンイメージは更に、例えばオペレーティングシステムバイナリ及び１つ以上のアプリケーションバイナリなどの１つ以上のその他の部分を含み得る。ここで、オペレーティングシステムバイナリ、及び１つ以上のアプリケーションバイナリは、それぞれ、仮想マシンイメージ３１８Ａからインスタンス化される対応する仮想マシンにて走り得るオペレーティングシステム、及び１つ以上のアプリケーションに対応する。
【００３８】
図３Ｂは、ここに記載される少なくとも一部の実施形態に従って構成された、図３Ａのネットワークサーバ３００上の仮想マシン３１８Ｂをブートアップするために実装され得る起動チェーン３２０の一例を示している。仮想マシン３１８Ｂは、例えば、図３Ａの仮想マシンイメージ３１８Ａのうちの対応する１つからインスタンス化され得る。許可されたソフトウェアのみが仮想マシン３１８Ｂにて走っていること、及び／又は許可されたソフトウェア内に不正な手法で改竄されたものがないことを、対応するユーザが確認することを可能にするため、起動チェーン３２０が進められるときにトラストチェーン３２２も構築され得る。
【００３９】
図３Ａと３Ｂとを共に参照するに、起動チェーン３２０は、ネットワークサーバ３００の電源投入で開始することができ、その時、ハードウェアトラストアンカー３１０、より具体的にはトラストプロセッサ３１４が、スタートアップストレージ３０６に格納され且つブートローダ３２４としてインスタンス化するように構成されたブートローダバイナリ（図示せず）にアクセスし得る。ブートローダ３２４は、トラストプロセッサ３１４及び／又はプロセッサ３０２によって実行され得る。
【００４０】
電源投入時、ハードウェアトラストアンカー３１０は更に、３２６で指し示されるように、トラストチェーン３２２を構築することの一部として、ブートローダ３２４に対応するブートローダバイナリを計測してブートローダメジャーメントを生成し得る。ブートローダメジャーメントは、機密メモリ３１６に格納され得る。
【００４１】
これら及びその他の実施形態において、計測は、計測対象に対して、確率的に無二の識別子を生成することによって実行され得る。例えば、この例ではブートローダ３２４に対応するブートローダバイナリである計測対象に対して、ハッシュ関数が適用されて、該対象のメジャーメント（計測値）としてハッシュ値が生成され得る。より一般的には、対象のメジャーメントは、以下に限られないが、例えばハッシュ値、チェックサム、フィンガープリント、又はチェックディジットなどの、確率的に無二の如何なる好適な識別子を含んでいてもよい。
【００４２】
一般に、ブートローダ３２４は、一部の実施形態においてハイパーバイザとして実装され得るオペレーティングシステム３２８をインスタンス化するように構成されたオペレーティングシステムバイナリ（図示せず）の実行をトリガーするように構成され得る。例えば、ブートローダ３２４の実行により、オペレーティングシステム３２８をインスタンス化するプロセッサ３０２による実行のために、オペレーティングシステムバイナリがスタートアップストレージ３０６からメモリ３０４に読み出され得る。
【００４３】
ブートローダ３２４は更に、３３０で指し示されるように、トラストチェーン３２２を構築することの一部として、オペレーティングシステム３２８に対応するオペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成し得る。オペレーティングシステムメジャーメントは、機密メモリ３１６に格納され得る。
【００４４】
起動チェーン３２０は、オペレーティングシステム３２８が仮想マシン３１８Ｂに対応する仮想マシンイメージ３１８Ａのブートローダバイナリを呼び出して、対応するブートローダ３３２をインスタンス化することへと続き得る。ブートローダ３３２は、仮想マシンイメージ３１８Ａのオペレーティングシステムバイナリを呼び出して、対応するオペレーティングシステム３３４をインスタンス化し得る。オペレーティングシステム３３４は、仮想マシンイメージ３１８Ａの１つ以上のアプリケーションバイナリを呼び出して、１つ以上の対応するアプリケーション３３６をインスタンス化し得る。
【００４５】
トラストチェーン３２２の構築は、起動チェーン３２０と同様に続き得る。具体的には、仮想マシン３１８Ｂのインスタンス化の間及び／又は前に、３３８で指し示されるように、オペレーティングシステム３２８が、ブートローダ３３２に対応するブートローダバイナリを計測して、機密メモリ３１６に格納されるトラストアンカーメジャーメントを生成し得る。ブートローダ３３２が、３４０で指し示されるように、オペレーティングシステム３３４に対応するオペレーティングシステムバイナリを計測して、機密メモリ３１６に格納される仮想マシン３１８Ｂに関するオペレーティングシステムメジャーメントを生成し得る。オペレーティングシステム３３４が、３４２で指し示されるように、１つ以上のアプリケーション３３６に対応する１つ以上のアプリケーションバイナリを計測して、機密メモリ３１６に格納される１つ以上のアプリケーションメジャーメントを生成し得る。
【００４６】
上述のように、トラストチェーン３２２は、例えば図１のユーザ１０６のうちの１つなどの、対応するユーザが、許可されたソフトウェアのみが仮想マシン３１８Ｂにて走っていること、及び／又は許可されたソフトウェア内に不正な手法で改竄されたものがないことを確認することを可能にし得る。具体的には、例えば仮想マシン３１８Ｂに関連付けられたユーザ１０６のうちの１つといった、ユーザ１０６のうちの対応する１つによる要求に応答して、ハードウェアトラストアンカー３１０が、一組のメジャーメントに署名して該ユーザ１０６に送信するように構成され得る。このメジャーメントセットは、図３Ａ−３Ｂに関して説明したブートローダメジャーメント、第１のオペレーティングシステムメジャーメント、トラストアンカーメジャーメント、第２のオペレーティングシステムメジャーメント、及び１つ以上のアプリケーションメジャーメントのうちの１つ以上を含み得る。
【００４７】
ユーザ１０６は、メジャーメントセットを該ユーザ１０６に既知の予期されるメジャーメントと比較することによって、対応する仮想マシン３１８Ｂ内で権限のないアプリケーションが実行されているか、又は対応する仮想マシンイメージ３１８Ａの対応するブートローダバイナリ、オペレーティングシステムバイナリ又は１つ以上のアプリケーションバイナリの何れかで権限のない改竄が行われたか、を決定するように構成され得る。一部の実施形態において、ユーザ１０６は更に、メジャーメントセットの署名に基づいて、ハードウェアトラストアンカー３１０が正当なものであるかを確認し得る。ユーザ１０６は、上述のように、予期されるメジャーメントを事前に受信してもよい。
【００４８】
図４は、ここに記載される少なくとも一部の実施形態に従って構成された、ハードウェアシステム上の仮想マシン内にトラストチェーンを構築する方法４００の一例のフローチャートである。一部の実施形態において、方法４００は、全体的あるいは部分的に、例えば図１のクラウドコンピューティングシステム１０２などのクラウドコンピューティングシステムによって実行され得る。より具体的には、方法４００は、全体的あるいは部分的に、例えば図２のハードウェアシステム２００又は図３のネットワークサーバ３００などのハードウェアシステムによって実行され、且つ／或いは対応するハードウェアシステム上で走るソフトウェアによって実行され得る。
【００４９】
方法４００はブロック４０２にて開始し、そこで、仮想マシンとしてインスタンス化するように構成された仮想マシンイメージの不変部分が計測されて、トラストアンカーメジャーメントが生成される。上述のように、仮想マシンイメージは、ブートローダバイナリと、オペレーティングシステムバイナリと、１つ以上のアプリケーションバイナリとを含むことができ、仮想マシンイメージの不変部分は、ブートローダバイナリを含み得る。それに代えて、あるいは加えて、トラストアンカーメジャーメントは、以下に限られないが例えばハッシュ値、チェックサム、フィンガープリント又はチェックディジットなどの、不変部分の確率的に無二の識別子を含み得る。
【００５０】
方法４００はブロック４０４に続き、そこで、トラストアンカーメジャーメントが機密メモリに格納される。機密メモリは、例えばＴＰＭチップなどのハードウェアトラストアンカー内の１つ以上のレジスタを含むことができ、例えば、図３Ａの機密メモリ３１６に相当し得る。
【００５１】
当業者によって認識されるように、ここに開示されるこの及びその他のプロセス及び方法において、それらプロセス及び方法で実行される機能は異なる順序で実行されてもよい。また、概説されるステップ及び処理は、単に例として提示されるものであり、それらステップ及び処理の一部は、開示の実施形態の本質を損ねることなく、省略され、より少ない数のステップ及び処理へと結合され、あるいは更なるステップ及び処理に展開されてもよい。
【００５２】
例えば、図４には示されていないが、方法４００は更に、仮想マシンのブートローダによって、仮想マシンイメージのオペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成することを含み得る。オペレーティングシステムメジャーメントは、機密メモリに格納され得る。方法４００は更に、オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムによって、仮想マシンイメージの１つ以上のアプリケーションバイナリを計測して１つ以上のアプリケーションメジャーメントを生成することを含み得る。該１つ以上のアプリケーションメジャーメントは、機密メモリに格納され得る。
【００５３】
方法４００は更に、仮想マシンイメージから仮想マシンをインスタンス化することを含み得る。トラストアンカーメジャーメントと、オペレーティングシステムメジャーメントと、１つ以上のアプリケーションメジャーメントとを含むメジャーメントセットの要求が受信され得る。メジャーメントセットは署名を付され得る。例えば、メジャーメントセットは、例えば図２−３Ａのハードウェアトラストアンカー２１０、３１０などのハードウェアトラストアンカーによって署名され得る。署名されたメジャーメントセットは、例えば図１のユーザ１０６のうちの１つなど、メジャーメントセットを要求したエンティティに送信され得る。
【００５４】
一部の実施形態において、エンティティは、署名を検証するように構成され得る。署名の検証は、署名を予期される署名と比較することによって行われ得る。エンティティはまた、署名されたメジャーメントセットを予期されるメジャーメントと比較するように構成され得る。予期される署名及び／又は予期されるメジャーメントは、そのエンティティがアクセス可能なストレージに格納されているとし得る。エンティティは、署名されたメジャーメントを予期されるメジャーメントと比較して、何らかの不正なアプリケーションが仮想マシン上で実行されているかどうか、または、何らかの不正な改竄がブートローダバイナリ、オペレーティングシステムバイナリ若しくは１つ以上のアプリケーションバイナリの何れかで行われたかどうかを決定し得る。これらのメジャーメントにおける相違は、１つ以上の不正なアプリケーションが仮想マシン上で実行されていること、及び／又は、ブートローダバイナリ、オペレーティングシステムバイナリ及び／又はアプリケーションバイナリが不正な手法で改変あるいは変更されていること、又はこれらに類することを指し示す。従って、エンティティは、該エンティティに関連付けられた仮想マシンにおける不正なソフトウェア及び／又は改竄の存在を特定して、例えば、不正なアプリケーションを削除したり、不正な改竄を有するブートローダバイナリ、オペレーティングシステムバイナリ又はアプリケーションバイナリを、対応する未改竄バージョンに修復したりすることなどによって、然るべく行動し得る。
【００５５】
代替的あるいは付加的に、方法４００は更に、仮想マシンがリブートする都度、仮想マシン内のトラストチェーンをリフレッシュすることを含んでいてもよい。仮想マシンがリブートする度に仮想マシン内のトラストチェーンをリフレッシュすることは、仮想マシンのリブートに応答して、ブートローダバイナリを含む不変部分を再計測してトラストアンカーメジャーメントを再生成することを含み得る。再生成されたトラストアンカーメジャーメントは、機密メモリに格納され得る。ブートローダが、オペレーティングシステムバイナリを再計測してオペレーティングシステムメジャーメントを再生成し得る。再生成されたオペレーティングシステムメジャーメントは、機密メモリに格納され得る。オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムが、１つ以上のアプリケーションバイナリを再計測して１つ以上のアプリケーションメジャーメントを再生成し得る。再生成された１つ以上のアプリケーションメジャーメントは、機密メモリに格納され得る。
【００５６】
一部の実施形態において、方法４００は更に、仮想マシンイメージ内でのブートローダバイナリの位置及びサイズを特定することを含み得る。ブートローダバイナリの位置及びサイズを特定することは、ブートローダバイナリのサイズ及び仮想マシンイメージの位置を返すように構成され得るブートローダ情報データベース（boot  loader  information  database；ＢＬＩＤＢ）にクエリーを行うことを含み得る。これら及びその他の実施形態において、ブートローダバイナリは、仮想マシンイメージの位置として特定されるハードウェアシステムのハードディスクの位置のうちの最初の５１２バイトに置かれ得る。代替的に、ブートローダバイナリは、ハードディスクのパーティションテーブルを読むことによって決定されるハードディスクのパーティション内に置かれてもよい。
【００５７】
図５Ａは、ここに記載される少なくとも一部の実施形態に従って構成された、仮想マシンをインスタンス化することに関する様々なコンポーネントのブロック図である。具体的には、図５Ａは、ＢＬＩＤＢ５０２と、ハイパーバイザ５０４と、機密メモリ５０６と、ブートローダバイナリ５１０を含む仮想マシンイメージ５０８とを示している。
【００５８】
ＢＬＩＤＢ５０２は、図２のストレージ２１２及び／又は図３Ａのプログラムストレージ３０８などに格納され得る。
【００５９】
ハイパーバイザ５０４は、図２のハードウェアシステム２００及び／又は図３Ａのネットワークサーバ３００などの上でインスタンス化され得る。ハイパーバイザ５０４は、例えば、図３Ｂのオペレーティングシステム３２８に相当し得る。
【００６０】
機密メモリ５０６は、例えば、図３Ａの機密メモリ３１６に相当し得る。
【００６１】
仮想マシンイメージ５０８、及びブートローダバイナリ５１０は、それぞれ、例えば、図３Ａの仮想マシンイメージ３１８Ａ、及び図３Ｂのブートローダ３３２がそこからインスタンス化されるブートローダバイナリに相当し得る。
【００６２】
図５Ｂは、ここに記載される少なくとも一部の実施形態に従って構成された、仮想マシンをインスタンス化する方法５５０の一例のフローチャートである。方法５５０は、全体的あるいは部分的に、例えば図５Ａのハイパーバイザ５０４によって実行され得る。図５Ａとの関係で図５Ｂの方法５５０を説明することとする。
【００６３】
方法５５０はブロック５５２で開始し、そこで、ハイパーバイザ５０４は、ブートローダバイナリ５１０のサイズ及び仮想マシンイメージ５０８の位置をＢＬＩＤＢ５０２にクエリーする。ＢＬＩＤＢ５０２は、ブートローダバイナリ５１０のサイズ及び仮想マシンイメージ５０８の位置を返し得る。一部の実施形態において、上述のように、ブートローダバイナリ５１０は、仮想マシンイメージの位置として特定されるハードディスクの位置のうちの最初の５１２バイトに置かれ、あるいは、ブートローダは、ハードディスクのパーティションテーブルを読むことによって決定されるハードディスクのパーティション内に置かれ得る。
【００６４】
方法５５０はブロック５５４に続き、そこで、ハイパーバイザ５０４は、仮想マシンイメージ内のブートローダバイナリを計測する。例えば、ハイパーバイザ５０４は、ブートローダバイナリ５１０のハッシュ値を生成することによって、あるいはブートローダバイナリ５１０のその他の確率的に無二の識別子を生成することによって、ブートローダバイナリ５１０を計測し得る。
【００６５】
方法５５０は、メジャーメントが機密メモリ５０６に格納されるブロック５５６、及び対応する仮想マシンが仮想マシンイメージ５０８からインスタンス化されるブロック５５８に続き得る。
【００６６】
従って、ここに記載される一部の実施形態は、対応する仮想マシンイメージの例えばブートローダバイナリなどの不変部分のみを最初に計測することによって仮想マシン内にトラストチェーンを構築することにより、性能を向上させ得る。ブートローダバイナリは仮想マシンイメージのうちの比較的小さい部分のみを表し、ブートローダバイナリは、仮想マシンイメージ全体を計測することより少ない処理リソース及び／又は短い時間で計測されることができる。
【００６７】
また、一部のシステムは仮想マシンイメージ全体を計測することによってトラストチェーンを構築し、仮想マシンイメージの一部が変更されたとき、例えばオペレーティングシステムがアップデートされたとき、そのトラストチェーンは再構築されることができない。特に、そのようなアップデートは、予期される値ともはや合致しない仮想マシンイメージのメジャーメントを生じさせ得る。
【００６８】
対照的に、ここに記載される一部の実施形態は、ブートローダバイナリのみを計測することによって仮想マシン内にトラストチェーンを構築し、その結果、オペレーティングシステムのアップデート又はこれに類するものを考慮しても、トラストチェーンは依然として仮想マシン内に構築され得る。これら及びその他の実施形態において、オペレーティングシステムのアップデートがダウンロードされるとき、仮想マシンに関連付けられた対応するユーザ又はエンティティに、オペレーティングシステムの新たな予期されるメジャーメントが提供され、その結果、トラストチェーンは、アップデートされたオペレーティングシステム上で走る１つ以上のアプリケーションまで構築されることができる。
【００６９】
ここに記載される実施形態は、より詳細に後述するような様々なコンピュータハードウェア又はソフトウェアモジュールを含んだ専用あるいは汎用のコンピュータの使用を含み得る。
【００７０】
ここに記載される実施形態は、コンピュータ実行可能命令又はデータ構造を担持あるいは格納したコンピュータ読み取り可能媒体を用いて実現されてもよい。そのようなコンピュータ読み取り可能媒体は、汎用あるいは専用のコンピュータによってアクセスされることが可能な如何なる入手可能な媒体であってもよい。非限定的な例として、そのようなコンピュータ読み取り可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ若しくはその他の光ディスクストレージ、磁気ディスクストレージ若しくはその他の磁気記憶装置、又は、所望のプログラムコード手段をコンピュータ実行可能命令又はデータ構造の形態で担持あるいは格納するように使用され且つ汎用あるいは専用のコンピュータによってアクセスされることが可能なその他の媒体を有し得る。情報がネットワーク又はその他の通信接続（有線、無線、又は有線と無線との組合せ）上でコンピュータに伝送あるいは提供されるとき、コンピュータは適宜、そのような接続をコンピュータ読み取り可能媒体として見る。故に、そのような接続も適宜、コンピュータ読み取り可能媒体と呼ばれ得る。以上のものの組合せもコンピュータ読み取り可能媒体の範囲に含まれる。
【００７１】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ又は専用処理装置に特定の機能又は機能群を実行させる命令及びデータを有する。ここでは構成上の機構及び／又は方法のステップに特有の言葉にて説明してきたが、理解されるように、請求項に規定される事項は必ずしも、ここで説明された特有の機構又はステップに限定されるものではない。むしろ、ここで説明された特有の機構及びステップは、請求項に規定される事項を実現する形態の例として開示されたものである。
【００７２】
ここでは、用語“モジュール”又は“コンポーネント”は、コンピュータシステム上で実行されるソフトウェアオブジェクト又はルーチンを意味し得る。ここに記載された様々なコンポーネント、モジュール、エンジン及びサービスは、コンピュータシステム上で（例えば、別々のスレッドとして）実行される複数のオブジェクト又はプロセスとして実装され得る。ここに記載されるシステム及び方法は好ましくはソフトウェアにて実装されるが、ハードウェア又はソフトウェアとハードウェアとの組合せでの実装も可能であり、且つ意図されるものである。本明細書において、“コンピューティングエンティティ”は、上述のような何らかのコンピューティングシステム、又はコンピューティングシステム上で走る何らかのモジュール又はモジュール群の組合せとし得る。
【００７３】
ここに記載された全ての例及び条件の説明は、本発明及び技術を進歩させるために本発明者が提供する概念を読者が理解することを支援するための教育的目的でのものであり、そのような具体的に記載された例及び条件への限定ではないとして解釈されるべきである。また、本明細書における例の編成は、発明の優位性及び劣位性を示すものでもない。本発明の実施形態を詳細に説明してきたが、理解されるように、これらの実施形態には、本発明の精神及び範囲を逸脱することなく、様々な変形、代用及び改変が為され得る。
【００７４】
以上の説明に関し、更に以下の付記を開示する。
【００７５】
（付記１）  ハードウェアシステム上の仮想マシン内にトラストチェーンを構築する方法であって、
前記仮想マシンとしてインスタンス化するように構成された仮想マシンイメージの不変部分を計測して、トラストアンカーメジャーメントを生成するステップと、
前記トラストアンカーメジャーメントを機密メモリに格納するステップと
を有する方法。
【００７６】
（付記２）  前記トラストアンカーメジャーメントは、前記不変部分の確率的に無二の識別子を有する、付記１に記載の方法。
【００７７】
（付記３）  前記確率的に無二の識別子はハッシュ値を有する、付記２に記載の方法。
【００７８】
（付記４）  前記仮想マシンイメージは、ブートローダバイナリ、オペレーティングシステムバイナリ、及び１つ以上のアプリケーションバイナリを有し、且つ
前記不変部分は前記ブートローダバイナリを有する、
付記１に記載の方法。
【００７９】
（付記５）  前記ブートローダバイナリの前記仮想マシンイメージ内での位置及びサイズを特定するステップ、を更に有する付記４に記載の方法。
【００８０】
（付記６）  前記ブートローダバイナリの前記仮想マシンイメージ内での位置及びサイズを特定するステップは、前記ブートローダバイナリのサイズと前記仮想マシンイメージの位置とを返すブートローダ情報データベースにクエリーすることを有する、付記５に記載の方法。
【００８１】
（付記７）  前記ブートローダバイナリは、前記仮想マシンイメージの前記位置として特定された前記ハードウェアシステムのハードディスクの位置のうちの最初の５１２バイトに置かれ、あるいは
前記ブートローダバイナリは、前記ハードディスクのパーティションテーブルを読むことによって決定される前記ハードディスクのパーティション内に置かれる、
付記６に記載の方法。
【００８２】
（付記８）  前記ブートローダバイナリからインスタンス化されたブートローダにより、前記オペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成するステップと、
前記オペレーティングシステムメジャーメントを前記機密メモリに格納するステップと、
前記オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムにより、前記１つ以上のアプリケーションバイナリを計測して１つ以上のアプリケーションメジャーメントを生成するステップと、
前記１つ以上のアプリケーションメジャーメントを前記機密メモリに格納するステップと、
を更に有する付記４に記載の方法。
【００８３】
（付記９）  前記仮想マシンイメージから仮想マシンをインスタンス化するステップと、
前記トラストアンカーメジャーメントと、前記オペレーティングシステムメジャーメントと、前記１つ以上のアプリケーションメジャーメントとを含むメジャーメントセットの要求を受信するステップと、
前記メジャーメントセットに署名を付すステップと、
前記メジャーメントセットを要求したエンティティに、署名されたメジャーメントセットを送信するステップと、
を更に有し、
該エンティティは、前記署名を検証し、且つ前記署名されたメジャーメントセットを予期されるメジャーメントと比較して、前記仮想マシン上で不正なアプリケーションが実行されているか、又は前記ブートローダバイナリ、前記オペレーティングシステムバイナリ、若しくは前記１つ以上のアプリケーションバイナリの何れかに不正な改竄が行われたか、を決定するように構成される、
付記８に記載の方法。
【００８４】
（付記１０）  前記仮想マシンがリブートする度に前記仮想マシン内の前記トラストチェーンをリフレッシュするステップ、を更に有する付記８に記載の方法。
【００８５】
（付記１１）  前記仮想マシンがリブートする度に前記仮想マシン内の前記トラストチェーンをリフレッシュするステップは、前記仮想マシンがリブートすることに応答して、
前記ブートローダバイナリを有する前記不変部分を再計測して、トラストアンカーメジャーメントを再生成し、
再生成されたトラストアンカーメジャーメントを前記機密メモリに格納し、
前記ブートローダにより、前記オペレーティングシステムバイナリを再計測して、オペレーティングシステムメジャーメントを再生成し、
再生成されたオペレーティングシステムメジャーメントを前記機密メモリに格納し、
前記オペレーティングシステムバイナリからインスタンス化されたオペレーティングシステムにより、前記１つ以上のアプリケーションバイナリを再計測して１つ以上のアプリケーションメジャーメントを再生成し、且つ
再生成された１つ以上のアプリケーションメジャーメントを前記機密メモリに格納する、
ことを有する、付記１０に記載の方法。
【００８６】
（付記１２）  １つ以上のハードウェアリソースと、
前記１つ以上のハードウェアリソース上で仮想マシンとしてインスタンス化するように構成された仮想マシンイメージであり、不変部分と１つ以上のその他の部分とを含む仮想マシンイメージと、
前記１つ以上のハードウェアリソース上にインストールされたハイパーバイザであり、
前記仮想マシンイメージの前記不変部分を計測してトラストアンカーメジャーメントを生成し、且つ
前記トラストアンカーメジャーメントを機密メモリに格納する
ことによって前記仮想マシン内にトラストチェーンを構築するように構成されたハイパーバイザと
を有するハードウェアシステム。
【００８７】
（付記１３）  前記ハイパーバイザは、当該ハードウェアシステムのオペレーティングシステムバイナリからインスタンス化され、当該ハードウェアシステムは更にハードウェアトラストアンカーとブートローダバイナリとを有する、付記１２に記載のハードウェアシステム。
【００８８】
（付記１４）  前記ハードウェアトラストアンカーは、トラステッド・プラットフォーム・モジュール（ＴＰＭ）チップを有し、前記機密メモリは、前記ＴＰＭチップ内の１つ以上のレジスタを有する、付記１３に記載のハードウェアシステム。
【００８９】
（付記１５）  前記仮想マシンイメージの前記不変部分はブートローダバイナリを有し、前記仮想マシンイメージの前記１つ以上のその他の部分は、オペレーティングシステムをインスタンス化するように構成されたオペレーティングシステムバイナリと、前記仮想マシンの前記オペレーティングシステム上で走るアプリケーションをインスタンス化するように構成されたアプリケーションバイナリとを有し、
当該ハードウェアシステムは更に、前記アプリケーションのトラストチェーンを、
前記ハードウェアトラストアンカーが、当該ハードウェアシステムの前記ブートローダバイナリを計測してブートローダメジャーメントを生成し、且つ前記ハードウェアトラストアンカーが、該ブートローダメジャーメントを前記機密メモリに格納し、
当該ハードウェアシステムの前記ブートローダバイナリからインスタンス化されたブートローダが、当該ハードウェアシステムの前記オペレーティングシステムバイナリを計測して第１のオペレーティングシステムメジャーメントを生成し、且つ当該ハードウェアシステムの前記ブートローダが、前記第１のオペレーティングシステムメジャーメントを前記機密メモリに格納し、
前記ハイパーバイザが前記仮想マシン内に前記トラストチェーンを構築し、
前記仮想マシンの前記ブートローダバイナリからインスタンス化されたブートローダが、前記仮想マシンイメージの前記オペレーティングシステムバイナリを測定して第２のオペレーティングシステムメジャーメントを生成し、且つ前記仮想マシンの前記ブートローダが、前記第２のオペレーティングシステムメジャーメントを前記機密メモリに格納し、且つ
前記仮想マシンの前記オペレーティングシステムが、前記アプリケーションバイナリを計測してアプリケーションメジャーメントを生成し、前記仮想マシンの前記オペレーティングシステムが、前記アプリケーションメジャーメントを前記機密メモリに格納する、
ことによって構築するように構成されている、
付記１３に記載のハードウェアシステム。
【００９０】
（付記１６）  前記ハイパーバイザは、前記仮想マシンイメージの前記不変部分を計測し、前記不変部分のハッシュ値を生成することによって前記トラストアンカーメジャーメントを生成するように構成される、付記１２に記載のハードウェアシステム。
【００９１】
（付記１７）  前記不変部分はブートローダバイナリを有し、前記ハイパーバイザは更に、ブートローダ情報データベースにクエリーして前記ブートローダバイナリの前記仮想マシンイメージ内での位置及びサイズを特定することによって、前記仮想マシン内にトラストチェーンを構築するように構成される、付記１２に記載のハードウェアシステム。
【００９２】
（付記１８）  １つ以上のハードウェアシステムを含む計算リソースプールであり、通信ネットワーク上でユーザにアクセス可能な計算リソースプールと、
複数の仮想マシンイメージであり、各仮想マシンイメージが前記計算リソースプール上の仮想マシンとしてインスタンス化するように構成され、且つ各仮想マシンイメージが不変部分と１つ以上のその他の部分とを含む、複数の仮想マシンイメージと、
前記計算リソースプール上にインストールされた１つ以上のハイパーバイザであり、各ハイパーバイザが、各仮想マシンに対して、
対応する仮想マシンイメージの前記不変部分を計測してトラストアンカーメジャーメントを生成し、且つ
該トラストアンカーメジャーメントを機密メモリに格納する
ことによって、複数の仮想マシンのうちの１つ以上内にトラストチェーンを構築するように構成された、１つ以上のハイパーバイザと、
を有するクラウドコンピューティングシステム。
【００９３】
（付記１９）  各仮想マシンイメージの前記不変部分はブートローダバイナリを有し、各仮想マシンイメージの前記１つ以上のその他の部分は、オペレーティングシステムをインスタンス化するように構成されたオペレーティングシステムバイナリと、該オペレーティングシステム上で走るアプリケーションをインスタンス化するように構成されたアプリケーションバイナリとを含み、各仮想マシンに関し、
前記ブートローダバイナリからインスタンス化されるブートローダが、前記オペレーティングシステムバイナリを計測してオペレーティングシステムメジャーメントを生成し、且つ該オペレーティングシステムメジャーメントを前記機密メモリに格納するように構成され、
前記オペレーティングシステムが、前記アプリケーションバイナリを計測してアプリケーションメジャーメントを生成し、且つ該アプリケーションメジャーメントを前記機密メモリに格納するように構成される、
付記１８に記載のクラウドコンピューティングシステム。
【００９４】
（付記２０）  当該クラウドコンピューティングシステムは、特定のソフトウェア攻撃の検出を可能にするよう、各仮想マシンのリモートアテステーションを対応するユーザに、
前記対応するユーザによる要求に応答して、対応するトラストアンカーメジャーメント、オペレーティングシステムメジャーメント及びアプリケーションメジャーメントを含むメジャーメントセットを、前記対応するユーザに提供する
ことによって提供するように構成され、
前記ユーザは、前記メジャーメントセットを前記ユーザに知られた予期されるメジャーメントと比較することによって、対応する仮想マシン上で不正なアプリケーションが実行されているか、又は対応するブートローダバイナリ、オペレーティングシステムバイナリ若しくはアプリケーションバイナリの何れかに不正な改竄が行われたか、を決定するように構成される、
付記１９に記載のクラウドコンピューティングシステム。
【符号の説明】
【００９５】
１００  動作環境
１０２  クラウドコンピューティングシステム
１０４  通信ネットワーク
１０６  ユーザ
１０８  計算リソースプール
１１０  ストレージ
１１２  ネットワーク及び／又はネットワーク装置
１１４  サーバ又はその他のコンピューティング装置
１１６  仮想基盤（仮想インフラ）
１１８  仮想マシン
１２０  オペレーティングシステム
１２２  アプリケーション
２００  ハードウェアシステム
２０２  ハードウェアリソース
２０４  中央演算処理装置（ＣＰＵ）
２０６  メモリ
２０８  ネットワークインタフェースコントローラ（ＮＩＣ）
２１０  トラストアンカー
２１２  ストレージ
２１４  仮想基盤（仮想インフラ）
２１６、２１８  仮想マシン
２２０、２２２  標準ハードウェア
２２４、２２６  オペレーティングシステム
２２８、２３０  アプリケーション
３００  ネットワークサーバ
３０２  プロセッサ
３０４  メモリ
３０６  スタートアップストレージ
３０８  プログラムストレージ
３１０  トラストアンカー
３１２  通信バス
３１４  トラストプロセッサ
３１６  機密メモリ
３１８Ａ  仮想マシンイメージ
３１８Ｂ  仮想マシン
３２０  起動チェーン
３２２  トラストチェーン
３２４  ブートローダ
３２８  オペレーティングシステム
３３２  ブートローダ
３３４  オペレーティングシステム
３３６  アプリケーション
５０２  ブートローダ情報データベース（ＢＬＩＤＢ）
５０４  ハイパーバイザ
５０６  機密メモリ
５０８  仮想マシンイメージ
５１０  ブートローダバイナリ
【図１】
0006044362.tif 000002
【図２】
0006044362.tif 000003
【図３Ａ】
0006044362.tif 000004
【図３Ｂ】
0006044362.tif 000005
【図４】
0006044362.tif 000006
【図５Ａ】
0006044362.tif 000007
【図５Ｂ】
0006044362.tif 000008