"整合性のチェックおよびリプレーアタックからの保護が行われるメモリ暗号化を行う方法であって、プロセッサによって、アプリケーションに関するデータのブロックのメッセージ認証コードMACを生成する段階と、プロセッサで、各カウンタがメモリ内の複数のMACキャッシュラインのうちの1つのMACキャッシュラインに関連している、複数のカウンタを提供する段階と、前記プロセッサによって、調整を利用して前記MACを暗号化する段階であって、前記調整は、前記MACを格納するための前記1つのMACキャッシュラインのキャッシュライン識別子と、前記1つのMACキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含む、段階と、前記プロセッサによって、前記データのブロックを、前記メモリのキャッシュラインに格納する段階と、前記プロセッサによって、前記MACを、前記メモリのMACキャッシュラインに格納する段階とを備え、前記メモリは前記プロセッサとは別である、方法。前記アプリケーションは、セキュアなアプリケーションであり、前記データのブロックは、前記プロセッサにより暗号化されており、前記暗号化されたデータのブロックは、前記プロセッサによって前記メモリのキャッシュラインに格納される、請求項1に記載の方法。前記調整は、XTSXEXencryptionmodewithtweakandciphertextstealing‐AESAdvancedEncryptionStandard調整である、請求項1または2に記載の方法。前記調整はLRW調整である、請求項1または2に記載の方法。前記複数のMACキャッシュラインは、前記メモリの保護された領域にある、請求項1から4のいずれか一項に記載の方法。前記キャッシュラインは、前記メモリのリプレー保護された領域にある、請求項1から5のいずれか一項に記載の方法。前記MACは32ビットをもち、前記複数のMACキャッシュラインは512ビットをもち、前記キャッシュラインは512ビットをもつ、請求項1から6のいずれか一項に記載の方法。整合性のチェックおよびリプレーアタックからの保護が行われるメモリ暗号化を行う装置であって、各カウンタが外部メモリの複数のMACキャッシュラインのうちの1つのMACキャッシュラインに関連している、複数のカウンタと、前記外部メモリに格納されているアプリケーションに関するデータのブロックのメッセージ認証コードMACを生成し、調整を利用して前記MACを暗号化する論理とを備え、前記調整は、前記MACを格納するための前記1つのMACキャッシュラインのキャッシュライン識別子と、前記1つのMACキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含み、前記MACを暗号化する論理は、前記データのブロックを前記外部メモリのキャッシュラインに格納して、前記MACを前記外部メモリのMACキャッシュラインに格納する、装置。前記アプリケーションは、セキュアなアプリケーションであり、前記データのブロックは、プロセッサにより暗号化されており、前記暗号化されたデータのブロックは、前記プロセッサによって前記メモリのキャッシュラインに格納される、請求項8に記載の装置。前記調整は、XTSXEXencryptionmodewithtweakandciphertextstealing‐AESAdvancedEncryptionStandard調整である、請求項8または9に記載の装置。前記調整はLRW調整である、請求項8から10のいずれか一項に記載の装置。前記複数のMACキャッシュラインは、前記外部メモリの保護された領域にある、請求項8から11のいずれか一項に記載の装置。前記キャッシュラインは、前記外部メモリのリプレー保護された領域にある、請求項8から12のいずれか一項に記載の装置。前記MACは32ビットをもち、前記複数のMACキャッシュラインは512ビットをもち、前記キャッシュラインは512ビットをもつ、請求項8から13のいずれか一項に記載の装置。関連する情報をもつ機械アクセス可能な媒体を含む物品であって、前記情報はアクセスされると、機械に、プロセッサによって、アプリケーションに関するデータのブロックのメッセージ認証コードMACを生成する段階と、プロセッサで、各カウンタがメモリ内の複数のMACキャッシュラインのうちの1つのMACキャッシュラインに関連している、複数のカウンタを提供する段階と、前記プロセッサによって、調整を利用して前記MACを暗号化する段階と、前記プロセッサによって、調整を利用して前記MACを暗号化する段階であって、前記調整は、前記MACを格納するための前記1つのMACキャッシュラインのキャッシュライン識別子と、前記1つのMACキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含む、段階と、前記プロセッサによって、前記データのブロックを、前記メモリのキャッシュラインに格納する段階と、前記プロセッサによって、前記MACを、前記メモリのMACキャッシュラインに格納する段階とを実行させ、前記メモリは前記プロセッサとは別であり、前記データのブロックは、前記プロセッサにより暗号化されており、前記暗号化されたデータのブロックが、前記プロセッサによって前記メモリのキャッシュラインに格納される、物品。前記アプリケーションは、セキュアなアプリケーションである、請求項15に記載の物品。前記調整は、XTSXEXencryptionmodewithtweakandciphertextstealing‐AESAdvancedEncryptionStandard調整である、請求項15または16に記載の物品。前記調整はLRW調整である、請求項15または16に記載の物品。アプリケーションを格納する大容量記憶デバイスと、プロセッサとを備え、前記プロセッサは、各カウンタが外部メモリの複数のMACキャッシュラインのうちの1つのMACキャッシュラインに関連している、複数のカウンタと、前記外部メモリに格納されている前記アプリケーションに関するデータのブロックのメッセージ認証コードMACを生成し、調整を利用して前記MACを暗号化する論理とを備え、前記調整は、前記MACを格納するための前記1つのMACキャッシュラインのキャッシュライン識別子と、前記1つのMACキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含み、前記MACを暗号化する論理は、前記データのブロックを前記外部メモリのキャッシュラインに格納して、前記MACを前記外部メモリのMACキャッシュラインに格納する、システム。前記調整は、XTSXEXencryptionmodewithtweakandciphertextstealing‐AESAdvancedEncryptionStandard調整である、請求項19に記載のシステム。前記調整はLRW調整である、請求項19に記載のシステム。前記アプリケーションは、セキュアなアプリケーションである、請求項19から21のいずれか一項に記載のシステム。以下の詳細な説明は、請求されている主題を参照して行われるが、数多くの変形例、変更例、及びバリエーションが当業者には自明である。したがって、請求されている主題は、広義に解釈されることが意図されており、添付請求項によってのみ定義されることが意図されている。外部メモリに対するハードウェア攻撃にはたとえば外部メモリに物理的にアクセスする攻撃者からの攻撃は、外部メモリに格納されているイメージたとえば、ソフトウェアアプリケーションの実行可能イメージまたはデータを破損させようと試みる形態のものがあるつまり、メモリ破損攻撃。たとえば、攻撃者敵からの外部メモリのキャッシュラインの修正は、機密性のために暗号化されているとは思われるが整合性のチェックが行われておらず、メモリから読み出されると、修正されたキャッシュラインの復号が破損することになる。攻撃者がイメージの内容を知っている場合には、攻撃者は選択的に、格納されている外部メモリの保護されているメモリ領域内における物理的メモリ位置のストリング変数またはその他の定数/変数を破損させることができる。この変数を修正すると、様々な状況が生じるたとえば、守られていないメモリ領域にデータを書き込むことができ、攻撃者がアクセスできるようになる、というオーバフロー状況overflowcondition。同様に、ソフトウェアアプリケーションの実行可能イメージを破損させようとする試みは、ソフトウェアアプリケーションの実行可能なイメージを格納する無作為なキャッシュラインの悪意のある破損によって、プログラム実行フローに予期しない変更が加わり、潜在的にメモリの保護されていないメモリ領域にデータを書き込んでしまうという試行錯誤法を利用して実行することもできる。ハードウェア攻撃は、さらに、ソフトウェアアプリケーションの実行可能イメージを、悪意のある実行可能イメージで代替したりコードの代替、悪意のあるスクリプトをイメージにインジェクトしたりする際にも利用される場合がある。たとえばコードの代替を実行するために、攻撃者は、外部メモリの保護されている領域の内容のスナップショットをとり、別のイメージが同じ保護されている領域にロードされる、後の時点にスナップショットをリプレーする。たとえば、悪意のあるスクリプトをインジェクトするために、攻撃者は、イメージが、保護されているメモリ領域に格納されている場合にスタックのスナップショットをとり、後で、重要なポインタまたは戻りアドレスがまさに同じ物理メモリ位置に後の時点で格納される時に、スタックのスナップショットをリプレーする。本発明の原理に従って、外部の物理メモリの保護領域に暗号化整合性チェックとリプレー保護を提供して、保護されているメモリ領域を悪意のあるハードウェア攻撃から保護することができる方法及び装置を提供する。図1は、本発明の原理に従ってメモリ暗号化を実行するメモリ暗号化コントローラを含むシステムのブロック図である。システム100は、プロセッサ101と入出力I/OコントローラハブICH104とを含む。プロセッサ101は、プロセッサ101と外部メモリ105との間の通信を制御するメモリコントローラ106を含む。プロセッサ101のメモリ暗号化コントローラ103は、メモリ105に格納されているデータに暗号化及び復号化を実行してよい。メモリ暗号化コントローラ103は、メモリ105の内容を読み出すことができるパッシブな攻撃者対策として機密性を提供する。プロセッサ101は、シングルコアIntel登録商標Pentium登録商標4登録商標プロセッサ、シングルコアIntelCeleronプロセッサ、Intel登録商標XScaleプロセッサ、または、Intel登録商標Pentium登録商標D等のマルチコアプロセッサ、Intel登録商標Xeon登録商標プロセッサ、またはIntel登録商標Core登録商標Duoプロセッサ、またはIntelCoreプロセッサその他の種類のプロセッサ等の、複数のプロセッサのいずれかであってよい。メモリ105は、DRAM、SRAM、SDRAM、DDRRAM、DDR2RAM、RDRAM、その他の任意の種類の揮発性メモリであってよい。別の実施形態では、メモリ105が、NAND、NOR,Flash、相変化メモリPCMまたは相変化メモリスイッチPCMSその他の種類の不揮発性メモリであってよい不揮発性メモリであってもよい。ICH104は、ICH104に連結されている少なくとも1つの格納デバイス112との通信を制御する格納I/Oコントローラ110を含んでよい。ここで利用する格納デバイスという用語は、そこにデータを格納したり、及び/または、そこからデータを取得したりできる、1以上の装置及び/またはその1以上の部分のことであってよい。さらにここで利用される大容量ストレージ及び大容量格納デバイスという用語は、交換可能な概念として利用され、データを不揮発に格納することができるストレージのことであってよい。格納デバイス112は、それぞれ半導体、電気機械、磁気、及び/または、光記憶及び/または大容量ストレージたとえば、フラッシュ、磁気ディスク、及び/または光ディスクストレージ及び/または大容量ストレージ等を含んでよい大容量ストレージを含んでよい。ストレージは、たとえば、ハードディスクドライブ、固体ドライブ、ハイブリッドディスクドライブ、DVDドライブ、CDドライブ、RAID,テープドライブ、またはその他の不揮発性格納デバイスであってよい。格納I/Oコントローラ110は、たとえばSCSISmallComputerSystemsInterfaceプロトコル、FCFibreChannelプロトコル、iSCSISCSIoverInternetProtocol、SASSerialAttachedSCSIプロトコル、USBUniversalSerialBusプロトコル、及び/または、S―ATASerialAdvancedTechnologyAttachmentプロトコルに従って、格納デバイスストレージとの間でデータ及び/またはコマンドを交換することができてよい。別の実施形態では、プロセッサ101及びICH104が、単一の集積回路内に統合されていてもよいSOCSystemOnaChipと称されてよい。本発明の一実施形態を、メモリ105のアドレスレンジの保護に着目して説明する。一実施形態では、プロセッサ101内にN個のカウンタ群150があり、N個のカウンタ群150のそれぞれが、メモリ105内のN個のアドレスレンジのうちの1つを保護するために利用される。保護対象のアドレスレンジは、セキュアなソフトウェアアプリケーションが利用するメモリ領域を保護するために利用されてよい。保護されているメモリ領域は、盗まれたメモリ領域、つまり、オペレーティングシステムOSから見えないメモリの複数の物理的ページを含むメモリ領域メモリの部分と称されてよい。一実施形態では、N個のカウンタ群150が、プロセッサ101内の揮発性メモリに格納されてよく、揮発性メモリはSRAMであってよい。セキュアなソフトウェアアプリケーションが利用するメモリ105のメモリ領域を保護する方法の1つに、メモリ105に格納されるデータを暗号化する、というものがある。メモリ105のメモリ領域に格納されるデータの暗号化及び復号化は、プロセッサ101において、プロセッサ101内で生成、格納される鍵を利用して行われる。一実施形態では、セキュアなエンクレーブは、オペレーティングシステムOSプロセスのコンテキストにおいてコードを実行して内部にデータを格納するための、安全な場所をアプリケーションに提供する命令セットである。この環境で実行されるアプリケーションが、エンクレーブと称される。エンクレーブは、エンクレーブページキャッシュEPCから実行される。エンクレーブページはOSによってEPCにロードされる。エンクレーブのページがEPCから除去さるたびに、暗号保護を利用して、エンクレーブの機密性を保護することで、エンクレーブがEPCにロードされて戻る場合に改ざんを検知する。EPC内では、エンクレーブデータが、プロセッサが提供するアクセス制御メカニズムを利用して保護される。エンクレーブページキャッシュEPCは、エンクレーブコードを実行して、保護されているエンクレーブデータにアクセスする場所である。EPCは、プラットフォームの物理アドレススペース内に配置されるが、SE命令によってのみアクセスが可能である。EPCは、多くの異なるエンクレーブからのページを含んでおり、ページの整合性及び機密性を保護するためのアクセス制御メカニズムを提供することができる。ページキャッシュは、プラットフォームのコヒーレントな物理メモリに利用されるものに類似したコヒーレンシープロトコルを維持する。しかし、自身によるデータの暗号化は、データの機密性のみの提供を意図している。たとえばメモリ領域に格納されているデータの暗号化は、外部メモリをパッシブに読み出すことができる攻撃者から、データの機密性を保護する手助けしたり、プロセッサ301とシステムメモリ105との間で転送する際に、データをスヌープしたりすることができる。しかし、外部システムメモリ105のメモリ領域に格納されるデータの暗号化は、整合性チェックを提供しない。外部メモリ105に、暗号化されている形式のデータを格納する場合、外部メモリ105に格納されているメモリイメージの部分をアクティブに修正、リプレーすることができる攻撃者からの保護は提供されない。悪意のある攻撃者敵は、外部メモリ105の1つのメモリ位置からコピーして、外部メモリ105の別のメモリ位置に書き込むことができる。たとえば攻撃者は、ページxのアドレスaの内容を、ページyのアドレスbにコピーすることができてしまう。別の攻撃として、暗号化されているメモリ領域に対して読み出し/書き込みアクセスができる敵は、暗号化されたメモリ領域の位置たとえば時点2t2を観察して記録して、時点1t1で書き込まれた暗号化された領域の内容をコピーすることで、メモリ領域をリセットすることにより、リプレーアタックを実行することができる。また別のタイプのリプレーアタックでは、リプレーアタックを実行する攻撃者が、別の時点に同じメモリ領域に存在しうる2つの別のアプリケーションコンテキストのうちの1つを制御することができてよい。たとえば攻撃者は、アプリケーションのうちの1つを利用して、他のアプリケーションを攻撃することができる。本発明の一実施形態は、メモリイメージに対する無作為な予期しないまたは無制御な変更を起こさせる機能程度のものに、攻撃の効果を低減させることで、リプレーアタックを軽減する。図2は、本発明の原理に従って暗号化整合性チェックを提供する、メモリ105に格納されているメッセージ認証コードMACとメモリ105のアドレス領域とを保護するために、ツリーベースのリプレー保護を実行するべく、メモリ暗号化エンジンにより利用されるプロセッサ101内のN個のカウンタ群150を示すブロック図である。保護されるメモリの領域アドレスレンジ202は、複数のデータキャッシュライン208及びMACライン206に格納されている複数のメッセージ認証コードMAC204により表される。図2の実施形態では、保護されるメモリの領域盗まれたメモリ領域202が、M個のデータキャッシュライン208を含む。M個のデータキャッシュライン208のそれぞれが、1つのMAC204に関連付けられている。MACは、メッセージ及び秘密鍵に対して計算されたワンウェイハッシュ関数の結果である。示されている実施形態では、MACが、データキャッシュライン208の内容とプロセッサリセット中にプロセッサ内の乱数生成器によって生成された鍵とに対して実行されたワンウェイハッシュの結果、生成される。一実施形態では、同じ鍵を利用して、M個のデータキャッシュラインのそれぞれに対してワンウェイハッシュを実行する。MAC204がキャッシュラインに適用され、キャッシュライン208の内容を読み出し、復号化する際に利用される、再度計算されたMACと比較して、キャッシュライン208に格納されている暗号化されたデータブロックが、キャッシュライン208に格納されている間に変更されたか否かを検知する。ツリーベースのリプレー保護スキームは、ツリールート、MACキャッシュライン206、及び、データキャッシュライン208を含むツリー構造によって提供されてよい。N個のカウンタ群150がプロセッサ101内に存在しており、1つのカウンタがメモリ105のMACキャッシュライン206ごとに割り振られている。ツリールートは、MACキャッシュライン206の内容を保護するために利用されるプロセッサ101のN個のカウンタ群150のカウンタ201のうちの1つである。一実施形態では、キャッシュラインMの数が16であり、各MACキャッシュライン206が、512ビットを含み、16個の32ビットのMAC204を格納して、各データキャッシュライン208が512ビットを有する64バイト。一実施形態では、保護を必要とする、メモリ105の各キャッシュラインCL208の内容が、XTSXEXencryptionmodewithtweakandciphertextstealingによって暗号化されている。XTSXEXencryptionmodewithtweakandciphertextstealing‐AESAdvancedEncryptionStandard調整可能なブロック暗号IEEE規格1619-2007をもつXEX暗号モードは、NIST米国の国立標準技術研究所のFIPSFederalInformationProcessingStandards140-2における動作モードであり、一定の長さのブロックに格納されるデータを暗号により保護するアーキテクチャの要素を定義している。他の実施形態では、各キャッシュラインCLの内容が平文暗号化されていないであってもよい。XTS-AES演算モードは、連続した均等サイズのデータユニットに分割されたデータストリームの暗号に適用され、例外として、データストリームの最後のデータユニットは、他のものより短くてよい。各データユニットは128以上のビットのデータを1つの鍵の範囲に持っている。鍵の範囲は、具体的な鍵によって暗号化され、均等サイズのデータユニットに分割されたデータである。鍵の範囲は、3つの負ではない整数によって特定されるつまり、第1のデータユニットに対応している調整値、データユニットのサイズ、及びデータの長さ。調整値は、XTS‐AESで暗号化または復号化されたデータストリームのデータの論理位置を表すために利用される128ビットの値である。各データユニットには、負ではない整数である調整値が割り当てられる。調整値は、任意の負ではない整数から連続して割り当てられる。XTS-AES演算モードは、調整可能な幅の狭いブロック暗号であり、ディスク暗号化の標準モードである保存データ暗号化。これは、電子コードブックECBモードの暗号化として見ることもでき、ここでは、暗号化が、データブロックの暗号を、そのインデックスの位置の関数として修正する調整値調整が利用される。ECBモードでは、各平文ブロックが、ブロック暗号とは独立して暗号化される。ディスク暗号化においては、XTS-AES演算モードで、調整を利用して、暗号化されているディスクドライブ記憶媒体のセクタに暗号を組み合わせるbindingtheencryption。一実施形態では、メモリ暗号化ユニットコントローラが、XTS-AES演算モードを利用して、保護されているデータブロックの物理メモリアドレスに暗号を組み合わせる。AES-XTSを利用すると、多くの場合に、暗号化されているメモリイメージを物理的に操作できる攻撃者に対して、及び、暗号化されたブロックの位置をスワッピングすることによる、または、他の暗号化されたブロックで、暗号化されたブロックを上書きすることによる攻撃に対して効果がある。AES-XTS調整は、物理メモリアドレスの関数functionであり、このような攻撃は、攻撃者が予期不可能、制御不可能な無作為の変更を誘発する程度の、弱い攻撃に等しくなる。言い換えると、攻撃者は、スワッピング/上書きを行っても、攻撃者が盲目にメモリを変更することから得られる程度の利益しか得られなくなる。ディスクの暗号化のための標準的なXTSモードでは、インデックスがユニットuのjであるデータブロックPのAES‐XTSが、まず、調整値を生成してから、次に、調整値を利用して平文から暗号文を生成することで実行される。たとえば調整値Xは、16バイトの鍵値K1をブロック識別子ユニットu、そのユニットuにおけるユニットの位置jに利用することで生成され、多項式Polyx128x7x2x1が、以下に示すものとなる。上の式において、は、キャリーなし乗算carrylessmultiplicationを示す。調整値Xが生成されると、暗号文Cは、以下に示すように調整値Xと別の16バイトの鍵の値K2を利用して、平文Pから生成される。AES-XTSは、ユニットuの値について64ビット8バイトをリザーブする。AES暗号が16バイトのブロックに行われると、数1に示すように暗号化されているブロック16バイトの64個の残りのビット8バイトが、0として定義される。AES-XTSは、ユニットを64バイトのキャッシュラインとして、インデックスj=0,1,2,3として定義されることで、キャッシュラインの16バイト128ビットのデータブロックの位置を示すよう、メモリ暗号に適用されてよい。この場合、uの値が、キャッシュラインの物理的アドレスである。物理アドレスは通常48ビットを利用して符号化される。各MACライン206は、拡張されたAES-XTSモードXTSを利用して暗号化される。拡張されたAES-XTSモードでは、標準的なAES-XTSモードが、調整のより多くの情報を利用するべく拡張される拡張された調整。拡張された調整には、標準的な情報に加えて、たとえばキャッシュラインアドレス及びブロック位置、ならびに/または、タイムスタンプ値が含まれる。一実施形態では、さらなる情報を格納する拡張された調整のビットが、拡張された調整の最上位mostsignificant64ビットに存在している。前述したように、最上位ビットは、標準AES-XTSモードでは0に設定されている。別の実施形態では、さらなる情報が、0に保証されている他のビットに存在している。したがって、拡張されたAES-XTSは、全てのさらなる情報ビットが0に低下した場合に、暗号が標準的なXTSモードになることから、標準的なAES-XTSの一般形である。一実施形態では、拡張された調整が、数3として下に示すキャッシュラインアドレス及び時間を利用して生成される。本式において、Pはデータブロックであり、そのインデックスがユニットuのjであり、Tで示す時間に暗号化され、シンボル|が連結を示す。拡張された調整は、調整が連続した整数を記述するよう生成される時間0,1,...,2^32‐1のアドレスをカウントする。MLjの調整時間TIME及びアドレスACLにおいてj=0,1,2,...,m-1であり、TIME=0,1,...,2^32‐1であるが、以下の式で表される。ここで、Unit=MACキャッシュラインMLであり、各MLが2^6=64バイトであり、4x128ビット2^20ブロックであり、各MLが、40ビットのベースアドレスを有し、ACL[390]のACL5:0=000000であり、パーティションが2^nMBを有し、mMLの数=2^n14であり、jが、データストリームのm個のMLのうちの1つであり、異なる時間にML[j]時間tデータストリームがm個のMLであり、以下のようになる。時間t=0において、ML0,ML1,...,MLm-1であり、時間t=1において、ML0,ML1,...,MLm-1であり、...時間t=2^32‐1において、ML0,ML1,...,MLm-1であり、ベースアドレス<ML[j]が、ACL[j]で表されるj=0,1,2,...,m-1。MLについて行うと上述した順序で、調整が、という正の整数から始まり、で終わる、正の整数全てに連続して実行される。たとえば、2MBのパーティションを考えるn=1及びM=15。時間TIME32ビットにおけるMLjの調整は、以下のように定義される。図3は、拡張の調整300の一実施形態を示す。図3に示す拡張された調整300は、128ビット値である。拡張されている調整300の最下位の48ビットビット47:0306は、アドレスuについてリザーブされており、残りの80個の最上位ビットビット127:48304が、タイムスタンプT用にリザーブされている。図2に戻ると、各MACキャッシュライン206が、拡張された調整300を利用して暗号化され、MACキャッシュライン206の4つのMACのグループの開始アドレスが、拡張された調整300の最下位ビットアドレスuに格納され、MACライン206に関するカウンタ201の値が、最上位ビットタイムスタンプT304に格納される。MACキャッシュライン206の4つのMACの各グループが、128ビットのブロックに対応しており、拡張されたXTS調整で利用される対応する固有アドレスを有している。図4は、システムメモリ105に格納されているセキュアなアプリケーションを保護するための図1に示すシステムメモリ105の領域の一実施形態を示すブロック図である。システムメモリ105は、保護されている領域450を含んでいる。保護されている領域450は、リプレー保護領域404、非リプレー保護領域402、及び、MAC領域400を含む。一実施形態では、リプレー保護領域404及び非リプレー保護領域402の両方に格納されているデータが、図2を参照して前述したXTS-AESを利用して暗号化される。MAC領域400に格納されている、暗号化されているデータは、図2及び図3を参照して上述したように、拡張されたXTS-AESを利用して暗号化されている。別の実施形態では、リプレー保護領域404及び非リプレー保護領域402の両方に格納されているデータが、平文暗号化されていないデータである。MAC領域400は、リプレー保護領域404の各キャッシュライン208に対してMAC205を含んでいる。プロセッサ101のカウンタ群150は、MAC領域400の各MACキャッシュラインML206のためのカウンタ201を含んでいる。リプレー保護領域404における各キャッシュライン208についてMAC205を利用することで、リプレー保護領域404に整合性保護が提供される。MAC領域400の各ML206についてカウンタ201を利用することで、リプレー保護領域404にリプレー保護が提供される。一実施形態では、リプレー保護領域404のサイズが8メガバイトMBであり、各キャッシュライン208が、64バイト512ビットを有し、リプレー保護領域404は、128Kのキャッシュラインを有している。各ML206について16MACを持つ一実施形態では、8192MLが、128Kのキャッシュラインに対して128KのMACを格納している。各MACが32ビットを持ち、MAC領域400に、リプレー保護領域404の128Kのキャッシュラインのそれぞれについて1つのMACが格納されている場合、MAC領域400は、512キロバイトKBである。MLのそれぞれは、カウンタ群150に格納された対応するカウンタ201を持つ。一実施形態では、8192MLのそれぞれが、拡張された調整に利用される60ビットのカウンタを有しており、揮発性メモリたとえば、SRAMの60KBを利用して、プロセッサ101の8192のカウンタを格納する。メモリ105に8192の60ビットのカウンタを格納すると、プロセッサでは、リプレー保護領域404の各キャッシュラインについて32ビットのMACを格納する際に必要となる512KBより8倍も少ないメモリの消費で済む。プロセッサ101の初期化中に、カウンタ群150が、非乱数値に初期化される。一実施形態では、非乱数値が0である。メモリのキャッシュライン208及びML206も、0以外の値であってよい非乱数値に初期化される。加えて、MACを生成するための鍵を乱数値に初期化する。一実施形態では、鍵は、プロセッサ101の乱数生成器からサンプリングにより得られるsampled。図4に示す実施形態では、リプレー保護領域が、メモリの下位のアドレス領域にあり、MACライン領域が、メモリの上位のアドレス領域にある。領域ベースアドレスレジスタは、リプレー保護領域の最下位アドレスtheaddressofthebottomRPR_ACCRESSを格納して、MAC領域ベースアドレスレジスタが、MACライン領域の最下位アドレスMLR_ACCRESSを格納する。リプレー保護領域のアドレスAのキャッシュラインのオフセットは、MAC領域ベースアドレスからのアドレスに整合するMACキャッシュラインのオフセットより16倍大きい、というのも各MACキャッシュラインが、リプレー保護領域の16つのラインをカバーしているからである。したがって、アドレスAに対応するMACキャッシュラインのアドレスMAC_LINE_ADDRESSは、以下のように計算することができる。リプレー保護領域の64バイトのキャッシュラインをもつ一実施形態では、リプレー保護領域の40ビットのキャッシュラインアドレスアドレス39:0の、整合するMACラインアドレスとSRAMアレイエントリのXTSカウンタのインデックスとへの整合を、以下のように実行する。キャッシュラインアドレスのビット5:0が、常に0である64バイトの配置により。キャッシュラインアドレスのビット9:6が、キャッシュラインに対応するMACラインのMAC値16のうち1を選択するべくのインデックスを格納している。キャッシュラインアドレスのビット22:10が、8192のMACキャッシュラインのうち1つ及びMACキャッシュラインに関するカウンタを特定している。キャッシュラインアドレスのビット39:23が、リプレー保護領域のベースアドレスを格納している。図5は、図4に示す保護されている領域のキャッシュライン208にデータブロックを書き込む方法の一実施形態を示すフローチャートである。ソフトウェアアプリケーションをメモリ105に格納する書き込む場合、ソフトウェアアプリケーションは、メモリ105のりリプレー保護領域404の1以上のキャッシュライン208をポピュレートする。一実施形態では、各キャッシュライン208が、64バイト512ビットを有している。各キャッシュライン208が、メモリ105のMAC領域400のML206に格納されている対応する32ビットのMAC204を有する。キャッシュライン208リプレー保護領域404のが最初にポピュレートされるときはいつでも、そのキャッシュライン208のMAC204を保持するMACキャッシュライン206の対応するカウンタをインクリメントする101。ブロック500で、メモリ105のリプレー保護領域404にキャッシュライン208を割り当てて、書き込むデータを格納する。さらに、MACエントリ204が、メモリ105のMAC領域400に割り当てられ、リプレー保護領域404のキャッシュライン208に書き込むデータのMACを格納する。データの各キャッシュライン208のMACは、MACエントリ204に格納されている。いくつかのキャッシュラインデータの208のMACは、MAC領域400の1つのMLライン206のMACエントリ204に格納されている。MACが32ビットを有する一実施形態では、16MACが、MAC領域400の1つの512ビットのML206に格納されている。一実施形態では、MAC領域400のキャッシュラインがXTS暗号化されており、MAC領域の各ML206がそれぞれのカウンタを有している。処理はブロック502に続く。ブロック502で、キャッシュライン208のためのMAC204を格納しているML206に関連付けられているカウンタ201の内容を読み出す。ML206の内容も読み出す。一実施形態では、ML208が512ビットを有して、16個の32ビットのMACを、1つのMACが16個のキャッシュライン208のそれぞれに対応するよう、格納する。処理はブロック504に続く。ブロック504で、ML206の内容を復号化して、ML206に格納されているMACの平文を復帰させる。復号化は、XTS-AESの高度調整演算モード拡張されたXTS-AESを利用して実行される。プロセッサ101のメモリ暗号化コントローラ103は、XTS-AES高度調整演算モードを実装しているTが、カウンタ値であり、uがMACキャッシュラインの物理アドレスであり、jはブロックのインデックスを示す。このようにすることで、調整値Xは、メモリ450のML206のアドレスだけにではなく、プロセッサ101が、ML206がメモリ105に割り当てられたときに格納したカウンタ値タイムスタンプ値に制限される。カウンタ、および、カウンタを初期化及びインクリメントする方法は変更してもよい。一実施形態では、カウンタはリニアフィードバックシフトレジスタLFSRであり、これは、クロック入力を利用してインクリメントされる、ゼロではない値固定値または乱数値である。別の実施形態では、カウンタが、無作為または確定的に初期化されるインクリメント論理を含むレジスタであってよい。また別の実施形態では、カウンタが、乱数ビットrandombit生成器からサンプリングされた値であってよい。カウンタの長さ出力ビット数は、コピーしたイメージを同じカウンタ値でリプレーしようとする試みが実現不可能になるよう決定されてよい。処理はブロック506に続く。ブロック506で、キャッシュライン208に書き込むデータを、XTS-AESを利用して暗号化する。処理はブロック508に続く。ブロック508で、書き込むキャッシュライン208に関連するMACを格納しているML206に書き込むデータが、ML206の現在の内容を、キャッシュライン208に格納される暗号化されていないデータから生成されたMACと合成merge読み出し-修正-書き込みすることで、生成される。ML206のMACエントリの1つの内容を更新するためには、ML206全体を読み出して復号化して、MACエントリの新しいデータをML206に書き込んで、ML206の内容を暗号化して、ML領域に書き込んで格納する。処理はブロック510に続く。ブロック510で、ML206に関連するカウンタから読み出したタイムスタンプ値カウントがインクリメントされる。処理はブロック512に続く。ブロック512で、ML206の修正された内容を、修正したタイムスタンプ値をもつ、拡張されたXTS-AESを利用して暗号化する。処理はブロック514に続く。ブロック514で、修正されたタイムスタンプ値を、プロセッサ内のML206に関連するカウンタ201に書き込み、修正されたMLをML206に書き込み、暗号化したデータをキャッシュライン208に書き込む。処理が完了する。図5との関連で記載する実施形態では、データブロックが、キャッシュライン208に書き込まれる前に暗号化される。他の実施形態では、ブロック506を実行せず、キャッシュライン208に書き込むデータが平文暗号化されていないである。図6は、図4に示す保護された領域450に読み出しアクセスを実行する方法の一実施形態を示すフローチャートである。ブロック600で、キャッシュライン208、キャッシュライン208のためのMAC205を格納するML206、及び、ML206に関するカウンタ群150のカウンタ201を読み出す。キャッシュライン208、ML206、及びカウンタ201は、図4を参照して説明した読み出しコマンドのメモリアドレスに基づいて決定される。処理は、ブロック602に続く。ブロック602で、キャッシュライン208から読み出された、暗号化されたデータを、XTS-AESを用いて復号化する。処理はブロック604に続く。ブロック604で、ML206から読み出された暗号化されているMAC205が、拡張されたXTS-AESと、ML206に関するカウンタから読み出したタイムスタンプ値とを利用して復号化される。処理はブロック606に続く。ブロック606で、キャッシュライン208に関連するMAC205が、ML206の復号化された平文の内容の複数のMACから抽出される。一実施形態では、512ビットのML206には、16個の32ビットのMAC205が格納されている。MAC205は、キャッシュライン208から読み出されたデータの復号の結果得られる平文を利用して生成される。処理はブロック608に続く。ブロック608で、生成されたMACを、ML206から読み出したMACと比較する。等しい場合には、処理がブロック610に続く。整合しない場合には、処理はブロック612に続く。ブロック610で、キャッシュライン208から読み出したデータ平文を戻す。ブロック612で、不整合が検知され、システムリセットを生成する。図6を参照して説明する実施形態では、キャッシュライン208から読み出したデータを暗号化する。他の実施形態では、キャッシュライン208から読み出したデータが平文である場合暗号化されていない、ブロック602は行わないこともある。一実施形態では、各MACのビット数を32とすることで、MACを格納するために利用されるメモリの量と、複数のキャッシュラインのそれぞれのMACを計算する時間とを低減させる。攻撃者が暗号化されたイメージを修正する場合、攻撃者が一回の試みで成功する確率は2-32である。不整合が生じるたびに、図6との関連で記載したシステムリセットによってシステムのシャットダウンが生じる。シャットダウンした後で、システムは新たな乱数鍵で初期化されてMACが生成される。一実施形態では、各失敗した攻撃の、初期化からオペレーティングシステムが起動され最終的に攻撃スクリプトを実行するまでのサイクルが、少なくとも1秒となる。したがって、連続した試みは232秒かかる計算となる約146年。図2のツリーベースのリプレー保護スキームはセキュアであり、キャッシュラインの内容が改ざんされないよう保護する。ツリーベースのリプレー保護スキームは、辞書攻撃及び誕生日攻撃の両方を防ぐことができる。辞書攻撃は、全ての可能性ある値ではなく、リスト辞書と称されるの値のサブセットを成功裏に試す技術を利用する。辞書攻撃は、成功する可能性が最も高い値のみを試す。攻撃者は、キャッシュライン対と対応するMACとを得てharvest、辞書を構築することができる。攻撃者は次に、辞書から整合するMACを動的に検索して、キャッシュラインを得ることから暗号文をリプレーする。たとえば32ビットのMACでは、攻撃者は、攻撃されるキャッシュラインの232のバージョンの暗号化されたイメージと、攻撃されるキャッシュラインのためのMAC値を格納する対応するMACラインとを格納するテーブルを準備することができる。キャッシュラインを書きこむ場合、攻撃者は、その暗号化された内容を、キャッシュラインの悪意のある暗号化されたバージョンで置き換えて、MACラインの対応する暗号化された内容を、テーブルにおける整合する暗号化されている内容で置き換えることができる。これは、MACチェックをパスしてしまい、攻撃が成功すると思われるだろう。しかし、MACラインが、拡張されたXTS-AESで暗号化されているので、正確に同じMACラインの2つの異なるカウンタ値での暗号化が異なり、攻撃者が辞書を構築することが現実的に不可能/非現実的なものとなる。したがって、ツリーベースのリプレー保護スキームは、辞書攻撃を防ぐことができる。誕生日攻撃は、確率理論の誕生日の問題つまり、十分に大きな無作為に選ばれた人々のうち何人かが同じ誕生日を持つ確率のことの根底にある数学を利用する暗号化攻撃の一種である。たとえば誕生日のパラドックスは、MACがアドレスと独立して暗号化され、攻撃者が、キャッシュラインCLに格納されている暗号化されているデータの平文を生成することができる場合に、2つのキャッシュラインに格納されているデータに適用することができる。攻撃者が、同じ値を格納している2つのキャッシュラインを見て、MACCL1=MACCL2であることが分かっている場合に、攻撃者は、MACを生成するために利用された鍵に関する情報を判断することができる。この鍵に関する情報によって、所望のMAC値を有することができるためにMACチェックをパスしてしまうだろう、偽造forgedデータラインを作成することができる。通常は、誕生日攻撃を防ぐためには、MACのビット数を十分大きくなるよう選択して、誕生日攻撃が不可能となるようにするとよい。一実施形態では、MACが短いビット数が少ないが、MACラインが拡張されたXTS-AESで暗号化されているので、正確に同じMACラインの2つの異なるカウンタ値での暗号が異なるものとなり、誕生日攻撃が防がれる。加えて、カウンタが、無作為ではなく固定値に初期化されるので、カウンタにおける誕生日攻撃が防がれる。一実施形態では、外部メモリに別のレベルのカウンタを提供することで、ツリーベースのリプレー保護スキームをNレベルのツリーに拡張することもできる。これらカウンタは、拡張されたXTS-AES、プロセッサのカウンタ、及び、外部メモリのカウンタのアドレスを利用して暗号化される。外部メモリに格納されているカウンタは、MACラインの拡張されたXTS-AES暗号または外部メモリの別のレベルのカウンタの拡張されたXTS-AES暗号で利用される。ツリーベースのリプレー保護スキームは、外部メモリの保護されている領域のリプレー保護と整合性チェックとの両方を提供する。たとえば攻撃者が無作為に外部メモリのMACラインを破損させた場合、そのMACラインの32ビットのMACのそれぞれが、復号によって無作為に修正される。攻撃が成功する確率は2-32である。失敗すると、上述した様に1秒程かかるリセットになる。攻撃者が無作為に外部メモリのキャッシュラインを攻撃した場合、攻撃が成功する確率は2-32となる。失敗すると、上述したように1秒程かかるリセットになる。攻撃者がカウンタのロールオーバをせずにMACラインをリプレーした場合には、無作為にMACラインが破損されて、上述したリセットが行われる。攻撃者がMACラインを、カウンタのロールオーバをして行った場合には、攻撃が成功するが、実際には、60ビットのカウンタのロールオーバを行うには非常に長い時間がかかり、このような攻撃の戦略は現実的でない。一実施形態をXTS-AESについて説明してきたが、拡張された調整モードは何もXTS-AESに限定はされず、他の実施形態では他の調整可能な暗号スキームに適用することもできる。たとえばLRWM.Liskov、R.Rivest、及びD.Wagerの調整可能なブロック暗号では、LRWを、同様に、向上したLRWモードに向上させることができる。当業者には、本発明の実施形態の方法を、コンピュータ利用可能媒体を含むコンピュータプログラムプロダクトに具現化することができることを理解する。たとえばコンピュータ利用可能媒体は、コンピュータ読み出し可能プログラムコードを格納したCDROMディスクまたは従来のROMデバイスといった読み出し専用メモリデバイス、またはコンピュータディスクを含んでよい。本発明の実施形態を、実施形態を参照しながら具体的に図示、説明してきたが、当業者であれば、添付請求項が含む本発明の実施形態の範囲から逸脱せずに、形態及び詳細における様々な変更を想到するであろう。"