(57)【要約】処理システム（１００）は、相互接続（１０６）に接続可能な第１インタフェース（１１２）を有する処理モジュール（１０２）を含む。第１インタフェースは、第１暗号化データ及び暗号化メモリアドレスを生成するために、第１キー（１４６）及び第１フィードバックベース暗号プロセスを使用して、記憶動作の記憶データ表現及びメモリアドレスを暗号化するための第１暗号エンジン（１２４）を含む。メモリモジュール（１０４）は、相互接続に接続された第２インタフェース（１２８）を含む。第２インタフェースは、記憶データ表現のコピー及びメモリアドレスのコピーを生成するために、第２キー（１４８）及び第２フィードバックベース暗号プロセスを使用して、第１暗号化データ及び暗号化メモリアドレスを復号化するための第２暗号エンジン（１３２）を含む。さらに、第２インタフェースは、メモリアドレスのコピーに基づいて、記憶データ表現のコピーをメモリコアのメモリ位置（１５０）に記憶する。【選択図】図１
2019502211.tif 000002
【特許請求の範囲】
【請求項１】
専用の相互接続（１０６）を介してメモリモジュール（１０４）に接続された処理モジュール（１０２）を備える処理システム（１００）において、
記憶動作の開始に応じて、
前記処理モジュールの前記相互接続に対する第１インタフェース（１１２）において、第１暗号化データを生成するために、第１キー（１４６）及び第１フィードバックベース暗号プロセス（１２４）を使用して、前記記憶動作の記憶データ表現を暗号化することと、
前記第１インタフェースにおいて、暗号化メモリアドレスを生成するために、前記第１キー及び前記第１フィードバックベース暗号プロセスを使用して、前記記憶動作のメモリアドレスを暗号化することと、
前記第１暗号化データ及び暗号化メモリアドレスを、前記相互接続を介して前記メモリモジュールに送信することと、を含む、
方法。
【請求項２】
前記メモリモジュールの前記相互接続に対する第２インタフェース（１２８）において、前記記憶データ表現のコピーを取得するために、第２キー（１４８）及び第２フィードバックベース暗号プロセス（１３２）を使用して、前記第１暗号化データを復号化することと、
前記第２インタフェースにおいて、前記メモリアドレスのコピーを取得するために、前記第２キー及び前記第２フィードバックベース暗号プロセスを使用して、前記暗号化メモリアドレスを復号化することと、
前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーをメモリ位置（１５０）に記憶することと、をさらに含む、
請求項１の方法。
【請求項３】
前記第１インタフェースにおいて、前記記憶動作の属性に基づいて、複数のキー（１１４）から前記第１キーを選択することと、
前記属性（１４０）の表現を、前記相互接続を介して前記第１インタフェースから前記第２インタフェースに通信することと、
前記第２インタフェースにおいて、前記属性の表現に基づいて、複数のキー（１３０）から前記第２キーを選択することと、をさらに含む、
請求項２の方法。
【請求項４】
前記属性は、前記記憶動作を発行したプロセッサコアの識別子、前記記憶動作を発行したプロセスの識別子、前記記憶動作を発行したスレッドの識別子、及び、前記記憶動作に関するアドレス空間の識別子のうち少なくとも１つを含む、
請求項３の方法。
【請求項５】
前記第１インタフェースにおいて、第１ハッシュ値を生成するために、前記メモリアドレス及び前記記憶データ表現を使用して、暗号ハッシュ（３０２）を行うことと、
前記第１インタフェースにおいて、暗号化ハッシュ値を生成するために、前記第１ハッシュ値を暗号化することと、
前記暗号化ハッシュ値を、前記相互接続を介して前記第１インタフェースから前記第２インタフェースに送信することと、
前記第２インタフェースにおいて、前記第１ハッシュ値のコピーを生成するために、前記暗号化ハッシュ値を復号化することと、
前記第２インタフェースにおいて、第２ハッシュ値を生成するために、前記メモリアドレスのコピー及び前記記憶データ表現のコピーを使用して、暗号ハッシュ（３０８）を行うことと、をさらに含み、
前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーを前記メモリ位置に記憶することは、前記第２ハッシュ値と前記第１ハッシュ値のコピーとの比較（３１０）結果に応じて、前記記憶データ表現のコピーを前記メモリ位置に記憶することを含む、
請求項２の方法。
【請求項６】
前記第１インタフェースにおいて、シリアル番号のシーケンス内の次のシリアル番号を判別することと、
前記第１インタフェースにおいて、暗号化シリアル番号を生成するために、前記次のシリアル番号を暗号化することと、
前記暗号化シリアル番号を、前記相互接続を介して前記第１インタフェースから前記第２インタフェースに送信することと、
前記第２インタフェースにおいて、前記次のシリアル番号のコピーを生成するために、前記暗号化シリアル番号を復号化することと、をさらに含み、
前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーを前記メモリ位置に記憶することは、前記次のシリアル番号のコピーと、予測される次のシリアル番号との比較結果に応じて、前記記憶データ表現のコピーを前記メモリ位置に記憶することを含む、
請求項２の方法。
【請求項７】
前記第１フィードバックベース暗号プロセスは、ブロック連鎖の暗号プロセス及びストリーム暗号の暗号プロセスのうち少なくとも１つを含む、
請求項１の方法。
【請求項８】
前記処理モジュールにおいて、第２暗号化データを生成するために、第２キーを使用して前記記憶データを暗号化することをさらに含み、前記記憶データ表現は前記第２暗号化データを含む、
請求項１の方法。
【請求項９】
前記第１インタフェースにおいて、第１ハッシュ値を生成するために、前記メモリアドレス及び前記第１暗号化データを使用して、暗号ハッシュ（３０２）を行うことと、
前記第１ハッシュ値を、前記相互接続を介して前記第１インタフェースから前記メモリモジュールに送信することと、をさらに含む、
請求項１の方法。
【請求項１０】
専用の相互接続（１０６）を介してメモリモジュール（１０４）に接続された処理モジュール（１０２）を備える処理システム（１００）において、
ロード動作の開始に応じて、
前記処理モジュールの前記相互接続に対する第１インタフェース（１１２）において、暗号化メモリアドレスを生成するために、第１キー（１４６）及び第１フィードバックベース暗号プロセス（１２４）を使用して、前記ロード動作に関するメモリアドレスを暗号化することと、
前記暗号化メモリアドレスを、前記相互接続を介して前記メモリモジュールに送信することと、
前記メモリモジュールの前記相互接続に対する第２インタフェース（１２８）において、前記メモリアドレスのコピーを取得するために、第２キー（１４８）を使用して、前記暗号化メモリアドレスを復号化することと、
前記第２インタフェースにおいて、前記メモリアドレスのコピーに基づいて、前記メモリモジュールのメモリ位置（１５０）から第１暗号化データにアクセスすることと、
前記第２インタフェースにおいて、第２暗号化データを生成するために、第３キー（１５２）及び第２フィードバックベース暗号プロセスを使用して、前記第１暗号化データを暗号化することと、
前記第２暗号化データを、前記相互接続を介して前記第２インタフェースから前記第１インタフェースに送信することと、
前記１インタフェースにおいて、前記第１暗号化データのコピーを取得するために、第４キー（１５４）及び第３フィードバックベース暗号プロセスを使用して、前記第２暗号化データを復号化することと、を含む、
方法。
【請求項１１】
前記第１インタフェースにおいて、前記ロード動作のロードデータのコピーを取得するために、第５キー（１４４）を使用して、前記第１暗号化データのコピーを復号化することをさらに含む、
請求項１０の方法。
【請求項１２】
前記第１キー及び前記第２キーは同じキーを含み、前記第３キー及び前記第４キーは同じキーを含む、
請求項１１の方法。
【請求項１３】
処理システム（１００）であって、
少なくとも１つのプロセッサコア（１１６，１１８，１２０，１２２）と、
前記少なくとも１つのプロセッサコアに接続された第１インタフェース（１１２）であって、相互接続（１０６）に接続可能な第１インタフェース（１１２）と、を含む処理モジュール（１０２）を備え、
前記第１インタフェースは、
第１暗号化データ及び暗号化メモリアドレスを生成するために、第１キー（１４６）及び第１フィードバックベース暗号プロセスを使用して、前記記憶動作の記憶データ表現及び前記記憶データに関するメモリアドレスを暗号化する第１暗号エンジン（１２４）を備え、
前記第１インタフェースは、前記第１暗号化データ及び前記暗号化メモリアドレスを、前記相互接続を介してメモリモジュール（１０４）に送信する、
処理システム。
【請求項１４】
前記メモリモジュールは、
メモリコア（１２６）と、
前記相互接続及び前記メモリコアに接続された第２インタフェース（１２８）であって、前記記憶データ表現のコピー及び前記メモリアドレスのコピーを生成するために、第２キー（１４８）及び第２フィードバックベース暗号プロセスを使用して、前記第１暗号化データ及び前記暗号化メモリアドレスを復号化する第２暗号エンジン（１３２）を備える第２インタフェースと、を備え、
前記第２インタフェースは、前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーを前記メモリコアのメモリ位置（１５０）に記憶する、
請求項１３の処理システム。
【請求項１５】
前記処理モジュールは、前記記憶動作の属性に基づいて、複数のキーから前記第１キーを選択するための第１キーストア（１１４）をさらに備え、
前記メモリモジュールは、前記相互接続を介して受信した前記属性の表現に基づいて、複数のキーから前記第２キーを選択するための第２キーストア（１３０）をさらに備える、
請求項１４の処理システム。
【請求項１６】
前記第１インタフェースは、第１ハッシュ値を生成するために、前記メモリアドレス及び前記記憶データ表現を使用して、暗号ハッシュを行う第１暗号ハッシュモジュール（３０２）を備え、
前記第１インタフェースは、前記第１ハッシュ値の表現を前記メモリモジュールに送信し、
前記第２インタフェースは、
第２ハッシュ値を生成するために、前記メモリアドレスのコピー及び前記記憶データ表現のコピーを使用して、暗号ハッシュを行う第２暗号ハッシュモジュール（３０８）と、
前記第２ハッシュ値と前記第１ハッシュ値との比較結果に応じて、前記第１暗号化データのコピーの前記メモリ位置への記憶を許可するハッシュ比較ロジック（３１０）と、を備える、
請求項１４の処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データストレージ用のメモリを利用する処理システムに関し、より詳細には、暗号化されたメモリを利用する処理システムに関する。
【背景技術】
【０００２】
実行に使用されるハードウェアをデータ所有者が物理的に制御しない設定においてセキュリティを強化する方法として、暗号化されたメモリ（すなわち、メモリの内容が暗号化されている）を使用する方法が提案されている。しかしながら、暗号化されたメモリに対する従来のアプローチは、メモリアクセスの予測不可能性と、典型的なプロセッサ／メモリアーキテクチャの制約とを考慮して、キャッシュラインを個別に暗号化する必要があるため、基本的な攻撃手法に対して脆弱である。
【０００３】
従来の暗号化されたメモリの実装は、典型的には、メモリに記憶されるデータが、使用されるデータ及び暗号化キーの関数として単独で暗号化される電子コードブック（ＥＣＢ）ベースの暗号化スキームに依存する。このアプローチは、２つのキャッシュラインが同一の暗号文をもたらす同一の平文を有することによって、暗号化されたデータのオブザーバに対してデータに関する情報が漏洩する等のいくつかの欠点を有する。かかる情報によって、ＥＣＢは、データの統計的性質を用いて、暗号化されたデータに関する情報を推測したり、場合によっては、データを暗号化するのに用いられる暗号化キーを解読する「辞書」攻撃を受け易くなる。従来のＥＣＢベースの暗号化されたメモリの実装の別の欠点は、暗号化されたデータを破損又は上書きすることができるように、プロセッサとメモリとの間の相互接続に攻撃者がトラフィックを挿入するデータ「インジェクション」攻撃を受け易いことである。このような攻撃を阻止するために、従来の暗号化されたメモリシステムは、多くの場合、メモリの内容全体に亘ってツリー型構造の生成に依存しており、これにより、各ロード動作又は記憶動作を認証するために多くのメモリアクセスを必要とする。
【０００４】
本開示は、添付の図面を参照することによってより良く理解することができ、その多くの特徴及び利点が当業者に明らかになるであろう。異なる図面において同じ符号を使用することは、類似又は同一の項目を示す。
【図面の簡単な説明】
【０００５】
【図１】いくつかの実施形態による、暗号化メモリを用いる処理システムのブロック図である。
【図２】いくつかの実施形態による、図１の処理システムにおいてセキュアなメモリアクセス動作を実行するための方法を示すフロー図である。
【図３】いくつかの実施形態による、認証のための暗号ハッシュ及びシリアル番号の一方又は両方を利用するペアのメモリインタフェースの実装例を示すブロック図である。
【図４】いくつかの実施形態による、ブロック連鎖に基づく暗号エンジンを示すブロック図である。
【図５】いくつかの実施形態による、図１の処理システムの例示的な積層型のプロセッサインメモリ（ＰＩＭ）の実装を示す図である。
【発明を実施するための形態】
【０００６】
図１〜図５は、処理システムにおいて強化した暗号化メモリを用いるための例示的な方法及びシステムを示す図である。少なくとも１つの実施形態では、処理システムは、メモリバス又は他の相互接続を介してメモリモジュールに接続された処理モジュールを含む。記憶型メモリアクセス動作（すなわち、「記憶動作」）の場合、処理モジュールは、第１暗号文を生成するために、第１キーを使用して、記憶されるキャッシュライン又は他のデータを暗号化する。次いで、処理モジュールの暗号エンジンは、第２暗号文を生成するために、第２キーを使用して、第１暗号文を暗号化する。また、暗号エンジンは、暗号化されたメモリアドレスを生成するために、第２キー又は別のキーを使用して、記憶動作に関連するメモリアドレスを暗号化する。第２暗号化データ及び暗号化メモリアドレスは、相互接続を介してメモリモジュールに送信される。メモリモジュールは、暗号化メモリアドレス及び第２暗号文を復号化して、メモリアドレス及び第１暗号文のコピーを取得する。次に、メモリモジュールは、第１暗号文のコピーを、メモリアドレスのコピーによってアドレス指定されたメモリ位置に記憶する。
【０００７】
ロード型メモリアクセス動作（すなわち、「ロード動作」）の場合、処理モジュールは、暗号化メモリアドレスを生成するために、第２キー又は別のキーを使用して、ロード動作に関連するメモリアドレスを暗号化し、この暗号化メモリアドレスを、相互接続を介してメモリモジュールに送信する。メモリモジュールは、暗号化メモリアドレスを復号化してメモリアドレスのコピーを取得し、メモリアドレスのコピーによってアドレス指定されたメモリ位置に記憶された第１暗号文にアクセスする。次に、メモリモジュールは、第１暗号文を暗号化して第２暗号文を生成し、第２暗号文は、インタフェースを介して処理モジュールに送信される。処理モジュールでは、第２暗号文が復号化されて第１暗号文のコピーが生成され、第１暗号文のコピーが復号化されて、ロード動作によって求められたロードデータのコピーが生成される。
【０００８】
少なくとも１つの実施形態では、各メモリモジュールと各処理モジュールとの間の接続は、相互接続の個別の専用インスタンス及び相互接続の両側の対応する暗号エンジンによって提供される。この構成によって、メモリモジュールの暗号エンジンが、処理モジュールの暗号エンジンと同じデータアクセスシーケンスを監視する状況が生じる。したがって、暗号エンジンは、従来の暗号化メモリの実装とは対照的に、現在のキャッシュライン又は暗号化されている他のデータの機能だけでなく、以前に暗号化された１つ以上の以前のキャッシュライン又は他のデータの機能でもある暗号プロセスを利用してもよい。このタイプの暗号プロセスは、本明細書において「フィードバックベース暗号プロセス」と呼ばれる。フィードバック依存の暗号プロセスの例には、暗号ブロック連鎖（ＣＢＣ）及び暗号フィードバック（ＣＦＢ）アルゴリズム等のブロック連鎖暗号プロセスや、ＣｒｙｐｔＭＴ及びＲａｂｂｉｔアルゴリズム等のストリーム暗号が含まれる。フィードバックベース暗号プロセスは、概して、現在のキャッシュライン／暗号化されているデータのみの機能である暗号プロセスと比較して強化した暗号セキュリティを提供し、フィードバックベース暗号プロセスを用いることによって、例えば辞書型攻撃の使用又は権限のないオブザーバによるメモリアクセスパターンの分析等の平文データへの不正アクセスに対する耐性を向上させる。
【０００９】
図１は、本開示の少なくとも１つの実施形態による、セキュアなデータストレージを用いる処理システム１００を示す図である。処理システム１００は、例えば、記憶されたデータの所有者が、「クラウド」サーバのシナリオ等のように、データを記憶して処理するハードウェアの物理的制御を有しないシステムを表すことができる。図示した例では、処理システム１００は、相互接続１０６を介してメモリモジュール１０４に接続された少なくとも１つの処理モジュール１０２を含む。
【００１０】
処理モジュール１０２は、１つ以上のプロセッサ１０８と、ハードウェア暗号エンジン１１０と、メモリインタフェース１１２と、を備え、キーストア１１４をさらに含んでもよい。プロセッサ１０８は、例えば、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）又はこれらの組み合わせを備えてもよく、プロセッサコア１１６，１１８等の１つ以上のプロセッサコアと、キャッシュ１２０，１２２等の１つ以上のキャッシュと、を含んでもよい。メモリインタフェース１１２は、プロセッサ１０８と、暗号エンジン１１０と、キーストア１１４と、相互接続１０６と、に接続されており、暗号エンジン１２４を含む。
【００１１】
メモリモジュール１０４は、処理モジュール１０２のための暗号化メモリとして動作する。このために、メモリモジュール１０４は、メモリコア１２６と、メモリインタフェース１２８と、を含み、キーストア１３０を含んでもよい。メモリコア１２６は、それぞれ対応するメモリアドレス（例えば、物理メモリアドレス）を介してアクセスされる複数の記憶場所（図示省略）又はエントリを備える。メモリコア１２６は、例えばスタティックＲＡＭ（ＳＲＡＭ）アーキテクチャ、ダイナミックＲＡＭ（ＤＲＡＭ）アーキテクチャ、不揮発性ＲＡＭ（ＮＶＲＡＭ）アーキテクチャ及びフラッシュメモリアーキテクチャ等の様々なランダムアクセスメモリ（ＲＡＭ）アーキテクチャの何れかを使用して実装されてもよい。メモリインタフェース１２８は、メモリコア１２６と、キーストア１３０と、相互接続１０６と、に接続されており、暗号エンジン１３２を含む。
【００１２】
相互接続１０６は、処理モジュール１０２とメモリモジュール１０４との間の双方向インタフェースとして機能するバス又は他のタイプの相互接続を備える。相互接続１０６は、モジュール１０２，１０４間で実行されるメモリアクセス動作のためのシグナリングを行うための複数の信号経路を備える。この信号経路には、メモリアドレス情報を送信するための信号経路、データ情報を送信するための信号経路、制御情報を送信するための信号経路等が含まれる。一実施形態では、同じメモリモジュール１０４に接続された複数の処理モジュール１０２を実装する場合に、各処理モジュール１０２は、個別に専用のメモリモジュール１０４に対する相互接続１０６を有し、メモリモジュール１０４は、処理モジュール１０２／相互接続１０６毎に個別のメモリインタフェース１２８を実装する。同様に、いくつかの実施態様では、処理モジュール１０２を複数のメモリモジュール１０４に接続することができ、この場合、処理モジュール１０２は、対応するメモリモジュール１０４に処理モジュール１０２を接続する相互接続１０６毎に個別のメモリインタフェース１１２を実装する。この構成の下では、処理モジュール１０２とメモリモジュール１０４との特定のペアを接続する相互接続１０６の両側のインタフェース１１２，１２８は、ロード動作及び記憶動作の同じシーケンスを監視するために、フィードバックベース暗号プロセスを実装してもよい。
【００１３】
図５を参照して以下により詳細に説明するように、典型的な実施態様では、処理モジュール１０２及びメモリモジュール１０４は、個別のデバイス又はパッケージとして実装され、これにより、相互接続１０６は、両方のモジュール１０２，１０４が実装されるインターポーザ又は回路基板を横断する導電性トレースのセットとして実装されてもよいし、２つのモジュール１０２，１０４を接続するケーブルを横断する導電性トレースのセットとして実装されてもよい。このように、相互接続１０６は、導電性トレースに接続された物理的なタップの形態の不正アクセスを受けやすい場合がある。そして、かかる物理的なタップは、例えば辞書型攻撃等のように、メモリモジュール１０４に記憶され又はモジュール１０２，１０４間で送信される平文バージョンのデータに対するアクセスを試みるために、不正な集団によって使用される可能性がある。
【００１４】
処理システム１００は、相互接続１０６の脆弱性を考慮して、暗号技術の組み合わせを用いてデータセキュリティを強化する。図２を参照して以下により詳細に説明するように、モジュール１０２，１０４は、相互接続１０６を介して送信される（及びメモリコア１２６に記憶される）データに対してフィードバックベース暗号プロセスを用いることによって、辞書式攻撃の使用による平文形式のデータにアクセスしようとする試み、又は、相互接続を介したデータストリームの統計的性質を分析する他の試みを抑制する。さらに、モジュール１０２，１０４は、メモリアクセスパターンに関する情報の漏洩を防止するために、相互接続１０６を介して送信されるメモリアドレスに対して暗号化スキームを用いる。さらに、図３及び図４を参照して以下により詳細に説明するように、処理システム１００は、暗号ハッシュベースの認証プロセス又はシリアル番号ベースの認証プロセスのうち１つ以上を利用して、処理システム１００におけるデータセキュリティをさらに強化することができる。
【００１５】
図２は、本開示の少なくとも１つの実施形態による、セキュアなメモリアクセス動作を実行するための処理システム１００の動作の方法２００を示す図である。メモリアクセス動作は、概して、記憶型メモリアクセス動作（記憶動作）又はロード型メモリアクセス動作（ロード動作）の何れかに大まかに分類されてもよい。記憶動作の場合、データは、メモリモジュール１０４のメモリコア１２６内の対応する場所に記憶されるために、処理モジュール１０２によって提供される。逆に、ロード動作の場合、データは、メモリコア１２６の対応する場所からアクセスされ、処理モジュール１０２に送信される。その結果、ロードデータは、後の使用のために、プロセッサ１０８の１つ以上のキャッシュ又はレジスタに記憶される。概して、記憶又はロードされるデータは、キャッシュラインの形式又はサイズで行われるので、本明細書では、キャッシュラインの例に基づくデータの記憶及びアクセスを言及しているが、いくつかの実施形態では、データは、キャッシュラインより小さいサイズであってもよいし、大きいサイズであってもよい。
【００１６】
パワーオンリセット（ＰＯＲ）又は他の初期化／再初期化イベントに続いて、メモリアクセス動作の処理の前に、ブロック２０２において、処理システム１００は、概して、処理モジュール１０２のメモリインタフェース１１２と、メモリモジュール１０４のメモリインタフェース１２８と、の間のキー交換１４０（図１）又は他のキー初期化を含む初期化プロセスを行う。いくつかの実施形態では、処理システム１００は、公開キー／秘密キースキームを用いる。このスキームの場合、処理モジュール１０２のメモリインタフェース１１２は、事前に識別された記憶場所から公開キーを読み出す等によって、メモリインタフェース１２８の公開キーについてメモリインタフェース１２８に照会し、次いで、共有されるキーを暗号エンジン１２４で公開キーを使用して暗号化し、暗号化されたキーをメモリモジュール１０４のメモリインタフェース１２８に送信する。暗号化されたキーは、メモリインタフェース１２８の対応する秘密キーを使用することによって復号化され、結果として得られた復号化されたキーは、メモリモジュール１０４のキーストア１３０に記憶される。
【００１７】
代替的には、メモリモジュール１０４は、メモリインタフェース１１２，１２８によって使用されるキーを生成し、メモリインタフェース１１２によって使用されるキーを処理モジュール１０２に通信してもよく、その後、キーは、処理モジュール１０２のキーストア１１４に記憶される。これは、例えば、メモリインタフェース１２８が、（例えば、処理モジュール１０２からのコマンドに応じて）キーを生成し、処理モジュール１０２によって提供された公開キーを使用してキーを暗号化し、次いで、暗号化されたキーをメモリコア１２６内の既知の場所に記憶することによって達成されてもよく、その結果、処理モジュール１０２は、当該キーにアクセスし、対応する秘密キーを使用して当該キーを復号化し、復号化されたキーをキーストア１３０に記憶してもよい。
【００１８】
処理システム１００を使用することによって、複数のデータ所有者は、処理モジュール１０２及びメモリモジュール１０４を同時に使用することができる。したがって、データのセキュリティをさらに強化するために、このような実装では、複数のキーセットを実装してもよい。例示のために、異なるキーセットは、物理的な要求毎（例えば、コア毎）、スレッド毎、プロセス毎、アドレス空間毎等に実装されてもよい。そのような場合、異なるキーセットは、後述するように、コアＩＤ、スレッドＩＤ、プロセスＩＤ又はアドレス空間ＩＤ等の要求元の識別子（ＩＤ）又は他のメモリアクセス属性に基づいて、キーストア１１４，１３０内にインデックス付けされ、その後、適切なキーセットにアクセスするように、メモリアクセス動作が開始された場合に参照される。
【００１９】
処理システム１００は、メモリインタフェース１１２，１２８及びキーストア１１４，１３０が適切なキーで開始されると、メモリアクセス動作を行う準備が整う。したがって、ブロック２０４において、処理モジュール１０２の要求元は、メモリアクセス動作を開始する。メモリアクセス動作は、上述したように、概して、データをメモリモジュール１０４に記憶するための記憶動作、又は、メモリモジュール１０４からデータにアクセスするためのロード動作の何れかの形態を取る。複数のキーセットが使用されている場合、ブロック２０６において、メモリインタフェース１１２，１２８の各々は、キーストア１１４，１３０の適切なキーセットにアクセスする。例示すると、ブロック２０４において、メモリアクセス動作が開始された場合、又は、ブロック２０６において、要求元が処理モジュール１０２のリソースの制御を以前の要求元から引き継いだ場合、プロセッサ１０８は、キー要求１４２（図１）をキーストア１１４に発行してもよい。この場合、キー要求１４２は、例えば、メモリアクセス動作を要求するコア、スレッド、プロセスのＩＤ、又は、メモリアクセス動作に関するアドレス空間のＩＤ等のように、関連するメモリアクセス属性の表現を含んでもよい。さらに、メモリインタフェース１１２は、この同じ情報をメモリインタフェース１２８に提供することによって、適切なキーセットが、メモリモジュール１０４のキーストア１３０からアクセスされるようにする。
【００２０】
いくつかの実施形態では、メモリインタフェース１１２は、対応するメモリアクセス要求の送信の前に、相互接続１０６又は別のサイドバンド接続を介した（事前に識別された公開／秘密キーを介して暗号化されてもよい）別の通信として、メモリアクセス属性情報又は他の代表的なインデックスをメモリインタフェース１３２に提供する。別の実施形態では、メモリインタフェース１１２は、メモリアクセス属性又は他の代表的なインデックスを、（例えば、制御シグナリングの範囲内で）メモリアクセス要求に対して提供されるシグナリングの一部として含んでもよい。対応するキー（後述する）は、各キーストア１１４，１３０からアクセスされ、暗号エンジン１１０，１２４，１３２の対応するバッファ又はレジスタに一時的に記憶される。
【００２１】
処理システム１００は、暗号エンジン１１０，１２４，１３２が初期化されると、メモリアクセス動作を開始する準備が整う。この動作には、記憶動作又はロード動作が含まれてもよい。図２のフローパス２０８は、記憶動作に関して行われるプロセスを示しており、図２のフローパス２１０は、ロード動作に関して行われるプロセスを示している。
【００２２】
記憶動作は、フローパス２０８のブロック２１２において開始され、これに従って、メモリコア１２６の対応するアドレス指定された場所（例えば、キャッシュ１２０，１２２の何れか１つのキャッシュから排除されたキャッシュライン）に記憶される平文記憶データ（図１において「データ」と示されている）が暗号エンジン１１０に提供され、これに従って、暗号エンジン１１０は、第１暗号化データ又は暗号文（ここでは、暗号文「ＣＴ１」と示されている）を生成するために、処理モジュール１０２のみに知られているキーＫ１（図１のキー１４４）を使用して平文データを暗号化する。ＡＥＳ（高度暗号化標準）、ＤＥＳ（データ暗号化標準）、３ＤＥＳ（トリプルＤＥＳ）、ＰＧＰ（プリティグッドプライバシ）及びＢｌｏｗｆｉｓｈ等の様々な暗号化アルゴリズムのうち何れかを使用して、平文データを暗号化してもよい。第１暗号文ＣＴ１と、データが記憶されるメモリアドレス（「ＡＤＤＲ」と示されている）とは、メモリインタフェース１１２に提供され、ブロック２１４において、暗号エンジン１２４は、第２暗号化データ（暗号文「ＣＴ２」と示されている）と、暗号化されたメモリアドレス（「ＥＮ＿ＡＤＤＲ」と示されている）とを生成するために、フィードバックベース暗号プロセス（例えば、ＣＦＢ又はストリーム暗号）に従って、異なるキーＫ２（図１のキー１４６）を使用して、第１暗号文ＣＴ１及びメモリアドレスＡＤＤＲを暗号化する。なお、図１には、データが、相互接続１０６を介して送信される前に２回暗号化される実施態様が示されているが、いくつかの実施形態では、暗号エンジン１１０による第１暗号化が省略されてもよく、この場合、平文データＤＡＴＡは、暗号文ＣＴ２への暗号化のために、暗号文ＣＴ１の代わりに暗号エンジン１１０に提供されてもよい。
【００２３】
一実施形態では、第１暗号文ＣＴ１及びメモリアドレスＡＤＤＲは、個別の暗号化された値を生成するために、（並列ではあるが）別々に暗号化されてもよい。しかしながら、他の実施形態では、第１暗号文ＣＴ１及びメモリアドレスＡＤＤＲは、第１暗号文ＣＴ１及びメモリアドレスを暗号化の前に連結して単一の値にする等によって単一の暗号化された値を生成するために、共に暗号化されてもよい。ブロック２１６では、メモリインタフェース１１２は、相互接続１０６を介して行われるシグナリング（第２暗号文ＣＴ２及び暗号化メモリアドレスＥＮ＿ＡＤＤＲを含むシグナリング）によって、記憶要求をメモリモジュール１０４に送信する。
【００２４】
メモリインタフェース１２８は、記憶要求を表すシグナリングを受信し、ブロック２１８において、暗号エンジン１３２は、第１暗号文ＣＴ１のコピーと、メモリアドレスＡＤＤＲの平文コピーとを生成するために、キーＫ３（図１のキー１４８）を使用して、第２暗号文ＣＴ２と暗号化メモリアドレスＥＮ＿ＡＤＤＲとを復号化する。暗号エンジン１２４，１３２は、対称キー暗号化プロセス（例えば、ＡＥＳ、ＤＥＳ）を使用してもよく、この場合、キーＫ２及びＫ３は同じキーである。アドレスが復号化されると、ブロック２２０において、メモリインタフェース１２８は、ブロック２１８にて得られたメモリアドレスＡＤＤＲによってアドレス指定されたメモリコア１２６のメモリ位置１５０（図１）、或いは、これに関連するメモリコア１２６のメモリ位置１５０に第１暗号文ＣＴ１を記憶する。
【００２５】
第１暗号文ＣＴ１及びメモリアドレスＡＤＤＲを暗号化及び復号化するために、上述した暗号化アルゴリズムの何れか等のような様々な暗号化アルゴリズムを使用してもよい。具体的には、各相互接続１０６は、特定の処理モジュール／メモリモジュールのペアに特有であるため、処理モジュール１０２のメモリインタフェース１１２と、メモリモジュール１０４のメモリインタフェース１２８との両方は、キャッシュラインの同じシーケンス又は他のデータを参照する。そのようなものとして、暗号エンジン１２４，１３２の各々は、フィードバックベース暗号化技術を採用してもよい。この技術では、図４を参照して以下に詳細に説明するように、同じ平文項目の再発が同じ暗号文（例えば、暗号化プロセス及び復号化プロセスの間のストリーム暗号又はブロック連鎖暗号等）をもたらさない。
【００２６】
フローパス２０８によって示されるように、記憶データは、記憶動作中に、相互接続１０６を介して送信される前に、ブロック連鎖又はストリーム暗号によって暗号化され、これにより、典型的には、所定の平文値の暗号化が毎回同じ暗号化された値をもたらすという状況が回避される。このように、システム１００は、相互接続１０６を介して送信されたデータの分析による辞書型攻撃に抵抗する。さらに、暗号エンジン１１０が利用される実施形態では、データは、メモリコア１２６に記憶された場合に、（暗号文ＣＴ１として）暗号化された形態のままであるため、メモリコア１２６が不正なエンティティによって侵害される場合には、平文バージョンのデータにアクセスしようとする試みを妨げることができる。さらに、記憶動作のためのメモリアドレスＡＤＤＲは、送信前に暗号化される。これにより、処理システム１００のデータに対する攻撃のベースとして使用され得るメモリアクセスパターン又は他のメモリアクセス情報の漏洩を防止することができる。
【００２７】
ブロック２０６に戻ると、メモリアクセス動作がロード動作である場合、ロード動作のメモリアドレス（「ＡＤＤＲ」と示されている）は、プロセッサ１０８からメモリインタフェース１１２に提供される。ブロック２２２において、暗号エンジン１２４は、暗号化メモリアドレス（「ＥＮ＿ＡＤＤＲ」と示されている）を生成するために、キーＫ２（図１のキー１４６）と、ブロック連鎖又はストリーム暗号とを使用して、メモリアドレスを暗号化する。ロード動作に使用されるキーＫ２は、記憶動作に使用されるキーＫ２と同じキーであってもよいし、異なるキーであってもよい。ブロック２２４において、メモリインタフェース１１２は、相互接続１０６を介して行われるシグナリングによって、ロード要求をメモリモジュール１０４に送信する。この場合、シグナリングは、暗号化メモリアドレスＥＮ＿ＡＤＤＲを含む。
【００２８】
メモリインタフェース１２８は、ロード要求を表すシグナリングを受信し、ブロック２２６において、暗号エンジン１３２は、メモリアドレスＡＤＤＲの平文コピーを生成するために、キーＫ３（図１のキー１４８）と、対応するブロック連鎖又はストリーム暗号アルゴリズムとを使用して、暗号化メモリアドレスＥＮ＿ＡＤＤＲを復号化する。ロード動作に使用されるキーＫ３は、記憶動作に使用されるキーＫ３と同じキーであってもよいし、異なるキーであってもよい。ブロック２２８において、メモリインタフェース１２８は、取得されたメモリアドレスＡＤＤＲのコピーによって参照されるメモリコア１２６のメモリ位置（例えば、図１の位置１５０）から要求されたデータにアクセスする。上述したように、データは、記憶動作中に、暗号化データ又は暗号文としてメモリコア１２６に記憶されているため、アクセスされたデータは、ここでは第１暗号文ＣＴ１と呼ばれる。
【００２９】
ブロック２３０において、暗号エンジン１３２は、メモリコア１２６から取得した要求データにより、第２暗号文ＣＴ２を生成するために、キーＫ４（図１のキー１５２）を使用して、暗号文ＣＴ１をさらに暗号化する。対称キー暗号化の実施形態では、キーＫ４は、暗号エンジン１２４によって使用されるキーＫ２と同じキーであってもよい。共有キーの実施形態では、キーＫ４は、公開キー／秘密キーのペアのうち公開キーであってもよい。ブロック２３２において、メモリインタフェース１２８は、相互接続１０６を介したメモリインタフェース１１２へのロード結果又はロード応答を表すシグナリングを使用して、第２暗号文ＣＴ２を処理モジュール１０２に送信する。
【００３０】
ブロック２３４において、暗号エンジン１２４は、メモリインタフェース１１２において第２暗号文ＣＴ２を受信すると、メモリコア１２６に記憶された第１暗号文ＣＴ１のコピーを生成するために、キーＫ５（図５のキー１５４）を使用して、第２暗号文ＣＴ２を復号化する。キーＫ５は、キーＫ２と同じキーであってもよく、対称キー暗号化が暗号エンジン１２４，１３２によって用いられる場合には、キーＫ４と同じキーであってもよい。或いは、公開キー／秘密キー方式が用いられる場合には、上述したように、キーＫ５はキーペアの秘密キーであり、キーＫ４は公開キーである。ブロック２３６において、暗号エンジン１１０は、第１暗号文ＣＴ１によって表される平文ロードデータのコピーを取得するために、キーＫ１を使用して、取得した第１暗号文ＣＴ１のコピーを復号化する。次いで、この平文ロードデータは、ロード動作の要求元によるアクセスのために、コア１１６，１１８の対応する１つのキャッシュライン又は他の一時的な記憶場所に記憶されてもよい。
【００３１】
フローパス２１０によって示されるように、ロードデータは、ロード動作中に、メモリモジュール１０４から相互接続１０６を介して処理モジュール１０２に送信される前に、フィードバックベース暗号プロセスを使用して暗号化され、ロード動作のメモリアドレスＡＤＤＲは、送信前に暗号化される。これらの両方によって、フローパス２０８に関して上述したように、強化したデータセキュリティがもたらされる。
【００３２】
相互接続１０６が比較的簡単にアクセスされ、物理的にタップされ得るので、攻撃者は、相互接続１０６を使用して、メモリモジュール１０４に記憶された暗号化データを上書きすることによってメモリモジュール１０４に記憶されたデータを破損させるように、偽の記憶動作を挿入するように試みる場合がある。したがって、このような攻撃を防止するために、少なくとも１つの実施形態では、処理システム１００は、記憶動作が、実際に許可された要求元からの正当な記憶動作であることを検証するために、様々な認証プロセスを用いてもよい。このような認証プロセスは、例えば、暗号ハッシュ認証プロセス又はシリアル番号ベースの認証プロセスを含んでもよい。
【００３３】
図３は、少なくとも１つの実施形態による、これらの認証プロセスの一方又は両方を実装するための例示的なハードウェア実装を示す図である。図示した実施形態では、メモリインタフェース１１２の暗号エンジン１２４は、暗号ハッシュモジュール３０２と、暗号化／復号化モジュール３０４と、シリアル番号生成部３０５と、を含む。同様に、メモリインタフェース１２８の暗号エンジン１３２は、暗号化／復号化モジュール３０６と、暗号ハッシュモジュール３０８と、ハッシュ比較ロジック３１０と、シリアル番号比較ロジック３１２と、を含む。
【００３４】
ハッシュベースの認証動作では、第１暗号文ＣＴ１及びメモリアドレスＡＤＤＲが暗号ハッシュモジュール３０２に入力され、ハッシュモジュール３０２は、ハッシュ値（「Ｈ１」と示されている）を生成するために、ハッシュキーＸを使用して、第１暗号文ＣＴ１及びメモリアドレスＡＤＤＲの暗号ハッシュを行う。次に、ハッシュ値Ｈ１が暗号化／復号化モジュール３０４に入力されると、暗号化／復号化モジュール３０４は、暗号化ハッシュ値（「Ｈ２」と示されている）と、第２暗号文ＣＴ２と、暗号化メモリアドレスＥＮ＿ＡＤＤＲとの各々を生成するために、対応するキーＫ（例えば、図１のキーＫ２）を使用して、ハッシュ値Ｈ１と、第１暗号文ＣＴ１と、メモリアドレスＡＤＤＲとの各々を暗号化する。暗号化されたハッシュ値Ｈ２は、上述したように、記憶動作のシグナリングの一部として、第２暗号文ＣＴ２及び暗号化メモリアドレスＥＮ＿ＡＤＤＲと共に送信される。暗号化／復号化モジュール３０６は、メモリインタフェース１２８で当該シグナリングを受信すると、ハッシュ値Ｈ１及びメモリアドレスＡＤＤＲの平文コピーを生成するとともに第１暗号文ＣＴ１のコピーを生成するために、対応するキーＫ（例えば、図１のキーＫ３）を使用して、暗号化されたハッシュ値Ｈ２と、第２暗号文ＣＴ２と、暗号化メモリアドレスＥＮ＿ＡＤＤＲとを復号化する。
【００３５】
暗号ハッシュモジュール３０８は、受信した記憶動作が正当であることを検証するために、取得したハッシュ値Ｈ１、メモリアドレスＡＤＤＲ及び第１暗号文ＣＴ１のコピーを使用して、暗号ハッシュモジュール３０２による同じ又は対称的なハッシュ演算を行い、ハッシュ値（「Ｈ３」と示されている）がもたらされる。次に、ハッシュ比較ロジック３１０は、取得したハッシュ値Ｈ１のコピーを、生成されたハッシュ値Ｈ３と比較する。ハッシュ比較ロジック３１０は、比較結果によって２つのハッシュ値が一致すること判明した場合、この記憶動作を許可されたものとして識別し、メモリインタフェース１２８が記憶動作を処理し続けることに応じて「ＶＡＬＩＤ」信号を提供する。しかしながら、攻撃者が、暗号ハッシュモジュール３０２，３０８に使用されるキーＸのコピーを有する可能性が低いことから、不正な記憶動作を挿入しようとする攻撃者の試みは、取得したハッシュ値Ｈ１と、生成されたハッシュ値Ｈ３との間で不一致が生じることになる。このような場合には、ハッシュ比較ロジック３１０は、メモリインタフェース１２８が記憶動作のさらなる処理を中止することに応じて「ＮＯＰ」信号を提供し、当該記憶動作を「ノーオペレーション」又は「ＮＯＰ」として扱う。
【００３６】
シリアル番号ベースの認証動作では、シリアル番号生成部３０５は、シリアル番号のシーケンス（例えば、インクリメント又はデクリメントシーケンスの何れか）において次のシリアル番号を生成し、このシリアル番号の値をＳＮとして暗号化／復号化モジュール３０４に提供する。暗号化／復号化モジュール３０４は、対応するキーＫ（例えば、図１のキーＫ２）を使用して、シリアル番号ＳＮと、第１暗号文ＣＴ１と、メモリＡＤＤＲと、を暗号化して、暗号化シリアル番号（「ＥＮ＿ＳＮ」と示されている）と、第２暗号文ＣＴ２と、暗号化メモリアドレスＥＮ＿ＡＤＤＲとの各々を生成する。これらの値は、上述したように、記憶動作のシグナリングの一部として送信される。暗号化／復号化モジュール３０６は、メモリインタフェース１２８でこのシグナリングを受信すると、対応するキーＫ（例えば、図１のキーＫ３）を使用して、暗号化されたシリアル番号ＥＮ＿ＳＮと、第２暗号文ＣＴ２と、暗号化メモリアドレスＥＮ＿ＡＤＤＲとを復号化して、シリアル番号ＳＮ及びメモリアドレスＡＤＤＲの平文コピーと、第１暗号文ＣＴ１のコピーとを生成する。
【００３７】
シリアル番号比較ロジック３１２は、受信した記憶動作が正当であることを検証するために、レジスタ３１４又は他の記憶コンポーネントにおけるシーケンスから使用中の現行のシリアル番号を維持する。これは、試みられた各メモリアクセス動作に対して現在のシリアル番号のローカルコピーをインクリメント又はデクリメントすることによって、又は、認証された最後のメモリアクセス動作のシリアル番号をレジスタ３１４に記憶することによって、実現されてもよい。シリアル番号ＳＮの復号化されたコピーは、暗号化／復号化モジュール３０６からシリアル番号比較ロジック３１２に提供され、シリアル番号比較ロジック３１２は、このシリアル番号ＳＮを現在のシリアル番号と比較する。シリアル番号比較ロジック３１２は、比較の結果、受信したシリアル番号ＳＮがシーケンス内の予測される次のシリアル番号であることが示された場合に、この記憶動作を許可されたものとして識別し、メモリインタフェース１２８が記憶動作を処理し続けることに応じて「ＶＡＬＩＤ」信号をもたらす。しかしながら、攻撃者がシーケンス内の次のシリアル番号を知る可能性が低いことから、偽造したシリアル番号を用いた不正な記憶動作を挿入しようとする攻撃者の試みは、復号化されたシリアル番号ＳＮのコピーと、シーケンス内の予測される次のシリアル番号と、の間で不一致が生じることになる。このような場合、シリアル番号比較ロジック３１２は、メモリインタフェース１２８が記憶動作のさらなる処理を中止することに応じて「ＮＯＰ」信号を提供し、当該記憶動作を「ノーオペレーション」又は「ＮＯＰ」として扱う。
【００３８】
いくつかの実施形態では、両方の認証プロセスを並列に利用することができ、この場合、ＡＮＤロジックを使用して、ハッシュ比較ロジック３１０及びシリアル番号比較ロジック３１２の両方が「ＶＡＬＩＤ」をシグナリングする場合に「ＶＡＬＩＤ」信号を提供し、且つ、ハッシュ比較ロジック３１０及びシリアル番号比較ロジック３１２の何れかが「ＮＯＰ」をシグナリングする場合に「ＮＯＰ」信号を提供してもよい。
【００３９】
各処理モジュール／メモリモジュールのペアが相互接続１０６及びメモリインタフェース１１２，１２８の個別の実施形態を実施すると、所定の処理モジュール１０２のためのメモリインタフェース１１２は、相互接続１０６の反対側の対応するメモリインタフェース１２８と同じシーケンスのメモリアクセス動作を監視し、その逆も同様に行われる。よって、従来のシステムとは対照的に、処理システム１００は、暗号エンジン１２４，１３２において行われる暗号化／復号化プロセスの一部として、ストリーム暗号、又は、ブロック暗号の連鎖モードを用いてもよい。典型的な連鎖モード又はストリーム暗号では、キャッシュライン又は他のデータの暗号化（若しくは復号化）は、現在のキャッシュライン／データ及び暗号化キーの関数だけではなく、現在のキャッシュラインの前に暗号化された１つ以上の以前のロード動作又は記憶動作のキャッシュライン／データの関数でもある。しかしながら、このようなフィードバック依存の暗号プロセスを暗号化メモリシステムに実装すると、第２暗号化プロセスがタイミングクリティカルなメモリアクセスパスに挿入され、メモリレイテンシが増大する危険性がある。
【００４０】
図４は、メモリアクセスクリティカルパスの外部でキーマテリアルを生成することによって、メモリアクセスレイテンシへの影響を低減する暗号フィードバック（ＣＦＢ）モードを用いる暗号エンジン１２４，１３２の例示的なハードウェア実装４００を示す図である。図示した実施形態では、ハードウェア実装４００は、暗号エンジン１２４，１３２の両方によって実装され得る暗号化パスハードウェアを表している。復号化パスハードウェアは、同様に実装されてもよい。
【００４１】
ハードウェア実装４００は、ステージ４０１，４０２，４０３として識別される３つの順次的な暗号化ステージに対して論理的に繰り返されるブロック暗号ロジック４０４及びＸＯＲロジック４０６を含む。ブロック暗号ロジック４０４は、２つの入力（キー（図４において「ＫＥＹ」と示されている）を受信するための１つの入力と、第１ステージ４０１が初期化ベクトル（ＩＶ）を受信することを除いて、暗号化された出力を前のステージから受信するための入力と）を有する。ＩＶは、典型的には、上述したように、処理モジュール１０２とメモリモジュール１０４との間の初期化プロセス中に交換される共有キー情報の一部である。ブロック暗号ロジック４０４は、所定のステージにおいて、２つの入力を使用して暗号プロセス（暗号化又は復号化）を行い、この結果が同じステージのＸＯＲロジック４０６の入力に出力される。ＸＯＲロジック４０６は、そのステージに関連するデータを受信するための第２入力を有する。各データは、メモリアクセス動作のシーケンスからメモリモジュール１０４への対応するキャッシュラインを含んでもよい。その代わりに、各データは、メモリアクセス動作のシーケンスからメモリモジュール１０４への対応するメモリアドレスを含んでもよい。図４に示すＣＦＢモードでは、メモリアクセスクリティカルパスから２つのＸＯＲ演算（各メモリインタフェースに１つずつ）が除去されているので、暗号ブロック連鎖技術によって強化されたセキュリティを使用しながら、メモリレイテンシへの影響を最小限に抑えることができる。
【００４２】
上述したように、メモリモジュール１０４は、暗号エンジン１３２を有するメモリインタフェース１２８を実装する。この構成は、対応するメモリ回路に緊密に接続された付加ロジックを利用するプロセッサインメモリ（ＰＩＭ）実装に特に適している。図５は、本明細書に記載した技術を有利に利用することができる例示的なＰＩＭベースのシステム５００を示す図である。
【００４３】
図示した例では、システム５００は、ホストプロセッサ５０２（処理モジュール１０２の一実施形態）と、１つ以上のメモリスタック（例えば、メモリスタック５０４，５０５，５０６，５０７等）のセット（メモリモジュール１０４の一実施形態）と、を含み、インターポーザ５０１（回路基板又はダイを含んでもよい）上に配置されている。各メモリスタックは、ロジックダイ５０８及びメモリダイ５０９，５１０，５１１，５１２のセットを含むダイのスタックを含む。ロジックダイ５０８は、メモリインタフェース１２８を実装し、メモリダイは、メモリコア１２６を実装する。メモリスタックのダイは、シリコン貫通ビア（ＴＳＶ）（図示省略）によって結合されているので、物理的にタップするのは比較的困難である。インターポーザ５０１の導電性トレース（図示省略）は、ホストプロセッサ５０２をメモリスタック５０４〜５０７に接続し、ピン（図示省略）は、当該導電性トレースを、ホストプロセッサ５０２とメモリスタック５０４〜５０７との間の相互接続１０６（図１）を形成するコンポーネントに接続する。しかしながら、導電性トレース及びピンは、メモリスタックのＴＳＶとは異なり、物理的にタップするのが比較的容易であることから、不正なエンティティが、これらの相互接続を介して送信されるデータへのアクセスを試みることが比較的容易である。したがって、ＰＩＭベースのシステム５００は、上述した二重暗号化、メモリアドレス暗号化、暗号化ハッシュ検証又は連鎖ベース暗号化技術のうち１つ以上を用いて、相互接続及びその内部で転送されるデータのインテグリティを保証してもよい。
【００４４】
いくつかの実施形態では、上述した装置及び技術は、図１〜図５を参照して上述したモジュール１０２，１０４等の１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムにおいて実装される。これらのＩＣデバイスの設計及び製造には、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールを使用することができる。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、１つ以上のＩＣデバイスの回路を製造するために製造システムを設計又は適応させるプロセスの少なくとも一部を実行するように、当該回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよく、これらの媒体からアクセスされてもよい。
【００４５】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、他の方法で有形に具体化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行された場合に、上述した技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体、又は、非一時的な記憶媒体の組み合わせを含んでもよい。このような記憶媒体には、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれるが、これらに限定されない。コンピュータ可読記憶媒体は、コンピューティングシステム（例えば、システムＲＡＭ又はＲＯＭ）に埋め込まれてもよく、コンピューティングシステム（例えば、磁気ハードドライブ）に固定的に取り付けられてもよく、コンピューティングシステム（例えば、光ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）に取り外し可能に取り付けられてもよく、有線又は無線ネットワーク（例えば、ネットワークアクセス可能記憶装置（ＮＡＳ））を介してコンピューティングシステムに接続されてもよい。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００４６】
全般的な説明において上述した活動又は要素の全てが必要であるとは限らず、特定の活動又はデバイスの一部が必要でなくてもよいこと、及び、１つ以上のさらなる活動が実行され、１つ以上のさらなる要素が含まれてもよいことに留意されたい。さらに、活動が列挙されている順序は、必ずしもそれらが行われる順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変更を行うことができることを理解するであろう。したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、このような変更の全ては、本発明の範囲内に含まれることが意図される。
【００４７】
利益、他の利点及び課題に対する解決手段が、特定的な実施形態に関して上述されている。しかしながら、利益、利点、課題に対する解決手段、及び、利益、利点若しくは解決手段が発生又は顕在化する可能性のある機能は、何れか又は全ての請求項の重要な、必須の、不可欠な特徴として解釈されるべきではない。さらに、開示された発明は、本明細書の教示の恩恵を受ける当業者には明らかであるが異なる同等の方法で修正され実施され得るので、開示された特定の実施形態は単なる例示である。以下の特許請求の範囲に記載されたもの以外の本明細書に記載された構成及び設計の詳細に限定されることを意図していない。したがって、開示された特定の実施形態は、変更又は修正されてもよく、かかる全ての変形は、開示された発明の範囲内であると考慮されることが明らかである。よって、本明細書で求められる保護は、以下の特許請求の範囲に記載されている。
【図１】
2019502211.tif 000003
【図２】
2019502211.tif 000004
【図３】
2019502211.tif 000005
【図４】
2019502211.tif 000006
【図５】
2019502211.tif 000007
【国際調査報告】
2019502211.tif 000008
2019502211.tif 000009