IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-522818ローカルバッファを含む暗号化データ処理設計
<>
  • 特表-ローカルバッファを含む暗号化データ処理設計 図1
  • 特表-ローカルバッファを含む暗号化データ処理設計 図2
  • 特表-ローカルバッファを含む暗号化データ処理設計 図3
  • 特表-ローカルバッファを含む暗号化データ処理設計 図4
  • 特表-ローカルバッファを含む暗号化データ処理設計 図5
  • 特表-ローカルバッファを含む暗号化データ処理設計 図6
  • 特表-ローカルバッファを含む暗号化データ処理設計 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-21
(54)【発明の名称】ローカルバッファを含む暗号化データ処理設計
(51)【国際特許分類】
   G06F 21/60 20130101AFI20240614BHJP
【FI】
G06F21/60 320
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023578173
(86)(22)【出願日】2022-05-26
(85)【翻訳文提出日】2023-12-19
(86)【国際出願番号】 CN2022095159
(87)【国際公開番号】W WO2022267808
(87)【国際公開日】2022-12-29
(31)【優先権主張番号】17/356,752
(32)【優先日】2021-06-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】クマール、マノジ
(72)【発明者】
【氏名】ビラルディ、ジャンフランコ
(72)【発明者】
【氏名】エカナダム、カッタムリ
(72)【発明者】
【氏名】モレイラ、ジョゼ、イー
(72)【発明者】
【氏名】パットナイク、プラタープ、シー
(72)【発明者】
【氏名】ツェン、ジェシカ、フイチュン
(57)【要約】
本開示の態様は、暗号化データ処理(EDAP)に関する。プロセッサは、暗号文データを格納するように設定されたレジスタファイルと、命令をフェッチおよびデコードするように設定された命令フェッチおよびデコードユニットと、格納された暗号文データを処理するように設定された機能ユニットとを含む。機能ユニットはさらに、機能ユニット内に格納された暗号鍵を使用して、レジスタファイルから暗号文データを復号化し、平文データを受信するように設定された復号化モジュールを含む。機能ユニットはさらに、平文データを格納するように設定されたローカルバッファを含む。機能ユニットはさらに、平文データを使用して平文計算結果を生成するように設定された算術論理ユニットを含む。機能ユニットはさらに、平文計算結果を暗号化して暗号文計算結果を生成し、レジスタファイルに格納するように設定された暗号化モジュールを含む。
【特許請求の範囲】
【請求項1】
レジスタファイル内の暗号文データにアクセスすることと、
前記レジスタファイル内の前記暗号文データに対応する平文データを見つけようとするために機能ユニット内のローカルバッファにアクセスすることと、
前記ローカルバッファ内に前記平文データが見つからないことに応答して、暗号鍵を使用して前記平文データを受信するために前記暗号文データを復号化し、前記平文データを前記ローカルバッファに格納することと、
平文計算結果を受信するために、前記機能ユニットにより、前記ローカルバッファからの前記平文データを処理することと、
前記機能ユニット内で暗号文計算結果を受信するために、前記平文計算結果を暗号化することと、
前記平文計算結果を前記ローカルバッファに格納し、前記暗号文計算結果を前記レジスタファイルに戻すことと、を含む方法。
【請求項2】
前記レジスタファイルの各レジスタエントリ内のタグが、データが暗号文か平文かを示す、請求項1に記載の方法。
【請求項3】
前記レジスタファイル内で前記データが暗号文であることを示す前記タグを有するレジスタエントリからのデータのみが復号化されて前記機能ユニットの前記ローカルバッファ内に格納され、前記レジスタファイル内で前記データが暗号文であることを示す前記タグを有するレジスタエントリからのデータのみが暗号化され、前記レジスタファイルに戻される、請求項2記載の方法。
【請求項4】
前記機能ユニットによる処理の前に、プロセッサによって提供された参照スレッド識別(ID)が、前記機能ユニット内に格納された安全なスレッドIDと照合される、請求項1に記載の方法。
【請求項5】
前記格納された安全なスレッドIDおよび参照スレッドIDは、データ所有者の前記暗号鍵およびアプリケーション作成者によって署名されたハードウェアスレッドによって実行されるプログラムのハッシュにリンクされている、請求項4に記載の方法。
【請求項6】
前記参照スレッドIDと前記格納された安全なスレッドIDとが一致しない場合、前記処理は実行されない、請求項4に記載の方法。
【請求項7】
コヒーレンシプロトコルは、前記機能ユニットの前記ローカルバッファのデータと前記レジスタファイルのデータとの間の整合性を維持するように設定される、請求項1に記載の方法。
【請求項8】
前記コヒーレンシプロトコルは、さらに、それぞれの機能ユニットの複数の追加ローカルバッファと前記レジスタファイルのデータとの間の整合性を維持する、請求項7に記載の方法。
【請求項9】
暗号文データを格納するように設定されたレジスタファイルと、
命令をフェッチおよびデコードするように設定された命令フェッチおよびデコードユニットと、
前記格納された暗号文データを処理するように設定された機能ユニットと、を含み、前記機能ユニットは、
前記機能ユニット内に格納された暗号鍵を使用して、前記レジスタファイルから暗号文データを復号化し、平文データを受信するように設定された復号化モジュールと、
前記平文データを格納するように設定されたローカルバッファと、
前記平文データを使用して平文計算結果を生成するように設定された算術論理ユニットと、
前記平文計算結果を暗号化して暗号文計算結果を生成し、前記レジスタファイルに格納するように設定された暗号化モジュールと、を含むプロセッサ。
【請求項10】
前記レジスタファイルの各レジスタエントリ内のタグが、データが暗号文か平文かを示す、請求項9に記載のプロセッサ。
【請求項11】
前記レジスタファイル内で前記データが暗号文であることを示す前記タグを有するレジスタエントリからのデータのみが前記復号化モジュールによって復号化され、前記機能ユニットの前記ローカルバッファ内に格納される、請求項10に記載のプロセッサ。
【請求項12】
前記機能ユニットによる処理の前に、プロセッサによって提供された参照スレッド識別(ID)が、前記機能ユニット内に格納された安全なスレッドIDと照合される、請求項9に記載のプロセッサ。
【請求項13】
前記格納された安全なスレッドIDおよび参照スレッドIDは、データ所有者の前記暗号鍵およびアプリケーション作成者によって署名されたハードウェアスレッドによって実行されるプログラムのハッシュにリンクされている、請求項12に記載のプロセッサ。
【請求項14】
前記参照スレッドIDと前記格納された安全なスレッドIDとが一致しない場合、前記処理は実行されない、請求項12に記載のプロセッサ。
【請求項15】
コヒーレンシプロトコルは、前記機能ユニットの前記ローカルバッファのデータと前記レジスタファイルのデータとの間の整合性を維持するように設定される、請求項9に記載のプロセッサ。
【請求項16】
複数の機能ユニットを有するプロセッサであって、各機能ユニットは、バーントイン秘密鍵と書き込み可能な暗号鍵ストアとを有し、各機能ユニットは、
前記バーントイン秘密鍵に対応する公開鍵によって暗号化された暗号鍵を受信することと、
前記バーントイン秘密鍵を使用して前記暗号化された暗号鍵を復号化することと、
前記暗号鍵を前記書き込み可能な暗号鍵ストアに格納することと、のために設定される、プロセッサ。
【請求項17】
各機能ユニットは書き込み可能な安全なスレッドIDストアを含み、各機能ユニットは、
前記バーントイン秘密鍵に対応する前記公開鍵によって暗号化された安全なスレッド識別(ID)を受信することと、
前記バーントイン秘密鍵によって、前記暗号化された安全なスレッドIDを復号化することと、
前記安全なスレッドIDを前記書き込み可能な安全なスレッドIDストアに格納することと、のために設定される、請求項16に記載のプロセッサ。
【請求項18】
前記安全なスレッドIDは、ハードウェアスレッドによって実行されるプログラムの暗号化ハッシュ関数から導出される、請求項17に記載のプロセッサ。
【請求項19】
前記暗号鍵は、レジスタファイルから取得されたデータを復号化し、前記復号化されたデータを各機能ユニットのローカルバッファに格納するために使用される、請求項16に記載のプロセッサ。
【請求項20】
前記暗号鍵は、前記ローカルバッファから前記レジスタファイルに戻すために処理される平文データを暗号化するために使用される、請求項19に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般にコンピューティングの分野に関し、特に暗号化データ処理(EDAP)に関する。
【背景技術】
【0002】
プロセッサ内のデータを保護するため、暗号化データ処理(EDAP)設計では、システムの処理パイプライン全体でデータが暗号化されるようにする。許可されたアプリケーションのみが平文データにアクセスできる。EDAPデザインを実装したプロセッサ上で実行される他のソフトウェア(システムソフトウェアを含む)は、いかなる平文データにもアクセスできない。データは機能ユニットに入ると実行のために復号化され、計算結果はレジスタファイルに書き戻す前に再暗号化される。
【発明の概要】
【0003】
本開示の実施形態は、暗号化データ処理方法を含む。レジスタファイル内の暗号文データにアクセスすることができる。レジスタファイル内の暗号文データに対応する平文データを見つけようとするために機能ユニット内のローカルバッファにアクセスすることができる。ローカルバッファ内で平文データが見つからないことに応答して、暗号鍵を使用して平文データを受信するために暗号文データを復号化し、平文データをローカルバッファに格納することができる。その後、ローカルバッファからの平文データは、機能ユニットによって処理され、平文計算結果を受信することができる。平文計算結果は機能ユニット内で暗号化され、暗号文計算結果を受信することができる。平文計算結果はローカルバッファに格納され、暗号文計算結果はレジスタファイルに格納される。
【0004】
本開示の実施形態は、暗号化データ処理用のプロセッサをさらに含む。プロセッサは、暗号文データを格納するように設定されたレジスタファイルを含むことができる。プロセッサは、命令をフェッチおよびデコードするように設定された命令フェッチおよびデコードユニットをさらに含むことができる。プロセッサは、格納された暗号文データを処理するように設定された機能ユニットをさらに含むことができる。プロセッサの機能ユニットは、機能ユニット内に格納された暗号鍵を使用して、レジスタファイルから暗号文データを復号化し、平文データを受信するように設定された復号化モジュールを含むことができる。プロセッサの機能ユニットは、平文データを格納するように設定されたローカルバッファをさらに含むことができる。プロセッサの機能ユニットは、平文データを使用して平文計算結果を生成するように設定された算術論理ユニットをさらに含むことができる。プロセッサの機能ユニットは、平文計算結果を暗号化してし、レジスタファイルに格納するように設定された暗号化モジュールをさらに含むことができる。
【0005】
本開示の実施形態は、暗号化データ処理用のプロセッサをさらに含む。プロセッサは、複数の機能ユニットを含むことができ、各機能ユニットは、バーントイン秘密鍵と、書き込み可能な暗号鍵ストアとを有する。各機能ユニットは、バーントイン秘密鍵に対応する公開鍵によって暗号化された暗号鍵を受信するように設定され得る。各機能ユニットは、バーントイン秘密鍵を使用して暗号化された暗号鍵を復号化するように設定することができる。各機能ユニットは、書き込み可能な暗号鍵ストアに暗号鍵を格納するように設定することができる。
【0006】
上記の概要は、図示された各実施形態または本開示のすべての実施形態を説明することを意図するものではない。
【0007】
本開示に含まれる図面は、本明細書に組み込まれ、本明細書の一部を構成する。これらは、本開示の実施形態を例示するものであり、本明細書と共に、本開示の原理を説明する役割を果たす。図面は、典型的な実施形態を例示するものに過ぎず、本開示を限定するものではない。
【図面の簡単な説明】
【0008】
図1】本開示の例示的な実施形態が実装され得る例示的なコンピューティング環境を示すブロック図である。
図2】本開示の実施形態による、データ処理のための命令パイプラインを示す図である。
図3】本開示の実施形態による、平文ローカルバッファを有するプロセッサの一例を示すブロック図である。
図4】本開示の実施形態による、機能ユニットのローカルバッファ内でデータを処理するための例示的な方法を示すフロー図である。
図5】本開示の実施形態による、クラウドコンピューティング環境を示す図である。
図6】本開示の実施形態による、抽象化モデルレイヤを示すブロック図である。
図7】本開示の実施形態による、本明細書に記載される方法、ツール、およびモジュール、ならびに任意の関連機能の1つまたは複数を実施する際に使用され得る例示的なコンピュータシステムを示す高レベルブロック図である。
【0009】
本明細書で説明する実施形態は、様々な変更および代替形態に従うが、その具体的な態様を図面に例示的に示し、詳細に説明する。しかしながら、記載された特定の実施形態は、限定的な意味で捉えられるものではないことを理解されたい。それどころか、その意図は、本開示の範囲内に入るすべての変更、等価物、および代替物を網羅することである。
【発明を実施するための形態】
【0010】
本開示の態様は、一般に、コンピューティングの分野に関し、特に、暗号化データ処理(EDAP)に関する。本開示は、必ずしもこのような用途に限定されるものではないが、本開示の様々な態様は、この文脈を用いた様々な例の議論を通じて理解され得る。
【0011】
プロセッサ内のデータを保護するため、暗号化データ処理(EDAP)設計では、レジスタファイルやプロセッサコアのL1(レベル1)キャッシュなど、システムのメモリ階層全体でデータが暗号化されるようにする。EDAPデザインを実装したプロセッサ上で実行される未許可のソフトウェアは、いかなる平文データにもアクセスすることができない。データは実行のために機能ユニットに入る際に復号化され、計算結果はレジスタファイルに書き戻す前に再暗号化される。しかし、各命令のデータを復号化および暗号化することは、命令実行の待ち時間を増加させ、システム全体のパフォーマンスを著しく低下させる可能性がある。基礎となるコンピュータシステムの性能を向上させながら、EDAP設計内のセキュリティを維持する必要がある。
【0012】
本開示の態様は、暗号化データ処理方法に関する。レジスタファイル内の暗号文データにアクセスすることができる。レジスタファイル内の暗号文データに対応する平文データを見つけようとするために機能ユニット内のローカルバッファにアクセスすることができる。ローカルバッファ内に平文データが見つからないことに応答して、暗号鍵を使用して平文データを受信するために暗号文データを復号化し、平文データをローカルバッファに格納することができる。その後、ローカルバッファからの平文データは、機能ユニットによって処理され、平文計算結果を受け取ることができる。平文計算結果は機能ユニット内で暗号化され、暗号文計算結果を受け取ることができる。平文計算結果は、将来再利用するためにローカルバッファに格納され、暗号文計算結果はレジスタファイルに戻される。
【0013】
本開示の態様は、暗号化データ処理用のプロセッサをさらに含む。プロセッサは、暗号文データを格納するように設定されたレジスタファイルを含むことができる。プロセッサは、命令をフェッチおよびデコードするように設定された命令フェッチおよびデコードユニットをさらに含むことができる。プロセッサは、格納された暗号文データを処理するように設定された機能ユニットをさらに含むことができる。プロセッサの機能ユニットは、機能ユニット内に格納された暗号鍵を使用して、レジスタファイルから暗号文データを復号化し、平文データを受信するように設定された復号化モジュールを含むことができる。プロセッサの機能ユニットは、平文データを格納するように設定されたローカルバッファをさらに含むことができる。プロセッサの機能ユニットは、平文データを使用して平文計算結果を生成するように設定された算術論理ユニットをさらに含むことができる。プロセッサの機能ユニットは、平文計算結果を暗号化して暗号文計算結果を生成し、レジスタファイルに格納するように設定された暗号化モジュールをさらに含むことができる。
【0014】
実施形態において、プロセッサは、複数の機能ユニットを含むことができ、各機能ユニットは、バーントイン秘密鍵と、書き込み可能な暗号鍵ストアとを有する。各機能ユニットは、バーントイン秘密鍵に対応する公開鍵によって暗号化された暗号鍵を受信するように設定することができる。各機能ユニットは、バーントイン秘密鍵を使用して暗号化された暗号鍵を復号化するように設定することができる。各機能ユニットは、書き込み可能な暗号鍵ストアに暗号鍵を格納するように設定することができる。
【0015】
次に図面をみると、図1は、本開示の例示的な実施形態が実装され得る例示的なコンピューティング環境100を示すブロック図である。コンピューティング環境100は、コンピュータシステム105を含む。コンピュータシステム105は、メモリ110および中央処理装置(CPU)122を含む。CPU122は、キャッシュ115、命令フェッチおよびデコードユニット(IFU)120、汎用共有レジスタファイル(GPR)125、および機能ユニット(FU)130を含む。
【0016】
コンピュータシステム105は、ソフトウェアによって発行された命令を実行するように設定され得る。特に、CPU122は、命令をフェッチし(たとえば、IFU120によってキャッシュ115から)、命令をデコードし(たとえば、IFU120によって)、命令を実行し(たとえば、機能ユニット130を使用して)、メモリにアクセスし、GPR125(レジスタファイルの集まり)に書き戻し計算を行うように設定され得る。実施形態では、CPU122は、実行段階の前にデータが保護され得る(例えば、データは暗号化され、ソフトウェアにはアクセスできない)ように、EDAP設計で設定され得る。したがって、実行前にデータを復号化し、書き戻し中に暗号化データがレジスタファイルに格納されるように再暗号化することができる。しかし、命令ごとにデータを暗号化および復号化することは、サイクル時間を増加させ、コンピュータシステム105の性能に悪影響を与える可能性がある。例えば、データを処理する復号化および暗号化段階は、それぞれ約15プロセッササイクルを要することがある。図2のEDAPパイプライン205は、EDAP処理パイプラインを示す。「DEC」および「ENC」は、パイプライン内のデータ復号化(例えば、暗号文から平文へ)およびデータ暗号化(例えば、平文から暗号文へ)段階を示す。
【0017】
このように、本開示の態様は、機能ユニット130のローカルバッファ135内の平文データ(例えば、復号化されたデータ)の保存を可能にすることによって、従来のEDAP処理パイプラインを切り離す。機能ユニット130のみがアクセス可能なローカルバッファ135内に平文データを格納することによって、ローカルバッファ135内の平文データが必要とされるたびにデータを復号化および暗号化することに関連する処理時間を排除することができる。例えば、ローカルバッファ135が、命令によって入力として使用するために復号化された、または命令によって結果として生成された、後続の命令によって入力として必要とされる(例えば、レジスタのアドレスに基づいて)平文データを格納する場合、データの復号化が不要であるため(ローカルバッファ135内に平文で既に存在するため)、データの処理に関連する待ち時間が短縮される。さらに、機能ユニット130による結果の計算時に、データを暗号化することなく、結果をローカルバッファ135に書き戻すことができる。データをレジスタファイルに書き戻すと、データの暗号化が完了する。そのため、エネルギーと時間の大幅な節約を達成することができる(例えば、復号化と暗号化をバイパスすることにより、30サイクル以上を節約することができる)。この例では、平文データは命令の実行に必要な機能ユニット130にのみアクセス可能であり、平文データはGPR125に伝送される前に暗号化されるため、セキュリティを維持できる。さらに、平文データへのアクセスは、非特権状態の指定されたハードウェアスレッドの命令(たとえば、ユーザープログラム命令)に制限することができ、ハイパーバイザ、O/S、ライブラリ、およびソフトウェアスタックの残りの部分が、指定されたハードウェアスレッドの平文データにアクセスすることを排除する。
【0018】
しかし、従来のEDAP処理では、機能ユニット130は、GPR125から取得したデータを復号化し、計算結果が出た後にデータを再暗号化する必要があった。このため、命令の実行に要する処理時間やエネルギーが増大する。したがって、GPR125、キャッシュ115、およびメモリ110内で暗号化された状態のデータを維持しながら、ローカルバッファ135内に平文のデータを格納することには大きな利点がある。
【0019】
図1は、例示的なコンピューティング環境100の代表的な主要構成要素を示すことを意図していることに留意されたい。しかしながら、いくつかの実施形態では、個々の構成要素は、図1に表されているよりも大きいまたは小さい複雑さを有することができ、図1に示されている構成要素以外の構成要素または図1に示されている構成要素に加えて構成要素が存在することができ、そのような構成要素の数、タイプ、および構成は変化することができる。例えば、キャッシュ115は、必ずしもCPU122内に存在する必要はない。いくつかの実施形態では、キャッシュ115の一部がCPU122内に含まれ、キャッシュ115の別の一部がメモリ110内に含まれてもよい。別の例として、それぞれが専用のローカルバッファ135を有する複数の同種または異種の機能ユニット130(不図示)が、単一のIFU120を共有してもよい。同様に、それぞれが専用のローカルバッファ135を有する複数の同種または異種の機能ユニット130は、単一のレジスタファイル125を共有してもよい。
【0020】
図2を参照すると、本開示の実施形態による、機能ユニット130のローカルバッファ135に格納されている平文データに基づくデータのための新しいパイプライン210が導入されている。上述したように、EDAPパイプライン205は、命令を実行するために必要とされる従来のEDAP処理ステップを描いている。EDAPパイプライン205では、GPR125に格納されるデータは常に暗号化されるため、処理のためにレジスタがアクセスされるときはいつでも、実行の前に復号化が実行されることが要求され、実行の結果は、レジスタに書き戻される前に再暗号化されることが要求される。
【0021】
平文を記憶するローカルバッファ135を実装する本開示の態様に従って、データの復号化は、パイプライン210内でバイパスされ得る。なぜなら、ローカルバッファ135内に格納されたデータはすでに平文(例えば、ローカルバッファ135へのアクセスを許可する暗号鍵を有する許可されたソフトウェアアプリケーション)であり、命令が平文を格納するローカルバッファ135にアクセスするときはいつでも、復号化ステップをスキップすることができるからである。GPR125への書き戻しの前に、データは暗号化される。しかし、いくつかの実施形態では、計算からの結果は、さらなる処理で再利用するために、平文でローカルバッファ135に格納し直すことができる(機能ユニット内で行われた計算のための暗号化サイクルのバイパスを可能にする)。
【0022】
次に図3を参照すると、本開示の実施形態による、平文ローカルバッファ335を実装する例示的なCPU300が示されている。CPU300は、命令フェッチおよびデコードユニット(IFU)305、汎用共有レジスタファイル(GPR)310、および機能ユニット(FU)315を含む。
【0023】
ここで、機密データの暗号化データ処理(EDAP)に関与し得る様々なエンティティについて言及する。EDAPを実装するコンピュータネットワーク環境(例えば、図5のようなクラウドコンピューティング環境)内で、プラットフォームプロバイダ(PP)は、計算のために仮想マシンまたは他のクラウドインフラストラクチャ(例えば、CPU122およびCPU300)を提供することができる。アプリケーション作成者(AA)は、PPによって提供されるプラットフォーム(例えば、CPU122及びCPU300)上で実行されるアプリケーション又はライブラリを提供することができる。データ所有者(DO)は、計算のためにデータを提供することができる。DOは、暗号化(例えば、DO暗号鍵)によってデータを保護し続けることを選ぶことができる。DOは、PPが提供する指定されたCPU300上で実行されるAAに関連する許可されたアプリケーションに対してのみ、その平文データにアクセス可能な状態を維持することを望むかもしれない。
【0024】
このように、DOは暗号鍵320(例えば、共通鍵)でデータを暗号化してもよい。PPは、データが暗号化されているかどうかを示すデータのタグ312をサポートしてもよい(例えば、保護タグ)。これらのタグ312は、メモリ階層全体(例えば、メモリ110、キャッシュ115、およびGPR125間)に伝搬することができる。このように、保護タグ312が、DOによって提供される任意のデータに関連するものとして示される場合、データは、EDAPによって保護される(例えば、許可されたアプリケーションによってアクセスされない限り、暗号化された状態で維持され、スーパーバイザ、ハイパーバイザ、またはオペレーティングシステム(O/S)などの他のコンポーネントが特権状態でアクセスすることを防止する)。実施形態において、DOによって提供される暗号鍵320は、CPU300に関連付けられた公開鍵(例えば、バーントインキー355に対応する)によって暗号化することができる。その後、暗号鍵320は、CPU300に関連付けられたバーントインキー355(例えば、秘密鍵)を用いて復号化され、(例えば、書き込み可能な暗号鍵データストアに)インストールされ得る。
【0025】
AAは、暗号ハッシュ関数を使用して自分のプログラムのハッシュに署名してもよい。DOから作業を受け取ると、PPはAAから提供されたハッシュをDOから提供された暗号鍵320で暗号化することにより、安全なスレッドIDの識別/識別子(ID)330(例えば、セッションID)を生成してもよい(ただし、PPはFU315内で安全なスレッドID330や暗号鍵320への読み取りアクセス権を持っていなくてもよい)。このように、PPは、DOの暗号鍵320でハッシュを暗号化することにより、AAのプログラムを認可することができる。その後、PPは機能ユニット315内(例えば、実行前)に暗号鍵320と共に安全なスレッドID330を格納することができる。(注:暗号鍵320はDOによって生成され、機能ユニット315内のバーントインキー355に対応する公開鍵によって暗号化された後にPPに送信される)。PPは、CPU300の公開鍵で暗号化された状態で暗号鍵320のみを操作することができる。これにより、PPからは暗号鍵320を隠すことができるが、FU315内ではDOに関連するデータを復号化および暗号化することができるように、FU315からは暗号鍵320にアクセスできるようにすることができる。
【0026】
AAに関連するアプリケーションを起動すると、PPは暗号鍵320を使用してDOが所有するデータを復号化できる。その後、PPは、DOが所有するデータに関連付けられた処理スレッドに対応する参照スレッドID360を(例えば、実行時間中に)独自に生成することができる。参照スレッドID360は、AAから提供された署名付きハッシュを、DOから提供された暗号鍵320(バーントインキー355を介してPPがアクセス可能)で暗号化することによって生成することができる。これは、AAに関連付けられた許可されたアプリケーションのみが、実行中に平文ローカルバッファ335内に格納された平文データにアクセスできることを保証するために、安全なスレッドID330(例えば、書き込み可能な安全なスレッドIDデータストアに格納される)との比較に使用することができる。
【0027】
実行時に、IFU305は、GPR310から取得されたオペランドとともに(たとえば、算術論理演算ユニット(ALU340)によって)実行される演算(たとえば、復号化されたオペコード)を指定する制御信号を機能ユニット315に送信することができる。これらのオペランドはそれぞれ、タグ312(たとえば、オペランドが暗号文であるか平文であるかを示すビット)と関連付けることができる。データが暗号文であることを示す保護タグを持つ暗号化されたオペランドについては、DOの暗号鍵320にアクセスできる復号化モジュール325を使用してオペランドを復号化できる。復号後に取り出された平文データは、次にALU340演算で使用することができ、さらに平文ローカルバッファ335内に格納することができる。実施形態では、平文ローカルバッファ335は、平文ローカルバッファ335内に格納された平文データがコンテンツアドレス指定可能であるように、物理レジスタ番号を含む。実施形態では、平文ローカルバッファ335は、対応するデータがGPR310内で暗号化されたことを示すタグ312を有する平文データのみを格納する。その後、例えばPPによって提供される参照スレッドID360を受信して、そのスレッドが、平文ローカルバッファ335にアクセスするALU340による計算のために許可されるようにすることができる。
【0028】
実施形態では、暗号化されたオペランドを処理する前に、GPR310内の暗号文データに対応する平文データを(例えば、物理レジスタ番号を介して)見つけようとするために、平文ローカルバッファ335をチェックすることができる。平文ローカルバッファ335が、アクセスされることが要求される平文データを既に含むと判定された場合、暗号化オペランドの復号化は起こらない可能性がある。むしろ、平文ローカルバッファ335内の平文データが代わりに使用され(例えば、MUX370によって選択され)、復号化がバイパスされ得る。
【0029】
実行時に、DOから受信した安全なスレッドID330は、比較器345によって、PPから提供された参照スレッドID360と比較することができる。比較器345によって、安全なスレッドID330と参照スレッドID360とが一致すると判定された場合、平文ローカルバッファ335内に格納された平文は安全であり、他のコンポーネント(例えば、ハイパーバイザ、スーパーバイザ、またはオペレーティングシステムによって発行されたスレッド)からはアクセスできないと判定される。したがって、比較器345によって一致と判定されると、安全なスレッドID330が検証され、ALU340によって平文ローカルバッファデータを処理することができる。機能ユニット315内で平文データを処理すると、ALUによって生成された結果は、暗号鍵320を使用して暗号化モジュール350によって暗号化することができる。暗号化されたデータ(例えば、暗号化された計算結果)は、GPR310に伝送され、対応する平文が平文ローカルバッファ335に格納される。
【0030】
実施形態では、安全なスレッドID330と参照スレッドID360とが一致しない場合、またはコンテキストスイッチがある場合、暗号鍵320および安全なスレッドID330をクリアして、暗号化されたオペランドを復号化できないようにし、平文ローカルバッファ335内に格納することができる。コンテキストスイッチとは、別のタスクが完了できるようにプロセッサの状態を格納し、その後、処理が再開できるようにプロセスの状態を復元できるプロセスである。コンテキストスイッチは、1つのプロセスを複数のプロセスで共有できるようにするマルチタスクオペレーティングシステムの機能である。コンテキストスイッチは、別のスレッドがFU315を使用している可能性があることを示すことができるため、他のコンポーネントが機密データにアクセスするのを防ぐために、コンテキストスイッチ時に、平文ローカルバッファ335内の平文データ、安全なスレッドID330、および暗号鍵320をクリアすることができる。
【0031】
最終的に、GPR310から処理されることが必要な暗号文データが、すでに平文ローカルバッファ335に含まれているか否かを判定することができる。データが既に平文ローカルバッファ335内に平文として含まれている場合(例えば、ヒットが発生した場合)、マルチプレクサ(MUX)370は平文ローカルバッファ335からデータを選択する。そうでない場合、MUX370は、復号化モジュール325によって復号されたデータを選択する。同様に、MUX370は比較器345から信号を受信し、参照スレッドID360との比較に基づいて、安全なスレッドID330が検証されているか否かを判定することができる。安全なスレッドID330が検証された場合、MUX370はALU340内でのデータの処理を許可する。そうでない場合、MUX370は、ALU340内でのデータの処理を阻止する信号を送信することができる。
【0032】
実施形態において、平文ローカルバッファ335は、GPR310に完全にマッピングされ得る。いくつかの実施形態では、平文ローカルバッファ335は、インデックス付きルックアップテーブルを介してGPR310にマッピングされ得る。
【0033】
先に説明したように、GPR310内の各レジスタエントリは、データが平文であるか暗号文であるかを示すタグ312(たとえば、指定されたビットプレースホルダ)を含むことができる。したがって、IFU305は、各レジスタエントリを読み取って、データが暗号化されているか否かを判定し、復号化を必要とするデータのみを復号化モジュール325によって復号化して、平文ローカルバッファ335内に格納するように設定され得る。例えば、レジスタ内のメタデータは暗号化されない場合があり、復号化および平文ローカルバッファ335内の格納を必要としない場合がある。実施形態では、タグ312は、許可されたソフトウェア(例えば、DOによって許可されたソフトウェア)のみがアクセス可能である。実施形態では、受信データのタグ312は、機能ユニット315を出るデータが暗号化を必要とするか否かを判定するために使用できる。たとえば、GPR310の2つのレジスタエントリからのデータが両方とも暗号化されていると示された場合、2つのレジスタエントリからのデータを計算して受信した結果は、GPR310に書き戻す前に暗号化が必要な場合がある。
【0034】
実施形態において、CPU300は、複数の機能ユニット(不図示)を含むことができ、各機能ユニットは、平文ローカルバッファ(不図示)を有する。これらの実施形態において、スヌープバス(不図示)は、全ての平文ローカルバッファにわたってコヒーレンシを維持するように設定され得る。すなわち、すべての平文ローカルバッファにわたって複製されたデータは、(たとえば、平文ローカルバッファ335がGPR310にマップされている場合)GPR310内の暗号文と一致するか否かを判定するためにチェックされ得る。平文ローカルバッファ335内のデータがGPR310内に格納されたデータと矛盾する場合、スヌープバスは、GPR310と矛盾する平文ローカルバッファ335からの値を消去するように設定され得る。このように、各平文ローカルバッファと対応するマップされたGPR310との間の整合性を確保するために、コヒーレンシプロトコルを維持することができる。
【0035】
実施形態では、複数のDOがCPU300による保護を必要とする場合、各データに関連付けられたタグ312は、データの所有者をさらに示すことができる。たとえば、タグ312は、データが平文であるか暗号文であるかに加えて、データの所有者を示すことができる。このように、タグ312内に、データの所有者を示す指定ビット(または複数のビット)プレースホルダと、データが暗号化されているか否かを示すタグ312内の第2の指定ビットプレースホルダを設けることができる。複数のデータ所有者に対応するために、各データ所有者に関連付けられた各暗号鍵を(例えば、平文ローカルバッファ335内に)格納するキーインデックスを維持することができる。IFU305は、機能ユニット315に入る各データをチェックしてデータ所有者を決定し、データ所有者に関連付けられた対応するキーを使用して、データを復号化して平文ローカルバッファ335に格納することができる。これらの実施形態では、安全なスレッドID330はAAによって署名されたハッシュの暗号化表現に基づいているため、リードスレッドIDを生成するためにキーリーダーを指定することができる。その後、参照スレッドID(例えば、AAによって署名されたハッシュをリード暗号鍵で暗号化することによってPPによって生成される)と安全なスレッドID330(例えば、AAによって署名されたハッシュをリード暗号鍵で暗号化することによって生成される)とを比較することによって、ALU340によって計算されるデータを許可することができる。ALU340によって計算されたデータは、データ所有者に関連付けられた暗号鍵に基づいて、GPR310への書き戻しのために再暗号化される。
【0036】
実施形態では、(たとえば、それぞれのAAに関連付けられた)平文データにアクセスすることを許可された複数のプログラムがある場合、平文ローカルバッファは、一意のスレッドIDを持つ各プログラムのエントリを格納することができる。このように、平文ローカルバッファ内のエントリは、プログラムのAAに基づいて、それぞれのスレッドIDに関連付けることができる。これらの実施形態では、ALU340によって処理されるデータを許可するために、それぞれのスレッドIDを参照スレッドIDと比較して、アプリケーションが平文データにアクセスすることを許可されていることを確認することができる。
【0037】
図3は、例示的なCPU300の代表的な主要構成要素を示すことを意図していることに留意されたい。しかしながら、いくつかの実施形態では、個々の構成要素は、図3に表されているものよりも大きいまたは小さい複雑さを有し得、図3に示されている構成要素以外の構成要素または図3に示されている構成要素に加えて構成要素が存在し得、そのような構成要素の数、タイプ、および構成は変わり得る。例えば、CPU300は複数の追加機能ユニット315を含むことができ、各機能ユニットはそれぞれの平文ローカルバッファ335を有する。
【0038】
さらに、図3に示される暗号鍵320、安全なスレッドID330、および参照スレッドID360などのコンポーネントと安全に関連付けられる(例えば、安全にリンクされる)可能性のある様々なエンティティ(例えば、データ所有者、アプリケーション作成者、およびプラットフォームプロバイダ)について言及したが、上記のセキュリティ関連付けは単なる例示に過ぎない。任意の適切なエンティティを、図3に示される任意の適切なコンポーネントに安全に関連付けることができる(例えば、暗号鍵320は、データ所有者ではなく、アプリケーション作成者またはプラットフォームプロバイダに関連付けることができる)。さらに、本開示の精神および範囲から逸脱することなく、図3に示されていないエンティティとコンポーネントとの間に安全な関連付けを存在させることができる。
【0039】
次に図4を参照すると、本開示の実施形態による、機能ユニットのローカルバッファ内でデータを処理するための例示的な方法400を示すフロー図が示されている。
【0040】
方法400はオペレーション405と410とで開始され、オペレーション405でレジスタファイル内の暗号文データが(例えば、命令フェッチおよびデコードユニットによって)アクセスされ、オペレーション410で平文ローカルバッファが対応する平文(例えば、レジスタファイル内の暗号文に対応する)と同時に検索される。対応する平文がローカルバッファ内で見つかったか否かの判定が行われる。これはオペレーション415で示される。
【0041】
対応する平文データがローカルバッファに見つからない場合、オペレーション405でレジスタファイル内にアクセスされた暗号文データは、平文データを受信するために(例えば、暗号鍵を使用して)復号化される。これはオペレーション420で示される。得られた平文データは、ローカルバッファに格納される。これはオペレーション425に示される。
【0042】
オペレーション415で、対応する平文がローカルバッファに見つかったと判定された場合、またはオペレーション425(例えば、平文がローカルバッファに見つからず、オペレーション420で復号化が行われた後に、オペレーション425で平文をローカルバッファに格納する場合)が完了した後、次に、ローカルバッファからの平文データが機能ユニットによって処理され、平文計算結果が生成される。これはオペレーション430で示される。
【0043】
その後、平文計算結果が暗号化され、暗号文計算結果を受け取る。これはオペレーション435に示されている。その後、平文計算結果がローカルバッファに格納される。これはオペレーション440で示される。暗号文計算結果はレジスタファイルに格納される。これはオペレーション445で示される。
【0044】
前述のオペレーションは、任意の順序で完了することができ、記載されたものに限定されない。さらに、本開示の精神および範囲内にありながら、前述のオペレーションの一部、すべて、またはいずれも完了させることができる。
【0045】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載した教示の実装形態はクラウドコンピューティング環境に限定されない。むしろ、本発明の実施形態は、現在公知のまたは将来開発される他の任意の種類のコンピュータ環境と共に実施することができる。
【0046】
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの実装モデルを含むことがある。
【0047】
特性は以下の通りである。
【0048】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0049】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0050】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0051】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0052】
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0053】
サービスモデルは以下の通りである。
【0054】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。
【0055】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0056】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0057】
展開モデルは以下の通りである。
【0058】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0059】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0060】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0061】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0062】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0063】
ここで図5を参照すると、例示的なクラウドコンピューティング環境50が示されている。クラウドコンピューティング環境50は1つまたは複数のクラウドコンピューティングノード10を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、図5に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0064】
図6は、図5に示されるクラウドコンピューティング環境50によって提供される機能的抽象化モデルレイヤのセットを示すブロック図である。なお、図6に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0065】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0066】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75。
【0067】
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウドコンシューマおよびタスクの識別確認を可能にする。ユーザポータル83は、コンシューマおよびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0068】
ワークロードレイヤ90は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、ならびに、暗号化データ処理96が含まれる。
【0069】
ここで図7を参照すると、本開示の実施形態による、本明細書に記載される方法、ツール、およびモジュール、ならびに任意の関連機能の1つまたは複数を実施する際に(例えば、コンピュータの1つまたは複数のプロセッサ回路またはコンピュータプロセッサを使用して)使用され得る例示的なコンピュータシステム701(例えば、コンピュータシステム105)の高レベルブロック図が示されている。いくつかの実施形態では、コンピュータシステム701の主要構成要素は、1つまたは複数のCPU702(例えば、CPU122および300)、メモリサブシステム704(例えば、メモリ110およびキャッシュ115)、端末インタフェース712、ストレージインタフェース714、I/O(入力/出力)デバイスインタフェース716、およびネットワークインタフェース718から構成され、これらはすべて、メモリバス703、I/Oバス708、およびI/Oバスインタフェースユニット710を介して、コンポーネント間通信のために、直接的または間接的に通信可能に結合され得る。
【0070】
コンピュータシステム701は、1つまたは複数の汎用プログラマブル中央処理装置(CPU)702A、702B、702C、および702D(本明細書では一般的にCPU702と呼ぶ)を含むことができる。いくつかの実施形態では、コンピュータシステム701は、比較的大規模なシステムに典型的な複数のプロセッサを含んでもよいが、他の実施形態では、コンピュータシステム701は、代替的に単一のCPUシステムであってもよい。各CPU702は、メモリサブシステム704に格納された命令を実行してもよく、1つまたは複数のレベルのオンボードキャッシュ(例えば、キャッシュ115)を含んでもよい。
【0071】
システムメモリ704は、ランダムアクセスメモリ(RAM)722またはキャッシュメモリ724などの揮発性メモリの形態のコンピュータシステム可読媒体を含むことができる。コンピュータシステム701は、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータシステム記憶媒体をさらに含むことができる。あくまで例として、記憶システム726は、「ハードドライブ」のような、取り外し不可能な不揮発性磁気媒体からの読み出しおよび不揮発性磁気媒体への書き込みのために提供され得る。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピーディスク」)からの読み出しおよび書き込みのための磁気ディスクドライブ、またはCD-ROM、DVD-ROMもしくは他の光媒体などの取り外し可能な不揮発性光ディスクからの読み出しまたは書き込みのための光ディスクドライブが提供され得る。さらに、メモリ704は、フラッシュメモリ、例えば、フラッシュメモリスティックドライブまたはフラッシュドライブを含むことができる。メモリデバイスは、1つまたは複数のデータ媒体インタフェースによってメモリバス703に接続され得る。メモリ704は、様々な実施形態の機能を実行するように設定されたプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0072】
それぞれが少なくとも1組のプログラムモジュール730を有する1つまたは複数のプログラム/ユーティリティ728は、メモリ704に格納され得る。プログラム/ユーティリティ728は、ハイパーバイザ(仮想マシンモニタとも呼ばれる)、1つまたは複数のオペレーティングシステム、1つまたは複数のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータを含み得る。オペレーティングシステム、1つまたは複数のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータの各々、またはそれらの何らかの組み合わせは、ネットワーキング環境の実装を含み得る。プログラム728もしくはプログラムモジュール730またはその両方は、一般に、様々な実施形態の機能または方法論を実行する。
【0073】
メモリバス703は、CPU702、メモリサブシステム704、およびI/Oバスインタフェース710の間の直接通信経路を提供する単一のバス構造として図7に示されているが、メモリバス703は、いくつかの実施形態では、複数の異なるバスまたは通信経路を含んでもよく、これらのバスまたは通信経路は、階層構成、スター構成、またはウェブ構成におけるポイントツーポイントリンク、複数の階層バス、並列経路、および冗長経路、または任意の他の適切なタイプの構成など、様々な形態のいずれかで配置されてもよい。さらに、I/Oバスインタフェース710およびI/Oバス708は、単一のそれぞれのユニットとして示されているが、コンピュータシステム701は、いくつかの実施形態では、複数のI/Oバスインタフェースユニット710、複数のI/Oバス708、またはその両方を含むことができる。さらに、複数のI/Oインタフェース・ユニットが示されているが、これは、I/Oバス708を、様々なI/Oデバイスに走る様々な通信経路から分離しているが、他の実施形態では、I/Oデバイスの一部または全部が、1つまたは複数のシステムI/Oバスに直接接続されていてもよい。
【0074】
いくつかの実施形態では、コンピュータシステム701は、マルチユーザメインフレームコンピュータシステム、シングルユーザシステム、またはサーバコンピュータもしくは直接的なユーザインタフェースをほとんどまたは全く持たないが、他のコンピュータシステム(クライアント)からの要求を受信する同様のデバイスであってもよい。さらに、いくつかの実施形態では、コンピュータシステム701は、デスクトップコンピュータ、ポータブルコンピュータ、ラップトップまたはノートブックコンピュータ、タブレットコンピュータ、ポケットコンピュータ、電話機、スマートフォン、ネットワークスイッチまたはルーター、または任意の他の適切なタイプの電子デバイスとして実装されてもよい。
【0075】
図7は、例示的なコンピュータシステム701の代表的な主要構成要素を示すことを意図していることに留意されたい。しかしながら、いくつかの実施形態では、個々の構成要素は、図7に表されているものよりも複雑さが大きくても小さくてもよく、図7に示されている構成要素以外の構成要素または図7に示されている構成要素に加えて構成要素が存在してもよく、そのような構成要素の数、タイプ、および構成は変化してもよい。
【0076】
本明細書でより詳細に説明するように、本明細書に記載される方法の実施形態のいくつかのオペレーションの一部または全部は、代替の順序で実行され得るか、または全く実行され得ないことが企図される。さらに、複数のオペレーションは、同時に、またはより大きなプロセスの内部部分として起こり得る。
【0077】
本開示は、システム、方法、もしくはコンピュータプログラム製品またはその組み合わせとすることができる。コンピュータプログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(またはメディア)を含み得る。
【0078】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な一例の非網羅的なリストとしては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶装置は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0079】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくはワイヤレスネットワークまたはその組み合わせ)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバーまたはその組み合わせで構成される。各コンピューティング/処理装置のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0080】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、統合回路のための構成データ、またはSmalltalk、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(例えば、インターネットサービスプロバイダーを使用したインターネット経由で)外部コンピュータに接続されてよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0081】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0082】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/動作を実装するための手段を生成するように、機械を生成するためにコンピュータのプロセッサまたは他のプログラム可能なデータ処理装置に提供されることができる。これらのコンピュータ可読プログラム命令はまた、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実装する命令を含む生成品の1つを命令が記憶されたコンピュータ可読プログラム命令が構成するように、コンピュータ、プログラム可能なデータ処理装置、もしくは特定の方法で機能する他のデバイスまたはその組み合わせに接続可能なコンピュータ可読記憶媒体の中に記憶されることができる。
【0083】
コンピュータ、他のプログラム可能な装置、または他のデバイス上でフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為を実行する命令のように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の操作ステップを実行し、コンピュータ実装された過程を生成することができる。
【0084】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品が実行可能な実装の構成、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表してよく、これは、指定された論理機能を実装するための1つまたは複数の実行可能命令を構成する。いくつかの代替の実施形態では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。例えば、連続して示される2つのブロックは、実際には、1つのステップとして達成される場合があり、同時に、実質的に同時に、部分的または全体的に時間的に重複する方法で実行されるか、またはブロックは、関係する機能に応じて逆の順序で実行される場合がある。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または動作を実行する、または特別な目的のハードウェアとコンピュータ命令の組み合わせを実行する特別な目的のハードウェアベースのシステムによって実装できることにも留意されたい。
【0085】
本明細書で用いる用語は、特定の実施形態を説明するためのものに過ぎず、本発明を限定することを意図したものではない。本明細書において、単数形「ある/1つの/一の(a)」、「ある/1つの/一の(an)」および「その/当該(the)」は、文脈からそうではないことが明らかでない限り、複数形を含む。本明細書において、「含む(includes)」もしくは「含んでいる(including)」またはその両方の用語は、記載された特徴、整数、工程、動作、要素もしくはコンポーネントまたはこれらの組み合わせの存在を特定するものであるが、1つ以上の他の特徴、整数、工程、動作、要素、コンポーネントもしくはそれらのグループまたはこれらの組み合わせが存在したり、追加されたりすることを排除するものではない。様々な実施形態の例示的な実施形態に関するこれまでの詳細な説明において、本明細書の一部を構成し、様々な実施形態を実施することができる具体的な例示的な実施形態が図示の方法で示されている添付の図面(ここで、同様の番号は同様の要素を表す)を参照した。これらの実施形態は、当業者が実施形態を実践できるように十分に詳細に説明したが、他の実施形態を使用することができ、様々な実施形態の範囲から逸脱することなく、論理的、機械的、電気的、および他の変更を行うことができる。これまでの説明では、様々な実施形態を十分に理解できるように、多数の具体的な詳細を示した。しかし、様々な実施形態は、これらの具体的な詳細なしに実施することができる。他の例では、実施形態を不明瞭にしないために、周知の回路、構造、および技術は詳細に示されていない。
【0086】
本明細書内で使用される「実施形態」という語の異なる用例は、必ずしも同じ実施形態を指すとは限らないが、その可能性はある。本明細書で図示または説明するデータおよびデータ構造はすべて例示であり、他の実施形態では、異なるデータ量、データのタイプ、フィールド、フィールドの数およびタイプ、フィールド名、行の数およびタイプ、レコード、エントリ、またはデータの組織を使用することができる。さらに、任意のデータをロジックと組み合わせることができるため、別のデータ構造が不要な場合もある。したがって、これまでの詳細な説明は、限定的な意味でとらえるべきものではない。
【0087】
本開示の様々な実施形態の説明は、説明の目的で提示されたが、開示された実施形態を網羅的または限定することを意図するものではない。記載された実施形態の範囲から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見出される技術に対する実用化または技術的改良を最もよく説明するため、または当業者が本明細書で開示される実施形態を理解できるようにするために選択された。
【0088】
本開示は、特定の実施形態の観点から説明されてきたが、その変更および修正が当業者に明らかになることが予想される。従って、以下の特許請求の範囲は、本開示の範囲内に入る全てのそのような変更および修正をカバーするものとして解釈されることが意図される。
図1
図2
図3
図4
図5
図6
図7
【国際調査報告】