(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-20
(45)【発行日】2023-11-29
(54)【発明の名称】セキュアなオペレーティング・システム・イメージのインクリメンタル復号および完全性検証
(51)【国際特許分類】
G06F 21/14 20130101AFI20231121BHJP
G06F 21/60 20130101ALI20231121BHJP
G06F 21/64 20130101ALI20231121BHJP
G06F 21/53 20130101ALI20231121BHJP
【FI】
G06F21/14
G06F21/60 320
G06F21/64
G06F21/53
(21)【出願番号】P 2021546786
(86)(22)【出願日】2020-02-17
(86)【国際出願番号】 EP2020054101
(87)【国際公開番号】W WO2020182420
(87)【国際公開日】2020-09-17
【審査請求日】2022-07-25
(32)【優先日】2019-03-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ブエントゲン、ラインハルト
(72)【発明者】
【氏名】ボーントレーガー、クリスチャン
(72)【発明者】
【氏名】ブラッドベリー、ジョナサン
(72)【発明者】
【氏名】ブサバ、ファディ
(72)【発明者】
【氏名】ヘラー、リサ
(72)【発明者】
【氏名】ミハイロフスキ、ヴィクトール
【審査官】宮司 卓佳
(56)【参考文献】
【文献】米国特許出願公開第2018/0247082(US,A1)
【文献】米国特許出願公開第2016/0132345(US,A1)
【文献】米国特許出願公開第2014/0208109(US,A1)
【文献】特開2012-190441(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/14
G06F 21/60-21/64
G06F 21/53
(57)【特許請求の範囲】
【請求項1】
コンピューティング環境内でのセキュアな処理を容易にするコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリに結合されたプロセッサと
を備え、前記コンピュータ・システムが、方法を実行するように構成されており、前記方法が、
セキュアなオペレーティング・システム・イメージをインクリメンタルに復号すること
を含み、
前記インクリメンタルに復号することが、前記セキュアなオペレーティング・システム・イメージの複数のページのうちのページについて、
前記ページのページ・アドレスと、前記ページの暗号化中に使用されたトゥイーク値とを受け取ること、
前記トゥイーク値が、前記セキュアなオペレーティング・システム・イメージの前記複数のページのうちの別のページの復号中に以前に使用されたもの
であるか否かを判定すること、および
前記トゥイーク値が、以前に使用されたものでないと判定された場合に、復号されたセキュアなオペレーティング・システム・イメージを取得することを容易にするために、前記ページを暗号化する際に使用されたイメージ暗号化鍵と前記トゥイーク値とを使用して、前記ページ・アドレスにあるメモリ・ページ内容を復号すること
を含み、
前記方法がさらに、
前記セキュアなオペレーティング・システム・イメージの完全性を検証すること、ならびに
前記セキュアなオペレーティング・システム・イメージの完全性を検証したことに基づいて、前記復号されたセキュアなオペレーティング・システム・イメージの実行を開始すること
を含む、
コンピュータ・システム。
【請求項2】
前記インクリメンタルに復号すること、および前記完全性を検証することが、前記コンピュータ・システムのセキュア・インタフェース制御によって実行され、前記セキュア・インタフェース制御が、前記コンピュータ・システムの信頼できるエンティティであり、前記ページ・アドレスおよび前記トゥイーク値が、前記セキュア・インタフェース制御によってハイパーバイザから受け取られる、請求項1に記載のコンピュータ・システム。
【請求項3】
前記複数のページのページ・アドレスの順序が固定されており、前記セキュアなオペレーティング・システム・イメージをインクリメンタルに復号することが、前記ページ・アドレスが、前記セキュアなオペレーティング・システム・イメージの前記複数のページのうちの以前に復号されたページのうちのどの以前のページ・アドレスとも異なっている
か否かを判定することを含
み、
前記メモリ・ページ内容を復号することは、前記トゥイーク値が、以前に使用されたものでないと判定され、かつ前記ページ・アドレスが、どの以前のページ・アドレスとも異なっていると判定された場合に行う、請求項1または2に記載のコンピュータ・システム。
【請求項4】
前記完全性を検証することが、部分的に、前記複数のページのメモリ・ページ内容を使用して取得された累積内容ハッシュ、および前記複数のページのページ・アドレスを使用して取得された累積アドレス・ハッシュを使用することを含む、請求項1ないし
3のいずれか一項に記載のコンピュータ・システム。
【請求項5】
前記セキュアなオペレーティング・システム・イメージの完全性を検証することが、
前記複数のページのメモリ・ページ内容を使用して取得された累積内容ハッシュを、前記セキュア・インタフェース制御によって受け取られた完全性内容ハッシュと比較すること、および
前記複数のページのページ・アドレスを使用して取得された累積アドレス・ハッシュを、前記セキュア・インタフェース制御によって受け取られた完全性アドレス・ハッシュと比較することを含む、請求項
2に記載のコンピュータ・システム。
【請求項6】
前記セキュア・インタフェース制御によって、前記イメージ暗号化鍵、ならびに前記完全性内容ハッシュおよび前記完全性アドレス・ハッシュを、ハイパーバイザから受け取ったメタデータから抽出することをさらに含む、請求項
5に記載のコンピュータ・システム。
【請求項7】
前記セキュア・インタフェース制御が、前記コンピュータ・システムの1つまたは複数の要素を含み、前記1つまたは複数の要素が、ハードウェア要素およびファームウェア要素からなるグループから選択されたものであり、前記セキュアなオペレーティング・システム・イメージが、前記コンピューティング環境内でセキュアなゲスト・オペレーティング・システムとして実行される、請求項
2、5および6のいずれか一項に記載のコンピュータ・システム。
【請求項8】
前記コンピュータ・システムに秘密鍵-公開鍵対が関連づけられており、前記秘密鍵が、前記セキュア・インタフェース制御だけに知られており、前記コンピュータ・システム上で実行しているソフトウェアによってアクセス可能ではなく、前記公開鍵が、前記セキュアなオペレーティング・システム・イメージを暗号化するために使用された前記イメージ暗号化鍵を前記セキュア・インタフェース制御にセキュアに伝達するための鍵アグリーメント・データを生成するため、および前記鍵アグリーメント・データをメタデータ構造に記憶するために、前記セキュアなオペレーティング・システム・イメージの所有者によって使用される、請求項
2、5、6および7のいずれか一項に記載のコンピュータ・システム。
【請求項9】
前記セキュア・インタフェース制御によって、前記メタデータ構造を、ハイパーバイザからの呼出しを用いて受け取ることをさらに含み、前記メタデータ構造が、前記セキュアなオペレーティング・システム・イメージの完全性を検証する際に使用される完全性ハッシュ値をさらに含む、請求項
8に記載のコンピュータ・システム。
【請求項10】
コンピュータ・プログラムであって、
前記コンピュータ・プログラムはコンピュータに、
セキュアなオペレーティング・システム・イメージをインクリメンタルに復号すること
を実行させ、
前記インクリメンタルに復号することが、前記セキュアなオペレーティング・システム・イメージの複数のページのうちのページについて、
前記ページのページ・アドレスと、前記ページの暗号化中に使用されたトゥイーク値とを受け取ること、
前記トゥイーク値が、前記セキュアなオペレーティング・システム・イメージの前記複数のページのうちの別のページの復号中に以前に使用されたもの
であるか否かを判定すること、および
前記トゥイーク値が、以前に使用されたものでないと判定された場合に、復号されたセキュアなオペレーティング・システム・イメージを取得することを容易にするために、前記ページを暗号化する際に使用されたイメージ暗号化鍵と前記トゥイーク値とを使用して、前記ページ・アドレスにあるメモリ・ページ内容を復号すること
を含み、
前記コンピュータにさらに、
前記セキュアなオペレーティング・システム・イメージの完全性を検証すること、ならびに
前記セキュアなオペレーティング・システム・イメージの完全性を検証したことに基づいて、前記復号されたセキュアなオペレーティング・システム・イメージの実行を開始すること
を実行させる、
コンピュータ・プログラム。
【請求項11】
前記複数のページのページ・アドレスの順序が固定されており、前記セキュアなオペレーティング・システム・イメージをインクリメンタルに復号することが、前記ページ・アドレスが、前記セキュアなオペレーティング・システム・イメージの前記複数のページのうちの以前に復号されたページのうちのどの以前のページ・アドレスとも異なっている
か否かを判定することを含
み、
前記メモリ・ページ内容を復号することは、前記トゥイーク値が、以前に使用されたものでないと判定され、かつ前記ページ・アドレスが、どの以前のページ・アドレスとも異なっていると判定された場合に行う、請求項
10に記載のコンピュータ・プログラム。
【請求項12】
前記完全性を検証することが、部分的に、前記複数のページのメモリ・ページ内容を使用して取得された累積内容ハッシュ、および前記複数のページのページ・アドレスを使用して取得された累積アドレス・ハッシュを使用することを含む、請求項
11に記載のコンピュータ・プログラム。
【請求項13】
前記セキュアなオペレーティング・システム・イメージの完全性を検証することが、前記累積内容ハッシュを
、セキュア・インタフェース制御によって受け取られた完全性内容ハッシュと比較することを含む、請求項
12に記載のコンピュータ・プログラム。
【請求項14】
前記セキュアなオペレーティング・システム・イメージの完全性を検証することが、前記累積アドレス・ハッシュを、前記セキュア・インタフェース制御によって受け取られた完全性アドレス・ハッシュと比較することをさらに含む、請求項
13に記載のコンピュータ・プログラム。
【請求項15】
前記イメージ暗号化鍵、ならびに前記完全性内容ハッシュおよび前記完全性アドレス・ハッシュを、ハイパーバイザから受け取ったメタデータから抽出することをさらに含む、請求項
14に記載のコンピュータ・プログラム。
【請求項16】
コンピュータ実施方法であって、
セキュアなオペレーティング・システム・イメージをインクリメンタルに復号すること
を含み、
前記インクリメンタルに復号することが、前記セキュアなオペレーティング・システム・イメージの複数のページのうちのページについて、
前記ページのページ・アドレスと、前記ページの暗号化中に使用されたトゥイーク値とを受け取ること、
前記トゥイーク値が、前記セキュアなオペレーティング・システム・イメージの前記複数のページのうちの別のページの復号中に以前に使用されたもの
であるか否かを判定すること、および
前記トゥイーク値が、以前に使用されたものでないと判定された場合に、復号されたセキュアなオペレーティング・システム・イメージを取得することを容易にするために、前記ページを暗号化する際に使用されたイメージ暗号化鍵と前記トゥイーク値とを使用して、前記ページ・アドレスにあるメモリ・ページ内容を復号すること
を含み、
前記方法がさらに、
前記セキュアなオペレーティング・システム・イメージの完全性を検証すること、ならびに
前記セキュアなオペレーティング・システム・イメージの完全性を検証したことに基づいて、前記復号されたセキュアなオペレーティング・システム・イメージの実行を開始すること
を含む、
コンピュータ実施方法。
【請求項17】
前記インクリメンタルに復号すること、および前記完全性を検証することが、ホスト・コンピュータ・システムのセキュア・インタフェース制御によって実行され、前記セキュア・インタフェース制御が信頼できるエンティティであり、使用される前記ページ・アドレスおよび前記トゥイーク値が、前記セキュア・インタフェース制御によってハイパーバイザから受け取られる、請求項
16に記載のコンピュータ実施方法。
【請求項18】
前記複数のページのページ・アドレスの順序が固定されており、前記セキュアなオペレーティング・システム・イメージをインクリメンタルに復号することが、前記ページ・アドレスが、前記セキュアなオペレーティング・システム・イメージの前記複数のページのうちの以前に復号されたページのうちのどの以前のページ・アドレスとも異なっている
か否かを判定することを含み、
前記メモリ・ページ内容を復号することは、前記トゥイーク値が、以前に使用されたものでないと判定され、かつ前記ページ・アドレスが、どの以前のページ・アドレスとも異なっていると判定された場合に行う、請求項
16または
17に記載のコンピュータ実施方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピューティング環境内でのセキュアな処理に関する。
【背景技術】
【0002】
ゲスト・オペレーティング・システムは、インストールされたオペレーティング・システム・ソフトウェア、例えば仮想機械(virtual machine)上にインストールされたオペレーティング・システム・ソフトウェアのことを指す。コンピューティングにおいて、仮想機械は、コンピュータ・システムのエミュレーションである。ハイパーバイザによって生み出すことができる仮想機械は、コンピュータ・アーキテクチャに基づき、物理コンピュータの機能を提供する。仮想機械の実装形態は、専用ハードウェア、ソフトウェアまたはそれらの組合せを含みうる。仮想化技術は、コンピュータが、2つ以上のオペレーティング・システムを一度に実行させることを可能にする。
【0003】
現在のコンピューティング環境において、オペレーティング・システムなどのシステム・ソフトウェアは、実行されるアプリケーションおよびデータの全体を制御するものであるため、信頼できるものでなければならない。従来、オペレーティング・システム(およびハイパーバイザ)は、任意のアプリケーションのデータにアクセスすることもしくは任意のアプリケーションのデータを変更することができ、または、検出されることなく、アプリケーションによって実装されたセキュリティ特徴を潜在的に改竄することができる。したがって、基礎をなすこのソフトウェアは、トラステッド・コンピューティング・ベース(trusted computing base)の部分であるべきである。
【0004】
共用環境(shared environment)において、アプリケーション顧客(application customer)は、そのシステム・ソフトウェアを開発、構成、デプロイおよび制御するエンティティが悪意あるエンティティではないと信じることを強制される。顧客アプリケーションはさらに、特権を拡大し、アプリケーション情報の完全性(integrity)を危うくする攻撃に対してそのシステム・ソフトウェアが難攻不落であると信じなければならない。この幅広い信頼要件は、時に、例えばパブリック・クラウド・サービスを採用しているアプリケーション顧客については特に、正当化することが困難であることがあり、かなりのリスクをはらむ。
【発明の概要】
【0005】
コンピューティング環境内でのセキュアな処理を容易にするコンピュータ・システムの提供によって、先行技術のある種の短所が解決され、追加の利点が提供される。このコンピュータ・システムは、メモリと、このメモリに結合されたプロセッサとを含み、このコンピュータ・システムは、方法を実行するように構成されている。この方法は、セキュアなオペレーティング・システム・イメージ(secure operating system image)をインクリメンタルに(incrementally)復号することを含む。インクリメンタルに復号することは、セキュアなオペレーティング・システム・イメージの複数のページのうちのページについて、そのページのページ・アドレスと、そのページの暗号化中に使用されたトゥイーク値(tweak value)とを受け取ること、トゥイーク値が、セキュアなオペレーティング・システム・イメージの複数のページのうちの別のページの復号中に以前に使用されたものではないと判定すること、および復号されたセキュアなオペレーティング・システム・イメージを取得することを容易にするために、イメージ暗号化鍵とトゥイーク値とを使用して、ページ・アドレスにあるメモリ・ページ内容を復号することを含む。この方法はさらに、セキュアなオペレーティング・システム・イメージの完全性を検証すること、およびセキュアなオペレーティング・システム・イメージの完全性を検証したことに基づいて、復号されたセキュアなオペレーティング・システム・イメージの実行を開始することを含む。有利には、イメージ暗号化鍵および(初期化ベクトル(initialization vector)とも呼ばれる)固有のトゥイーク値を使用して別々に暗号化されている、セキュアなオペレーティング・システム・イメージの複数のページのインクリメンタル復号(incremental decryption)が、コンピューティング環境内のセキュリティを、例えば、セキュアなオペレーティング・システム・イメージの統計的解析によって有意味のデータが取得されることを防ぐことによって強化する。さらに、「発明の概要」の項に示された手法は、異なる位置に記憶されたデータが異なって暗号化されていることも許容する。
【0006】
1つまたは複数の実施形態では、インクリメンタルに復号すること、および完全性を検証することが、コンピュータ・システムのセキュア・インタフェース制御(secure interface control)によって実行される。セキュア・インタフェース制御は、コンピュータ・システムのセキュアで信頼できるエンティティ(entity)であり、ページ・アドレスおよびトゥイーク値は、セキュア・インタフェース制御によってハイパーバイザから受け取られる。有利には、このセキュア・インタフェース制御がセキュアな実行環境を提供する。このセキュアな実行環境では、ゲスト・オペレーティング・システムのメモリおよびセキュアな仮想機械内で実行しているそのアプリケーションが、ハイパーバイザ、ならびに他の仮想機械およびその仮想機械と同じホスト・システム上で実行している一切のプログラムから保護される。
【0007】
1つまたは複数の実施形態では、複数のページのページ・アドレスの順序が固定されており(例えば下位から上位の順序であり)、セキュアなオペレーティング・システム・イメージをインクリメンタルに復号することが、ページ・アドレスが、セキュアなオペレーティング・システム・イメージの複数のページのうちの以前に復号されたページのうちのどの以前のページ・アドレスとも異なっている(例えば順序が下位から上位の場合には、どの以前のページ・アドレスよりも大きい)と判定することを含む。さらに、1つまたは複数の実施態様では、セキュアなオペレーティング・システム・イメージをインクリメンタルに復号することが、トゥイーク値が、セキュアなオペレーティング・システム・イメージの複数のページのうちの以前に復号されたページの復号中に使用されたどの以前のトゥイーク値とも異なっている(例えば下位から上位の順序の場合には、どの以前のトゥイーク値よりも大きい)と判定することをさらに含む。
【0008】
一実施形態では、完全性を検証することが、部分的に、複数のページのメモリ・ページ内容を使用して取得された累積の(cumulative)内容ハッシュ(以後、累積内容ハッシュ)、および複数のページのページ・アドレスを使用して取得された累積のアドレス・ハッシュ(以後、累積アドレス・ハッシュ)を使用することを含む。例えば、セキュアなオペレーティング・システム・イメージの完全性を検証することは、累積内容ハッシュを、ハイパーバイザからのメタデータとともにセキュア・インタフェース制御によって受け取られた完全性内容ハッシュと比較すること、および累積アドレス・ハッシュを、ハイパーバイザからのメタデータとともにセキュア・インタフェース制御によって受け取られた完全性アドレス・ハッシュと比較することを含むことができる。例えば、セキュア・インタフェース制御は、完全性内容ハッシュおよび完全性アドレス・ハッシュ、ならびにイメージ暗号化鍵を、ハイパーバイザから受け取ったメタデータから抽出することができる。有利には、セキュア・インタフェース制御、すなわちホスト・システムのセキュア・エンティティは、改竄されたイメージの実行を防止するために、オペレーティング・システム・イメージの完全性を検証することができる。この目的のため、メモリ・ページの内容から計算されたハッシュ値、およびオペレーティング・システム・イメージのメモリ・ページ・アドレスのリストからのハッシュ値を使用し、それらのハッシュ値を、ページ・アドレスの順に提供された内容およびアドレスの対応するそれぞれの完全性ハッシュ値と比較する。この点に関して、ページ・アドレスの順序を下位から上位とすることは、トゥイーク有効性チェックと完全性チェックの両方を容易にすることに留意されたい。上述のプロセスを使用するメモリ・ページは連続している必要がないことにも留意されたい。
【0009】
1つまたは複数の実施形態では、セキュア・インタフェース制御がコンピュータ・システムのファームウェア要素を含み、セキュアなオペレーティング・システム・イメージが、コンピューティング環境内でセキュアなゲスト・オペレーティング・システム・イメージとして実行される。1つまたは複数の特定の実施形態では、コンピュータ・システムに秘密鍵-公開鍵対が関連づけられており、秘密鍵が、セキュア・インタフェース制御だけに知られており、コンピュータ・システム上で実行しているソフトウェアによってアクセス可能ではなく、公開鍵が、セキュアなオペレーティング・システム・イメージを暗号化するために使用されたイメージ暗号化鍵をセキュア・インタフェース制御にセキュアに伝達するための鍵アグリーメント・データ(key agreement data)を生成するため、および鍵アグリーメント・データをメタデータ構造に記憶するために、セキュアなオペレーティング・システム・イメージの所有者によって使用される。メタデータ構造は、セキュア・インタフェース制御がハイパーバイザからの呼出しを用いて受け取ることができる。メタデータ構造は、セキュアなオペレーティング・システム・イメージの完全性を検証する際に使用される完全性ハッシュ値をさらに含むことができる。有利には、このプロセスが結果として、セキュアな実行環境を与える。このセキュアな実行環境では、セキュアなオペレーティング・システム・イメージの機密性(confidentiality)が維持され、同時に、オペレーティング・システムの完全性が検証される。このプロセスでは、シークレット鍵(secret key)、すなわちイメージ暗号化鍵が、セキュアなオペレーティング・システム・イメージの所有者によって選ばれ、オペレーティング・システムの全ての構成要素、およびオペレーティング・システム・イメージがブートされた後にオペレーティング・システム・イメージによって使用されるレスト状態のデータ(data at rest)は暗号化されていると仮定される。
【0010】
本明細書では、1つまたは複数の態様に関係したコンピュータ・プログラム製品およびコンピュータ実施方法(computer-implemented method)も説明されており、特許請求されている。さらに、本明細書では、1つまたは複数の態様に関係するサービスも説明されており、それらのサービスが特許請求されている場合もある。
【0011】
本発明の技術によって、追加の特徴および利益が実現される。本明細書には、本発明の他の実施形態および態様が詳細に記載されており、それらは、特許請求されている発明の部分とみなされる。
【0012】
本発明の1つまたは複数の態様は、本明細書の末尾の特許請求の範囲に例として具体的に示されており、明確に特許請求されている。本発明の上記の目的、特徴および利点ならびにその他の目的、特徴および利点は、添付図面とともに解釈される以下の詳細な説明から明らかである。
【図面の簡単な説明】
【0013】
【
図1】本発明の1つまたは複数の態様による、セキュアなオペレーティング・システム・イメージの復号および完全性検証(integrity verification)の1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の一例を示す図である。
【
図2】本発明の1つまたは複数の態様による、セキュアなオペレーティング・システム・イメージのインクリメンタル復号および完全性検証のプロセスの一実施形態を示す図である。
【
図3A】本発明の1つまたは複数の態様による、セキュアなオペレーティング・システム・イメージのロード後の仮想機械(VM)のメモリ内容の一実施形態を示す図である。
【
図3B】本発明の1つまたは複数の態様による、インクリメンタル復号および完全性検証プロセスに従ってセキュアなオペレーティング・システム・イメージをアンパック(unpack)するために使用されるメタデータの一実施形態を示す図である。
【
図4A】本発明の1つまたは複数の態様による、インクリメンタル復号および完全性検証プロセスに従った、ゲスト・アドレス空間、ハイパーバイザおよびウルトラバイザ(ultravisor)(またはセキュア・インタフェース制御)のデータ構造およびオペレーションを示す、イメージ・アンパック開始プロセスの一実施形態を示す図である。
【
図4B】本発明の1つまたは複数の態様による、
図4Aのゲスト・アドレス空間、ハイパーバイザおよびウルトラバイザ間のアンパック・プロセスの一実施形態のさらなる詳細を示す図である。
【
図4C】本発明の1つまたは複数の態様による、オペレーティング・システム・イメージのアンパックの完了後の、
図4Aおよび4Bのゲスト・アドレス空間、ハイパーバイザおよびウルトラバイザの一実施形態を示す図である。
【
図5A】本発明の1つまたは複数の態様による、セキュアなオペレーティング・システム・イメージのインクリメンタル復号および完全性検証の一例を示す図である。
【
図5B】本発明の1つまたは複数の態様による、セキュアなオペレーティング・システム・イメージのインクリメンタル復号および完全性検証の一例を示す図である。
【
図6A】本発明の1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の別の例を示す図である。
【
図6B】本発明の1つまたは複数の態様による、
図6Aのメモリのさらなる詳細を示す図である。
【
図7】クラウド・コンピューティング環境の一実施形態を示す図である。
【発明を実施するための形態】
【0014】
本発明の一態様によれば、コンピューティング環境内でのセキュアな処理を容易にする能力が提供される。一例では、この能力が、セキュアなオペレーティング・システム・イメージをページごとにインクリメンタルに復号することを含み、それぞれのページは、イメージ暗号化鍵すなわちシークレット鍵および対応するそれぞれの固有のトゥイーク値を使用して暗号化されていると仮定される。インクリメンタルに復号することは、特定のページに対する固有のトゥイーク値が、セキュアなオペレーティング・システム・イメージの別のページの復号中に以前に使用されたものではないと判定することを含む。さらに、イメージの暗号化されたページの復号に対応して、セキュアなオペレーティング・システム・イメージの完全性検証が実行される。さらに、セキュアなオペレーティング・システム・イメージの完全性を検証したことに基づいて、イメージの実行が開始される。
【0015】
本明細書に開示されたものなどのインクリメンタル復号および完全性検証プロセスの1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の一例を、
図1を参照して説明する。
図1を参照すると、一例では、コンピューティング環境100が、米ニューヨーク州Armonkのインターナショナル・ビジネス・マシーンズ・コーポレーション(IBM(登録商標))によって提供されているz/Architecture(登録商標)に基づく。z/Architecture(登録商標)は、"z/Architecture Principles of Operation," IBM(登録商標) Publication No. SA22-7832-11, 12th edition, September 2017という表題のIBM(登録商標)刊行物に記載されおり、この刊行物は、参照によってその全体が本明細書に組み込まれている。z/Architecture、IBM、Z/VMおよびZ/OS(本明細書で参照されている)は、米ニューヨーク州Armonkのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で使用されている他の名称が、インターナショナル・ビジネス・マシーンズ・コーポレーションまたは他の企業の登録商標、商標または商品名であることがある。
【0016】
別の例では、このコンピューティング環境が、米ニューヨーク州Armonkのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されているPower Architecture(登録商標)に基づく。Power Architecture(登録商標)の一実施形態が、 "Power ISATM Version 2.07B," International Business Machines Corporation, April 9, 2015に記載されおり、この文献は、参照によってその全体が本明細書に組み込まれている。Power Architectureは、米ニューヨーク州Armonkのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。
【0017】
コンピューティング環境100は、仮想機械サポートを提供する中央処理装置複合体(central processor complex)(CPC)102を含む。CPC102は、1つまたは複数の制御ユニット108を介して1つまたは複数の入力/出力(I/O)デバイス106に結合されている。中央処理装置複合体102は、例えば、プロセッサ・メモリ104(主メモリ、主ストレージ、中央ストレージとしても知られている)を含み、プロセッサ・メモリ104は、1つまたは複数の中央処理装置(中央処理ユニット(CPU)としても知られている)110および入力/出力サブシステム111に結合されている。これらについてはそれぞれ後に説明する。
【0018】
プロセッサ・メモリ104は、例えば、1つまたは複数の仮想機械112、仮想機械を管理するハイパーバイザ114などの仮想機械マネージャ、ウルトラバイザ115(またはセキュア・インタフェース制御)、およびプロセッサ・ファームウェア116を含む。ハイパーバイザ114の一例は、米ニューヨーク州Armonkのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されているz/VM(登録商標)である。ハイパーバイザは、時にホストと呼ばれる。さらに、本明細書で使用されるとき、ファームウェアは、例えば、プロセッサのマイクロコードもしくはミリコードまたはその両方を含む。ファームウェアは、例えば、より高水準の機械コードの実装において使用されるハードウェアレベル命令もしくはデータ構造またはその両方を含む。一実施形態では、このファームウェアが例えば、信頼できるソフトウェアを含むマイクロコードまたは基礎をなすハードウェアに対する特定のマイクロコードとして通常は配信されるプロプライエタリ・コード(proprietary code)を含み、システム・ハードウェアへのオペレーティング・システム・アクセスを制御する。1つまたは複数の実施形態では、このセキュア・インタフェース制御(ウルトラバイザ115)を、例えば本明細書に記載されたプロセスなどを実行するように構成されたハードウェアもしくはファームウェアまたはその両方に、少なくとも部分的に実装することができる。
【0019】
CPCの仮想機械サポートは、それぞれが、異なるプログラム120とともに動作すること、およびLinux(登録商標)などのゲスト・オペレーティング・システム122を実行させることができる、多数の仮想機械112を動作させる能力を提供する。それぞれの仮想機械112は、別個のシステムとして機能することができる。すなわち、それぞれの仮想機械を独立してリセットすることができ、それぞれの仮想機械が、ゲスト・オペレーティング・システムを実行させることができ、それぞれの仮想機械が、異なるプログラムとともに動作することができる。仮想機械内で実行しているオペレーティング・システムまたはアプリケーション・プログラムは、システムの全体にアクセスできるように見えるが、実際には、システムの一部分だけが使用可能である。
【0020】
プロセッサ・メモリ104は、中央処理装置(CPU)110に結合されており、CPU110は、仮想機械に割当て可能な物理プロセッサ・リソースである。例えば、仮想機械112は、1つまたは複数の論理プロセッサを含み、その1つまたは複数の論理プロセッサはそれぞれ、仮想機械に動的に割り振ることができる物理プロセッサ・リソース110の全部または一部を表す。
【0021】
さらに、一実施形態では、それぞれのCPU110が、処理コア(コアとしても知られている)132内で実行されるハードウェア・スレッドである。コアは1つまたは複数のスレッドを含み、この例では、コア132が4つのハードウェア・スレッドを含む。他の例では、コンピューティング環境が1つまたは複数のコアを含むことができ、それぞれのコアが、1つまたは複数のハードウェア・スレッドを含むことができる。
【0022】
さらに、プロセッサ・メモリ104はI/Oサブシステム111に結合されている。入力/出力サブシステム111は、入力/出力制御ユニット108およびデバイス106と主ストレージ104との間の情報の流れを指図する。入力/出力サブシステム111は、中央処理装置複合体に結合されており、入力/出力サブシステム111は、中央処理装置複合体の部分とすることができ、または中央処理装置複合体とは別個のものとすることができる。
【0023】
特定の1つの例では、仮想機械のモデルがV=Vモデルであり、このモデルでは、仮想機械の実メモリまたは絶対メモリが、実メモリまたは絶対メモリの代わりにホスト仮想メモリによって支援される。仮想機械はそれぞれ、連続した仮想メモリ空間を有する。物理リソースは、ハイパーバイザ・ホスト114によって管理され、共用物理リソースは、ゲスト・オペレーティング・システムの処理要求を達成するために、必要に応じて、ホストによってゲスト・オペレーティング・システムにディスパッチされる。このV=V仮想機械(すなわちページ可能(pageable)ゲスト)モデルは、ゲスト・オペレーティング・システムと共用物理機械リソースとの間のインタラクションがホストによって制御されることを仮定している。これは、これらの多数のゲストが通常、ホストが、ハードウェア・リソースを単純に区分化すること、および、ホストが、構成されたゲストにハードウェア・リソースを割り当てることを妨げるためである。
【0024】
上述のとおり、メモリ104は、I/Oサブシステム111に結合されている。I/Oサブシステム111は、中央処理装置複合体の部分とすることができ、または中央処理装置複合体とは別個のものとすることができる。I/Oサブシステム111は、主ストレージ104と、中央処理装置複合体に結合された入力/出力制御ユニット108および入力/出力(I/O)デバイス106との間の情報の流れを指図する。
【0025】
多くのタイプのI/Oデバイスを使用することができる。特定の1つのタイプのI/Oデバイスがデータ・ストレージ・デバイス140である。データ・ストレージ・デバイス140は、1つもしくは複数のプログラム142、1つもしくは複数のコンピュータ可読プログラム命令144、またはデータ、あるいはこれらの組合せなどを記憶することができる。このコンピュータ可読プログラム命令を、本発明の態様の実施形態の機能を実行するように構成することができる。
【0026】
それに加えて、またはその代わりに、本発明の態様の実施形態の機能を実行するように構成されたコンピュータ可読プログラム命令を、メモリ104に含めることもできる。多くの変形形態が可能である。
【0027】
本明細書に開示されているとおり、ゲスト・オペレーティング・システムのメモリおよびセキュアな仮想機械内で実行しているそのアプリケーションは、信頼できないハイパーバイザ、ならびに他の仮想機械およびその仮想機械と同じホスト・システム上で実行している一切のプログラムから保護される。この保護は、セキュアなホスト・システムのハードウェア要素もしくはファームウェア要素またはその両方を含む、信頼できるエンティティによって強化される。本明細書では、この信頼できるエンティティを、セキュア・インタフェース制御またはウルトラバイザと呼ぶ。1つまたは複数の実施態様では、セキュア・インタフェース制御(またはウルトラバイザ)が、信頼できるファームウェア内で実行する。この信頼できるファームウェアは、ハードウェア・システム・エリア(Hardware System Area)(HSA)に存在する。HSAは、高度に保護されており、HSAには、ファームウェアの最低レベルだけがアクセスすることができる。1つまたは複数の実施形態では、このコードが、コンピュータ・システムの製造業者によって所有されており、製造業者によってセキュアに維持されて、製造業者によって出荷される。このコードの内容は、このコードを実行するために機械によって読まれるが、機械からダンプされることまたは抽出されることはない。1つまたは複数の実施形態では、セキュア・インタフェース制御が、純粋にハードウェア内で実施するには複雑すぎることがある命令を実施するために使用されるハードウェアの拡張である。対照的に、ハイパーバイザは、多数のゲスト(仮想機械としても知られている)のホストをつとめることができる任意のソフトウェアを指しうる。ハイパーバイザが、注意深くロードされ、システム上で実行しているソフトウェアによるアクセスから保護されるシステム・ファームウェアに属している必要はない。一般に、1つまたは複数の実施形態では、ハイパーバイザを、ネットワーク・インタフェースを含む幅広い管理インタフェースを有するサード・パーティ・ソフトウェアとすることができる。したがって、ハイパーバイザは信頼できず、ネットワーク・インタフェースを通して利用可能な脆弱性、または悪意ある管理もしくは怠慢な管理にさらされることがある。
【0028】
本明細書では、コンピューティング環境内でセキュアなゲストとして実行することが意図されたオペレーティング・システム・イメージが、ホスト・システムに対して使用可能とされる前でさえも、機密性および完全性を保証するために、調査および改竄から保護されると仮定される。これを達成するため、オペレーティング・システム・イメージは、イメージの所有者によって選ばれたシークレット鍵によって暗号化され、その完全性が保護される。本明細書では、このシークレット鍵がイメージ暗号化鍵とも呼ばれる。オペレーティング・システム・イメージの全ての構成要素、ならびにシステムがブートされた後にオペレーティング・システムによって使用されるレスト状態の全てのデータは暗号化されていると仮定される。
【0029】
オペレーティング・システムをブートするのに必要のないデータの暗号化は、オペレーティング・システム・イメージ自体の暗号化から独立して実行することができる。それらの追加のデータの復号は、セキュアなゲストとして実行しているオペレーティング・システムによって実行することができる。例えば、暗号化されたLinux(登録商標)オペレーティング・システム・イメージは、カーネル、初期RAMディスクおよびカーネル・パラメータ行を含みうる。初期RAMディスクは、仮想機械に割り当てられた暗号化されたディスク・ボリューム上に存在するデータを復号するために使用されるシークレット鍵を含むことができる。
【0030】
仮想機械を実行させるホスト・システムは、セキュアなオペレーティング・システム・イメージをブートするために、セキュアなオペレーティング・システム・イメージを復号することができる必要がある。機密性を保証するため、本明細書では、この能力が、ホスト・システムの信頼できるハードウェアおよびファームウェア(「セキュア・インタフェース制御」または「ウルトラバイザ」)に対して予約されている。この目的のために、ホスト・システムに秘密鍵-公開鍵対が関連づけられる。秘密鍵は、ホスト・システムの信頼できるハードウェアおよびファームウェア(すなわちセキュア・インタフェース制御またはウルトラバイザ)だけに知られており、ホスト上で実行しているどのソフトウェアによってもアクセス可能ではない。公開鍵は、セキュアなオペレーティング・システム・イメージを暗号化するために使用されたイメージ暗号化鍵をセキュア・インタフェース制御にセキュアに伝達するための鍵アグリーメント・データを生成するため、および鍵アグリーメント・データをメタデータ構造(本明細書ではセキュア・エグゼキューション(Secure Execution)(SE)ヘッダと呼ばれる)に記憶するために、暗号化されたオペレーティング・システム・イメージの所有者によって使用される。一例として、RSAキー・ラッピング法またはDiffie-Hellman/KEM型鍵交換法を使用することができる。SEヘッダのサイズは、オペレーティング・システム・イメージのサイズから独立している。
【0031】
さらに、本明細書に開示されているとおり、ホスト・システムはさらに、改竄されたイメージの実行を防ぐために、オペレーティング・システム・イメージの完全性を検証する。この目的のため、メモリ・ページの内容に対する完全性ハッシュ値、およびオペレーティング・システム・イメージのメモリ・ページ・アドレスのリストに対する完全性ハッシュ値が計算される。1つまたは複数の実施形態では、両方のハッシュ値の計算を容易にするために、ページおよびページのアドレスが、ページ・アドレスの順に、例えば下位から上位の順に提供される。比較されるこれらの完全性ハッシュ値は、メタデータ構造(SEヘッダ)を介して、セキュア・インタフェース制御ないしウルトラバイザに記憶し、セキュア・インタフェース制御ないしウルトラバイザに提供することができる。
【0032】
本明細書では、セキュアなオペレーティング・システム・イメージをインクリメンタルに復号し、セキュアなオペレーティング・システム・イメージの完全性チェックを容易にするこのプロセスをアンパックと呼ぶ。本明細書に開示された1つまたは複数の態様は、セキュアなホスト・システム内のプロセスが、オペレーティング・システム・イメージの機密性を維持するようなやり方でオペレーティング・システム・イメージを復号し、同時にオペレーティング・システム・イメージの完全性を検証することをカバーする。1つまたは複数の実施形態では、アンパック・プロセス中のメモリ・ページの順序を強制することによって、これを容易にすることができる。本明細書に記載された本発明の態様の別の利点は、連続して保存されていないオペレーティング・システム・イメージを取り扱うことができる点である。
【0033】
さらに、1つまたは複数の態様では、セキュアなオペレーティング・システム・イメージの開示された復号および完全性検証手法が、セキュアなオペレーティング・システム・イメージの統計学的解析およびその統計学的解析に基づくイメージへの攻撃の達成をより困難にする。
【0034】
上述のとおり、1つまたは複数の実施形態では、特別に準備されたセキュアなオペレーティング・システム・イメージが、本明細書において、セキュアな状態にあるメモリ内容の観察を許さないようなやり方で実行される。固有のセキュリティを有するために、このオペレーティング・システム・イメージは、このセキュアなオペレーティング・システム・イメージのユーザまたは所有者によって選ばれた、本明細書ではシークレット鍵またはイメージ暗号化鍵と呼ぶ鍵を用いて暗号化されていると仮定される。暗号化が実行された後、暗号化鍵、すなわちイメージ暗号化鍵は、ホスト・コンピューティング・システムの公開鍵-秘密鍵対の第2の公開鍵、または公開鍵-秘密鍵対から導き出された対称鍵を用いてラップされる。1つまたは複数の実施形態では、このページごとの暗号化を、対称鍵アルゴリズム、例えば本明細書ではトゥイーク値と呼ぶ初期化ベクトルを使用する対称鍵アルゴリズムによるものとすることができる。トゥイーク値は、イメージのページごとに固有である。
【0035】
図2は、1つまたは複数の態様による、アンパック処理の一実施形態を示している。1つまたは複数の実施形態では、ウルトラバイザないしセキュア・インタフェース制御が、ハイパーバイザにアクセス可能な機能を、ウルトラバイザ呼出しを介して提供する。ウルトラバイザ呼出しは、アンパック・オペレーション開始呼出し(start unpack operation call)、ページごとアンパック・オペレーション実行呼出し(perform page-by-page unpack operation call)、およびアンパック・オペレーション完了呼出し(complete unpack operation call)を含む。ウルトラバイザを呼び出す前に、まだセキュアでない仮想機械(VM)メモリに、暗号化されたセキュアなオペレーティング・システム・イメージをロードして、ハイパーバイザがこのロードを実行することを可能にする。さらに、ハイパーバイザは、オペレーティング・システム・イメージを構成している全てのページのアドレスを知っていなければならず、さらに、それぞれのページを暗号化するために使用されたトゥイークを知っていなければならない。この情報をハイパーバイザに対してどのように使用可能にするのかは、本発明の態様にとって重要ではない。単純にするために、暗号化されたイメージとともに、暗号化されていないブートストラップ構成要素を仮想機械メモリにロードすることができる。この構成要素を使用して、パラメータ、すなわちSEヘッダ、メモリ・ページ・アドレスのリスト、およびトゥイークのリスト(例えばページ・アドレスごとに1つのトゥイーク)を有するハイパーバイザを呼び出すことができる。
【0036】
メモリを節約するために、包括的なページ・リストをハイパーバイザに提供する代わりに、ページ範囲のリストを指定することも可能である。同様に、トゥイークのリストを提供する代わりに、後続のトゥイークが固定された正の値だけ異なる、トゥイークの範囲を指定することも可能である。あるいは、ページ・アドレスからトゥイーク値を導き出すこともできる。上記の選択肢はいずれも、ハイパーバイザとウルトラバイザとの間のインタラクションに影響しない。ハイパーバイザは、パラメータとしてSEヘッダを含む、ウルトラバイザへの呼出し、例えば「アンパック開始」呼出しによって、アンパック・オペレーションを開始する200。SEヘッダは、公開ホスト鍵によってラップされた所有者のイメージ暗号化鍵、ならびにイメージ・ページ内容およびページ・アドレスに対するイメージ完全性ハッシュ値を含む。ウルトラバイザは、イメージ暗号化鍵および完全性ハッシュ値をSEヘッダから抽出し202、SEヘッダ・データが有効かどうかを判定する204。「いいえ」の場合、アンパック・オペレーションは失敗となり、割込み禁止の待ち状態(disabled wait state)に入る206。割込み禁止の待ち状態に入るのは、ゲスト・オペレーティング・システムが実行することができないようにするためである。すなわち、そこで、ゲストは、割込み禁止の待ち状態から出ることができない。例えば、ハイパーバイザにエラーを返すことができる。1つまたは複数の実施形態では、ゲスト・システムをリセットすることができ、その場合、ゲスト・システムは、暗号化されたイメージをロードして再開し、上で説明したアンパック・プロセスを開始することになる。あるいは、ゲスト・システムの電源を遮断することもでき、このことは、事実上、仮想機械を除去することになる。すなわち、その仮想機械によって使用されているホスト・リソースを解放することになる。
【0037】
ハイパーバイザは、指定されたメモリ領域の全てのページ・アドレスを、(1つまたは複数の実施形態では)下位のページ・アドレスから上位のページ・アドレスの順に巡り208、ページ・アドレスとこのページを暗号化するために使用されたトゥイークとを用いて、ウルトラバイザ「ページ・アンパック(unpack page)」オペレーションを呼び出す210。ウルトラバイザは次いで以下のオペレーションを実行する。ウルトラバイザは、そのメモリ・ページをセキュアにセットし、SEヘッダからのイメージ暗号化鍵とページを暗号化するために使用されたトゥイーク値とを使用してメモリ・ページ内容を復号する。1つのトゥイーク値が2回以上使用されることを防ぐために、新しいそれぞれのトゥイークは、以前に使用されたトゥイークよりも大きな数によって表現されているべきであり、それぞれのページ・アドレスは、以前に使用されたページ・アドレスよりも大きい値であるべきである212。「いいえ」の場合、アンパックは失敗となり、割込み禁止の待ち状態に入る206。「はい」の場合、ウルトラバイザは、そのページにセキュアのマークを付け、イメージ暗号化鍵およびトゥイークを使用してそのページを復号し、ページ内容に対する累積内容ハッシュおよびページ・アドレスに対する累積アドレス・ハッシュを決定する214(例えば、累積ハッシュは次のように計算することができる:全てのページについて、cum_hash:=cum_hash+部分ハッシュ(ページi)。ここで、1≦i≦nであり、+は、複雑な演算である)。一実施形態では、ウルトラバイザが、メモリ・ページの内容からの実行中のハッシュ値および以前に復号された全てのページの合計値(summary value)、ならびに、メモリ・ページのページ・アドレスからの別のハッシュ値および以前に復号された全てのページのページ・アドレスの合計値を決定する。多数のページ・アドレスをメモリ・ページに連結し、次いでそのメモリ・ページ全体のハッシュ値を計算することによって、上述のものなどのページごとアドレス・ハッシュ計算の強化を達成することができる。
【0038】
全てのオペレーティング・システム・イメージ・ページを処理した208後、ハイパーバイザは、「アンパック終了」オペレーションとともにウルトラバイザを呼び出し216、「アンパック終了」オペレーションで、ウルトラバイザは、内容およびページ・アドレスに対する計算された内容およびアドレス・ハッシュ値を、SEヘッダに含まれる対応するそれぞれの完全性ハッシュ値と比較する218。それらが一致しない場合、アンパック・オペレーションは失敗となり、ハイパーバイザにエラー指示が返される206。一致する場合、アンパック・オペレーションは成功となり、ウルトラバイザは、セキュアなゲストの実行を、SEヘッダからのプログラム・ステータス・ワード(program status word)(PSW)を用いて開始することができ、このことは、オペレーティング・システム・イメージがセキュア・モードでの実行を開始する。
【0039】
本明細書に記載された処理では、イメージが「穴(hole)」を有していてもよいため、メモリ・ページが連続している必要はないが、本明細書に記載されたトゥイーク有効性チェックと完全性チェックの両方を可能にするために、(1つまたは複数の実施形態では)復号プロセスが下位から上位の順に実行されるべきであることに留意されたい。ゲストに属するが、ゲスト初期化中にアンパックされなかったページはセキュアであり、セキュアなゲストによる最初のアクセスでゼロ化される。
【0040】
さらなる例として、
図3Aは、セキュアなオペレーティング・システム・イメージのロード後のメモリ内容の一実施形態を示している。上述のとおり、1つまたは複数の実施形態において、セキュアなオペレーティング・システム・イメージは、セキュアなオペレーティング・システム・イメージのユーザまたは所有者によって、イメージ暗号化鍵を用いて暗号化されていると仮定される。このイメージ暗号化鍵は、ユーザまたは所有者によって選ばれたシークレット鍵である。暗号化が完了した後、暗号化鍵は、ホスト・コンピューティング・システムの公開鍵-秘密鍵対の公開鍵、またはホスト・コンピューティング・システムの公開鍵-秘密鍵対から導き出された対称鍵を用いてラップされ、メタデータ構造(すなわちセキュア・エクゼキューション(SE)ヘッダ)301に記憶され、メタデータ構造(すなわちSEヘッダ)301は、ゲスト・ディスク310からのメタデータ303の一部としてゲスト・アドレス空間300内に提供される。(1つまたは複数の実施形態において)ゲスト・ディスク310およびゲスト・アドレス空間300は、セキュアなオペレーティング・システム・イメージを実行するためにハイパーバイザによって仮想機械に提供されたメモリである。セキュアなオペレーティング・システム・イメージの実行を開始するために、SEヘッダ301と一緒に、ブートストラップ構成要素302を提供することができる。1つまたは複数の実施態様では、このメタデータ303が暗号化されていないが、改竄から保護される。セキュアなオペレーティング・システム・イメージ305はアドレス・ページ304を含み、アドレス・ページ304は、上述のとおり、オペレーティング・システム・イメージが保護されていることを保証するために所有者のイメージ暗号化鍵を使用して個別に暗号化されている。(
図3Aに示されているように)ハイパーバイザを介してセキュアなオペレーティング・システム・イメージをメモリにロードすることができる。
【0041】
図3Bは、1つまたは複数の実施形態においてセキュアなオペレーティング・システム・イメージをアンパックするために使用されるメタデータをさらに示している。示されているとおり、ゲスト・アドレス空間300内のSEヘッダ301は、(公開鍵でラップされた)イメージ暗号化鍵306、ならびにイメージ内容の完全性ハッシュ307およびイメージ・アドレスの完全性ハッシュ308を含むことができる。1つまたは複数の実施形態では、ブートストラップ構成要素302が、ブートストラップ・コード309、ならびにページ・アドレスおよびトゥイーク値を含むページごと情報311を含むことができる。ブートストラップ・コード309は、ハイパーバイザによって実行可能なコードとすることができ、またはハイパーバイザによって実行可能なコードを含むことができる。上述のとおり、1つまたは複数の実施形態では、ハイパーバイザによってページ・アドレスをウルトラバイザに送ることができ、それらのページ・アドレスは、ページ・アドレスおよびトゥイーク値が、セキュアなオペレーティング・システム・イメージの以前のページ・アドレスおよびトゥイーク値とは異なっていることを評価することができる効率的な手法として、昇順または降順などの順序で順序づけされる。単なる例として、下
図4A~4Cの例などの本明細書の1つまたは複数の実施形態では、ページ・アドレスが、昇順に配列されているとして記述される。本明細書に記載されているとおり、ページ・リストおよびトゥイーク・リストを含むメタデータは、ソフトウェア・ツールなどのエンティティによって生み出すことができ、このエンティティおよびハイパーバイザは、リスト内のアドレスおよびトゥイークの順序の共通の知識を有する。より詳細には、1つまたは複数の実施態様では、重要な順序が、ページが暗号化およびハッシュされる順序、ならびにハイパーバイザがウルトラバイザにページを提示する順序であり、これらの順序は一致する。この順序は、上述のとおり、昇順または降順であるが、ウルトラバイザは、イメージを生成するときにどちらの方向が使用されたかのかを知っている必要がある。したがって、この方向は通常、セキュア・インタフェース制御(またはウルトラバイザ)アーキテクチャによって規定される。
【0042】
図4A~4Cは、本発明の1つまたは複数の態様による、インクリメンタル復号および完全性検証プロセスに従った、ハイパーバイザおよびウルトラバイザのデータ構造もしくはオペレーションまたはその両方を示す、アンパック・プロセスの一実施形態を示している。
【0043】
図4Aには、ゲスト・アドレス空間300、ハイパーバイザ400およびウルトラバイザ410の関連データ構造が示されている。示されているとおり、セキュアなオペレーティング・システム・イメージを実行するために、ハイパーバイザ400が呼び出される。ハイパーバイザ400はSEヘッダ301を受け取り、そのヘッダを、ウルトラバイザ410に転送するために一時的に記憶する。アンパック・プロセスを開始するために、ハイパーバイザによってウルトラバイザ410が呼び出され、ウルトラバイザは、イメージ暗号化鍵306、完全性内容ハッシュ307および完全性アドレス・ハッシュ308をSEヘッダから抽出し、それらを、ウルトラバイザの保護されたメモリ(例えばレジスタ)に入れる。示されているとおり、1つまたは複数の実施形態では、ウルトラバイザ410がさらに、現在のトゥイーク値(以後、現在トゥイーク値)411、復号されるページの現在のアドレス(以後、現在アドレス)412、現在の内容ハッシュ(以後、現在内容ハッシュ)413、および現在のアドレス・ハッシュ(以後、現在アドレス・ハッシュ)414、ならびに累積内容ハッシュ415、累積アドレス・ハッシュ416、最後の(last)トゥイーク値(以後、最後トゥイーク値)417、および最後のページ・アドレス(以後、最後ページ・アドレス)418を含むレジスタを維持する。
【0044】
一例として、累積内容ハッシュ415は、ウルトラバイザによってそれまでに復号されたメモリ・ページの内容に関するハッシュ値を含み、累積アドレス・ハッシュ416は、それまでに復号されたメモリ・ページのアドレスに関するハッシュ値を含み、最後トゥイーク値417および最後ページ・アドレス418は、ウルトラバイザが最後に見たトゥイーク値およびアドレス値を含み、本明細書に開示された1つまたは複数の実施形態では、このトゥイーク値およびアドレス値が、ページ・アドレスおよびトゥイーク値が再び使用されないことをウルトラバイザが保証することを可能にする。トゥイーク値、現在アドレス、現在内容ハッシュおよび現在アドレス・ハッシュは作業レジスタであり、それらは、ウルトラバイザ410によって現在処理されているページに関する。
【0045】
ハイパーバイザ400は制御を回復し、データ構造401を構成する。
1つまたは複数の実施形態では、データ構造401が、セキュアなオペレーティング・システム・イメージのページ・アドレスごとに、ページ・アドレスとトゥイーク値の対402を含む。イメージのメモリ・ページを繰り返すために使用されるインデックス(index)403が、ハイパーバイザ400によって提供される。
【0046】
図4Bは、
図4Aのゲスト・アドレス空間、ハイパーバイザおよびウルトラバイザの構造および処理を示している。アンパック・オペレーションが進行中であり、ハイパーバイザ400によってウルトラバイザ410に、ページ・アドレス・トゥイーク値対402が提供されている。この現在の対は、現在アドレス・レジスタおよび現在トゥイーク・レジスタに入れられており、現在アドレスが最後アドレスよりも大きいこと、および現在トゥイークが最後トゥイークよりも大きいことを保証するためになされる比較が示されている。さらに、ゲスト・アドレス空間内の特定のページ内容の復号の一部として、ウルトラバイザ410によって維持されている累積内容ハッシュおよび累積アドレス・ハッシュに、現在内容ハッシュおよび現在アドレス・ハッシュを加算することができる。
図4Bに示されているように、ある種のページが復号されている304’。1つまたは複数の実施形態では、復号後、これらのページは、ウルトラバイザ410のミリコードによって保護され、そのため、復号後、ハイパーバイザ400は、保護されたこれらのページにアクセスすることができない。セキュアなオペレーティング・システム・イメージの暗号化されていないページにハイパーバイザがアクセスできないことを保証するために、ウルトラバイザ410は、例えばストレージ鍵機能(storage key facility)を使用することができる。
【0047】
図4Cは、セキュアなオペレーティング・システム・イメージの全てのメモリ・ページがウルトラバイザによって復号され(、ウルトラバイザによって保護され)た後の、
図4Aおよび4Bのデータ構造およびプロセスを示している。累積内容ハッシュ415および累積アドレス・ハッシュ416を使用してセキュアなオペレーティング・システム・イメージの完全性を検証するために、ハイパーバイザ400は、ウルトラバイザへのアンパック終了呼出しを実行する。示されているとおり、SEヘッダとともに受け取られた完全性内容ハッシュを、確認された累積内容ハッシュと比較するため、およびSEヘッダの完全性アドレス・ハッシュと取得された累積アドレス・ハッシュとを比較するために、ウルトラバイザが呼び出される。対応するそれぞれの比較が真である、すなわち、累積内容ハッシュが完全性内容ハッシュと等しく、累積アドレス・ハッシュが完全性アドレス・ハッシュと等しいと仮定すると、セキュアなオペレーティング・システム・イメージの完全性が確認され、ウルトラバイザは、復号されたセキュアなオペレーティング・システム・イメージの実行を、例えばSEヘッダからのプログラム・ステータス・ワード(PSW)を使用して開始することができる。
【0048】
本発明の1つまたは複数の態様に関係しているため、コンピューティング環境内でのセキュアな処理を容易にする一実施形態のさらなる詳細を、
図5Aおよび5Bを参照して説明する。
【0049】
図5Aを参照すると、一実施形態では、セキュアなオペレーティング・システム・イメージをインクリメンタルに復号する(500)。インクリメンタルに復号することは、セキュアなオペレーティング・システム・イメージの複数のページのうちのページについて、そのページのページ・アドレスと、そのページの暗号化中に使用されたトゥイーク値とを受け取ること(502)、トゥイーク値が、セキュアなオペレーティング・システム・イメージの複数のページのうちの別のページの復号中に以前に使用されたものではないと判定すること(504)、および復号されたセキュアなオペレーティング・システム・イメージを取得することを容易にするために、そのページを暗号化する際に使用されたイメージ暗号化鍵とトゥイーク値とを使用して、ページ・アドレスにあるメモリ・ページ内容を復号すること(506)を含む。さらに、セキュアなオペレーティング・システム・イメージの完全性を検証し(508)、セキュアなオペレーティング・システム・イメージの完全性を検証したことに基づいて、復号されたセキュアなオペレーティング・システム・イメージの実行を開始する(510)。
【0050】
1つまたは複数の実施形態では、インクリメンタルに復号すること、および完全性を検証することが、コンピュータ・システムのセキュア・インタフェース制御によって実行され、セキュア・インタフェース制御が、コンピュータ・システムの信頼できるエンティティであり、ページ・アドレスおよびトゥイーク値が、セキュア・インタフェース制御によってハイパーバイザから受け取られる(512)。さらに、一実施形態では、複数のページのページ・アドレスの順序が固定されており(例えば下位から上位の順序であり)、セキュアなオペレーティング・システム・イメージをインクリメンタルに復号することが、ページ・アドレスが、セキュアなオペレーティング・システム・イメージの複数のページのうちの以前に復号されたページのうちのどの以前のページ・アドレスとも異なっていると判定することを含む(514)。
【0051】
1つまたは複数の実施態様では、セキュアなオペレーティング・システム・イメージをインクリメンタルに復号することが、トゥイーク値が、セキュアなオペレーティング・システム・イメージの複数のページのうちの以前に復号されたページの復号中に使用されたどの以前のトゥイーク値とも異なっていると判定することをさらに含む(516)。
【0052】
さらなる例として、完全性を検証することは、部分的に、複数のページのメモリ・ページ内容を使用して取得された累積内容ハッシュ、および複数のページのページ・アドレスを使用して取得された累積アドレス・ハッシュを使用することを含むことができる(518)。例えば、
図5Bに示されているように、セキュアなオペレーティング・システム・イメージの完全性を検証することは、累積内容ハッシュを、セキュア・インタフェース制御によってハイパーバイザから受け取られた完全性内容ハッシュと比較すること、および累積アドレス・ハッシュを、セキュア・インタフェース制御によってハイパーバイザから受け取られた完全性アドレス・ハッシュと比較することを含むことができる(520)。
【0053】
1つまたは複数の実施形態では、このプロセスが、セキュア・インタフェース制御によって、イメージ暗号化鍵、ならびに完全性内容ハッシュおよび完全性アドレス・ハッシュを、ハイパーバイザから受け取ったメタデータから抽出することを含む(522)。特定の例では、セキュア・インタフェース制御が、コンピュータ・システムのファームウェア要素を含み、セキュアなオペレーティング・システムが、コンピューティング環境内でセキュアなゲスト・オペレーティング・システムとして実行される(524)。一例として、コンピュータ・システムに秘密鍵-公開鍵対を関連づけることができ、秘密鍵は、セキュア・インタフェース制御だけに知られており、コンピュータ・システム上で実行しているソフトウェアによってアクセス可能ではなく、公開鍵は、セキュアなオペレーティング・システム・イメージを暗号化するために使用されたイメージ暗号化鍵をセキュア・インタフェース制御に伝達するための鍵アグリーメント・データを生成するため、および鍵アグリーメント・データをメタデータ構造に記憶するために、セキュアなオペレーティング・システム・イメージの所有者によって使用される(526)。さらに、セキュア・インタフェース制御は、メタデータ構造を、ハイパーバイザからの呼出しを用いて受け取ることができ、メタデータ構造は、セキュアなオペレーティング・システム・イメージの完全性を検証する際に使用される完全性ハッシュ値をさらに含む(528)。
【0054】
他の変形形態および実施形態も可能である。
【0055】
多くのタイプのコンピューティング環境が本発明の態様を使用することができる。本発明の1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の別の実施形態を、
図6Aを参照して説明する。この例では、コンピューティング環境10が例えば、ネイティブの中央処理ユニット(CPU)12、メモリ14、および1つもしくは複数の入力/出力デバイスもしくはインタフェースまたはその両方16を含み、これらは例えば、1つもしくは複数のバス18もしくは他の接続またはその両方を介して互いに結合されている。例として、コンピューティング環境10は、米ニューヨーク州Armonkのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されているPowerPC(登録商標)プロセッサ、米カリフォルニア州Palo Altoのヒューレット・パッカードCo.(Hewlett Packard Co.)によって提供されているHP Superdome(登録商標) with Intel Itanium(登録商標) IIプロセッサ、もしくはインターナショナル・ビジネス・マシーンズ・コーポレーション(登録商標)、ヒューレット・パッカード(登録商標)、インテル・コーポレーション(Intel Corporation)(登録商標)、オラクル(Oracle)(登録商標)などによって提供されているアーキテクチャに基づく他の機械、またはこれらの組合せを含むことができる。IBM、z/Architecture、IBM Z、z/OS、PR/SMおよびPowerPCは、少なくとも1つの法域における、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。IntelおよびItaniumは、米国および他の国々における、インテル・コーポレーションまたはその系列会社の商標または登録商標である。
【0056】
ネイティブ中央処理ユニット12は、この環境内での処理中に使用される、1つもしくは複数の汎用レジスタまたは1つもしくは複数の専用レジスタあるいはその両方などの、1つもしくは複数のネイティブ・レジスタ20を含む。これらのレジスタは、特定の時点における環境の状態を表す情報を含む。
【0057】
さらに、ネイティブ中央処理ユニット12は、メモリ14に記憶された命令およびコードを実行する。特定の1つの例では、この中央処理ユニットが、メモリ14に記憶されたエミュレータ・コード22を実行する。このコードは、1つのアーキテクチャで構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータ・コード22は、z/Architecture(登録商標)ハードウェア・アーキテクチャ以外のアーキテクチャに基づく、PowerPC(登録商標)プロセッサ、HP Superdome(登録商標)サーバなどの機械が、z/Architecture(登録商標)ハードウェア・アーキテクチャをエミュレートすること、ならびにz/Architecture(登録商標)ハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行することを可能にする。
【0058】
エミュレータ・コード22に関するさらなる詳細を、
図6Bを参照して説明する。メモリ14に記憶されたゲスト命令30は、ネイティブCPU12のアーキテクチャ以外のアーキテクチャで実行されるように開発された(例えば機械命令に相関する)ソフトウェア命令を含む。例えば、ゲスト命令30は、z/Architecture(R)ハードウェア・アーキテクチャに基づくプロセッサ上で実行されるように設計されたものとすることができるが、その代わりにネイティブCPU12上でエミュレートされている。ネイティブCPU12は例えばIntel Itanium(登録商標) IIプロセッサとすることができる。一例では、エミュレータ・コード22が、メモリ14から1つまたは複数のゲスト命令30を取得し、任意選択で、取得した命令に対するローカル・バッファリングを提供する命令フェッチ・ルーチン32を含む。エミュレータ・コード22はさらに、取得したゲスト命令のタイプを決定し、そのゲスト命令を、対応する1つまたは複数のネイティブ命令36に翻訳する命令翻訳ルーチン34を含む。この翻訳は例えば、ゲスト命令が実行することになっている機能を識別すること、およびその機能を実行するネイティブ命令を選ぶことを含む。
【0059】
さらに、エミュレータ・コード22は、それらのネイティブ命令を実行させるエミュレーション制御ルーチン40を含む。エミュレーション制御ルーチン40は、以前に取得した1つまたは複数のゲスト命令をエミュレートするネイティブ命令のルーチンを、ネイティブCPU12に実行させ、そのような実行の終わりに、次のゲスト命令または一群のゲスト命令の取得をエミュレートする命令フェッチ・ルーチンに制御を返すことができる。ネイティブ命令36の実行は、メモリ14からレジスタにデータをロードすること、レジスタからメモリにデータを再び記憶すること、または、翻訳ルーチンによって決定された、あるタイプの算術もしくは論理演算を実行することを含むことができる。
【0060】
それぞれのルーチンは例えばソフトウェアとして実装されており、そのソフトウェアは、メモリに記憶されており、ネイティブ中央処理ユニット12によって実行される。他の例では、これらのルーチンまたは演算のうちの1つまたは複数のルーチンまたは演算が、ファームウェア、ハードウェア、ソフトウェアまたはこれらの組合せとして実装されている。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ20を使用して、またはメモリ14の中の位置を使用することによってエミュレートすることができる。実施形態では、ゲスト命令30、ネイティブ命令36およびエミュレータ・コード22が同じメモリにあってもよく、または異なるメモリ・デバイスに分散していてもよい。
【0061】
上で説明したコンピューティング環境は、使用することができるコンピューティング環境の例に過ぎない。限定はされないが、区分されていない環境(non-partitioned environment)、区分された環境もしくはエミュレートされた環境またはこれらの組合せを含む、他の環境を使用することもでき、実施形態は、1つの環境だけに限定されない。
【0062】
それぞれのコンピューティング環境を、本発明の1つまたは複数の態様を含むように構成することができる。本発明の1つまたは複数の態様によれば、例えば、オーバフロー処理を提供するように、それぞれのコンピューティング環境を構成することができる。
【0063】
1つまたは複数の態様は、クラウド・コンピューティングに関係していることがある。
【0064】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実施態様はクラウド・コンピューティング環境だけに限定されないことを理解されたい。本発明の実施形態は、現在知られているまたは後に開発される他の任意のタイプのコンピューティング環境において実施することができる。
【0065】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの最小限のインタラクションで迅速に供給およびリリースすることができる構成可能なコンピューティング・リソース(例えばネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械およびサービス)の共用プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするサービス配信モデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント(deployment)モデルを含むことができる。
【0066】
特徴は以下のとおりである。
【0067】
オンデマンド・セルフサービス:クラウド・コンシューマは、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能の供給を、このサービスのプロバイダとのヒューマン・インタラクションを必要とすることなく必要に応じて自動的に一方的に受けることができる。
【0068】
ブロード・ネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(例えば移動電話、ラップトップおよびPDA)による使用を促進する標準的機構を通してアクセスされる。
【0069】
リソース・プーリング(resource pooling):マルチテナント・モデルを使用して多数のコンシューマにサービスを提供するために、プロバイダのコンピューティング・リソースがプールされており、要求に応じて、異なる物理的および仮想リソースが動的に割当ておよび再割当てされる。コンシューマは一般に、提供されたリソースの正確な位置を制御できずまたは正確な位置を知らないが、より高次の抽象化レベル(例えば国、州またはデータセンター)で位置を指定することができるという意味で、位置独立の感覚がある。
【0070】
ラピッド・エラスティシティ(rapid elasticity):機能は、素早くスケールアウトするために迅速かつ弾力的に、場合によっては自動的に供給することができ、素早くスケールインするために迅速にリリースすることができる。コンシューマにとって、供給に利用可能な機能はしばしば無限であるように見え、いつでも好きな量だけ購入することができる。
【0071】
メジャード・サービス(measured service):クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域および使用中ユーザ・アカウント)に対して適切なある抽象化レベルで計測機能に介入することによって、リソースの使用状況を自動的に制御および最適化する。リソースの使用状況を監視、制御および報告して、利用されているサービスのプロバイダとコンシューマの両方に透明性を提供することができる。
【0072】
サービス・モデルは以下のとおりである。
【0073】
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で実行しているプロバイダのアプリケーションを使用する機能である。ウェブ・ブラウザなどのシン・クライアント・インタフェース(例えばウェブ・ベースの電子メール)を通してさまざまなクライアント・デバイスからアプリケーションにアクセス可能である。場合によっては可能な限られたユーザ固有のアプリケーション構成の設定を除けば、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージまたは個々のアプリケーション機能を含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしない。
【0074】
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で、プロバイダがサポートするプログラム言語およびツールを使用して作成されたコンシューマ作成または取得のアプリケーションをデプロイする機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システムまたはストレージを含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティング環境構成は制御することができる。
【0075】
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供されるこの機能は、処理、ストレージ、ネットワークおよび他の基本的なコンピューティング・リソースを供給する機能であり、コンシューマは任意のソフトウェアをデプロイおよび実行することができ、これらのソフトウェアは、オペレーティング・システムおよびアプリケーションを含むことができる。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしないが、オペレーティング・システム、ストレージおよびデプロイされたアプリケーションは制御することができ、場合によっては、選択されたネットワーク構成要素(例えばホスト・ファイアウォール)を限定的に制御することができる。
【0076】
デプロイメント・モデルは以下のとおりである。
【0077】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織体のためだけに運営される。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミス(on-premises)またはオフプレミス(off-premises)で存在することができる。
【0078】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織体によって共有され、利害(例えばミッション、セキュリティ要件、ポリシーおよびコンプライアンス上の問題)を共有する特定のコミュニティをサポートする。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0079】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般大衆または大きな産業グループが利用可能であり、クラウド・サービスを販売している組織体によって所有される。
【0080】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、固有のエンティティを維持しているが、データおよびアプリケーション・ポータビリティを可能にする標準化された技術または独占技術(例えばクラウド間のロード・バランシングのためのクラウド・バースティング(cloud bursting))によって1つに結合された2つ以上のクラウド(プライベート、コミュニティまたはパブリック)の合成体である。
【0081】
クラウド・コンピューティング環境は、無国籍、低結合、モジュール性および意味論的相互運用性(semantic interoperability)に重きを置くサービス指向の環境である。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0082】
次に
図7を参照すると、例示的なクラウド・コンピューティング環境50が示されている。示されているとおり、クラウド・コンピューティング環境50は1つまたは複数のクラウド・コンピューティング・ノード52を含み、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイス、例えばパーソナル・ディジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54Cまたは自動車コンピュータ・システム54Nあるいはこれらの組合せは、これらのノードと通信することができる。ノード52は互いに通信することができる。それらのノードは、上で説明したプライベート、コミュニティ、パブリックまたはハイブリッド・クラウドまたはこれらの組合せなどの1つまたは複数のネットワークに、物理的にまたは仮想的にグループ分けされていることがある(図示せず)。これによって、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組合せをサービスとして提供することができ、そのため、クラウド・コンシューマは、ローカル・コンピューティング・デバイス上にリソースを維持する必要がない。
図7に示されたタイプのコンピューティング・デバイス54A~Nは単なる例であることが意図されていること、ならびにコンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意のタイプのネットワーク上もしくはアドレス指定可能なネットワーク接続上またはその両方で(例えばウェブ・ブラウザを使用して)、コンピュータ化された任意のタイプのデバイスと通信することができることが理解される。
【0083】
次に
図8を参照すると、クラウド・コンピューティング環境50(
図7)によって提供される一組の機能抽象化層が示されている。
図8に示された構成要素、層および機能は単なる例であることが意図されており、本発明の実施形態はそれらに限定されないことを予め理解しておくべきである。図示のとおり、以下の層および対応する機能が提供される。
【0084】
ハードウェアおよびソフトウェア層60は、ハードウェア構成要素およびソフトウェア構成要素を含む。ハードウェア構成要素の例は、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65ならびにネットワークおよびネットワーキング構成要素66を含む。いくつかの実施形態では、ソフトウェア構成要素が、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0085】
仮想化層70は抽象化層を提供し、この層から、仮想エンティティの以下の例を提供することができる:仮想サーバ71、仮想ストレージ72、仮想専用ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。
【0086】
一例では、管理層80が以下の機能を提供することができる。リソース供給81は、クラウド・コンピューティング環境内でタスクを実行する目的に利用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。計量および価格決定(Metering and Pricing)82は、クラウド・コンピューティング環境内でリソースが利用されたときの費用追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースがアプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティは、クラウド・コンシューマおよびタスクの識別確認ならびにデータおよび他のリソースの保護を提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者に、クラウド・コンピューティング環境へのアクセスを提供する。サービス水準管理84は、必要なサービス水準が達成されるようなクラウド・コンピューティング・リソースの割振りおよび管理を提供する。サービス水準合意(Service Level Agreement)(SLA)計画および履行85は、SLAによって将来必要になると予想されるクラウド・コンピューティング・リソースの事前調整および調達を提供する。
【0087】
ワークロード層90は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ解析処理94、トランザクション処理95、およびセキュア・インタフェース制御(ウルトラバイザ)処理96を含む。
【0088】
本発明の態様は、インテグレーションの可能な技術的詳細レベルにおいて、システム、方法もしくはコンピュータ・プログラム製品、またはこれらの組合せであることができる。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことができる。
【0089】
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。このコンピュータ可読ストレージ媒体は、例えば、限定はされないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リードオンリー・メモリ(ROM)、消去可能なプログラマブル・リードオンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リードオンリー・メモリ(CD-ROM)、ディジタル・バーサタイル・ディスク(DVD)、メモリ・スティック(登録商標)、フロッピー(登録商標)・ディスク、機械的にエンコードされたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造物、およびこれらの適当な組合せを含む。本明細書で使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、またはウェーブガイドもしくは他の伝送体内を伝搬する電磁波(例えば光ファイバ・ケーブル内を通る光パルス)、または電線を通して伝送される電気信号であると解釈されるべきではない。
【0090】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から対応するそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはそれらの組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、またはこれらの組合せを含むことができる。それぞれのコンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
【0091】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、もしくは集積回路用の構成データであってもよく、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同種のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上で、一部が遠隔コンピュータ上で実行されてもよく、または全体が遠隔コンピュータもしくは遠隔サーバ上で実行されてもよい。上記の最後のシナリオでは、遠隔コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)実施されてもよい。いくつかの実施形態では、本発明の態様を実施するために、例えばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路をパーソナライズすることにより、このコンピュータ可読プログラム命令を実行してもよい。
【0092】
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方の図を参照して説明される。それらの流れ図もしくはブロック図またはその両方の図のそれぞれのブロック、およびそれらの流れ図もしくはブロック図またはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解される。
【0093】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行される命令が、流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施する手段を生成するような態様で、汎用コンピュータ、専用コンピュータまたは他のプログラム可能データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はさらに、命令が記憶されたコンピュータ可読ストレージ媒体が、流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作の態様を実施する命令を含む製品を含むような態様で、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラム可能データ処理装置もしくは他のデバイスまたはこれらの組合せに特定の方式で機能するように指示することができるものであってもよい。
【0094】
これらのコンピュータ可読プログラム命令はさらに、コンピュータ、他のプログラム可能装置または他のデバイス上で実施されるこれらの命令が、流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施するような態様で、コンピュータによって実施されるプロセスを生み出すために、コンピュータ、他のプログラム可能データ処理装置または他のデバイス上にロードされ、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0095】
添付図中の流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および動作を示す。この点に関して、それらの流れ図またはブロック図のそれぞれのブロックは、指定された論理機能を実施する1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことがある。いくつかの代替実施態様では、ブロックに示された機能を、図に示された順序とは異なる順序で実行することができる。例えば、連続して示された2つのブロックが、実際は、実質的に同時に実行されることがあり、または、含まれる機能によってはそれらのブロックが逆の順序で実行されることもある。それらのブロック図もしくは流れ図またはその両方の図のそれぞれのブロック、ならびにそれらのブロック図もしくは流れ図またはその両方の図のブロックの組合せを、指定された機能もしくは動作を実行しまたは専用ハードウェアとコンピュータ命令の組合せを実施するハードウェアベースの専用システムによって実施することができることにも留意すべきである。
【0096】
以上に加えて、顧客環境の管理を提供するサービス・プロバイダが、1つまたは複数の態様を、例えば提供し、提案し、デプロイし、管理し、供給することができる。例えば、サービス・プロバイダは、1または複数の顧客に対して、1つまたは複数の態様を実行するコンピュータ・コードもしくはコンピュータ・インフラストラクチャまたはその両方を、例えば生成し、維持し、サポートすることができる。見返りとして、サービス・プロバイダは、例として、サブスクリプション(subscription)契約もしくは料金(fee)契約またはその両方の下で顧客から支払いを受けることができる。それに加えて、またはその代わりに、サービス・プロバイダは、1または複数の第三者への広告内容の販売によって支払いを受けることもできる。
【0097】
一態様では、1つまたは複数の実施形態を実行するためにアプリケーションをデプロイすることができる。一例として、このアプリケーションのデプロイは、1つまたは複数の実施形態を実行するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【0098】
さらなる態様として、コンピューティング・インフラストラクチャをデプロイすることができ、これは、コンピュータ可読コードをコンピューティング・システムに統合することを含み、このコンピュータ可読コードは、コンピューティング・システムとともに、1つまたは複数の実施形態を実行することができる。
【0099】
さらなる態様として、コンピューティング・インフラストラクチャを統合するためのプロセスであって、コンピュータ可読コードをコンピュータ・システムに統合することを含むプロセスを提供することができる。このコンピュータ・システムはコンピュータ可読媒体を含み、このコンピュータ媒体は、1つまたは複数の実施形態を含む。このコンピュータ可読コードは、コンピュータ・システムとともに、1つまたは複数の実施形態を実行することができる。
【0100】
以上に、さまざまな実施形態を説明したが、それらの実施形態は例に過ぎない。例えば、他のアーキテクチャのコンピューティング環境を使用して、1つまたは複数の実施形態を組み込み、使用することもできる。さらに、異なる命令またはオペレーションを使用することもできる。さらに、さまざまなタイプのインジケータを指定することができる。多くの変形形態が可能である。
【0101】
さらに、他のタイプのコンピューティング環境が利益を得ること、および他のタイプのコンピューティング環境を使用することができる。一例として、プログラム・コードを記憶することもしくは実行することに適したデータ処理システム、またはその両方に適したデータ処理システムであって、メモリ要素に直接に結合されたまたはシステム・バスを通してメモリ要素に間接的に結合された少なくとも2つのプロセッサを含むデータ処理システムが使用可能である。このメモリ要素は例えば、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ、およびキャッシュ・メモリを含み、キャッシュ・メモリは、実行中に大容量ストレージからコードを取り出さなければならない回数を減らすために、少なくとも一部のプログラム・コードの一時記憶を提供する。
【0102】
(限定はされないが、キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ(thumb drive)および他のメモリ媒体などを含む)入力/出力デバイスないしI/Oデバイスを、直接にまたはI/Oコントローラを介在させて、システムに結合することができる。データ処理システムが、介在する専用または公衆ネットワークを通して他のデータ処理システムまたは遠隔プリンタもしくはストレージ・デバイスに結合されることを可能にするために、システムにネットワーク・アダプタを結合することもできる。モデム、ケーブル・モデムおよびEthernet(R)カードは、使用可能なタイプのネットワーク・アダプタの例である。
【0103】
本明細書で使用される用語の目的は特定の実施形態を説明することだけであり、それらの用語が限定を目的とすることは意図されていない。文脈からそうでないことが明らかである場合を除き、本明細書で使用されるとき、単数形の「ある(a)」、「1つの(an)」および「その(the)」は複数形も含むことが意図されている。本明細書で使用されるとき、用語「備える(comprises)」もしくは「備える(comprising)」またはその両方は、明示された特徴、完全体(integer)、ステップ、動作、要素もしくは構成要素またはこれらの組合せの存在を指定するが、他の1つもしくは複数の特徴、完全体、ステップ、動作、要素、構成要素もしくはこれらのグループ、またはこれらの組合せの存在または追加を排除しないことも理解される。
【0104】
対応する構造体、材料、動作、ならびに、存在する場合には、特許請求の範囲に記載された全ての手段またはステップおよび機能要素の等価物は、特許請求の範囲に記載された他の請求の要素とともに機能を実行するための任意の構造体、材料または動作を含むことが意図されている。図示および説明のために1つまたは複数の実施形態の記述を提示したが、その記述が網羅的であること、または開示された形態に限定されることは意図されていない。当業者には、多くの変更および変形形態が明白である。実施形態は、さまざまな態様および実用的用途を最もよく説明するため、ならびに企図された特定の使用に適したさまざまな変更を有するさまざまな実施形態を当業者が理解することを可能にするために選抜し、説明した。