(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-29
(45)【発行日】2023-12-07
(54)【発明の名称】セキュア・インターフェイス制御の高レベルのページ管理
(51)【国際特許分類】
G06F 12/14 20060101AFI20231130BHJP
【FI】
G06F12/14 510D
(21)【出願番号】P 2021549895
(86)(22)【出願日】2020-03-06
(86)【国際出願番号】 EP2020055966
(87)【国際公開番号】W WO2020182638
(87)【国際公開日】2020-09-17
【審査請求日】2022-08-24
(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)【発明者】
【氏名】ヘラー、リサ
【審査官】平井 誠
(56)【参考文献】
【文献】SEONGWOOK JIN; ET AL,ARCHITECTURAL SUPPORT FOR SECURE VIRTUALIZATION UNDER A VULNERABLE HYPERVISOR,PROCEEDINGS OF THE 44TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE,米国,2011年,PAGE(S):272-283,http://dx.doi.org/10.1145/2155620.2155652
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 21/00-88
(57)【特許請求の範囲】
【請求項1】
コンピュータのメモリ内の位置への許可されていないアクセスを防ぐ前記コンピュータのセキュア・インターフェイス制御によって、ホスト絶対ページの保護に従って、前記ホスト絶対ページが仮想ページに以前にマッピングされていないということを決定することと、
前記セキュア・インターフェイス制御によって、前記ホスト絶対ページの保護に従って、ホスト仮想ページが絶対ページにまだマッピングされていないということを決定することと
を含
む方法において、
前記セキュア・インターフェイス制御が、関連する前記ホスト絶対ページと共にホスト仮想アドレスを登録して、セキュアな実体によって使用するためのホスト・アドレス対を作成し、前記セキュアな実体によるアクセス時に、前記ホスト仮想アドレスの一致をチェックする、
前記方法。
【請求項2】
前記セキュア・インターフェイス制御が前記ホスト絶対ページをセキュアとしてマーク付けする、請求項1に記載の方法。
【請求項3】
前記セキュア・インターフェイス制御が、前記セキュア・インターフェイス制御によって使用するための前記ホスト絶対ページを登録し、前記ホスト絶対ページを安全に復号し、その後、前記セキュア・インターフェイス制御によって使用するための前記ホスト絶対ページの登録を解除し、前記ホスト絶対ページをセキュア・ドメインに登録する、請求項1または2に記載の方法。
【請求項4】
前記セキュア・インターフェイス制御が、前記セキュア・インターフェイス制御によって使用するための前記ホスト絶対ページをロックし、前記ホスト絶対ページへの他の呼び出しを防ぐ、請求項1ないし
3のいずれか一項に記載の方法。
【請求項5】
前記セキュア・インターフェイス制御が、前記ホスト絶対ページのロックを解除し、前記メモリに読み込まれたセキュア・ゲスト・ドメインを割り当てる、請求項1ないし
4のいずれか一項に記載の方法。
【請求項6】
前記セキュアな実体が、前記コンピュータ上で実行されている信頼できない実体によって透過的にページインされた、
まだ暗号化されているセキュア・ページにアクセスする、請求項1ないし
5のいずれか一項に記載の方法。
【請求項7】
前記セキュア・ページが、非セキュアとしてマーク付けされている、請求項6に記載の方法。
【請求項8】
前記信頼できない実体がハイパーバイザであり、前記セキュアな実体がセキュア・ゲストである、請求項
6又は7に記載の方法。
【請求項9】
ハードウェアが、セキュア・ゲスト・ページの復号の必要性を示すプログラム割り込みを前記信頼できない実体に提示する、請求項
6ないし8のいずれか一項に記載の方法。
【請求項10】
前記信頼できない実体が、前記ホスト絶対ページおよび前記ホスト仮想ページを提供するインポート命令を発行する、請求項
6ないし9のいずれか一項に記載の方法。
【請求項11】
コンピュータに、請求項1ないし10のいずれか一項に記載の方法を実行させるためのプログラム。
【請求項12】
請求項11に記載のプログラムを記憶した記憶媒体。
【請求項13】
システムであって、
メモリと、
前記メモリ内の位置への許可されていないアクセスを防ぐ、前記システムのセキュア・インターフェイス制御とを備え、
コンピュータのメモリ内の位置への許可されていないアクセスを防ぐ前記コンピュータのセキュア・インターフェイス制御によって、ホスト絶対ページの保護に従って、前記ホスト絶対ページが仮想ページに以前にマッピングされていないということを決定することと、
前記セキュア・インターフェイス制御によって、前記ホスト絶対ページの保護に従って、ホスト仮想ページが絶対ページにまだマッピングされていないということを決定することとを含む動作を実行し、
前記セキュア・インターフェイス制御が、関連する前記ホスト絶対ページと共にホスト仮想アドレスを登録して、セキュアな実体によって使用するためのホスト・アドレス対を作成し、前記セキュアな実体によるアクセス時に、前記ホスト仮想アドレスの一致をチェックする、
前記システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータ技術に関し、より詳細には、セキュア・インターフェイス制御の高レベルのページ管理に関する。
【背景技術】
【0002】
クラウド・コンピューティングおよびクラウド・ストレージは、それらのデータをサードパーティのデータ・センターに格納して処理する能力をユーザに提供する。クラウド・コンピューティングは、顧客がハードウェアを購入することも、物理的サーバのための床スペースを提供することも必要とせずに、仮想マシン(VM:vertual machine)を顧客のために迅速かつ簡単にプロビジョニングする能力を促進する。顧客は、顧客の嗜好または要件の変化に従って、VMを簡単に拡大または縮小することができる。通常、クラウド・コンピューティング・プロバイダは、プロバイダのデータ・センターで、サーバ上に物理的に存在するVMをプロビジョニングする。特に、コンピューティング・プロバイダが、多くの場合、通常は2人以上の顧客のデータを同じサーバ上に格納するため、顧客は、多くの場合、VM内のデータのセキュリティについて心配する。顧客は、顧客自身のコード/データとプロバイダのサイトで実行されている他のVMのコード/データの間のセキュリティだけでなく、顧客自身のコード/データとクラウド・コンピューティング・プロバイダのコード/データの間のセキュリティを要求することがある。加えて、顧客は、マシン上で実行されている他のコードからの可能性のあるセキュリティ違反に対するセキュリティだけでなく、プロバイダの管理者からのセキュリティを要求することがある。
【0003】
そのような注意を要する状況に対処するために、クラウド・サービス・プロバイダは、適切なデータ分離および論理的ストレージ分離を保証するようにセキュリティ制御を実施することがある。クラウド・インフラストラクチャの実装における仮想化の広範囲に及ぶ使用の結果、仮想化が、オペレーティング・システム(OS:operating system)と基礎になるハードウェアの間の関係を(ハードウェアがコンピューティング、ストレージ、またはネットワークのいずれであっても)変更するため、クラウド・サービスの顧客に固有のセキュリティに関する懸念が生じる。このため仮想化は、それ自体が適切に構成され、管理され、保護されなければならない追加のレイヤとして導入される。
【0004】
一般に、ホスト・ハイパーバイザの制御下でゲストとして実行されるVMは、そのハイパーバイザが仮想化サービスをそのゲストに透過的に提供することに依存する。これらのサービスは、メモリ管理、命令エミュレーション、および割り込み処理を含む。
【0005】
メモリ管理の場合、VMは、そのデータをメモリに常駐させるためにディスクから移動する(ページインする)ことができ、VMは、そのデータをディスクに戻す(ページアウトする)こともできる。ページがメモリに常駐している間、VM(ゲスト)は、動的アドレス変換(DAT:dynamic address translation)を使用してメモリ内のページをゲスト仮想アドレスからゲスト絶対アドレスにマッピングする。加えて、ホスト・ハイパーバイザは、メモリ内のゲスト・ページに関して、それ自身の(ホスト仮想アドレスからホスト絶対アドレスへの)DATマッピングを有しており、ゲスト・ページを、ゲストから独立して透過的にメモリにページインし、メモリからページアウトすることができる。ホストDATテーブルによって、ハイパーバイザは、メモリ分離、または2つの分離したゲストVM間のゲスト・メモリの共有を実現する。ホストは、必要な場合に、ゲスト・メモリにアクセスし、ゲストの代わりにゲストの動作をシミュレートすることもできる。
【発明の概要】
【0006】
1つまたは複数の実施形態によれば、方法が提供される。コンピュータのセキュア・インターフェイス制御によって、コンピュータのメモリ内の位置への許可されていないアクセスを防ぐ方法が実施される。セキュア・インターフェイス制御は、ホスト絶対ページの保護に従って、ホスト絶対ページが仮想ページに以前にマッピングされておらず、ホスト絶対ページの保護に従って、ホスト仮想ページが絶対ページにまだマッピングされていないということを決定する。本明細書における本発明の1つまたは複数の実施形態の技術的効果および利点としては、すべての非セキュア・ゲストおよびハイパーバイザによるセキュア・ストレージへのアクセスを禁止することが挙げられる。
【0007】
1つまたは複数の実施形態または上記の方法の実施形態に従って、セキュア・インターフェイス制御は、ホスト絶対ページをセキュアとしてマーク付けすることができる。
【0008】
1つまたは複数の実施形態または上記の方法の実施形態のいずれかに従って、セキュア・インターフェイス制御は、セキュア・インターフェイス制御によって使用するためのホスト絶対ページを登録し、ホスト絶対ページを安全に復号し、その後、セキュア・インターフェイス制御によって使用するためのホスト絶対ページの登録を解除し、ホスト絶対ページをセキュア・ドメインに登録することができる。
【0009】
1つまたは複数の実施形態または上記の方法の実施形態のいずれかに従って、セキュア・インターフェイス制御は、関連するホスト絶対ページと共にホスト仮想アドレスを登録して、セキュアな実体によって使用するためのホスト・アドレス対を作成し、セキュアな実体によるアクセス時に、ホスト仮想アドレスの一致をチェックすることができる。
【0010】
1つまたは複数の実施形態または上記の方法の実施形態のいずれかに従って、セキュア・インターフェイス制御は、セキュア・インターフェイス制御によって使用するためのホスト絶対ページをロックし、ホスト絶対ページへの他の呼び出しを防ぐことができる。本明細書に記載された本発明の1つまたは複数の実施形態の技術的効果および利点としては、ストレージがセキュア・ゲストの制御下で単一のセキュア・ゲストとハイパーバイザの間で共有されているときに、セキュア・ゲスト間のストレージの共有がないことを保証することが挙げられる。
【0011】
1つまたは複数の実施形態または上記の方法の実施形態のいずれかに従って、セキュア・インターフェイス制御は、ホスト絶対ページのロックを解除し、メモリに読み込まれたセキュア・ゲスト・ドメインを割り当てることができる。本明細書に記載された本発明の1つまたは複数の実施形態の技術的効果および利点としては、ストレージがセキュア・ゲストの制御下で単一のセキュア・ゲストとハイパーバイザの間で共有されているときに、セキュア・ゲスト間のストレージの共有がないことを保証することが挙げられる。
【0012】
1つまたは複数の実施形態または上記の方法の実施形態のいずれかに従って、セキュアな実体は、コンピュータ上で実行されている信頼できない実体によって透過的にページインされた、非セキュアであるセキュア・ページにアクセスすることができる。
【0013】
1つまたは複数の実施形態または上記の方法の実施形態のいずれかに従って、信頼できない実体はハイパーバイザであることができ、セキュアな実体はセキュア・ゲストであることができる。本明細書に記載された本発明の1つまたは複数の実施形態の技術的効果および利点としては、いずれかの特定の常駐するセキュア・ゲスト・ページに関して、関連するホスト絶対アドレスが単一のハイパーバイザ(ホスト)DATマッピングのみを介してアクセス可能であるということを、ハイパーバイザが保証することが挙げられる。
【0014】
1つまたは複数の実施形態または上記の方法の実施形態のいずれかに従って、ハードウェアは、セキュア・ゲスト・ページの復号の必要性を示すプログラム割り込みを信頼できない実体に提示する。
【0015】
1つまたは複数の実施形態または上記の方法の実施形態のいずれかに従って、信頼できない実体は、ホスト絶対ページおよびホスト仮想ページを提供するインポート命令を発行することができる。
【0016】
1つまたは複数の実施形態または上記の方法の実施形態のいずれかに従って、この方法は、コンピュータ・プログラム製品またはシステムあるいはその両方として実装され得る。
【0017】
追加の特徴および利点が、本開示の手法によって実現される。本発明のその他の実施形態および態様は、本明細書において詳細に説明され、本発明の一部と見なされる。本発明を利点および特徴と共によく理解するために、説明および図面を参照されたい。
【0018】
本明細書に記載された専有権の詳細は、本明細書の最後にある特許請求の範囲において具体的に指摘され、明確に請求される。本発明の各実施形態の前述およびその他の特徴と利点は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0019】
【
図1】本発明の1つまたは複数の実施形態に従って、ゾーン・セキュリティのためのテーブルを示す図である。
【
図2】本発明の1つまたは複数の実施形態に従って、DATを実行するための仮想アドレス空間および絶対アドレス空間を示す図である。
【
図3】本発明の1つまたは複数の実施形態に従って、ハイパーバイザの下で実行されている仮想マシン(VM:virtual machine)を支援するためのネストされたマルチパートDAT(multi-part DAT)を示す図である。
【
図4】本発明の1つまたは複数の実施形態に従って、セキュア・ゲスト・ストレージのマッピングを示す図である。
【
図5】本発明の1つまたは複数の実施形態に従って、動的アドレス変換(DAT)動作のシステム概略図である。
【
図6】本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御メモリのシステム概略図である。
【
図7】本発明の1つまたは複数の実施形態に従って、インポート動作のプロセス・フローを示す図である。
【
図8】本発明の1つまたは複数の実施形態に従って、インポート動作のプロセス・フローを示す図である。
【
図9】本発明の1つまたは複数の実施形態に従って、提供されたメモリの動作のプロセスを示す図である。
【
図10】本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御のセキュア・ページへの非セキュア・ハイパーバイザ・ページの遷移のプロセス・フローを示す図である。
【
図11】本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御によって行われるセキュア・ストレージ・アクセスのプロセス・フローを示す図である。
【
図12】本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御およびハードウェアによるアクセスのタグ付けのプロセス・フローを示す図である。
【
図13】本発明の1つまたは複数の実施形態に従って、プログラムおよびセキュア・インターフェイス制御によってセキュア・アクセスおよび非セキュア・アクセスを支援するための変換のプロセス・フローを示す図である。
【
図14】本発明の1つまたは複数の実施形態に従って、プログラムおよびセキュア・インターフェイス制御によるセキュア・ストレージの保護を伴うDATのプロセス・フローを示す図である。
【
図15】本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御の高レベルのページ管理のためのプロセス・フローを示す図である。
【
図16】本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御の高レベルのページ管理のためのプロセス・フローを示す図である。
【
図17】本発明の1つまたは複数の実施形態に従って、クラウド・コンピューティング環境を示す図である。
【
図18】本発明の1つまたは複数の実施形態に従って、抽象モデル・レイヤを示す図である。
【
図19】本発明の1つまたは複数の実施形態に従って、システムを示す図である。
【
図20】本発明の1つまたは複数の実施形態に従って、ノードを示す図である。
【発明を実施するための形態】
【0020】
本明細書において示される図は、実例である。本発明の思想から逸脱することなく、本明細書に記載された図または動作の多くの変形が存在することが可能である。例えば、動作は異なる順序で実行されることが可能であり、あるいは動作は追加、削除、または変更されることが可能である。また、「結合される」という用語およびその変形は、2つの要素間に通信経路が存在することを表しており、それらの要素間に要素/接続が介在しない要素間の直接的接続を意味していない。これらのすべての変形は、本明細書の一部であると見なされる。
【0021】
本発明の1つまたは複数の実施形態は、本明細書ではセキュア・インターフェイス制御と呼ばれるセキュリティの追加レイヤを、信頼できない実体の制御下でホスト・コンピュータ上で実行されている仮想マシン(VM:virtual machines)に提供する。特に、セキュア・インターフェイス制御は、セキュアな実体(例えば、ゲスト、VM、またはコンテナ)と信頼できない実体(例えば、信頼できないセキュアでない実体、ホスト、ハイパーバイザ、またはOS)の間で、効率的な軽量の信頼できるファームウェア・インターフェイスを活用して、このセキュリティの向上を行う。セキュア・インターフェイス制御は、いずれかのセキュア・ページのホスト仮想アドレスとホスト絶対アドレスの間の登録されたマッピングを維持および使用して、信頼できない実体が、高レベルのセキュリティを引き続き提供しながら、これらのページに関するページ管理機能を提供し続けることができるようにする。これに関して、セキュア・インターフェイス制御がこれらのページのマッピングにおけるセキュリティを保証しながら、セキュア・インターフェイス制御がシャドウ・テーブル(およびシャドウ・テーブルに関連する高い性能上のコスト)を維持することなく、信頼できない実体がセキュア・ゲスト・ページを管理し続けることができるようにするような方法で、セキュア・インターフェイス制御および信頼できない実体がページ管理を提供できるように、新しいインターフェイスが使用される。
【0022】
本明細書における本発明の1つまたは複数の実施形態の技術的効果および利点としては、すべての非セキュア・ゲストおよびハイパーバイザによるセキュア・ストレージへのアクセスを禁止することが挙げられる。さらに、本明細書に記載された本発明の1つまたは複数の実施形態の技術的効果および利点としては、ハイパーバイザが、いずれかの特定の常駐するセキュア・ゲスト・ページに関して、関連するホスト絶対アドレスが単一のハイパーバイザ(ホスト)DATマッピングのみを介してアクセス可能である(すなわち、セキュア・ゲストに割り当てられたいずれかの特定のホスト絶対アドレスにマッピングされる単一のホスト仮想アドレスが存在する)ということと、いずれかの特定のセキュア・ゲスト・ページに関連付けられたハイパーバイザのDATマッピング(ホスト仮想からホスト絶対へのマッピング)が、このページがページインしている間に変化していないことと、いずれかのセキュア・ゲスト・ページに関連付けられたホスト絶対ページが単一のセキュア・ゲストのみに関してマッピングされるということとを、ハイパーバイザが保証することが挙げられる。さらに、ストレージが、セキュア・ゲストの制御下で、単一のセキュア・ゲストとハイパーバイザの間で共有されているときに、セキュア・ゲスト間のストレージの共有が存在しない。
【0023】
ホスト・ハイパーバイザの制御下でゲストとして実行される仮想マシン(VM)(例えば、信頼できない実体)は、そのハイパーバイザが仮想化サービスをそのゲストに透過的に提供することに依存する。これらのサービスは、セキュアな実体と別の信頼できない実体の間の、この他の実体によるセキュア・リソースへのアクセスを従来は許可していた任意のインターフェイスに適用され得る。前述したように、これらのサービスは、メモリ管理、命令エミュレーション、および割り込み処理を含むことができるが、これらに限定されない。例えば、割り込みおよび例外の投入の場合、ハイパーバイザは、通常、ゲストのプレフィックス領域(ロー・コア)に対して、読み取りまたは書き込みあるいはその両方を行う。「仮想マシン」または「VM」という用語は、本明細書において使用されるとき、物理マシン(コンピューティング・デバイス、プロセッサなど)およびその処理環境(オペレーティング・システム(OS)、ソフトウェア・リソースなど)の論理的表現のことを指す。VMは、基礎になるホスト・マシン(物理プロセッサまたはプロセッサのセット)上で実行されるソフトウェアとして維持される。ユーザまたはソフトウェア・リソースの視点からは、VMは、それ自身が独立した物理マシンであるように見える。「ハイパーバイザ」および「VMモニタ(VMM:VM Monitor)」という用語は、本明細書において使用されるとき、同じホスト・マシン上で複数の(しばしば異なる)OSを使用して実行するように、複数のVMを管理および許可する処理環境またはプラットフォーム・サービスのことを指す。VMをデプロイすることが、VMのインストール・プロセスおよびVMの有効化(または起動)プロセスを含むということが、理解されるべきである。別の例では、VMをデプロイすることは、VMの有効化(または起動)プロセスを含む(例えば、VMがすでにインストールされているか、またはすでに存在する場合)。
【0024】
セキュア・ゲスト(例えば、セキュアな実体)を促進し、支援するためには、ハイパーバイザがVMのデータにアクセスできず、したがって本明細書に記載された方法でサービスを提供できないように、ハイパーバイザに依存しない、ハイパーバイザとセキュア・ゲストの間のセキュリティの向上が必要になるという技術的課題が存在する。
【0025】
本明細書に記載されたセキュアな実行は、セキュア・ストレージと非セキュア・ストレージの間の分離、および異なるセキュアなユーザに属するセキュア・ストレージ間の分離を保証するためのハードウェア・メカニズムを提供する。セキュア・ゲストの場合、「信頼できない」非セキュア・ハイパーバイザとセキュア・ゲストの間のセキュリティが強化される。これを行うには、通常はゲストの代わりにハイパーバイザが実行する機能の多くがマシンに組み込まれる必要がある。ハイパーバイザとセキュア・ゲストの間のセキュア・インターフェイスを提供するための新しいセキュア・インターフェイス制御(本明細書では、「UV」とも呼ばれる)が、本明細書において説明される。セキュア・インターフェイス制御およびウルトラバイザという用語は、本明細書では交換可能なように使用され得る。セキュア・インターフェイス制御は、ハードウェアと連携して機能し、このセキュリティの向上を実現する。
【0026】
セキュア・インターフェイス制御は、1つの例では、内部のセキュアな信頼できるハードウェアまたはファームウェアあるいはその両方に実装される。セキュア・ゲストまたはセキュアな実体に関して、セキュア・インターフェイス制御は、セキュアな環境の初期化および維持に加えて、ハードウェア上でこれらのセキュアな実体のディスパッチの調整を行う。セキュア・ゲストがデータを活発に使用しており、ホスト・ストレージに常駐している間、このセキュア・ゲストは、セキュア・ストレージ内で「疑いが晴れた状態」に保たれる。その単一のセキュア・ゲストによって、セキュア・ゲスト・ストレージにアクセスすることができ、このアクセスは、ハードウェアによって厳密に実施される。すなわち、ハードウェアは、任意のセキュアでない実体(ハイパーバイザまたはその他の非セキュア・ゲストを含む)または異なるセキュア・ゲストがそのデータにアクセスするのを防ぐ。この例では、セキュア・インターフェイス制御は、最低レベルのファームウェアの信頼できる部分として実行される。この最低レベル、またはミリコードは、実際にはハードウェアの拡張であり、例えばIBMのzAarchitecture(R)において定義されている複雑な命令および機能を実装するために使用される。ミリコードは、セキュアな実行との関連において、それ自身のセキュアUVストレージ、非セキュア・ハイパーバイザ・ストレージ、セキュア・ゲスト・ストレージ、および共有ストレージを含む、ストレージのすべての部分にアクセスすることができる。これによって、ミリコードは、セキュア・ゲストによって、またはそのゲストの支援においてハイパーバイザによって必要とされるすべての機能を提供することができる。セキュア・インターフェイス制御は、ハードウェアに直接アクセスすることもでき、セキュア・インターフェイス制御によって確立された条件の制御下で、ハードウェアが効率的にセキュリティ・チェックを実行できるようにする。
【0027】
本発明の1つまたは複数の実施形態に従って、セキュア・ページをマーク付けするためのセキュア・ストレージ・ビットがハードウェアにおいて提供される。このビットが設定された場合、ハードウェアは、非セキュア・ゲストまたは非セキュア・ハイパーバイザがこのページにアクセスするのを防ぐ。加えて、各セキュア・ページまたは共有されたページが、ゾーン・セキュリティ・テーブルに登録され、セキュア・ゲスト・ドメイン識別情報(ID)でタグ付けされる。ページは、非セキュアである場合、非セキュアであるとしてゾーン・セキュリティ・テーブル内でマーク付けされる。このゾーン・セキュリティ・テーブルは、セキュア・インターフェイス制御によって、パーティションまたはゾーンごとに維持される。ページが、このページを所有しているセキュア・ゲストまたはセキュアな実体のみによってアクセスされることを検証するために、セキュアな実体によって行われるいずれかのDAT変換時にハードウェアによって使用される、ホスト絶対ページごとに1つのエントリが存在する。
【0028】
本発明の1つまたは複数の実施形態に従って、ソフトウェアは、UV呼び出し(UVC:UVCall)命令を使用して、セキュア・インターフェイス制御に対して特定の動作を実行するよう要求する。例えば、UVC命令は、ハイパーバイザによって、セキュア・インターフェイス制御を初期化し、セキュア・ゲスト・ドメイン(例えば、セキュア・ゲスト構成)を作成し、そのセキュアな構成内で仮想CPUを作成するために使用され得る。UVC命令は、ハイパーバイザのページイン動作またはページアウト動作の一部として、セキュア・ゲスト・ページをインポートすること(復号してセキュア・ゲスト・ドメインに割り当てること)、およびエクスポートすること(暗号化してホストがアクセスできるようにすること)にも使用され得る。加えて、セキュア・ゲストは、ハイパーバイザと共有されるストレージを定義し、セキュア・ストレージを共有にし、共有ストレージをセキュアにする能力を有する。
【0029】
セキュリティを提供するために、ハイパーバイザがセキュア・ゲストのデータを透過的にページインおよびページアウトしているときに、ハードウェアと連携しているセキュア・インターフェイス制御は、データの復号および暗号化を提供し、保証する。これを実現するために、ハイパーバイザは、セキュア・ゲスト・データをページインおよびページアウトするときに、新しいUVCを発行する必要がある。ハードウェアは、これらの新しいUVCの間にセキュア・インターフェイス制御によって設定された制御に基づいて、これらのUVCがハイパーバイザによって実際に発行されることを保証する。
【0030】
この新しいセキュアな環境では、ハイパーバイザは、セキュア・ページをページアウトしているときに常に、新しいセキュア・ストレージからの変換(エクスポート)UVCを発行する必要がある。セキュア・インターフェイス制御は、このエクスポートUVCに応答して、(1)ページがUVによって「ロックされている」ことを示し、(2)ページを暗号化し、(3)ページを非セキュアに設定し、(4)UVのロックをリセットする。エクスポートUVCが完了した後に、ハイパーバイザは、次に暗号化されたゲスト・ページをページアウトできるようになる。
【0031】
加えて、ハイパーバイザは、セキュア・ページにページインしているときに常に、新しいセキュア・ストレージへの変換(インポート)UVCを発行しなければならない。UVまたはセキュア・インターフェイス制御は、このインポートUVCに応答して、(1)ページをハードウェア内でセキュアとしてマーク付けし、(2)ページがUVによって「ロックされている」ことを示し、(3)ページを復号し、(4)特定のセキュア・ゲスト・ドメインに対する権限を設定し、(5)UVのロックをリセットする。アクセスがセキュアな実体によって行われるときに常に、変換中にハードウェアは、そのページに対して許可チェックを実行する。これらのチェックは、(1)ページが、このページにアクセスしようとしているセキュア・ゲスト・ドメインに実際に属していることを検証するためのチェック、および(2)このページがゲスト・メモリに常駐している間にハイパーバイザがこのページのホストのマッピングを変更していないことを確認するためのチェックを含む。ページがセキュアとしてマーク付けされた後に、ハードウェアは、ハイパーバイザまたは非セキュア・ゲストVMのいずれかによるすべてのセキュア・ページへのアクセスを防ぐ。追加の変換ステップが、別のセキュアVMによるアクセスを防ぎ、ハイパーバイザによる再マッピングを防ぐ。
【0032】
ここで
図1を参照すると、本発明の1つまたは複数の実施形態に従って、ゾーン・セキュリティのためのテーブル100が概して示されている。
図1に示されているゾーン・セキュリティ・テーブル100は、セキュアな実体によってアクセスされるすべてのページへのセキュアなアクセスを保証するために、セキュア・インターフェイス制御によって維持され、セキュア・インターフェイス制御およびハードウェアによって使用される。ゾーン・セキュリティ・テーブル100は、ホスト絶対アドレス110によってインデックス付けされる。すなわち、ホスト絶対ストレージのページごとに1つのエントリが存在する。各エントリは、アクセスを行っているセキュアな実体に属しているとしてエントリを検証するために使用される情報を含んでいる。
【0033】
さらに、
図1に示されているように、ゾーン・セキュリティ・テーブル100は、セキュア・ドメインID120(ページに関連付けられたセキュア・ドメインを識別する)と、UVビット130(このページがセキュア・インターフェイス制御に提供されており、セキュア・インターフェイス制御によって所有されていることを示す)と、アドレス比較無効化(DA)ビット140(ホスト絶対として定義されたセキュア・インターフェイス制御のページが関連するホスト仮想アドレスを有していないなどの場合に、特定の環境内でホスト・アドレス対の比較を無効化するために使用される)と、共有(SH)ビット150(ページが非セキュア・ハイパーバイザと共有されていることを示す)と、ホスト仮想アドレス160(このホスト絶対アドレスの登録されたホスト仮想アドレスを示し、これらのアドレスはホスト・アドレス対と呼ばれる)とを含んでいる。ホスト・アドレス対が、ホスト絶対アドレスと、関連する登録されたホスト仮想アドレスとを示すということに注意する。ホスト・アドレス対は、ハイパーバイザによってインポートされた後の、このページのマッピングを表し、比較は、このページがゲストによって使用されている間に、ホストがこのページを再マッピングしていないことを保証する。
【0034】
動的アドレス変換(DAT)は、仮想ストレージを実ストレージにマッピングするために使用される。ゲストVMがハイパーバイザの制御下でページング可能なゲストとして実行されている場合、ゲストは、DATを使用してメモリに常駐するページを管理する。加えて、ホストは、ゲスト・ページがメモリに常駐しているときに、独立してDATを使用して、それらのゲスト・ページを(ホスト自身のページと共に)管理する。ハイパーバイザは、DATを使用して、異なるVM間のストレージの分離または共有あるいはその両方を提供するだけでなく、ハイパーバイザ・ストレージへのゲストのアクセスを防ぐ。ハイパーバイザは、ゲストが非セキュア・モードで実行されているときに、すべてのゲストのストレージにアクセスすることができる。
【0035】
DATは、アプリケーションが共有リソースを共有することを引き続き許可しながら、アプリケーション間の分離を可能にする。また、DATはVMの実装を許可し、VMは、アプリケーション・プログラムの同時処理と共に、OSの新しいバージョンの設計およびテストにおいて使用することができる。仮想アドレスは、仮想ストレージ内の位置を識別する。アドレス空間は、連続する一連の仮想アドレスであり、各仮想アドレスを関連する絶対アドレスに変換できるようにする特定の変換パラメータ(DATテーブルを含む)を伴っており、絶対アドレスは、ストレージ内のバイト位置でそのアドレスを識別する。
【0036】
DATは、複数の検索テーブルを使用して、仮想アドレスを関連する絶対アドレスに変換する。このテーブル構造は、通常、ストレージ・マネージャによって定義され、維持される。このストレージ・マネージャは、例えば、あるページをページアウトし、別のページを取り込むことによって、複数のプログラム間で絶対ストレージを透過的に共有する。ページがページアウトされるときに、ストレージ・マネージャは、例えば、関連するページ・テーブル内で無効ビットを設定する。プログラムが、ページアウトされたページにアクセスしようとするときに、ハードウェアがプログラム割り込み(多くの場合、ページ・フォールトと呼ばれる)をストレージ・マネージャに提示する。それに応じて、ストレージ・マネージャは、要求されたページをページインし、無効ビットをリセットする。これは、プログラムにとってすべて透過的に実行され、ストレージ・マネージャがストレージを仮想化し、さまざまな異なるユーザ間で共有することを可能にする。
【0037】
CPUによって仮想アドレスが使用されて主記憶装置にアクセスする場合、仮想アドレスは、まずDATを用いて実アドレスに変換され、次にプレフィックス変換を用いて絶対アドレスに変換される。特定のアドレス空間に対する最高レベルのテーブルの指定(原点および長さ)は、アドレス空間制御要素(ASCE:address-space-control element)と呼ばれ、関連するアドレス空間を定義する。
【0038】
ここで
図2を参照すると、本発明の1つまたは複数の実施形態に従って、DATを実行するための例示的な仮想アドレス空間202および204ならびに絶対アドレス空間206が概して示されている。
図2に示されている例では、仮想アドレス空間202(アドレス空間制御要素(ASCE)A208によって定義される)および仮想アドレス空間204(ASCE B210によって定義される)という2つの仮想アドレス空間が存在する。ストレージ・マネージャによって、ASCE A208を使用して、仮想ページA1.V212a1、A2.V212a2、およびA3.V212a3が、複数の検索テーブル(セグメント230およびページ・テーブル232a、232b)内で、絶対ページA1.A220a1、A2.A220a2、およびA3.A220a3にマッピングされる。同様に、ASCE B210を使用して、仮想ページB1.V214b1およびB2.V214b2が、2つの検索テーブル234および236内で、絶対ページB1.A222b1およびB2.A222b2にそれぞれマッピングされる。
【0039】
ここで
図3を参照すると、本発明の1つまたは複数の実施形態に従って、ハイパーバイザの下で実行されているVMを支援するために使用されるネストされたマルチパートDAT変換の例が、概して示されている。
図3に示されている例では、ゲストAの仮想アドレス空間A302(ゲストASCE(GASCE)A304によって定義される)およびゲストBの仮想アドレス空間B306(GASCEB308によって定義される)の両方が、共有ホスト(ハイパーバイザ)仮想アドレス空間325に存在する。図に示されているように、ゲストAのストレージ・マネージャによって、GASCEA304を使用して、ゲストAに属している仮想ページA1.GV310a1、A2.GV310a2、およびA3.GV310a3が、ゲスト絶対ページ(guest absolute pages)A1.HV340a1、A2.HV340a2、およびA3.HV340a3にそれぞれマッピングされ、ゲストBのストレージ・マネージャによって、独立してGASCEB308を使用して、ゲストBに属している仮想ページB1.GV320b1およびB2.GV320b2が、ゲスト絶対ページB1.HV360b1およびB2.HV360b2にそれぞれマッピングされる。この例では、これらのゲスト絶対ページは、共有ホスト仮想アドレス空間325に直接マッピングされ、その後、ホスト絶対アドレス空間330への追加のホストDAT変換を受ける。図に示されているように、ホストのストレージ・マネージャによって、ホストASCE(HASCE)350を使用して、ホスト仮想アドレスA1.HV340a1、A3.HV340a3、およびB1.HV360b1が、A1.HA370a1、A3.HA370a3、およびB1.HA370b1にマッピングされる。ゲストAに属しているホスト仮想アドレスA2.HV340a2、およびゲストBに属しているB2.HV360b2の両方が、同じホスト絶対ページ(host absolute page)AB2.HA380にマッピングされる。これによって、これら2つのゲスト間でデータを共有できるようにする。ゲストDAT変換中に、ゲストのテーブル・アドレスの各々が、ゲスト絶対として扱われ、追加のネストされたホストDAT変換を受ける。
【0040】
本明細書に記載された本発明の実施形態は、セキュア・ゲストおよびUVストレージの保護を実現する。非セキュア・ゲストおよびハイパーバイザによるセキュア・ストレージへのアクセスが禁止される。ハイパーバイザは、特定の常駐するセキュア・ゲスト・ページに関して、次のことを発生させる。関連するホスト絶対アドレスが、単一のハイパーバイザ(ホスト)DATマッピングのみによってアクセス可能になる。すなわち、セキュア・ゲストに割り当てられた特定のホスト絶対アドレスにマッピングされる単一のホスト仮想アドレスが存在する。特定のセキュア・ゲスト・ページに関連付けられたハイパーバイザの(ホスト仮想からホスト絶対への)DATマッピングは、このページがページインされている間に変化しない。セキュア・ゲスト・ページに関連付けられたホスト絶対ページは、単一のセキュア・ゲストに関してマッピングされる。
【0041】
本発明の1つまたは複数の実施形態に従って、セキュア・ゲスト間のストレージの共有も禁止される。ストレージは、セキュア・ゲストの制御下で、単一のセキュア・ゲストとハイパーバイザの間で共有される。UVストレージは、セキュア・ストレージであり、セキュア制御インターフェイスによってアクセス可能であるが、ゲスト/ホストによるアクセスは不可能である。ストレージは、ハイパーバイザによってセキュア制御インターフェイスに割り当てられる。本発明の1つまたは複数の実施形態によれば、これらのルールの試みられたすべての違反が、ハードウェアおよびセキュア制御インターフェイスによって禁止される。
【0042】
ここで
図4を参照すると、本発明の1つまたは複数の実施形態に従って、セキュア・ゲスト・ストレージのマッピングの例が概して示されている。
図4は
図3に似ているが、
図4の例が、セキュア・ゲストAとセキュア・ゲストBの間のストレージの共有を可能にしない点が異なっている。
図3のセキュアでない例では、ゲストAに属しているホスト仮想アドレスA2.HV340a2、およびゲストBに属しているB2.HV360b2の両方が、同じホスト絶対ページAB2.HA380にマッピングされる。
図4のセキュア・ゲスト・ストレージの例では、ゲストAに属しているホスト仮想アドレスA2.HV340a2がホスト絶対アドレスA2.HA490aにマッピングされ、一方、ゲストBに属しているB2.HV360b2が、それ自身のB2.HA490bにマッピングされる。この例では、セキュア・ゲスト間に共有が存在しない。
【0043】
セキュア・ゲスト・ページは、ディスク上に存在する間、暗号化されている。ハイパーバイザは、セキュア・ゲスト・ページをページインするときにUV呼び出し(UVC)を発行し、このUVCは、セキュア制御インターフェイスに、(共有されていない限り)ページをセキュアとしてマーク付けし、(共有されていない限り)復号し、適切なセキュア・ゲスト(例えば、ゲストA)に属しているとして(ゾーン・セキュリティ・テーブルに)登録することを実行させる。加えて、ハイパーバイザは、関連するホスト仮想アドレス(例えば、A3.HV340a3)を、そのホスト絶対ページ(ホスト・アドレス対と呼ばれる)に登録する。ハイパーバイザは、正しいUVCを発行できない場合、セキュア・ゲスト・ページにアクセスしようとするときに、例外を受信する。ハイパーバイザがゲスト・ページをページアウトするときに同様のUVCが発行され、このUVCは、ゲスト・ページを非セキュアとしてマーク付けして、非セキュアとしてゾーン・セキュリティ・テーブルに登録する前に、(共有されていない限り)ゲスト・ページを暗号化する。
【0044】
5つの特定のホスト絶対ページK、P、L、M、およびNを含んでいる例では、ハイパーバイザがこれらのホスト絶対ページをページインするときに、セキュア制御インターフェイスによってホスト絶対ページの各々がセキュアとしてマーク付けされる。これによって、非セキュア・ゲストおよびハイパーバイザがこれらのホスト絶対ページにアクセスするのを防ぐ。ハイパーバイザがホスト絶対ページK、P、およびMをページインするときに、これらのホスト絶対ページが、ゲストAに属しているとして登録され、ホスト絶対ページLおよびNが、ハイパーバイザによってページインされるときに、ゲストBに登録される。共有ページ(単一のセキュア・ゲストとハイパーバイザの間で共有されたページ)は、ページング中に暗号化も復号も実行されない。これらの共有ページは、セキュアとしてマーク付けされない(ハイパーバイザによるアクセスを許可する)が、単一のセキュア・ゲスト・ドメインと共にゾーン・セキュリティ・テーブルに登録される。
【0045】
本発明の1つまたは複数の実施形態に従って、非セキュア・ゲストまたはハイパーバイザが、セキュア・ゲストによって所有されているページにアクセスしようとするときに、ハイパーバイザがセキュア・ストレージ・アクセス(PIC3D)例外を受信する。これを決定するための追加の変換ステップは不要である。
【0046】
1つまたは複数の実施形態に従って、セキュアな実体がページにアクセスしようとするときに、ハードウェアが追加の変換チェックを実行し、ストレージがその特定のセキュア・ゲストに実際に属していることを検証する。ストレージがその特定のセキュア・ゲストに属していない場合、非セキュア・アクセス(PCI3E)例外がハイパーバイザに提示される。加えて、変換されているホスト仮想アドレスが、ゾーン・セキュリティ・テーブル内の登録済みのホスト・アドレス対のホスト仮想アドレスに一致しない場合、セキュア・ストレージ違反(「3F」x)例外が認識される。ハイパーバイザとの共有を可能にするために、セキュア・ゲストは、変換チェックがアクセスを許す限り、セキュアとしてマーク付けされていないストレージにアクセスすることができる。
【0047】
ここで
図5を参照すると、本発明の1つまたは複数の実施形態に従って、DAT動作のシステム概略
図500が概して示されている。システム概略
図500は、一次ホスト仮想アドレス空間(host primary virtual address space)510およびホーム・ホスト仮想アドレス空間(host home virtual address space)520を含んでおり、これらの仮想アドレス空間のページが、ハイパーバイザ(ホスト)絶対アドレス空間530に変換される(例えば、ホストDAT変換525を参照(点線がDAT変換525によるマッピングを表していることに注意する))。例えば、
図5は、2つの異なるホスト仮想アドレス空間によるホスト絶対ストレージの共有を示しており、2つのゲスト間だけでなく、ホスト自体とのそれらのホスト仮想アドレスのうちの1つの共有も示している。これに関して、一次ホスト仮想アドレス空間510およびホーム・ホスト仮想アドレス空間520は、2つのホスト仮想アドレス空間の例であり、これらのホスト仮想アドレス空間の各々は、別々のASCE(一次ホストASCE(HPASCE:host primary ASCE)591およびホーム・ホストASCE(HHASCE:host home ASC)592)によってそれぞれアドレス指定される。すべてのセキュア・インターフェイス制御のストレージ(仮想および現実の両方)が、ハイパーバイザによって提供され、セキュアとしてマーク付けされるということに注意する。セキュア・インターフェイス制御のストレージは、提供された後に、関連するセキュアな実体が存在する限り、セキュア・インターフェイス制御のみによってアクセスされ得る。
【0048】
図に示されているように、一次ホスト仮想アドレス空間510は、ゲストAの絶対ページA1.HV、ゲストAの絶対ページA2.HV、ゲストBの絶対ページB1.HV、およびホスト仮想ページH3.HVを含んでいる。ホーム・ホスト仮想アドレス空間520は、セキュア・インターフェイス制御の仮想ページU1.HV、ホスト仮想ページH1.HV、およびホスト仮想ページH2.HVを含んでいる。
【0049】
本発明の1つまたは複数の実施形態に従って、すべてのセキュア・ゲスト(例えば、セキュア・ゲストAおよびセキュア・ゲストB)ストレージが、本明細書に記載されたゾーン・セキュリティ・テーブルに、セキュア・ゲスト構成に属しているとして登録され、関連するホスト仮想アドレス(例えば、A1.HV、A2.HV、B1.HV)も、ホスト・アドレス対の一部として登録される。1つまたは複数の実施形態では、すべてのセキュア・ゲスト・ストレージが、一次ホスト仮想空間内でマッピングされる。加えて、すべてのセキュア・インターフェイス制御のストレージが、やはりゾーン・セキュリティ・テーブルに、セキュア・インターフェイス制御に属しているとして登録され、関連するセキュア・ゲスト・ドメインに基づいて、ゾーン・セキュリティ・テーブル内でさら区別されてよい。本発明の1つまたは複数の実施形態に従って、UV仮想ストレージが、ホーム・ホスト仮想空間(host home virtual space)内でマッピングされ、関連するホスト仮想アドレスがホスト・アドレス対の一部として登録される。1つまたは複数の実施形態に従って、UV実ストレージが、関連するホスト仮想マッピングを有しておらず、ゾーン・セキュリティ・テーブル内のDAビット(仮想アドレスの比較が無効化されることを示す)が、そのことを示すように設定される。ホスト・ストレージが、非セキュアとしてマーク付けされ、非セキュアとしてゾーン・セキュリティ・テーブルにも登録される。
【0050】
したがって、「ゲスト絶対=ホスト仮想」である場合、ハイパーバイザ(ホスト)一次DATテーブル(HPASCE591によって定義される)は、一次ホスト仮想アドレス空間510のページを、次のように変換する。ゲストAの絶対ページA1.HVが、セキュア・ゲストAに属しているホスト絶対A1.HAにマッピングされ、ゲストAの絶対ページA2.HVが、セキュア・ゲストAに属しているホスト絶対A2.HAにマッピングされ、ゲストBの絶対ページB1.HAが、セキュア・ゲストBに属しているホスト絶対B1.HAにマッピングされ、ホスト仮想ページH3.HVが、ホスト絶対ページH3.HA 非セキュア・ホストにマッピングされる(非セキュアであるため、ホスト・アドレス対が存在しない)。さらに、ハイパーバイザ(ホスト)ホームDATテーブル(HHASCE592によって定義される)が、ホーム・ホスト仮想アドレス空間520のページを、次のように変換する。セキュア・インターフェイス制御の仮想ページU1.HVが、セキュアUV仮想として定義されたホスト絶対ページU1.HAにマッピングされ、ホスト仮想ページH1.HVが、非セキュアとして定義されたホスト絶対ページH1.HAにマッピングされ、ホスト仮想ページH2.HVが、非セキュアとして定義されたホスト絶対ページH2.HAにマッピングされる。H1.HAおよびH2.HAは非セキュアであるため、これらのいずれかに関連付けられたホスト・アドレス対は存在しない。
【0051】
動作中に、セキュア・ゲストが、セキュア・インターフェイス制御に割り当てられたセキュア・ページにアクセスしようとした場合、ハードウェアによってセキュア・ストレージ違反(「3F」X)例外がハイパーバイザに提示される。非セキュア・ゲストまたはハイパーバイザが、いずれかのセキュア・ページ(セキュア・インターフェイス制御に割り当てられたセキュア・ページを含む)にアクセスしようとした場合、ハードウェアによってセキュア・ストレージ・アクセス(「3D」X)例外がハイパーバイザに提示される。代替として、セキュア・インターフェイス制御の空間に対して試みられたアクセスに関して、エラー状態が提示され得る。ハードウェアが、セキュア・インターフェイス制御のアクセス時に、セキュアな割り当てにおいて不一致を検出した場合(例えば、ストレージが、セキュア・インターフェイス制御ではなくセキュア・ゲストに属しているとしてゾーン・セキュリティ・テーブルに登録されたか、または使用されているホスト・アドレス対に、登録済みの対との不一致が存在する場合)、チェックが提示される。
【0052】
言い換えると、一次ホスト仮想アドレス空間510は、ホスト仮想ページA1.HVおよびA2.HV(セキュア・ゲストAに属している)ならびにB1.HV(セキュア・ゲストBに属している)を含んでおり、これらのホスト仮想ページは、ホスト絶対A1.HA、A2.HA、およびB1.HAにそれぞれマッピングされる。加えて、一次ホスト仮想アドレス空間510は、ホスト絶対H3.HAにマッピングされるホスト(ハイパーバイザ)ページH3.HVを含んでいる。ホーム・ホスト仮想空間520は、ホスト絶対ページH1.HAおよびH2.HAにマッピングされる2つのホスト仮想ページH1.HVおよびH2.HVを含んでいる。一次ホスト仮想アドレス空間510およびホーム・ホスト仮想アドレス空間520の両方は、単一のホスト絶対530にマッピングされる。セキュア・ゲストAおよびセキュア・ゲストBに属しているストレージ・ページは、セキュアとしてマーク付けされ、それらのセキュア・ドメインおよび関連するホスト仮想アドレスと共に、
図1に示されているゾーン・セキュリティ・テーブル100に登録される。一方、ホスト・ストレージは、非セキュアとしてマーク付けされる。ハイパーバイザは、セキュア・ゲストを定義している場合、これらのセキュア・ゲストの支援において必要なセキュア制御ブロック(secure control blocks)に使用するために、ホスト・ストレージをセキュア・インターフェイス制御に提供しなければならない。このストレージは、ホスト絶対空間またはホスト仮想空間のいずれかにおいて、および1つの例では、特に、ホーム・ホスト仮想空間において定義され得る。
図5に戻り、ホスト絶対ページU1.HAおよびU2.HA セキュアUV絶対は、ホスト絶対ストレージとして定義されているセキュア・インターフェイス制御のストレージである。その結果、これらのページは、セキュアとしてマーク付けされ、セキュア・インターフェイス制御に属しているとして、関連するセキュア・ドメインと共に、
図1に示されているゾーン・セキュリティ・テーブル100に登録される。これらのページはホスト絶対アドレスとして定義されるため、関連するホスト仮想アドレスが存在せず、そのためゾーン・セキュリティ・テーブル100内のDAビットが設定される。
【0053】
変換後のハイパーバイザ(ホスト)絶対アドレス空間530の例が、
図6で見出すことができる。
図6では、本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御メモリに関するシステム概略
図600が示されている。システム概略
図600は、ホスト絶対ページA2.HA セキュア・ゲストA(A2.HV用)、ホスト絶対ページB1.HA セキュア・ゲストB(B1.HV用)、ホスト絶対ページH1.HA 非セキュア(ホスト)、ホスト絶対ページH2.HA 非セキュア(ホスト)、ホスト絶対ページU3.HA セキュアUV現実(HVマッピングなし)、ホスト絶対ページU1.HA セキュアUV仮想(U1.HV用)、およびホスト絶対ページA1.HA セキュア・ゲストA(A1.HV用)を含んでいるハイパーバイザ(ホスト)絶対アドレス空間630を示している。
【0054】
ここで
図7を参照すると、本発明の1つまたは複数の実施形態に従って、インポート動作のプロセス・フロー700が概して示されている。セキュア・ゲストが、ハイパーバイザによってページアウトされたページにアクセスするときに、そのページを安全に取り戻すために、プロセス・フロー700に示されているイベントなどの一連のイベントが発生する。プロセス・フロー700はブロック705で開始し、ブロック705で、セキュア・ゲストがゲスト仮想ページにアクセスする。例えばこのページが無効であるため、ハードウェアが、プログラム割り込みコード11(PIC11)によって示されたホスト・ページ・フォールトをハイパーバイザに提示する(ブロック715を参照)。次に、ハイパーバイザは、このゲスト・ページの使用可能なセキュアでないホスト絶対ページを識別し(ブロック720を参照)、暗号化されたゲスト・ページを識別されたホスト絶対ページにページインする(ブロック725を参照)。
【0055】
ブロック730で、次にホスト絶対ページが、(ホスト仮想アドレスに基づいて)適切なホストDATテーブル内でマッピングされる。ブロック735で、次にハイパーバイザ(ホスト)が、セキュア・ゲストを再ディスパッチする。ブロック740で、セキュア・ゲストがセキュア・ゲスト・ページに再アクセスする。ページ・フォールトはすでに存在しないが、このセキュア・ゲストのアクセスおよびページが、
図1のゾーン・セキュリティ・テーブル100内でセキュアとしてマーク付けされていないため、ブロック745で、ハードウェアが非セキュア・ストレージ例外(PIC3E)をハイパーバイザに提示する。このPIC3Eは、必要なインポートが発行されるまで、ゲストによるこのセキュア・ページへのアクセスを防ぐ。次に、プロセス・フロー700は、
図8に接続されている「A」に進む。
【0056】
ここで
図8を参照すると、本発明の1つまたは複数の実施形態に従って、インポート動作を実行するためのプロセス・フロー800が概して示されている。正常に動作する(例えば、エラーのない期待される方法で動作している)ハイパーバイザが、PIC3Eに応答して、インポートUVCを発行する(ブロック805を参照)。この時点で、インポートされるページが、非セキュアとしてマーク付けされ、ハイパーバイザ、他のセキュアでない実体、およびセキュア・インターフェイス制御のみによってアクセス可能であるということに注意する。セキュア・ゲストによって、このページにアクセスすることはできない。
【0057】
インポートUVCの一部として、セキュア・インターフェイス制御として機能する信頼できるファームウェアが、セキュア・インターフェイス制御によってこのページがすでにロックされているかどうかをチェックして確認する(判定ブロック810を参照)。このページがロックされている場合、プロセス・フロー800がブロック820に進む。ブロック820で、「ビジー」復帰コードがハイパーバイザに返され、それに応じてハイパーバイザは、遅延し(ブロック825を参照)、インポートUVCを再発行する(プロセス・フロー800がブロック805に戻る)。このページがまだロックされていない場合、プロセス・フロー800が判定ブロック822に進む。
【0058】
判定ブロック822で、セキュア・インターフェイス制御が、このページが、非セキュア・ハイパーバイザと共有されたページであるかどうかをチェックして確認する。このページが共有されている場合(プロセス・フロー800が判定ブロック824に進む)、セキュア・インターフェイス制御が、ホスト絶対アドレスを、関連するセキュア・ゲスト・ドメイン、ホスト仮想アドレスと共に、共有されているとしてゾーン・セキュリティ・テーブルに登録する。このページは、非セキュアとしてマーク付けされたままである。これでインポートUVCが完了し、ゲストによってこのページにアクセスできるようになった。処理は、ハイパーバイザがゲストを再ディスパッチすること(ブロック830)、およびセキュア・ゲストがこのページに正常にアクセスすること(ブロック835)に進む。
【0059】
インポートされるホスト仮想ページがハイパーバイザと共有されていない場合(プロセス・フロー800がブロック840に進む)、セキュア・インターフェイス制御は、ハイパーバイザがこのページにアクセスできなくなるように、このページをセキュアとしてマーク付けする。ブロック845で、セキュア・インターフェイス制御は、他のUVCがページの状態を変更できないように、ページをロックする。(ブロック850で)ロックが設定された後に、セキュア・インターフェイス制御は、ゲスト・ページの内容が、暗号化されている間に変化しなかったことを検証する。ゲスト・ページの内容が変化していた場合、エラー復帰コードがハイパーバイザに返され、そうでない場合、セキュア・インターフェイス制御がセキュア・ページを復号する。
【0060】
ブロック855で、セキュア・インターフェイス制御がページのロックを解除して、他のUVCによるアクセスを許可し、ページを、セキュアとして、HV->HAホスト・アドレス対を完成させるための適切なゲスト・ドメインおよびホスト仮想アドレスに関連付けて、ゾーン・セキュリティ・テーブルに登録する。これによって、ゲストによるアクセスを許可し、UVCを完了する。
【0061】
ここで
図9を参照すると、本発明の1つまたは複数の実施形態に従って、提供されたメモリの動作に関するプロセス・フロー900が概して示されている。プロセス・フロー900はブロック905で開始し、ブロック905で、ハイパーバイザが照会UVCをセキュア・インターフェイス制御に発行する。ブロック910で、セキュア・インターフェイス制御がデータ(例えば、照会UVC)を返す。このデータは、ゾーン固有のベース・ホスト絶対ストレージの必要な量、セキュア・ゲスト・ドメイン固有のベース・ホスト絶対ストレージの必要な量、MBごとのセキュア・ゲスト・ドメイン固有の可変ホスト仮想ストレージの必要な量、またはセキュア・ゲストCPU固有のベース・ホスト絶対ストレージの必要な量、あるいはその組み合わせを含むことができる。
【0062】
ブロック915で、ハイパーバイザは、ホスト絶対ゾーン固有のベース・ストレージを(例えば、照会UVCによって返されたサイズに基づいて)確保する。ブロック920で、ハイパーバイザが、初期化をセキュア・インターフェイス制御に発行する。これに関して、ハイパーバイザは、ゾーン全体のセキュア・ゲスト構成間の調整に必要とされるUV制御ブロックのために提供されるストレージを提供する、初期化UVCを発行することができる。初期化UVCは、ゾーン固有のベース・ストレージの原点を指定する。
【0063】
ブロック925で、セキュア・インターフェイス制御が、提供されたストレージをUVに登録し、セキュアとしてマーク付けすることによって、初期化(例えば、初期化UVC)を実施する。初期化UVCの場合、セキュア・インターフェイス制御は、提供されたストレージをセキュアとしてマーク付けし、その提供されたストレージの一部をゾーン・セキュリティ・テーブルに割り当て、提供されたストレージを、一意のセキュア・ドメインと共に、ただし関連するセキュア・ゲスト・ドメインなしで、関連するホスト仮想アドレス対を有していないとして、UV使用のためのゾーン・セキュリティ・テーブルに登録することができる。
【0064】
ブロック930で、ハイパーバイザがストレージ(例えば、セキュア・ゲスト・ドメイン固有のベースおよび可変ストレージ)を確保する。例えば、ハイパーバイザは、(例えば、セキュア・ゲスト・ドメインのストレージのサイズに基づいて)セキュア・ゲスト・ドメイン固有のベースおよび可変ストレージ(例えば、照会UVCによって返されたサイズ)を確保する。ブロック935で、ハイパーバイザが、構成作成をセキュア・インターフェイス制御に発行する。これに関して、ハイパーバイザは、セキュア・ゲスト・ドメイン固有のベースおよび可変ストレージの原点を指定するセキュア・ゲスト構成作成UVCを発行することができる。さらに、セキュア・ゲスト構成作成UVCは、このセキュア・ゲスト構成を支援するために必要なUV制御ブロックのために提供されるストレージを提供する。
【0065】
ブロック940で、セキュア・インターフェイス制御が、構成作成(例えば、セキュア・ゲスト構成作成UVC)を実施する。セキュア・ゲスト構成作成UVCの場合、セキュア・インターフェイス制御は、提供されたストレージをセキュアとしてマーク付けし、提供されたストレージをUV使用のためのゾーン・セキュリティ・テーブルに登録し、提供されたストレージを関連するセキュア・ゲスト・ドメインと共に登録することができる。提供されたベース(ホスト絶対)ストレージは、関連するホスト仮想アドレス対を有していないとして登録される。提供された可変(ホスト仮想)ストレージは、関連するホスト仮想アドレス対と共に登録される。
【0066】
ブロック945で、ハイパーバイザは、セキュア・ゲストCPU固有のベース・ストレージ(例えば、照会UVによって返されたサイズ)を確保する。ブロック950で、ハイパーバイザがストレージの原点を指定する。例えば、ハイパーバイザは、セキュア・ゲストCPU固有のベース・ストレージの原点を指定するセキュア・ゲストCPU作成をUVに発行する。ブロック955で、セキュア・インターフェイス制御が、CPU作成(例えば、セキュア・ゲストCPU作成UVC)を実施する。セキュア・ゲストCPU作成UVCの場合、セキュア・インターフェイス制御は、提供されたストレージをセキュアとしてマーク付けし、提供されたストレージを、関連するセキュア・ゲスト・ドメインなしで、関連するホスト仮想アドレス対を有していないとして、UV使用のためのゾーン・セキュリティ・テーブルに登録することができる。
【0067】
ここで
図10を参照すると、本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御のセキュア・ページへの非セキュア・ハイパーバイザ・ページの遷移に関するプロセス・フロー1000が概して示されている。プロセス・フロー1000では、3つのハイパーバイザのページ(例えば、非セキュア・ハイパーバイザのページA、非セキュア・ハイパーバイザのページB、および非セキュア・ハイパーバイザのページC)が示されている。
【0068】
ハイパーバイザ(非セキュア)のページA、B、およびCは、セキュアでない実体(ハイパーバイザを含む)によってアクセスされ得る。さらに、ハイパーバイザ(非セキュア)のページA、B、およびCは、非セキュアおよび非共有としてゾーン・セキュリティ・テーブル(例えば、
図1に示されているゾーン・セキュリティ・テーブル100)に登録されるのと同時に、非セキュアとして(NS:non-secure)としてマーク付けされる。矢印1005で、初期化UVCが発行され、ゲスト・ページAを、ゾーン全体(UV2)に関連付けられたセキュア・インターフェイス制御の実ストレージ・ページ1010に遷移させる。セキュア・インターフェイス制御の実ストレージ1010は、UVとして、セキュア・ゲスト・ドメインなし、かつ絶対(HV->HA)マッピングをホストするためのハイパーバイザなしで、ゾーン・セキュリティ・テーブル(例えば、
図1に示されているゾーン・セキュリティ・テーブル100)に登録されるのと同時に、セキュアとしてとしてマーク付けされ得る。代わりに、実ストレージ1010は、一意のUV2セキュア・ドメインと共に登録され、DAビットが1に設定される。セキュア・インターフェイス制御の実ストレージ1010が、セキュア・インターフェイス制御によって現実としてアクセスされ得るということに注意する。
【0069】
ハイパーバイザ(非セキュア)のページBから、矢印1025で、SG構成作成またはSG-CPU作成UVCが発行され、このページを、セキュア・ゲスト・ドメイン(UVS)に関連付けられたセキュア・インターフェイス制御の実ストレージ1030に遷移させる。セキュア・インターフェイス制御の実ストレージ1030は、UVとして、関連するセキュア・ゲスト・ドメインと共に、絶対(HV->HA)マッピングをホストするためのハイパーバイザなし(すなわち、DAビット=1)で、ゾーン・セキュリティ・テーブル(例えば、
図1に示されているゾーン・セキュリティ・テーブル100)に登録されるのと同時に、セキュアとしてとしてマーク付けされ得る。セキュア・インターフェイス制御の実ストレージ1010が、セキュア・ゲスト・ドメインの代わりに、セキュア・インターフェイス制御によって現実としてアクセスされ得るということに注意する。
【0070】
ハイパーバイザ(非セキュア)のページCから、矢印1045で、SG構成作成UVCが発行され、このページを、セキュア・ゲスト・ドメイン(UVV)に関連付けられたセキュア・インターフェイス制御の仮想ストレージ1050に遷移させる。セキュア・インターフェイス制御の仮想ストレージ1050は、UVとして、セキュア・ゲスト・ドメイン、および絶対(HV->HA)マッピングをホストするためのハイパーバイザと共に、ゾーン・セキュリティ・テーブル(例えば、
図1に示されているゾーン・セキュリティ・テーブル100)に登録されるのと同時に、セキュアとしてとしてマーク付けされ得る。セキュア・インターフェイス制御の仮想ストレージ1050が、セキュア・ゲスト・ドメインの代わりに、UV仮想としてアクセスされ得るということに注意する。
【0071】
ここで
図11を参照すると、1つまたは複数の実施形態に従って、プログラムまたはセキュア・インターフェイス制御によって行われるセキュア・ストレージ・アクセスに関するプロセス・フロー1100が示されている。この図は、セキュア・インターフェイス制御がゲスト・ストレージまたはセキュア・インターフェイス制御のストレージにアクセスしようとしており、ハードウェアがそのアクセスのセキュリティを検証できるようにするために、そのアクセスに正しくタグ付けしなければならない状況を表している。1100は、セキュア・インターフェイス制御によるストレージ・アクセスのこのタグ付けを表している。プロセス・フロー1100はブロック1110で開始し、ブロック1110で、セキュア・インターフェイス制御が、セキュア・インターフェイス制御のストレージへのアクセスを行っているかどうかを判定する。
【0072】
このアクセスが、セキュア・インターフェイス制御のストレージへのアクセスでない場合、プロセス・フロー1100が判定ブロック1112に進む(「いいえ」の矢印で示されている)。判定ブロック1112で、セキュア・インターフェイス制御が、セキュア・ゲスト・ストレージへのアクセスを行っているかどうかを判定する。このアクセスが、セキュア・ゲスト・ストレージへのアクセスでない場合、プロセス・フロー1100が、非セキュア・アクセスのデフォルト設定を使用する「B」(
図12のプロセス・フロー1200に接続されている)に進む。このアクセスが、セキュア・ゲスト・ストレージへのアクセスである場合、プロセス・フロー1100が判定ブロック1113に進み、判定ブロック1113で、セキュア・インターフェイス制御が、デフォルトのセキュア・ゲスト・ドメインが使用されているかどうかを判定する。デフォルトのセキュア・ゲスト・ドメインが使用されている場合、プロセス・フロー1100が、セキュア・ゲスト・アクセスのデフォルト設定を使用する「B」(
図12のプロセス・フロー1200に接続されている)に進む。デフォルトのセキュア・ゲスト・ドメインが使用されていない場合、プロセス・フロー1100がブロック1114に進む。ブロック1114で、適切なセキュア・ゲスト・ドメインがSGセキュア・ドメイン・レジスタに読み込まれる(
図12のプロセス・フロー1200に接続されている「B」に進む)。
【0073】
このアクセスが、セキュア・インターフェイス制御のストレージへのアクセスである場合、プロセス・フロー1100がブロック1120に進む(「はい」の矢印で示されている)。ブロック1120で、アクセスが、セキュアUVとしてタグ付けされる(例えば、UVセキュア・ドメイン・レジスタを使用する)。
【0074】
次に、プロセス・フロー1100が判定ブロック1130に進み、判定ブロック1130で、セキュア・インターフェイス制御が、このアクセスがUVV空間(例えば、SG構成可変テーブル)へのアクセスであるかどうかを判定する。このアクセスがUVV空間へのアクセスである場合、プロセス・フロー1100がブロック1134に進む(「はい」の矢印で示されている)。ブロック1134で、アクセスが仮想としてタグ付けされる。ブロック1136で、適用可能なセキュア・ゲスト・ドメインがUVセキュア・ドメイン・レジスタに読み込まれる。ブロック1138で、DAT変換およびストレージ・アクセスを開始する準備ができる。判定ブロック1130に戻り、このアクセスがUVV空間へのアクセスでない場合、プロセス・フロー1100がブロック1140に進む(「いいえ」の矢印で示されている)。ブロック1140で、アクセスが現実としてタグ付けされる。
【0075】
判定ブロック1150で、セキュア・インターフェイス制御が、このアクセスがUVS空間(例えば、SG構成またはCPUテーブル)へのアクセスであるかどうかを判定する。このアクセスがUVS空間へのアクセスである場合、プロセス・フロー1100がブロック1136に進む(「はい」の矢印で示されている)。このアクセスがUVS空間へのアクセスでない場合、プロセス・フロー1100がブロック1170に進む(「いいえ」の矢印で示されている)。このアクセスは、UV2空間(例えば、ゾーン・セキュリティ・テーブル)へのアクセスである。ブロック1170で、一意のUV2セキュア・ドメインがUVセキュア・ドメイン・レジスタに読み込まれる。
【0076】
図12は、本発明の1つまたは複数の実施形態に従って、プロセス・フロー1200を示している。ゲストがディスパッチされるときに、SIEエントリ・ファームウェア(SIE Entry firmware)が、ゲストが実行中である(例えば、ゲスト・モードが有効である)ことをハードウェアに示すことができ、ゲストがセキュアであるかどうかを示すことができる。ゲストがセキュアである場合、関連するセキュア・ゲスト・ドメインがハードウェア(例えば、SGセキュア・ドメイン・レジスタ)に読み込まれ得る。プログラムがストレージにアクセスしているときに、ハードウェアが、アクセスの時点でのプログラムの現在の状態に基づいてアクセスにタグ付けすることができる。
図12は、このプロセスの例をプロセス・フロー1200に示している。ブロック1205で、ハードウェアが、マシンがゲスト・モードで現在実行中であるかどうかを判定し、ゲスト・モードで実行中でない場合、ブロック1210でホストのアクセスであるとして、およびブロック1215で非セキュア・アクセスであるとして、アクセスにタグ付けすることができる。ブロック1205で、マシンがゲスト・モードで実行中である場合、ブロック1220で、ゲストのアクセスとしてアクセスにタグ付けすることができ、ブロック1225で、現在のゲストがセキュア・ゲストであるかどうかをさらに判定する。ゲストがセキュアでない場合、ブロック1215で、非セキュアとしてアクセスにタグ付けすることができる。ゲストがセキュアである場合、ブロック1230で、ハードウェアがセキュアとしてゲストにタグ付けすることができ、セキュア・ゲストがディスパッチされたときに読み込まれたSGセキュア・ドメイン・レジスタに、セキュア・ゲストを関連付けることができる。ブロック1235で、非セキュア・ゲストおよびセキュア・ゲストの両方に関して、DATの状態をチェックすることができる。DATがオフである場合、ブロック1240で、現実としてアクセスにタグ付けすることができる。DATがオンである場合、ブロック1245で、仮想としてアクセスにタグ付けすることができる。アクセスが、DATがオフの場合に、ブロック1240で現実としてタグ付けされるか、またはDATがオンの場合に、ブロック1245で仮想としてタグ付けされた後に、ブロック1250で、ハードウェアは、
図13でさら説明されるように、変換およびストレージ・アクセスを開始する準備ができる。
【0077】
図13は、本発明の1つまたは複数の実施形態に従って、セキュア・アクセスおよび非セキュア・アクセスの両方を支援するためにハードウェアによって実行される変換の例をプロセス・フロー1300に示している。ブロック1305で、ハードウェアは、アクセスがゲスト変換としてタグ付けされているかどうかを判定することができ、アクセスがゲスト変換としてタグ付けされており、ブロック1310で、アクセスが仮想である場合、ブロック1315で、ゲストDATが実行され得る。ゲストDAT変換の間に、ゲストDATテーブルに対するネストされた中間フェッチが存在することができる。テーブルのフェッチが、ゲスト現実として、および元の変換がセキュアとしてタグ付けされている場合はセキュアとして、タグ付けされ得る。テーブルのフェッチも、プロセス・フロー1300の変換プロセスに従うことができる。ブロック1315で、ゲスト仮想としてタグ付けされたアクセスに対してゲストDATが実行され、ブロック1310で、ゲスト現実(仮想=いいえ)としてタグ付けされたアクセスに対してゲストDATが実行された後に、ブロック1320で、ゲスト・プレフィックス変換およびゲスト・メモリ・オフセットが適用され得る。ゲスト変換プロセスの完了時に、ブロック1325で、得られたアドレスが、ホスト仮想として、および元のゲスト変換がセキュアとしてタグ付けされている場合はセキュアとして、タグ付けされ得る。プロセス1300は、ホスト仮想としてタグ付けされた任意のアクセスに関して、続行することができる。元のアクセスが、ブロック1305でホストのアクセスであり(ゲスト=いいえ)、ブロック1330で仮想である場合、ブロック1335でホストDATが実行され得る。ブロック1335で、ホストのテーブルのフェッチが非セキュアとしてマーク付けされ得る。ブロック1335でホストDATが実行された後に、またはブロック1330で元のホストのアクセスが現実(仮想=いいえ)としてタグ付けされた場合に、ブロック1340でホスト・プレフィックス変換が適用され得る。ブロック1345で、得られたアドレスは、ホスト絶対アドレスであることができる。
【0078】
図14は、本発明の1つまたは複数の実施形態に従って、ハードウェアによって実行され得るセキュア・ストレージ保護を伴うDAT変換の例をプロセス・フロー1400に示している。
図13のブロック1345から続けて、ブロック1405で、セキュアUVアクセスが識別された場合、ブロック1410で、ハードウェアは、ストレージがセキュアUVストレージとして登録されているかどうかを検証することができ、ストレージがセキュアUVストレージとして登録されていない場合、ブロック1415でエラーが提示される。UVストレージにアクセスしている場合、セキュア制御インターフェイスによってセキュアUVアクセスが行われ得る。ブロック1410で、ストレージがセキュアUVストレージとして登録されている場合、任意のセキュア・アクセスに対して実行されるように、保護チェックが継続することができるが、処理が継続する場合、ブロック1420で、UVセキュア・ドメイン・レジスタ(セキュアUVアクセスを行う前にセキュア制御インターフェイスによって設定される)が、ドメイン・チェックのために指定されたセキュア・ドメインとして使用され得るという点が異なる。加えて、ブロック1425でセキュア・ゲスト違反(セキュアUV=いいえ)に対して実行されるような、ブロック1435でのハイパーバイザへの例外ではなく、ブロック1425でUVアクセスに対して検出された任意の違反(エントリ・ポイントD)が、ブロック1430でエラーとして提示され得る。
【0079】
ブロック1405でセキュアUVアクセスとしてタグ付けされていないアクセスの場合、ブロック1440で、ハードウェアは、アクセスがセキュア・ゲストのアクセスであるかどうかを判定し、アクセスがセキュア・ゲストのアクセスでなく、かつブロック1445でページがセキュアとしてマーク付けされている場合、ブロック1435で、例外がハイパーバイザに提示され得る。しかし、ブロック1440でアクセスがセキュア・ゲストのアクセスではなく、ブロック1445でページがセキュアとしてマーク付けされていない場合、ブロック1450で変換が成功する。
【0080】
アクセスが、ブロック1440で、セキュア・ゲストのアクセスであるか、またはブロック1410で、セキュアUVストレージとして登録されたストレージへのセキュアUVアクセスである場合、ブロック1420で、ハードウェアは、ストレージがアクセスに関連付けられたセキュアな実体に登録されていることをチェックして確認することができる。アクセスがセキュアUVアクセスである場合、指定されたセキュア・ドメインをUVセキュア・ドメイン・レジスタから取得することができ(セキュアUVストレージがアクセスされているということに基づいて、セキュア制御インターフェイスによって読み込まれる)、セキュア・ゲストのアクセスの場合、指定されたセキュア・ドメインをSGセキュア・ドメイン・レジスタから取得することができる(セキュアな実体がディスパッチされるときに読み込まれる)。ブロック1420で、アクセスされているストレージが指定されたセキュア・ドメインに登録されていない場合、ブロック1425でセキュアUVアクセスである場合は、ブロック1430でエラーが選択され、ブロック1425でセキュア・ゲストのアクセス(セキュアUV=いいえ)である場合は、ブロック1435で例外がハイパーバイザに提示される。
【0081】
ブロック1420で指定されたセキュア・ドメインに登録された、ブロック1440およびブロック1410でのストレージへのセキュア・アクセスに関して、ブロック1455で仮想アドレス・チェックが無効化されている(すなわち、DAビット=1)であり、かつブロック1460でアクセスが現実である場合、ブロック1450で変換が完了する。しかし、ブロック1455でDAビット=1であるが、ブロック1460でアクセスが仮想(現実=いいえ)である場合、ブロック1425でセキュアUVアクセスである場合は、ブロック1430でエラーが選択され、ブロック1425でセキュア・ゲストのアクセス(セキュアUV=いいえ)である場合は、ブロック1435で例外がハイパーバイザに提示される。ブロック1455でDAビット=0であり、かつブロック1475でアクセスが仮想アクセスである場合、ブロック1470で、ハードウェアは、ホスト仮想からホスト絶対へのアクセスのマッピングが、このホスト絶対アドレスに関して登録されているマッピングに一致するかどうかを判定することができる。一致する場合、ブロック1450で変換が正常に完了する。ブロック1470で、マッピングが一致しない場合、ブロック1425でセキュアUVアクセスである場合は、ブロック1430でエラーが選択され、ブロック1425でセキュア・ゲストのアクセス(セキュアUV=いいえ)である場合は、ブロック1435で例外がハイパーバイザに提示される。DAビット=0であり、かつブロック1475でアクセスが現実のアクセス(仮想=いいえ)である場合、ブロック1425でセキュアUVアクセスである場合は、ブロック1430でエラーが選択され、ブロック1425でセキュア・ゲストのアクセス(セキュアUV=いいえ)である場合は、ブロック1435で例外がハイパーバイザに提示され、代替として、ブロック1450で変換が正常に完了してよい。ブロック1480でのI/Oサブシステムによるアクセスは、ブロック1445でページがセキュアとしてマーク付けされているかどうかをチェックして確認することができ、ページがセキュアである場合、ブロック1435で例外をハイパーバイザに提示することができ、ページがセキュアとしてマーク付けされていない場合、ブロック1450で変換が成功する。
【0082】
ゾーン・セキュリティ・テーブル・インターフェイス1485を介して、ストレージの登録およびマッピングのさまざまなチェックが集合的に管理され得る。例えば、ブロック1410、1420、1455、1470、および1475は、さまざまなアクセスを管理するために同じゾーンに関連付けられているゾーン・セキュリティ・テーブルとインターフェイスをとることができる。
【0083】
前述したように、DATは、仮想ストレージを実ストレージにマッピングするために使用される。ゲストVMがハイパーバイザの制御下でページング可能なゲストとして実行されている場合、ゲストは、DAT変換を使用してメモリに常駐するページを管理し、ホストは、独立してDAT変換を使用して、それらのゲスト・ページがメモリに常駐しているときに、それらのゲスト・ページを(ホスト自身のページと共に)管理する。ハイパーバイザは、DAT変換を使用して、異なるVM間のストレージの必要な分離または共有を提供するだけでなく、ハイパーバイザ・ストレージへのゲストのアクセスを防ぐ。ハイパーバイザは、すべてのゲスト・ストレージにアクセスすることができる。
【0084】
本明細書において説明されるように、本発明の1つまたは複数の実施形態は、ソフトウェアとマシンの間の効率的な軽量のセキュア・インターフェイス制御のインターフェイスを活用して、このセキュリティの向上を行う。これに関して、このインターフェイスは、マシン(セキュア・インターフェイス制御およびハードウェア)がこれらのページのマッピングにおけるセキュリティを保証しながら、ハイパーバイザがセキュア・ゲスト・ページを管理し続けることができるようにする方法で、セキュア・インターフェイス制御およびハイパーバイザがページ管理を提供できるようにするために使用される。
【0085】
1つまたは複数の実施形態では、セキュアな実行は、セキュア・ストレージと非セキュア・ストレージの間の分離、および異なるセキュアなユーザに属するセキュア・ストレージ間の分離を保証するためのハードウェア・メカニズムを提供する。セキュア・ゲストの場合、「信頼できない」ハイパーバイザとセキュア・ゲストの間のセキュリティが強化される。これを行うために、通常はゲストの代わりにハイパーバイザが実行する機能の多くが、セキュア・インターフェイス制御またはセキュア・インターフェイス制御(UV)と呼ばれる制御構造によってマシンに組み込まれる。セキュア・インターフェイス制御は、ハイパーバイザとセキュア・ゲストの間のセキュア・インターフェイスを提供する。セキュア・インターフェイス制御は、マシンのハードウェアと連携して機能し、このセキュリティの向上を実現する。
【0086】
セキュア・インターフェイス制御は、遷移の主要ポイントとして仮想マシンのディスパッチを使用して仮想マシン(すなわち、ハイパーバイザとセキュア・ゲストの間)に提供されるか、または変換の主要ポイントとして別の境界(例えば、アドレス空間)の変更を使用して仮想実行ファイルに提供される、保護メカニズムである。
【0087】
セキュア・インターフェイス制御(例えば、ウルトラバイザ)は、1つの例では、内部のセキュアな信頼できるファームウェアに実装される。セキュア・ゲストまたはセキュアな実体に関して、セキュア・インターフェイス制御は、セキュアな環境の初期化および維持に加えて、ハードウェア上でこれらのセキュアな実体のディスパッチの調整を行う。セキュア・ゲストがデータを活発に使用しており、ホスト・ストレージに常駐している間、このセキュア・ゲストは、セキュア・ストレージ内で「疑いが晴れた状態」に保たれる。その単一のセキュア・ゲストによって、セキュア・ストレージにアクセスすることができ、このアクセスは、ハードウェアによって厳密に実施される。すなわち、ハードウェアは、すべてのセキュアでない実体(ハイパーバイザまたはその他の非セキュア・ゲストを含む)または異なるセキュア・ゲストがそのデータにアクセスするのを防ぐ。この例では、セキュア・インターフェイス制御は、最低レベルのファームウェアの信頼できる部分として実行される。この最低レベルは、それ自身のセキュアUVストレージ、非セキュア・ハイパーバイザ・ストレージ、セキュア・ゲスト・ストレージ、および共有ストレージなどの、ストレージのすべての部分にアクセスすることができる。このアクセスによって、セキュア・インターフェイス制御は、セキュア・ゲストによって、またはそのゲストの支援においてハイパーバイザによって必要とされるすべての機能を提供することができる。また、セキュア・インターフェイス制御は、ハードウェアに直接アクセスすることもでき、セキュア・インターフェイス制御によって確立された条件の制御下で、ハードウェアが効率的にセキュリティ・チェックを実行できるようにする。
【0088】
ソフトウェアは、命令呼び出し(例えば、UV呼び出し(UVC)命令)を使用して、セキュア・インターフェイス制御が特定の動作を実行することを要求する。例えば、UVC命令は、ハイパーバイザによって、セキュア・インターフェイス制御を初期化し、セキュア・ゲスト・ドメイン(例えば、セキュア・ゲスト構成)を作成し、そのセキュアな構成内で仮想CPUを作成するために使用され得る。UVC命令は、ハイパーバイザのページイン動作またはページアウト動作の一部として、セキュア・ゲスト・ページをインポートすること(復号してセキュア・ゲスト・ドメインに割り当てること)、およびエクスポートすること(暗号化してホストがアクセスできるようにすること)にも使用され得る。加えて、セキュア・ゲストは、ハイパーバイザと共有されるストレージを定義し、セキュア・ストレージを共有にし、共有ストレージをセキュアにする能力を有する。
【0089】
これらのUVCコマンドは、多くの他の設計された命令と同様に、マシンのファームウェアによって実行される。マシンは、セキュア・インターフェイス制御モードに移行せず、代わりにマシンは、現在実行されているモードでセキュア・インターフェイス制御機能を実行する。これらの動作を処理するためのコンテキストの切り替えはない。この少ないオーバーヘッドによって、必要なレベルのセキュリティを引き続き提供しながら、セキュア・インターフェイス制御における複雑さを最小限に抑えて減らすような方法で、ソフトウェア、信頼できるファームウェア、およびハードウェアの異なるレイヤ間の緊密な連携を可能にする。
【0090】
セキュリティを提供するために、ハイパーバイザがセキュア・ゲストのデータを透過的にページインおよびページアウトしているときに、ハードウェアと連携しているセキュア・インターフェイス制御は、データの復号および暗号化を提供し、保証する。これを実現するために、ハイパーバイザは、セキュア・ゲストのデータをページインおよびページアウトするときに、新しいUVCを発行する必要がある。ハードウェアは、これらの新しいUVCの間にセキュア・インターフェイス制御によって設定された制御に基づいて、これらのUVCがハイパーバイザによって実際に発行されることを保証する。
【0091】
軽量のUVC設計は、セキュア・インターフェイス制御によるハイパーバイザ・テーブルのシャドーイングなしで、したがって、このシャドーイングを提供するための大きいオーバーヘッドなしで、ハイパーバイザのページ管理が進むことを可能にする。これは、暗号化された非セキュア・ページを、単一のセキュア・ゲスト・ドメインのみによるアクセスが許可される復号されたセキュア・ページに遷移させるために、UV呼び出し命令を使用することによって実現される。このプロセスの一部として、セキュア・インターフェイス制御は、いずれかのセキュア・ゲスト・ページに関して、対応するセキュアなホスト仮想ページが、単一のホスト絶対ページにマッピングされること、単一のホスト仮想アドレスがいずれかの特定のセキュアなホスト絶対アドレスにマッピングされること、およびセキュア・ページが単一のセキュア・ゲスト・ドメインに属することを保証する。加えて、特定のホスト絶対ページへのいずれかのセキュアなホスト仮想アドレスのマッピングに対する変更がハードウェアによって検出され、例外が提示されるように、そのマッピングがセキュア・インターフェイス制御に登録される。
【0092】
本明細書に記載されたセキュアな環境では、ハイパーバイザは、セキュア・ページをページアウトしているときに常に、セキュア・ストレージへの変換(エクスポート)UVCを発行する必要がある。UVは、このエクスポートUVCに応答して、ページがUVによって「遷移中である」か、または「ロックされている」ことを示し、ページを暗号化し、ページを非セキュアに設定し、UVのロックをリセットする。エクスポートUVCが完了した後に、ハイパーバイザは、次に暗号化されたゲスト・ページをページアウトできるようになる。
【0093】
加えて、ハイパーバイザは、セキュア・ページにページインしているときに常に、セキュア・ストレージからの変換(インポート)UVCを発行しなければならない。UVは、このインポートUVCに応答して、ページをハードウェア内でセキュアとしてマーク付けし、ページがUVによって「遷移中である」か、または「ロックされている」ことを示し、ページを復号し、特定のセキュア・ゲスト・ドメインに対する権限を設定する。アクセスがセキュアな実体によって行われるときに常に、変換中にハードウェアは、そのページに対して許可チェックを実行する。これらのチェックは、ページが、このページにアクセスしようとしているセキュア・ゲスト・ドメインに実際に属していることを検証するためのチェック、およびこのページがゲスト・メモリに常駐している間にハイパーバイザがこのページのホストのマッピングを変更していないことを確認するためのチェックを含む。ページがセキュアとしてマーク付けされた後に、ハードウェアは、ハイパーバイザまたは非セキュア・ゲストVMのいずれかによるすべてのセキュア・ページへのアクセスを防ぐ。追加の変換ステップが、別のセキュアVMによるアクセスを防ぎ、ハイパーバイザによる再マッピングを防ぐ。
【0094】
1つまたは複数の実施形態に従って、新しい追加のステップをハイパーバイザに示すためのマシンからの追加のプログラム割り込みが提供される。この場合、この追加のステップは、ゲスト・ページのインポートであってよい。ハードウェアは、この追加のステップがハイパーバイザによって完了されるまで、セキュア・ゲストによるページのアクセスを防ぐ。これにより、セキュリティ上の理由のため、そのセキュアな環境内で実行されなければならないステップをセキュア・インターフェイス制御が実行することを要求することによって、セキュア・インターフェイス制御におけるハイパーバイザの多くの作業の繰り返しを最小限に抑えるという利点が得られる。この方法は、インポートUVC中に実行されるチェックと組み合わさって、セキュア・インターフェイス制御がホストDATテーブルを監視し、場合によってはシャドーイングする必要性、ならびに関連するオーバーヘッドおよび複雑さを取り除く。
【0095】
上記を考慮して、セキュア・インターフェイス制御の高レベルのページ管理の動作が、
図15~16に関して説明される。ここで
図15を参照すると、本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御の高レベルのページ管理のためのプロセス・フロー1500が示されている。プロセス・フロー1500は、セキュアな実体(例えば、VMまたはコンテナ)1502、ハードウェア1504、信頼できない実体(例えば、信頼できない、セキュアでない実体、ハイパーバイザ、またはOS)1506、およびセキュア・インターフェイス制御1508を重ね合わせて、セキュアな環境のコンポーネントによってどの動作が実行されているかを示している。
【0096】
ブロック1510でプロセス・フロー1500が開始し、ブロック1510で、セキュアな実体1502が、信頼できない実体1506によって透過的にページインされている、まだ暗号化されている(非セキュアとしてマーク付けされている)セキュア・ページにアクセスする。ブロック1520で、ハードウェア1504が、セキュア・ゲスト・ページの復号の必要性を示すプログラム割り込みを信頼できない実体1506に提示する。ブロック1530で、信頼できない実体1506がインポートUVC(例えば、インポート命令)を発行する。インポートUVCは、ホスト絶対ページおよびホスト仮想ページを入力パラメータとして指定する。
【0097】
ブロック1535で、セキュア・インターフェイス制御1508が、インポートUVCの実施の一部として、指定されたホスト絶対ページがマッピングされているとしてまだ登録されていないということを決定し、セキュア・インターフェイス制御1508によって使用するためにホスト絶対ページをロックする(このホスト絶対ページへの他のUVCまたはセキュアな実体のアクセスを防ぐ)。インポートされるページがすでにマッピングされている(例えば、ホスト仮想ページが異なるホスト絶対ページにすでにマッピングされているか、またはホスト絶対ページに、異なるホスト仮想ページがすでにマッピングされている)場合、エラーがセキュアでない実体に提示されるということに注意する。ブロック1540で、セキュア・インターフェイス制御1508が、ページ(例えば、ホスト絶対ページ)をセキュアとしてマーク付けする(セキュアでない実体によるアクセスを防ぐ)。
【0098】
ブロック1550で、セキュア・インターフェイス制御1508が、ホスト仮想ページがセキュアな絶対ページにまだマッピングされていないということを決定し、セキュア・インターフェイス制御1508によって使用するためにホスト仮想ページを登録する。インポートされるページがすでにマッピングされている(例えば、ホスト仮想ページが異なるホスト絶対ページにすでにマッピングされているか、またはホスト絶対ページに、異なるホスト仮想ページがすでにマッピングされている)場合、エラーがセキュアでない実体に提示されるということに注意する。
【0099】
ブロック1560で、セキュア・インターフェイス制御1508が、ゲストによって最終的に使用するためにページを安全に復号する。ブロック1570で、セキュア・インターフェイス制御1508が、ホスト絶対ページのロックを解除し、ホスト絶対ページを特定のセキュア・ゲスト・ドメインに属しているとして登録し、ホスト仮想からホスト絶対へのマッピングも登録する。
【0100】
例えば、セキュア・インターフェイス制御1508は、セキュア・インターフェイス制御1508によって使用するためのホスト絶対ページを登録し、ホスト絶対ページを安全に復号し、その後、セキュア・インターフェイス制御1508によって使用するためのホスト絶対ページの登録を解除し、ホスト絶対ページをセキュア・ドメインに登録する。さらに、セキュア・インターフェイス制御1508は、関連するホスト絶対ページと共にホスト仮想アドレスを登録して、セキュアな実体によって使用するためのホスト・アドレス対を作成し、セキュアな実体によるアクセス時に、ホスト仮想アドレスの一致をチェックする。
【0101】
ブロック1580で、信頼できない実体が、セキュアな実体(例えば、ゲストまたはVM)を再ディスパッチする。ブロック1590で、セキュアな実体が、例外を発生させずに、現在復号されているページに再アクセスする。
【0102】
ここで
図16を参照すると、本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御の高レベルのページ管理のためのプロセス・フロー1600が示されている。プロセス・フロー1600は、セキュアな実体(例えば、ゲスト)1602、ハードウェア1604、および信頼できない実体1606を重ね合わせて、セキュアな環境のコンポーネントによってどの動作が実行されているかを示している。
【0103】
プロセス・フロー1600はブロック1610で開始し、ブロック1610で、セキュアな実体(例えば、ゲスト、VM、またはコンテナ)1602がセキュアな仮想ページにアクセスする。例えば、セキュアな実体1602は、セキュア・ドメインID nに関連付けられ、セキュア・ゲスト仮想ページX.GVにアクセスする。ブロック1620で、ハードウェア1604がDAT変換を実行する。例えば、ハードウェア1604は、ホスト仮想ページX.HVおよびホスト絶対ページX.HAへのゲスト仮想ページX.GVのDAT変換を実行する。
【0104】
次に、判定ブロック1630で、ハードウェア1604は、セキュア・ページが、セキュア・アクセスを開始したセキュア・ドメインに属しているとして登録されているかどうかを判定する。例えば、ハードウェア1604は、セキュア・ページX.HAがセキュア・ドメインnに登録されているかどうかを判定する。このセキュア・ページがセキュア・ドメインnに登録されていない場合、プロセス・フロー1600がブロック1650に進む(「いいえ」の矢印で示されている)。ブロック1650で、ハードウェア1604がプログラム例外を信頼できない実体(例えば、ハイパーバイザ)1606に提示する。このセキュア・ページがセキュア・ゲスト・ドメインに割り当てられている場合、プロセス・フロー1600が判定ブロック1670に進む(「はい」の矢印で示されている)。
【0105】
判定ブロック1670で、ハードウェア1604は、登録されたホスト仮想アドレス(登録されたホスト・アドレス対に対応する)がセキュアな仮想アクセスのために実行されたDATから取得されたホスト・アドレス対に一致するかどうかを判定する。例えば、ハードウェア1604は、セキュア・ページX.HAと共に登録されたホスト仮想アドレスがDATによって取得されたX.HVに一致するかどうかを判定する。登録されたアドレスがDATの結果に一致しない場合、プロセス・フロー1600がブロック1650に進む(「いいえ」の矢印で示されている)。ブロック1650で、ハードウェア1604が例外を信頼できない実体1606に提示する。登録されたアドレスがDATの結果に一致する場合、プロセス・フロー1600がブロック1690に進む(「はい」の矢印で示されている)。ブロック1690で、ハードウェア1604は、他のすべての保護チェックがセキュアな実体のアクセスを可能にする場合、このアクセスを許可する。
【0106】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された教示の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。むしろ、本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【0107】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、VM、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
【0108】
特徴は、次のとおりである。
【0109】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0110】
幅広いネットワーク・アクセス:能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0111】
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
【0112】
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【0113】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した、ある抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【0114】
サービス・モデルは、次のとおりである。
【0115】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能でさえも含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0116】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによって支援されるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0117】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0118】
デプロイメント・モデルは、次のとおりである。
【0119】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0120】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティを支援する。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0121】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0122】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0123】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0124】
ここで
図17を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組み合わせなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を含んでいる。ノード10は、互いに通信してよい。ノード10は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組み合わせを提供できる。
図17に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0125】
ここで
図18を参照すると、クラウド・コンピューティング環境50(
図17)によって提供される機能的抽象レイヤのセットが示されている。
図18に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0126】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0127】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体の例を提供できる抽象レイヤを備える。
【0128】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0129】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、ならびに高レベルのページ管理96が挙げられる。これらが単なる例であり、他の実施形態では、各レイヤが異なるサービスを含むことができるということが理解される。
【0130】
ここで
図19を参照すると、本発明の1つまたは複数の実施形態に従って、システム1900が示されている。システム1900は、ネットワーク165などを介して1つまたは複数のクライアント・デバイス20A~20Eと直接的または間接的に通信する例示的なノード10(例えば、ホスティング・ノード)を含んでいる。ノード10は、クラウド・コンピューティング・プロバイダのデータセンターまたはホスト・サーバであることができる。ノード10は、1つまたは複数のVM15(15A~15N)のデプロイを容易にするハイパーバイザ12を実行する。ノード10は、VM15A~Nおよびハイパーバイザ12によって必要とされる機能を直接支援し、ハイパーバイザ12が1つまたは複数のサービスをVM15に提供することを容易にする、ハードウェア/ファームウェア・レイヤ11をさらに含んでいる。現在の実装では、ハードウェア/ファームウェア・レイヤ11とハイパーバイザ12の間、ハードウェア/ファームウェア・レイヤ11とVM15の間、ハイパーバイザ12とVM15の間、およびハードウェア/ファームウェア・レイヤ11を介したハイパーバイザ12とVM15の間で、通信が提供される。本発明の1つまたは複数の実施形態に従って、セキュア・インターフェイス制御がハードウェア/ファームウェア・レイヤ11において提供され、ハイパーバイザ12とVM15の間の直接通信が除外される。
【0131】
例えば、ノード10は、クライアント・デバイス20AがVM15A~15Nのうちの1つまたは複数をデプロイするのを容易にすることができる。個別のクライアント・デバイス20A~20Eからの各要求に応答して、VM15A~15Nがデプロイされてよい。例えば、クライアント・デバイス20AによってVM15Aがデプロイされてよく、クライアント・デバイス20BによってVM15Bがデプロイされてよく、クライアント・デバイス20CによってVM15Cがデプロイされてよい。ノード10は、クライアントが(VMとして実行するのではなく)物理的サーバをプロビジョニングするのを容易にすることもできる。本明細書に記載された例は、VMの一部としてノード10内のリソースのプロビジョニングを具現化するが、説明された技術的解決策は、物理的サーバの一部としてリソースをプロビジョニングするように適用されてもよい。
【0132】
1つの例では、クライアント・デバイス20A~20Eは、人、企業、政府機関、会社内の部門、または任意のその他の実体などの、同じ実体に属してよく、ノード10は、実体のプライベート・クラウドとして運用されてよい。この場合、ノード10は、実体に属しているクライアント・デバイス20A~20EによってデプロイされているVM15A~15Nのみをホストする。別の例では、クライアント・デバイス20A~20Eは、個別の実体に属してよい。例えば、第1の実体はクライアント・デバイス20Aを所有してよく、第2の実体はクライアント・デバイス20Bを所有してよい。この場合、ノード10は、異なる実体のVMをホストするパブリック・クラウドとして運用されてよい。例えば、VM15A~15Nは、VM15AがVM15Bへのアクセスを容易にしないような、覆い隠される方法でデプロイされてよい。例えば、ノード10は、IBM z System(R)プロセッサ・リソース/システム・マネージャ(PR/SM:Processor Resource/System Manager)論理パーティション(LPAR:Logical Partition)機能を使用してVM15A~15Nを覆い隠してよい。PR/SM LPARなどのこれらの機能は、パーティション間を分離することによって、ノード10が、同じ物理ノード10上の異なる実体のために、異なる論理パーティション内で、2つ以上のVM15A~15Nをデプロイするのを容易にする。
【0133】
クライアント・デバイス20A~20Eからのクライアント・デバイス20Aは、コンピュータ、スマートフォン、タブレット・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータ、またはノード10のハイパーバイザ12によるVMのデプロイメントを要求する任意のその他の通信装置などの、通信装置である。クライアント・デバイス20Aは、ネットワーク165を介してハイパーバイザによって受信するための要求を送信してよい。VM15A~15NからのVM15Aは、クライアント・デバイス20A~20Eからのクライアント・デバイス20Aからの要求に応答してハイパーバイザ12がデプロイするVMイメージである。ハイパーバイザ12は、VMモニタ(VMM)であり、VMを作成して実行するソフトウェア、ファームウェア、またはハードウェアであってよい。ハイパーバイザ12は、VM15Aがノード10のハードウェア・コンポーネントを使用してプログラムを実行すること、またはデータを格納すること、あるいはその両方を容易にする。ハイパーバイザ12は、適切な機能および変更を伴って、IBM z System(R)、OracleのVM Server、CitrixのXenServer、VmwareのESX、Microsoft Hyper-Vハイパーバイザ、または任意のその他のハイパーバイザであってよい。ハイパーバイザ12は、ノード10上で直接実行されるネイティブ・ハイパーバイザであるか、または別のハイパーバイザ上で実行されるホストされたハイパーバイザであってよい。
【0134】
ここで
図20を参照すると、本発明の1つまたは複数の実施形態に従って、本明細書の教示を実装するためのノード10が示されている。ノード10は、本明細書において説明されているように、さまざまな通信技術を利用するコンピューティング・デバイスおよびネットワークの任意の数および組み合わせを備えるか、または採用するか、あるいはその両方である、電子的コンピュータ・フレームワークであることができる。ノード10は、容易にスケーリング可能であり、拡張可能であり、モジュール式であり、異なるサービスに変化する能力、または他の機能とは無関係に、一部の機能を再構成する能力を有することができる。
【0135】
この実施形態では、ノード10が、1つまたは複数の中央処理装置(CPU:central processing units)2201a、2001b、2001cなどを含むことができるプロセッサ2001を含んでいる。プロセッサ2001は、処理回路、マイクロプロセッサ、コンピューティング・ユニットとも呼ばれ、システム・バス2002を介してシステム・メモリ2003およびさまざまな他のコンポーネントに結合される。システム・メモリ2003は、読み取り専用メモリ(ROM:read only memory)2004およびランダム・アクセス・メモリ(RAM:random access memory)2005を含む。ROM2004は、システム・バス2002に結合され、ノード10の特定の基本機能を制御する基本入出力システム(BIOS:basic input/output system)を含んでよい。RAMは、プロセッサ2001で使用するためにシステム・バス2002に結合された読み取り書き込みメモリである。
【0136】
図20のノード10は、プロセッサ2001による読み取りおよび実行が可能な有形のストレージ媒体の例であるハード・ディスク2007を含んでいる。ハード・ディスク2007は、ソフトウェア2008およびデータ2009を格納する。ソフトウェア2008は、(
図1~19を参照して説明されたプロセスなどのプロセスを実行するために)プロセッサ2001によってノード10上で実行される命令として格納される。データ2009は、ソフトウェア2008の動作を支援し、ソフトウェア2008の動作によって使用されるさまざまなデータ構造に構造化された定性的変数または定量的変数の値のセットを含む。
【0137】
図20のノード10は、ノード10のプロセッサ2001、システム・メモリ2003、ハード・ディスク2007、およびその他のコンポーネント(例えば、周辺機器および外部デバイス)の間を相互接続し、これらの間の通信を支援する1つまたは複数のアダプタ(例えば、ハード・ディスク・コントローラ、ネットワーク・アダプタ、グラフィックス・アダプタなど)を含む。本発明の1つまたは複数の実施形態では、1つまたは複数のアダプタを、中間バス・ブリッジを介してシステム・バス2002に接続された1つまたは複数のI/Oバスに接続することができ、1つまたは複数のI/Oバスが、PCI(Peripheral Component Interconnect)などの一般的なプロトコルを利用することができる。
【0138】
図に示されているように、ノード10は、キーボード2021、マウス2022、スピーカ2023、およびマイクロホン2024をシステム・バス2002に相互接続するインターフェイス・アダプタ2020を含んでいる。ノード10は、システム・バス2002をディスプレイ2031に相互接続するディスプレイ・アダプタ2030を含んでいる。ディスプレイ・アダプタ2030(またはプロセッサ2001あるいはその両方)は、GUI2032の表示および管理などのグラフィックス性能を提供するために、グラフィックス・コントローラを含むことができる。通信アダプタ2041は、システム・バス2002をネットワーク2050と相互接続し、ノード10が、サーバ2051およびデータベース2052などの他のシステム、デバイス、データ、およびソフトウェアと通信できるようにする。本発明の1つまたは複数の実施形態では、ソフトウェア2008およびデータ2009の動作が、サーバ2051およびデータベース2052によってネットワーク2050上に実装され得る。例えば、ネットワーク2050、サーバ2051、およびデータベース2052は、組み合わさって、PaaS(Platform as a Service)、SaaS(Software as a Service)、またはIaaS(Infrastructure as a Service)、あるいはその組み合わせとして(例えば、分散システム内のWebアプリケーションとして)、ソフトウェア2008およびデータ2009の内部の反復を提供することができる。
【0139】
本明細書に記載された実施形態は、必然的にコンピュータ技術に根差しており、特に、VMをホストするコンピュータ・サーバに根差している。さらに、本発明の1つまたは複数の実施形態は、コンピューティング技術自体の動作に対する改良を促進し、特に、ハイパーバイザがセキュアVMに関連付けられたメモリ、レジスタ、およびその他のそのようなデータにアクセスすることを禁止されていても、VMをホストするコンピュータ・サーバがセキュアVMをホストするのを容易にすることによって、VMをホストするコンピュータ・サーバの動作に対する改良を促進する。加えて、本発明の1つまたは複数の実施形態は、ハードウェア、ファームウェア(例えば、ミリコード)、またはこれらの組み合わせを含むセキュア・インターフェイス制御(本明細書では「UV」とも呼ばれる)を使用して、セキュアVMとハイパーバイザの分離を促進し、このようにして、コンピューティング・サーバによってホストされるVMのセキュリティを維持することによって、コンピューティング・サーバをホストするVMの改善に向かう重要な手順を提供する。セキュア・インターフェイス制御は、本明細書において説明されているように、VMの初期化/終了時に、VMの状態を保護することに大きなオーバーヘッドを追加せずに、セキュリティを促進するための軽量の中間動作を提供する。
【0140】
本明細書で開示された本発明の実施形態は、セキュア・インターフェイス制御の高レベルのページ管理を実施するシステム、方法、またはコンピュータ・プログラム製品(本明細書ではシステム)、あるいはその組み合わせを含んでよい。説明ごとに、要素の識別子が、異なる図の他の類似する要素に再使用されるということに注意する。
【0141】
本明細書では、関連する図面を参照して、本発明のさまざまな実施形態が説明される。本発明の範囲を逸脱することなく、本発明の代替の実施形態が考案され得る。以下の説明および図面において、要素間のさまざまな接続および位置関係(例えば、上、下、隣接など)が示される。それらの接続または位置関係あるいはその両方は、特に規定されない限り、直接的または間接的であることができ、本発明はこの点において限定するよう意図されていない。したがって、実体の結合は、直接的結合または間接的結合を指すことができ、実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書に記載されたさまざまな作業および工程段階は、本明細書に詳細に記載されない追加の段階または機能を含んでいるさらに包括的な手順または工程に組み込まれ得る。
【0142】
以下の定義および略称が、特許請求の範囲および本明細書の解釈に使用される。本明細書において使用されているように、「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「含有する」、もしくは「含有している」という用語、またはこれらの任意のその他の変形は、非排他的包含をカバーするよう意図されている。例えば、要素のリストを含んでいる組成、混合、工程、方法、製品、または装置は、それらの要素のみに必ずしも限定されず、明示的に列記されていないか、またはそのような組成、混合、工程、方法、製品、もしくは装置に固有の、その他の要素を含むことができる。
【0143】
さらに、「例示的」という用語は、本明細書では「例、事例、または実例としての役割を果たす」ことを意味するために使用される。「例示的」として本明細書に記載された任意の実施形態または設計は、必ずしも他の実施形態もしくは設計よりも好ましいか、または有利であると解釈されるべきではない。「少なくとも1つ」および「1つまたは複数」という用語は、1以上の任意の整数(すなわち、1、2、3、4など)を含んでいると理解されてよい。「複数」という用語は、2以上の任意の整数(すなわち、2、3、4、5など)を含んでいると理解されてよい。「接続」という用語は、間接的「接続」および直接的「接続」の両方を含んでよい。
【0144】
「約」、「実質的に」、「近似的に」、およびこれらの変形の用語は、本願書の出願時に使用できる機器に基づいて、特定の量の測定に関連付けられた誤差の程度を含むよう意図されている。例えば、「約」は、特定の値の±8%または5%、あるいは2%の範囲を含むことができる。
【0145】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいる1つ(または複数)のコンピュータ可読ストレージ媒体を含んでよい。
【0146】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0147】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0148】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0149】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0150】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを生成するものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【0151】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【0152】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0153】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、特に明示的に示されない限り、複数形も含むことが意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組み合わせの存在を示すが、1つまたは複数のその他の機能、整数、ステップ、動作、要素コンポーネント、またはこれらのグループ、あるいはその組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
【0154】
本明細書におけるさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、あるいは他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。