(58)【調査した分野】(Int.Cl.,DB名)
請求項1に記載のコンピュータで実施される方法において、前記特権付き動作が、前記ホストコンピューティング装置の前記仮想化レイヤの稼働メモリイメージを修正するリクエストである、前記コンピュータで実施される方法。
請求項12に記載のコンピューティングシステムにおいて、前記ホストコンピューティング装置が、許可された当事者に発行され、前記ホストコンピューティング装置に信用される証明機関によって署名された証明書に前記公開鍵が含まれる場合に、前記公開鍵を用いるように構成された、前記コンピューティングシステム。
【発明を実施するための形態】
【0005】
以降の説明において、種々の実施形態が、添付の図面の図において、限定としてではなく例示される。本開示における種々の実施形態への参照は、必ずしも同じ実施形態に対するものではなく、そのような参照は少なくとも1つを意味する。特定の実施例及び他の詳細が述べられるが、これは説明の目的のみでなされることが理解されるべきである。当業者であれば、特許請求の範囲の内容の範疇及び精神を逸脱することなく、他の構成要素及び構成も使用され得ることを認識するはずである。
【0006】
本開示の種々の実施形態によるシステム及び方法は、オペレーティングシステムカーネル及び/またはハイパーバイザのようなコンピューティングリソースにおいて特権付き動作を実行するとともにソフトウェアコードを修正するための従来の手法において経験された前述及び他の欠点の1以上を克服することができる。特に、種々の実施形態は、オペレーティングシステム(OS)カーネル及び/またはハイパーバイザ上で、特権付き動作が実行されるとともにコードが安全に付加または修正されることを可能とするために、非対称(または対称)暗号法などのセキュリティスキームを用いる一組の形式化されたインターフェイス(例えば、アプリケーション・プログラミング・インターフェイス(API))を提供する。これらのインターフェイスは、実行時に、セキュリティ監視、フォレンジックキャプチャ及び/またはパッチソフトウェアシステムを実行するように呼び出されることができる。
【0007】
従来的には、カーネル及び/またはハイパーバイザは、種々の処理及び構成要素がどのアクションを実行することを許可されているのか(例えば、アプリケーションがどのメモリ部分にアクセスできるのか)を規定するセキュリティ実施機構として作用する。カーネルまたはハイパーバイザが自由に修正されることが許可されたとすると、潜在的に悪意のあるエージェントが容易に自身にアクセスを付与して事実上あらゆるアクションを実行できてしまうので、システム全体のセキュリティが低下することになる。結果として、カーネル及びハイパーバイザは通常、意図的に、改変し難くされている。しかし、場合によっては、システムが稼働している間にこれらの構成要素を修正することが望ましいことがある。例えば、ハイパーバイザまたはカーネルは、パッチされる必要があるバグまたはエラーを有している場合があり、システム全体を再起動することなくそれらをパッチできれば有利である。これは、あるサービスプロバイダによって提供される単一のホストサーバが様々な顧客についての多数の仮想マシンインスタンスをホスティングし、各仮想マシンが、独立したカーネルなどを有するゲストオペレーティングシステムを含み得るマルチテナント共有型リソース環境(例えば、クラウドコンピューティング環境)において特に有用である。種々の実施形態において、本開示を通じて記載されるインターフェイス(例えば、API)は、他の多数の特権付き動作だけでなく、カーネル/ハイパーバイザのコードに対するアップデート及び他の修正を可能とすることができる。
【0008】
種々の実施形態によると、APIの組は、アプリケーション及び仮想マシンインスタンスをその顧客に代わってホスティングするマルチテナント共有型リソース環境のサービスプロバイダ(例えば、「クラウド」コンピューティングプロバイダ)によって実施されることができる。アプリケーション及び仮想マシンインスタンスが、サービスプロバイダによって所有及び操作される物理リソース(例えば、ホストコンピューティング装置及び他のネットワークリソース)上でホスティングされる。一実施形態によると、サービスプロバイダは、仮想マシンイメージを取得し、仮想マシンイメージに少なくともある程度基づいて、顧客に対する1以上の仮想マシンインスタンスをプロビジョンすることができる。一実施形態では、各仮想マシンインスタンスは、サービスプロバイダのコンピューティングリソース上にプロビジョンされた、それ自身のカーネル及びドライバを持つゲストオペレーティングシステムを含む。仮想マシンインスタンスは、プロビジョンされると、顧客の種々のアプリケーション及び/または他のサービスを実行する。
【0009】
一実施形態によると、各仮想マシンインスタンスは、ホストコンピューティング装置上にプロビジョンされる。各ホストコンピューティング装置は、1以上の仮想マシンインスタンスをホスティングすることができる。少なくとも一つの実施形態において、ホストコンピューティング装置は、ハードウェア装置のドライバ及び装置の他の物理リソースにアクセスを与え、1以上の仮想マシンインスタンスがこれらのリソースにアクセスすることを可能とするハイパーバイザをさらに含む。
【0010】
一実施形態によると、仮想マシンインスタンスがホストコンピューティング装置上でプロビジョンされると、仮想マシンのハイパーバイザ及び/若しくはカーネルのコードを更新し、またはハイパーバイザ若しくはカーネルに対応付けられた他の何らかの特権付き動作を実行するリクエストを提出するのに、ここに記載されるアプリケーション・プログラミング・インターフェイス(API)を使用することができる。許可のない者がこれらのインターフェイスを使用するのを防止するため、APIリクエストを署名するのに署名スキーム(例えば、非対称暗号法)が利用されてもよい。署名スキームは、秘密鍵及び対応する公開鍵を利用することができ、秘密鍵は、秘密鍵の所有者に対応付けられた署名を作成するのに使用されることができ、公開鍵は、リクエストを提出するエンティティが秘密鍵を所有していることを確かめるためにその署名を検証する(すなわち、リクエストを認証する)のに使用されることができる。一実施形態では、公開鍵はホストコンピューティング装置に提供され、秘密鍵はサービスプロバイダのネットワーク上の安全な場所に遠隔に格納される。カーネルまたはハイパーバイザのコードが修正される必要がある場合、特権付き動作がハイパーバイザまたはオペレーティングシステムカーネル上で実行されることを要求するリクエストがAPIを用いて開始されるようにしてもよい。この実施形態では、リクエストは秘密鍵を用いて署名される。ホストコンピューティング装置は、リクエストを受信すると、ホストコンピューティング装置に格納された公開鍵を用いてリクエストの署名を認証することを試みる。署名が正しく認証された場合、ホストコンピューティング装置は特権付き動作をハイパーバイザ及び/またはカーネル上で実行し、一方、公開鍵を用いてもリクエストの署名が正しく認証されない場合には、特権付き動作は失敗となる。
【0011】
他の実施形態では、APIとともに暗号化スキームが利用されてもよい。この実施形態では、ホストコンピューティング装置は、起動時に非対称鍵のペアを生成することができる。鍵のペアは、公開鍵及び秘密鍵を含んでいればよく、公開鍵は、リクエストを暗号化するのに使用されることができ、秘密鍵は、公開鍵を用いて暗号化されたリクエストを解読するのに使用されることができる。この実施形態では、下記のペアを生成した後、ホストコンピューティング装置が(例えば、証明機関または他の当事者に対して)公開鍵を公開する一方で、秘密鍵はホストコンピューティング装置に残り、ホストコンピューティング装置を離れることはない。この実施形態では、ホストコンピューティング装置は、公開鍵で暗号化されたリクエストを受信すると、その内部に格納された秘密鍵を用いてリクエストを解読することができる。このようにして、リクエストが暗号化されると、何者も、秘密鍵を所有することなくリクエストにおける情報を解読することはできない。さらに、公開鍵がCAに公開されると、いずれの要求元も、認証機関(CA)によって発行された証明書を検査することによって、公開鍵が確かにホストコンピューティング装置に属することを確認することができる。
【0012】
ある代替の実施形態では、APIに送信されたリクエストを安全化するのに対称暗号法が利用されてもよい。非対称暗号法とは逆に、対称暗号法は、リクエストに署名するのに使用される同じシークレットキーの所有権を署名者及びホストの双方が有していることを要することになる。双方当事者に保持される鍵は同一であってもよいし、または相互に鍵を導出する簡易な変換があってもよい。対称暗号法では、鍵は、ホストコンピューティング装置(例えば、カーネルまたはハイパーバイザ)とハイパーバイザ/カーネルのコードを修正することを望むいずれかの要求元との間の共有の秘密を表す。ある実施形態では、対称暗号法を可能とするために、各要求元が各ホストコンピューティング装置に対して異なる鍵を持つことになり、それはネットワーク上のシークレットキーの組合せの全てを管理する何らかのロジックを必要とすることになる。
【0013】
図1に、種々の実施形態による、特権付き動作を実行するためのAPIリクエストに署名するのに非対称暗号法を用いる実施例100を示す。図示する実施形態では、ホストコンピューティング装置101は、ハイパーバイザ102として示す仮想化レイヤ及びドメイン0(Dom0)105を含むことができる。Dom0 105及びハイパーバイザ102は、ゲスト111などの複数のゲストに逐次作用する。ゲストは、各々はそれら自身のそれぞれのオペレーティングシステム(OS)、カーネル、デバイス、ドライバ、スケジューラなどを有する仮想マシンインスタンスであればよい。図示される実施形態では、Dom−0 105は、他のゲストドメインをホストコンピューティング装置101上で起動及び管理するのに使用される。図では仮想化レイヤが個別の構成要素として示されているが、仮想化レイヤの他の実施例が可能であり、開示の範囲内である。例えば、Dom0の機能または機能の部分集合は、ハイパーバイザ102によって影響されるものと同様に、単一の構成要素に統合され得る。
【0014】
一実施形態では、ホストコンピューティング装置101は、ホストコンピューティング装置101のDom−0のカーネル106またはハイパーバイザ102のような仮想化レイヤ上で特権付き動作を実行するための署名及び/または暗号化されたリクエストを提出するのに用いることができる一組のAPI108を提供する。例示の動作は、ハイパーバイザ及び/またはカーネルの稼働メモリイメージを変更するための動作を含む。例えば、特権付き動作は、パッチをハイパーバイザ/カーネルに適用すること、メモリにおける位置を読み出すこと、ホストコンピューティング装置上で稼働する1以上の変数を修正すること、ホストコンピューティング装置上で稼働する仮想マシンインスタンスを起動/停止すること、仮想マシンを他のホストに移行することなどである。APIリクエストが署名及び/または暗号化されることができるので、カーネル/ハイパーバイザの外部の中間当事者は、リクエストを複製し及び/または読み出すことはできない。
【0015】
一実施形態によると、API108のリクエストは、秘密鍵及び公開鍵を含む非対称鍵のペアを用いて署名されることができる。一実施形態では、APIコールに対するアーギュメントの少なくとも一部(または全部)が標準化及びシリアル化され、署名文字列となる。そして、この文字列が、ハッシュに基づくメッセージ認証コード(HMAC)または非対称暗号法のいずれかを介して署名され、API108に送信される。APIに対するパラメータが署名に含まれるため、リクエスト(例えば、リクエストを作成したコード)を取得した潜在的な攻撃者がリクエストを改変することはできない。
【0016】
ある実施形態では、タイムウィンドウに基づく再生保護を与えるリクエストがタイムスタンプを含むようにしてもよく、制限された期間にのみリクエストが有効状態となる。ある実施形態では、リクエストは、シリアルナンバーまたはホストコンピューティング装置識別子(ID)のような、ホストコンピューティング装置101に具体的に対応付けられた固有値を含んでいてもよい。これらの値は秘密のものでなくてもよく、これらを含むことによって特定のホストコンピューティング装置108へのリクエストをバインディングすることができる。その場合、潜在的な攻撃者がリクエストを異なる装置に対して再生することが防止される。ある実施形態では、ホストコンピューティング装置に対するバインディングの強度を高めるために、リクエストが、ホストコンピューティング装置101におけるトラステッド・プラットフォーム・モジュール(TPM)(不図示)によって認証されるようにしてもよい。
【0017】
図示する実施形態によると、APIリクエストに署名するのに用いられる秘密鍵104は、リクエストが宛てられるホストコンピューティング装置101には存在しない。その代りに、秘密鍵104が、サービスプロバイダのネットワーク110上の安全な位置103または他の信用ある場所に格納されるようにしてもよい。結果として、悪意のあるエージェントがホストコンピューティング装置101上に存在していたとしても、それらは秘密鍵104を用いてリクエストを偽造することはできない。
【0018】
ホストコンピューティング装置101は、秘密鍵104を用いて署名されたリクエストの署名を認証するのに使用できる1以上の公開鍵(107、109)を含むことができる。一実施形態では、公開鍵107が、ホストコンピューティング装置101のカーネル106にコンパイルされるようにしてもよい。他の実施形態では、公開鍵109がハイパーバイザ102にコンパイルされるようにしてもよい。ある実施形態においては、カーネルが、ハイパーバイザに格納された公開鍵109とは異なる公開鍵107を格納するようにしてもよいし、他の実施形態においては、ハイパーバイザ及びカーネルの双方においてリクエストを認証するのに同じ公開鍵が用いられてもよい。さらに他の実施形態では、実際の公開鍵をホストコンピューティング装置101に格納するのではなく、その代わりにホストコンピューティング装置101が、特定の証明機関(CA)によって証明されたいずれかの公開鍵を信用するように構成されてもよい。これらの実施形態では、ホストコンピューティング装置は、要求元から、公開鍵を含む証明書付きのリクエストを受信することができる。ホストコンピューティング装置は、CAの証明書を信用するので、リクエストの一部として受信された公開鍵を信用することになる。公開鍵がホストコンピューティング装置に格納されるのか、証明書とともに提供されるのかにかかわらず、公開鍵は、秘密鍵104を用いて署名されたAPIリクエストの署名を認証するのに使用されることができる。例えば、ユーザ(例えば、顧客、サービスプロバイダの技術者、第三者など)は、カーネル106のコードの一部分にアップデートを適用したい場合、秘密鍵104の使用権を取得し、コードの適切な部分を修正するAPIリクエストに署名するのに秘密鍵104を用いることができる。リクエストを受信すると、カーネル106は、公開鍵を用いてリクエストの署名を認証することを試み、認証が成功した場合には必要な特権付き動作を実行することができる。
【0019】
代替の実施形態(不図示)では、HMAC及び対称鍵が利用される場合、シークレットキーがカーネルまたはハイパーバイザにコンパイルされるようにしてもよい。その場合、シークレットキーは、各ビルドで不明瞭化及び変更され得るが、鍵はホストコンピューティング装置101上に実際に存在することになる。選択的に、リクエスト自体が、それを発行するコードに対して不透明となるように、リクエスト全体が、カーネルにコンパイルされた鍵に暗号化され得る。
【0020】
ある実施形態では、リクエストとともに提供された特定の鍵に従って(または鍵を所有する当事者に従って)1以上の制限が課されるようにしてもよい。例えば、あるアクター(すなわち、ある秘密鍵)によって署名されたリクエストが、ゲスト仮想マシンをホスト上で起動/停止することまたはホストコンピューティング装置101を再起動することだけを許可されてもよい。他のアクター(例えば、サービスプロバイダのOSチーム)によって保持される鍵を用いて署名されたリクエストが、ハイパーバイザ102の稼働コードを修正することを許可されてもよい。一実施形態では、ホストコンピューティング装置101は、そこに記憶される複数の異なる公開鍵を有していてもよく、各公開鍵は、異なるエンティティ(例えば、ユーザ、チームなど)に対応付けられた秘密鍵に対応付けられる。どのエンティティの秘密鍵がリクエストの署名に使用されたかに応じて、要求された動作が許可または拒否されるようにしてもよい。代替の実施形態では、ホストコンピューティング装置101は、1つの秘密鍵に対応付けられた1つの公開鍵のみを格納することができるが、リクエストが、リクエストを提出するユーザのアイデンティティを含んでいてもよい。このアイデンティティに基づいて、ホストコンピューティング装置101は、要求された動作の実行について異なる制限を適用してもよい。例えば、ホストコンピューティング装置101が、あるユーザがゲストを起動/停止することを許可する一方で、他のユーザはハイパーバイザのコードを修正または更新することが許可されるようにしてもよい。任意数の(例えば、鍵毎の、または当事者毎の)そのような制限が可能であり、ここに記載される実施形態の範囲内のものとなる。
【0021】
図2に、種々の実施形態による、特権付き動作を仮想化レイヤ(例えば、ハイパーバイザ202及びDom−0 205)上で実行するのに利用できるAPIの実施例200を示す。実施形態に示すように、ホストコンピューティング装置201(例えば、ホストコンピューティング装置201上のDom−0 205及び/またはハイパーバイザ202)は、起動時間に非対称鍵のペアからなる暗号アイデンティティを生成する。例えば、ホストコンピューティング装置101が起動しているとき、ハイパーバイザ202は、秘密鍵207及び公開鍵209を含む鍵のペアを生成する。同様に、Dom−0 205が読み込まれているときに、カーネル206は、秘密鍵213及び公開鍵214からなる鍵のペアを生成することができる。
【0022】
種々の実施形態において、公開鍵(209、213)は、何らかの態様で公開されることができる。例えば、公開鍵は、証明機関210に提供されてもよい。代替的に、公開鍵は、要求元に直接提供されてもよい。この公開鍵が収集され、リクエストがこの鍵を用いて暗号化され得る。この実施形態では、ホストコンピューティング装置201によって生成された秘密鍵(207、214)は、ホストコンピューティング装置から離れることはなく、他のどこにも存在しない。要求元211がホスト201から公開鍵を信用のある形で入手できる場合、リクエストはホストコンピューティング装置201から離れることのない秘密鍵(207、213)によってしか解読され得ないため、公開鍵を用いて暗号化されたリクエストがそのホスト201(及びそのホストのみ)によってしか解読され得ないことを保証することができる。なお、
図2は、Dom0 205及びハイパーバイザ202の双方がそれら自身のそれぞれの鍵のペアを発行する実施例を示すが、これは全実施形態に対する要件または限定ではない。ある実施形態では、ハイパーバイザのみが鍵のペアを発行する。他の実施形態では、Dom−0のカーネルのみが鍵のペアを発行する。さらに他の実施形態では、ハイパーバイザ及びDom−0のカーネルが鍵のペアを共有できる。
【0023】
ある実施形態では、ホストコンピューティング装置201は、公開鍵209を証明機関(CA)210に提供することができる。CA210は、1以上のデジタル証明書(212、215)を適切な要求元(例えば、要求元211)に発行するエンティティとなることができる。デジタル証明書は、APIリクエストを暗号化するのに使用できる公開鍵を当事者が適切に所有していることを証明する。この実施形態では、CAの使用によって、秘密鍵が実際にホストコンピューティング装置201に対するものであることを、要求元がある程度の確度をもって信じることが可能となる。一実施形態では、CAは、サービスプロバイダに対するCAであり、サービスプロバイダのリソースセンター内で稼働する。リソースセンターは、以下に
図3を参照してより詳細に説明する。他の実施形態では、CA210は、要求元211(例えば、証明書の所有者)及び証明書に依拠するホスト201の双方によって信用される信用ある第三者である。証明機関はこの分野では周知であり、多くの公開鍵インフラ(PKI)スキームにおいて使用されている。
【0024】
この実施形態では、CA210が証明書212を要求元211に発行すると、要求元211は、証明書を用いて、カーネル206またはハイパーバイザ202のコンテキストにおいて特権付き動作を実行するためのAPIリクエストを作成することができる。そして、ハイパーバイザ202またはカーネル206は、特定の当事者に発行された特定のCAによって署名されたいずれかの証明書が有効であり、それに従って特権付き動作を実行できることを認証することができる。
【0025】
種々の実施形態において、
図2に示す技術が、
図1に示す技術との関連において用いられてもよい。例えば、
図2の要求元211は、要求元が特権付き動作を実行するリクエストに署名するのに使用できるそれ自身の秘密鍵を有していてもよい。この実施形態では、リクエストは、署名されて信頼性を確実にする(すなわち、ホストは、要求元がそのリクエストを生成したことを確度をもって知ることになる)とともに、暗号化されてプライバシーを確実にする(すなわち、リクエストに含まれる情報を解読し得る外部当事者はない)。
【0026】
図3に、種々の実施形態による、サービスプロバイダのリソースセンター環境の実施例300を示す。図示する実施形態では、サービスプロバイダ(例えば、クラウドコンピューティングリソースのプロバイダ)は、サービスプロバイダの物理リソース(例えば、ホストサーバなど)を格納する1以上のリソースセンター323(例えば、データセンター、サーバファームなど)を保持していてもよい。これらの物理リソースは、インターネットなどのネットワーク302を介してユーザ301に提供され得る多数のゲスト(例えば、仮想マシンインスタンス)をホスティングするのに使用されることができる。例えば、ユーザが、サービスプロバイダの物理リソースを用いてアプリケーションを実行したい場合に、彼または彼女が、アプリケーションを展開及び実行するのに使用される仮想マシンをユーザにプロビジョンするようサービスプロバイダに要求するようにしてもよい。ユーザのアプリケーションに対する要求が増加すると、ユーザは、負荷のバランスを採るように、より多くの仮想マシンがプロビジョンされることを要求し、1以上の仮想プライベートネットワーク(VPN)などの作成を要求することができる。
【0027】
図示する実施例では、サービスプロバイダのリソースセンター323は、ホストサーバ(306、307、308、309、310)の1以上のラック321及び322を含んでいてもよく、特定のラックの各ホストコンピューティング装置は、単一のトップ・オブ・ラック(TOR)スイッチ(304、305)に接続される。これらのTORスイッチは、ホストサーバがネットワークに接続されることを可能とする1以上の他のスイッチ(324、325)にさらに接続されもよい。この開示を通じて使用されるように、ネットワークは、相互に通信可能な装置の任意の有線または無線のネットワークであればよく、これらに限定されないが、インターネットまたは他の広域ネットワーク(WAN)、セルラネットワーク、ローカルエリアネットワーク(LAN)、ストレージエリアネットワーク(SAN)、イントラネット、エクストラネットなどを含む。リソースセンターは、データセンター、サーバファーム、コンテンツ配信ネットワーク(CDN)ポイント・オブ・プレゼンス(POP)などのような、リソースの物理的または論理的なグループ分けを含み得る。
【0028】
一実施形態によると、各ホストコンピューティング装置は、顧客に代わって種々のアプリケーション及びサービスを実行するためにサービスプロバイダの顧客に対してプロビジョンされた1以上のゲスト(例えば、仮想マシンインスタンス(313、314、315、316、317、318、319))をホスティングするのに使用される仮想化レイヤ(例えば、Dom−0との組合せにおけるハイパーバイザ)を含むことができる。各ゲスト(例えば、仮想マシン)は、カーネル、ドライバ、処理管理などを含むそれ自身のオペレーティングシステム(OS)とともにプロビジョンされることができる。
【0029】
顧客は、仮想マシンインスタンスを取得したいと望む場合、まず、彼らが使用したいゲスト(例えば、仮想マシン(VM))のタイプを示すリクエストをサービスプロバイダに提出すればよい。サービスプロバイダは、サービスプロバイダの物理リソース(例えば、ホストコンピューティング装置)にホスティングされるゲストをプロビジョンする処理を実行することができる。そして、ゲストは、顧客に代わって、サービスプロバイダのリソースを利用する種々のアプリケーション及びサービスを実行するのに用いることができる。
【0030】
一実施形態によると、ゲストが起動されて稼働すると、仮想化レイヤ(例えば、ハイパーバイザまたはカーネル)のコードに修正が適用されることを要する場合があり、または他の何らかの特権付き動作が実行されることを要する場合がある。例えば、サービスプロバイダは、ホストコンピューティング装置上のVMをホスティングするハイパーバイザのコードにパッチまたはアップデートを適用することを望むことがある。あるいは、顧客(または他の何らかの第三者)が、カーネルまたはハイパーバイザのコードにアップデートを適用することを望むことがある。種々の実施形態では、この開示を通じて記載されるAPIによって、ユーザが非対称(または対称)暗号法を利用することによって安全な態様でコードを修正することが可能となる。
【0031】
図4に、種々の実施形態による、ハイパーバイザまたはカーネルにおいて特権付き動作を実行するのに使用できるAPIを提供するための例示の処理400を示す。本図は機能的動作を特定のシーケンスで図示するが、処理は必ずしも図示される特定の順序または動作に限定されない。当業者であれば、当該または他の図に描かれた種々の動作が変更され、再構成され、並列に実行され、または種々の態様で適合され得ることを理解するはずである。またさらに、種々の実施形態の範囲から逸脱することなく、特定の動作または動作のシーケンスが処理に対して追加または省略され得ることも理解されるべきである。さらに、ここに含まれる処理の説明は、コード実行の実際のシーケンスを特定するのではなく、当業者に処理フローの概念を示すことを意図するものであり、それは、異なるフローまたはシーケンスとして実施され、実行のために最適化され、または種々の態様で修正され得る。
【0032】
動作401において、1以上のアプリケーション・プログラミング・インターフェイス(API)が提供され、それは、署名されたリクエストをホストコンピューティング装置に提出するのに使用できる。ホストコンピューティング装置は、仮想化レイヤ(例えば、仮想マシンモニタ、またはハイパーバイザとの組合せにおいて動作するDom0)及び1以上のゲスト(例えば、オペレーティングシステムカーネルを有するゲストオペレーティングシステムを稼働させる仮想マシン)を含んでいればよい。
【0033】
動作402において、秘密鍵及び対応する公開鍵を含む非対称鍵のペアが生成される。一実施形態では、非対称鍵のペアは、ホストコンピューティング装置上の仮想化レイヤによって生成される。他の実施形態では、非対称鍵のペアは、証明機関のような他のエンティティまたはサービスによって生成されてもよい。秘密鍵は、情報を暗号化するのに使用されることができ、公開鍵は、秘密鍵を用いて暗号化された情報を解読するのに使用されることができる。
【0034】
動作403において、公開鍵がホストコンピューティング装置に格納される。例えば、公開鍵は、仮想化レイヤ、例えばDom0に、またはハイパーバイザにコンパイルされればよい。あるいは、鍵は、ホストコンピューティング装置のトラステッド・プラットフォーム・モジュール(TPM)に格納されてもよい。
【0035】
動作404において、秘密鍵が、ホストコンピューティング装置の外部にある安全な場所に格納される。この実施形態では、秘密鍵は、そこに駐在するいずれの悪意あるエージェントも秘密鍵にアクセスすることができないように、ホストコンピューティング装置上には存在しない。
【0036】
動作405において、ホストコンピューティング装置が、仮想化レイヤ上で特権付き動作を実行することを要求するリクエストをAPI上で受信する。一実施形態によると、受信されたリクエストは秘密鍵を用いて署名される。
【0037】
動作406において、仮想化レイヤ(例えば、カーネルまたはハイパーバイザ)が、ホストコンピューティング装置に格納された公開鍵を用いてリクエストの署名を有効化することを試みる。リクエストの署名が有効化される場合、処理407に示すように、特権付き動作がハイパーバイザ/カーネル上で実行されることができる。公開鍵を用いても署名が正しく有効化されない場合、特権付き動作は失敗に終わる(すなわち、実行されない)。
【0038】
図5に、種々の実施形態による、公開鍵を用いて暗号化されたリクエストを解読するためのホストコンピューティング装置の例示の処理500を示す。
【0039】
動作501において、ホストコンピューティング装置が非対称鍵のペアを生成する。例えば、ホストコンピューティング装置における起動処理が、公開鍵及び対応する秘密鍵を生成することができる。動作502において、公開鍵が、信用あるソースに公開される。一実施形態では、公開鍵を用いてリクエストを暗号化する要求元に公開鍵が直接提供されてもよい。他の実施形態では、公開鍵が証明機関に提供されてもよく、証明機関が、カーネルまたはハイパーバイザ上で特権付き動作を実行することを望む認証された当事者に証明書を付与するようにしてもよい。この実施形態では、証明機関が、証明書に公開鍵を埋め込み、それ自身の秘密鍵を用いて証明書に署名するようにすればよい。したがって、証明書を受信した当事者は、公開鍵がホストコンピューティング装置からのものであることがCAによって実際に証明されることを確認することができる。
【0040】
動作504において、ホストコンピューティング装置が、特権付き動作を実行するリクエストを受信する。そして、動作505に示すように、ホストコンピューティング装置は、ホストコンピューティング装置に格納された秘密鍵を用いてリクエストを解読することを試みる。秘密鍵を用いてリクエストが解読される場合、動作506に示すように、ホストコンピューティング装置は、特権付き動作をカーネル/ハイパーバイザ上で実行することができる。
【0041】
本開示の種々の実施形態を、以下の条項を以て説明することができる。
1.仮想化されたコンピューティング環境においてソフトウェア修正を安全にするためにコンピュータで実施される方法であって、
実行可能な命令で構成される1以上のコンピュータシステムの制御下で、
ホストコンピューティング装置に提出されたリクエストを受信するように構成された少なくとも1つのアプリケーション・プログラミング・インターフェイス(API)を提供することを含み、前記ホストコンピューティング装置が、1以上のゲストをホスティングするように構成された仮想化レイヤを含むものであり、
さらに、
情報を解読するのに使用されることができる公開鍵を前記ホストコンピューティング装置に格納することを含み、前記情報を暗号化するのに使用されることができる対応の秘密鍵が前記ホストコンピューティング装置の外部の安全な場所に格納されており、
さらに、
前記ホストコンピューティング装置の前記仮想化レイヤにおいて特権付き動作を実行するためのリクエストであって前記安全な場所に格納された前記秘密鍵を用いて署名された前記リクエストを、前記APIを介して前記ホストコンピューティング装置によって受信すること、及び
前記公開鍵を用いて前記リクエストの署名が正しく有効化される場合に前記特権付き動作を前記仮想化レイヤによって実行し、前記公開鍵を用いても前記リクエストの署名が正しく有効化されない場合に前記特権付き動作が失敗に終わること
を含む、コンピュータで実施される方法。
2.条項1のコンピュータで実施される方法において、前記リクエストが、前記ホストコンピューティング装置に対応付けられた固有値をさらに含み、前記署名を有効化することが、前記リクエストに含まれる前記固有値が前記ホストコンピューティング装置に割り当てられた固有値に一致すると判定することをさらに含む、前記コンピュータで実施される方法。
3.条項1のコンピュータで実施される方法において、前記リクエストが、前記ホストコンピューティング装置の前記仮想化レイヤに対応付けられた暗号アイデンティティの一部である第2の公開鍵を用いて暗号化され、前記暗号アイデンティティが、前記第2の公開鍵及び該第2の公開鍵を用いて暗号化された前記リクエストを解読するのに使用される第2の秘密鍵を含む鍵のペアを含むものである、前記コンピュータで実施される方法。
4.条項1のコンピュータで実施される方法において、前記リクエストが、制限された期間のみ前記リクエストが有効とされるようにするタイムスタンプをさらに含む、前記コンピュータで実施される方法。
5.条項1のコンピュータで実施される方法において、前記公開鍵を前記ホストコンピューティング装置に格納することが、
証明機関によって発行された証明書を受信することをさらに含み、前記証明書が前記公開鍵を含むものである、前記コンピュータで実施される方法。
6.コンピュータで実施される方法であって、
実行可能な命令で構成される1以上のコンピュータシステムの制御下で、
ホストコンピューティング装置の起動動作中に、公開鍵及び秘密鍵を含む非対称鍵のペアを生成すること、
前記公開鍵を公開すること、
前記ホストコンピューティング装置の仮想化レイヤにおいて特権付き動作を実行するためのリクエストであって少なくとも前記公開鍵によって安全化される前記リクエストを受信すること、
前記ホストコンピューティング装置の前記仮想化レイヤによって前記リクエストを認証すること、及び
前記ホストコンピューティング装置の前記仮想化レイヤにおいて前記特権付き動作を実行すること
を含む、コンピュータで実施される方法。
7.条項6のコンピュータで実施される方法において、前記リクエストが、前記ホストコンピューティング装置の遠隔に格納された第2の秘密鍵を用いて署名され、前記リクエストの署名が、前記ホストコンピューティング装置に利用可能な第2の公開鍵を用いて有効化される、前記コンピュータで実施される方法。
8.条項6のコンピュータで実施される方法であって、
前記ホストコンピューティング装置の前記仮想化レイヤにアクセス可能な揮発性メモリのみに前記秘密鍵を記憶することをさらに含む、前記コンピュータで実施される方法。
9.条項6のコンピュータで実施される方法において、前記公開鍵を公開することが、
前記公開鍵を証明書に埋め込むように構成された証明機関(CA)に証明書署名リクエストを送信することをさらに含む、前記コンピュータで実施される方法。
10.条項6のコンピュータで実施される方法において、前記ホストコンピューティング装置に送信された前記リクエストが前記公開鍵を用いて暗号化され、前記ホストコンピューティング装置が、該ホストコンピューティング装置に格納された前記秘密鍵を用いて前記リクエストを解読するよう動作可能である、前記コンピュータで実施される方法。
11.条項6のコンピュータで実施される方法において、前記特権付き動作が、前記ホストコンピューティング装置の前記仮想化レイヤの稼働メモリイメージを修正するリクエストである、前記コンピュータで実施される方法。
12.条項6のコンピュータで実施される方法において、前記特権付き動作が、
前記ホストコンピューティング装置上のハイパーバイザまたはカーネルの少なくとも一方にパッチを適用すること、
前記ホストコンピューティング装置にホスティングされるゲストのメモリにおける場所を読み出すこと、
前記ホストコンピューティング装置上で稼働する1以上の変数を修正すること、または
前記ホストコンピューティング装置上で稼働するゲストをシャットダウン若しくは再起動すること
のリクエストである、前記コンピュータで実施される方法。
13.条項6のコンピュータで実施される方法において、前記秘密鍵が、前記ホストコンピューティング装置のトラステッド・プラットフォーム・モジュール(TPM)に格納される、前記コンピュータで実施される方法。
14.条項6のコンピュータで実施される方法において、前記リクエストが、
前記リクエストが有効な状態である期間を制限するタイムスタンプ、または
前記ホストコンピューティング装置に対応付けられた固有値
の少なくとも一方をさらに含む、前記コンピュータで実施される方法。
15.条項6のコンピュータで実施される方法において、前記公開鍵が、前記公開鍵を所有する当事者に付与された一組の特権付き動作に対応付けられ、前記リクエストを認証することが、前記特権付き動作が前記組に含まれると判定することを含む、前記コンピュータで実施される方法。
16.コンピューティングシステムであって、
少なくとも1つのプロセッサ、及び
前記プロセッサによって実行されると、前記コンピューティングシステムに、
ホストコンピューティング装置の仮想化レイヤ上で特権付き動作を実行するためのリクエストであって少なくとも1つの鍵を用いて安全化される前記リクエストを、アプリケーション・プログラミング・インターフェイス(API)を介して受信させ、
前記ホストコンピューティング装置の前記仮想化レイヤによって前記リクエストを認証することを試行させ、
前記リクエストが正しく認証された場合に前記ホストコンピューティング装置の前記仮想化レイヤにおいて前記特権付き動作を実行させる命令
を含むメモリ
を備えたコンピューティングシステム。
17.条項16のコンピューティングシステムにおいて、前記リクエストが、前記ホストコンピューティング装置の遠隔に格納された秘密鍵を用いて生成された署名によって安全化され、前記リクエストが、前記ホストコンピューティング装置に利用可能な公開鍵を用いて認証される、前記コンピューティングシステム。
18.条項17のコンピューティングシステムにおいて、前記ホストコンピューティング装置が、許可された当事者に発行され、前記ホストコンピューティング装置に信用される証明機関によって署名された証明書に前記公開鍵が含まれる場合に前記公開鍵を用いるように構成された、前記コンピューティングシステム。
19.条項16のコンピューティングシステムにおいて、前記ホストコンピューティング装置が、起動すると、
第2の公開鍵及び第2の秘密鍵を含む非対称鍵のペアを生成し、
前記第2の公開鍵を公開し、前記第2の秘密鍵を前記ホストコンピューティング装置の揮発性メモリに記憶する
ように構成された、前記コンピューティングシステム。
20.条項19のコンピューティングシステムにおいて、前記第2の公開鍵を公開することが、
証明書署名リクエストを証明機関に送信して前記第2の公開鍵を証明書にバインディングすることをさらに含む、前記コンピューティングシステム。
21.非一時的コンピュータ可読記憶媒体であって、
少なくとも1つの仮想化レイヤを含むホストコンピューティング装置にリクエストを提出するインターフェイスを提供し、
前記ホストコンピューティング装置の前記仮想化レイヤ上で特権付き動作を実行するためのリクエストであって少なくとも1つの鍵を用いて安全化された前記リクエストを、前記インターフェイスを用いて受信し、前記安全化されたリクエストが前記ホストコンピューティング装置の前記仮想化レイヤで認証されることができるものであり、
前記ホストコンピューティング装置の前記仮想化レイヤによって前記リクエストを認証することを試行し、
前記リクエストが正しく認証される場合に前記ホストコンピューティング装置の前記仮想化レイヤにおいて前記特権付き動作を実行する、
1以上のプロセッサによって実行可能な命令の1以上のシーケンスを記憶する非一時的コンピュータ可読記憶媒体。
22.条項21の非一時的コンピュータ可読記憶媒体において、前記リクエストが、前記ホストコンピューティング装置の遠隔に格納された署名秘密鍵を用いて署名され、前記リクエストの署名が、前記ホストコンピューティング装置に利用可能な署名公開鍵を用いて有効化される、前記非一時的コンピュータ可読記憶媒体。
23.条項22の非一時的コンピュータ可読記憶媒体において、前記ホストコンピューティング装置が、許可された当事者に発行されて前記ホストコンピューティング装置に信用される証明機関によって署名された証明書に前記署名公開鍵が含まれる場合に前記署名公開鍵を用いるように構成された、前記非一時的コンピュータ可読記憶媒体。
24.条項21の非一時的コンピュータ可読記憶媒体において、前記1以上のプロセッサによって実行可能な前記命令が、
前記1以上のプロセッサに、
公開鍵及び秘密鍵を含む非対称鍵のペアを、前記ホストコンピューティング装置の起動手順中に生成させ、
前記公開鍵を公開させ、前記秘密鍵を前記ホストコンピューティング装置に格納させる
命令をさらに備える、前記非一時的コンピュータ可読記憶媒体。
25.条項24の非一時的コンピュータ可読記憶媒体において、前記公開鍵を公開することが、
証明書署名リクエストを証明機関に送信して前記公開鍵を証明書に添付することをさらに含む、前記非一時的コンピュータ可読記憶媒体。
【0042】
図6に、例示のコンピューティング装置600の一組の概略構成要素の論理構成を示す。本実施例では、装置は、メモリ装置、すなわち要素604に記憶され得る命令を実行するためのプロセッサ602を含む。当業者には明らかなように、装置は、プロセッサ602による実行のためのプログラム命令のための第1のデータストレージ、画像またはデータのための別個のストレージ、情報を他の装置と共有するためのリムーバブルメモリなどといった多種のメモリ、データストレージまたは非一時的コンピュータ可読記憶媒体を含むことができる。ポータブルメディアプレーヤのような装置は、オーディオスピーカを介するなど、他の手段を介して情報を伝達し得るが、装置は、通常、タッチパネルまたは液晶ディスプレイ(LCD)のような何らかの形式のディスプレイ要素606を含む。上述のように、多数の実施形態における装置は、ユーザからの通常の入力を受けることができる少なくとも1つの入力要素608を含む。この通常の入力は、例えば、押しボタン、タッチパッド、タッチパネル、ホイール、ジョイスティック、キーボード、マウス、キーパッド、またはユーザが指令を装置に入力できるような他のデバイス若しくは要素を含み得る。一方、ある実施形態では、そのようなデバイスはボタンを全く含んでいなくてもよく、ユーザが装置に触れることを要することなく装置を制御できるように、視聴コマンドの組合せを介してのみ制御されるようにしてもよい。ある実施形態では、
図5のコンピューティング装置600は、Wi−Fi(登録商標)、Bluetooth(登録商標)、RF、有線または無線通信システムを介して通信するための1以上のネットワークインターフェイス要素608を含むことができる。多数の実施形態における装置は、インターネットのようなネットワークと通信することができ、そのような他の装置と通信するようにしてもよい。
【0043】
上述のように、記載される実施形態による種々の環境において異なる手法が実施されてもよい。例えば、
図7に、種々の実施形態による形態を実施するための環境700の一例を示す。記載から理解できるように、ウェブベースの環境が説明の目的で用いられるが、種々の実施形態を実施するのに異なる環境が適宜用いられてもよい。システムは、電子クライアント装置702を含み、それは、リクエスト、メッセージまたは情報を適宜のネットワーク704を介して送受信して情報を装置のユーザに戻すように動作可能なあらゆる適宜の装置を含むことができる。そのようなクライアント装置の例として、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージング装置、ラップトップコンピュータ、セットトップボックス、パーソナルデータアシスタント、電子書籍リーダなどがある。ネットワークは、イントラネット、インターネット、セルラネットワーク、ローカルエリアネットワーク若しくは他のそのようなネットワークまたはそれらの組合せを含むあらゆる適宜のネットワークを含み得る。このようなシステムに使用される構成要素は、選択されるネットワーク及び/または環境のタイプに少なくともある程度依存していてもよい。そのようなネットワークを介して通信するためのプロトコル及び構成要素は周知であり、ここでは詳細には説明しない。ネットワークを介した通信は、有線または無線接続及びその組合せを介して可能となる。この実施例では、当業者には明らかなように、他のネットワークについては同様の目的を果たす代替の装置が使用され得るが、リクエストを受信してそれに応じてコンテンツを提供するウェブサーバ706が環境に含まれるので、ネットワークはインターネットを含む。
【0044】
例示の実施形態は、少なくとも1つのアプリケーションサーバ708及びデータストア710を含む。なお、いくつかのアプリケーションサーバ、レイヤまたは他の要素、処理または構成要素があってもよく、これらはつなげられ、あるいは構成されていてもよく、データを適切なデータストアから取得するといったようなタスクを実行するよう相互作用し得ることが理解されるべきである。ここで使用される用語「データストア」とは、データを記憶、利用及び取得することができるあらゆる装置または装置の組合せをいい、それらは、あらゆる標準的な、分散された、または集合化された環境において、あらゆる組合せ及び個数のデータサーバ、データベース、データ記憶装置及びデータ記憶媒体を含み得る。アプリケーションサーバは、クライアント装置についての1以上のアプリケーションの形態を必要に応じて実行するデータストアと統合されるとともにアプリケーションに対するデータアクセス及びビジネスロジックの大部分を扱うためのあらゆる適切なハードウェア及びソフトウェアを含み得る。アプリケーションサーバは、データストアとの協働においてアクセス制御サービスを提供し、ユーザに転送されるテキスト、グラフィクス、オーディオ及び/またはビデオのようなコンテンツを生成することができ、これらは、HTML、XML、またはこの実施例における他の適切な構造化言語の形態でウェブサーバによってユーザに提供されることができる。クライアント装置702とアプリケーションサーバ708との間の全てのリクエスト及び応答の取扱いは、コンテンツの配信と同様に、ウェブサーバ706によって取り扱われることができる。なお、ここに説明する構造化コードは、いずれかの箇所で説明したあらゆる適切な装置またはホストコンピューティング装置で実行されることができるので、ウェブ及びアプリケーションサーバは、要件ではなく単なる例示の構成要素であることが理解されるべきである。
【0045】
データストア710は、特定の形態に関係するデータを記憶するための、いくつかの個別のデータテーブル、データベースまたは他のデータ記憶機構及び媒体を含み得る。例えば、図示するデータストアは、製造側に対してコンテンツを提供するのに使用され得る製造データ712及びユーザ情報716を記憶するための機構を含む。データストアはまた、ログまたはセッションデータ714を記憶するための機構を含むように示されている。なお、ページ画像情報及びアクセス権情報のように、データストアに記憶される必要がある他の多くの形態があり、これらは適宜上述の機構のいずれかに、またはデータストア710における追加の機構に記憶され得ることが理解されるべきである。データストア710は、それに対応付けられたロジックを介して、アプリケーションサーバ708から命令を受信し、それに応じてデータを取得、更新または処理するよう動作可能である。一実施例では、ユーザは、特定タイプのアイテムについての検索リクエストを提出し得る。この場合、データストアはユーザ情報にアクセスしてユーザのアイデンティティを認証し、カタログ詳細情報にアクセスしてそのタイプのアイテムについての情報を取得することができる。そして、その情報は、ユーザがユーザ装置702のブラウザを介して見ることができるウェブページ上の結果リストなどにおいて、ユーザに戻されればよい。対象となる特定アイテムについての情報は、ブラウザの専用ページまたはウィンドウにおいて見ることができる。
【0046】
各サーバは、通常は、そのサーバの一般的な管理及び動作についての実行可能なプログラム命令を提供するオペレーティングシステムを含み、通常は、サーバのプロセッサによって実行されたときに、サーバが意図する機能を実行することを可能とする命令を記憶するコンピュータ可読記憶媒体を含む。サーバのオペレーティングシステムのための適切な実施例及びサーバの一般的な機能は知られており、または市販されており、特に本開示に照らして当業者には容易に実施される。
【0047】
一実施形態における環境は、1以上のコンピュータネットワークまたは直接の接続を用いて、通信リンクを介して相互接続されるいくつかのコンピュータシステム及び構成要素を利用する分散コンピュータ環境である。しかし、当業者であれば、そのようなシステムが、
図7に示すものよりも少ない、または多い構成要素を有するシステムでも同様に動作し得ることを理解するであろう。したがって、
図7におけるシステム700の図示は、本質的に例示的なものであって本開示の範囲を限定しないものとして捉えられるべきである。
【0048】
ここに説明及び提案する種々の実施形態は、広範な動作環境で実施されることができ、場合によっては、多数のアプリケーションのいずれかを動作させるのに使用できる1以上のユーザコンピュータ、コンピューティング装置または処理装置を含んでいればよい。ユーザまたはクライアント装置は、標準的なオペレーティングシステムを稼働させるデスクトップまたはラップトップコンピュータのような多数の汎用パーソナルコンピュータのいずれか、同様にモバイルソフトウェアを稼働させるとともに多数のネットワーキング及びメッセージングプロトコルに対応できるセルラ、無線及びハンドヘルド装置を含むことができる。そのようなシステムは、開発及びデータベース管理といった目的のための様々な市販のオペレーティングシステム及び他の周知のアプリケーションのいずれかを稼働させる多数のワークステーションも含むことができる。これらの装置は、ダミー端末、シンクライアント、ゲームシステム、及びネットワークを介して通信することができる他の装置といったような他の電子装置も含むことができる。
【0049】
ほとんどの実施形態は、TCP/IP、OSI、FTP、UPnP、NFS、CIFS及びAppleTalkのような様々な市販のプロトコルのいずれかを用いる通信に対応するために、当業者にはよく知られた少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外ネットワーク、無線ネットワーク、及びこれらのいずれかの組合せであればよい。
【0050】
ウェブサーバを用いる実施形態では、ウェブサーバは、HTTPサーバ、FTPサーバ、CGIサーバ、データサーバ、Java(登録商標)サーバ及びビジネスアプリケーションサーバを含む様々なサーバまたはミッドティアアプリケーションのいずれかを稼働させることができる。サーバは、Java(登録商標)、C、C#若しくはC++のような任意のプログラミング言語またはPerl、Python若しくはTCLのような任意のスクリプティング言語、またそれらの組合せで書かれた1以上のスクリプトまたはプログラムとして実施できる1以上のウェブアプリケーションを実行するなどして、ユーザ装置からのリクエストに応じてプログラムまたはスクリプトを実行することもできる。サーバは、限定することなく、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)及びIBM(登録商標)から市販されているデータベースサーバを含んでいればよい。
【0051】
環境は、上述した様々なデータストア並びに他のメモリ及び記憶媒体を含むことができる。これらは、1以上のコンピュータにローカルな(及び/または常駐する)またはネットワークにわたるいずれか若しくは全てのコンピュータから遠隔にある記憶媒体上など、様々な場所に常駐することができる。特定の組の実施形態では、情報は、当業者にはよく知られた記憶エリアネットワーク(SAN)に常駐し得る。同様に、コンピュータ、サーバまたは他のネットワーク装置に帰属する機能を実行するために必要なファイルは、ローカルに、及び/または遠隔に適宜記憶される。コンピュータ化された装置をシステムが含む場合、そのような装置の各々は、バスを介して電気的に結合され得るハードウェア要素、例えば少なくとも中央処理装置(CPU)を含む要素、少なくとも1つの入力装置(例えば、マウス、キーボード、コントローラ、タッチパネルまたはキーパッド)及び少なくとも1つの出力装置(例えば、表示装置、プリンタまたはスピーカ)を含むことができる。そのようなシステムは、ディスクドライブ、光学記憶装置、及びランダムアクセスメモリ(RAM)または読出し専用メモリ(ROM)のような固体記憶装置、リムーバブル媒体装置、メモリカード、フラッシュカードなどの1以上の記憶装置を含むこともできる。
【0052】
そのような装置は、コンピュータ可読記憶媒体リーダ、通信装置(例えば、モデム、ネットワークカード(有線または無線)、赤外通信装置など)及び上述した動作するメモリを含んでいてもよい。コンピュータ可読記憶媒体リーダは、遠隔、ローカル、固定及び/またはリムーバブル記憶装置を代表するコンピュータ可読記憶媒体、同様に一時的に及び/またはより永久的にコンピュータ可読情報を含み、記憶し、送信し、及び取得するための記憶媒体に接続され、またはそれを受けるように構成されていればよい。システム及び種々の装置は、通常は、クライアントアプリケーションまたはウェブブラウザのようなオペレーティングシステム及びアプリケーションプログラムを含む多数のソフトウェアアプリケーション、モジュール、サービスまたは少なくとも1つの動作するメモリ装置内に位置する他の要素も含む。なお、代替の実施形態が、上述したものからの多数の変形例を有し得ることが理解されるべきである。例えば、カスタマイズされたハードウェアが使用されてもよいし、及び/または特定の要素がハードウェア、(アプレットのような可搬のソフトウェアを含む)ソフトウェア若しくはその両方で実施されてもよい。また、ネットワーク入力/出力装置などの他のコンピューティング装置への接続が採用されてもよい。
【0053】
コードまたはコードの一部分を含む記憶媒体及びコンピュータ可読媒体は、この分野で知られまたは使用される任意の適切な媒体を含むことができ、その媒体は、RAM、ROM、EEPROM(登録商標)、フラッシュメモリ若しくは他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)若しくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶装置、または所望の情報を記憶するのに使用でき、システム装置によってアクセスできる他のあらゆる媒体を含む、コンピュータ可読命令、データ構造体、プログラムモジュールまたは他のデータのような情報の記憶及び/または伝送のためのあらゆる方法または技術において実施される、これらに限定されないが、揮発性の及び不揮発性の、取外し可能な及び取外し可能でない記憶媒体及び通信媒体を含む。ここで与えられる開示及び技術に基づいて、当業者は、種々の実施形態を実施する他の態様及び/または方法を理解するはずである。
【0054】
したがって、明細書及び図面は、限定的な意味ではなく、例示的なものとしてみなされるべきである。一方、特許請求の範囲に記載される発明の、より広い精神及び範囲から逸脱することなく、種々の変形及び変更がなされ得ることは明らかである。
以下に、本願出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
コンピュータで実施される方法であって、
実行可能な命令で構成される1以上のコンピュータシステムの制御下で、
ホストコンピューティング装置の起動動作中に、公開鍵及び秘密鍵を含む非対称鍵のペアを生成すること、
前記公開鍵を公開すること、
前記ホストコンピューティング装置の仮想化レイヤにおいて特権付き動作を実行するためのリクエストであって少なくとも前記公開鍵によって安全化される前記リクエストを受信すること、
前記ホストコンピューティング装置の前記仮想化レイヤによって前記リクエストを認証すること、及び
前記ホストコンピューティング装置の前記仮想化レイヤにおいて前記特権付き動作を実行すること
を含む、コンピュータで実施される方法。
[C2]
[C1]に記載のコンピュータで実施される方法において、前記リクエストが、前記ホストコンピューティング装置の遠隔に格納された第2の秘密鍵を用いて署名され、前記リクエストの署名が、前記ホストコンピューティング装置に利用可能な第2の公開鍵を用いて有効化される、前記コンピュータで実施される方法。
[C3]
[C1]に記載のコンピュータで実施される方法であって、
前記ホストコンピューティング装置の前記仮想化レイヤにアクセス可能な揮発性メモリのみに前記秘密鍵を記憶することをさらに含む、前記コンピュータで実施される方法。
[C4]
[C1]に記載のコンピュータで実施される方法において、前記公開鍵を公開することが、
前記公開鍵を証明書に埋め込むように構成された証明機関(CA)に証明書署名リクエストを送信することをさらに含む、前記コンピュータで実施される方法。
[C5]
[C1]に記載のコンピュータで実施される方法において、前記ホストコンピューティング装置に送信された前記リクエストが前記公開鍵を用いて暗号化され、前記ホストコンピューティング装置が、該ホストコンピューティング装置に格納された前記秘密鍵を用いて前記リクエストを解読するよう動作可能である、前記コンピュータで実施される方法。
[C6]
[C1]に記載のコンピュータで実施される方法において、前記特権付き動作が、前記ホストコンピューティング装置の前記仮想化レイヤの稼働メモリイメージを修正するリクエストである、前記コンピュータで実施される方法。
[C7]
[
C1]に記載のコンピュータで実施される方法において、前記特権付き動作が、
前記ホストコンピューティング装置上のハイパーバイザまたはカーネルの少なくとも一方にパッチを適用すること、
前記ホストコンピューティング装置にホスティングされるゲストのメモリにおける場所を読み出すこと、
前記ホストコンピューティング装置上で稼働する1以上の変数を修正すること、または
前記ホストコンピューティング装置上で稼働するゲストをシャットダウン若しくは再起動すること
のリクエストである、前記コンピュータで実施される方法。
[C8]
[
C1]に記載のコンピュータで実施される方法において、前記秘密鍵が、前記ホストコンピューティング装置のトラステッド・プラットフォーム・モジュール(TPM)に格納される、前記コンピュータで実施される方法。
[C9]
[C1]に記載のコンピュータで実施される方法において、前記リクエストが、
前記リクエストが有効な状態である期間を制限するタイムスタンプ、または
前記ホストコンピューティング装置に対応付けられた固有値
の少なくとも一方をさらに含む、前記コンピュータで実施される方法。
[C10]
[C1]に記載のコンピュータで実施される方法において、前記公開鍵が、前記公開鍵を所有する当事者に付与された一組の特権付き動作に対応付けられ、前記リクエストを認証することが、前記特権付き動作が前記組に含まれると判定することを含む、前記コンピュータで実施される方法。
[C11]
コンピューティングシステムであって、
少なくとも1つのプロセッサ、及び
前記プロセッサによって実行されると、前記コンピューティングシステムに、
ホストコンピューティング装置の仮想化レイヤ上で特権付き動作を実行するためのリクエストであって少なくとも1つの鍵を用いて安全化される前記リクエストを、アプリケーション・プログラミング・インターフェイス(API)を介して受信させ、
前記ホストコンピューティング装置の前記仮想化レイヤによって前記リクエストを認証することを試行させ、
前記リクエストが正しく認証された場合に前記ホストコンピューティング装置の前記仮想化レイヤにおいて前記特権付き動作を実行させる命令
を含むメモリ
を備えたコンピューティングシステム。
[C12]
[C11]に記載のコンピューティングシステムにおいて、前記リクエストが、前記ホストコンピューティング装置の遠隔に格納された秘密鍵を用いて生成された署名によって安全化され、前記リクエストが、前記ホストコンピューティング装置に利用可能な公開鍵を用いて認証される、前記コンピューティングシステム。
[C13]
[C12]に記載のコンピューティングシステムにおいて、前記ホストコンピューティング装置が、許可された当事者に発行され、前記ホストコンピューティング装置に信用される証明機関によって署名された証明書に前記公開鍵が含まれる場合に前記公開鍵を用いるように構成された、前記コンピューティングシステム。
[C14]
[C11]に記載のコンピューティングシステムにおいて、前記ホストコンピューティング装置が、起動すると、
第2の公開鍵及び第2の秘密鍵を含む非対称鍵のペアを生成し、
前記第2の公開鍵を公開し、前記第2の秘密鍵を前記ホストコンピューティング装置の揮発性メモリに記憶する
ように構成された、前記コンピューティングシステム。
[C15]
[C14]に記載のコンピューティングシステムにおいて、前記第2の公開鍵を公開することが、
証明書署名リクエストを証明機関に送信して前記第2の公開鍵を証明書にバインディングすることをさらに含む、前記コンピューティングシステム。