(57)【要約】プロセッサ（１０２）は、入出力デバイス（１０６）とメモリ（１０４）との間のメモリアクセスパスにおいて、ハードウェア暗号化モジュール（１２０）を使用して、セキュア情報を暗号隔離する。いくつかの実施形態では、暗号化モジュールは、プロセッサのメモリコントローラ（１１６）に配置され、メモリコントローラに提供される各メモリアクセス要求は、メモリアクセス要求の送信元を識別するＶＭタグ値を含む。ＶＭタグ値は、メモリアクセス要求の送信元を識別する要求側ＩＤに基づいて決定される。暗号化モジュールは、ＶＭタグ値に関連する暗号化キーに基づいて、メモリアクセスに関連するデータの暗号化（書き込みアクセスの場合）又は復号化（読み出しアクセスの場合）を実行する。【選択図】図１
2019532438.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ（１０２）の入出力メモリ管理ユニット（ＩＯＭＭＵ）（１２０）において、メモリ（１０４）内のメモリ空間にアクセスするために、メモリアドレス値及び要求側ＩＤを含むメモリアクセス要求を入出力（Ｉ／Ｏ）デバイスから受信することと、
前記ＩＯＭＭＵにおいて、前記要求側ＩＤに関連する識別タグ値を決定することと、
前記識別タグ値に対応するセキュリティキー（１２４）を使用して、前記メモリ空間の前記メモリアドレス値のデータにアクセスすることと、を含む、
方法。
【請求項２】
前記Ｉ／Ｏデバイスから前記メモリアクセス要求を受信することは、前記Ｉ／Ｏデバイスに構成された仮想機能（ＶＦ）（２１８）から前記メモリアクセス要求を受信することを含む、
請求項１の方法。
【請求項３】
識別タグ値を決定することは、デバイステーブル（２３６）を使用して、前記要求側ＩＤに基づいて前記識別タグ値を検索することを含む、
請求項１の方法。
【請求項４】
前記メモリアクセス要求に関連する仮想マシン（ＶＭ）（２０４）を識別することであって、前記セキュリティキーは、識別されたＶＭに対応する、ことを含む、
請求項１の方法。
【請求項５】
前記プロセッサとは別のセキュリティモジュール（１０８）から前記セキュリティキーを受信することを含む、
請求項４の方法。
【請求項６】
前記メモリアクセス要求が非セキュアメモリ空間のメモリアドレス値のデータにアクセスすることであると判別したことに応じて、前記セキュリティキーを使用せずに前記非セキュアメモリ空間のデータにアクセスすることを含む、
請求項１の方法。
【請求項７】
前記メモリアクセス要求がセキュアメモリ空間のメモリアドレス値のデータにアクセスする書き込みアクセス要求であると判別したことに応じて、前記セキュリティキーを使用して、前記セキュアメモリ空間に書き込まれるデータを暗号化することを含む、
請求項１の方法。
【請求項８】
前記メモリアクセス要求がセキュアメモリ空間のメモリアドレス値のデータにアクセスするのを認可された読み出しアクセス要求であると判別したことに応じて、前記セキュリティキーを使用して、前記セキュアメモリ空間から読み出したデータを復号化することを含む、
請求項１の方法。
【請求項９】
前記ＩＯＭＭＵにおいて、メモリマップドＩ／Ｏ（ＭＭＩＯ）レジスタにアクセスする要求を受信したことに応じて、前記識別タグ値に基づいて前記ＭＭＩＯレジスタへのアクセスを許可することを含む、
請求項１の方法。
【請求項１０】
仮想マシンから前記セキュアメモリ空間にコマンドを書き込むことと、
前記コマンドに応じて、前記ＩＯＭＭＵにおいて前記コマンドを実行することと、
前記コマンドを実行したことに応じて、前記ＩＯＭＭＵが、前記メモリ空間の前記コマンドを特定値で上書きすることと、
前記セキュアメモリ空間で前記特定値を読み出したことに応じて、前記仮想マシンが前記ＩＯＭＭＵを認証することと、を含む、
請求項１に記載の方法。
【請求項１１】
メモリコントローラ（１１６）を備えるプロセッサ（１０２）であって、
前記メモリコントローラ（１１６）は、
メモリ（１０４）内のメモリ空間（１３０）にアクセスするためのメモリアクセス要求を入出力（Ｉ／Ｏ）デバイス（１０６）から受信する入出力メモリ管理ユニット（ＩＯＭＭＵ）（１２０）と、
前記メモリアクセス要求に関連する識別タグ値に基づいて、前記メモリ空間内のデータへの暗号アクセスを提供する暗号化モジュール（１２２）と、を備える、
プロセッサ。
【請求項１２】
前記識別タグ値は、前記メモリアクセス要求に含まれる要求側ＩＤに基づいて決定される、
請求項１１のプロセッサ。
【請求項１３】
前記要求側ＩＤに基づいて、前記暗号化モジュールに渡される前記識別タグ値を決定するためのデバイステーブル（２３６）を備える、
請求項１２のプロセッサ。
【請求項１４】
前記要求側ＩＤを前記識別タグ値と対応付けるハイパーバイザ（２０８）を備える、
請求項１２のプロセッサ。
【請求項１５】
プロセッサコア（１１０）と、
入出力メモリ管理ユニット（ＩＯＭＭＵ）（１２０）と、を備えるプロセッサ（１０２）であって、
前記入出力メモリ管理ユニット（ＩＯＭＭＵ）（１２０）は、
仮想マシン（ＶＭ）（２０４）に関連するメモリ（１０４）内のセキュアメモリ空間にアクセスするために、メモリアドレス値及び前記ＶＭを示す要求側ＩＤを含むメモリアクセス要求を入出力（Ｉ／Ｏ）デバイス（１０６）から受信し、
前記要求側ＩＤに関連する識別タグ値を決定し、
前記識別タグ値に対応するセキュリティキーを使用して、前記セキュアメモリ空間の前記メモリアドレス値のデータにアクセスする、
プロセッサ。
【請求項１６】
前記セキュリティキーを記憶する、前記プロセセッサコアとは別のセキュリティモジュール（１０８）を備える、
請求項１５のプロセッサ。
【請求項１７】
前記セキュリティモジュールは、
前記ＶＭからの要求に応じて前記セキュリティキーを生成する、
請求項１６のプロセッサ。
【請求項１８】
前記メモリアクセス要求が前記セキュアメモリ空間の前記メモリアドレス値のデータにアクセスするのを認可された書き込みアクセス要求であると判別したことに応じて、前記セキュリティキーを使用して、前記セキュアメモリ空間に書き込まれるデータを暗号化する暗号化モジュール（１２２）を含むメモリコントローラ（１１６）を備える、
請求項１７のプロセッサ。
【請求項１９】
前記暗号化モジュールは、
前記メモリアクセス要求が前記セキュアメモリ空間の前記メモリアドレス値のデータにアクセスするのを認可された読み出しアクセス要求であると判別したことに応じて、前記セキュリティキーを使用して、前記セキュアメモリ空間から読み出したデータを復号化する、
請求項１８のプロセッサ。
【請求項２０】
前記メモリアクセス要求は、前記Ｉ／Ｏデバイスに構成された仮想機能（ＶＦ）によって要求される、
請求項１５のプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連技術の説明）
多くのプロセッサアプリケーションにおいて、情報セキュリティの保護は重要な機能である。例えば、ＩＡＡＳ（Infrastructure As A Service）環境のサーバにおいてプロセッサを使用することができ、プロセッサは、１つ以上の仮想マシン（ＶＭ）を実行し、ハイパーバイザを実行して、ＶＭ間でサーバハードウェアを区分化し、ＶＭを互いに分離する。異なるカスタマーのために異なるＶＭが実行され得るので、各ＶＭによって使用される情報（命令及びデータ）は、他のＶＭによるアクセスから保護されることが望ましい。従来、ハイパーバイザは、ＶＭ毎に別々のメモリページテーブル及び他の論理エンティティを維持することによって、ＶＭ情報の分離を維持している。しかしながら、ハイパーバイザ内の欠陥（例えば、バグ）によって、悪用に対してハイパーバイザ自体が脆弱になる可能性があり、これにより、或るＶＭが別のＶＭの情報にアクセスすることが可能になる場合がある。パーソナルコンピュータ等のよりプライベートなセキュリティ環境においても、メモリモジュールに記憶されたデータは盗まれやすく、そこに記憶されたデータが不正アクセスにさらされる可能性がある。いくつかのセキュリティ環境では、デバイスからセキュアメモリ空間へのダイレクトアクセスメモリ（ＤＭＡ）は、ＤＭＡ要求のイニシエータを識別することが困難であるため、信頼されていない。例えば、認可されていないエンティティが、認可されていないデバイスを介してＤＭＡを要求することによって、セキュアメモリ空間にアクセスする可能性がある。
【０００２】
添付の図面を参照することによって、本開示をより良く理解することができ、その多数の機能及び利点が当業者に明らかとなるであろう。異なる図面における同じ符号の使用は、類似又は同じアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、情報の安全な隔離のためにメモリコントローラで暗号化モジュールを使用する処理システムのブロック図である。
【図２】いくつかの実施形態による、情報の隔離を提供する図１の処理システムの例示的な実施態様を示すブロック図である。
【図３】いくつかの実施形態による、情報の隔離を提供する図１の処理システムの別の例示的な実施態様を示すブロック図である。
【図４】いくつかの実施形態による、図１〜図３の処理システムでセキュアメモリアクセスを識別するための変換索引バッファ及びページテーブルの使用を示すブロック図である。
【図５】いくつかの実施形態による、暗号保護された情報を保護するために、図１〜図３の処理システムでメモリアクセス要求を処理する方法のフロー図である。
【発明を実施するための形態】
【０００４】
図１〜図５は、プロセッサのメモリアクセスパスにおいてハードウェア暗号化モジュールを使用してセキュア情報を暗号で隔離することによって、処理システムにおいてセキュア情報を保護する技術を示す図である。プロセッサは、入出力デバイスとメモリとの間のメモリアクセスパスにおいてハードウェア暗号化モジュールを使用して、セキュア情報を暗号で隔離する。いくつかの実施形態では、暗号化モジュールは、プロセッサのメモリコントローラに配置されており、プロセッサの入出力メモリ管理ユニット（ＩＯＭＭＵ）に提供される各メモリアクセス要求は、メモリアクセス要求の送信元を識別する要求側ＩＤ値を含む。いくつかの実施形態では、プロセッサは、入出力（ＩＯ）デバイス上で異なる仮想機能（ＶＦ）を実行するために、処理システム内で使用される。例えば、いくつかの実施形態では、暗号化モジュールは、ＩＯデバイス上で実行されているＶＦ毎に一意のキーを記憶する。いくつかのシナリオでは、ＶＦのキーは、処理システムのプロセッサコアとは別のセキュリティモジュールによって生成される場合があるので、ハイパーバイザを含むプロセッサコアで実行されるソフトウェアは、当該キーにアクセスすることができない。ＩＯＭＭＵがＤＭＡ要求を受信したことに応じて、メモリアクセス要求に含まれる要求側ＩＤ値に基づいて要求側ＶＦの送信元が特定される。要求側ＩＤ値は、要求側ＶＦに関連するＶＭ  ＴＡＧ値を、デバイステーブルを用いて検索するために、ＩＯＭＭＵによって使用される。ＶＭ  ＴＡＧ値は、メモリに書き込まれたデータを暗号化し又はメモリから読み出されたデータを復号化するために、ＤＭＡ要求で使用される特定の暗号化キーを識別する。
【０００５】
いくつかの実施形態では、本明細書において説明する技術は、物理的に安全ではない環境で使用される処理システムにおいて実施され、処理システムのメモリは、認可されていない物理的アクセス（例えば、ハードウェアメモリモジュールの盗難、又は、メモリの物理的プローブ等）にさらされる。しかしながら、暗号化モジュールは、セキュアデータを暗号化形式でメモリに記憶するので、セキュアデータは、認可されていない物理的アクセスを受けたとしても、容易に利用することができない。例えば、認可されたＶＦが、別のＶＭ／ＶＦに割り当てられたメモリ位置に記憶されているデータを取得するようにＤＭＡ要求を試みたとしても、データは、誤った暗号化キーを用いてアクセスされ、その結果、誤ったキーが暗号化／復号化に使用される（すなわち、メモリアクセスに応じて、データの正確な平文／クリアテキストが返されない）。
【０００６】
図１は、いくつかの実施形態による、情報の暗号保護を提供する処理システム１００を示す図である。処理システム１００は、プロセッサ１０２と、メモリ１０４と、を含む。処理システム１００は、サーバ、パーソナルコンピュータ、タブレット、セットトップボックス、ゲームシステム等の様々な電子デバイスの何れにも組み込むことができる。プロセッサ１０２は、概して、プロセッサ１０２の回路を操作して定義されたタスクを実行する命令（例えば、コンピュータプログラム）のセットを実行するように構成されている。メモリ１０４は、プロセッサ１０２が使用するデータを記憶することによって、これらのタスクの実行を容易にする。メモリ１０４は、ランダムアクセスメモリ（ＲＡＭ）や、フラッシュメモリ又はハードディスクドライブ（ＨＤＤ）等の不揮発性メモリや、これらの組み合わせとすることができる。また、処理システム１００は、物理入出力（Ｉ／Ｏ）デバイス１０６を含む。物理Ｉ／Ｏデバイス１０６は、例えば、ネットワークインタフェースカード（ＮＩＣ）又はホストバスアダプタ（ＨＢＡ）等とすることができる。
【０００７】
プロセッサ１０２は、セキュリティモジュール１０８を含む。セキュリティモジュール１０８は、汎用プロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、プロセッサコアの動作モード、又は、処理システム１００のセキュリティ動作を実行するように設計され構成された他のモジュールであり、セキュリティ動作には、プロセッサ１０２で実行されるエンティティ（例えば、仮想マシン及びコンピュータプログラム等）の登録、実行されるエンティティのセキュリティキーの生成及び識別、セキュリティ動作のための処理システム１００の認証等が含まれる。いくつかの実施形態では、セキュリティモジュール１０８は、悪用に対して脆弱な状態になる動作を実行することのないように、セキュリティモジュール１０８の動作を実行することが許可される前にセキュア登録プロセスを経てもよく、セキュリティモジュール１０８の動作がセキュリティ動作のみに制限されてもよい。本明細書でさらに説明するように、セキュリティモジュール１０８は、セキュリティキーを生成し、処理システム１００で実行されるように登録されたエンティティを識別し、暗号隔離を可能にする他の動作によって、処理システム１００における情報の暗号隔離をサポートする。
【０００８】
また、プロセッサ１０２は、プロセッサコア１１０，１１２と、キャッシュ１１４と、メモリコントローラ（例えば、ノースブリッジ）１１６と、セキュリティモードレジスタ１１８と、を含む。プロセッサコア１１０，１１２は、命令を個別及び同時に実行する処理ユニットである。いくつかの実施形態では、プロセッサコア１１０，１１２の各々は、命令をフェッチし、フェッチした命令を対応する動作に復号化し、処理システム１００のリソースを使用して様々な動作を実行する個別の命令パイプラインを含む。さらに、プロセッサ１０２は、デバイス（図１に示すＩ／Ｏデバイス１０６等）をメモリコントローラ１１６に接続するために使用される入出力メモリ管理ユニット（ＩＯＭＭＵ）１２０を含む。
【０００９】
いくつかの実施形態では、処理システム１００は、メモリ１０４に記憶されている情報の場所又は情報の種類（例えば、命令若しくはデータ）に対応するメモリアドレスと共に含まれる制御ビットに基づいて情報のセキュリティ指定（情報を暗号保護するかどうか）が割り当てられる、セキュリティスキームを実施する。これにより、大量のデータをセキュア情報として簡単に分類し、効率的な情報保護を提供することが可能になる。例えば、いくつかの実施形態では、制御ビットは、特定の種類の情報（例えば、命令情報、又は、仮想アドレスからメモリ１０４の物理アドレスへのマッピングを提供するページテーブル情報等）がセキュア情報として指定されるように、処理システム１００によって設定される。これにより、この情報が暗号保護される。データに割り当てられたアドレスの制御ビットは、例えば、プロセッサ１０２で実行されるプログラムによって要求された指定に基づいて、よりきめ細かい方法で指定することができる。このセキュリティスキームは、より一般的なデータに柔軟性を提供しながら、重要なデータの保護を提供する（例えば、仮想マシン又はそのプログラムの不正な実行を抑制する）。
【００１０】
いくつかの実施形態では、情報に割り当てられたセキュリティの種類は、情報に対応するメモリアドレスに基づいて指定されるので、処理システム１００は、ページテーブル自体を使用して、各メモリアドレスのセキュリティの種類を示す。したがって、後述するように、ＩＯＭＭＵ１２０は、メモリアクセス要求に対応するメモリアドレスを識別する過程において、メモリアクセス要求の種類を識別する。具体的には、メモリアドレスがセキュア情報を記憶するものと示されている場合、対応するメモリアクセスは、セキュアメモリアクセスとして識別される。同様に、メモリアドレスが非セキュア情報を記憶しているものと示されている場合、対応するメモリアクセスは、非セキュアメモリアクセスとして識別される。
【００１１】
メモリコントローラ１１６は、Ｉ／Ｏデバイス１０６がメモリ１０４と通信するためのインタフェースを提供する。ＩＯＭＭＵ１２０は、Ｉ／Ｏデバイス１０６からメモリアクセス要求（例えば、ダイレクトメモリアクセス要求）を受信し、メモリコントローラ１１６を介したメモリ１０４へのこれらの要求の提供を制御する。また、メモリコントローラ１１６は、メモリアクセス要求に対する応答をメモリ１０４から受信し、Ｉ／Ｏデバイス１０６への応答の提供を制御する。
【００１２】
情報の暗号隔離を提供するために、メモリコントローラ１１６は、特定の暗号標準に従って、キー１２４に基づいて、情報を暗号化及び復号化するように構成された暗号化モジュール１２２を含む。いくつかの実施形態では、暗号化モジュール１２２は、高度暗号化規格（ＡＥＳ）暗号化及び復号化を使用するように構成されているが、他の実施形態では、暗号化モジュール１２２は、他の暗号化／復号化技術を使用し得る。
【００１３】
メモリコントローラ１１６は、各メモリアクセス要求を、２つの種類（すなわち、メモリアクセス要求に対応する情報が暗号保護指定されていることを示すセキュアメモリアクセス要求、又は、メモリアクセス要求に対応する情報が暗号保護指定されていないことを示す非セキュアメモリアクセス要求）うち１つの種類として識別するように構成されている。メモリコントローラ１１６は、書き込み要求の受信に応じて、当該要求がセキュアメモリアクセス要求であるか、非セキュアメモリアクセス要求であるかを識別する。書き込み要求が非セキュアメモリアクセス要求である場合、メモリコントローラ１１６は、暗号化モジュール１２２をバイパスして、書き込まれる情報を暗号化せずに書き込み要求をメモリ１０４に提供する。書き込み要求がセキュアメモリアクセス要求である場合、メモリコントローラ１１６は、メモリアクセス要求を生成したＩ／Ｏデバイス１０６に割り当てられたキー１２４のうち１つのキーを識別する。いくつかの実施形態では、メモリコントローラ１１６は、本明細書でさらに説明するように、Ｉ／Ｏデバイス１０６に割り当てられた識別タグ値（すなわち、ＶＭ  ＴＡＧ）に基づいて、キーを識別し選択する。暗号化モジュール１２２は、選択されたキーを使用して、書き込まれる情報を暗号化し、暗号化された情報と共に書き込み要求を、記憶のためにメモリ１０４に提供する。いくつかの実施形態では、暗号化モジュール１２２は、対応する情報の暗号化及び復号化のために、選択されたキー及びメモリアクセス要求の物理アドレスの両方を使用し、これにより、ブロック移動攻撃を防ぐ。いくつかの実施形態では、暗号化モジュール１２２は、プロセッサ１０２における制御ビット（図示省略）の状態に基づいて、暗号化及び復号化のために物理アドレスを使用するか否かを識別する。制御ビット状態は、セキュリティモジュール１０８によって設定することができる。
【００１４】
メモリコントローラ１１６は、読み出し要求を受信したことに応じて、要求をメモリ１０４に提供し、次いで、当該要求に応じた情報を受信する。メモリコントローラ１１６が読み出し要求を非セキュアメモリアクセス要求として識別した場合、メモリコントローラ１１６は、暗号化モジュール１２２をバイパスし、読み出し情報を、暗号化することなくＩ／Ｏデバイス１０６に提供する。メモリコントローラ１１６が読み出し要求をセキュアメモリアクセス要求として識別した場合、メモリコントローラ１１６は、読み出しアクセス要求を生成したＩ／Ｏデバイス１０６に割り当てられたキー１２４のうち１つのキーを識別し、暗号化モジュール１２２は、読み出し情報を復号化する。次に、メモリコントローラ１１６は、復号化された読み出し情報をＩ／Ｏデバイス１０６に提供する。
【００１５】
いくつかの実施形態では、暗号化モジュール１２２の動作を制御するために、セキュリティモードレジスタ１１８が使用される。セキュリティモードレジスタ１１８は、ガードモードオンフィールド１２６と、ガードモードアクティブフィールド１２８と、を含む。ガードモードオンフィールド１２６が特定の状態（例えば、ネゲート状態）であることに応じて、メモリコントローラ１１６は、セキュアメモリアクセス要求を含む全てのメモリアクセス要求について暗号化モジュール１２２をバイパスする。これにより、処理システム１００は、プロセッサ１０２及びＩ／Ｏデバイス１０６で実行されている全てのプログラムについて暗号化及び復号化がバイパスされるモードで動作することが可能になる。
【００１６】
ガードモードオンフィールド１２６が異なる特定の状態（例えば、アサート状態）であることに応じて、メモリコントローラ１１６は、ガードモードアクティブフィールド１２８の状態を識別する。ガードモードアクティブフィールド１２８が特定の状態（例えば、ネゲート状態）であることに応じて、メモリコントローラ１１６は、受信したメモリアクセス要求（セキュアメモリアクセス要求を含む）について暗号化モジュール１２２をバイパスし、ガードモードアクティブフィールド１２８が異なる状態（例えば、アサート状態）であることに応じて、非セキュアメモリアクセス要求についてのみ暗号化モジュール１２２をバイパスする。いくつかの実施形態では、ガードモードオンフィールド１２６は、プロセッサ１０２における複数の個々のプログラム又はエンティティ（例えば、ＶＭ）の実行を管理するエンティティ（例えば、ハイパーバイザ）によって設定され、個々のプログラム又はエンティティ毎に個別に設定される。したがって、セキュリティモードレジスタ１１８によって、暗号化モジュール１２２の使用を異なる粒度レベルで制御することが可能になる。
【００１７】
いくつかの実施形態では、Ｉ／Ｏデバイス１０６は、ＩＯＭＭＵ１２０に送信された仮想アドレスを含むメモリアクセス要求を開始することによって、メモリコントローラ１１６を使用して、ダイレクトアクセスメモリ（ＤＭＡ）要求を介してメモリ１０４内のセキュア情報１３０にアクセスすることができる。ＩＯＭＭＵ１２０は、Ｉ／Ｏデバイス１０６によって使用されるデバイス仮想アドレスと、メモリ１０４内の物理アドレスと、の間でアドレス変換を実行することができる。例えば、Ｉ／Ｏデバイス１０６は、メモリ１０４にデータを記憶する書き込み要求と、メモリ１０４からデータを取得する読み出し要求と、を含むメモリアクセス要求を生成する。各メモリアクセス要求は、メモリアクセス要求が対象とするメモリ１０４内の位置を示すメモリアドレスを含む。メモリ１０４は、読み出し要求に応じて、読み出し要求のメモリアドレスに対応する位置に記憶されている情報（データ又は命令）を取得し、当該情報をＩ／Ｏデバイス１０６に提供する。メモリ１０４は、書き込み要求に応じて、書き込み要求のメモリアドレスに対応する位置に、要求の書き込み情報を記憶する。
【００１８】
さらに、暗号化モジュール１２２は、メモリアクセス要求に関連するデータの暗号化（書き込みアクセスの場合）又は復号化（読み出しアクセスの場合）を実行する。セキュアメモリアクセスの場合、暗号化モジュール１２２は、メモリアクセスに関連するデータの暗号化（書き込みアクセスの場合）又は復号化（読み出しアクセスの場合）を実行する。後述するように、プロセッサのメモリアクセスパス内のハードウェアによって暗号化が行われるので、メモリ１０４に記憶されたデータは、正しい暗号化／復号化キーなしに有意義にアクセスすることができない。
【００１９】
図２は、いくつかの実施形態による、図１の処理システム１００の例示的な動作を示す図である。プロセッサ２０２は、２つの仮想マシン（ＶＭ）、すなわちＶＭ−Ａ２０４及びＶＭ−Ｂ２０６を同時に実行するように構成されている。また、プロセッサ２０２は、ハイパーバイザ２０８を実行して、ＶＭ２０４，２０６と処理システムのハードウェアとの間のインタフェースを提供する。動作中、ＶＭ２０４，２０６の各々は、プロセッサ２０２で実行されるのが許可される前に、セキュリティモジュール２１０に登録される。いくつかの実施形態では、ＶＭ所有者がセキュリティモジュール２１０とのセキュア通信チャネル２１２を確立したものとして、ＶＭが登録される。「ＶＭ  ＴＡＧ」で示す識別タグ値と、「ＶＭ  ＫＥＹ」で示すセキュリティキーとが、ＶＭに対して生成される。この生成は、セキュリティモジュール２１０又は別のセキュリティデバイスで行われ、セキュア通信チャネル２１２を介してセキュリティモジュール２１０に通信されてもよい。いくつかの実施形態では、各ＶＭのＶＭ  ＴＡＧ値は、ハイパーバイザ２０８によって最初に書き込まれ、セキュリティモジュール２１０に提供されて暗号化される。セキュリティモジュール２１０は、ＶＭ  ＫＥＹ及びＶＭ  ＴＡＧ値の各々が、対応するＶＭに一意であることを保証する。ＶＭ所有者は、対応するＶＭのイメージを暗号化してハイパーバイザ２０８に提供し、ハイパーバイザ２０８は、暗号化されたイメージをセキュアデータとしてメモリ２１４（例えば、セキュア情報空間２３２，２３４）に記憶する。
【００２０】
ハイパーバイザ２０８は、各ＶＭを、当該ＶＭの対応する暗号化アドレス空間に割り当てる。セキュア情報２３２は、ＶＭ−Ａ２０４のＶＭイメージを含み、セキュア情報２３４は、ＶＭ−Ｂ２０６のＶＭイメージを含む。メモリ２１４は、プロセッサ２０２が使用するデータを記憶する。メモリ２１４は、ランダムアクセスメモリ（ＲＡＭ）や、フラッシュメモリ又はハードディスクドライブ（ＨＤＤ）等の不揮発性メモリや、これらの組み合わせとすることができる。
【００２１】
また、処理システムは、物理入出力（Ｉ／Ｏ）デバイス２１６を含む。物理Ｉ／Ｏデバイス２１６は、例えば、ネットワークインタフェースカード（ＮＩＣ）又はホストバスアダプタ（ＨＢＡ）等とすることができる。Ｉ／Ｏデバイス２１６は、デバイス上に構成された複数の仮想機能（ＶＦ）を含むことができる。例えば、Ｉ／Ｏデバイス２１６は、デバイス上に構成された２つのＶＦ、すなわちＶＦ−Ａ２１８及びＶＦ−Ｂ２２０を含む。ハイパーバイザ２０８は、ＶＦ２１８，２２０を、ＶＭ２０４，２０６にマッピングする（例えば、割り当てる）。例えば、ＶＦ−Ａ２１８は、ＶＭ−Ａ２０４にマッピングされ、ＶＦ−Ｂ２２０は、ＶＭ−Ｂ２０６にマッピングされる。さらに、セキュリティモジュール２１０は、各ＶＦに一意の識別タグ値（例えば、ＶＭ  ＴＡＧ）を割り当てることによって、ＶＭをＩ／ＯデバイスのＶＦに対応付ける。この構成によって、ＩＯＭＭＵ２２４を介したＶＭからＩ／Ｏデバイス２１６のレジスタへのパスが提供され、認可されたＶＭのみが対応するＶＦのレジスタに到達することができることを保証する。例えば、メモリ２１４内に存在するデバイステーブル２３６において、ＶＭ−Ａ  ＴＡＧは、ＶＦ−Ａ２１８に対応付けられており、ＶＭ−Ｂ  ＴＡＧは、ＶＦ−Ｂ２２０に対応付けられている。
【００２２】
デバイス（Ｉ／Ｏデバイス２１６等）をメモリコントローラ２２２に接続するために、ＩＯＭＭＵ２２４が使用される。ＩＯＭＭＵ２２４は、Ｉ／Ｏデバイス２１６がメモリ２１４と通信するためのインタフェースを提供する。メモリコントローラ２２２は、ＩＯＭＭＵ２２４を介してＩ／Ｏデバイス２１６からメモリアクセス要求（例えば、ダイレクトメモリアクセス要求）を受信し、これらの要求のメモリ２１４への提供を制御する。また、メモリコントローラ２２２は、メモリ２１４からのメモリアクセス要求への応答を受信し、Ｉ／Ｏデバイス２１６への応答の提供を制御する。
【００２３】
メモリコントローラ２２２は、情報の暗号隔離を提供するために、特定の暗号標準に従って、キー２２８，２３０に基づいて、情報を暗号化及び復号化するように構成された暗号化モジュール２２６を含む。いくつかの実施形態では、暗号化モジュール２２６は、高度暗号化標準（ＡＥＳ）暗号化及び復号化を使用するように構成されているが、他の実施形態では、暗号化モジュール２２６は、他の暗号化／復号化技術を使用することができる。従来、ハイパーバイザ２０８は、プロセッサ２０２と直接対話し、これにより、ＶＭ２０４，２０６に関連する全てのセキュリティキーにアクセスすることができる。これにより、悪意又は欠陥のあるハイパーバイザが、ＶＭのセキュア情報へのアクセスを、認可されていない者に提供することが可能になる。例えば、悪意のあるハイパーバイザ又はＶＭ−Ａが、ＶＭ−Ｂに割り当てられたデバイスＶＦ−Ｂと通信して、特定の悪意のあるＤＭＡ動作をＶＭ−Ｂのメモリ内に実行するのを抑制することが望ましい。同様に、悪意のあるＶＦは、認可されていない他のＶＭ／ＶＦによって使用される情報にアクセスするために、ＤＭＡの実行を試みる場合がある。これに対し、本明細書でさらに説明するように、図２の例では、セキュリティキーへのアクセスは、セキュリティモジュール２１０によって管理され、認可された情報へのＶＦアクセスのみが許可される。
【００２４】
セキュリティモジュール２１０は、セキュリティキーを生成し、処理システムで実行されるために登録されたエンティティを識別し、暗号隔離を可能にする他の動作によって、情報の暗号隔離をサポートする。セキュリティキーの生成は、セキュリティモジュール２１０又は別のセキュリティデバイスにおいて行われ、セキュア通信チャネル２１２を介してセキュリティモジュール２１０に通信され得る。セキュリティモジュール２１０は、ＶＭ  ＫＥＹ及びＶＭ  ＴＡＧ値の各々が、対応するＶＭに一意であることを保証する。本明細書で使用される「セキュリティキー」という用語は、認証又は暗号化キー、及び、キーに署名する任意の証明書又は証明書チェーンを指す。セキュリティモジュール２１０は、ＶＭ−Ａ２０４及びＶＭ−Ｂ２０６の各々に関連する２つの異なるセキュリティキー、すなわちＫＥＹ−Ａ２２８及びＫＥＹ−Ｂ２３０を生成して保持する。セキュリティモジュール２１０は、ハイパーバイザ２０８がセキュリティキーにアクセスできないように、セキュリティキー２２８，２３０をメモリコントローラ２２２に直接提供する。いくつかの実施形態では、セキュリティモジュール２１０は、キーをメモリコントローラ２２２のレジスタに直接書き込むことによって、キーを提供する。これらのレジスタは、プロセッサ２０２で実行されるハイパーバイザ２０８又は他のエンティティにアクセスできず（例えば、アドレス指定できない）、したがって、悪意のあるエンティティがセキュリティキー２２８，２３０にアクセスし、次にセキュア情報アドレス空間２３２，２３４にアクセスするのを抑制する。
【００２５】
図３は、いくつかの実施形態による、例示的なダイレクトメモリアクセス動作を実行する図１及び図２の処理システムの一部を示す図である。図示した例では、プロセッサ３０２は、２つの仮想マシン（ＶＭ）、すなわちＶＭ−Ａ３０４及びＶＭ−Ｂ３０６を同時に実行するように構成されている。また、プロセッサ３０２は、ハイパーバイザ３０８を実行して、ＶＭ３０４，３０６と処理システムのハードウェアとの間のインタフェースを提供する。動作中、ＶＭ３０４，３０６の各々は、プロセッサ３０２で実行されるのを許可される前に、セキュリティモジュール３１０に登録される。ハイパーバイザ３０８は、各ＶＭを、メモリ３１２内のＶＭに対応する暗号化アドレス空間に割り当てる。メモリ３１２は、プロセッサ３０２が使用するデータを記憶する。メモリ３１２は、ランダムアクセスメモリ（ＲＡＭ）や、フラッシュメモリ、ハードディスクドライブ（ＨＤＤ）等の不揮発性メモリや、これらの組み合わせとすることができる。セキュア情報空間３１４は、ＶＭ−Ａ３０４に対応付けられており、セキュア情報空間３１６は、ＶＭ−Ｂ３０６に対応付けられている。
【００２６】
また、処理システムは、物理入出力（Ｉ／Ｏ）デバイス３１８と、メモリコントローラ３２０と、入出力メモリ管理ユニット（ＩＯＭＭＵ）３２２と、を含む。物理Ｉ／Ｏデバイス３１８は、例えば、ネットワークインタフェースカード（ＮＩＣ）又はホストバスアダプタ（ＨＢＡ）等とすることができる。Ｉ／Ｏデバイス３１８は、デバイス上に構成された複数の仮想機能（ＶＦ）を含むことができる。Ｉ／Ｏデバイス３１８は、デバイス上に構成された２つのＶＦ、すなわちＶＦ−Ａ３２４及びＶＦ−Ｂ３２６を含む。ハイパーバイザ３０８は、ＶＦ３２４，３２６を、ＶＭ３０４，３０６にマッピングする（例えば、割り当てる）。例えば、ＶＦ−Ａ３２４は、ＶＭ−Ａ３０４にマッピングされ、ＶＦ−Ｂ３２６は、ＶＭ−Ｂ３０６にマッピングされる。
【００２７】
図２を参照して上述したように、セキュリティモジュール３１０は、各ＶＦに一意の識別タグ値（例えば、ＶＭ  ＴＡＧ）を割り当てることによって、ＶＭをＩ／ＯデバイスのＶＦに対応付ける。プロセッサ３０２がＶＭ−Ａを実行する場合、ＶＭ−ＡがＶＭ−Ａ  ＴＡＧ（すなわち、識別タグ値）と共にロードされ、このタグは、メモリにアクセスするときに使用される。例えば、ＶＭ−Ａ  ＴＡＧは、セキュリティモジュール３１０によってＶＦ−Ａ３２４に割り当てられ、ＶＭ−Ｂ  ＴＡＧは、ＶＦ−Ｂ３２６に割り当てられる。また、セキュリティモジュール３１０は、セキュリティキー３２８，３３０を生成して、メモリコントローラ３２０に提供する。図３の例では、セキュリティモジュール３１０は、ＶＭ−Ａ３０４及びＶＭ−Ｂ３０６の各々に関連する２つの異なるセキュリティキー、すなわちＫＥＹ−Ａ３２８及びＫＥＹ−Ｂ３３０を生成して保持する。セキュリティモジュール３１０は、ハイパーバイザ３０８がセキュリティキーにアクセスできないように、セキュリティキー３２８，３３０をメモリコントローラ３２０に直接提供する。
【００２８】
これと同じタグが、Ｉ／Ｏデバイス３１８内のメモリマップドＩ／Ｏ（ＭＭＩＯ）レジスタにアクセスするときに提供される。ＩＯＭＭＵ３２２は、保護テーブルを用いて、ＶＭ−Ａタグを有するＭＭＩＯ要求が、要求されたＭＭＩＯアドレスにアクセスすることを許可されているかどうかを識別するように構成されている。いくつかの実施形態では、ＩＯＭＭＵは、ＶＭアクセシビリティと共にＭＭＩＯアパーチャ（例えば、ＭＭＩＯレジスタに関連するメモリ物理アドレス空間の一部）を含むルックアップテーブル（図示省略）を含む。ルックアップテーブルは、ＭＭＩＯトラフィック（例えば、ＶＭからＩ／Ｏデバイス３１８のＭＭＩＯへの読み書き）をチェックするために使用され、ＶＭ  ＴＡＧを、許容可能なダウンストリームのＭＭＩＯアドレス範囲に対応付ける。ＶＭ  ＴＡＧは、ＶＭからＩ／Ｏデバイス３１８へのトラフィックを認可するためのＭＭＩＯアクセス要求に含まれる。ＶＭによって提供された値とＶＦに割り当てられた値との間でＶＭ  ＴＡＧ値の不一致がある場合、Ｉ／Ｏデバイス３１８のＭＭＩＯへのアクセスが抑制される。このＭＭＩＯ隔離によって、悪意のあるハイパーバイザが、ＶＭにアクセスできるＶＦを制御するのを抑制することができる。
【００２９】
いくつかの実施形態では、このダウンストリームのＭＭＩＯアクセスの認可は、ＩＯＭＭＵ３２２によって実行されるが、代替としてＩＯＭＭＵ３２２とは別のモジュールで実行することもできる。この構成により、ＶＭからＩ／Ｏデバイス３１８のレジスタへのパスが提供され、セキュリティモジュール３１０によって認可されたＶＭのみが、関連するＶＦのレジスタに到達できることが保証される。本明細書で使用される「ダウンストリーム」という用語は、ＩＯＭＭＵ３２２を介したＶＭからＩ／Ｏデバイス３１８への読み出し又は書き込みを含むＭＭＩＯトラフィックを指す。「アップストリーム」という用語は、ＩＯＭＭＵ３２２を介したＶＦ３２４，３２６又はＩ／Ｏデバイス３１８からメモリ３１２への読み出し又は書き込みを含むダイレクトメモリアクセス（ＤＭＡ）トラフィックを指す。
【００３０】
デバイス（Ｉ／Ｏデバイス３１８等）をメモリコントローラ３２０に接続するために、ＩＯＭＭＵ３２２が使用される。メモリコントローラ３２０は、Ｉ／Ｏデバイス３１８がメモリ３１２と通信するためのインタフェースを提供する。いくつかの例では、メモリコントローラ３２０は、ＩＯＭＭＵ３２２を介してＩ／Ｏデバイス３１８からメモリアクセス要求（例えば、ダイレクトメモリアクセス要求）を受信し、これらの要求のメモリ３１２への提供を制御する。別の例では、メモリコントローラ３２０は、メモリアクセス要求に対する応答をメモリ３１２から受信し、Ｉ／Ｏデバイス３１８への応答の提供を制御する。
【００３１】
Ｉ／Ｏデバイス３１８のＶＦ３２４，３２６は、メモリアクセス要求を開始することによって、ダイレクトアクセスメモリ（ＤＭＡ）要求を介して、メモリコントローラ３２０を使用し、メモリ３１２内のセキュア情報３１４，３１６にアクセスすることができる。例えば、これらの実行の過程において、ＶＦ３２４，３２６は、セキュア情報３１４，３１６にアクセスする（記憶及び取得する）。暗号化モジュール３３２は、セキュア情報３１４，３１６が暗号隔離されていることを保証し、これにより、そこに記憶されているデータは、各々のＶＭ／ＶＦに割り当てられたセキュリティキーを使用してのみ暗号化／復号化することができる。
【００３２】
いくつかの実施形態では、ＶＦ３２４，３２６は、メモリ要求の対象となる仮想アドレスと、ＶＦ毎に一意の要求側ＩＤと、を含むメモリアクセス要求を、ＩＯＭＭＵ３２２に提供する。例えば、ＶＦ−Ａ３２４は、そのメモリアクセス要求と共に「ＲＥＱＵＥＳＴ  ＩＤ−Ａ」という要求側ＩＤを送信し、ＶＦ−Ｂは、そのメモリアクセス要求と共に「ＲＥＱＵＥＳＴ  ＩＤ−Ｂ」という要求側ＩＤを送信する。要求側ＩＤは、Ｉ／Ｏデバイスハードウェア（例えば、デバイス番号及び仮想機能番号）、及び／又は、システムバイオスファームウェア若しくはハイパーバイザ３０８（例えば、バス番号）によって部分的に制御することができる。ＩＯＭＭＵ３２２は、メモリ３１２に記憶された、要求側ＩＤに対するＶＭ  ＴＡＧのマッピングを含むデバイステーブル３４０を使用して、受信した要求側ＩＤに関連するＶＭ  ＴＡＧを検索することによって、ＤＭＡ動作の要求側ＩＤに基づいてＶＭ  ＴＡＧ値を決定する。
【００３３】
いくつかのシナリオでは、悪意のあるエンティティは、（例えば、ソフトウェアエミュレーションを介して）ＩＯＭＭＵ３２２をエミュレートすることによって、ＶＭのセキュア情報にアクセスしようと試みる場合がある。これらのシナリオに対処するために、いくつかの実施形態では、ＩＯＭＭＵ３２２及びＶＭ３０４，３０６は、ＩＯＭＭＵ３２２がエミュレートされていないことを保証するインテグリティチェック手順を実行することができる。具体的には、ＩＯＭＭＵ３２２のインテグリティ（完全性）をチェックするために、ＶＭ３０４，３０６は、指定されたコマンドを、メモリ３１２の対応するセキュア情報空間に書き込むことができる。例えば、いくつかの実施形態では、各々のＶＭがページテーブルを変更する場合、ＶＭ３０４，３０６は、ＩＯＭＭＵ  ＴＬＢ無効化コマンドを、対応するセキュア情報空間の特定位置に書き込む。ＩＯＭＭＵ３２２は、セキュア情報空間からコマンドを読み出し、当該コマンドを実行し（例えば、そのＴＬＢ３３６内の古いアドレス変換のキャッシュされたコピーを無効にすることによって）、コマンドの完了時に、対応するセキュア情報空間の特定位置に特定値を書き込む（すなわち、特定位置に記憶されているコマンドに上書きする）。ＩＯＭＭＵは、メモリコントローラ３２０を介してメモリ３１２に特定値を書き込むので、特定値は、コマンドを発行したＶＭに対応する暗号化キーを使用して書き込まれる。コマンドを発行したＶＭは、特定位置の特定値を定期的にチェックする。特定位置に誤った値が書き込まれているとＶＭが識別した場合、又は、特定位置のコマンドが特定の時間内に上書きされなかった場合、ＶＭは、ページテーブルコマンドが発行されたエンティティが認可されていないと判別し、次いで、是正措置を講じ得る。プロセッサ３０２は、セキュア情報空間を使用してインテグリティチェックを実行することによって、不正なエンティティがＩＯＭＭＵ３２２をエミュレートしてセキュア情報空間にアクセスすることができないことを保証する。具体的には、不正なエンティティは、特定値を正しく暗号化することができないので（正しい暗号化キーを認識していないため）、特定値をメモリ３１２に書き込むことができない。
【００３４】
いくつかの実施形態では、ＩＯＭＭＵ３２２は、要求の仮想メモリアドレスに含まれる１つ以上のビットに基づいて、メモリアクセス要求がセキュアメモリアクセス要求であるか否かを識別する。例えば、図４及び図５においてさらに説明するように、仮想アドレスは、アクセス要求がセキュアであるか、非セキュアであるかを示すＣ−ビットを含む。要求が非セキュアである場合、ＩＯＭＭＵ３２２は、暗号化モジュール３３２をバイパスして、暗号化又は復号化なしにメモリアクセス要求を満たす。
【００３５】
要求がセキュアメモリアクセス要求である場合（例えば、アサートされているＣ−ビットに基づいて）、ＩＯＭＭＵ３２２は、デバイステーブル３４０を用いて、ＤＭＡを要求しているＶＦ（例えば、メモリアクセス要求を生成したＶＦ３２４，３２６のうち１つ）によって提供された要求側ＩＤ（例えば、ＲＥＱＵＥＳＴ  ＩＤ−Ａ又はＩＤ−Ｂ）に基づいて、ＶＭ  ＴＡＧを検索する。識別されたＶＭ  ＴＡＧは、メモリコントローラ３２０の暗号化モジュール３３２に提供され、暗号化モジュール３３２は、ＤＭＡ要求と共に使用される暗号化キーを識別する（すなわち、メモリ読み出しは、関連するキーを使用して、メモリ３１２からのデータを復号化し、メモリ書き込みは、関連するキーを使用して、メモリ３１２に送られるデータを暗号化する）。したがって、暗号化モジュール３３２は、ＩＯＭＭＵから出力されたＶＭ  ＴＡＧに対応するセキュリティキー３２８，３３０のうち１つのキーを選択し、選択したキーを使用して、メモリアクセス情報（読み出しデータ又は書き込みデータ）に対して暗号化（書き込み要求の場合）又は復号化（読み出し要求の場合）を実行する。
【００３６】
また、ＩＯＭＭＵ３２２は、Ｉ／Ｏデバイス３１８に関連するページテーブル情報（ページテーブル３３８内）を検索して、アドレス変換に使用する。ＩＯＭＭＵ３２２は、Ｉ／Ｏデバイス３１８によって使用されるデバイス仮想アドレスと、メモリ３１２内の物理アドレスと、の間でアドレス変換を実行するためのアドレス変換モジュール３３４及び変換索引バッファ（ＴＬＢ）３３６を含む。ＩＯＭＭＵ３２２は、ＴＬＢ３３６とメモリ３１２内のページテーブル３３８とを利用して、メモリアクセス要求の対象となるメモリの特定のページの物理アドレスを取得する。ページテーブル３３８は、仮想アドレスを物理アドレスにマッピングする。メモリコントローラ３２０は、メモリのページにアクセスするために、物理アドレスを使用する。いくつかの実施形態では、ＩＯＭＭＵアドレス変換後に導出される物理アドレスの上位ビットは、暗号化モジュール３３２への転送のためにＶＭ  ＴＡＧを符号化するために、再利用することができる。他の実施形態では、ＶＭ  ＴＡＧは、物理アドレスとは別に送信されてもよい。
【００３７】
ＩＯＭＭＵ３２２は、要求側ＩＤに基づいてＶＭ  ＴＡＧを検索し、ＤＭＡ要求の対象となる物理アドレスをメモリコントローラ３２０に転送する。いくつかの実施形態では、ＩＯＭＭＵアドレス変換後に導出される物理アドレスの上位ビットは、暗号化モジュール３３２への転送のためにＶＭ  ＴＡＧを符号化するために、再利用することができる。他の実施形態では、ＶＭ  ＴＡＧは、物理アドレスとは別に送信されてもよい。メモリコントローラは、要求を受信すると、ＶＭ  ＴＡＧに基づいて暗号化キーを検索し、次に、暗号化モジュールを使用してメモリを暗号化／復号化する。これにより、Ｉ／Ｏデバイス３１８上で実行されているＶＦは、関連するＶＭと同じ暗号化キー（例えば、ＫＥＹ−Ａ３２８及びＫＥＹ−Ｂ３３０）を参照することによって、メモリ３１２の暗号化されたメモリ領域に直接アクセスすることが可能になり、ＶＭ３０４，３０６及びハイパーバイザ３０８との対話が不要になる。上述したように、データの暗号保護は、メモリコントローラ３２０で行われ、暗号保護に使用されるセキュリティキーは知られておらず、ＶＦ３２４，３２６、ＶＭ３０４，３０６及びハイパーバイザ３０８にはアクセスできない。これにより、或るＶＦが他のＶＭ／ＶＦのセキュア情報にアクセスできないことが保証される。
【００３８】
ＤＭＡ要求は、通常、メモリコントローラ３２０に渡されるが、適切なＶＭ  ＴＡＧ（ＤＭＡ要求と共に提供され、ＶＭ  ＴＡＧを検索するためにデバイステーブル３４０によって使用される要求側ＩＤ値に基づく）を有していてもよいし、有していなくてもよく、したがって、適切な暗号化キー又は誤った暗号化キーを使用したメモリアクセスが発生し得る。例えば、要求側ＶＦによって提供された要求側ＩＤに関連するＶＭ  ＴＡＧが、正しいセキュリティキーと一致する場合に、メモリアクセス要求は、メモリトラフィックを暗号化／復号化するために、適切なセキュリティキーと共に暗号化モジュール３３２に転送され、これにより、要求側ＶＦが、関連するＶＭのセキュアメモリ空間にアクセスすることが可能になる。しかしながら、要求側ＶＦによって提供された要求側ＩＤに関連するＶＭ  ＴＡＧが、正しいセキュリティキーと一致しない場合に、セキュアメモリ空間内の物理メモリは、未だ読み出し又は書き込みされるが、誤ったキーを使用して復号化／暗号化することになる。誤ったセキュリティキーを用いて読み出しを行うと、復号化後に正確な平文が返されないという結果に陥る。
【００３９】
例えば、いくつかの実施形態では、ＶＦ−Ａ３２４は、セキュア情報３１６（ＶＦ−Ｂ３２６のセキュア情報）にアクセスするためのメモリアクセス要求を発行することができる。メモリアクセス要求がＶＦ−Ａ３２４によって生成されたので、ＩＯＭＭＵ３２２は、メモリ３１２のデバイステーブル３４０にアクセスして、ＶＦ−Ａ３２４に関連するＶＭ  ＴＡＧを検索し、メモリコントローラ３２０に提供する。ＶＦ−Ａ３２４のＶＭ−Ａタグがメモリコントローラ３２０に提供され、メモリコントローラ３２０は、暗号化モジュール３３２を使用して、提供されたＶＭ−Ａタグに関連するセキュリティキーを検索する。メモリアクセス要求の対象となるセキュア情報３１６は、セキュアデータを暗号化するために元々使用されていたＫＥＹ−Ｂ３３０ではなく、ＫＥＹ−Ａ３２８を使用して復号化される。よって、誤ったキーを使用してデータが復号化されたので、ＶＦ−Ａは、復号化されたデータを有意義に又は正しく解釈することができない。したがって、ＶＭ−Ｂ３０６／ＶＦ−Ｂ３２６のセキュア情報３１６は、ＶＦ−Ａ３２４によるアクセスから暗号隔離されている。
【００４０】
図４は、いくつかの実施形態による、メモリアクセス要求のセキュリティの種類（例えば、セキュア又は非セキュア）の識別を可能にするＩＯＭＭＵ３２２の一部を示す図である。具体的には、図４は、アドレス変換モジュール４３４と、変換索引バッファ（ＴＬＢ）４３６と、を示す。アドレス変換モジュール４３４は、概して、対応するメモリアクセス要求の仮想アドレスを、ＶＦ（例えば、図３のＶＦ−Ａ３２４及びＶＦ−Ｂ３２６）から受信するように構成されている。アドレス変換モジュール４３４は、受信した各仮想アドレスを、メモリアクセス要求の対象となるメモリ３１２の位置を識別する、対応する物理アドレスに変換する。
【００４１】
アドレス変換モジュール４３４は、ＴＬＢ４３６及びページテーブル４３８（例えば、図３のメモリ３１２内）のうち一方又は両方を使用して、仮想アドレスを、対応する物理アドレスに変換する。ページテーブル４３８は、仮想アドレスによりインデックス化された複数のエントリ（例えば、エントリ４０２）を含む。いくつかの実施形態では、ページテーブル４３８は、マルチレベルページテーブルであり、これにより、より高いレベルのページは、仮想アドレスに関連する他のページを識別するエントリを含み、より低いレベルのページは、仮想アドレスに割り当てられた物理アドレスを識別する。ページウォークにおいてページテーブルをトラバースすることによって、物理アドレスを識別することができる。アクセスされる次のレベルのページを識別するために最高レベルのページが最初にアクセスされ、物理アドレスを含む最低レベルのページテーブルが識別され、その最高レベルのページテーブルから物理アドレスが取得されるまで、同様の動作が続く。また、最低レベルのページテーブルは、物理アドレスに対応するデータが暗号的に保護されているか否かを示すビット（「Ｃ−ビット」と呼ばれる）を記憶する。ＴＬＢ４３６は、アドレス変換モジュール４３４によって最近受信された仮想アドレスを反映するページテーブル４３８のエントリのサブセットを共に記憶する複数のエントリ（例えば、エントリ４０４）を含む。
【００４２】
アドレス変換モジュール４３４は、仮想アドレスの受信に応じて、ＴＬＢ４３６にアクセスして、ＴＬＢが仮想アドレスに対応するエントリを含むか否かを判別する。アドレスのＣ−ビット部分は、メモリアクセス要求がセキュアメモリアクセス要求であるか否かを識別するために、ＩＯＭＭＵ３２２によって使用される。したがって、例えば、物理アドレス値内のＣ−ビットがアサート状態である場合、メモリＩＯＭＭＵ３２２は、対応するメモリアクセス要求をセキュアメモリアクセス要求として識別し、要求側に対応するＶＭ  ＴＡＧを検索する。アドレス変換モジュール４３４は、ＶＭ  ＴＡＧを物理アドレスに加えて、結果として得られた物理アドレス値を、セキュリティキーを検索するのに暗号化モジュールによって使用されるために提供する。ページテーブルエントリ内のＣ−ビットがデアサートされている場合、ＩＯＭＭＵ３２２は、ＶＭ  ＴＡＧを物理アドレスに加えず、メモリアクセスは、暗号化又は復号化なしに進行する。
【００４３】
図５は、いくつかの実施形態による、暗号保護のために指定された情報を保護するために、メモリコントローラでダイレクトメモリアクセス要求を処理する方法５００のフロー図である。説明のために、方法５００は、図３のＩＯＭＭＵ３２２における例示的な実施態様に関して述べられる。ブロック５０２において、ＩＯＭＭＵ３２２は、要求側ＶＦからメモリアクセス要求を受信する。メモリアクセス要求は、ＶＦ３２４又はＶＦ３２６のうち１つによって生成された要求であってもよい。図１〜図４に関連して上述したように、メモリアクセス要求のアドレス値は、メモリアクセス要求がセキュアメモリアクセス要求であるか否かを示すＣ−ビット値と、要求側ＶＦを識別する要求側ＩＤ値と、を含むことができる。
【００４４】
ブロック５０４において、ＩＯＭＭＵ３２２は、メモリアクセス要求のＣ−ビットがアサートされているか否かを判別する。アサートされていない場合、メモリアクセス要求は非セキュアメモリアクセス要求であり、方法フローはブロック５０６に進み、メモリコントローラ３２０は、暗号化モジュール３３２をバイパスしてメモリアクセス要求を満たす。書き込み要求の場合、メモリコントローラ３２０は、書き込み情報を暗号化しないので、メモリ３１２は、書き込み情報を暗号化されていない形式で記憶する。読み出し要求の場合、メモリコントローラ３２０は、メモリ３１２から情報を取得し、情報を復号化せずに要求側ＶＦに提供する。
【００４５】
ブロック５０４に戻って、メモリアクセス要求のＣ−ビットがアサートされているとＩＯＭＭＵ３２２が識別した場合、メモリアクセス要求は、セキュアメモリアクセス要求である。したがって、方法フローはブロック５０８に進み、ＩＯＭＭＵ３２２は、図３で説明したデバイステーブル３４０を使用して、要求側ＶＦの要求側ＩＤに基づいてＶＭ  ＴＡＧを検索する。ＶＭ  ＴＡＧがメモリコントローラ３２０に提供され、方法フローはブロック５１０に進む。ブロック５１０において、メモリコントローラ３２０は、提供されたＶＭ  ＴＡＧに対応するセキュリティキー３２８，３３０のうち１つのキーを識別する。ブロック５１２において、暗号化モジュール３３２は、メモリアクセス要求を満たすために使用される情報を暗号化又は復号化する。すなわち、メモリアクセス要求が書き込み要求である場合、暗号化モジュール３３２は、識別されたセキュリティキーを使用して、書き込まれる情報を暗号化する。メモリアクセス要求が読み出し要求である場合、メモリコントローラ３２０は、メモリ３１２から読み出される情報を取得し、暗号化モジュール３３２は、識別されたセキュリティキーを使用して、取得された情報を復号化する。ブロック５１４において、メモリコントローラ３２０は、暗号化された情報（書き込み要求の場合）又は復号化された情報（読み出し要求の場合）を用いて、メモリアクセス要求を満たす。
【００４６】
いくつかの実施形態では、図１〜図５を参照して上述したプロセッサ等の上述した装置及び技術は、１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムで実施される。これらのＩＣデバイスの設計及び製造には、通常、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能な非一時的なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００４７】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム（例えば、システムＲＡＭ又はＲＯＭ）に内蔵されてもよいし、コンピュータシステム（例えば、磁気ハードドライブ）に固定的に取り付けられてもよいし、コンピュータシステム（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））に接続されてもよい。
【００４８】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００４９】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2019532438.tif 000003
【図２】
2019532438.tif 000004
【図３】
2019532438.tif 000005
【図４】
2019532438.tif 000006
【図５】
2019532438.tif 000007
【手続補正書】
【提出日】令和1年6月21日(2019.6.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサの入出力メモリ管理ユニット（ＩＯＭＭＵ）において、メモリ内のメモリ空間にアクセスするために、メモリアドレス値及び要求側ＩＤを含むダイレクトメモリアクセス要求を入出力（Ｉ／Ｏ）デバイスから受信することであって、前記ＩＯＭＭＵは、Ｉ／Ｏデバイスと、少なくとも１つのハードウェアプロセッサを用いて実装されたメモリコントローラとの間のインタフェースを提供する、ことと、
前記ダイレクトメモリアクセス要求に応じて、前記ＩＯＭＭＵにおいて、前記要求側ＩＤに関連する識別タグ値を決定して、前記識別タグ値を前記メモリコントローラに提供することと、
前記メモリコントローラにおいて、前記識別タグ値に対応するセキュリティキーを使用して、前記メモリ空間の前記メモリアドレス値のデータにアクセスすることと、を含む、
方法。
【請求項２】
前記Ｉ／Ｏデバイスから前記ダイレクトメモリアクセス要求を受信することは、前記Ｉ／Ｏデバイスに構成された仮想機能（ＶＦ）から前記ダイレクトメモリアクセス要求を受信することを含む、
請求項１の方法。
【請求項３】
前記識別タグ値を決定することは、デバイステーブルを使用して、前記要求側ＩＤに基づいて前記識別タグ値を検索することを含む、
請求項１の方法。
【請求項４】
前記ダイレクトメモリアクセス要求に関連する仮想マシン（ＶＭ）を識別することであって、前記セキュリティキーは、識別されたＶＭに対応する、ことを含む、
請求項１の方法。
【請求項５】
前記プロセッサとは別のセキュリティモジュールから前記セキュリティキーを受信することを含む、
請求項４の方法。
【請求項６】
前記ダイレクトメモリアクセス要求が非セキュアメモリ空間のメモリアドレス値のデータにアクセスすることであると判別したことに応じて、前記セキュリティキーを使用せずに前記非セキュアメモリ空間のデータにアクセスすることを含む、
請求項１の方法。
【請求項７】
前記ダイレクトメモリアクセス要求がセキュアメモリ空間のメモリアドレス値のデータにアクセスする書き込みアクセス要求であると判別したことに応じて、前記セキュリティキーを使用して、前記セキュアメモリ空間に書き込まれるデータを暗号化することを含む、
請求項１の方法。
【請求項８】
前記ダイレクトメモリアクセス要求がセキュアメモリ空間のメモリアドレス値のデータにアクセスするのを認可された読み出しアクセス要求であると判別したことに応じて、前記セキュリティキーを使用して、前記セキュアメモリ空間から読み出したデータを復号化することを含む、
請求項１の方法。
【請求項９】
前記ＩＯＭＭＵにおいて、メモリマップドＩ／Ｏ（ＭＭＩＯ）レジスタにアクセスする要求を受信したことに応じて、前記識別タグ値に基づいて前記ＭＭＩＯレジスタへのアクセスを許可することを含む、
請求項１の方法。
【請求項１０】
仮想マシンからセキュアメモリ空間にコマンドを書き込むことと、
前記コマンドに応じて、前記ＩＯＭＭＵにおいて前記コマンドを実行することと、
前記コマンドを実行したことに応じて、前記ＩＯＭＭＵが、前記メモリ空間の前記コマンドを特定値で上書きすることと、
前記セキュアメモリ空間で前記特定値を読み出したことに応じて、前記仮想マシンが前記ＩＯＭＭＵを認証することと、を含む、
請求項１に記載の方法。
【請求項１１】
メモリ内のメモリ空間にアクセスするためのダイレクトメモリアクセス要求を入出力（Ｉ／Ｏ）デバイスから受信し、前記ダイレクトメモリアクセス要求に関連する識別タグ値を決定する入出力メモリ管理ユニット（ＩＯＭＭＵ）と、
少なくとも１つのハードウェアプロセッサを用いて実装されたメモリコントローラであって、前記識別タグ値を前記ＩＯＭＭＵから受信するように構成されており、前記識別タグ値に基づいて、前記メモリ空間内のデータへの暗号アクセスを提供する暗号化モジュールを備える、メモリコントローラと、を備える、
プロセッサ。
【請求項１２】
前記識別タグ値は、前記ダイレクトメモリアクセス要求に含まれる要求側ＩＤに基づいて決定される、
請求項１１のプロセッサ。
【請求項１３】
前記要求側ＩＤに基づいて、前記暗号化モジュールに渡される前記識別タグ値を決定するためのデバイステーブルを備える、
請求項１２のプロセッサ。
【請求項１４】
前記要求側ＩＤを前記識別タグ値と対応付けるハイパーバイザを備える、
請求項１２のプロセッサ。
【請求項１５】
プロセッサコアと、
入出力メモリ管理ユニット（ＩＯＭＭＵ）と、
少なくとも１つのハードウェアプロセッサを用いて実装されたメモリコントローラと、を備えるプロセッサであって、
前記ＩＯＭＭＵは、
仮想マシン（ＶＭ）に関連するメモリ内のセキュアメモリ空間にアクセスするために、メモリアドレス値及び前記ＶＭを示す要求側ＩＤを含むダイレクトメモリアクセス要求を入出力（Ｉ／Ｏ）デバイスから受信し、
前記要求側ＩＤに関連する識別タグ値を決定し、
前記メモリコントローラは、
前記識別タグ値を前記ＩＯＭＭＵから受信し、
前記識別タグ値に対応するセキュリティキーを使用して、前記セキュアメモリ空間の前記メモリアドレス値のデータにアクセスする、
プロセッサ。
【国際調査報告】
2019532438.tif 000008
2019532438.tif 000009