(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-28
(45)【発行日】2024-11-06
(54)【発明の名称】セキュリティ・モジュールの予約方法、システム
(51)【国際特許分類】
G06F 21/72 20130101AFI20241029BHJP
G06F 9/455 20180101ALI20241029BHJP
【FI】
G06F21/72
G06F9/455 150
(21)【出願番号】P 2022541600
(86)(22)【出願日】2020-12-10
(86)【国際出願番号】 IB2020061735
(87)【国際公開番号】W WO2021152384
(87)【国際公開日】2021-08-05
【審査請求日】2023-05-25
(32)【優先日】2020-01-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ブエントゲン、ラインハルト
(72)【発明者】
【氏名】アーバン、フォルカー
(72)【発明者】
【氏名】キスリー、リチャード
(72)【発明者】
【氏名】ブラッドベリー、ジョナサン
(72)【発明者】
【氏名】ヘンデル、トーステン
(72)【発明者】
【氏名】フロイデンバーガー、ハラルド
(72)【発明者】
【氏名】クロッツ、ベネディクト
(72)【発明者】
【氏名】ワーナー、クラウス
(72)【発明者】
【氏名】セルヴ、マーカス
【審査官】塩澤 如正
(56)【参考文献】
【文献】米国特許出願公開第2017/0075717(US,A1)
【文献】特開2018-133758(JP,A)
【文献】米国特許出願公開第2019/0391927(US,A1)
【文献】米国特許出願公開第2016/0092243(US,A1)
【文献】米国特許出願公開第2016/0239667(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/72
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、
少なくとも1つの処理回路により可読であり、方法を行うための命令を記憶している、少なくとも1つのコンピュータ可読記憶媒体を備え、前記方法が、
前記コンピューティング環境のセキュア・ゲストのためにセキュリティ・モジュールを予約することであって、前記予約することが、前記セキュリティ・モジュールと通信するために使用される1つまたは複数の待ち行列を前記セキュア・ゲストにバインドすることにより予約することを含む、前記予約することと、
前記予約に関係する1つまたは複数のアクションに基づいて前記1つまたは複数の待ち行列を管理することと、
前記1つまたは複数のアクションが、前記セキュリティ・モジュールへのアクセス権を失うことを含み、前記管理することが、前記1つまたは複数の待ち行列をフラッシュすることと、
をコンピュータに実行させる、コンピュータ・プログラム製品。
【請求項2】
前記1つまたは複数のアクションが、前記セキュア・ゲストの終了を含み、前記管理することが、前記1つまたは複数の待ち行列から1つまたは複数の保留中の要求を削除することを含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
前記1つまたは複数の待ち行列が、少なくとも1つの要求待ち行列を含み、前記1つまたは複数のアクションが、前記少なくとも1つの要求待ち行列のうちの要求待ち行列に要求をサブミットする動作を含み、前記管理することが、前記セキュリティ・モジュールが前記セキュア・ゲストに対して予約されていることを確かめ、前記セキュリティ・モジュールが前記セキュア・ゲストに対して予約されており、かつ前記要求が前記セキュア・ゲストによって発行されたことを確かめることに基づいて、前記動作を許可することを含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項4】
前記1つまたは複数の待ち行列が、少なくとも1つの応答待ち行列を含み、前記1つまたは複数のアクションが、前記少なくとも1つの応答待ち行列のうちの応答待ち行列から応答をフェッチする動作を含み、前記管理することが、前記セキュリティ・モジュールが前記セキュア・ゲストに対して予約されていることを確かめ、前記セキュリティ・モジュールが前記セキュア・ゲストに対して予約されており、かつ前記フェッチする動作が前記セキュア・ゲストによって発行されたことを確かめることに基づいて、前記動作を許可することを含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項5】
前記方法が、
前記1つまたは複数の待ち行列をフラッシュすることに基づいて、前記セキュリティ・モジュールへの保留中の要求を削除することをさらに含む、請求項
1に記載のコンピュータ・プログラム製品。
【請求項6】
前記方法が、前記セキュリティ・モジュールへのアクセス権を失うことに基づいて、前記予約を削除することをさらに含む、請求項
1に記載のコンピュータ・プログラム製品。
【請求項7】
前記方法が、前記セキュア・ゲストのために予約されていない待ち行列に前記セキュア・ゲストからの要求を送ることを拒否することをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項8】
前記方法が、前記セキュア・ゲストのために予約されていない待ち行列からフェッチされた前記セキュア・ゲストへの応答を渡すことを拒否することをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項9】
前記方法が、ゲストがそのゲストのために予約されていない待ち行列へのアクセスを試みることに基づいて、前記ゲストにエラー・コードを返すことをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項10】
前記方法が、前記セキュア・ゲストを開始するために使用されるメタデータに含まれるアクセス可能なセキュリティ・モジュールのリストに前記セキュリティ・モジュールがあるかどうかを判定することをさらに含み、前記セキュリティ・モジュールが前記メタデータに含まれるアクセス可能なセキュリティ・モジュールの前記リストにあると判定することに基づいて、前記セキュリティ・モジュールを予約するプロセスが続行する、請求項1に記載のコンピュータ・プログラム製品。
【請求項11】
前記メタデータが、前記セキュア・ゲスト
による独占的な使用のために、セキュア・チャネルを介して信頼されるコンポーネントに送信され、前記信頼されるコンポーネントが前記予約を行う、請求項
10に記載のコンピュータ・プログラム製品。
【請求項12】
前記バインドすることが、前記予約を行う際に使用される信頼されるコンポーネントの制御ブロック内に、前記予約の指示を含めることを含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項13】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、
メモリと、
前記メモリと通信しているプロセッサと、を備え、前記コンピュータ・システムは方法を行うように構成されており、前記方法が、
前記コンピューティング環境のセキュア・ゲストのためにセキュリティ・モジュールを予約することであって、前記予約することが、前記セキュリティ・モジュールと通信するために使用される1つまたは複数の待ち行列を前記セキュア・ゲストにバインドすることにより予約することを含む、前記予約することと、
前記予約に関係する1つまたは複数のアクションに基づいて前記1つまたは複数の待ち行列を管理することと、
前記1つまたは複数のアクションが、前記セキュリティ・モジュールへのアクセス権を失うことを含み、前記管理することが、前記1つまたは複数の待ち行列をフラッシュすることと、
を含む、コンピュータ・システム。
【請求項14】
前記1つまたは複数のアクションが、前記セキュア・ゲストの終了を含み、前記管理することが、前記1つまたは複数の待ち行列から1つまたは複数の保留中の要求を削除することを含む、請求項
13に記載のコンピュータ・システム。
【請求項15】
前記方法が、前記セキュア・ゲストを開始するために使用されるメタデータに含まれるアクセス可能なセキュリティ・モジュールのリストに前記セキュリティ・モジュールがあるかどうかを判定することをさらに含み、前記セキュリティ・モジュールが前記メタデータに含まれるアクセス可能なセキュリティ・モジュールの前記リストにあると判定することに基づいて、前記セキュリティ・モジュールを予約するプロセスが続行する、請求項
13に記載のコンピュータ・システム。
【請求項16】
前記方法が、ゲストがそのゲストのために予約されていない待ち行列へのアクセスを試みることに基づいて、前記ゲストにエラー・コードを返すことをさらに含む、請求項
13に記載のコンピュータ・システム。
【請求項17】
コンピューティング環境内の処理を容易にする、コンピュータによって実施される方法であって、
前記コンピューティング環境のセキュア・ゲストのためにセキュリティ・モジュールを予約することであって、前記予約することが、前記セキュリティ・モジュールと通信するために使用される1つまたは複数の待ち行列を前記セキュア・ゲストにバインドすることにより予約することを含む、前記予約することと、
前記予約に関係する1つまたは複数のアクションに基づいて前記1つまたは複数の待ち行列を管理することと、
前記1つまたは複数のアクションが、前記セキュリティ・モジュールへのアクセス権を失うことを含み、前記管理することが、前記1つまたは複数の待ち行列をフラッシュすることと、
を含む、コンピュータによって実施される方法。
【請求項18】
前記1つまたは複数のアクションが、前記セキュア・ゲストの終了を含み、前記管理することが、前記1つまたは複数の待ち行列から1つまたは複数の保留中の要求を削除することを含む、請求項
17に記載のコンピュータによって実施される方法。
【請求項19】
前記セキュア・ゲストを開始するために使用されるメタデータに含まれるアクセス可能なセキュリティ・モジュールのリストに前記セキュリティ・モジュールがあるかどうかを判定することをさらに含み、前記セキュリティ・モジュールが前記メタデータに含まれるアクセス可能なセキュリティ・モジュールの前記リストにあると判定することに基づいて、前記セキュリティ・モジュールを予約するプロセスが続行する、請求項
17に記載のコンピュータによって実施される方法。
【発明の詳細な説明】
【技術分野】
【0001】
1つまたは複数の態様は、概してコンピューティング環境内の処理に関し、詳細にはそのような環境内でデータを保護することに関する。
【背景技術】
【0002】
コンピューティング環境において、暗号要素は、データを保護する際の有用な技術的構成要素である。情報は、記憶または送信される情報への不正なアクセスを回避するために、暗号的に安全化された形態で記憶または送信されることがある。一部の場合には、ソフトウェアに基づく技術を使用してそのようなデータ保護を行うことがあり、他の場合には、ハードウェアの支援およびセキュリティに固有の要素が使用され得る。それらの固有の要素は、ハードウェア・セキュリティ・モジュール(HSM)と呼ばれることがあり、それらは、コンピュータ、またはコンピューティング環境の情報伝送システムの一部として使用されることがある。
【0003】
ハードウェア・セキュリティ・モジュールは、データ暗号化およびデータ復号の機能を提供するための特殊な回路を含むことがある。それらの機能は、ゲストとも称される、ゲスト・システムを使用するための暗号鍵を生成し、記憶することも含み得る。様々なゲスト(例えば、仮想機械、仮想サーバ等)が、ハイパーバイザまたは仮想機械マネジャによって制御される。共通のハイパーバイザによって管理される異なるゲストは、異なる所有者によって生成され得る。ある従来のハイパーバイザは、それがホストするゲストに対する完全な制御を有する。詳細には、そのハイパーバイザは、ホストされるゲストのメモリを検査し、さらには変更を加える能力を有する。クラウド環境において、ハイパーバイザおよびその管理者は、完全に信頼できるものであるべきである。
【0004】
ハイパーバイザによって管理される一部のゲストは、セキュア・ゲストである。セキュア・ゲストは、完全に信頼できるのではない1つまたは複数のハイパーバイザによってホストされるゲストである。そのようなゲストのイメージは、ロードされるときに保護され、そのゲストに割り当てられたリソース(例えば、メモリ、中央演算処理装置(CPU)レジスタ等)の内容の保護は、ゲストの全寿命にわたって保持される。ゲストの保護は、少なくとも完全性の保護(例えば、ハイパーバイザはどのゲスト状態も悪意をもって変更することはできない)を含み、加えて、初期イメージ、コード、およびゲスト内で実行されるデータの機密性を保持することを含むことができる。セキュア・ゲストに対応している環境の例には、AMD SEV(Advanced Micro Devices Secure Encrypted Virtualization)およびPOWER(R)の保護されるコンピューテーションが含まれる。POWERは、少なくとも1つの管轄においてインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。
【発明の概要】
【0005】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供を通じて、従来技術の欠点が克服され、さらなる利点が提供される。コンピュータ・プログラム製品は、少なくとも1つの処理回路により可読であり、方法を行うための命令を記憶している、少なくとも1つのコンピュータ可読記憶媒体を含む。方法は、コンピューティング環境のセキュア・ゲストのためにセキュリティ・モジュールを確保することを含む。この確保(予約)することは、確保(予約)を提供し、またセキュリティ・モジュールと通信するために使用される1つまたは複数の待ち行列をセキュア・ゲストにバインドすることを含む。1つまたは複数の待ち行列は、確保(予約)に関係する1つまたは複数のアクションに基づいて管理される。
【0006】
1つまたは複数の態様に関するコンピュータによって実施される方法およびシステムも、本明細書に記載され、特許請求される。さらに、1つまたは複数の態様に関係するサービスも、本明細書に記載され、特許請求され得る。
【0007】
さらなる特徴および利点が、本明細書に記載される技術を通じて実現される。他の実施形態および態様が本明細書に詳細に記載され、特許請求される態様の一部とみなされる。
【0008】
1つまたは複数の態様が、添付の特許請求の範囲において例として具体的に指し示され、明確に特許請求される。前述の内容、ならびに1つまたは複数の態様の目的、特徴、および利点は、添付図面(図面中における”確保”は”予約”と同意)と併せて読まれる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0009】
【
図1A】本発明の1つまたは複数の態様を組み込んで使用するコンピューティング環境の一例を示す図である。
【
図1B】本発明の1つまたは複数の態様による
図1Aのコンピューティング環境のさらなる詳細を示す図である。
【
図2】本発明の一態様による、ゲスト(例えばセキュア・ゲスト)のためにセキュリティ・モジュール(例えば暗号アダプタ)を確保(予約)する一例を示す図である。
【
図3】本発明の1つまたは複数の態様による、暗号アダプタと共にゲストを開始する流れの一例を示す図である。
【
図4】本発明の1つまたは複数の態様による、暗号アダプタと共にゲストを終了する流れの一例を示す図である。
【
図5】本発明の1つまたは複数の態様による、暗号アダプタに要求を送る流れの一例を示す図である。
【
図6】本発明の1つまたは複数の態様による、暗号アダプタから応答をフェッチする流れの一例を示す図である。
【
図7A】本発明の1つまたは複数の態様を組み込んで使用するコンピューティング環境の別の例を示す図である。
【
図8】クラウド・コンピューティング環境の1つの実施形態を示す図である。
【発明を実施するための形態】
【0010】
1つまたは複数の態様により、ゲストの(例えばセキュア・ゲスト)ために1つまたは複数のセキュリティ・モジュールを確保(reserve:予約)する能力が提供される。一例では、セキュリティ・モジュールは、ハードウェア・セキュリティ・モジュール(HSM)であり、これは例えば、コンピュータ・システムにプラグ可能なコンポーネントまたは個々に接続されるコンポーネントである。1つの特定の例として、ハードウェア・セキュリティ・モジュールは、暗号カードまたは暗号化アダプタ(暗号アダプタとも称される)であるが、他の例が存在する。1つの実施形態では、暗号アダプタ(または他のセキュリティ・モジュール)は、例えばその暗号アダプタが、セキュア・ゲストを開始するために使用されるメタデータに含まれるアクセス可能な暗号アダプタのリストにあり、かつその暗号アダプタが別のセキュア・ゲストによって確保(予約)されていない場合に、セキュア・ゲストによる独占的な使用のために確保(以降予約と同意として記載)される。
【0011】
本発明の1つまたは複数の態様を組み込んで使用するコンピューティング環境の1つの実施形態が、
図1Aを参照して説明される。一例では、コンピューティング環境は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるz/Architecture(R)のハードウェア・アーキテクチャに基づく。z/Architecture(R)ハードウェア・アーキテクチャの1つの実施形態は、「z/Architecture Principles of Operation」(IBMPublication No. SA22-7832-11、第12版、2017年9月)に記載されており、同文献は全体が参照により本明細書に組み込まれる。IBMおよびz/Architectureは、少なくとも1つの管轄においてインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標または商標である。
【0012】
コンピューティング環境は、他のアーキテクチャに基づいてもよく、z/Architecture(R)ハードウェア・アーキテクチャは一例に過ぎない。
【0013】
図1Aに示されるように、コンピューティング環境100は、例えば、例えば汎用コンピューティング・デバイスの形態で示される、コンピュータ・システム102を含む。コンピュータ・システム102は、これらに限定されないが、1つまたは複数のバスまたは他の接続120あるいはその両方を介して互いと結合された、1つまたは複数のプロセッサまたは処理ユニット104(例えば中央演算処理装置(CPU))、メモリ106(例として、システム・メモリ、主メモリ、主記憶、中央ストレージまたはストレージとしても知られる)、および1つまたは複数の入力/出力(I/O)インターフェース108を含み得る。
【0014】
バス120は、各種のバス・アーキテクチャのいずれかを使用する、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサ・バスまたはローカル・バスを含む、数種のバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャには、Industry Standard Architecture(ISA)、MicroChannel Architecture(MCA)、Enhanced ISA(EISA)、Video Electronics Standards Association(VESA)ローカル・バス、およびPeripheral Component Interconnect(PCI)が含まれる。
【0015】
メモリ106は、例えば、共有キャッシュ122などのキャッシュを含んでよく、それは、プロセッサ104のローカル・キャッシュ123に結合されてよい。さらに、メモリ106は、1つまたは複数のアプリケーション・プログラム124、オペレーティング・システム126、および1つまたは複数のコンピュータ可読プログラム命令128を含み得る。コンピュータ可読プログラム命令128は、本発明の態様の実施形態の機能を実行するように構成され得る。
【0016】
コンピュータ・システム102は、例えばI/Oインターフェース108を介して、1つもしくは複数の外部デバイス130、1つもしくは複数のネットワーク・インターフェース132、または1つもしくは複数のデータ記憶装置134、あるいはその組合せと通信してもよい。例示的な外部デバイスには、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイ等が含まれる。ネットワーク・インターフェース132は、コンピュータ・システム102が、ローカル・エリア・ネットワーク(LAN)、一般のワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(例えばインターネット)、あるいはその組合せなどの1つまたは複数のネットワークと通信することを可能にして、他のコンピューティング・デバイスまたはシステムとの通信を提供する。
【0017】
データ記憶装置134は、1つもしくは複数のプログラム136、1つもしくは複数のコンピュータ可読プログラム命令138、またはデータ、あるいはその組合せ等を記憶し得る。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成され得る。
【0018】
コンピュータ・システム102は、取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム記憶媒体を含む、またはそれに結合される、あるいはその両方であり得る。例えば、それは、取り外し不能で不揮発性の磁気媒体(通例「ハード・ドライブ」と呼ばれる)、取り外し可能で不揮発性の磁気ディスク(例えば「フロッピー(R)・ディスク」)の読み書きを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROMもしくは他の光学媒体などの取り外し可能で不揮発性の光ディスクの読み書きを行うための光ディスク・ドライブ、あるいはその組合せを含む、またはそれに結合される、あるいはその両方であり得る。他のハードウェアまたはソフトウェア・コンポーネントあるいはその両方がコンピュータ・システム102と併せて使用されることが理解されるべきである。例には、これらに限定されないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ保存記憶システム等が含まれる。
【0019】
コンピュータ・システム102は、多数の他の汎用または特殊目的のコンピューティング・システム環境または構成と共に動作し得る。コンピュータ・システム102と共に使用するのに適し得る、よく知られているコンピューティング・システム、環境、または構成、あるいはその組合せの例には、これらに限定されないが、パーソナル・コンピュータ(PC)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち型またはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブル消費者家電、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上述のシステムまたはデバイスの任意のものを含む分散クラウド・コンピューティング環境等が含まれる。
【0020】
本発明の1つまたは複数の態様を組み込む、または使用する、あるいはその両方を行うコンピューティング環境(例えばコンピューティング環境100)の1つの実施形態のさらなる詳細は、
図1Bを参照して説明される。一例では、コンピューティング環境100は、コンピュータ・システム102などのシステムと、ハードウェア・セキュリティ・モジュール(HSM)150などのセキュリティ・モジュールとを含む共有コンピューティング環境である。本明細書における例では、セキュリティ・モジュールは、ハードウェア・セキュリティ・モジュールであり、1つの特定の例では暗号アダプタ152であるが、他の実施形態では、他のセキュリティ・モジュールが使用されてよい。
【0021】
コンピュータ・システム102は、一例では、信頼されるファームウェア160などの信頼されるコンポーネントと、1つまたは複数のセキュア・ゲスト180を含む1つまたは複数のゲスト(例えば仮想機械(VM))と対話するハイパーバイザ170とを含む。ファームウェア(例えば、信頼されるファームウェア160)は、例えばプロセッサのマイクロコードを含む。それは、例えば、上位の機械コードの実装で使用されるハードウェア・レベル命令またはデータ構造あるいはその両方を含む。1つの実施形態では、それは、例えば独自仕様コードを含み、この独自仕様コードは、基礎となるハードウェアに固有である信頼されるソフトウェアまたはマイクロコードを含み、システム・ハードウェアへのオペレーティング・システム・アクセスを制御する、マイクロコードとして提供されるのが一般的である。
【0022】
ハイパーバイザ(例えばハイパーバイザ170)は、ホストと呼ばれることもある。ハイパーバイザ170の一例は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるz/VM(R)ハイパーバイザである。z/VMは、少なくとも1つの管轄においてインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標または商標である。ハイパーバイザは、コンピュータ・システム内で実行されるゲストを管理する。
【0023】
ゲストまたはゲスト・システムは、例えば、ハイパーバイザ上の仮想機械(VM)で実行されるオペレーティング・システムである。ハイパーバイザは、1つまたは複数の特定のハードウェア・セキュリティ・モジュール(例えばハードウェア・セキュリティ・モジュール150)をゲスト・システムに割り当てるために使用される。ゲストに割り当てられる特定のハードウェア・セキュリティ・モジュール(例えばハードウェア・セキュリティ・モジュール150)は、ゲストの鍵をラップしてゲスト用のセキュア鍵を提供するために使用される暗号マスター鍵(マスター鍵またはラッピング鍵としても知られる)を備えて、構成され得る。
【0024】
ゲストの1つまたは複数は、セキュア・ゲスト(例えばセキュア・ゲスト180)とみなされる。セキュア・ゲストは、その状態およびメモリがハイパーバイザのアクセスから保護されるゲストである。セキュア・ゲストは、例えば、機密性を保護し、完全性を保護する方式で信頼されるコンポーネント(例えば信頼されるファームウェア160)に送信されるメタデータを使用して開始される。
【0025】
一例では、信頼されるファームウェア160は複数の制御ブロックを含み、それらには、例えば、セキュア・ゲスト制御ブロック162と、ハードウェア・セキュリティ・モジュール制御ブロック164などのセキュリティ・モジュール制御ブロックとが含まれる。セキュア・ゲスト制御ブロック162は、各ゲストのために確保される1つまたは複数のセキュリティ・モジュールに関係する、セキュア・ゲストごとの構成情報を含む。本明細書における例では、ゲストのために確保されるセキュリティ・モジュールは暗号アダプタであり、したがって、一例では、構成は、セキュア・ゲストの暗号アダプタ構成166と称される。セキュア・ゲスト制御ブロック162は、一例では、システムの各セキュア・ゲストの構成166を含む。特定のセキュア・ゲストの構成166は、例えば、そのセキュア・ゲストを開始するために使用されるメタデータに含まれるアクセス可能な暗号アダプタのリストを含む。
【0026】
一例では、ハードウェア・セキュリティ・モジュール制御ブロック164は、システム(例えばコンピュータ・システム102)がアクセスできる各暗号アダプタと通信するためにシステムによって使用される1つまたは複数の待ち行列168と、各暗号アダプタの確保情報169とを含む。一例として、1つまたは複数の待ち行列168は、その待ち行列に割り当てられた暗号アダプタに送られる要求を含めるために使用される、少なくとも1つの要求待ち行列168aと、暗号アダプタからの応答を受け取るための少なくとも1つの応答待ち行列168bとを含む。一例では、同じ待ち行列が、特定の暗号アダプタに関する要求または応答あるいはその両方に使用されてよい。他の例も可能である。
【0027】
確保情報169は、例えば、暗号アダプタが確保されているかどうか、および確保されている場合、どのゲストによって確保されているかの指示を含む。一例では、暗号アダプタ(または他のセキュリティ・モジュール)があるゲスト(例えばセキュア・ゲスト180)のために確保されているとき、ゲストは、その暗号アダプタへの独占的なアクセス権を有する。
【0028】
インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるSystem z(R)(System zは、少なくとも1つの管轄においてインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である)などの、仮想化をサポートするシステムでは、ハイパーバイザは、ゲストの寿命の間の任意の時にゲストの構成を変更してよい。例えば、悪意のある、またはあまりよくプログラムされていないハイパーバイザが、暗号アダプタのアクセスを、最初に第1のゲストによってアクセス可能であり、次いで第2のゲストによってアクセス可能であることから構成し得る。暗号アダプタへの大半の暗号化要求の非同期性のために、したがって、第1のゲストによって発行された要求に対して、その応答が第2のゲストによってアクセス可能であることが起こり得る。しかし、セキュア・ゲストについて、想定は、ハイパーバイザが信頼されるものでなくてもそれらが安全に実行されるというものであり、したがって、システムは、第1のセキュア・ゲストが実行中である、または暗号アダプタに対して第1のセキュア・ゲストによって発行された暗号要求の結果を読み出している間は、第1のセキュア・ゲストに割り当てられた暗号アダプタへの第2のゲストのアクセスを阻止すべきである。加えて、セキュア・ゲストは、そのセキュア・ゲストが暗号アダプタへのアクセス権を有している間に、その暗号アダプタのマスター鍵が変更されると、そのことを検出できるべきである。
【0029】
本発明の1つまたは複数の態様は、最低でも、不適当な時における暗号アダプタの再割り当てに関する上記の問題に対処する。本発明の1つまたは複数の態様によると、1つもしくは複数の暗号アダプタ(または他のセキュリティ・モジュール、あるいはその両方)は、ゲストがその暗号アダプタへの独占的なアクセス権を有するように、そのゲストのために確保される。セキュア・ゲストのための暗号アダプタの確保に関する詳細が、
図2~6を参照して説明される。詳細には、
図2は、セキュア・ゲストのためにセキュリティ・モジュール(例えば暗号アダプタ)を確保する論理の一例を描いており、
図3は、暗号アダプタと共にゲストを開始する論理の一例を描いており、
図4は、暗号アダプタと共にゲストを終了する論理の一例を描いており、
図5は、暗号アダプタに要求を送る論理の一例を描いており、
図6は、暗号アダプタから応答をフェッチする論理の一例を描いている。
【0030】
初めに
図2を参照すると、セキュア・ゲスト(例えばセキュア・ゲスト180)のためにセキュリティ・モジュールを確保するには、ステップ200で、信頼されるコンポーネント(例えば、信頼されるファームウェア160)が、セキュア・ゲストのためにセキュリティ・モジュール(例えば暗号アダプタ152)を確保する要求を取得する。例として、そのような要求は、セキュア・ゲストを開始することに基づいて、信頼されるコンポーネントによって取得されるか、または、要求は、セキュア・ゲストが開始されたときにセキュリティ・モジュールの確保が成功しなかった場合、もしくは、セキュリティ・モジュールの確保がセキュリティ・モジュールの喪失(例えば一時的な喪失)のために失われた場合に、セキュア・ゲストによってサブミットされてもよい。他の例も可能である。
【0031】
要求を取得することに基づいて、照会202で、ゲストを開始するために使用されるメタデータに含まれるアクセス可能なセキュリティ・モジュールのリストにセキュリティ・モジュールが含まれているかどうかの判定が行われる。1つの実施形態では、これは、セキュア・ゲストの構成166を使用して判定される。セキュリティ・モジュールがリストにない場合、この処理は完了し、1つの実施形態では、エラー・コードが返される。セキュリティ・モジュールは、ゲストのために確保されない。しかし、セキュリティ・モジュールがアクセス可能なセキュリティ・モジュールのリストにある場合は、照会204で、セキュリティ・モジュールが、例えば別のゲストによって、既に確保されているかどうかについて、さらなる判定が行われる。これは例えば、確保情報169を確認することによって判定される。例えば別のゲストによって、既に確保されている場合、この処理は完了し、1つの実施形態では、エラー・コードが返される。しかし、セキュリティ・モジュールが既に確保されているのでない場合は、ステップ206で、セキュリティ・モジュールがゲストのために確保される。確保することは、例えば、ステップ208で、1つまたは複数の待ち行列(例えば要求待ち行列168a/応答待ち行列168b)をゲストにバインドすることを含む。バインドすることは、例えば、HSM制御ブロック164の確保情報169内などの制御ブロック内で、その確保を示すことを含む。
【0032】
セキュリティ・モジュールをゲストに対して確保することに基づいて、ステップ210で、ゲストにバインドされた1つもしくは複数の待ち行列が使用される、もしくは管理される、またはその両方であり、ならびに/あるいは、イベントもしくは確保自体またはその両方が、確保に関係するアクションに基づいて管理される。例えば、アクションは、待ち行列に要求をサブミットする動作を含み得、管理することは、セキュリティ・モジュールがセキュア・ゲストに対して確保されていることを確かめ、セキュリティ・モジュールがセキュア・ゲストに対して確保されており、かつ要求がそのセキュア・ゲストによって発行されたことを確かめることに基づいてその動作を許可することを含み得、および/または、アクションは、待ち行列から応答をフェッチする動作を含み得、管理することは、セキュリティ・モジュールがセキュア・ゲストに対して確保されていることを確かめ、セキュリティ・モジュールがセキュア・ゲストに対して確保されており、かつフェッチする動作がそのセキュア・ゲストによって発行されたことを確かめることに基づいてその動作を許可することを含み得る。またさらに、アクションは、セキュリティ・モジュールへのアクセス権を失うことを含み得、管理することは、1つまたは複数の待ち行列をフラッシュすることを含み得る。さらなる例として、アクションは、セキュア・ゲストの終了を含み得、管理することは、1つまたは複数の待ち行列から1つまたは複数の保留中の要求を削除することを含み得る。さらに、例として、セキュア・ゲストのために確保されていない待ち行列にそのセキュア・ゲストからの要求を送ることが拒否される;セキュア・ゲストのために確保されていない待ち行列からフェッチされた、そのセキュア・ゲストへの応答を渡すことが拒否される;および/または、セキュア・ゲストが、そのセキュア・ゲストのために確保されていない待ち行列にアクセスを試みると、セキュア・ゲストにエラー・コードが返される。多くの他のアクション、イベントまたは管理あるいはその組合せが行われてよい。さらに、本明細書に示されるように、例は暗号アダプタを参照するが、この論理は他のセキュリティ・モジュールにも等しく適用される。
【0033】
セキュア・ゲストに対してセキュリティ・モジュールを確保することに関するさらなる詳細が、
図3~6を参照して説明される。
【0034】
図3を参照して、暗号アダプタ(例えば暗号アダプタ152)と共にゲスト(例えばセキュア・ゲスト180)を開始する1つの実施形態を説明する。最初に、ハイパーバイザ(例えばハイパーバイザ170)が、ステップ300で、暗号アダプタ(例えば、暗号アダプタ152、または他のセキュリティ・モジュール)と共に構成されることになるセキュア・ゲスト(例えばセキュア・ゲスト180)を開始することを要求する。信頼されるコンポーネント(例えば信頼されるファームウェア160)が、ステップ302で、その要求を受信し、その暗号アダプタが例えば別のゲストによって既に確保されているかどうかを確認する。これは、例えば、確保情報169を確認することを含む。照会304で、暗号アダプタが確保されている場合、暗号アダプタは、そのセキュア・ゲストにとってアクセス可能でなく、したがって、ステップ306で、そのゲストはその暗号アダプタと共に開始されない。この事例では、ゲストを別の暗号アダプタ(もしくは他のセキュリティ・モジュール)と共に開始するために別の要求が発行されるか、または1つの要求が、複数の暗号アダプタ(または他のセキュリティ・モジュール、あるいはその両方)を含み得、処理は、ゲストを暗号アダプタと共に開始することに成功するかまたは要求に含まれる他の暗号アダプタ(もしくは他のセキュリティ・モジュール)がなくなるまで、反復することができる。
【0035】
照会304に戻り、暗号アダプタが例えば別のゲストによって確保されていない場合、一例では、信頼されるファームウェア160が、暗号アダプタをリセットする。暗号アダプタをリセットすることは、例えば、ステップ308で、信頼されるファームウェア160によって保持されている暗号アダプタの制御ブロック(例えばHSM制御ブロック164)内の要求・応答待ち行列(例えば、要求・応答待ち行列168)を空にすることを含む。要求待ち行列を空にすることにより、アダプタに対する保留中の要求(例えばすべての保留中の要求)とそれらに関連するデータ、およびアダプタからの保留中の応答(例えばすべての保留中の応答)とそれらに関連するデータが削除される。一例では、待ち行列を空にすることは、空にすべきデータがあると判定するのに続いて行われる。別の例では、空にするまたはクリアする動作は、待ち行列にクリアすべきデータがあるかどうかに関係なく行われる。
【0036】
さらに、信頼されるファームウェア160は、ステップ310で、セキュア・ゲストのために暗号アダプタを確保する。一例では、これは、ステップ310で、セキュア・ゲストの識別子を、例えば信頼されるファームウェアによって保持されるHSM制御ブロック164の確保情報169に入れることを含む。他の実施形態では、同じまたは異なる場所あるいはその両方における、異なる、または他の、あるいはその両方の種類の指示が提供され得る。これで暗号アダプタは、ステップ312で、セキュア・ゲストにとってアクセス可能となる。
【0037】
別の態様では、
図4を参照してさらに説明されるように、セキュア・ゲストに対する暗号アダプタの確保が終了され得る。一例では、ステップ400で、暗号アダプタに対して構成されたセキュア・ゲストが終了される。したがって、信頼されるファームウェア160は、ステップ402で、暗号アダプタをリセットし、これは例えば、ステップ404で、信頼されるファームウェア160によって保持されている制御ブロック内の要求・応答待ち行列(例えば、要求・応答待ち行列168)を空にすることを含む。
【0038】
加えて、1つの実施形態では、ステップ406で、信頼されるファームウェア160は、信頼されるファームウェアによって保持されている信頼されるファームウェアの制御ブロック(例えば確保情報169)内の確保を削除する。他の実施形態では、同じ、または異なる場所、あるいはその両方における、他の、または異なる、あるいはその両方の指示も削除されてもよい。
【0039】
別の実施形態では、確保の終了は、セキュア・ゲストが終了されない場合でも発生することができる。他の変形形態も可能である。
【0040】
ゲストから暗号アダプタに要求を送る1つの実施形態が、
図5を参照して説明される。最初に、ステップ500で、ゲスト(例えばセキュア・ゲスト180)が、暗号アダプタ(例えば暗号アダプタ152)に要求を送る。この要求は、データを暗号化または復号する要求、暗号動作用の鍵を生成する要求等であり得る。
【0041】
要求を発行することに基づいて、ステップ502で、信頼されるコンポーネント(例えば信頼されるファームウェア160)が、要求をインターセプトし、暗号アダプタが確保されているかどうか、および、確保されている場合、それが別のゲストによって確保されているかどうかを確認する。一例では、この確認は、確保情報169の確認である。照会504で、暗号アダプタが別のゲストによって確保されている場合は、ステップ506で、動作が失敗する。しかし、暗号アダプタが別のゲストによって確保されていない場合は、照会508で、当該ゲストがセキュア・ゲストでないかどうか、または当該ゲストがセキュア・ゲストである場合、そのセキュア・ゲストによって確保された暗号アダプタが要求を発行しているのかどうかについて確認が行われる。ここでも、一例では、暗号アダプタがセキュア・ゲストによって確保されているかどうかを確認するために、確保情報169が確認される。さらに、一例では、ゲストがセキュア・ゲストであるかどうかを確認するために、ファームウェア(例えば信頼されるファームウェア160)が、ゲストがセキュアであるかどうかの指示を含む、そのゲストのために保持されている制御ブロックを確認する。ゲストがセキュア・ゲストであり、かつ暗号アダプタがそのセキュア・ゲストによって確保されていない場合、ステップ510で、動作が失敗する。さらに、照会504で、暗号アダプタが他のゲストによって確保されておらず、かつ、照会508で、ゲストがセキュア・ゲストでないか、または、ゲストがセキュア・ゲストであり、暗号アダプタがそのセキュア・ゲストによって確保されているかのどちらかの場合、信頼されるファームウェアは、暗号アダプタの要求待ち行列(例えば要求待ち行列168a)に要求をプッシュし、また一例では、ステップ512で、セキュア・ゲストにリターン・コードを返して、動作の成功を示す。
【0042】
暗号アダプタから応答をフェッチする1つの実施形態が、
図6を参照して説明される。最初に、ステップ600で、ゲスト(例えばセキュア・ゲスト180)が、暗号アダプタから応答をフェッチする動作を発行する。この動作の発行に基づいて、信頼されるファームウェア(例えば信頼されるファームウェア160)は、ステップ602で、動作をインターセプトし、暗号アダプタが確保されているかどうか、および、確保されている場合、それが別のゲストによって確保されているかどうかを確認する。一例では、この確認は、確保情報169の確認である。照会604で、暗号アダプタが別のゲストによって確保されている場合、ステップ606で、動作が失敗する。しかし、暗号アダプタが別のゲストによって確保されていない場合は、照会608で、当該ゲストがセキュア・ゲストでないかどうか、または当該ゲストがセキュア・ゲストである場合、そのセキュア・ゲストによって確保された暗号アダプタが動作を発行しているのかどうかについて確認が行われる。ここでも、一例では、暗号アダプタがセキュア・ゲストによって確保されているかどうかの確認は、確保情報169の確認である。さらに、一例では、ゲストがセキュア・ゲストであるかどうかを確認するために、ファームウェア(例えば信頼されるファームウェア160)が、ゲストがセキュアであるかどうかの指示を含む、そのゲストのために保持されている制御ブロックを確認する。ゲストがセキュア・ゲストであり、かつ暗号アダプタがそのセキュア・ゲストによって確保されていない場合、ステップ610で、動作が失敗する。さらに、照会604で、暗号アダプタが他のゲストによって確保されておらず、かつ、照会608で、ゲストがセキュア・ゲストでないか、または、ゲストがセキュア・ゲストであり、暗号アダプタがそのセキュア・ゲストによって確保されているかのどちらかの場合、信頼されるファームウェアは、ステップ612で、暗号アダプタの応答待ち行列(例えば応答待ち行列168b)から応答をプルしてそれをセキュア・ゲストに返す。
【0043】
本明細書に記載されるのは、ハードウェア・セキュリティ・モジュールなどのセキュリティ・モジュール、特に暗号アダプタを、特定のゲストのために確保する能力である。1つの実施形態では、暗号アダプタは、その暗号アダプタが、セキュア・ゲストを開始するために使用されるメタデータに含まれるアクセス可能な暗号アダプタのリストにあり、かつ別のセキュア・ゲストによって確保されていない場合に、セキュア・ゲストによる独占的な使用のために確保される。そのメタデータは、セキュア・ゲストのブート・イメージに暗号的にリンクされ、セキュア・チャネルを介して信頼されるファームウェアに送信されることになる。
【0044】
確保は、セキュア・ゲストが開始されるときに、暗号アダプタへの要求および暗号アダプタからの応答を待ち行列に入れるために暗号アダプタとの通信でシステムが使用する、信頼されるファームウェアの制御ブロック(例えばHSM制御ブロック164)内で確保を示すことによって、信頼されるファームウェアによって行われる。確保は、ゲストの寿命にわたるものであり得、確保は、ハイパーバイザから保護される。確保を含むゲストのI/O構成は、非協調的なハイパーバイザを含む、ハイパーバイザの誤設定から保護される。
【0045】
一例では、セキュア・ゲストが開始されるとき、またはアダプタが取り外された(および再度プラグ接続された)ために確保が取り消されるときに暗号アダプタの確保が失敗した場合、システムは、信頼されるファームウェアにアダプタの確保を要求するオプションを、例えばすべてのセキュア・ゲストに提供してもよい。その場合、信頼されるファームウェアは、そのアダプタが利用可能であるかどうか、セキュア・ゲストがそのセキュア・ゲストのメタデータに従ってそのアダプタにアクセスし得るかどうか、および、そのアダプタの競合する確保がないかどうかを確認し、肯定の場合、そのアダプタをそのセキュア・ゲストのために確保する。
【0046】
1つの態様では、信頼されるファームウェアは、制御ブロック(例えばセキュア・ゲスト制御ブロック162)を保持し、それは、ハイパーバイザによりアクセス不可能であり、セキュア・ゲストの寿命にわたってゲストを表し、セキュア・ゲストのメタデータからのデータを含む。信頼されるファームウェアは、セキュア・ゲストが終了されるまで暗号アダプタの確保を保持する。よって、ハイパーバイザは、信頼されるファームウェアにより実行中のゲストのために保持されている確保に干渉し得ない。信頼されるファームウェアは、あるセキュア・ゲストのために確保されている暗号アダプタを対象とするのでない、当該ゲストからの要求はいずれも拒否し、別のゲストのために確保されている暗号アダプタへの任意のゲストからの要求はいずれも拒否する。
【0047】
システムが、暗号アダプタが取り外されたことを検出した場合、1つの実施形態では、システムは、その暗号アダプタの確保があればそれを取り消す。
【0048】
システムがアクセスできる暗号アダプタごとに、信頼されるファームウェアは制御ブロック(例えば制御ブロック164)を保持し、それは、一例では、待ち行列エントリがまだ暗号アダプタにサブミットされていないかどうかの指示を含む要求、または暗号アダプタからの応答の待ち行列を少なくとも含む。それぞれのそのような制御ブロックは、その暗号アダプタが確保されているかどうか、および、確保されている場合、どのゲストによってそれが確保されているかの指示も保持する。
【0049】
暗号アダプタの制御ブロック(および確保の指示)は、ハイパーバイザまたはゲストによって直接アクセスすることはできない。一例では、それらは、ハイパーバイザまたはゲストの代理としてのファームウェアのみによってアクセスすることができる。
【0050】
システムの始動時に、1つの実施形態では、すべての暗号アダプタが、確保されていないとマークされる。
【0051】
1つまたは複数の態様では、信頼されるファームウェアは、セキュア・ゲストを開始し、次いで1つの実施形態では、それはハイパーバイザのゲスト構成とセキュア・ゲストのメタデータ内の暗号アダプタ・リストとの両方に定義されている暗号アダプタを確保する。確保は、すべての確保されていない暗号アダプタに対して成功し、すべての確保されている暗号アダプタに対して失敗する。信頼されるファームウェアは、確保された暗号アダプタがハイパーバイザ通過モードにおいてゲストからアクセス可能となり、かつセキュア・ゲストのために確保されていないアダプタにアクセスする試みが失敗するように、セキュア・ゲストを構成する。一例では、ハードウェア・セキュリティ・モジュールは、ゲストによって発行された暗号動作がハイパーバイザ(例えばハイパーバイザ170)によってインターセプトされないように、ハイパーバイザ通過モードにおいてセキュア・ゲストに対して構成される。代わりに、それらは、信頼されるコンポーネント(例えば信頼されるファームウェア160)によってインターセプトされ、ハイパーバイザを迂回する。この構成は、z/Architecture(R)ハードウェア・アーキテクチャの一例では、例えばz/Architecture(R)ハードウェア・アーキテクチャの解釈実行開始(start interpretative execution: SIE)命令の、例えば暗号制御ブロックを構成することによって行われる。
【0052】
1つまたは複数の態様では、暗号アダプタの制御ブロックを管理するファームウェアは、確保されているハードウェア・セキュリティ・モジュールの要求待ち行列に要求をプッシュすべき場合、要求元のゲストのIDを確認し、そのIDが確保を所有しているゲストのIDと一致しない場合、動作を拒否する。暗号アダプタの制御ブロックを管理するファームウェアは、確保されている暗号アダプタの要求待ち行列から応答をプルすべき場合、要求元のゲストのIDを確認し、そのIDが確保を所有しているゲストのIDと一致しない場合、動作を拒否する。
【0053】
1つまたは複数の態様では、信頼されるファームウェアがセキュア・ゲストを終了すると、例えばそのセキュア・ゲストのために確保されているすべての暗号アダプタについて、信頼されるファームウェアは、保留中の要求があればそれを中止するように暗号アダプタに指示し、暗号アダプタの要求・応答待ち行列をフラッシュする。
【0054】
1つまたは複数の態様では、ハードウェア・セキュリティ・モジュール(HSM)として機能する確保された暗号アダプタが失われ、再度出現した場合、信頼されるファームウェアは、その暗号アダプタがどの保留中の要求にも作用しないことを保証し、その暗号アダプタの要求・応答待ち行列をフラッシュし、セキュア・ゲストからそのHSMの構成を解除するか、または、それを、セキュア・ゲストからのそのアダプタに対する各要求が結果としてエラーを生じさせる状態に置く。
【0055】
1つまたは複数の態様では、信頼されるファームウェアは、例えばセキュア・ゲストのみにより、アクセス可能なインターフェースを提供し、それをセキュア・ゲストが使用して、失われた確保を再確立するよう要求することができる。ハイパーバイザは、例えば、セキュア・ゲストのハイパーバイザ構成とセキュア・ゲストのメタデータ内の暗号アダプタのリストとの両方にある暗号アダプタについてのみ、確保を再確立する要求を満たす。
【0056】
1つの実施形態では、HSMのマスター鍵が、セキュア・ゲストに属するマスター鍵であることを確実にするために、セキュア・ゲストは、アダプタを初めて使用する前に、または失われたアダプタの確保が再確立されるときにはいつでも、マスター鍵検証パターンを確認しなければならない。
【0057】
様々な態様が本明細書に記載される。本発明の態様の思想から逸脱することなく、多くの変形形態および実施形態が可能である。その他の点で矛盾しない限り、本明細書に記載される各態様または特徴、およびそれらの変形例は、任意の他の態様または特徴と組み合わせ可能であり得ることが留意されるべきである。
【0058】
本発明の1つまたは複数の態様は、コンピュータ技術と一体に結び付いており、コンピュータ内の処理を容易にして、その性能を向上させる。本発明の実施形態は、少なくとも、それらが、コンピューティングに特有の課題に対処し、同じくこの分野にある技術的手法を提供することを対象とするため、コンピューティングと一体に結び付いている。本発明の実施形態は、暗号アダプタなどのセキュリティ・モジュールを、特定のゲストのために確保する。上記の課題および手法の両方がコンピューティングに固有であるとすると、本発明の実施形態は、コンピューティングと一体に結び付いている。
【0059】
これらに限定されないが、エミュレーション環境を含む他の種類のコンピューティング環境も、本発明の1つまたは複数の態様を組み込んで使用し得、エミュレーション環境の一例が、
図7Aを参照して説明される。この例では、コンピューティング環境35は、例えば、例えば1つまたは複数のバス43または他の接続あるいはその両方を介して互いと結合された、ネイティブ中央演算処理装置(CPU)37、メモリ39、ならびに1つまたは複数の入力/出力デバイスまたはインターフェース41あるいはその両方を含む。例として、コンピューティング環境35は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるPowerPC(R)プロセッサ、またはインターナショナル・ビジネス・マシーンズ・コーポレーション、Intel Corporation、もしくは他の企業によって提供されるアーキテクチャに基づく他の機械、あるいはその両方を含み得る。PowerPCは、少なくとも1つの管轄においてインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。Intelは、米国および他の国においてIntel Corporationおよびその系列会社の商標または登録商標である。
【0060】
ネイティブ中央演算処理装置37は、環境内で処理中に使用される、1つもしくは複数の汎用レジスタ、または1つもしくは複数の特殊目的レジスタ、あるいはその両方などの、1つまたは複数のネイティブ・レジスタ45を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含んでいる。
【0061】
さらに、ネイティブ中央演算処理装置37は、メモリ39に記憶されている命令およびコードを実行する。1つの特定の例では、中央演算処理装置は、メモリ39に記憶されているエミュレータ・コード47を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータ・コード47は、PowerPC(R)プロセッサまたは他のサーバもしくはプロセッサなどの、z/Architecture(R)ハードウェア・アーキテクチャ以外のアーキテクチャに基づく機械が、z/Architecture(R)ハードウェア・アーキテクチャをエミュレートし、z/Architecture(R)ハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行することを可能にする。
【0062】
エミュレータ・コード47に関するさらなる詳細が、
図7Bを参照して説明される。メモリ39に記憶されたゲスト命令49は、ネイティブCPU37のアーキテクチャ以外のアーキテクチャ内で実行するために開発されたソフトウェア命令(例えば機械命令と相関する)を含む。例えば、ゲスト命令49は、z/Architecture(R)プロセッサで実行するように設計されている可能性があるが、代わりに、例えばIntel(R)プロセッサであり得る、ネイティブCPU37上でエミュレートされている。一例では、エミュレータ・コード47は、メモリ39から1つまたは複数のゲスト命令49を取得し、任意で、取得した命令のローカルなバッファリングを提供するための命令フェッチ・ルーチン51を含む。それは、取得されたゲスト命令の種類を判定し、そのゲスト命令を1つまたは複数の対応するネイティブ命令55に変換するための命令変換ルーチン53も含む。この変換は、例えば、ゲスト命令によって行われる機能を識別し、その機能を行うためのネイティブ命令を選択することを含む。
【0063】
さらに、エミュレータ・コード47は、ネイティブ命令を実行させるエミュレーション制御ルーチン57を含む。エミュレーション制御ルーチン57は、ネイティブCPU37にネイティブ命令のルーチンを実行させ得、それが、1つまたは複数の事前に取得されたゲスト命令をエミュレートし、その実行の終結時に、制御を命令フェッチ・ルーチンに戻して次のゲスト命令またはゲスト命令の群の取得をエミュレートする。ネイティブ命令55の実行は、変換ルーチンの決定に応じて、メモリ39からレジスタにデータをロードすること、レジスタからメモリにデータを戻して記憶すること、または、任意の種類の算術もしくは論理演算を行うことを含み得る。
【0064】
各ルーチンは、例えば、ソフトウェアとして実装され、それがメモリに記憶され、ネイティブ中央演算処理装置37によって実行される。他の例では、ルーチンまたは動作の1つまたは複数が、ファームウェア、ハードウェア、ソフトウェア、またはそれらの任意の組合せとして実装される。エミュレートされるプロセッサのレジスタは、ネイティブCPUのレジスタ45を使用して、またはメモリ39内の場所を使用することによって、エミュレートされ得る。実施形態において、ゲスト命令49、ネイティブ命令55、およびエミュレータ・コード47は、同じメモリに存在していても、または異なるメモリ・デバイス間に分散されてもよい。
【0065】
1つまたは複数の態様は、クラウド・コンピューティングに関し得る。
【0066】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に述べられる教示の実施はクラウド・コンピューティング環境に限定されないことが理解されるべきである。むしろ、本発明の実施形態は、現在知られているまたは後に開発される任意の他の種類のコンピューティング環境と併せて実施されることが可能である。
【0067】
クラウド・コンピューティングは、最小限の管理労力で、またはサービスの提供者との最小限の対話で、速やかにプロビジョニングおよび公開することが可能な、構成可能なコンピューティング・リソース(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械、およびサービス)の共有プールへの利便でオンデマンドのネットワーク・アクセスを可能にするためのサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
【0068】
特性は以下の通りである。
【0069】
オンデマンド・セルフサービス:クラウド消費者が、サービスの提供者との人的な対話を必要とすることなく、必要に応じて、自動的に、サーバ時間やネットワーク・ストレージなどのコンピューティング能力を一方向にプロビジョニングすることができる。
【0070】
ブロード・ネットワーク・アクセス:諸能力が、ネットワークを通じて利用可能であり、異種混合のシンまたはシック・クライアント・プラットフォーム(例えば携帯電話、ラップトップ、およびPDA)による使用を促進する標準的な機構を通じてアクセスされる。
【0071】
リソース・プーリング:提供者のコンピューティング・リソースが、マルチテナント・モデルを使用して複数の消費者に対応するためにプールされ、種々の物理リソースおよび仮想リソースが、必要に従って動的に割り当てられ、再割り当てされる。消費者は、一般に、提供されるリソースの正確な所在地に関して制御も知識も有さないが、高い抽象化レベルで場所を指定することができる(例えば、国、州、またはデータセンター)という点で、場所の非依存感がある。
【0072】
速やかな順応性:迅速に拡張し、速やかに解放されて迅速に縮小するように、能力を、速やかかつ柔軟に、場合によっては自動的にプロビジョニングすることができる。消費者にとって、プロビジョニングするために利用可能な能力は、多くの場合無限に見え、任意の時に任意の数量で購入することができる。
【0073】
計測されるサービス:クラウド・システムが、サービスの種類(例えば、ストレージ、処理、帯域幅、および有効なユーザ・アカウント)に適する何らかの抽象化レベルで、計測能力を活用することにより、リソース使用を自動的に制御および最適化する。リソース使用を監視、制御、および報告して、利用されるサービスの提供者と消費者の両方に透明性を提供することができる。
【0074】
サービス・モデルは以下の通りである。
【0075】
サービスとしてのソフトウェア(SaaS):消費者に提供される能力は、クラウド・インフラストラクチャ上で動作する提供者のアプリケーションを使用する能力である。アプリケーションは、ウェブ・ブラウザ(例えばウェブベースの電子メール)などのシン・クライアント・インターフェースを通じて、様々なクライアント・デバイスからアクセスすることができる。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージを含む、基礎となるクラウド・インフラストラクチャ、またはさらには、可能性としては限られたユーザ固有のアプリケーション構成設定を除く個々のアプリケーション能力すら、管理も制御もしない。
【0076】
サービスとしてのプラットフォーム(PaaS):消費者に提供される能力は、提供者によってサポートされるプログラミング言語およびツールを使用して作成された、消費者によって作成または取得されたアプリケーションを、クラウド・インフラストラクチャ上に展開する能力である。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎となるクラウド・インフラストラクチャを管理も制御もしないが、展開されたアプリケーション、および可能性としてはアプリケーション・ホスト環境構成に対する制御を有する。
【0077】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングする能力であり、消費者は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開して実行することができる。消費者は、基礎となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションに対する制御、および場合によっては選択されたネットワーキング・コンポーネント(例えばホスト・ファイアウォール)の制限された制御を有する。
【0078】
展開モデルは以下の通りである。
【0079】
プライベート・クラウド:クラウド・インフラストラクチャが、1つの組織のためだけに運用される。それは、その組織または第三者によって管理され、構内または構外に存在し得る。
【0080】
コミュニティ・クラウド:クラウド・インフラストラクチャがいくつかの組織によって共有され、共有される関心事項(例えば、使命、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティを支援する。それは、それら組織または第三者によって管理され、構内または構外に存在し得る。
【0081】
パブリック・クラウド:クラウド・インフラストラクチャが、一般公衆または大きな産業グループに利用可能とされ、クラウド・サービスを販売する組織によって所有される。
【0082】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成であり、それらのクラウドは、固有のエンティティのままであるが、データおよびアプリケーションの移植性を可能にする、標準化されたまたは独自仕様の技術(例えばクラウド間の負荷分散のためのクラウド・バースティング)によって互いに結合される。
【0083】
クラウド・コンピューティング環境は、ステートレス性、低い結合度、モジュール性、および意味的な相互運用性を重視したサービスである。クラウド・コンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0084】
次いで
図8を参照すると、例示的なクラウド・コンピューティング環境50が描かれている。示されるように、クラウド・コンピューティング環境50は、1つまたは複数のクラウド・コンピューティング・ノード52を含み、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、携帯情報端末(PDA)もしくはセルラー電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せが、上記クラウド・コンピューティング・ノードと通信し得る。ノード52は、互いと通信し得る。それらは、本明細書の上記に記載されるようにプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウドなどの1つまたは複数のネットワークとして、またはその組合せとして、物理的または仮想的にグループ化されてよい(図示せず)。これにより、クラウド・コンピューティング環境50が、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはその組合せを、サービスとして提供することが可能となり、それに対してクラウド消費者は、ローカル・コンピューティング・デバイス上にリソースを維持しておく必要がない。
図8に示されるコンピューティング・デバイス54A~Nの種類は単に例示的なものであることが意図され、またコンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス指定可能接続(例えばウェブ・ブラウザを使用する)、あるいはその組合せを通じて、任意の種類のコンピュータ化されたデバイスと通信できることが理解される。
【0085】
次いで
図9を参照すると、クラウド・コンピューティング環境50(
図8)によって提供される機能抽象化層のセットが示されている。
図9に示される構成要素、層、および機能は単に例示的なものであることが意図され、本発明の実施形態はそれに限定されないことがあらかじめ理解されるべきである。描かれるように、以下の層および対応する機能が提供される。
【0086】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム61;RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62;サーバ63;ブレード・サーバ64;記憶装置65;ならびにネットワークおよびネットワーキング・コンポーネント66を含む。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0087】
仮想化層70は抽象化層を提供し、そこから以下の仮想エンティティの例が提供される:仮想サーバ71;仮想ストレージ72;仮想プライベート・ネットワークを含む仮想ネットワーク73;仮想アプリケーションおよびオペレーティング・システム74;ならびに仮想クライアント75。
【0088】
一例では、管理層80は、下記の機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを行うために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計測および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されるのに伴う費用追跡、およびそれらリソースの消費に対する請求書送付またはインボイス送付を提供する。一例では、これらリソースは、アプリケーション・ソフトウェアのライセンスを含み得る。セキュリティは、クラウド消費者およびタスクに関する身元検証、ならびにデータおよび他のリソースに関する保護を提供する。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを消費者およびシステム管理者に提供する。サービス・レベル管理84は、必要とされるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り振りおよび管理を提供する。サービス・レベル合意(SLA)の計画および遂行85は、将来の必要性が見込まれるクラウド・コンピューティング・リソースの事前の構成および調達をSLAに従って提供する。
【0089】
作業負荷層90は、クラウド・コンピューティング環境が利用される機能の例を提供する。この層から提供される作業負荷および機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、ならびに確保処理96が含まれる。
【0090】
本発明の態様は、任意の可能な技術的詳細の統合レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有している(1つまたは複数の)コンピュータ可読記憶媒体を含んでよい。
【0091】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶することが可能な有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、これらに限定されないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、または上述の任意の好適な組合せであってよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストには、携帯型コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去可能プログラマブル読出し専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読出し専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチ・カードや命令が記録されている溝内の隆起構造などの機械的に符号化されたデバイス、および上述の任意の好適な組合せが含まれる。本発明において使用されるコンピュータ可読記憶媒体は、電波または他の自由伝搬する電磁波、導波管もしくは他の伝送媒体を通って伝搬する電磁波(例えば光ファイバ・ケーブルを通る光パルス)、あるいは電線を通じて伝送される電気信号などの一過性の信号自体であるとは解釈されるべきでない。
【0092】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくはワイヤレス・ネットワーク、あるいはその組合せを介して、外部コンピュータもしくは外部記憶装置にダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含んでよい。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内部のコンピュータ可読記憶媒体内に記憶するために転送する。
【0093】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、Smalltalk(R)、C++等のオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、または、ソース・コードもしくはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンのソフトウェア・パッケージとして、全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がリモート・コンピュータもしくはサーバ上で実行されてよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通じてユーザのコンピュータに接続されてよく、または接続は外部コンピュータになされてもよい(例えばインターネット・サービス・プロバイダを使用してインターネットを通じて)。一部の実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲートアレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別設定することによって、コンピュータ可読プログラム命令を実行してよい。
【0094】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して記載される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその組合せの中のブロックの組合せは、コンピュータ可読プログラム命令によって実施されることが理解されよう。
【0095】
それらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/行為を実施するための手段を作り出すように機械を制作すべく、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサに提供されてよい。それらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/行為の態様を実施する命令を含む製造品を構成するように、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
【0096】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/行為を実施するように、コンピュータ、他のプログラマブル・データ処理装置、もしくは他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを行わせて、コンピュータによって実施されるプロセスを発生させてもよい。
【0097】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を説明している。これに関して、フローチャートまたはブロック図中の各ブロックは、モジュール、セグメント、または命令の一部を表し得、それは、指定される論理機能を実施するための1つまたは複数の実行可能命令を含む。一部の代替実装形態では、ブロックに記される機能は、図に記される順序から外れて行われてよい。例えば、連続して示される2つのブロックが、実際には1つのステップとして実現される、同時に実行される、実質的に同時に実行される、または、部分的もしくは完全に時間的に重なるように実行されてよく、あるいはそれらブロックは、時に、関与する機能に応じて逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方の中のブロックの組合せは、指定される機能もしくは行為を行うか、または特殊目的ハードウェアとコンピュータ命令との組合せを実施する、特殊目的のハードウェア・ベース・システムによって実施されることに留意されよう。
【0098】
上記に加えて、1つまたは複数の態様が、顧客環境の管理を提供するサービス提供者によって、提供、供給、展開、管理、サービス等され得る。例えば、サービス提供者は、1人または複数の顧客のために1つまたは複数の態様を行うコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成、保持、支援等することができる。その見返りとして、サービス提供者は、例としてサブスクリプションまたは料金あるいはその両方の契約の下に顧客から支払いを受け取り得る。追加または代替として、サービス提供者は、1つまたは複数の第三者への広告コンテンツの販売から支払いを受け取ってもよい。
【0099】
1つの態様では、1つまたは複数の実施形態を行うためのアプリケーションが展開され得る。一例として、アプリケーションの展開は、1つまたは複数の実施形態を行うように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【0100】
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャが展開され、コードは、コンピューティング・システムとの組合せで、1つまたは複数の実施形態を行うことができる。
【0101】
またさらなる態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピューティング・インフラストラクチャを統合するためのプロセスが提供され得る。コンピュータ・システムは、コンピュータ可読媒体を備え、コンピュータ媒体は1つまたは複数の実施形態を備える。コードは、コンピュータ・システムとの組合せで、1つまたは複数の実施形態を行うことができる。
【0102】
様々な実施形態が上記で説明されたが、それらは例に過ぎない。例えば、他のアーキテクチャのコンピューティング環境を使用して1つまたは複数の実施形態を組み込み、使用することができる。さらに、他の信頼されるコンポーネントまたはセキュリティ・モジュールあるいはその両方が使用されてよい。加えて、他の制御ブロックまたは確保の指示あるいはその両方が使用されてよい。
【0103】
さらに、他の種類のコンピューティング環境が利益を得、使用されることができる。一例として、システム・バスを通じて直接または間接的にメモリ要素に結合された少なくとも2つのプロセッサを含む、プログラム・コードを記憶または実行する、あるいはその両方を行うのに適したデータ処理システムが使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量ストレージ、および、実行中に大容量ストレージからコードが取り出されなければならない回数を減らすために少なくともいくらかのプログラム・コードの一時的な記憶を提供するキャッシュ・メモリを含む。
【0104】
入力/出力またはI/Oデバイス(これらに限定されないが、キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブおよび他のメモリ媒体等を含む)が、直接、または仲介するI/Oコントローラを通じて、システムに結合され得る。ネットワーク・アダプタもシステムに結合されて、データ処理システムが、仲介するプライベート・ネットワークまたは公衆ネットワークを通じて、他のデータ処理システムまたはリモート・プリンタまたは記憶装置に結合されることを可能にし得る。モデム、ケーブル・モデム、およびEthernet(R)カードは、ネットワーク・アダプタの利用可能な種類のほんの数例である。
【0105】
本明細書で使用される術語は、特定の実施形態を説明することのみを目的とし、制限する意図はない。本明細書で使用される場合、単数形の「a」、「an」および「the」は、文脈が明らかに他のように示さない限り、複数形も包含することが意図される。さらに、用語「~を備える」または「~を備えている」あるいはその両方は、本明細書で使用される場合、述べられる特徴、整数、ステップ、動作、要素、または構成要素、あるいはその組合せの存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらの群、あるいはその組合せの存在または追加を排除しないことが理解されよう。
【0106】
添付の特許請求の範囲における、すべてのミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクション要素の、対応する構造、材料、行為、および均等物(存在する場合)は、明確に特許請求される他の特許請求される要素との組合せで機能を行うための任意の構造、材料、または行為を包含することが意図される。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されたものであり、網羅的であるまたは開示される形態であることに限られる意図はない。多くの変更および変形が当業者に明らかとなろう。実施形態は、様々な態様および実際的応用を最もよく説明し、当業者が、企図される特定の用途に適する様々な変更と共に様々な実施形態を理解することを可能にするために選択および記載された。