(57)【特許請求の範囲】
【請求項１】
整合性のチェックおよびリプレーアタックからの保護が行われるメモリ暗号化を行う方法であって、
プロセッサによって、アプリケーションに関するデータのブロックのメッセージ認証コード（ＭＡＣ）を生成する段階と、
プロセッサで、各カウンタがメモリ内の複数のＭＡＣキャッシュラインのうちの１つのＭＡＣキャッシュラインに関連している、複数のカウンタを提供する段階と、
前記プロセッサによって、調整を利用して前記ＭＡＣを暗号化する段階であって、前記調整は、前記ＭＡＣを格納するための前記１つのＭＡＣキャッシュラインのキャッシュライン識別子と、前記１つのＭＡＣキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含む、段階と、
前記プロセッサによって、前記データのブロックを、前記メモリのキャッシュラインに格納する段階と、
前記プロセッサによって、前記ＭＡＣを、前記メモリのＭＡＣキャッシュラインに格納する段階と
を備え、前記メモリは前記プロセッサとは別である、方法。
【請求項２】
前記アプリケーションは、セキュアなアプリケーションであり、
前記データのブロックは、前記プロセッサにより暗号化されており、
前記暗号化されたデータのブロックは、前記プロセッサによって前記メモリのキャッシュラインに格納される、請求項１に記載の方法。
【請求項３】
前記調整は、ＸＴＳ（XEX encryption mode with tweak and cipher text stealing）‐ＡＥＳ（Advanced Encryption Standard）調整である、請求項１または２に記載の方法。
【請求項４】
前記調整はＬＲＷ調整である、請求項１または２に記載の方法。
【請求項５】
前記複数のＭＡＣキャッシュラインは、前記メモリの保護された領域にある、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記キャッシュラインは、前記メモリのリプレー保護された領域にある、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記ＭＡＣは３２ビットをもち、前記複数のＭＡＣキャッシュラインは５１２ビットをもち、前記キャッシュラインは５１２ビットをもつ、請求項１から６のいずれか一項に記載の方法。
【請求項８】
整合性のチェックおよびリプレーアタックからの保護が行われるメモリ暗号化を行う装置であって、
各カウンタが外部メモリの複数のＭＡＣキャッシュラインのうちの１つのＭＡＣキャッシュラインに関連している、複数のカウンタと、
前記外部メモリに格納されているアプリケーションに関するデータのブロックのメッセージ認証コード（ＭＡＣ）を生成し、調整を利用して前記ＭＡＣを暗号化する論理と
を備え、
前記調整は、前記ＭＡＣを格納するための前記１つのＭＡＣキャッシュラインのキャッシュライン識別子と、前記１つのＭＡＣキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含み、
前記ＭＡＣを暗号化する論理は、前記データのブロックを前記外部メモリのキャッシュラインに格納して、前記ＭＡＣを前記外部メモリのＭＡＣキャッシュラインに格納する、装置。
【請求項９】
前記アプリケーションは、セキュアなアプリケーションであり、
前記データのブロックは、プロセッサにより暗号化されており、
前記暗号化されたデータのブロックは、前記プロセッサによって前記メモリのキャッシュラインに格納される、請求項８に記載の装置。
【請求項１０】
前記調整は、ＸＴＳ（XEX encryption mode with tweak and cipher text stealing）‐ＡＥＳ（Advanced Encryption Standard）調整である、請求項８または９に記載の装置。
【請求項１１】
前記調整はＬＲＷ調整である、請求項８から１０のいずれか一項に記載の装置。
【請求項１２】
前記複数のＭＡＣキャッシュラインは、前記外部メモリの保護された領域にある、請求項８から１１のいずれか一項に記載の装置。
【請求項１３】
前記キャッシュラインは、前記外部メモリのリプレー保護された領域にある、請求項８から１２のいずれか一項に記載の装置。
【請求項１４】
前記ＭＡＣは３２ビットをもち、前記複数のＭＡＣキャッシュラインは５１２ビットをもち、前記キャッシュラインは５１２ビットをもつ、請求項８から１３のいずれか一項に記載の装置。
【請求項１５】
関連する情報をもつ機械アクセス可能な媒体を含む物品であって、
前記情報はアクセスされると、機械に、
プロセッサによって、アプリケーションに関するデータのブロックのメッセージ認証コード（ＭＡＣ）を生成する段階と、
プロセッサで、各カウンタがメモリ内の複数のＭＡＣキャッシュラインのうちの１つのＭＡＣキャッシュラインに関連している、複数のカウンタを提供する段階と、
前記プロセッサによって、調整を利用して前記ＭＡＣを暗号化する段階と、
前記プロセッサによって、調整を利用して前記ＭＡＣを暗号化する段階であって、前記調整は、前記ＭＡＣを格納するための前記１つのＭＡＣキャッシュラインのキャッシュライン識別子と、前記１つのＭＡＣキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含む、段階と、
前記プロセッサによって、前記データのブロックを、前記メモリのキャッシュラインに格納する段階と、
前記プロセッサによって、前記ＭＡＣを、前記メモリのＭＡＣキャッシュラインに格納する段階と
を実行させ、
前記メモリは前記プロセッサとは別であり、
前記データのブロックは、前記プロセッサにより暗号化されており、前記暗号化されたデータのブロックが、前記プロセッサによって前記メモリのキャッシュラインに格納される、物品。
【請求項１６】
前記アプリケーションは、セキュアなアプリケーションである、請求項１５に記載の物品。
【請求項１７】
前記調整は、ＸＴＳ（XEX encryption mode with tweak and cipher text stealing）‐ＡＥＳ（Advanced Encryption Standard）調整である、請求項１５または１６に記載の物品。
【請求項１８】
前記調整はＬＲＷ調整である、請求項１５または１６に記載の物品。
【請求項１９】
アプリケーションを格納する大容量記憶デバイスと、
プロセッサと
を備え、
前記プロセッサは、
各カウンタが外部メモリの複数のＭＡＣキャッシュラインのうちの１つのＭＡＣキャッシュラインに関連している、複数のカウンタと、
前記外部メモリに格納されている前記アプリケーションに関するデータのブロックのメッセージ認証コード（ＭＡＣ）を生成し、調整を利用して前記ＭＡＣを暗号化する論理と
を備え、
前記調整は、前記ＭＡＣを格納するための前記１つのＭＡＣキャッシュラインのキャッシュライン識別子と、前記１つのＭＡＣキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含み、
前記ＭＡＣを暗号化する論理は、前記データのブロックを前記外部メモリのキャッシュラインに格納して、前記ＭＡＣを前記外部メモリのＭＡＣキャッシュラインに格納する、システム。
【請求項２０】
前記調整は、ＸＴＳ（XEX encryption mode with tweak and cipher text stealing）‐ＡＥＳ（Advanced Encryption Standard）調整である、請求項１９に記載のシステム。
【請求項２１】
前記調整はＬＲＷ調整である、請求項１９に記載のシステム。
【請求項２２】
前記アプリケーションは、セキュアなアプリケーションである、請求項１９から２１のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データの暗号保護に係り、より詳しくは、メモリのメモリ領域に格納されているソフトウェアアプリケーションの暗号化に係る。
【背景技術】
【０００２】
セキュアなソフトウェアアプリケーションが利用するシステム内の揮発性メモリの領域は、権原なき者による悪意ある修正から保護される必要がある。これらの悪意ある修正は（「攻撃」と称される場合もある）、ソフトウェア攻撃もあればハードウェア攻撃も含まれうる。セキュアなソフトウェアアプリケーションのための機密性と整合性保護を提供するために方法の１つに、中央処理装置（ＣＰＵ）またはプロセッサパッケージに大きな揮発性メモリを組み込んで、セキュアなソフトウェアアプリケーションによる「プライベートメモリ」として利用する、というものがある。しかし、大きな揮発性メモリをＣＰＵパッケージに組み込むと、コストが高くなる。
【０００３】
従って通常は、セキュアなソフトウェアアプリケーションは、外部メモリに格納される（つまり、ＣＰＵの外部に格納される）。外部メモリの、セキュアなソフトウェアアプリケーションを格納するためのメモリ領域（エリア）は、システムのオペレーティングシステム（ＯＳ）から見える場合も、見えない場合もある。ＯＳからこれらのメモリ領域が見える場合には、ソフトウェア攻撃から守られている必要がある。これらのメモリ領域がＯＳからは見えない場合には（「盗まれたメモリ領域」とも称される）、アクセス制御機構が存在している、ということになるので、ハードウェア攻撃から守られている必要がある（つまり、外部メモリに物理的にアクセスしてくる攻撃者から守られている必要がある）。
【図面の簡単な説明】
【０００４】
以下の詳細な記載は、請求されている主題を示す実施形態を参照したものであるが、当業者には数多くの変形例及び変更例が可能である。従って請求されている主題は広義の解釈が意図されており、添付されている請求項のみにより定義される。
【０００５】
【図１】本発明の原理に従ってメモリ暗号化を実行するメモリ暗号化コントローラを含むシステムのブロック図である。
【図２】本発明の原理に従って暗号化整合性チェックを提供する、メモリに格納されているメッセージ認証コード（ＭＡＣ）とメモリのアドレスレンジとを保護するために、ツリーベースのリプレー保護を実行するべく、暗号化エンジンにより利用されるプロセッサ内のＮ個のカウンタを示すブロック図である。
【図３】拡張された調整（tweak）の一実施形態を示す。
【図４】システムメモリに格納されているセキュアなアプリケーションを保護するための図１に示すシステムメモリの領域の一実施形態を示すブロック図である。
【図５】図４に示す暗号化された領域のキャッシュラインに書き込みアクセスを実行する方法の一実施形態を示すフローチャートである。
【図６】図４に示す暗号化された領域に読み出しアクセスを実行する方法の一実施形態を示すフローチャートである。
【発明を実施するための形態】
【０００６】
以下の詳細な説明は、請求されている主題を参照して行われるが、数多くの変形例、変更例、及びバリエーションが当業者には自明である。したがって、請求されている主題は、広義に解釈されることが意図されており、添付請求項によってのみ定義されることが意図されている。
【０００７】
外部メモリに対するハードウェア攻撃には（たとえば外部メモリに物理的にアクセスする攻撃者からの攻撃）は、外部メモリに格納されているイメージ（たとえば、ソフトウェアアプリケーションの実行可能イメージまたはデータ）を破損させようと試みる形態のものがある（つまり、メモリ破損攻撃）。たとえば、攻撃者（敵）からの外部メモリのキャッシュラインの修正は、機密性のために暗号化されているとは思われるが整合性のチェックが行われておらず、メモリから読み出されると、修正されたキャッシュラインの復号が破損することになる。攻撃者がイメージの内容を知っている場合には、攻撃者は選択的に、格納されている外部メモリの保護されているメモリ領域内における物理的メモリ位置のストリング変数（またはその他の定数／変数）を破損させることができる。この変数を修正すると、様々な状況が生じる（たとえば、守られていないメモリ領域にデータを書き込むことができ、攻撃者がアクセスできるようになる、というオーバフロー状況（overflow condition））。
【０００８】
同様に、ソフトウェアアプリケーションの実行可能イメージを破損させようとする試みは、ソフトウェアアプリケーションの実行可能なイメージを格納する無作為なキャッシュラインの悪意のある破損によって、プログラム実行フローに予期しない変更が加わり、潜在的にメモリの保護されていないメモリ領域にデータを書き込んでしまうという試行錯誤法を利用して実行することもできる。
【０００９】
ハードウェア攻撃は、さらに、ソフトウェアアプリケーションの実行可能イメージを、悪意のある実行可能イメージで代替したり（コードの代替）、悪意のあるスクリプトをイメージにインジェクトしたりする際にも利用される場合がある。たとえばコードの代替を実行するために、攻撃者は、外部メモリの保護されている領域の内容のスナップショットをとり、別のイメージが同じ保護されている領域にロードされる、後の時点にスナップショットをリプレーする。たとえば、悪意のあるスクリプトをインジェクトするために、攻撃者は、イメージが、保護されているメモリ領域に格納されている場合にスタックのスナップショットをとり、後で、重要なポインタまたは戻りアドレスがまさに同じ物理メモリ位置に後の時点で格納される時に、スタックのスナップショットをリプレーする。
【００１０】
本発明の原理に従って、外部の物理メモリの保護領域に暗号化整合性チェックとリプレー保護を提供して、保護されているメモリ領域を悪意のあるハードウェア攻撃から保護することができる方法及び装置を提供する。
【００１１】
図１は、本発明の原理に従ってメモリ暗号化を実行するメモリ暗号化コントローラを含むシステムのブロック図である。システム１００は、プロセッサ１０１と入出力（Ｉ／Ｏ）コントローラハブ（ＩＣＨ）１０４とを含む。プロセッサ１０１は、プロセッサ１０１と外部メモリ１０５との間の通信を制御するメモリコントローラ１０６を含む。プロセッサ１０１のメモリ暗号化コントローラ１０３は、メモリ１０５に格納されているデータに暗号化及び復号化を実行してよい。メモリ暗号化コントローラ１０３は、メモリ１０５の内容を読み出すことができるパッシブな攻撃者対策として機密性を提供する。
【００１２】
プロセッサ１０１は、シングルコアＩｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）  ４（登録商標）プロセッサ、シングルコアＩｎｔｅｌ  Ｃｅｌｅｒｏｎプロセッサ、Ｉｎｔｅｌ（登録商標）ＸＳｃａｌｅプロセッサ、または、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）  Ｄ等のマルチコアプロセッサ、Ｉｎｔｅｌ（登録商標）Ｘｅｏｎ（登録商標）プロセッサ、またはＩｎｔｅｌ（登録商標）Ｃｏｒｅ（登録商標）Ｄｕｏプロセッサ、またはＩｎｔｅｌ  Ｃｏｒｅ  プロセッサその他の種類のプロセッサ等の、複数のプロセッサのいずれかであってよい。
【００１３】
メモリ１０５は、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＲＡＭ、ＤＤＲ２  ＲＡＭ、ＲＤＲＡＭ、その他の任意の種類の揮発性メモリであってよい。別の実施形態では、メモリ１０５が、ＮＡＮＤ、ＮＯＲ，Ｆｌａｓｈ、相変化メモリ（ＰＣＭ）または相変化メモリ＆スイッチ（ＰＣＭＳ）その他の種類の不揮発性メモリであってよい不揮発性メモリであってもよい。
【００１４】
ＩＣＨ１０４は、ＩＣＨ１０４に連結されている少なくとも１つの格納デバイス１１２との通信を制御する格納Ｉ／Ｏコントローラ１１０を含んでよい。ここで利用する「格納デバイス」という用語は、そこにデータを格納したり、及び／または、そこからデータを取得したりできる、１以上の装置及び／またはその１以上の部分のことであってよい。さらにここで利用される「大容量ストレージ」及び「大容量格納デバイス」という用語は、交換可能な概念として利用され、データを不揮発に格納することができるストレージのことであってよい。格納デバイス１１２は、それぞれ半導体、電気機械、磁気、及び／または、光記憶及び／または大容量ストレージ（たとえば、フラッシュ、磁気ディスク、及び／または光ディスクストレージ及び／または大容量ストレージ等）を含んでよい大容量ストレージを含んでよい。ストレージは、たとえば、ハードディスクドライブ、固体ドライブ、ハイブリッドディスクドライブ、ＤＶＤドライブ、ＣＤドライブ、ＲＡＩＤ，テープドライブ、またはその他の不揮発性格納デバイスであってよい。
【００１５】
格納Ｉ／Ｏコントローラ１１０は、たとえばＳＣＳＩ（Small Computer Systems Interface）プロトコル、ＦＣ（Fibre Channel）プロトコル、ｉＳＣＳＩ（SCSI over Internet Protocol）、ＳＡＳ（Serial Attached SCSI）プロトコル、ＵＳＢ（Universal Serial Bus）プロトコル、及び／または、Ｓ―ＡＴＡ（Serial Advanced Technology Attachment）プロトコルに従って、格納デバイス（「ストレージ」）との間でデータ及び／またはコマンドを交換することができてよい。
【００１６】
別の実施形態では、プロセッサ１０１及びＩＣＨ１０４が、単一の集積回路内に統合されていてもよい（ＳＯＣ（System On a Chip）と称されてよい）。
【００１７】
本発明の一実施形態を、メモリ１０５のアドレスレンジの保護に着目して説明する。一実施形態では、プロセッサ１０１内にＮ個のカウンタ群１５０があり、Ｎ個のカウンタ群１５０のそれぞれが、メモリ１０５内のＮ個のアドレスレンジのうちの１つを保護するために利用される。保護対象のアドレスレンジは、セキュアなソフトウェアアプリケーションが利用するメモリ領域を保護するために利用されてよい。保護されているメモリ領域は、「盗まれたメモリ領域」、（つまり、オペレーティングシステム（ＯＳ）から見えないメモリの複数の物理的ページを含むメモリ領域（メモリの部分））と称されてよい。一実施形態では、Ｎ個のカウンタ群１５０が、プロセッサ１０１内の揮発性メモリに格納されてよく、揮発性メモリはＳＲＡＭであってよい。
【００１８】
セキュアなソフトウェアアプリケーションが利用するメモリ１０５のメモリ領域を保護する方法の１つに、メモリ１０５に格納されるデータを暗号化する、というものがある。メモリ１０５のメモリ領域に格納されるデータの暗号化及び復号化は、プロセッサ１０１において、プロセッサ１０１内で生成、格納される鍵を利用して行われる。
【００１９】
一実施形態では、セキュアなエンクレーブは、オペレーティングシステム（ＯＳ）プロセスのコンテキストにおいてコードを実行して内部にデータを格納するための、安全な場所をアプリケーションに提供する命令セットである。この環境で実行されるアプリケーションが、エンクレーブと称される。エンクレーブは、エンクレーブページキャッシュ（ＥＰＣ）から実行される。エンクレーブページはＯＳによってＥＰＣにロードされる。エンクレーブのページがＥＰＣから除去さるたびに、暗号保護を利用して、エンクレーブの機密性を保護することで、エンクレーブがＥＰＣにロードされて戻る場合に改ざんを検知する。ＥＰＣ内では、エンクレーブデータが、プロセッサが提供するアクセス制御メカニズムを利用して保護される。
【００２０】
エンクレーブページキャッシュ（ＥＰＣ）は、エンクレーブコードを実行して、保護されているエンクレーブデータにアクセスする場所である。ＥＰＣは、プラットフォームの物理アドレススペース内に配置されるが、ＳＥ命令によってのみアクセスが可能である。ＥＰＣは、多くの異なるエンクレーブからのページを含んでおり、ページの整合性及び機密性を保護するためのアクセス制御メカニズムを提供することができる。ページキャッシュは、プラットフォームのコヒーレントな物理メモリに利用されるものに類似したコヒーレンシープロトコルを維持する。
【００２１】
しかし、自身によるデータの暗号化は、データの機密性のみの提供を意図している。たとえばメモリ領域に格納されているデータの暗号化は、外部メモリをパッシブに読み出すことができる攻撃者から、データの機密性を保護する手助けしたり、プロセッサ３０１とシステムメモリ１０５との間で転送する際に、データをスヌープしたりすることができる。しかし、外部（システム）メモリ１０５のメモリ領域に格納されるデータの暗号化は、整合性チェックを提供しない。外部メモリ１０５に、暗号化されている形式のデータを格納する場合、外部メモリ１０５に格納されているメモリイメージの部分をアクティブに修正、リプレーすることができる攻撃者からの保護は提供されない。
【００２２】
悪意のある攻撃者（敵）は、外部メモリ１０５の１つのメモリ位置からコピーして、外部メモリ１０５の別のメモリ位置に書き込むことができる。たとえば攻撃者は、ページｘのアドレスａの内容を、ページｙのアドレスｂにコピーすることができてしまう。
【００２３】
別の攻撃として、暗号化されているメモリ領域に対して読み出し／書き込みアクセスができる敵は、暗号化されたメモリ領域の位置（たとえば時点２（ｔ２））を観察して記録して、時点１（ｔ１）で書き込まれた暗号化された領域の内容をコピーすることで、メモリ領域をリセットすることにより、リプレーアタックを実行することができる。また別のタイプのリプレーアタックでは、リプレーアタックを実行する攻撃者が、別の時点に同じメモリ領域に存在しうる２つの別のアプリケーション（コンテキスト）のうちの１つを制御することができてよい。たとえば攻撃者は、アプリケーションのうちの１つを利用して、他のアプリケーションを攻撃することができる。
【００２４】
本発明の一実施形態は、メモリイメージに対する無作為な（予期しないまたは無制御な）変更を起こさせる機能程度のものに、攻撃の効果を低減させることで、リプレーアタックを軽減する。
【００２５】
図２は、本発明の原理に従って暗号化整合性チェックを提供する、メモリ１０５に格納されているメッセージ認証コード（ＭＡＣ）とメモリ１０５のアドレス領域とを保護するために、ツリーベースのリプレー保護を実行するべく、メモリ暗号化エンジンにより利用されるプロセッサ１０１内のＮ個のカウンタ群１５０を示すブロック図である。
【００２６】
保護されるメモリの領域（アドレスレンジ）２０２は、複数のデータキャッシュライン２０８及びＭＡＣライン２０６に格納されている複数のメッセージ認証コード（ＭＡＣ）２０４により表される。図２の実施形態では、保護されるメモリの領域（「盗まれたメモリ領域」）２０２が、Ｍ個のデータキャッシュライン２０８を含む。Ｍ個のデータキャッシュライン２０８のそれぞれが、１つのＭＡＣ２０４に関連付けられている。ＭＡＣは、メッセージ及び秘密鍵に対して計算されたワンウェイ・ハッシュ関数の結果である。示されている実施形態では、ＭＡＣが、データキャッシュライン２０８の内容とプロセッサリセット中にプロセッサ内の乱数生成器によって生成された鍵とに対して実行されたワンウェイ・ハッシュの結果、生成される。一実施形態では、同じ鍵を利用して、Ｍ個のデータキャッシュラインのそれぞれに対してワンウェイ・ハッシュを実行する。ＭＡＣ２０４がキャッシュラインに適用され、キャッシュライン２０８の内容を読み出し、復号化する際に利用される、再度計算されたＭＡＣと比較して、キャッシュライン２０８に格納されている暗号化されたデータブロックが、キャッシュライン２０８に格納されている間に変更されたか否かを検知する。
【００２７】
ツリーベースのリプレー保護スキームは、ツリールート、ＭＡＣキャッシュライン２０６、及び、データキャッシュライン２０８を含むツリー構造によって提供されてよい。Ｎ個のカウンタ群１５０がプロセッサ１０１内に存在しており、１つのカウンタがメモリ１０５のＭＡＣキャッシュライン２０６ごとに割り振られている。ツリールートは、ＭＡＣキャッシュライン２０６の内容を保護するために利用されるプロセッサ１０１のＮ個のカウンタ群１５０のカウンタ２０１のうちの１つである。一実施形態では、キャッシュライン（Ｍ）の数が１６であり、各ＭＡＣキャッシュライン２０６が、５１２ビットを含み、１６個の３２ビットのＭＡＣ２０４を格納して、各データキャッシュライン２０８が５１２ビットを有する（６４バイト）。
【００２８】
一実施形態では、保護を必要とする、メモリ１０５の各キャッシュライン（ＣＬ）２０８の内容が、ＸＴＳ（XEX encryption mode with tweak and cipher text stealing）によって暗号化されている。ＸＴＳ（XEX encryption mode with tweak and cipher text stealing）‐ＡＥＳ（Advanced Encryption Standard）調整可能なブロック暗号（ＩＥＥＥ規格１６１９−２００７）をもつＸＥＸ暗号モードは、ＮＩＳＴ（米国の国立標準技術研究所）のＦＩＰＳ（Federal Information Processing Standards）１４０−２における動作モードであり、一定の長さのブロックに格納されるデータを暗号により保護するアーキテクチャの要素を定義している。他の実施形態では、各キャッシュライン（ＣＬ）の内容が平文（暗号化されていない）であってもよい。
【００２９】
ＸＴＳ−ＡＥＳ演算モードは、連続した均等サイズのデータユニットに分割されたデータストリームの暗号に適用され、例外として、データストリームの最後のデータユニットは、他のものより短くてよい。各データユニットは１２８以上のビットのデータを１つの鍵の範囲に持っている。鍵の範囲は、具体的な鍵によって暗号化され、均等サイズのデータユニットに分割されたデータである。鍵の範囲は、３つの負ではない整数によって特定される（つまり、第１のデータユニットに対応している調整値、データユニットのサイズ、及びデータの長さ）。調整値は、ＸＴＳ‐ＡＥＳで暗号化または復号化されたデータストリームのデータの論理位置を表すために利用される１２８ビットの値である。各データユニットには、負ではない整数である調整値が割り当てられる。調整値は、任意の負ではない整数から連続して割り当てられる。
【００３０】
ＸＴＳ−ＡＥＳ演算モードは、「調整可能な幅の狭いブロック暗号」であり、ディスク暗号化の標準モードである（保存データ暗号化）。これは、電子コードブック（ＥＣＢ）モードの暗号化として見ることもでき、ここでは、暗号化が、データブロックの暗号を、その「インデックス」の位置の関数として修正する調整値（調整）が利用される。ＥＣＢモードでは、各平文ブロックが、ブロック暗号とは独立して暗号化される。ディスク暗号化においては、ＸＴＳ−ＡＥＳ演算モードで、調整を利用して、暗号化されているディスクドライブ（記憶媒体）のセクタに暗号を組み合わせる（binding the encryption）。
【００３１】
一実施形態では、メモリ暗号化ユニット（コントローラ）が、ＸＴＳ−ＡＥＳ演算モードを利用して、保護されているデータブロックの（物理）メモリアドレスに暗号を組み合わせる。ＡＥＳ−ＸＴＳを利用すると、多くの場合に、暗号化されているメモリイメージを物理的に操作できる攻撃者に対して、及び、暗号化されたブロックの位置をスワッピングすることによる、または、他の暗号化されたブロックで、暗号化されたブロックを上書きすることによる攻撃に対して効果がある。ＡＥＳ−ＸＴＳ調整は、物理メモリアドレスの関数（function）であり、このような攻撃は、攻撃者が予期不可能、制御不可能な無作為の変更を誘発する程度の、弱い攻撃に等しくなる。言い換えると、攻撃者は、スワッピング／上書きを行っても、攻撃者が「盲目に」メモリを変更することから得られる程度の利益しか得られなくなる。
【００３２】
ディスクの暗号化のための標準的なＸＴＳモードでは、インデックスがユニット（ｕ）の（ｊ）であるデータブロックＰのＡＥＳ‐ＸＴＳが、まず、調整値を生成してから、次に、調整値を利用して平文から暗号文を生成することで実行される。
【００３３】
たとえば調整値（Ｘ）は、１６バイトの鍵値（Ｋ１）をブロック識別子（ユニット（ｕ）、そのユニット（ｕ）におけるユニットの位置（ｊ））に利用することで生成され、多項式（Ｐｏｌｙ）ｘ１２８＋ｘ７＋ｘ２＋ｘ＋１が、以下に示すものとなる。
【数１】
0005700481.tif 000002
上の式において、「＊」は、キャリーなし乗算（carry-less multiplication）を示す。
【００３４】
調整値（Ｘ）が生成されると、暗号文（Ｃ）は、以下に示すように調整値（Ｘ）と別の１６バイトの鍵の値（Ｋ２）を利用して、平文（Ｐ）から生成される。
【数２】
0005700481.tif 000003
【００３５】
ＡＥＳ−ＸＴＳは、ユニット（ｕ）の値について６４ビット（８バイト）をリザーブする。ＡＥＳ暗号が１６バイトのブロックに行われると、数１に示すように暗号化されているブロック（１６バイト）の６４個の残りのビット（８バイト）が、０として定義される。
【００３６】
ＡＥＳ−ＸＴＳは、「ユニット」を６４バイトのキャッシュラインとして、インデックスｊ＝０，１，２，３として定義されることで、キャッシュラインの１６バイト（１２８ビット）のデータブロックの位置を示すよう、メモリ暗号に適用されてよい。この場合、「ｕ」の値が、キャッシュラインの（物理的）アドレスである。物理アドレスは通常４８ビットを利用して符号化される。
【００３７】
各ＭＡＣライン２０６は、拡張されたＡＥＳ−ＸＴＳモード（ＸＴＳ＋）を利用して暗号化される。拡張されたＡＥＳ−ＸＴＳモードでは、標準的なＡＥＳ−ＸＴＳモードが、調整のより多くの情報を利用するべく拡張される（拡張された調整）。拡張された調整には、標準的な情報に加えて、たとえばキャッシュラインアドレス及びブロック位置、ならびに／または、タイムスタンプ値が含まれる。
【００３８】
一実施形態では、さらなる情報を格納する拡張された調整のビットが、拡張された調整の最上位（most significant）６４ビットに存在している。前述したように、最上位ビットは、標準ＡＥＳ−ＸＴＳモードでは０に設定されている。別の実施形態では、さらなる情報が、０に保証されている他のビットに存在している。したがって、拡張されたＡＥＳ−ＸＴＳは、全てのさらなる情報ビットが０に低下した場合に、暗号が標準的なＸＴＳモードになることから、標準的なＡＥＳ−ＸＴＳの一般形である。
【００３９】
一実施形態では、拡張された調整が、数３として下に示すキャッシュラインアドレス及び時間を利用して生成される。
【数３】
0005700481.tif 000004
【００４０】
本式において、Ｐはデータブロックであり、そのインデックスがユニットｕのｊであり、Ｔで示す時間に暗号化され、シンボル「｜」が連結を示す。
【００４１】
拡張された調整は、調整が連続した整数を記述するよう生成される（時間０，１，…，２＾（３２）‐１）のアドレスをカウントする）。ＭＬ[ｊ]の調整（時間ＴＩＭＥ及びアドレスＡＣＬにおいて）（ｊ＝０，１，２，…，ｍ−１であり、ＴＩＭＥ＝０，１，…，２＾（３２）‐１である）が、以下の式で表される。
【数４】
0005700481.tif 000005
ここで、Ｕｎｉｔ＝ＭＡＣキャッシュライン（ＭＬ）であり、
各ＭＬが２＾（６）＝６４バイトであり、（４ｘ１２８ビット（２＾（２０）ブロック）であり）、
各ＭＬが、４０ビットのベースアドレスを有し、ＡＣＬ［３９:０］のＡＣＬ[５：０]＝[000000] であり、パーティションが２＾ｎＭＢを有し、
ｍ（ＭＬの数）＝２＾（ｎ＋１４）であり、
ｊが、データストリームのｍ個のＭＬのうちの１つであり、
異なる時間に（ＭＬ［ｊ］（時間ｔ））データストリームがｍ個のＭＬであり、以下のようになる。
時間ｔ＝０において、ＭＬ[０]，ＭＬ[１]，…，ＭＬ[ｍ−１]であり、
時間ｔ＝１において、ＭＬ[０]，ＭＬ[１]，…，ＭＬ[ｍ−１]であり、
…
時間ｔ＝２＾（３２）‐１において、ＭＬ[０]，ＭＬ[１]，…，ＭＬ[ｍ−１]であり、
ベースアドレス（＜ＭＬ［ｊ］）が、ＡＣＬ［ｊ］で表される（ｊ＝０，１，２，…，ｍ−１）。
【００４２】
ＭＬについて行うと（上述した順序で）、調整が、
【数５】
0005700481.tif 000006
という正の整数から始まり、
【数６】
0005700481.tif 000007
で終わる、正の整数全てに連続して実行される。  たとえば、２ＭＢのパーティションを考える（ｎ＝１及びＭ＝１５）。  時間ＴＩＭＥ（３２ビット）におけるＭＬ[ｊ]の調整は、以下のように定義される。
【数７】
0005700481.tif 000008
【００４３】
図３は、拡張の調整３００の一実施形態を示す。図３に示す拡張された調整３００は、１２８ビット値である。拡張されている調整３００の最下位の４８ビット（ビット４７：０）３０６は、アドレス（ｕ）についてリザーブされており、残りの８０個の最上位ビット（ビット１２７：４８）３０４が、タイムスタンプ（Ｔ）用にリザーブされている。
【００４４】
図２に戻ると、各ＭＡＣキャッシュライン２０６が、拡張された調整３００を利用して暗号化され、ＭＡＣキャッシュライン２０６の４つのＭＡＣのグループの開始アドレスが、拡張された調整３００の最下位ビット（「アドレス（ｕ）」）に格納され、ＭＡＣライン２０６に関するカウンタ２０１の値が、最上位ビット（「タイムスタンプ（Ｔ）」）３０４に格納される。ＭＡＣキャッシュライン２０６の４つのＭＡＣの各グループが、１２８ビットのブロックに対応しており、拡張されたＸＴＳ調整で利用される対応する固有アドレスを有している。
【００４５】
図４は、システムメモリ１０５に格納されているセキュアなアプリケーションを保護するための図１に示すシステムメモリ１０５の領域の一実施形態を示すブロック図である。システムメモリ１０５は、保護されている領域４５０を含んでいる。保護されている領域４５０は、リプレー保護領域４０４、非リプレー保護領域４０２、及び、ＭＡＣ領域４００を含む。一実施形態では、リプレー保護領域４０４及び非リプレー保護領域４０２の両方に格納されているデータが、図２を参照して前述したＸＴＳ−ＡＥＳを利用して暗号化される。ＭＡＣ領域４００に格納されている、暗号化されているデータは、図２及び図３を参照して上述したように、拡張されたＸＴＳ−ＡＥＳを利用して暗号化されている。別の実施形態では、リプレー保護領域４０４及び非リプレー保護領域４０２の両方に格納されているデータが、平文（暗号化されていない）データである。
【００４６】
ＭＡＣ領域４００は、リプレー保護領域４０４の各キャッシュライン２０８に対してＭＡＣ２０５を含んでいる。プロセッサ１０１のカウンタ群１５０は、ＭＡＣ領域４００の各ＭＡＣキャッシュライン（ＭＬ）２０６のためのカウンタ２０１を含んでいる。リプレー保護領域４０４における各キャッシュライン２０８についてＭＡＣ２０５を利用することで、リプレー保護領域４０４に整合性保護が提供される。ＭＡＣ領域４００の各ＭＬ２０６についてカウンタ２０１を利用することで、リプレー保護領域４０４にリプレー保護が提供される。
【００４７】
一実施形態では、リプレー保護領域４０４のサイズが８メガバイト（ＭＢ）であり、各キャッシュライン２０８が、６４バイト（５１２ビット）を有し、リプレー保護領域４０４は、１２８Ｋのキャッシュラインを有している。各ＭＬ２０６について１６ＭＡＣを持つ一実施形態では、８１９２ＭＬが、１２８Ｋのキャッシュラインに対して１２８ＫのＭＡＣを格納している。各ＭＡＣが３２ビットを持ち、ＭＡＣ領域４００に、リプレー保護領域４０４の１２８Ｋのキャッシュラインのそれぞれについて１つのＭＡＣが格納されている場合、ＭＡＣ領域４００は、５１２キロバイト（ＫＢ）である。ＭＬのそれぞれは、カウンタ群１５０に格納された対応するカウンタ２０１を持つ。一実施形態では、８１９２ＭＬのそれぞれが、拡張された調整に利用される６０ビットのカウンタを有しており、揮発性メモリ（たとえば、ＳＲＡＭ）の６０ＫＢを利用して、プロセッサ１０１の８１９２のカウンタを格納する。メモリ１０５に８１９２の６０ビットのカウンタを格納すると、プロセッサでは、リプレー保護領域４０４の各キャッシュラインについて３２ビットのＭＡＣを格納する際に必要となる５１２ＫＢより８倍も少ないメモリの消費で済む。
【００４８】
プロセッサ１０１の初期化中に、カウンタ群１５０が、非乱数値に初期化される。一実施形態では、非乱数値が０である。メモリのキャッシュライン２０８及びＭＬ２０６も、０以外の値であってよい非乱数値に初期化される。加えて、ＭＡＣを生成するための鍵を乱数値に初期化する。一実施形態では、鍵は、プロセッサ１０１の乱数生成器からサンプリングにより得られる（sampled）。
【００４９】
図４に示す実施形態では、リプレー保護領域が、メモリの下位のアドレス領域にあり、ＭＡＣライン領域が、メモリの上位のアドレス領域にある。領域ベースアドレスレジスタは、リプレー保護領域の最下位アドレス（the address of the bottom）（ＲＰＲ＿ＡＣＣＲＥＳＳ）を格納して、ＭＡＣ領域ベースアドレスレジスタが、ＭＡＣライン領域の最下位アドレス（ＭＬＲ＿ＡＣＣＲＥＳＳ）を格納する。
【００５０】
リプレー保護領域のアドレス「Ａ」のキャッシュラインのオフセットは、ＭＡＣ領域ベースアドレスからのアドレスに整合するＭＡＣキャッシュラインのオフセットより１６倍大きい、というのも各ＭＡＣキャッシュラインが、リプレー保護領域の１６つのラインをカバーしているからである。
【００５１】
したがって、アドレス「Ａ」に対応するＭＡＣキャッシュラインのアドレス（ＭＡＣ＿ＬＩＮＥ＿ＡＤＤＲＥＳＳ）は、以下のように計算することができる。
【数８】
0005700481.tif 000009
【００５２】
リプレー保護領域の６４バイトのキャッシュラインをもつ一実施形態では、リプレー保護領域の４０ビットのキャッシュラインアドレス（アドレス[３９：０]）の、整合するＭＡＣラインアドレスとＳＲＡＭアレイエントリのＸＴＳ＋カウンタのインデックスとへの整合を、以下のように実行する。
キャッシュラインアドレスのビット[５：０]が、常に０である（６４バイトの配置により）。
キャッシュラインアドレスのビット[９：６]が、キャッシュラインに対応するＭＡＣラインのＭＡＣ値（１６のうち１を選択するべく）のインデックスを格納している。
キャッシュラインアドレスのビット[２２：１０]が、８１９２のＭＡＣキャッシュラインのうち１つ及びＭＡＣキャッシュラインに関するカウンタを特定している。
キャッシュラインアドレスのビット[３９：２３]が、リプレー保護領域のベースアドレスを格納している。
【００５３】
図５は、図４に示す保護されている領域のキャッシュライン２０８にデータブロックを書き込む方法の一実施形態を示すフローチャートである。
【００５４】
ソフトウェアアプリケーションをメモリ１０５に格納する（書き込む）場合、ソフトウェアアプリケーションは、メモリ１０５のりリプレー保護領域４０４の１以上のキャッシュライン２０８をポピュレートする。一実施形態では、各キャッシュライン２０８が、６４バイト（５１２ビット）を有している。各キャッシュライン２０８が、メモリ１０５のＭＡＣ領域４００のＭＬ２０６に格納されている対応する３２ビットのＭＡＣ２０４を有する。キャッシュライン２０８（リプレー保護領域４０４の）が最初にポピュレートされるときはいつでも、そのキャッシュライン２０８のＭＡＣ２０４を保持するＭＡＣキャッシュライン２０６の対応するカウンタをインクリメントする１０１。
【００５５】
ブロック５００で、メモリ１０５のリプレー保護領域４０４にキャッシュライン２０８を割り当てて、書き込むデータを格納する。さらに、ＭＡＣエントリ２０４が、メモリ１０５のＭＡＣ領域４００に割り当てられ、リプレー保護領域４０４のキャッシュライン２０８に書き込むデータのＭＡＣを格納する。（データの）各キャッシュライン２０８のＭＡＣは、ＭＡＣエントリ２０４に格納されている。いくつかのキャッシュライン（データの）２０８のＭＡＣは、ＭＡＣ領域４００の１つのＭＬライン２０６のＭＡＣエントリ２０４に格納されている。ＭＡＣが３２ビットを有する一実施形態では、１６ＭＡＣが、ＭＡＣ領域４００の１つの５１２ビットのＭＬ２０６に格納されている。一実施形態では、ＭＡＣ領域４００のキャッシュラインがＸＴＳ＋暗号化されており、ＭＡＣ領域の各ＭＬ２０６がそれぞれのカウンタを有している。処理はブロック５０２に続く。
【００５６】
ブロック５０２で、キャッシュライン２０８のためのＭＡＣ２０４を格納しているＭＬ２０６に関連付けられているカウンタ２０１の内容を読み出す。ＭＬ２０６の内容も読み出す。一実施形態では、ＭＬ２０８が５１２ビットを有して、１６個の３２ビットのＭＡＣを、１つのＭＡＣが１６個のキャッシュライン２０８のそれぞれに対応するよう、格納する。処理はブロック５０４に続く。
【００５７】
ブロック５０４で、ＭＬ２０６の内容を復号化して、ＭＬ２０６に格納されているＭＡＣの平文を復帰させる。復号化は、ＸＴＳ−ＡＥＳの高度調整演算モード（「拡張されたＸＴＳ−ＡＥＳ」）を利用して実行される。プロセッサ１０１のメモリ暗号化コントローラ１０３は、ＸＴＳ−ＡＥＳ高度調整演算モードを実装している（Ｔが、カウンタ値であり、ｕがＭＡＣキャッシュラインの物理アドレスであり、ｊはブロックのインデックスを示す）。このようにすることで、調整値（Ｘ）は、メモリ４５０のＭＬ２０６のアドレスだけにではなく、プロセッサ１０１が、ＭＬ２０６がメモリ１０５に割り当てられたときに格納したカウンタ値（「タイムスタンプ値」）に制限される。
【００５８】
「カウンタ」、および、カウンタを初期化及びインクリメントする方法は変更してもよい。一実施形態では、カウンタはリニアフィードバックシフトレジスタ（ＬＦＳＲ）であり、これは、クロック入力を利用してインクリメントされる、ゼロではない値（固定値または乱数値）である。別の実施形態では、カウンタが、無作為または確定的に初期化されるインクリメント論理を含むレジスタであってよい。また別の実施形態では、カウンタが、乱数ビット（random bit）生成器からサンプリングされた値であってよい。カウンタの長さ（出力ビット数）は、コピーしたイメージを同じカウンタ値でリプレーしようとする試みが実現不可能になるよう決定されてよい。処理はブロック５０６に続く。
【００５９】
ブロック５０６で、キャッシュライン２０８に書き込むデータを、ＸＴＳ−ＡＥＳを利用して暗号化する。処理はブロック５０８に続く。
【００６０】
ブロック５０８で、書き込むキャッシュライン２０８に関連するＭＡＣを格納しているＭＬ２０６に書き込むデータが、ＭＬ２０６の現在の内容を、キャッシュライン２０８に格納される暗号化されていないデータから生成されたＭＡＣと合成（merge）（読み出し−修正−書き込み）することで、生成される。ＭＬ２０６のＭＡＣエントリの１つの内容を更新するためには、ＭＬ２０６全体を読み出して復号化して、ＭＡＣエントリの新しいデータをＭＬ２０６に書き込んで、ＭＬ２０６の内容を暗号化して、ＭＬ領域に書き込んで格納する。処理はブロック５１０に続く。
【００６１】
ブロック５１０で、ＭＬ２０６に関連するカウンタから読み出したタイムスタンプ値（「カウント」）がインクリメントされる。処理はブロック５１２に続く。
【００６２】
ブロック５１２で、ＭＬ２０６の修正された内容を、修正した「タイムスタンプ値」をもつ、拡張されたＸＴＳ−ＡＥＳを利用して暗号化する。処理はブロック５１４に続く。
【００６３】
ブロック５１４で、修正された「タイムスタンプ値」を、プロセッサ内のＭＬ２０６に関連するカウンタ２０１に書き込み、修正されたＭＬをＭＬ２０６に書き込み、暗号化したデータをキャッシュライン２０８に書き込む。処理が完了する。
【００６４】
図５との関連で記載する実施形態では、データブロックが、キャッシュライン２０８に書き込まれる前に暗号化される。他の実施形態では、ブロック５０６を実行せず、キャッシュライン２０８に書き込むデータが平文（暗号化されていない）である。
【００６５】
図６は、図４に示す保護された領域４５０に読み出しアクセスを実行する方法の一実施形態を示すフローチャートである。
【００６６】
ブロック６００で、キャッシュライン２０８、キャッシュライン２０８のためのＭＡＣ２０５を格納するＭＬ２０６、及び、ＭＬ２０６に関するカウンタ群１５０のカウンタ２０１を読み出す。キャッシュライン２０８、ＭＬ２０６、及びカウンタ２０１は、図４を参照して説明した読み出しコマンドのメモリアドレスに基づいて決定される。処理は、ブロック６０２に続く。
【００６７】
ブロック６０２で、キャッシュライン２０８から読み出された、暗号化されたデータを、ＸＴＳ−ＡＥＳを用いて復号化する。処理はブロック６０４に続く。ブロック６０４で、ＭＬ２０６から読み出された暗号化されているＭＡＣ２０５が、拡張されたＸＴＳ−ＡＥＳと、ＭＬ２０６に関するカウンタから読み出したタイムスタンプ値とを利用して復号化される。処理はブロック６０６に続く。
【００６８】
ブロック６０６で、キャッシュライン２０８に関連するＭＡＣ２０５が、ＭＬ２０６の復号化された（平文の）内容の複数のＭＡＣから抽出される。一実施形態では、５１２ビットのＭＬ２０６には、１６個の３２ビットのＭＡＣ２０５が格納されている。ＭＡＣ２０５は、キャッシュライン２０８から読み出されたデータの復号の結果得られる平文を利用して生成される。処理はブロック６０８に続く。
【００６９】
ブロック６０８で、生成されたＭＡＣを、ＭＬ２０６から読み出したＭＡＣと比較する。等しい場合には、処理がブロック６１０に続く。整合しない場合には、処理はブロック６１２に続く。
【００７０】
ブロック６１０で、キャッシュライン２０８から読み出したデータ（平文）を戻す。
【００７１】
ブロック６１２で、不整合が検知され、システムリセットを生成する。
【００７２】
図６を参照して説明する実施形態では、キャッシュライン２０８から読み出したデータを暗号化する。他の実施形態では、キャッシュライン２０８から読み出したデータが平文である場合（暗号化されていない）、ブロック６０２は行わないこともある。
【００７３】
一実施形態では、各ＭＡＣのビット数を３２とすることで、ＭＡＣを格納するために利用されるメモリの量と、複数のキャッシュラインのそれぞれのＭＡＣを計算する時間とを低減させる。攻撃者が暗号化されたイメージを修正する場合、攻撃者が一回の試みで成功する確率は２−３２である。不整合が生じるたびに、図６との関連で記載したシステムリセットによってシステムのシャットダウンが生じる。シャットダウンした後で、システムは新たな乱数鍵で初期化されてＭＡＣが生成される。一実施形態では、各失敗した攻撃の、初期化からオペレーティングシステムが起動され最終的に攻撃スクリプトを実行するまでのサイクルが、少なくとも１秒となる。したがって、連続した試みは２３２秒かかる計算となる（約１４６年）。
【００７４】
図２のツリーベースのリプレー保護スキームはセキュアであり、キャッシュラインの内容が改ざんされないよう保護する。ツリーベースのリプレー保護スキームは、辞書攻撃及び誕生日攻撃の両方を防ぐことができる。
【００７５】
辞書攻撃は、全ての可能性ある値ではなく、リスト（辞書と称される）の値のサブセットを成功裏に試す技術を利用する。辞書攻撃は、成功する可能性が最も高い値のみを試す。攻撃者は、キャッシュライン対と対応するＭＡＣとを得て（harvest）、辞書を構築することができる。攻撃者は次に、辞書から整合するＭＡＣを動的に検索して、キャッシュラインを得ることから暗号文をリプレーする。
【００７６】
たとえば３２ビットのＭＡＣでは、攻撃者は、攻撃されるキャッシュラインの２３２の「バージョン」の暗号化されたイメージと、攻撃されるキャッシュラインのためのＭＡＣ値を格納する対応するＭＡＣラインとを格納するテーブルを準備することができる。キャッシュラインを書きこむ場合、攻撃者は、その暗号化された内容を、キャッシュラインの悪意のある暗号化されたバージョンで置き換えて、ＭＡＣラインの対応する暗号化された内容を、テーブルにおける整合する暗号化されている内容で置き換えることができる。これは、ＭＡＣチェックをパスしてしまい、攻撃が成功すると思われるだろう。しかし、ＭＡＣラインが、拡張されたＸＴＳ−ＡＥＳで暗号化されているので、正確に同じＭＡＣラインの２つの異なるカウンタ値での暗号化が異なり、攻撃者が辞書を構築することが現実的に不可能／非現実的なものとなる。したがって、ツリーベースのリプレー保護スキームは、辞書攻撃を防ぐことができる。
【００７７】
誕生日攻撃は、確率理論の誕生日の問題（つまり、（十分に大きな）無作為に選ばれた人々のうち何人かが同じ誕生日を持つ確率のこと）の根底にある数学を利用する暗号化攻撃の一種である。
【００７８】
たとえば誕生日のパラドックスは、ＭＡＣがアドレスと独立して暗号化され、攻撃者が、キャッシュラインＣＬに格納されている暗号化されているデータの平文を生成することができる場合に、２つのキャッシュラインに格納されているデータに適用することができる。攻撃者が、同じ値を格納している２つのキャッシュラインを見て、ＭＡＣ（ＣＬ１）＝ＭＡＣ（ＣＬ２）であることが分かっている場合に、攻撃者は、ＭＡＣを生成するために利用された鍵に関する情報を判断することができる。この鍵に関する情報によって、所望のＭＡＣ値を有することができるためにＭＡＣチェックをパスしてしまうだろう、偽造（forged）データラインを作成することができる。
【００７９】
通常は、誕生日攻撃を防ぐためには、ＭＡＣのビット数を十分大きくなるよう選択して、誕生日攻撃が不可能となるようにするとよい。一実施形態では、ＭＡＣが短い（ビット数が少ない）が、ＭＡＣラインが拡張されたＸＴＳ−ＡＥＳで暗号化されているので、正確に同じＭＡＣラインの２つの異なるカウンタ値での暗号が異なるものとなり、誕生日攻撃が防がれる。加えて、カウンタが、無作為ではなく固定値に初期化されるので、カウンタにおける誕生日攻撃が防がれる。
【００８０】
一実施形態では、外部メモリに別のレベルのカウンタを提供することで、ツリーベースのリプレー保護スキームをＮレベルのツリーに拡張することもできる。これらカウンタは、拡張されたＸＴＳ−ＡＥＳ、プロセッサのカウンタ、及び、外部メモリのカウンタのアドレスを利用して暗号化される。外部メモリに格納されているカウンタは、ＭＡＣラインの拡張されたＸＴＳ−ＡＥＳ暗号または外部メモリの別のレベルのカウンタの拡張されたＸＴＳ−ＡＥＳ暗号で利用される。
【００８１】
ツリーベースのリプレー保護スキームは、外部メモリの保護されている領域のリプレー保護と整合性チェックとの両方を提供する。たとえば攻撃者が無作為に外部メモリのＭＡＣラインを破損させた場合、そのＭＡＣラインの３２ビットのＭＡＣのそれぞれが、復号によって無作為に修正される。攻撃が成功する確率は２−３２である。失敗すると、上述した様に１秒程かかるリセットになる。攻撃者が無作為に外部メモリのキャッシュラインを攻撃した場合、攻撃が成功する確率は２−３２となる。失敗すると、上述したように１秒程かかるリセットになる。
【００８２】
攻撃者がカウンタのロールオーバをせずにＭＡＣラインをリプレーした場合には、無作為にＭＡＣラインが破損されて、上述したリセットが行われる。攻撃者がＭＡＣラインを、カウンタのロールオーバをして行った場合には、攻撃が成功するが、実際には、６０ビットのカウンタのロールオーバを行うには非常に長い時間がかかり、このような攻撃の戦略は現実的でない。
【００８３】
一実施形態をＸＴＳ−ＡＥＳについて説明してきたが、拡張された調整モードは何もＸＴＳ−ＡＥＳに限定はされず、他の実施形態では他の調整可能な暗号スキームに適用することもできる。たとえばＬＲＷ（Ｍ．Ｌｉｓｋｏｖ、Ｒ．Ｒｉｖｅｓｔ、及びＤ．Ｗａｇｅｒ）の調整可能なブロック暗号では、ＬＲＷを、同様に、向上したＬＲＷモードに向上させることができる。
【００８４】
当業者には、本発明の実施形態の方法を、コンピュータ利用可能媒体を含むコンピュータプログラムプロダクトに具現化することができることを理解する。たとえばコンピュータ利用可能媒体は、コンピュータ読み出し可能プログラムコードを格納したＣＤ  ＲＯＭディスクまたは従来のＲＯＭデバイスといった読み出し専用メモリデバイス、またはコンピュータディスクを含んでよい。
【００８５】
本発明の実施形態を、実施形態を参照しながら具体的に図示、説明してきたが、当業者であれば、添付請求項が含む本発明の実施形態の範囲から逸脱せずに、形態及び詳細における様々な変更を想到するであろう。
【図１】
0005700481.tif 000010
【図２】
0005700481.tif 000011
【図３】
0005700481.tif 000012
【図４】
0005700481.tif 000013
【図５】
0005700481.tif 000014
【図６】
0005700481.tif 000015