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

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

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

特表2024-535180アドレス変換サービスのためのセキュリティ
<>
  • 特表-アドレス変換サービスのためのセキュリティ 図1
  • 特表-アドレス変換サービスのためのセキュリティ 図2
  • 特表-アドレス変換サービスのためのセキュリティ 図3
  • 特表-アドレス変換サービスのためのセキュリティ 図4
  • 特表-アドレス変換サービスのためのセキュリティ 図5A
  • 特表-アドレス変換サービスのためのセキュリティ 図5B
  • 特表-アドレス変換サービスのためのセキュリティ 図6
  • 特表-アドレス変換サービスのためのセキュリティ 図7
  • 特表-アドレス変換サービスのためのセキュリティ 図8
  • 特表-アドレス変換サービスのためのセキュリティ 図9
  • 特表-アドレス変換サービスのためのセキュリティ 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-30
(54)【発明の名称】アドレス変換サービスのためのセキュリティ
(51)【国際特許分類】
   G06F 21/60 20130101AFI20240920BHJP
   G06F 21/62 20130101ALI20240920BHJP
   H04L 9/14 20060101ALI20240920BHJP
   G06F 12/1081 20160101ALI20240920BHJP
   G06F 13/36 20060101ALI20240920BHJP
   G06F 13/14 20060101ALI20240920BHJP
【FI】
G06F21/60 320
G06F21/62 318
H04L9/14
G06F12/1081
G06F13/36 310E
G06F13/14 320H
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024505363
(86)(22)【出願日】2022-09-27
(85)【翻訳文提出日】2024-01-29
(86)【国際出願番号】 EP2022076792
(87)【国際公開番号】W WO2023052340
(87)【国際公開日】2023-04-06
(31)【優先権主張番号】17/490,723
(32)【優先日】2021-09-30
(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)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ハント、ガーニー
(72)【発明者】
【氏名】ジョーンズ、 チャールズ
(72)【発明者】
【氏名】アウエルンハマー、フローリアン
(72)【発明者】
【氏名】ジュトラ、チャランジット
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK13
5B205RR01
(57)【要約】
プロセッサは、リクエスタから、仮想アドレスを含む第1要求を受信する。第1要求に基づき、プロセッサは、仮想アドレスに対応する実アドレスを判定し、実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、暗号化セキュア実アドレスをリクエスタに返す。要求アドレスを特定する第2要求を受信することに基づき、プロセッサは、要求アドレスを復号して、要求アドレスを暗号化セキュア実アドレスとして検証する。要求アドレスを暗号化セキュア実アドレスとして検証することに基づき、プロセッサは、実アドレスによって識別されるデータ処理システムのリソースへのアクセスを可能にする。
【特許請求の範囲】
【請求項1】
プロセッサを備えるデータ処理システムにおけるデータ処理の方法であって:
前記プロセッサが、リクエスタから、仮想アドレスを含む第1要求を受信する段階;
前記第1要求に基づき、前記プロセッサが、前記仮想アドレスに対応する実アドレスを判定し、前記実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、前記暗号化セキュア実アドレスを前記リクエスタに返す段階;
要求アドレスを特定する第2要求を受信することに基づき、前記プロセッサが、前記要求アドレスを復号して、前記要求アドレスを前記暗号化セキュア実アドレスとして検証する段階;及び
前記要求アドレスを前記暗号化セキュア実アドレスとして検証する段階に基づき、前記プロセッサが、前記実アドレスによって識別される前記データ処理システムのリソースへのアクセスを可能にする段階
を有する、データ処理の方法。
【請求項2】
第1要求を前記受信する段階は、周辺構成要素相互接続エクスプレスアドレス変換サービス(PCIe ATS)プロトコル要求を受信する段階を含む、請求項1に記載のデータ処理の方法。
【請求項3】
前記実アドレスの少なくとも一部を暗号化する段階は、高度暗号化標準(AES)ベース暗号化を利用して前記実アドレスの前記少なくとも一部を暗号化する段階を含む、請求項1に記載のデータ処理の方法。
【請求項4】
前記実アドレスの少なくとも一部を暗号化する段階は、前記実アドレスの前記少なくとも一部のハッシュを生成する段階を含む、請求項1に記載のデータ処理の方法。
【請求項5】
前記実アドレスの少なくとも一部を暗号化する段階は、メモリページ内のアドレスを特定するために利用される前記実アドレスのより下位のビットを暗号化することを回避する段階を含む、請求項1に記載のデータ処理の方法。
【請求項6】
前記暗号化する段階に先立ち、追加データを前記実アドレスの前記少なくとも一部と組み合わせる段階を更に含む、請求項1に記載のデータ処理の方法。
【請求項7】
前記追加データは、以下のセット:前記リクエスタのプロセスアドレス空間識別子からのビット及びリクエスタ識別子からのビット、のうちの少なくとも1つを含む、請求項6に記載のデータ処理の方法。
【請求項8】
前記追加データは、前記リクエスタによる前記実アドレスへのアクセスが読み取り専用であるかどうかを示す読み取り専用フィールドを含む、請求項6に記載のデータ処理の方法。
【請求項9】
前記追加データは、前記実アドレスを暗号化するために複数の鍵の中からどの鍵が利用されたかを特定する鍵生成フィールドを含む、請求項6に記載のデータ処理の方法。
【請求項10】
データ処理システムであって、
リクエスタから、仮想アドレスを含む第1要求を受信する手順;
前記第1要求に基づき、前記仮想アドレスに対応する実アドレスを判定し、前記実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、前記暗号化セキュア実アドレスを前記リクエスタに返す手順;
要求アドレスを特定する第2要求を受信することに基づき、前記要求アドレスを復号して、前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順;及び
前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順に基づき、前記実アドレスによって識別される前記データ処理システムのリソースへのアクセスを可能にする手順
を実行するように構成されたプロセッサ
を備える、データ処理システム。
【請求項11】
第1要求を前記受信する手順は、周辺構成要素相互接続エクスプレスアドレス変換サービス(PCIe ATS)プロトコル要求を受信する手順を含む、請求項10に記載のデータ処理システム。
【請求項12】
前記実アドレスの少なくとも一部を暗号化する手順は、高度暗号化標準(AES)ベース暗号化を利用して前記実アドレスの前記少なくとも一部を暗号化する手順を含む、請求項10に記載のデータ処理システム。
【請求項13】
前記実アドレスの少なくとも一部を暗号化する手順は、前記実アドレスの前記少なくとも一部のハッシュを生成する手順を含む、請求項10に記載のデータ処理システム。
【請求項14】
前記実アドレスの少なくとも一部を暗号化する手順は、メモリページ内のアドレスを特定するために利用される前記実アドレスのより下位のビットを暗号化することを回避する手順を含む、請求項10に記載のデータ処理システム。
【請求項15】
前記プロセッサは:
前記暗号化する手順に先立ち、追加データを前記実アドレスの前記少なくとも一部と組み合わせる手順
を実行するように更に構成されている、請求項10に記載のデータ処理システム。
【請求項16】
前記追加データは、以下のセット:前記リクエスタのプロセスアドレス空間識別子からのビット及びリクエスタ識別子からのビット、のうちの少なくとも1つを含む、請求項15に記載のデータ処理システム。
【請求項17】
前記追加データは、前記リクエスタによる前記実アドレスへのアクセスが読み取り専用であるかどうかを示す読み取り専用フィールドを含む、請求項15に記載のデータ処理システム。
【請求項18】
前記追加データは、前記実アドレスを暗号化するために複数の鍵の中からどの鍵が利用されたかを特定する鍵生成フィールドを含む、請求項15に記載のデータ処理システム。
【請求項19】
前記プロセッサに結合されたシステムメモリ;及び
バスを介して前記プロセッサに結合された前記リクエスタ
を更に備える、請求項10に記載のデータ処理システム。
【請求項20】
ストレージデバイス;及び
前記ストレージデバイス内に記憶されたプログラムコード
を備え、前記プログラムコードは、プロセッサによって実行されると、前記プロセッサに:
リクエスタから、仮想アドレスを含む第1要求を受信する手順;
前記第1要求に基づき、前記仮想アドレスに対応する実アドレスを判定し、前記実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、前記暗号化セキュア実アドレスを前記リクエスタに返す手順;
要求アドレスを特定する第2要求を受信することに基づき、前記要求アドレスを復号して、前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順;及び
前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順に基づき、前記実アドレスによって識別されるデータ処理システムのリソースへのアクセスを可能にする手順
を実行させる、プログラム製品。
【請求項21】
第1要求を前記受信する手順は、周辺構成要素相互接続エクスプレスアドレス変換サービス(PCIe ATS)プロトコル要求を受信する手順を含む、請求項20に記載のプログラム製品。
【請求項22】
前記実アドレスの少なくとも一部を暗号化する手順は、高度暗号化標準(AES)ベース暗号化を利用して前記実アドレスの前記少なくとも一部を暗号化する手順を含む、請求項20に記載のプログラム製品。
【請求項23】
前記実アドレスの少なくとも一部を暗号化する手順は、前記実アドレスの前記少なくとも一部のハッシュを生成する手順を含む、請求項20に記載のプログラム製品。
【請求項24】
前記実アドレスの少なくとも一部を暗号化する手順は、メモリページ内のアドレスを特定するために利用される前記実アドレスのより下位のビットを暗号化することを回避する手順を含む、請求項20に記載のプログラム製品。
【請求項25】
前記プログラムコードは、実行されると、前記プロセッサに:
前記暗号化する手順に先立ち、追加データを前記実アドレスの前記少なくとも一部と組み合わせる手順
を実行させる、請求項20に記載のプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概してデータ処理に関し、具体的には、データ処理システムにおける入力/出力(I/O)セキュリティに関する。
【0002】
データ処理システムは、通信ネットワーク、ストレージデバイス及び/又はストレージネットワーク、及び周辺デバイスへの接続をサポートするための複数の処理要素及び複数の入力/出力アダプタ(Input/Output Adapter:IOA)を含み得る。そのようなデータ処理システムにおいて、データ処理システムのハードウェアリソースは、複数のリソースのセットに論理的に区画され、それぞれが、複数の、場合によっては異種のオペレーティングシステムインスタンスのそれぞれ1つによって制御され得る。オペレーティングシステムは、仮想マシンモニタ(Virtual Machine Monitor:VMM)又はハイパーバイザと一般に称されるシステムファームウェアの制御下で、それらのそれぞれの論理区画(Logical Partition:LPAR)において、この共通ハードウェアプラットフォーム上で同時に実行される。従って、ハイパーバイザは、データ処理システムのリソースの交差しないサブセットを各LPARに割り当て、今度は各オペレーティングシステムインスタンスが、システムメモリの領域及びIOAなど、割り当て可能なリソースのその別個のセットを直接制御する。
【0003】
概して、データ処理システムにおけるIOAは、データ処理システムにおいてシステムメモリをアドレス指定するために利用される実アドレス空間とは別個のI/O(又は仮想)アドレス空間を採用する。その結果、データ処理システムのI/Oアドレス空間及び実アドレス空間の間でアドレスを変換するために、アドレス変換が採用される。少なくとも一部のより古い従来技術のデータ処理システムにおいて、I/Oアドレス空間及び実アドレス空間の間における全ての変換が、プロセッサチップ上で実行されていた。結果として、I/Oから実アドレスへの変換プロセスを利用して、IOAを、それらがアクセスすることを許可された実アドレスのサブセットのみに制限することができた。
【0004】
より最近では、周辺構成要素相互接続エクスプレス(Peripheral Component Interconnect Express:PCIe)などの少なくとも幾つかのI/O規格が、IOAがI/Oアドレスについての変換を要求し、それに応答してホストブリッジから対応する実アドレスを受信することができる代替アドレス変換サービス(Alternative Address Translation Service:ATS)を導入している。IOAは次に、実アドレスをアドレス変換キャッシュ(Address Translation Cache:ATC)内でキャッシュして、その後、実アドレスを特定する1つ又は複数のメモリアクセス要求をホストブリッジに発行し得る。頻繁にアクセスされる、又は最近アクセスされたアドレスを参照するアクセスについてのレイテンシを改善しつつ、IOAが実アドレスを利用してメモリアクセス要求を行うことを可能にすることにより、ホストシステムメモリを、悪意のある、又は侵害されたI/Oデバイスによるアクセスに晒す可能性があり、従ってこれは、重大なセキュリティ上の懸念を生じさせる。少なくとも一部の従来技術のシステムは、入来するI/Oメモリアクセス要求に対して実アドレス検証を実行し、各IOAが承認された実アドレスページにのみにアクセスすることを確実にすることによって、このセキュリティ上の懸念を部分的に改善する。しかしながら、このアドレス変換サービス実装は性能が低く、実アドレス検証を実行するために従来利用されるテーブルを記憶するために必要とされるメモリフットプリントの点において、実装のためのコストが高いことが証明されている。これらの欠点は、実アドレス検証が、例えば、リクエスタ識別子(Requestor Identifier:RID)及びプロセスアドレス空間識別子(Process Address Space Identifier:PASID)の両方に基づくきめ細かい検証を採用する実装において悪化する。
【発明の概要】
【0005】
少なくとも一実施形態において、データ処理システムは、付属デバイスに対するアドレス変換サービスをサポートしつつ、向上したI/Oセキュリティを提供する。
【0006】
様々な実施形態において、開示された技法は、方法、データ処理システム、及び/又はプログラム製品において実装され得る。
【0007】
少なくとも一実施形態において、プロセッサは、リクエスタから、仮想アドレスを含む第1要求を受信する。第1要求に基づき、プロセッサは、仮想アドレスに対応する実アドレスを判定し、実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、暗号化セキュア実アドレスをリクエスタに返す。要求アドレスを特定する第2要求を受信することに基づき、プロセッサは、要求アドレスを復号して、要求アドレスを暗号化セキュア実アドレスとして検証する。要求アドレスを暗号化セキュア実アドレスとして検証することに基づき、プロセッサは、実アドレスによって識別されるデータ処理システムのリソースへのアクセスを可能にする。暗号化セキュア実アドレスの使用により、向上したセキュリティが提供され、概して、テーブルベースの実アドレス検証手法に比べて実装のためにより少ないフットプリントを必要とする。
【0008】
幾つかの実施形態において、リクエスタは、入力/出力(I/O)アダプタであり得る。例えば、特定の一実施形態において、アダプタは、周辺構成要素相互接続エクスプレスアドレス変換サービス(Peripheral Component Interconnect Express Address Translation Services:PCIe ATS)プロトコルを利用して、要求をプロセッサに通信し得る。他の実施形態において、リクエスタは、仮想アドレス空間を採用するアクセラレータなどの付属デバイスであり得る。
【0009】
幾つかの実施形態において、実アドレスの少なくとも一部は、高度暗号化標準(Advanced Encryption Standard:AES)ベース暗号化を利用して暗号化される。幾つかの実施形態において、実アドレスの少なくとも一部を暗号化することは、代替的又は追加的に、実アドレスの少なくとも一部のハッシュを生成することを含む。AESなどの強力な暗号化技法を利用することは、向上したセキュリティという利点を有し、ハッシュを利用することは、高性能という利点を有する。
【0010】
幾つかの実施形態において、プロセッサは、メモリページ内のアドレスを特定するために利用される実アドレスのより下位のビットを暗号化することを回避する。完全な実アドレス(例えば、64ビット)を暗号化しないことにより、暗号化が簡略化され、性能が向上する。
【0011】
幾つかの実施形態において、暗号化に先立ち、追加データを実アドレスの少なくとも一部と組み合わせることによって、暗号化が更に強化され得る。幾つかの実施形態において、追加データは、リクエスタのプロセスアドレス空間識別子からのビット及び/又はリクエスタ識別子からのビットを含み得る。幾つかの実施形態において、追加データは、代替的又は追加的に、リクエスタによる実アドレスへのアクセスが読み取り専用であるかどうかを示す読み取り専用フィールドを含み得る。幾つかの実施形態において、追加データは、実アドレスを暗号化するために複数の鍵の中からどの鍵が利用されたかを特定する鍵生成フィールドを含み得る。
【図面の簡単な説明】
【0012】
図1】一実施形態による、例示的なデータ処理システムのハイレベルブロック図を示す。
【0013】
図2】一実施形態による、ホストブリッジ及びI/Oアダプタ(I/O Adapter:IOA)のより詳細なブロック図である。
【0014】
図3】一実施形態による、プロセッサが暗号化セキュア実アドレス(secure Real Address:sRA)をリクエスタに提供する例示的なプロセスのハイレベル論理フローチャートである。
【0015】
図4】一実施形態による、プロセッサがリクエスタのメモリアクセス要求をハンドリングする例示的なプロセスのハイレベル論理フローチャートである。
【0016】
図5A】一実施形態による、セキュア実アドレスを取得するための実アドレスの暗号化、及び、元の実アドレスを取得するためのセキュア実アドレスの復号を示す。
図5B】一実施形態による、セキュア実アドレスを取得するための実アドレスの暗号化、及び、元の実アドレスを取得するためのセキュア実アドレスの復号を示す。
【0017】
図6】一実施形態による、実アドレスの例示的なホストフィールドの内容を図示する。
【0018】
図7】一実施形態による、実アドレスを暗号化して暗号化セキュア実アドレスを取得するための例示的なプロセスのハイレベルデータフロー図である。
【0019】
図8】一実施形態による、鍵生成の使用をサポートするプロセッサのセキュリティロジックの部分を示す部分図である。
【0020】
図9】一実施形態による、プロセッサが鍵生成を実装する例示的なプロセスのハイレベル論理フローチャートである。
【0021】
図10】一実施形態による、暗号化セキュア実アドレスを生成するために利用され得る例示的なAESベース暗号化プロセスのデータフロー図である。
【発明を実施するための形態】
【0022】
ここで図を参照して、特に図1を参照すると、一実施形態による例示的なデータ処理システム100のハイレベルブロック図が図示されている。幾つかの実施形態において、データ処理システム100は、例えば、複数のプロセッサ102a~102nを含む対称マルチプロセッサ(Symmetric MultiProcessor:SMP)システムであり得、それぞれが、1つ又は複数のバス又はスイッチ通信リンクを含み得るシステムファブリック104への通信のために結合される。代替的な実施形態において、単一のプロセッサ102を有するデータ処理システムが利用され得る。
【0023】
図示された実施形態において、各プロセッサ102は、好ましくは、当技術分野において既知であるように、その中に集積回路が作製される半導体基板を有する単一の集積回路チップとして実現される。示されている通り、各プロセッサ102は、例えば、ソフトウェア及び/又はファームウェア及び該当する場合は関連付けられたデータを含み得るプログラムコードの実行及び/又は処理を通じてデータを処理する複数のプロセッサコア110を含む。このプログラムコードは、例えば、ハイパーバイザ、ハイパーバイザが論理区画(LPAR)を割り当て得る1つ又は複数のオペレーティングシステムインスタンス、及びアプリケーションプログラムを含み得る。プロセッサ102は、データストレージ階層の下位レベルから取り出される命令及びデータのための比較的低レイテンシの一時的ストレージの1つ又は複数のレベルを提供するキャッシュメモリ112を更に含む。加えて、プロセッサ102は、オフチップシステムメモリ116aから116nのうちの関連付けられた1つへのアクセスを制御する統合メモリコントローラ(Integrated Memory Controller:IMC)114を含む。プロセッサ102は、実アドレス空間内で実アドレス(Real Address:RA)を利用してシステムメモリ116にアクセスする。様々な実施形態において、実アドレスは、32ビット、64ビット等のような異なる長さを有し得る。
【0024】
各プロセッサ102は、プロセッサ102がシステムファブリック104と通信するファブリックインタフェース(Fabric Interface:FIF)118、並びに、様々な入力/出力アダプタ(IOA)130a~130l又は130m~130wとの入力/出力通信をサポートする1つ又は複数の(及び、好ましくは複数の)ホストブリッジ(Host Bridges:HB)120a~120k又は120m~120vを更に含む。IOA130は、例えば、ネットワークアダプタ、ストレージデバイスコントローラ、ディスプレイアダプタ、周辺アダプタ等であり得る。IOA130は、それらの処理において、仮想アドレス(Virtual Address:VA)空間内のI/Oアドレス(VAとも称される)を参照する。様々な実施形態において、VAは、32ビット、40ビット、48ビット、52ビット、64ビット等のような異なる長さを有し得る。IOA130によって採用されるVAの長さは、プロセッサ102によって採用されるRAの長さとは異なる(すなわち、より短い又はより長い)ものであり得る。
【0025】
様々な実施形態において、ホストブリッジ120は、直接的又は間接的に、IOA130に通信可能に結合され得る。例えば、示された実施形態において、ホストバッファ120a、120k、120m及び120vは、それぞれ、IOA130が直接的に接続され得る、又は間接的に結合され得るローカルバス122a、122k、122m、及び122vにインタフェースを提供する。従って、IOA130aは、1つ又は複数のスイッチ及び/又はブリッジを備え得るI/Oファブリック124aを通じて、ローカルバス122aに任意選択的に結合される。同様の方式で、IOA130k及び130lは、I/Oファブリック124kを通じてローカルバス122kに任意選択的に結合されており、IOA130mは、I/Oファブリック124mを通じてローカルバス122mに任意選択的に結合されており、IOA130v及び130wは、I/Oファブリック124vを通じてローカルバス122vに任意選択的に結合される。幾つかの実施形態において、ローカルバス122の1つ又は複数上での通信は、周辺構成要素相互接続(PCI)又はPCIエクスプレス(PCIe)規格などの既知のI/Oバス規格を利用する。幾つかの実施形態において、ローカルバス122の1つ又は複数は、追加的又は代替的なI/Oバス規格を採用し得る。
【0026】
図1において更に図示されている通り、プロセッサ102の1つ又は複数(例えば、プロセッサ102a)は、付属デバイス142の取り付けをサポートする付属デバイスインタフェース(Attached Device Interface:ADI)140を更に含み得る。幾つかの実施形態において、付属デバイス142は、例えば、プロセッサ102が、データ暗号化/復号、データ圧縮/解凍、行列演算、データストリーム管理等のような1つ又は複数の処理機能をオフロードすることを可能にするアクセラレータであり得る。その処理を実行するにあたり、付属デバイス142はまた、IOA130によって利用されるものとは異なる、又は同じであり得るVA空間を参照し得る。
【0027】
当業者であれば、データ処理システムのアーキテクチャ及び構成要素が、実施形態間で異なり得ることを理解するであろう。例えば、他のデバイス及び相互接続が、代替的又は追加的に使用され得る。従って、図1に提示されている例示的なデータ処理システム100は、特許請求される本発明に関するアーキテクチャ上の制限を示唆することを意図していない。
【0028】
ここで図2を参照すると、一実施形態によるホストブリッジ120及びI/Oアダプタ130のより詳細なブロック図が図示されている。図示された例において、ホストブリッジ120は、IOA130などの、リクエスタによって参照されるVAの、データ処理システム100のシステムメモリ116(及び場合によっては他のメモリマップドリソース)にアクセスするために利用され得るRAへの変換を提供するように構成されたI/Oメモリ管理ユニット(I/O Memory Management Unit:IOMMU)200を含む。ホストブリッジ120は、リクエスタに通信されたアドレスを暗号化し、リクエスタから受信されたアドレスを復号するように構成されたセキュリティロジック202を追加的に含む。示された実施形態において、セキュリティロジック202は、暗号化を実行してセキュア実アドレス(sRA)を生成するための暗号化エンジン(Encryption Engine:EE)204、メモリアクセス要求において受信された要求アドレスを復号するための復号エンジン206、及び、暗号化及び復号において利用される鍵を記憶するための鍵ストア208を含む。少なくとも幾つかの実施形態において、ホストブリッジ120は、それがサポートする各リクエスタに対して別個の鍵を利用し得る。例えば、ホストブリッジ120がPCIeホストブリッジであると仮定すると、ホストブリッジ120は、各PCIeリクエスタ識別子(RID)に対して、又はRID及びプロセスアドレス空間識別子(PASID)の各組み合わせに対して、それぞれの鍵を実装し得る。少なくとも幾つかの実施形態において、セキュリティロジック202は、鍵ストア208内で暗号鍵を生成するための鍵生成ロジック210、並びに、ホストブリッジ120によってリクエスタから受信される要求の実アドレスを検証するための任意選択的な実アドレス検証(Real Address Validation:RAV)ロジック212を追加的に含む。
【0029】
図2は、IOA130などのリクエスタがアドレス変換キャッシュ(ATC)220を含み得ることを追加的に示す。アドレス変換キャッシュ220は、最近及び/又は頻繁にアクセスされたVAを、ホストブリッジ120から受信された対応するセキュアRA(sRA)と関連付ける複数のエントリを含み得る。
【0030】
図2では具体的に示されていないが、図1のADI140は、ホストブリッジ120と同様に構築され得ることを理解されたい。例えば、ADI140は、IOMMU200及びセキュリティロジック202を含み得る。IOA130と同様に、付属デバイス142は、ADI140から取得されたVAからsRAへの変換をキャッシュするためのATC220をも含み得る。
【0031】
ここで図3を参照すると、一実施形態による、プロセッサ102が暗号化セキュアRA(sRA)をリクエスタに提供する例示的なプロセスのハイレベル論理フローチャートが示されている。幾つかの実装において、図3のプロセスは、IOA130に暗号化sRAを提供するホストブリッジ120によって実行され得る。同じプロセスが、付属デバイス142にsRAを提供するために、ADI140によって代替的又は追加的に採用され得る。
【0032】
図3のプロセスはブロック300で始まり、次に、プロセッサ102が、変換されるべき仮想アドレスを特定する変換要求を関連付けられたリクエスタから受信することを示すブロック302に進む。幾つかの実施形態において、変換要求は、例えば、PCIe ATS変換要求であり得る。変換要求の受信に応答して、プロセッサ102は、例えばIOMMU200を利用して、VAを、データ処理システム100の実アドレス空間内のRAに変換する。ブロック304から、プロセスは、暗号化用のRAを準備しているプロセッサ102を示す任意選択的なブロック305に進む。示された実施形態において、ブロック305での暗号化用のRAの準備は、所与のメモリページ内の特定のアドレスを特定するために利用されるRAの下位ビットの数を暗号化から除外することを含む複数のステップを含む(ブロック306)。例えば、RAが64ビット長であり、プロセッサ102がリクエスタに2MBのメモリページを割り当てると仮定すると、RAの21の下位ビットは、ブロック306での暗号化から除外される。理解されるように、プロセッサ102がRAの全ビットを暗号化することを回避した場合、暗号化プロセスが簡略化され、暗号化性能が向上する。ブロック305で、1つ又は複数の追加ビットを含むホストフィールドを用いて、切り捨てられたRAを任意選択的にパッドする(ブロック308)。ホストフィールドの異なる実施形態は、図5A及び図6を参照して以下で説明される。加えて、ブロック305で、プロセッサ102は、RAのビットをシャッフリングして、ビット値のエントロピー(又は無作為性)を全般的に高め得る(ブロック310)。好ましい実施形態において、ブロック310で、ビット位置は、固定された所定の方式で、中間RA内で再配列される。
【0033】
図3のプロセスは、ブロック305から、プロセッサ102が、RA(IOMMU200から受信されたもの、又は、ブロック305が実装される場合、ブロック305に続いて取得された中間RAのいずれか)を暗号化して、暗号化セキュアRA(sRA)を取得することを示すブロック312に進む。幾つかの実施形態において、ブロック312で図示された暗号化は、RAのハッシュを実行する暗号化エンジン204を含み得る。好適なハッシュ関数は、例えば、SHA-1、SHA-256、又はMD-5を含み得る。他の実施形態において、暗号化は、代替的又は追加的に、暗号化エンジン204が1つ又は複数の鍵を利用してRAを暗号化することを含み得る。鍵ベース暗号化が実行される場合、暗号化エンジン204が各リクエスタに対して(又は、RID及びPASIDの各組み合わせに対して)異なる鍵を利用することが好ましい。採用され得る可能な暗号化アルゴリズムの実施形態は、図7及び図10を参照して以下で説明される。プロセッサは次に、ブロック312で実行された暗号化によって生成されたsRAをリクエスタに提供する(ブロック314)。少なくとも幾つかの実施形態において、プロセッサ102は、PCIe ATS変換応答において、リクエスタにsRAを通信し得る。sRAの受信に応答して、リクエスタは、メモリアクセス要求におけるsRAの将来の使用を容易にするために、VAからsRAへの変換を(例えば、ATC220において)キャッシュし得る。ブロック314に続き、プロセッサ102による変換要求の処理はブロック316で終了する。
【0034】
ここで図4を参照すると、一実施形態による、プロセッサ102がリクエスタのメモリアクセス要求をハンドリングする例示的なプロセスのハイレベル論理フローチャートが図示されている。幾つかの実装において、図4のプロセスは、IOA130からメモリアクセス要求を受信するホストブリッジ120によって実行され得る。同じプロセスが、代替的又は追加的に、付属デバイス142からのメモリアクセス要求の受信に応答して、ADI140によって実行され得る。
【0035】
プロセスはブロック400で開始し、次に、プロセッサ102が、IOA130又は付属デバイス142などのリクエスタからメモリアクセス要求を受信することを示すブロック402に進む。概してデータの返却を要求する読み取りタイプの要求、又はデータの更新を要求する書き込みタイプの要求であり得るメモリアクセス要求は、アクセスされるべき要求アドレスを特定する。リクエスタが悪意のある、又は侵害されたデバイスでない場合において、要求アドレスは、図3のプロセスによってプロセッサ102によってリクエスタに以前に提供されていたであろうsRAとなる。しかしながら、リクエスタが悪意のある、又は侵害されたデバイスである場合、要求アドレスは、不正アドレス、又は、リクエスタがアクセスすることを承認されている実アドレスの範囲外の実アドレスであり得る。
【0036】
メモリアクセス要求の受信に応答して、プロセッサ102は、要求アドレスを復号する(ブロック404)。例えば、暗号化エンジン204がハッシュ関数を利用してsRAを生成する場合、復号エンジン206は、ブロック404で、対応する逆ハッシュ関数を利用して要求アドレスを復号し得る。代替的に、暗号化エンジン204が鍵ベース暗号化関数を利用してsRAを生成する場合、復号エンジン206は、sRAを暗号化するために利用されたのと同じ鍵を利用して、ブロック404で要求アドレスを復号し得る。再び、復号エンジン206は、リクエスタの識別情報(又はRID/PASIDの組み合わせ)に基づき鍵ストア208内の関連する鍵にアクセスし得、これは、好ましくは、メモリアクセス要求において、又はこれと併せてリクエスタによって通信される、又は、接続I/Oバス上のリクエスタのロケーションによって部分的又は完全に示唆される。中間RAのビットが図3のブロック310でシャッフリングされたと仮定すると、プロセッサ102はまた、復号された要求アドレスのビットのシャッフリングを解除して、ブロック310で行われたビット位置の並べ替えを逆にする(ブロック406)。
【0037】
ブロック408で、プロセッサ102は、復号された要求アドレスの少なくとも一部をチェックして、復号された要求アドレスが有効なRAであるか否かを判定する。例えば、プロセッサ102が図3のブロック308でRAをパッドするためにホストフィールドを追加する実施形態において、プロセッサ102のセキュリティロジック202は、復号された要求アドレスのホストフィールドがブロック308でRAに追加されたホストフィールドと一致するか否かをブロック408で判定し得る。ブロック408で行われたチェックは、代替的又は追加的に、RAVロジック212が復号された要求アドレスのRAビットの一部又は全部の実アドレス検証を実行することを含み得る。ブロック410で、プロセッサ102は、ブロック408で実行されたチェックが全て成功したか否かを判定する。ブロック408で実行された1つ又は複数のチェックが全て成功したとのブロック410での判定に基づき、要求アドレスが適切なsRAであることが確認され、プロセッサ102は、復号RAによって識別されるデータ処理システム100内のリソース(例えば、システムメモリ116内のロケーション)へのアクセスを可能にする(ブロック412)。しかしながら、プロセッサ102が、ブロック410で実行されたチェックのうちの1つ又は複数が成功しなかったとブロック410で判定した場合、プロセッサ102は、該当する場合、復号された要求アドレスによって識別されたデータ処理システム100のリソースへの要求されたアクセスを許可しない(ブロック414)。加えて、ブロック414で、プロセッサ102は、リクエスタの動作を停止して、リクエスタによる潜在的に悪意のあるメモリアクセス要求の生成を終了する。プロセッサ102はまた、リクエスタを任意選択的にリセット(リスタート)して、リクエスタを既知の安定した状態に戻し、そこからリクエスタが再びメモリアクセス要求を発行することを許可されるようにし得る。ブロック412又はブロック414のいずれかに続き、図4のプロセスはブロック416で終了する。
【0038】
ここで図5Aを参照すると、一実施形態による、プロセッサ102が実アドレス(RA)を暗号化してセキュア実アドレス(sRA)を取得する例示的なプロセスが示されている。図示された例において、セキュリティロジック202は、IOMMU200からRA500を受信する。プロセッサ102が64ビット実アドレス指定をサポートする図示された例において、RA500は、52ビットなどのより少ない数のビットを含み得る。RAの長さは、IOA130及び付属デバイス142などのI/Oリクエスタが、概して、データ処理システム100の完全なRA空間をアドレス指定する必要がない(又は、アドレス指定することを制限されている)という事実を反映している。RA500は、上位ビットフィールド502及び下位ビットフィールド504を含む。図示された例において、上位ビットフィールド502及び下位ビットフィールド504の間の境界は、関連付けられたリクエスタに(例えば、オペレーティングシステム又はハイパーバイザソフトウェアによって)割り当てられたメモリページのサイズに対応するように選択される。この例において、21ビット長の下位ビットフィールドは、2MBのメモリページサイズに対応する。示されている通り、プロセッサ102は、リクエスタがその独自の割り当てられたメモリページのうちの1つの内容にアクセス又はこれを修正することが、定義によればセキュリティ上の脅威ではないため、好ましくは、下位ビットフィールドの内容を暗号化することを回避する。下位ビットフィールド504を暗号化から除外することにより、暗号化エンジン204によって実行される暗号化が簡略化され、暗号化性能が向上する。
【0039】
図3のブロック308を参照して上述された通り、セキュリティロジック202は、ホストフィールド(Host Field:HF)506を備える所望の数のビットで切り捨てられたRA500(ここでは上位ビットフィールド502のみを含む)をパッドして、暗号化用の所望の数のビットを取得し得る。例えば、示された例において、ホストフィールド506は、中間RAが43ビットの全長を有するように、12ビット長になるように選択され得る。他の実施形態において、より多い、又はより少ない数のビットがホストフィールド506に含まれ得る。様々な実施形態において、様々な異なる情報がホストフィールド506内でエンコードされ得る。例えば、図6は、プロセッサ102がVAからsRAへの変換用の変換コンテキストを記録する変換コンテキストフィールド600をホストフィールド506が含む例示的な実施形態を図示する。例えば、プロセッサ102及びリクエスタがPCIe ATSプロトコルを利用して通信する実施形態において、変換コンテキストは、VAからsRAへの変換に関連付けられたRID及び/又はPASIDからのビットを含み得る。具体的な一例において、変換コンテキストフィールド600は、関連するRID及びPASIDの連結を含む。図6は、ホストフィールド506内で、例えばIOMMU200内で維持されるページ保護情報において、RA500が読み取り専用メモリページとして識別されるメモリページにマッピングされるか否かを特定する読み取り専用(Read-Only:RO)フィールド602をプロセッサ102が任意選択的に含み得ることを更に示す。ホストフィールド506がROフィールド602を含む実施形態において、セキュリティロジック202は、ブロック408で実行されるチェックにおいて、メモリアクセス要求が書き込みタイプの要求であり、ROフィールド602が読み取り専用メモリページを示すように設定されているかどうかのチェックを含み得る。そのような場合において、セキュリティロジック202は、図4のブロック410でのチェックに失敗する。幾つかの実施形態において、ホストフィールド506は、図8図9を参照して以下で更に論述される通り、鍵生成フィールドを代替的又は追加的に含み得る。
【0040】
図5Aに戻ると、ホストフィールド506による上位ビットフィールド502のパディングに続き、暗号化エンジン204内のエントロピー混合器510は、エントロピーを増大させるために、43ビットの中間RAのビット位置の少なくとも一部を任意選択的に並べ替え得る。概して、このビット位置の並べ替えは、RA間のビット値におけるより大きい変動を有する傾向にある上位ビットフィールド502のより下位のビットを中間RAの43ビット位置の中で分散させることを含む。中間RAは次に、暗号化エンジン204内の暗号化ロジック512によって暗号化されて、43ビットの暗号化フィールド522を取得する。暗号化フィールド522は、非暗号化21ビット下位ビットフィールド504に連結されて、プロセッサ102が実際の対応するRAをリクエスタによる発見に晒すことなくリクエスタに安全に返し得る暗号化sRA520を形成する。
【0041】
ここで図5Bを参照すると、一実施形態による、対応する実アドレスを取得するためのsRA520の復号の例示的なプロセスが示されている。例えば、メモリアクセス要求において、セキュリティロジック202に返されたsRA520の受信に応答して、復号エンジン206内の復号ロジック514は、暗号化フィールド522を復号する。復号エンジン206内のエントロピー脱混合器516は、エントロピー混合器510によって実行されたビットのシャッフリングを逆にして上位ビットフィールド532及び復号ホストフィールド534を取得し、これらは下位ビットフィールド504と共に、復号RA530を形成する。図4のブロック408及び410に関して上述した通り、セキュリティロジック202は、復号ホストフィールド534をチェックして、復号実アドレス530がリクエスタに対して承認された実アドレスであるかを判定し得る。更に、セキュリティロジック202は、RAVロジック212を利用して、上位ビットフィールド532及び下位ビットフィールド504内で見つかったRAビットを代替的又は追加的にチェックし得る。
【0042】
ここで図7を参照すると、一実施形態による、プロセッサ102が実アドレスを暗号化して暗号化セキュア実アドレス(sRA)を取得し得る例示的なプロセスのハイレベルデータフロー図が示されている。特に、図7は、暗号化エンジン204によって適用され得る無数の可能な暗号化の技法のうちの1つに過ぎない、2段階の鍵ベース暗号化プロセスを示している;他の実施形態においては、他の暗号化技法が代替的に採用され得る。
【0043】
図示された暗号化技法において、図5Aの31ビット上位ビットフィールド502は、最上位から最下位まで、HO1からHO8としてラベル付けされた8つのニブルに分割される(HO2は3ビットのみを含む短いニブルである)。この例において、ニブルHO1及びHO2は暗号化の第2段階のために予約され、エントロピー混合器510を通じて処理されない。残りの36ビット(ホストフィールド506の3つのニブル及び上位ビットフィールド502の6つのニブル)のビット位置は、エントロピー混合器510によって所定のパターンで混合されて、9つの4ビットニブルとして示される36ビットの第1中間RA700を生成する。
【0044】
暗号化エンジン204は、中間RA700(及び上位ビットフィールド502の7ビット)を2段階で暗号化する。第1段階において、暗号化エンジン204は、第1暗号鍵(「Key1」)を追加データと論理的に組み合わせて、修正された第1暗号鍵を取得する。図示された例において、この追加データは、アドレス変換要求に関連付けられたRID、又は、RID及びPASIDの連結などのリクエスタ関連識別子である。示された例において、暗号化エンジン204は、排他的論理和(Exclusive OR:XOR)演算705を利用して、第1暗号鍵及び追加データを論理的に組み合わせる。暗号化エンジン204は次に、修正された第1暗号鍵を利用して、例えば、第1段階の高度暗号化標準(AES)ベース暗号化ロジック702を利用して、中間RA700を暗号化する。幾つかの例において、第1段階のAESベース暗号化ロジック702によって実装されるAESベース暗号化スキームは、36ビット鍵を採用するミニAESベース暗号化スキームであり得る。そのようなミニAESベース暗号化スキームの一例は、図10を参照して以下で説明される。第1段階のAESベース暗号化ロジック702の出力は、9つの4ビットニブルとして示される36ビットの第1暗号704である。
【0045】
暗号化エンジン204は、後に使用するために、第1暗号704の7つの最上位ビットを予約する。暗号化エンジン204は、第1暗号204の29のより下位のビットを、上位ビットフィールド502から予約されたニブルHO1及びHO2と連結することによって、第2中間RA706を形成する。
【0046】
暗号化の第2段階において、暗号化エンジン204は、第2暗号鍵(「Key2」)を追加データと論理的に組み合わせて(例えば、XOR演算707を利用して)、修正された第2暗号鍵を取得する。上記の通り、この追加データは、アドレス変換要求に関連付けられたRID、又は、RID及びPASIDの連結などのリクエスタ関連識別子であり得る。暗号化エンジン204は次に、修正された第2暗号鍵(例えば、36ビット鍵)を利用して、例えば、第2段階のAESベース暗号化ロジック708を利用して、第2中間RA706を暗号化する。幾つかの例において、第2段階のAESベース暗号化ロジック708は、第1段階のAESベース暗号化ロジック702と同一であり得る、及び/又は同じ回路を再利用し得る。第2段階のAESベース暗号化ロジック708の出力は、9つの4ビットニブルとして示される36ビットの第2暗号710である。暗号化エンジン204は次に、暗号化の第1段階に続いて予約された第1暗号704の7つの最上位ビットを36ビットの第2暗号710と連結することによって、sRA520の43ビットの暗号化フィールド522を形成し得る。図5Aに示されている通り、セキュリティロジック202は次に、非暗号化21ビット下位ビットフィールド504を暗号化フィールド522に付加して、完全な64ビットのsRA520を形成する。
【0047】
ここで図8を参照すると、一実施形態による、図2のセキュリティロジック202の部分図が、鍵生成の使用をサポートするその部分を示して図示されている。
【0048】
経時的に、データ処理システム100の実アドレス空間におけるメモリページの割り当てを担うハイパーバイザ又はオペレーティングシステムインスタンスは、様々なメモリページを異なるプロセス及び/又は異なる論理区画(LPAR)に再割り当てすることになる。メモリページが再割り当てされると、プロセッサ102は、概して、例えば変換無効化要求を送信することによって、そのIOMMU200内及びその付属するリクエスタのATC220内の対応する変換エントリを無効化することになる。変換無効化要求を受信したリクエスタに悪意がなく、且つバグがない場合、リクエスタは、プロセッサ102の変換無効化要求に従い、そのATC220内のそれぞれの示された変換を無効化することになる。しかしながら、リクエスタに悪意がある、又はこれが侵害されている場合、リクエスタは、変換無効化要求に応答して、そのATC220内の変換を無効化しない可能性があり、代わりに、古いsRAを保持し、その後、当該古いsRAを再利用することを試みて、そのリクエスタに現在割り当てられていない実アドレス空間の一部にアクセスしようとする可能性がある。
【0049】
少なくとも幾つかの実施形態において、セキュリティロジック202は、悪意のある、又は侵害されたリクエスタが古いsRAを成功裏に再利用できることを防止するために、鍵ストア208内の暗号鍵の使用法を透過的に更新するように構成されている。図8の実施形態において、セキュリティロジック202は、好ましくは、各サポートされるリクエスタに割り当てられた暗号鍵に関連付けられたそれぞれの生成(Generation:G)フィールド800を実装する。生成フィールド800は、暗号鍵のどの生成が利用されるかを特定する。例えば、2つの暗号鍵生成(例えば、鍵生成A及びBとして表示される)のみがサポートされると仮定すると、鍵ストア208は、各サポートされるリクエスタについて、鍵生成A及びBのそれぞれに対するKey1及びKey2を含み得る。従って、鍵ストア208は、所与のリクエスタについて、鍵生成A中に使用するための鍵であるKey1A及びKey2A、及び、鍵生成B中に使用するための鍵であるKey1B及びKey2Bを含む。
【0050】
この配列により、ある時点で、生成フィールド800は、例えば鍵生成Aを表すb'0'の値を有することになる。その結果、セキュリティロジック202は、暗号化エンジン204がsRA520の暗号化フィールド522を生成するにあたり使用するためのKey1A及びKey2Aを(例えば、マルチプレクサ802を利用して)選択することになる。異なる時点で、生成フィールド800は、例えば鍵生成Bを表すb'1'の値を有することになる。生成フィールド800が鍵生成Bを示していることに基づき、セキュリティロジック202は、暗号化エンジン204がsRA520の暗号化フィールド522を生成するにあたり使用するためのKey1B及びKey2Bを(例えば、マルチプレクサ802を利用して)選択することになる。いずれの場合においても、生成フィールド800の値は、暗号化エンジン204による暗号出力に付加される生成フィールド804内に配置されて、sRA520の暗号化フィールド522を取得する。示された実施形態において、暗号化エンジン204は、図7の43ビットの第2暗号710ではなく42ビット暗号を生成するように構成されていることに留意されたい。少なくとも一実装において、この結果は、ホストフィールド506の長さを12ビットから11ビットに縮小することによって達成され得る。
【0051】
メモリアクセス要求と併せた要求アドレス810のリクエスタからの受信に応答して、セキュリティロジック202は、要求アドレス810の生成フィールド804に基づき、要求アドレス810を復号するにあたり利用されるべき鍵を(例えば、マルチプレクサ812を利用して)選択する。セキュリティロジックは更に、好ましくは、要求アドレス810の生成フィールド804によって特定された鍵生成が有効な鍵生成のままであるかどうかを検出し、そうでない場合、セキュリティロジック202に要求アドレス810を偽のものとして拒否させる比較器812を含む。
【0052】
ここで図9を参照すると、一実施形態による、プロセッサ102が鍵生成を実装する例示的なプロセスのハイレベル論理フローチャートが示されている。理解を容易にするために、図9で提示されているプロセスは、鍵生成A及びBと称される2つの交互の鍵生成を採用する、図8で図示されたセキュリティロジック202の実装を参照して説明されている。
【0053】
示されている通り、図9のプロセスはブロック900で開始され、次に、プロセッサ102のセキュリティロジック202が、現行の鍵生成を鍵生成Aとして初期化することを示すブロック901に進む。プロセスは、次に、セキュリティロジック202が、現行の鍵生成(例えば、鍵生成A)中に、リクエスタに対してsRA520を生成するにあたり使用するための2つの異なる鍵(例えば、Key1A及びKey2A)を生成することを示すブロック902に進む。例えば、セキュリティロジック202は、線形帰還シフトレジスタ(Linear-Feedback Shift Register:LFSR)又はAES鍵生成ロジックなどの鍵生成ロジック210を用いて鍵を生成し得る。加えて、ブロック902で、セキュリティロジック202は、鍵生成Aがリクエスタに適用可能な現行の鍵生成であることを表すためのb'0'の値を生成フィールド800に設定する。鍵生成Aが現行の鍵生成のままである間、セキュリティロジック202の暗号化エンジン204及び復号エンジン206は、生成Aに関連付けられた鍵、すなわちKey1A及びKey2Aを利用して、リクエスタに伝送されるsRA520を生成し、リクエスタから受信される要求アドレスを復号し、鍵生成Bに対する鍵で生成された要求アドレスを拒否する(ブロック904)。
【0054】
決定ブロック906で、プロセッサ102は、リクエスタに対して新たな鍵生成を使用するか否かを判定する。例えば、幾つかの実施形態又はユースケースにおいて、プロセッサ102は、少なくとも部分的に、リクエスタ(又は、リクエスタが割り当てられているLPAR)に以前に割り当てられたアドレス空間の一部又は全ての再マッピングに基づき、新たな鍵生成を利用することを判定し得る。幾つかの実施形態又はユースケースにおいて、プロセッサ102は、ソフトウェアコマンドに少なくとも部分的に基づき、リクエスタに対する新たな鍵生成を開始することを判定し得る。幾つかの実施形態又はユースケースにおいて、プロセッサ102は、暗号化エンジン204によって採用される暗号化アルゴリズムの属性に少なくとも部分的に基づき、鍵生成の変更の頻度を判定し得る。プロセッサ102がブロック906で肯定的な判定を行わない場合、プロセスは、説明されたブロック904に戻る。しかしながら、プロセッサ102がブロック906で肯定的な判定を行う場合、プロセスは、プロセッサ102のセキュリティロジック202が、新たな現行の鍵生成(例えば、鍵生成B)の間に、リクエスタに対してsRAs520を生成するにあたり使用するための2つの異なる鍵(例えば、Key1B及びKey2B)を生成することを示すブロック908に進む。上記の通り、セキュリティロジック202は、鍵生成ロジック210を用いて鍵を生成し得る。加えて、ブロック908で、セキュリティロジック202は、生成フィールド800をリクエスタに適用可能な現行の鍵生成に関連付けられた値(例えば、鍵生成Bに対するb'1'の値)に設定する。セキュリティロジック202は、追加的に、例えば、生成フィールド804において特定された値によって指定される、以前の鍵生成(例えば、鍵生成A)における全てのsRAについての変換無効化要求をリクエスタに送信する(ブロック910)。変換無効化要求に応答して、悪意がない、又は侵害されていないリクエスタは、以前の鍵生成(例えば、鍵生成A)中に生成されたsRAを参照するそのATC220内の任意のVAからsRAへの変換を無効化することになる。
【0055】
ブロック912~916によって示されている通り、変換無効化要求の発行に続き、且つ要求された無効化の確認応答がリクエスタから受信される(ブロック914)、又はタイムアウト期間が経過する(ブロック916)まで、セキュリティロジック202は、sRAを生成するために現行の鍵生成(例えば、鍵生成B)に対する鍵を排他的に利用するが、要求アドレスを復号するために生成A又は生成Bに対する鍵を利用する。無効化が確認応答される、又はタイムアウト期間が経過するまで、以前の鍵生成(例えば、鍵生成A)における要求アドレスをサポートし続けることにより、セキュリティロジック202は、リクエスタの観点から、鍵生成間のシームレス且つ透過的な移行を確実にする。無効化確認応答のセキュリティロジック202による受信又はタイムアウト期間の経過に応答して、プロセスはブロック904に戻る。結果として、セキュリティロジック202の暗号化エンジン204及び復号エンジン206は、現行の鍵生成に関連付けられた鍵(例えば、鍵生成BのKey1B及びKey2B)のみを利用して、リクエスタに伝送されるsRA520を生成し、リクエスタから受信される要求アドレスを復号する。加えて、セキュリティロジック202は、比較器812が生成フィールド800及び804の内容間の不一致を検出したことに基づき、生成フィールド804内の非現行の鍵生成を特定する任意の入来する要求アドレスを拒否する。この方式で、セキュリティロジック202は、ブロック910で発行された変換無効化要求に応答して、リクエスタによって無効化されるべきであったいかなる古いsRAの再利用をも防止する。ブロック904に続き、図9で提示されたプロセスは、説明されたブロック906及び以降のブロックに続く。少なくとも幾つかの実施形態において、以前の鍵生成に対するsRAの無効化についてのリクエスタによる確認応答を受信することなくタイムアウト期間が経過したとのブロック916での判定に応答して、プロセッサ102は、追加的に、リクエスタをリセットし得る。
【0056】
ここで図10を参照すると、一実施形態による、sRA520の生成において利用され得る、例示的なAESベース暗号化プロセスのデータフロー図が図示されている。具体的には、図示された例は、第1段階のAESベース暗号化ロジック702又は第2段階のAESベース暗号化ロジック708によって実行され得る、修正されたミニAES暗号化プロセスを示す。図10の図示された実施形態において、Key(n)は、図7の排他的論理和705又は707の出力のいずれかである。
【0057】
修正されたミニAES暗号化プロセスの第1ラウンドにおいて、暗号化エンジン204は最初に、例えばXOR演算1002を実行することによって、36ビットの中間RA700又は706を36ビットの修正されたKey(n)と論理的に組み合わせる。その結果得られる36ビットの作業値は次に、行列、例えば、各行列エントリが9つのニブルのうちの1つを保持する3×3の行列内に配置される。行列の内容は次に、置換ステップ1004、行シフトステップ1006、及び列混合ステップ1008を介するものを含む、従来の行列操作の対象となり得る。
【0058】
修正されたミニAES暗号化プロセス1000の第2ラウンドにおいて、暗号化エンジン204は、例えばXOR演算1010を実行することによって、36ビットの作業値を36ビットの修正されたKey(n)と再び論理的に組み合わせる。その結果得られる36ビットの作業値は次に、置換ステップ1012、行シフトステップ1014、及び任意選択的な列混合ステップ1016を含む、別ラウンドの行列操作の対象となる。列混合ステップ1016は、従来のミニAES暗号化プロセスにおいて実行されず、sRAを更に保護する役割を果たすことに留意されたい。示された処理の結果得られる36ビット値は次に、図7において以前に説明された通り、暗号704又は710として利用され得る。
【0059】
説明されてきた通り、少なくとも一実施形態において、データ処理システムは、付属デバイスに対するアドレス変換サービスをサポートしつつ、向上したI/Oセキュリティを提供する。
【0060】
少なくとも一実施形態において、プロセッサは、リクエスタから、仮想アドレスを含む第1要求を受信する。第1要求に基づき、プロセッサは、仮想アドレスに対応する実アドレスを判定し、実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、暗号化セキュア実アドレスをリクエスタに返す。要求アドレスを特定する第2要求を受信することに基づき、プロセッサは、要求アドレスを復号して、要求アドレスを暗号化セキュア実アドレスとして検証する。要求アドレスを暗号化セキュア実アドレスとして検証することに基づき、プロセッサは、実アドレスによって識別されるデータ処理システムのリソースへのアクセスを可能にする。暗号化セキュア実アドレスの使用により、向上したセキュリティが提供され、概して、テーブルベースの実アドレス検証手法に比べて実装のためにより少ないフットプリントを必要とする。
【0061】
幾つかの実施形態において、リクエスタは、入力/出力(I/O)アダプタであり得る。例えば、特定の一実施形態において、アダプタは、周辺構成要素相互接続エクスプレスアドレス変換サービス(PCIe ATS)プロトコルを利用して、要求をプロセッサに通信し得る。他の実施形態において、リクエスタは、仮想アドレス空間を採用するアクセラレータなどの付属デバイスであり得る。
【0062】
幾つかの実施形態において、実アドレスの少なくとも一部は、高度暗号化標準(AES)ベース暗号化を利用して暗号化される。幾つかの実施形態において、実アドレスの少なくとも一部を暗号化することは、代替的又は追加的に、実アドレスの少なくとも一部のハッシュを生成することを含む。AESなどの強力な暗号化技法を利用することは、向上したセキュリティという利点を有し、ハッシュを利用することは、高性能という利点を有する。
【0063】
幾つかの実施形態において、プロセッサは、メモリページ内のアドレスを特定するために利用される実アドレスのより下位のビットを暗号化することを回避する。完全な実アドレス(例えば、64ビット)を暗号化しないことにより、暗号化が簡略化され、性能が向上する。
【0064】
幾つかの実施形態において、暗号化に先立ち、追加データを実アドレスの少なくとも一部と組み合わせることによって、暗号化が更に強化され得る。幾つかの実施形態において、追加データは、リクエスタのプロセスアドレス空間識別子からのビット及び/又はリクエスタ識別子からのビットを含み得る。幾つかの実施形態において、追加データは、代替的又は追加的に、リクエスタによる実アドレスへのアクセスが読み取り専用であるかどうかを示す読み取り専用フィールドを含み得る。幾つかの実施形態において、追加データは、実アドレスを暗号化するために複数の鍵の中からどの鍵が利用されたかを特定する鍵生成フィールドを含み得る。
【0065】
本発明は、システム、方法、及び/又はコンピュータプログラム製品であり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(又は複数のコンピュータ可読ストレージ媒体)を含み得る。
【0066】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用されるための命令を保持及び記憶できる有形のデバイスであり得る。コンピュータ可読ストレージ媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、又は上述したものの任意の好適な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非包括的なリストは、以下:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(Random Access Memory:RAM)、読み取り専用メモリ(Read-Only Memory:ROM)、消去可能プログラマブル読み取り専用メモリ(Erasable Programmable Read-Only Memory:EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)、ポータブルコンパクトディスク読み取り専用メモリ(Compact Disc Read-Only Memory:CD-ROM)、デジタル多用途ディスク(Digital Versatile Disk:DVD)、メモリスティック、フロッピディスク、命令が記録されているパンチカード又は溝内の隆起構造などの機械的にエンコードされたデバイス、及び上述したものの任意の好適な組み合わせを含む。本明細書において使用される場合、コンピュータ可読ストレージ媒体は、電波又は他の自由に伝搬する電磁波、導波路又は他の伝送媒体を通って伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通じて伝送される電気信号などの一時的な信号自体であると解釈されるべきではない。
【0067】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から、それぞれのコンピューティング/処理デバイスに、又は、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又はワイヤレスネットワークを介して、外部コンピュータ又は外部ストレージデバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを備え得る。各コンピューティング/処理デバイスにおけるネットワークアダプタカード又はネットワークインタフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体への記憶のために転送する。
【0068】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(Instruction-Set-Architecture:ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk(登録商標)又はC++などのようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで書き込まれたソースコード又はオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に且つリモートコンピュータ上で部分的に、又は、リモートコンピュータ又はサーバ上で全体的に実行され得る。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、又はこの接続は、(例えば、インターネットサービスプロバイダを用いるインターネットを通じて)外部コンピュータに対して行われ得る。幾つかの実施形態において、本発明の態様を実行するために、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又は、プログラマブルロジックアレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0069】
本発明の態様は、本発明の実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して本明細書で説明されている。フローチャート図及び/又はブロック図の各ブロック、及びフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装され得ることが理解されるであろう。
【0070】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ及び専用コンピュータのプロセッサ、又は他のプログラマブルデータ処理装置に提供されてマシンを生成し得、その結果、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックで特定された機能/動作を実装するための手段を作成する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置及び/又は他のデバイスに特定の様式で機能するように指示し得るコンピュータ可読ストレージ媒体内に記憶され得て、その結果、その中に記憶された命令を有するコンピュータ可読ストレージ媒体は、フローチャート及び/又はブロック図の1つ又は複数のブロックで特定された機能/動作の態様を実装する命令を含む製品を備える。
【0071】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブルデータ処理装置又は他のデバイスにもロードして、一連の動作ステップをコンピュータ、他のプログラマブル装置、又は他のデバイス上で実行させ、コンピュータ実装プロセスを生成してよく、それにより、コンピュータ、他のプログラマブル装置又は他のデバイス上で実行される命令は、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて特定された機能/動作を実装する。
【0072】
図中のフローチャート及びブロック図は、本発明の様々な実施形態によるシステム、方法、及びコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、及び動作を示す。これに関して、フローチャート又はブロック図の各ブロックは、特定された論理機能を実装するための1つ又は複数の実行可能命令を備える命令のモジュール、セグメント、又は部分を表し得る。幾つかの代替的な実装において、ブロックに記されている機能は、図面に記されている順序と異なる順序で行われ得る。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行され得る、又は、ブロックは、関与する機能に応じてブロックが逆の順序で実行され得る。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図におけるブロックの組み合わせは、特定された機能又は動作を実行する、又は専用ハードウェア及びコンピュータ命令の組み合わせを実行する、専用ハードウェアベースのシステムによって実装され得ることにも留意されたい。
【0073】
本発明は、1つ又は複数の好ましい実施形態を参照して説明されるものとして具体的に示されてきたが、添付の特許請求の範囲の趣旨及び範囲から逸脱することなく、形態及び詳細における様々な変更がその中でなされ得ることが、当業者によって理解されるであろう。例えば、特定の長さのアドレス及びアドレスフィールドの例が論述されてきたが、当業者であれば、本明細書で説明される本発明が、例示的なアドレス及びアドレスフィールド長に限定されないことを理解するはずである。加えて、説明された本発明が、仮想化及び非仮想化環境の両方において採用され得ることに留意することが重要である。例えば、様々な実施形態又はユースケースにおいて、リクエスタは、VM、ハイパーバイザ、又はベアメタルOSに割り当てられ得る。更に、特定の機能を指示するデータ処理ハードウェアに関して態様が説明されてきたが、本発明は、そのような機能を実行する、又は、そのような機能を実行させるためにプロセッサによって処理され得るプログラムコードを記憶するストレージデバイスを含むプログラム製品として代替的に実装され得ることを理解されたい。本明細書で採用される場合、「ストレージデバイス」は、法定の製造品のみを含み、信号媒体自体、一時的な伝搬信号自体、及びエネルギー自体を除外するように具体的に定義される。
【0074】
特定の構造及び機能に関する、上記で説明された図及び書面による説明は、出願人が発明した事柄の範囲、又は添付の特許請求の範囲を限定するために提示されたものではない。むしろ、図及び書面による説明は、特許保護が求められる本発明を作成及び使用することについて任意の当業者に教示するために提供される。当業者であれば、明確性及び理解のために、本発明の商業的実施形態の全ての特徴が説明又は示されていないことを理解するであろう。当業者はまた、本発明の態様を組み込んだ実際の商業的実施形態の開発には、当該商業的実施形態についての開発者の最終目標を達成するための、多数の実装固有の決定を必要とすることを理解するであろう。そのような実装固有の決定は、特定の実装によって、ロケーションによって、及び時により異なり得る、システム関連の、ビジネス関連の、政府関連の、及び他の制約への準拠を含み得るが、おそらくこれらに限定されない。開発者の取り組みは、絶対的な意味で複雑且つ時間がかかるものであり得るが、そのような取り組みは、それにもかかわらず、本開示の恩恵を有する当業者にとって日常的な仕事であろう。本明細書において開示及び教示される本発明は、多数の、且つ様々な修正及び代替形態が可能であることが理解される必要がある。最後に、"a"などの、但しこれに限定されない単数形の用語の使用は、アイテムの数を限定することを意図するものではない。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8
図9
図10
【手続補正書】
【提出日】2024-04-12
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
プロセッサを備えるデータ処理システムにおけるデータ処理の方法であって:
前記プロセッサが、リクエスタから、仮想アドレスを含む第1要求を受信する段階;
前記第1要求に基づき、前記プロセッサが、前記仮想アドレスに対応する実アドレスを判定し、前記実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、前記暗号化セキュア実アドレスを前記リクエスタに返す段階;
要求アドレスを特定する第2要求を受信することに基づき、前記プロセッサが、前記要求アドレスを復号して、前記要求アドレスを前記暗号化セキュア実アドレスとして検証する段階;及び
前記要求アドレスを前記暗号化セキュア実アドレスとして検証する段階に基づき、前記プロセッサが、前記実アドレスによって識別される前記データ処理システムのリソースへのアクセスを可能にする段階
を有する、データ処理の方法。
【請求項2】
第1要求を前記受信する段階は、周辺構成要素相互接続エクスプレスアドレス変換サービス(PCIe ATS)プロトコル要求を受信する段階を含む、請求項1に記載のデータ処理の方法。
【請求項3】
前記実アドレスの少なくとも一部を暗号化する段階は、高度暗号化標準(AES)ベース暗号化を利用して前記実アドレスの前記少なくとも一部を暗号化する段階を含む、請求項1に記載のデータ処理の方法。
【請求項4】
前記実アドレスの少なくとも一部を暗号化する段階は、前記実アドレスの前記少なくとも一部のハッシュを生成する段階を含む、請求項1に記載のデータ処理の方法。
【請求項5】
前記実アドレスの少なくとも一部を暗号化する段階は、メモリページ内のアドレスを特定するために利用される前記実アドレスのより下位のビットを暗号化することを回避する段階を含む、請求項1に記載のデータ処理の方法。
【請求項6】
前記暗号化する段階に先立ち、追加データを前記実アドレスの前記少なくとも一部と組み合わせる段階を更に含む、請求項1から5のいずれか一項に記載のデータ処理の方法。
【請求項7】
前記追加データは、以下のセット:前記リクエスタのプロセスアドレス空間識別子からのビット及びリクエスタ識別子からのビット、のうちの少なくとも1つを含む、請求項6に記載のデータ処理の方法。
【請求項8】
前記追加データは、前記リクエスタによる前記実アドレスへのアクセスが読み取り専用であるかどうかを示す読み取り専用フィールドを含む、請求項6に記載のデータ処理の方法。
【請求項9】
前記追加データは、前記実アドレスを暗号化するために複数の鍵の中からどの鍵が利用されたかを特定する鍵生成フィールドを含む、請求項6に記載のデータ処理の方法。
【請求項10】
データ処理システムであって、
リクエスタから、仮想アドレスを含む第1要求を受信する手順;
前記第1要求に基づき、前記仮想アドレスに対応する実アドレスを判定し、前記実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、前記暗号化セキュア実アドレスを前記リクエスタに返す手順;
要求アドレスを特定する第2要求を受信することに基づき、前記要求アドレスを復号して、前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順;及び
前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順に基づき、前記実アドレスによって識別される前記データ処理システムのリソースへのアクセスを可能にする手順
を実行するように構成されたプロセッサ
を備える、データ処理システム。
【請求項11】
第1要求を前記受信する手順は、周辺構成要素相互接続エクスプレスアドレス変換サービス(PCIe ATS)プロトコル要求を受信する手順を含む、請求項10に記載のデータ処理システム。
【請求項12】
前記実アドレスの少なくとも一部を暗号化する手順は、高度暗号化標準(AES)ベース暗号化を利用して前記実アドレスの前記少なくとも一部を暗号化する手順を含む、請求項10に記載のデータ処理システム。
【請求項13】
前記実アドレスの少なくとも一部を暗号化する手順は、前記実アドレスの前記少なくとも一部のハッシュを生成する手順を含む、請求項10に記載のデータ処理システム。
【請求項14】
前記実アドレスの少なくとも一部を暗号化する手順は、メモリページ内のアドレスを特定するために利用される前記実アドレスのより下位のビットを暗号化することを回避する手順を含む、請求項10に記載のデータ処理システム。
【請求項15】
前記プロセッサは:
前記暗号化する手順に先立ち、追加データを前記実アドレスの前記少なくとも一部と組み合わせる手順
を実行するように更に構成されている、請求項10に記載のデータ処理システム。
【請求項16】
前記追加データは、以下のセット:前記リクエスタのプロセスアドレス空間識別子からのビット及びリクエスタ識別子からのビット、のうちの少なくとも1つを含む、請求項15に記載のデータ処理システム。
【請求項17】
前記追加データは、前記リクエスタによる前記実アドレスへのアクセスが読み取り専用であるかどうかを示す読み取り専用フィールドを含む、請求項15に記載のデータ処理システム。
【請求項18】
前記追加データは、前記実アドレスを暗号化するために複数の鍵の中からどの鍵が利用されたかを特定する鍵生成フィールドを含む、請求項15に記載のデータ処理システム。
【請求項19】
前記プロセッサに結合されたシステムメモリ;及び
バスを介して前記プロセッサに結合された前記リクエスタ
を更に備える、請求項10から18のいずれか一項に記載のデータ処理システム。
【請求項20】
ストレージデバイス;及び
前記ストレージデバイス内に記憶されたプログラムコード
を備え、前記プログラムコードは、プロセッサによって実行されると、前記プロセッサに:
リクエスタから、仮想アドレスを含む第1要求を受信する手順;
前記第1要求に基づき、前記仮想アドレスに対応する実アドレスを判定し、前記実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、前記暗号化セキュア実アドレスを前記リクエスタに返す手順;
要求アドレスを特定する第2要求を受信することに基づき、前記要求アドレスを復号して、前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順;及び
前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順に基づき、前記実アドレスによって識別されるデータ処理システムのリソースへのアクセスを可能にする手順
を実行させる、コンピュータプログラム
【請求項21】
第1要求を前記受信する手順は、周辺構成要素相互接続エクスプレスアドレス変換サービス(PCIe ATS)プロトコル要求を受信する手順を含む、請求項20に記載のコンピュータプログラム
【請求項22】
前記実アドレスの少なくとも一部を暗号化する手順は、高度暗号化標準(AES)ベース暗号化を利用して前記実アドレスの前記少なくとも一部を暗号化する手順を含む、請求項20に記載のコンピュータプログラム
【請求項23】
前記実アドレスの少なくとも一部を暗号化する手順は、前記実アドレスの前記少なくとも一部のハッシュを生成する手順を含む、請求項20に記載のコンピュータプログラム
【請求項24】
前記実アドレスの少なくとも一部を暗号化する手順は、メモリページ内のアドレスを特定するために利用される前記実アドレスのより下位のビットを暗号化することを回避する手順を含む、請求項20に記載のコンピュータプログラム
【請求項25】
前記プログラムコードは、実行されると、前記プロセッサに:
前記暗号化する手順に先立ち、追加データを前記実アドレスの前記少なくとも一部と組み合わせる手順
を実行させる、請求項20から24のいずれか一項に記載のコンピュータプログラム
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0074
【補正方法】変更
【補正の内容】
【0074】
特定の構造及び機能に関する、上記で説明された図及び書面による説明は、出願人が発明した事柄の範囲、又は添付の特許請求の範囲を限定するために提示されたものではない。むしろ、図及び書面による説明は、特許保護が求められる本発明を作成及び使用することについて任意の当業者に教示するために提供される。当業者であれば、明確性及び理解のために、本発明の商業的実施形態の全ての特徴が説明又は示されていないことを理解するであろう。当業者はまた、本発明の態様を組み込んだ実際の商業的実施形態の開発には、当該商業的実施形態についての開発者の最終目標を達成するための、多数の実装固有の決定を必要とすることを理解するであろう。そのような実装固有の決定は、特定の実装によって、ロケーションによって、及び時により異なり得る、システム関連の、ビジネス関連の、政府関連の、及び他の制約への準拠を含み得るが、おそらくこれらに限定されない。開発者の取り組みは、絶対的な意味で複雑且つ時間がかかるものであり得るが、そのような取り組みは、それにもかかわらず、本開示の恩恵を有する当業者にとって日常的な仕事であろう。本明細書において開示及び教示される本発明は、多数の、且つ様々な修正及び代替形態が可能であることが理解される必要がある。最後に、"a"などの、但しこれに限定されない単数形の用語の使用は、アイテムの数を限定することを意図するものではない。
(他の可能な項目)
(項目1)
プロセッサを備えるデータ処理システムにおけるデータ処理の方法であって:
前記プロセッサが、リクエスタから、仮想アドレスを含む第1要求を受信する段階;
前記第1要求に基づき、前記プロセッサが、前記仮想アドレスに対応する実アドレスを判定し、前記実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、前記暗号化セキュア実アドレスを前記リクエスタに返す段階;
要求アドレスを特定する第2要求を受信することに基づき、前記プロセッサが、前記要求アドレスを復号して、前記要求アドレスを前記暗号化セキュア実アドレスとして検証する段階;及び
前記要求アドレスを前記暗号化セキュア実アドレスとして検証する段階に基づき、前記プロセッサが、前記実アドレスによって識別される前記データ処理システムのリソースへのアクセスを可能にする段階
を有する、データ処理の方法。
(項目2)
第1要求を前記受信する段階は、周辺構成要素相互接続エクスプレスアドレス変換サービス(PCIe ATS)プロトコル要求を受信する段階を含む、項目1に記載のデータ処理の方法。
(項目3)
前記実アドレスの少なくとも一部を暗号化する段階は、高度暗号化標準(AES)ベース暗号化を利用して前記実アドレスの前記少なくとも一部を暗号化する段階を含む、項目1に記載のデータ処理の方法。
(項目4)
前記実アドレスの少なくとも一部を暗号化する段階は、前記実アドレスの前記少なくとも一部のハッシュを生成する段階を含む、項目1に記載のデータ処理の方法。
(項目5)
前記実アドレスの少なくとも一部を暗号化する段階は、メモリページ内のアドレスを特定するために利用される前記実アドレスのより下位のビットを暗号化することを回避する段階を含む、項目1に記載のデータ処理の方法。
(項目6)
前記暗号化する段階に先立ち、追加データを前記実アドレスの前記少なくとも一部と組み合わせる段階を更に含む、項目1に記載のデータ処理の方法。
(項目7)
前記追加データは、以下のセット:前記リクエスタのプロセスアドレス空間識別子からのビット及びリクエスタ識別子からのビット、のうちの少なくとも1つを含む、項目6に記載のデータ処理の方法。
(項目8)
前記追加データは、前記リクエスタによる前記実アドレスへのアクセスが読み取り専用であるかどうかを示す読み取り専用フィールドを含む、項目6に記載のデータ処理の方法。
(項目9)
前記追加データは、前記実アドレスを暗号化するために複数の鍵の中からどの鍵が利用されたかを特定する鍵生成フィールドを含む、項目6に記載のデータ処理の方法。
(項目10)
データ処理システムであって、
リクエスタから、仮想アドレスを含む第1要求を受信する手順;
前記第1要求に基づき、前記仮想アドレスに対応する実アドレスを判定し、前記実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、前記暗号化セキュア実アドレスを前記リクエスタに返す手順;
要求アドレスを特定する第2要求を受信することに基づき、前記要求アドレスを復号して、前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順;及び
前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順に基づき、前記実アドレスによって識別される前記データ処理システムのリソースへのアクセスを可能にする手順
を実行するように構成されたプロセッサ
を備える、データ処理システム。
(項目11)
第1要求を前記受信する手順は、周辺構成要素相互接続エクスプレスアドレス変換サービス(PCIe ATS)プロトコル要求を受信する手順を含む、項目10に記載のデータ処理システム。
(項目12)
前記実アドレスの少なくとも一部を暗号化する手順は、高度暗号化標準(AES)ベース暗号化を利用して前記実アドレスの前記少なくとも一部を暗号化する手順を含む、項目10に記載のデータ処理システム。
(項目13)
前記実アドレスの少なくとも一部を暗号化する手順は、前記実アドレスの前記少なくとも一部のハッシュを生成する手順を含む、項目10に記載のデータ処理システム。
(項目14)
前記実アドレスの少なくとも一部を暗号化する手順は、メモリページ内のアドレスを特定するために利用される前記実アドレスのより下位のビットを暗号化することを回避する手順を含む、項目10に記載のデータ処理システム。
(項目15)
前記プロセッサは:
前記暗号化する手順に先立ち、追加データを前記実アドレスの前記少なくとも一部と組み合わせる手順
を実行するように更に構成されている、項目10に記載のデータ処理システム。
(項目16)
前記追加データは、以下のセット:前記リクエスタのプロセスアドレス空間識別子からのビット及びリクエスタ識別子からのビット、のうちの少なくとも1つを含む、項目15に記載のデータ処理システム。
(項目17)
前記追加データは、前記リクエスタによる前記実アドレスへのアクセスが読み取り専用であるかどうかを示す読み取り専用フィールドを含む、項目15に記載のデータ処理システム。
(項目18)
前記追加データは、前記実アドレスを暗号化するために複数の鍵の中からどの鍵が利用されたかを特定する鍵生成フィールドを含む、項目15に記載のデータ処理システム。
(項目19)
前記プロセッサに結合されたシステムメモリ;及び
バスを介して前記プロセッサに結合された前記リクエスタ
を更に備える、項目10に記載のデータ処理システム。
(項目20)
ストレージデバイス;及び
前記ストレージデバイス内に記憶されたプログラムコード
を備え、前記プログラムコードは、プロセッサによって実行されると、前記プロセッサに:
リクエスタから、仮想アドレスを含む第1要求を受信する手順;
前記第1要求に基づき、前記仮想アドレスに対応する実アドレスを判定し、前記実アドレスの少なくとも一部を暗号化して暗号化セキュア実アドレスを取得し、前記暗号化セキュア実アドレスを前記リクエスタに返す手順;
要求アドレスを特定する第2要求を受信することに基づき、前記要求アドレスを復号して、前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順;及び
前記要求アドレスを前記暗号化セキュア実アドレスとして検証する手順に基づき、前記実アドレスによって識別されるデータ処理システムのリソースへのアクセスを可能にする手順
を実行させる、プログラム製品。
(項目21)
第1要求を前記受信する手順は、周辺構成要素相互接続エクスプレスアドレス変換サービス(PCIe ATS)プロトコル要求を受信する手順を含む、項目20に記載のプログラム製品。
(項目22)
前記実アドレスの少なくとも一部を暗号化する手順は、高度暗号化標準(AES)ベース暗号化を利用して前記実アドレスの前記少なくとも一部を暗号化する手順を含む、項目20に記載のプログラム製品。
(項目23)
前記実アドレスの少なくとも一部を暗号化する手順は、前記実アドレスの前記少なくとも一部のハッシュを生成する手順を含む、項目20に記載のプログラム製品。
(項目24)
前記実アドレスの少なくとも一部を暗号化する手順は、メモリページ内のアドレスを特定するために利用される前記実アドレスのより下位のビットを暗号化することを回避する手順を含む、項目20に記載のプログラム製品。
(項目25)
前記プログラムコードは、実行されると、前記プロセッサに:
前記暗号化する手順に先立ち、追加データを前記実アドレスの前記少なくとも一部と組み合わせる手順
を実行させる、項目20に記載のプログラム製品。


【国際調査報告】