(57)【特許請求の範囲】
【請求項１】
コンピュータに実行され、システムメモリに対するハードウェアの攻撃から保護する方法であって、
プロセッサにより、前記プロセッサとは別個のメモリを複数の論理的分割領域に分割する段階と、
前記プロセッサ内の複数のカウンタのそれぞれを前記複数の論理的分割領域のうちの一つに割り当てる段階と、
前記プロセッサにより、前記複数の論理的分割領域のうちの第１の論理的分割領域に記憶されるべき、アプリケーションに関連付けられたデータの第１のブロックを暗号化する段階と、
前記第１の論理的分割領域に暗号化したデータのブロックを格納する段階と
を備え、
前記複数の論理的分割領域のそれぞれは、前記アプリケーションに関連付けられたデータの複数のブロックのうちの一つを記憶し、
前記複数のカウンタのそれぞれは、前記複数の論理的分割領域のうちの割り当てられた一つに関連付けられたタイムスタンプ値を格納し、
データの前記第１のブロックは、前記メモリのキャッシュライン識別子と、暗号化されるべき、データの前記第１のブロックの識別された前記キャッシュラインの位置と、前記第１の論理的分割領域に割り当てられた前記カウンタの前記タイムスタンプ値とを含む調整を用いて暗号化される、方法。
【請求項２】
前記調整は、前記アプリケーションのバージョン数を示すラベルを更に備える、請求項１に記載の方法。
【請求項３】
前記アプリケーションは、セキュアなアプリケーションである、請求項１または２に記載の方法。
【請求項４】
前記調整はＸＴＳ−ＡＥＳ調整である、請求項１に記載の方法。
【請求項５】
前記調整はＬＲＷ調整である、請求項１に記載の方法。
【請求項６】
システムメモリに対するハードウェアの攻撃から保護する装置であって、
プロセッサ内で、前記プロセッサとは別個のメモリを複数の論理的分割領域に分割する第１の論理と、
前記プロセッサ内の複数のカウンタのそれぞれを前記複数の論理的分割領域のうちの一つに割り当てる前記プロセッサ内の第２の論理と、
前記複数の論理的分割領域のうちの第１の論理的分割領域に記憶されるべき、アプリケーションに関連付けられたデータの第１のブロックを暗号化する前記プロセッサ内の第３の論理と、
前記第１の論理的分割領域に暗号化したデータのブロックを格納する第４の論理と、
を備え、
前記複数の論理的分割領域のそれぞれは、前記アプリケーションに関連付けられたデータの複数のブロックのうちの一つを記憶し、
前記複数のカウンタのそれぞれは、前記複数の論理的分割領域のうちの割り当てられた一つに関連付けられたタイムスタンプ値を格納し、
データの前記第１のブロックは、前記メモリのキャッシュライン識別子と、暗号化されるべき、データの前記第１のブロックの識別された前記キャッシュラインの位置と、前記第１の論理的分割領域に割り当てられた前記カウンタの前記タイムスタンプ値とを含む調整を用いて暗号化される、装置。
【請求項７】
前記調整は、前記アプリケーションのバージョン数を示すラベルを更に備える、請求項６に記載の装置。
【請求項８】
前記アプリケーションは、セキュアなアプリケーションである、請求項６または７に記載の装置。
【請求項９】
前記調整はＸＴＳ−ＡＥＳ調整である、請求項６に記載の装置。
【請求項１０】
前記調整はＬＲＷ調整である、請求項６に記載の装置。
【請求項１１】
システムメモリに対するハードウェアの攻撃から保護するシステムであって、
アプリケーションを格納する大容量格納装置と、
プロセッサと
を備え、
前記プロセッサは、
前記プロセッサとは別個のメモリを複数の論理的分割領域に分割する第１の論理と、
前記プロセッサ内で複数のカウンタのそれぞれを前記複数の論理的分割領域のうちの一つに割り当てる前記プロセッサ内の第２の論理と、
前記複数の論理的分割領域のうちの第１の論理的分割領域に記憶されるべき、アプリケーションに関連付けられたデータの第１のブロックを暗号化する前記プロセッサ内の第３の論理と、
前記第１の論理的分割領域に暗号化したデータのブロックを格納する第４の論理と、
を有し、
前記複数の論理的分割領域のそれぞれは、前記アプリケーションに関連付けられたデータの複数のブロックのうちの一つを記憶し、
前記複数のカウンタのそれぞれは、前記複数の論理的分割領域のうちの割り当てられた一つに関連付けられたタイムスタンプ値を格納し、
データの前記第１のブロックは、前記メモリのキャッシュライン識別子と、暗号化されるべき、データの前記第１のブロックの識別された前記キャッシュラインの位置と、前記第１の論理的分割領域に割り当てられた前記カウンタの前記タイムスタンプ値とを含む調整を用いて暗号化される、システム。
【請求項１２】
前記調整は、前記アプリケーションのバージョン数を示すラベルを更に含む、請求項１１に記載のシステム。
【請求項１３】
前記調整は、ＸＴＳ−ＡＥＳ調整およびＬＲＷ調整のうちのいずれかである、請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データの暗号保護に係り、より詳しくは、メモリのメモリ領域に格納されているソフトウェアアプリケーションの暗号化に係る。
【背景技術】
【０００２】
セキュアなソフトウェアアプリケーションが利用するシステム内の揮発性メモリの領域は、権原なき者による悪意ある修正から保護される必要がある。これらの悪意ある修正は（「攻撃」と称される場合もある）、ソフトウェア攻撃もあればハードウェア攻撃も含まれうる。セキュアなソフトウェアアプリケーションのための機密性と整合性保護を提供するために方法の１つに、中央処理装置（ＣＰＵ）パッケージに大きな揮発性メモリを組み込んで、セキュアなソフトウェアアプリケーションによる「私的なメモリ」として利用する、というものがある。しかし、大きな揮発性メモリをＣＰＵパッケージに組み込むと、コストが高くなる。
【０００３】
従って通常は、セキュアなソフトウェアアプリケーションは、外部メモリに格納される（つまり、ＣＰＵの外部に格納される）。外部メモリの、セキュアなソフトウェアアプリケーションを格納するためのメモリ領域（エリア）は、システムのオペレーティングシステム（ＯＳ）から見える場合も、見えない場合もある。ＯＳからこれらのメモリ領域が見える場合には、ソフトウェア攻撃から守られている必要がある。これらのメモリ領域がＯＳからは見えない場合には（「盗まれたメモリ領域」とも称される）、アクセス制御機構が存在している、ということになるので、ハードウェアアタックから守られている必要がある（つまり、外部メモリに物理的にアクセスしてくる攻撃者から守られている必要がある）。
【０００４】
請求される主題の実施形態の特徴は、以下に詳細に説明される記載から明らかになり、図面では、同様の部材が同様の参照番号で示されている。
【図面の簡単な説明】
【０００５】
【図１】盗まれたメモリ領域を含むシステムメモリを示す。
【図２Ａ】拡張された調整を示す一実施形態である。
【図２Ｂ】拡張された調整を示す別の実施形態である。
【図３】メモリ暗号化を実行するメモリ暗号化エンジンを含むシステムのブロック図である。
【図４】図３に示す拡張メモリの、暗号化するデータを格納するためのメモリ領域の一部のブロック図である。
【図５】アプリケーションによる図４に示す外部メモリのメモリ領域の一部の分割部分を利用するための方法を示す。
【図６】メモリに、信頼されているアプリケーションを格納する方法の一実施形態を示す。
【図７】信頼されているアプリケーションに対してメモリを更に割り当てる方法の一実施形態を示す。
【発明を実施するための形態】
【０００６】
以下の詳細な記載は、請求されている主題を示す実施形態を参照したものであるが、当業者には数多くの変形例および変更例が可能である。従って請求されている主題は広義の解釈が意図されており、添付されている請求項のみにより定義される。
【０００７】
図１は、盗まれたメモリ領域１０２を含むシステムメモリ１００一実施形態を示す。盗まれたメモリ領域１０２は、オペレーティングシステム（ＯＳ）からは見えないメモリ領域（メモリの一部）である。システムメモリ１００は、「外部の」メモリであり、これはつまり、システムの中央処理装置（ＣＰＵ）から切り離されていることを意味している。盗まれたメモリ領域１０２は、複数の物理的ページ１０６を含んでいる。３つのソフトウェアアプリケーション１０４−１、１０４−２、１０４−３は、盗まれたメモリ領域１０２の１以上の物理ページ１０６にわたるメモリ領域内に含まれている。各ソフトウェアアプリケーション１０４−１、１０４−２、１０４−３は、システム(外部)メモリ１００の盗まれたメモリ領域１０２の複数の物理的ページ１０６にわたり設けられている。
【０００８】
セキュアなソフトウェアアプリケーションが利用しているメモリ領域を保護する１つの方法としては、システムメモリ１００のメモリ領域に格納されているデータを暗号化する、というものがある。メモリ領域に格納されているデータの暗号化および復号化は、ＣＰＵによって、ＣＰＵ内で生成され、且つ、格納されている鍵を利用して行われる。しかし、データの暗号化自身は、データの機密性を提供することのみが目的である。メモリ領域に格納されているデータを暗号化することで、攻撃者が外部メモリを受動的に読めなくしたり、ＣＰＵとシステムメモリ１００との間をやりとりされる間にデータをのぞき見たりできなくしたりすることができる、という意味でデータの機密性を保護する助けとなる。
【０００９】
しかし、外部メモリ１００のメモリ領域に格納されているデータの暗号化は、整合性チェックを提供するわけではない。外部メモリ１００の盗まれたメモリ領域１０２のメモリ領域にデータを暗号化された形で格納しても、外部メモリ１００の盗まれたメモリ領域１０２に格納されているメモリ画像の部分の修正またはリプレーを活発に試みる攻撃者からの保護はできない。
【００１０】
悪意のある攻撃者（敵対者）は、外部メモリ１００のあるメモリ位置からコピーして、外部メモリの別のメモリ位置に書き込む。例えば、攻撃者は、ページｘのアドレスａのコンテンツを、ページｙのアドレスｂにコピーすることができる。暗号化されたメモリ領域に読み書きアクセス可能な敵対者は、暗号化されたメモリ領域が修正された時点（例えば時点２（ｔ２））を見極めて、時点１（ｔ１）に書き込まれた、暗号化領域のコンテンツをコピーするおとでメモリ領域をリセットすることで、リプレーアタックを行うことができる。リプレーアタックを行う攻撃者は、異なる時点の同じメモリ領域に存在しうる２つの異なるアプリケーション（コンテキスト）のうち１つの制御を有している。例えば、攻撃者は、アプリケーションのうち１つを利用して他のアプリケーションを攻撃することができる。
【００１１】
リプレーアタックを減らすための方法の１つに、外部メモリ１００の暗号化されたデータとともに認証タグをセキュアに格納する、という方法がある。しかし、この方法はメモリの増設を必要とするので高くつく。
【００１２】
本発明の一実施形態では、攻撃の効果を、メモリ画像への無作為な（予期できず、制御不可能な）の変更を引き起こす能力に留めることで、リプレーアタックを軽減させる。
【００１３】
調整および暗号文窃盗（ＸＴＳ）機能を有するＸＥＸ暗号モード−ＡＥＳ（Advanced Encryption Standard）調整値付きブロック暗号化（ＩＥＥＥ規格１６１９−２００７）は、一定の長さの複数のブロックに格納される暗号保護されたデータのアーキテクチャの要素を定義しているアメリカ国立標準技術研究所（ＮＩＳＴ）の連邦情報処理規格（ＦＩＰＳ）１４０−２に準拠した動作モードである。一実施形態では、標準的なＸＴＳ−ＡＥＳ動作モードを向上させたブロック暗号の新たな動作モード、および、ブロック暗号化のためのＸＴＳ−ＡＥＳ動作モードを利用しつつメモリ暗号化を実装する方法および方法が提供される。
【００１４】
ＸＴＳ−ＡＥＳ動作モードは、データストリームの最後のデータユニットのみが他のデータユニットより小さいことがあるが、原則１つのデータストリームを複数の連続した同じサイズのデータユニットに分割した場合の暗号化に利用される。各データユニット１２８は、１つの鍵の範囲内に１２８以上のビットのデータを有している。鍵の範囲は、特定の鍵で暗号化されたデータを、サイズが同じデータユニットに分割したデータである。鍵の範囲は、３つの負ではない整数により特定される（つまり、第１のデータユニットに対応する調整値、データユニットのサイズ、およびデータの長さ）。調整値は、ＸＴＳ−ＡＥＳで暗号化または復号化されているデータストリーム内のデータの論理位置を表すために利用される１２８ビットの値である。各データユニットには、負ではない整数の調整値が割り当てられる。調整値は、任意の負ではない整数から、連続割り当てされる。
【００１５】
ＸＴＳ−ＡＥＳ動作モードは、「調整可能な幅の狭いブロック暗号化」であり、ディスク暗号化の標準的なモードである（静止データの暗号化）。データブロックの暗号化を「インデックス」位置の関数として修正する調整値（調整）が利用される電子コードブック（ＥＣＢ）モードの暗号化として捉えることができる。ＥＣＢモードでは、各平文ブロックをブロック暗号化とは独立して暗号化する。ディスク暗号化では、ＸＴＳ−ＡＥＳ動作モードで、調整により、暗号化されるディスクドライブ（格納媒体）上のセクターに暗号化を結びつける。
【００１６】
一実施形態では、メモリ暗号化ユニットがＸＴＳ−ＡＥＳ動作モードを利用して、処理されたデータブロックの（物理的）メモリアドレスに暗号化を結びつける。ＡＥＳ−ＸＴＳを利用することで、暗号化されたメモリの画像を物理的に操作できる攻撃者、および、暗号化されたブロックの位置をスワップしようとする攻撃、および、暗号化されたブロックを他の暗号化されたブロックで書き換えようとする攻撃にかなりの程度対抗することができるようになる。ＡＥＳ−ＸＴＳ調整は、物理的メモリアドレスの関数なので、攻撃を、攻撃者が予測不可能且つ制御不可能な無作為な変更を引き起こす程度の、かなり弱い攻撃同様にすることができる。言い換えると、攻撃者は、メモリを「闇雲に」変更したことによる利点くらいしか、スワップ／書き換えから利益を得ることができなくなる。
【００１７】
しかし、ＸＴＳ−ＡＥＳ調整が物理的アドレスの関数であることは、攻撃者が、あるブロックを同じアドレスに前に書き込まれた暗号化されたブロックで書き換えるリプレーアタックに対する保護はできないことも意味している。この種類の攻撃が潜在的に持っている被害を例示するために、暗号化された画像を時点１（ｔ１）にメモリのページｘに書き込むソフトウェアアプリケーションを考える。攻撃者は、この暗号化された画像を、メモリに対するハードウェアアクセスによってセーブする。そして攻撃者は、ソフトウェアによる方法によりソフトウェアアプリケーションをエビクトして、同じメモリ領域に、悪意のあるソフトウェアアプリケーションをロードする。次いで攻撃者は、ページｘに暗号化された画像のコピーを物理的にリプレーし、この時点から、悪意あるソフトウェアアプリケーションが画像を完全に乗っ取る。例えば悪意のあるソフトウェアアプリケーションは、機密事項を復号して、選択した任意のメモリ位置に平文としてダンプすることができる。この攻撃は、鍵の可能性を使い果たすために必要となる回数攻撃プロセスを繰り返すだけで事足りることから、メモリ暗号ユニットについてＣＰＵが限られた数の鍵を利用する場合であっても実行可能である。これら攻撃は、ＣＰＵから（例えばＥＰＩＤ：Enhanced Privacy Identifierから）、または繊細なコードから機密事項を取得することができる。
【００１８】
ディスク暗号の標準的なＸＴＳモードでは、ユニット（ｕ）のインデックスが（ｊ）であるデータブロックＰのＡＥＳ−ＸＴＳは、先ず調整値を生成して、次いでこの調整値を利用して平文から暗号文を生成することで行われる。
【００１９】
例えば、調整値（Ｘ）は、ブロック識別子（ユニット（ｕ）、ユニット（ｕ）のユニットの位置（ｊ））の１６バイトの鍵値（Ｋ１）を利用することで生成され、多項式（Ｐｏｌｙ：
【数Ａ】
0005632086.tif 000002
）は以下のように示される。
【数１】
0005632086.tif 000003
上式において「＊」はキャリーなし乗算を表している。
【００２０】
調整値（Ｘ）が生成されると、以下に示すように、暗号文（Ｃ）を、この調整値（Ｘ）と別の１６バイトの鍵値（Ｋ２）とを利用して平文（Ｐ）から生成することができる。
【数２】
0005632086.tif 000004
【００２１】
ＡＥＳ−ＸＴＳは、ユニット（ｕ）の値について６４ビット（８バイト）をリザーブする。ＡＥＳ暗号が１６バイトのブロックに行われるとき、数１に示すように暗号化された、ブロック（１６バイト）の６４個の残りのビット（８バイト）（＝"ｕ"）が０として定義される。
【００２２】
ＡＥＳ−ＸＴＳは、「ユニット」を６４バイトのキャッシュラインとして定義して、インデックスｊ＝０、１、２、３を、キャッシュラインの１６バイトのデータブロックの位置を示すものとすることで、メモリ暗号化に利用することができる。この場合には、「ｕ」の値が、キャッシュラインの（物理的）アドレスとなる。物理的アドレスは通常は４８ビットを利用してエンコードされる。
【００２３】
本発明の一実施形態では、調整でもっと情報を利用するために、標準的なＡＥＳ−ＸＴＳモードの拡張に基づく新たな動作モードが提供される（拡張された調整）。拡張された調整には、キャッシュラインのアドレスおよびブロック位置等の標準的な情報に加えて、タイムスタンプの値が含まれる。別の実施形態では、拡張された調整に、例えば少なくとも１つのさらなるラベルが含まれる。一実施形態では、さらなるラベルは、システムで稼動しているソフトウェアアプリケーションのバージョン数である。バージョン数を調整に加えることで、ソフトウェアアプリケーションの古いバージョンからキャッシュラインをコピーして、ソフトウェアアプリケーションの新たなバージョンの同じアドレスでリプレーを行い、古いバージョンを動かしつつ、新たなバージョンの特権を得ることができなくなる。
【００２４】
一実施形態では、さらなる情報を格納する、拡張された調整のビットは、拡張された調整の上位（最上位）６４ビットにある。上述したように、標準的なＡＥＳ−ＸＴＳモードでは、最上位ビットが０に設定される。別の実施形態では、さらなる情報が、ゼロであることを保証された他のビットにある。従い、全てのさらなる情報ビットを０に低下させると暗号が標準的なＸＴＳモードになることから、拡張されたＡＥＳ−ＸＴＳは、標準的なＡＥＳ−ＸＴＳを一般化したものである。
【００２５】
拡張された調整は以下の数３で示すように生成される。
【数３】
0005632086.tif 000005
ここでＰは、ユニットｕにおけるインデックスがｊであり、Ｔで示す時点に暗号化され、ラベルＬをもつデータブロックであり、シンボル「｜」は連結を示している。
【００２６】
別の実施形態では、ラベルを利用せずに、キャッシュラインのアドレスと時間とを利用して、拡張された調整を生成する。拡張された調整は、調整が連続した整数、時点０、１、…、２^（３２）−１）における領域のカウントアドレスを記述するように生成される。
【００２７】
ＣＬ[ｊ]（ＴＩＭＥの時点）の調整（ｊ＝０、１、２…、ｍ−１、およびＴＩＭＥ＝０、１、２、…、２^（３２）−１）は、以下のように表される。
ＴＷＥＡＫ（調整）＝00…0[127：55]|(ACL[ｊ]>>6)[33:n+14]|TIME[31:0]|(ACL[0]>>6)[n+13:0]
上式において、Ｕｎｉｔ＝キャッシュライン（ＣＬ）、各Ｃｌは２^（６）＝６４バイト（４ｘ１２８ビット（２^（２０））ブロックに相当する）、各ＣＬは４０ビットのベースアドレスを有し、ACL[5:0]=[000000]であるACL[39:0]、分割領域は２^ｎＭＢを有し、ｍ（分割領域におけるＣＬの数）＝２^（ｎ＋１４）であり、ｊは１つのデータストリームのｍ個のＣＬのうちの１つであり、このデータストリームは、異なる時点におけるｍ個のＣＬであり（つまり時点ｔにおけるCL[j]）、時点ｔ＝０で、CL[0], CL[1], …, CL[m-1]であり、時点ｔ＝１で、CL[0], CL[1], …, CL[m-1]であり、時点ｔ＝２^（３２）−１で、CL[0], CL[1], …, CL[m-1]であり、CL[j]についてのベースアドレスは、ACL[j]で表される（ｊ＝０、１、２、…、ｍ−１）。
【００２８】
データストリームのＣＬの（ユニット）について実行する際（上述した順序で）、ＴＷＥＡＫは、正の整数00…0[127：55]|(ACL[0]>>6)[33:n+14]|00…0[31:0]|(ACL[0]>>6)[n+13:0]から始まり、00…0[127：55]|(ACL[m-1]>>6)[33:n+14]|00…0[31:0]|(ACL[m-1]>>6)[n+13:0]で終わる全ての正の整数について連続して実行される。例えば、ｎ＝１でｍ＝１５である２ＭＢの分割領域を例に考える。ＴＩＭＥ（３２ビット）時点のCL[j]の調整は、00…0[127：55]|(ACL[j]>>6)[33:15]|TIME[31:0]|(ACL[j]>>6)[14:0]ように定義することができる。
【００２９】
図２Ａは、拡張された調整２００の一実施形態である。図２Ａに示す拡張された調整２００は１２８ビットの値を有している。拡張された調整２００の最下位の４８ビット（ビット４７：０）２０６は、アドレス（ｕ）についてリザーブされており、残りの８０k個の最上位ビット（ビット１２７：４８）２０４がタイムスタンプ（Ｔ）についてリザーブされている。
【００３０】
図２Ｂは、拡張された調整２００の別の実施形態である。図２Ｂに示す拡張された調整２０２の実施形態では、拡張された調整２０２の最下位６４ビット[ビット６３：０]がアドレス（ｕ）２１２についてリザーブされており、次の３２ビット[ビット９５：６４]がタイムスタンプ（Ｔ）２１０についてリザーブされており、最上位３２ビット[ビット１２７：９６]がラベル（Ｌ）２０８についてリザーブされている。
【００３１】
図２Ｂに示す拡張されたＡＥＳ−ＸＴＳの実施形態で暗号化されたブロックを復号するためには、暗号文Ｃ、アドレスｕ、および、インデックスｊと、更に、タイムスタンプＴとラベルＬとが必要となる。一実施形態では、タイムスタンプ（Ｔ）およびラベル（Ｌ）は秘密ではないが、信頼のおける方法で格納されている。
【００３２】
拡張されたＡＥＳ−ＸＴＳ調整の利点は、以下の「時間隔離」特性である。つまり、時点ｔ１でアドレスＡ１について暗号化された暗号文ＣがアドレスＡ１でリプレーされ、時点ｔ２で復号された場合、タイムスタンプの値が異なることから調整値が異なるので、予測不可能なストリングに復号される。
【００３３】
この「時間隔離」特性を利用すると、攻撃者は、「同じアドレスに対するリプレー」を行っても、メモリの画像を無作為に（予測不能で制御不能）変化させた場合に得られる利点くらいしか得られないことから、Ｔｙｐｅ２のリプレーアタックからの保護が可能となる。同様に、拡張されたＡＥＳ−ＸＴＸ調整モードでも、ラベル（Ｌ）で区別されるコンテキスト間の隔離を行うことができる。
【００３４】
ＸＴＳ−ＡＥＳについての実施形態を記載してきたが、拡張された調整モードはＸＴＳ−ＡＥＳに限定されるものではなく、他の調整可能な暗号スキームを利用する他の実施形態にも応用可能である。例えばＬＲＷ（Ｍ．Ｌｉｓｋｏｖ、Ｒ．Ｒｉｖｅｓｔ、およびＤ.Ｗａｇｎｅｒ）調整可能なブロック暗号を利用する実施形態では、類似した方法でＬＲＷモードが向上するようにＬＲＷを向上させることができる。
【００３５】
図３は、メモリ暗号化を実行するメモリ暗号化エンジン３０３を含むシステム３００のブロック図である。システム３００は、プロセッサ３０１、メモリコントローラハブ（ＭＣＨ）３０２、および、入出力（Ｉ／Ｏ）コントローラハブ（ＩＣＨ）３０４を含む。ＭＣＨ３０２は、プロセッサ３０１と外部メモリ１００との間の通信を制御するメモリコンローラ３０６を含む。プロセッサ３０１とＭＣＨ３０２とは、システムバス３１６経由で通信する。
【００３６】
プロセッサ３０１は、シングルコアＩｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）  ＩＶ（登録商標）プロセッサ、シングルコアＩｎｔｅｌ  Ｃｅｌｅｒｏｎプロセッサ、Ｉｎｔｅｌ（登録商標）ＸＳｃａｌｅプロセッサ、または、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）  Ｄ等のマルチコアプロセッサ、Ｉｎｔｅｌ（登録商標）Ｘｅｏｎ（登録商標）プロセッサ、またはＩｎｔｅｌ（登録商標）Ｃｏｒｅ（登録商標）Ｄｕｏプロセッサ、その他の種類のプロセッサ等の、複数のプロセッサのいずれかであってよい。
【００３７】
プロセッサ３０１内のメモリ暗号化エンジン３０３は、メモリ１００内および格納デバイス３１２内の少なくともいずれかに格納可能なデータに暗号化および復号化を実行することができる。メモリ暗号化エンジン３０３は、メモリ３０８のコンテンツを読み出す受動的な攻撃者に対抗できる機密性を提供することができる。メモリ暗号化エンジン３０３は更に、１６バイトで動作する暗号により、１６バイトの粒度でメモリのメモリ領域に読み書きができる能動的な攻撃者に対抗して保護を提供することもでき、メモリ３０８のキャッシュラインは６４バイトである。例えば６４バイトのキャッシュラインの１６バイトのセグメントの１ビットが修正された場合、１６バイトのセグメントが、攻撃者にとって「無作為」であり、予測不能なものである。
【００３８】
メモリ１００は、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭ、ＤＤＲ２ＲＡＭ、ＲＤＲＡＭ、その他の任意の種類のメモリであってよい。
【００３９】
ＩＣＨ３０４は、高速チップツーチップインターコネクト３１４（ＤＭＩ等）を利用してＭＣＨ３０２に連結されてよい。ＤＭＩは、２つの一方向性レーンにより２ギガビット／秒の並列転送レートをサポートする。
【００４０】
ＩＣＨ３０４は、ＩＣＨ３０４に連結される少なくとも１つの格納デバイス３１２との通信を制御するための格納Ｉ／Ｏコントローラ３１０を含んでよい。格納デバイスの例には、ディスクドライブ、ＤＶＤドライブ、ＣＤドライブ、ＲＡＩＤ、テープドライブその他の格納デバイスが含まれてよい。ＩＣＨ３０４は、ＳＡＳまたはＳＡＴＡ等のシリアル格納プロトコルを利用して、格納プロトコルインターコネクト３１８を介して格納デバイス３１２と通信してよい。
【００４１】
メモリ１００のアドレス範囲の保護についての一実施形態を説明する。
【００４２】
図４は、図３に示す拡張メモリ１００の、暗号化するデータを格納するためのメモリ領域４０２の一部のブロック図である。メモリ領域４０２は、論理的にＮ個の「分割領域」に分割されている。図３に戻ると、プロセッサ３０１にはＮ個のカウンタ３５０があり、図４に示すメモリ領域４０２の部分には１つの論理的分割領域について１つのカウンタが存在している。
【００４３】
図５は、アプリケーションによる図４に示す外部メモリ１００のメモリ領域４０２の一部の分割部分を利用するための方法を示す。図５は、図４との関連で示されている。
【００４４】
ブロック５００で、メモリ領域４０２の部分を、Ｎ個の分割領域４０４−１、…、４０４−Ｎに分割する。カウンタ４０６−１、…、４０６−Ｎを、分割領域４０４−１、…、４０４−Ｎにそれぞれ割り当てる。全てのカウンタ４０６−１、…、４０６−Ｎは最初に０にリセットする。処理はブロック５０２へと続く。
【００４５】
ブロック５０２で、ソフトウェアアプリケーションがメモリ１００に格納されると（書き込まれると）、ソフトウェアアプリケーション４１０、４１２、４１４は、１以上の論理的分割領域４０４−１、…、４０４−Ｎに１以上のキャッシュラインをポピュレートする。一実施形態では、各キャッシュラインが６４バイトであり、オペレーティングシステムがメモリページの粒度で動作している（４０９６バイトであってよい）。アプリケーションがメモリ１００にロードされると、処理はブロック５０４に移る。メモリ１００にロードされたアプリケーションがエビクトされ、別のアプリケーション（悪意がある可能性がある）が、同じアドレス空間にロードされると、処理はブロック５０４に続く。さもなくば、処理はブロック５０２を続ける。
【００４６】
ブロック５０４で、分割領域４０４−１、…、４０４−Ｎが最初にポピュレート（いくつかのキャッシュラインで）されるたびに、その分割領域に対応するカウンタ４０６−１、…、４０６−Ｎがプロセッサにより増分される。加えて、プロセッサは、対応する分割領域４０４−１、…、４０４−Ｎのカウンタ値を、エビクトおよびロード処理のうちの少なくともいずれかの一環として自動的に増分する。処理はブロック５０２を続ける。
【００４７】
図４に戻り、異なる時点で、各アプリケーション４１０、４１２、４１４を、アプリケーションがポピュレートする論理的分割領域ごとに異なりうる異なるカウンタ値を有する論理的分割領域４０４−１、…、４０４−Ｎに配置する。プロセッサ３０１のメモリ暗号化エンジン３０３は、ＸＴＳ−ＡＥＳにより向上された調整動作モードを実装しており、ここでＴはカウンタ値を示し、ｕは物理的アドレスを示しており、ｊはブロックのインデックスを示している。このように、調整値（Ｘ）は、メモリの論理的分割領域のアドレスに結合されるだけではなく、アプリケーション４１０、４１２、４１４をメモリ１００にロードした時点にＣＰＵが格納したカウンタ値にも結合されている。
【００４８】
「カウンタ」および、その初期化および増分方法はほかにもある。一実施形態では、カウンタが、クロック入力を利用して固定されたり、ランダムにされたり、増分されたりするゼロではない値に初期化されている、線形フィードバックシフトレジスタ（ＬＦＳＲ）であってよい。別の実施形態では、カウンタが、無作為または決定論的に初期化される増分ロジックを含むレジスタであってよい。また別の実施形態では、カウンタは、無作為なビット生成器からサンプルされる値であってよい。カウンタの長さ（出力ビット数）は、同じカウンタ値でコピーされた画像をリプレーしようと試みることが現実的ではないように決定されればよい。
【００４９】
図４に示す例では、メモリ１００の異なる分割領域４０４−１、…、４０４−Ｎに格納されている３つのアプリケーション４１０、４１２、４１４があり、１つの分割領域４０４−１、…、４０４−Ｎには、アプリケーション４１０、４１２、４１４が２つは格納されないようになっている。各論理分割領域４０４−１、…、４０４−Ｎにはそれぞれ別のカウンタが割り当てられる。アプリケーション４１２は、２つの分割領域４０４−２、４０４−３のページを利用して、これら分割領域それぞれが対応するカウンタ４０６−２、４０６−３を有している。論理的分割領域に格納されているアプリケーションの復号は、そのアプリケーションに割り当てられているプロセッサ内のカウンタが増分されていない場合には正確に動作する。カウンタの値は、アプリケーションが最初にそれぞれの分割領域でエビクトされるまでは増分されない。
【００５０】
アプリケーションがエビクトされて、別のアプリケーション（悪意である場合がある）が同じアドレス空間にロードされると、対応する分割領域（１または複数）のカウンタ値が、エビクトおよびロード処理のうち少なくともいずれかの一環としてＣＰＵによって自動的に増分される。タイプ２の攻撃の場合には、攻撃者は、攻撃コードが関連するメモリ領域をポピュレートしている間に、前のアプリケーションに属しているメモリの画像をコピーして、同じアドレスでリプレーする。この攻撃は、メモリが標準的なＸＴＳ−ＡＥＳ暗号で暗号化されている場合には、攻撃者がメモリの画像に格納されている機密事項を読み出すことができるために、成功する。しかし、ＸＴＳ−ＡＥＳの向上した調整モードでは、攻撃者は、カウンタ値が整合しないので結果を取得することができない。ＸＴＳ−ＡＥＳの向上した調整モードでは復号に別のカウンタ値を利用するので、無作為の修正よりもカウンタ値を利用するほうがよい。
【００５１】
利点は、この方法が調整とともに暗号化のみを利用する点であり、メモリが一度のメモリアクセスへの変換を読み書きすることである。更には、実装によって、カウンタのハードウェアのコスト上昇と、より多くの分割領域によりより良い粒度を提供する、というメモリ利用効率との間のトレードオフ関係を考慮しながら、分割領域の数を決定することもできる。
【００５２】
図６は、メモリに、信頼されているアプリケーションを格納する方法の一実施形態を示す。信頼のおけるアプリケーションを先ず初期化した後で、物理的ページのさらなる割り当てを要求する、という形で、メモリ割り当てを要求する。
【００５３】
ブロック６００で、メモリに格納したアプリケーションを受け取る。受け取ったアプリケーションはアプリケーション識別子と関連付けられて、アプリケーションの１ページ目を含んでいる。論理的分割領域がアプリケーション用に割り当てられている。処理はブロック６０２に続く。
【００５４】
ブロック６０２で、割り当てられている論理的分割領域に関連付けられている論理的分割領域の識別子に格納されているアプリケーションの識別子が、アプリケーションの識別子に設定される。割り当てられている論理的分割領域に関連付けられているページ番号は、割り当てられている論理的分割領域に関連付けられているページ番号に格納される。割り当てられている論理的分割領域に関連付けられている分割領域カウンタを増分する。処理はブロック６０４に続く。
【００５５】
ブロック６０４で、アプリケーションの１ページ目のデータを、割り当てられている論理的分割領域の１ページ目に格納する。
【００５６】
図７は、信頼されているアプリケーションに対してメモリのページを更に割り当てる方法の一実施形態を示す。
【００５７】
ブロック７００で、アプリケーションのためにメモリにデータを格納する要求を受けると、このアプリケーション用にページを割り当てた最後の論理的分割領域を決定する。処理はブロック７０２に続く。
【００５８】
ブロック７０２で、現在のページ番号が、割り当てられている論理的分割領域の最後のページである場合には、処理はブロック７０４に続く。そうではない場合には、処理はブロック７０６に続く。
【００５９】
ブロック７０４で、現在のページが、現在アプリケーションに割り当てられている論理的分割領域の最後のページである場合には、別の論理的分割領域をアプリケーションに割り当てて、アプリケーションのページを、新たに割り当てられた論理的分割領域の１ページ目にコピーする。
【００６０】
ブロック７０６では、現在のページが、現在アプリケーションに割り当てられている論理的分割領域の最後のページではないので、現在の論理的分割領域のアプリケーションに割り当てられているページ数を次のページに増分して、アプリケーションのページを、現在割り当てられている論理的分割領域の次のページにコピーする。
【００６１】
本発明の実施形態に関する方法は、コンピュータ利用可能な媒体を含むコンピュータプログラムプロダクトに具現化されてよいことは、当業者であれば理解するところである。例えば、これらコンピュータプログラムプロダクトは、コンピュータ可読プログラムコードが格納されたＣＤ  ＲＯＭディスクまたは従来のＲＯＭデバイス、または、コンピュータディスク等の読み出し専用メモリデバイスからなっていてよい。
【００６２】
本発明の実施形態を、具体例を参照しながら図示し、記載してきたが、当業者であれば形態および詳細においては、添付請求項が包括する本発明の実施形態の範囲内で様々な変更が可能であることを理解する。
【００６３】
以下、システムメモリに対するハードウェアの攻撃から保護する方法、装置、およびシステムの諸態様を付記としてまとめて記載する。
【００６４】
（付記１）プロセッサにより、アプリケーションに関連付けられており、調整を用いて暗号化されているデータのブロックを暗号化する段階と、
前記暗号化されているデータのブロックを格納するべく、前記プロセッサとは別個のメモリに論理的分割領域を割り当てる段階と
を備え、
前記調整は、前記メモリのキャッシュライン識別子と、暗号化すべく識別された、前記データのブロックのキャッシュラインの位置とを含む、方法。
【００６５】
（付記２）前記調整で割り当てられた前記論理的分割領域に関連付けられたタイムスタンプ値を格納する段階を更に備え、
前記タイムスタンプ値は、前記プロセッサによって、前記暗号化されているデータが前記割り当てられた論理的分割領域にロードされると、および、前記暗号化されているデータが前記割り当てられた論理的分割領域からエビクトされると、増分される、付記１に記載の方法。
【００６６】
（付記３）前記タイムスタンプ値は、前記プロセッサのカウンタに格納され、前記カウンタは前記論理的分割領域に割り当てられる、付記２に記載の方法。
【００６７】
（付記４）前記カウンタは、前記プロセッサとは独立して増分される、付記３に記載の方法。
【００６８】
（付記５）プロセッサで、アプリケーションに関連付けられており、前記プロセッサとは別個のメモリのキャッシュライン識別子と、暗号化すべく識別された、データのブロックのキャッシュラインの位置とを含む調整を用いて暗号化されている前記データのブロックを暗号化する論理と、
前記暗号化されているデータのブロックを格納するべく、前記メモリに論理的分割領域を割り当てる論理と
を備える装置。
【００６９】
（付記６）調整で割り当てられた前記論理的分割領域に関連付けられたタイムスタンプ値を格納する論理を更に備え、
前記タイムスタンプ値は、前記プロセッサによって、前記暗号化されているデータが前記割り当てられた論理的分割領域にロードされると、および、前記暗号化されているデータが前記割り当てられた論理的分割領域からエビクトされると、増分される、付記５に記載の装置。
【００７０】
（付記７）前記タイムスタンプ値は、前記プロセッサのカウンタに格納され、前記カウンタは前記論理的分割領域に割り当てられる、付記６に記載の装置。
【００７１】
（付記８）前記カウンタは、前記プロセッサとは独立して増分される、付記７に記載の装置。
【００７２】
（付記９）プロセッサにより、アプリケーションに関連付けられており、調整を用いて暗号化されているデータのブロックを暗号化する手順と、
前記暗号化されているデータのブロックを格納するべく、前記プロセッサとは別個のメモリに論理的分割領域を割り当てる手順と
を実行させるプログラムであって、
前記調整は、前記メモリのキャッシュライン識別子と、暗号化すべく識別された、前記データのブロックのキャッシュラインの位置とを含む、プログラム。
【００７３】
（付記１０）前記調整で割り当てられた前記論理的分割領域に関連付けられたタイムスタンプ値を格納する手順を更に備え、
前記タイムスタンプ値は、前記プロセッサによって、前記暗号化されているデータが前記割り当てられた論理的分割領域にロードされると、および、前記暗号化されているデータが前記割り当てられた論理的分割領域からエビクトされると、増分される、付記９に記載のプログラム。
【００７４】
（付記１１）前記タイムスタンプ値は、前記プロセッサのカウンタに格納され、前記カウンタは前記論理的分割領域に割り当てられる、付記１０に記載のプログラム。
【００７５】
（付記１２）アプリケーションを格納する大容量格納装置と、
プロセッサと
を備え、
前記プロセッサは、
前記アプリケーションに関連付けられており、前記プロセッサとは別個のメモリのキャッシュライン識別子と、暗号化すべく識別された、データのブロックのキャッシュラインの位置とを含む調整を用いて暗号化されている前記データのブロックを暗号化して、前記暗号化されているデータのブロックを格納するべく、前記メモリに論理的分割領域を割り当てる論理を有する、システム。
【００７６】
（付記１３）調整で割り当てられた前記論理的分割領域に関連付けられたタイムスタンプ値を格納する論理を更に備え、
前記タイムスタンプ値は、前記プロセッサによって、前記暗号化されているデータが前記割り当てられた論理的分割領域にロードされると、および、前記暗号化されているデータが前記割り当てられた論理的分割領域からエビクトされると、増分される、付記１２に記載のシステム。
【００７７】
（付記１４）前記タイムスタンプ値は、前記プロセッサのカウンタに格納され、前記カウンタは前記論理的分割領域に割り当てられる、付記１３に記載のシステム。
【図１】
0005632086.tif 000006
【図２Ａ】
0005632086.tif 000007
【図２Ｂ】
0005632086.tif 000008
【図３】
0005632086.tif 000009
【図４】
0005632086.tif 000010
【図５】
0005632086.tif 000011
【図６】
0005632086.tif 000012
【図７】
0005632086.tif 000013