JP5700481B2 - 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置 - Google Patents

整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置 Download PDF

Info

Publication number
JP5700481B2
JP5700481B2 JP2014516958A JP2014516958A JP5700481B2 JP 5700481 B2 JP5700481 B2 JP 5700481B2 JP 2014516958 A JP2014516958 A JP 2014516958A JP 2014516958 A JP2014516958 A JP 2014516958A JP 5700481 B2 JP5700481 B2 JP 5700481B2
Authority
JP
Japan
Prior art keywords
mac
cache line
memory
processor
adjustment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014516958A
Other languages
English (en)
Other versions
JP2014523020A (ja
Inventor
ゲロン、シェイ
サバガオンカ、ウデイ
エックス. マッキーン、フランシス
エックス. マッキーン、フランシス
ブイ. ロザス、カルロス
ブイ. ロザス、カルロス
エム. ダーハム、デイビット
エム. ダーハム、デイビット
ドウェック、ジェイコブ
ムルラ、オフィル
アナティ、イッタイ
グリーンフィールド、ズヴィカ
マオール、モーセ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2014523020A publication Critical patent/JP2014523020A/ja
Application granted granted Critical
Publication of JP5700481B2 publication Critical patent/JP5700481B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Description

本開示は、データの暗号保護に係り、より詳しくは、メモリのメモリ領域に格納されているソフトウェアアプリケーションの暗号化に係る。
セキュアなソフトウェアアプリケーションが利用するシステム内の揮発性メモリの領域は、権原なき者による悪意ある修正から保護される必要がある。これらの悪意ある修正は(「攻撃」と称される場合もある)、ソフトウェア攻撃もあればハードウェア攻撃も含まれうる。セキュアなソフトウェアアプリケーションのための機密性と整合性保護を提供するために方法の1つに、中央処理装置(CPU)またはプロセッサパッケージに大きな揮発性メモリを組み込んで、セキュアなソフトウェアアプリケーションによる「プライベートメモリ」として利用する、というものがある。しかし、大きな揮発性メモリをCPUパッケージに組み込むと、コストが高くなる。
従って通常は、セキュアなソフトウェアアプリケーションは、外部メモリに格納される(つまり、CPUの外部に格納される)。外部メモリの、セキュアなソフトウェアアプリケーションを格納するためのメモリ領域(エリア)は、システムのオペレーティングシステム(OS)から見える場合も、見えない場合もある。OSからこれらのメモリ領域が見える場合には、ソフトウェア攻撃から守られている必要がある。これらのメモリ領域がOSからは見えない場合には(「盗まれたメモリ領域」とも称される)、アクセス制御機構が存在している、ということになるので、ハードウェア攻撃から守られている必要がある(つまり、外部メモリに物理的にアクセスしてくる攻撃者から守られている必要がある)。
以下の詳細な記載は、請求されている主題を示す実施形態を参照したものであるが、当業者には数多くの変形例及び変更例が可能である。従って請求されている主題は広義の解釈が意図されており、添付されている請求項のみにより定義される。
本発明の原理に従ってメモリ暗号化を実行するメモリ暗号化コントローラを含むシステムのブロック図である。 本発明の原理に従って暗号化整合性チェックを提供する、メモリに格納されているメッセージ認証コード(MAC)とメモリのアドレスレンジとを保護するために、ツリーベースのリプレー保護を実行するべく、暗号化エンジンにより利用されるプロセッサ内のN個のカウンタを示すブロック図である。 拡張された調整(tweak)の一実施形態を示す。 システムメモリに格納されているセキュアなアプリケーションを保護するための図1に示すシステムメモリの領域の一実施形態を示すブロック図である。 図4に示す暗号化された領域のキャッシュラインに書き込みアクセスを実行する方法の一実施形態を示すフローチャートである。 図4に示す暗号化された領域に読み出しアクセスを実行する方法の一実施形態を示すフローチャートである。
以下の詳細な説明は、請求されている主題を参照して行われるが、数多くの変形例、変更例、及びバリエーションが当業者には自明である。したがって、請求されている主題は、広義に解釈されることが意図されており、添付請求項によってのみ定義されることが意図されている。
外部メモリに対するハードウェア攻撃には(たとえば外部メモリに物理的にアクセスする攻撃者からの攻撃)は、外部メモリに格納されているイメージ(たとえば、ソフトウェアアプリケーションの実行可能イメージまたはデータ)を破損させようと試みる形態のものがある(つまり、メモリ破損攻撃)。たとえば、攻撃者(敵)からの外部メモリのキャッシュラインの修正は、機密性のために暗号化されているとは思われるが整合性のチェックが行われておらず、メモリから読み出されると、修正されたキャッシュラインの復号が破損することになる。攻撃者がイメージの内容を知っている場合には、攻撃者は選択的に、格納されている外部メモリの保護されているメモリ領域内における物理的メモリ位置のストリング変数(またはその他の定数/変数)を破損させることができる。この変数を修正すると、様々な状況が生じる(たとえば、守られていないメモリ領域にデータを書き込むことができ、攻撃者がアクセスできるようになる、というオーバフロー状況(overflow condition))。
同様に、ソフトウェアアプリケーションの実行可能イメージを破損させようとする試みは、ソフトウェアアプリケーションの実行可能なイメージを格納する無作為なキャッシュラインの悪意のある破損によって、プログラム実行フローに予期しない変更が加わり、潜在的にメモリの保護されていないメモリ領域にデータを書き込んでしまうという試行錯誤法を利用して実行することもできる。
ハードウェア攻撃は、さらに、ソフトウェアアプリケーションの実行可能イメージを、悪意のある実行可能イメージで代替したり(コードの代替)、悪意のあるスクリプトをイメージにインジェクトしたりする際にも利用される場合がある。たとえばコードの代替を実行するために、攻撃者は、外部メモリの保護されている領域の内容のスナップショットをとり、別のイメージが同じ保護されている領域にロードされる、後の時点にスナップショットをリプレーする。たとえば、悪意のあるスクリプトをインジェクトするために、攻撃者は、イメージが、保護されているメモリ領域に格納されている場合にスタックのスナップショットをとり、後で、重要なポインタまたは戻りアドレスがまさに同じ物理メモリ位置に後の時点で格納される時に、スタックのスナップショットをリプレーする。
本発明の原理に従って、外部の物理メモリの保護領域に暗号化整合性チェックとリプレー保護を提供して、保護されているメモリ領域を悪意のあるハードウェア攻撃から保護することができる方法及び装置を提供する。
図1は、本発明の原理に従ってメモリ暗号化を実行するメモリ暗号化コントローラを含むシステムのブロック図である。システム100は、プロセッサ101と入出力(I/O)コントローラハブ(ICH)104とを含む。プロセッサ101は、プロセッサ101と外部メモリ105との間の通信を制御するメモリコントローラ106を含む。プロセッサ101のメモリ暗号化コントローラ103は、メモリ105に格納されているデータに暗号化及び復号化を実行してよい。メモリ暗号化コントローラ103は、メモリ105の内容を読み出すことができるパッシブな攻撃者対策として機密性を提供する。
プロセッサ101は、シングルコアIntel(登録商標)Pentium(登録商標) 4(登録商標)プロセッサ、シングルコアIntel Celeronプロセッサ、Intel(登録商標)XScaleプロセッサ、または、Intel(登録商標)Pentium(登録商標) D等のマルチコアプロセッサ、Intel(登録商標)Xeon(登録商標)プロセッサ、またはIntel(登録商標)Core(登録商標)Duoプロセッサ、またはIntel Core プロセッサその他の種類のプロセッサ等の、複数のプロセッサのいずれかであってよい。
メモリ105は、DRAM、SRAM、SDRAM、DDR RAM、DDR2 RAM、RDRAM、その他の任意の種類の揮発性メモリであってよい。別の実施形態では、メモリ105が、NAND、NOR,Flash、相変化メモリ(PCM)または相変化メモリ&スイッチ(PCMS)その他の種類の不揮発性メモリであってよい不揮発性メモリであってもよい。
ICH104は、ICH104に連結されている少なくとも1つの格納デバイス112との通信を制御する格納I/Oコントローラ110を含んでよい。ここで利用する「格納デバイス」という用語は、そこにデータを格納したり、及び/または、そこからデータを取得したりできる、1以上の装置及び/またはその1以上の部分のことであってよい。さらにここで利用される「大容量ストレージ」及び「大容量格納デバイス」という用語は、交換可能な概念として利用され、データを不揮発に格納することができるストレージのことであってよい。格納デバイス112は、それぞれ半導体、電気機械、磁気、及び/または、光記憶及び/または大容量ストレージ(たとえば、フラッシュ、磁気ディスク、及び/または光ディスクストレージ及び/または大容量ストレージ等)を含んでよい大容量ストレージを含んでよい。ストレージは、たとえば、ハードディスクドライブ、固体ドライブ、ハイブリッドディスクドライブ、DVDドライブ、CDドライブ、RAID,テープドライブ、またはその他の不揮発性格納デバイスであってよい。
格納I/Oコントローラ110は、たとえばSCSI(Small Computer Systems Interface)プロトコル、FC(Fibre Channel)プロトコル、iSCSI(SCSI over Internet Protocol)、SAS(Serial Attached SCSI)プロトコル、USB(Universal Serial Bus)プロトコル、及び/または、S―ATA(Serial Advanced Technology Attachment)プロトコルに従って、格納デバイス(「ストレージ」)との間でデータ及び/またはコマンドを交換することができてよい。
別の実施形態では、プロセッサ101及びICH104が、単一の集積回路内に統合されていてもよい(SOC(System On a Chip)と称されてよい)。
本発明の一実施形態を、メモリ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にコピーすることができてしまう。
別の攻撃として、暗号化されているメモリ領域に対して読み出し/書き込みアクセスができる敵は、暗号化されたメモリ領域の位置(たとえば時点2(t2))を観察して記録して、時点1(t1)で書き込まれた暗号化された領域の内容をコピーすることで、メモリ領域をリセットすることにより、リプレーアタックを実行することができる。また別のタイプのリプレーアタックでは、リプレーアタックを実行する攻撃者が、別の時点に同じメモリ領域に存在しうる2つの別のアプリケーション(コンテキスト)のうちの1つを制御することができてよい。たとえば攻撃者は、アプリケーションのうちの1つを利用して、他のアプリケーションを攻撃することができる。
本発明の一実施形態は、メモリイメージに対する無作為な(予期しないまたは無制御な)変更を起こさせる機能程度のものに、攻撃の効果を低減させることで、リプレーアタックを軽減する。
図2は、本発明の原理に従って暗号化整合性チェックを提供する、メモリ105に格納されているメッセージ認証コード(MAC)とメモリ105のアドレス領域とを保護するために、ツリーベースのリプレー保護を実行するべく、メモリ暗号化エンジンにより利用されるプロセッサ101内のN個のカウンタ群150を示すブロック図である。
保護されるメモリの領域(アドレスレンジ)202は、複数のデータキャッシュライン208及びMACライン206に格納されている複数のメッセージ認証コード(MAC)204により表される。図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の各キャッシュライン(CL)208の内容が、XTS(XEX encryption mode with tweak and cipher text stealing)によって暗号化されている。XTS(XEX encryption mode with tweak and cipher text stealing)‐AES(Advanced Encryption Standard)調整可能なブロック暗号(IEEE規格1619−2007)をもつXEX暗号モードは、NIST(米国の国立標準技術研究所)のFIPS(Federal Information Processing Standards)140−2における動作モードであり、一定の長さのブロックに格納されるデータを暗号により保護するアーキテクチャの要素を定義している。他の実施形態では、各キャッシュライン(CL)の内容が平文(暗号化されていない)であってもよい。
XTS−AES演算モードは、連続した均等サイズのデータユニットに分割されたデータストリームの暗号に適用され、例外として、データストリームの最後のデータユニットは、他のものより短くてよい。各データユニットは128以上のビットのデータを1つの鍵の範囲に持っている。鍵の範囲は、具体的な鍵によって暗号化され、均等サイズのデータユニットに分割されたデータである。鍵の範囲は、3つの負ではない整数によって特定される(つまり、第1のデータユニットに対応している調整値、データユニットのサイズ、及びデータの長さ)。調整値は、XTS‐AESで暗号化または復号化されたデータストリームのデータの論理位置を表すために利用される128ビットの値である。各データユニットには、負ではない整数である調整値が割り当てられる。調整値は、任意の負ではない整数から連続して割り当てられる。
XTS−AES演算モードは、「調整可能な幅の狭いブロック暗号」であり、ディスク暗号化の標準モードである(保存データ暗号化)。これは、電子コードブック(ECB)モードの暗号化として見ることもでき、ここでは、暗号化が、データブロックの暗号を、その「インデックス」の位置の関数として修正する調整値(調整)が利用される。ECBモードでは、各平文ブロックが、ブロック暗号とは独立して暗号化される。ディスク暗号化においては、XTS−AES演算モードで、調整を利用して、暗号化されているディスクドライブ(記憶媒体)のセクタに暗号を組み合わせる(binding the encryption)。
一実施形態では、メモリ暗号化ユニット(コントローラ)が、XTS−AES演算モードを利用して、保護されているデータブロックの(物理)メモリアドレスに暗号を組み合わせる。AES−XTSを利用すると、多くの場合に、暗号化されているメモリイメージを物理的に操作できる攻撃者に対して、及び、暗号化されたブロックの位置をスワッピングすることによる、または、他の暗号化されたブロックで、暗号化されたブロックを上書きすることによる攻撃に対して効果がある。AES−XTS調整は、物理メモリアドレスの関数(function)であり、このような攻撃は、攻撃者が予期不可能、制御不可能な無作為の変更を誘発する程度の、弱い攻撃に等しくなる。言い換えると、攻撃者は、スワッピング/上書きを行っても、攻撃者が「盲目に」メモリを変更することから得られる程度の利益しか得られなくなる。
ディスクの暗号化のための標準的なXTSモードでは、インデックスがユニット(u)の(j)であるデータブロックPのAES‐XTSが、まず、調整値を生成してから、次に、調整値を利用して平文から暗号文を生成することで実行される。
たとえば調整値(X)は、16バイトの鍵値(K1)をブロック識別子(ユニット(u)、そのユニット(u)におけるユニットの位置(j))に利用することで生成され、多項式(Poly)x128+x+x+x+1が、以下に示すものとなる。
Figure 0005700481
上の式において、「*」は、キャリーなし乗算(carry-less multiplication)を示す。
調整値(X)が生成されると、暗号文(C)は、以下に示すように調整値(X)と別の16バイトの鍵の値(K2)を利用して、平文(P)から生成される。
Figure 0005700481
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モードが、調整のより多くの情報を利用するべく拡張される(拡張された調整)。拡張された調整には、標準的な情報に加えて、たとえばキャッシュラインアドレス及びブロック位置、ならびに/または、タイムスタンプ値が含まれる。
一実施形態では、さらなる情報を格納する拡張された調整のビットが、拡張された調整の最上位(most significant)64ビットに存在している。前述したように、最上位ビットは、標準AES−XTSモードでは0に設定されている。別の実施形態では、さらなる情報が、0に保証されている他のビットに存在している。したがって、拡張されたAES−XTSは、全てのさらなる情報ビットが0に低下した場合に、暗号が標準的なXTSモードになることから、標準的なAES−XTSの一般形である。
一実施形態では、拡張された調整が、数3として下に示すキャッシュラインアドレス及び時間を利用して生成される。
Figure 0005700481
本式において、Pはデータブロックであり、そのインデックスがユニットuのjであり、Tで示す時間に暗号化され、シンボル「|」が連結を示す。
拡張された調整は、調整が連続した整数を記述するよう生成される(時間0,1,…,2^(32)‐1)のアドレスをカウントする)。ML[j]の調整(時間TIME及びアドレスACLにおいて)(j=0,1,2,…,m−1であり、TIME=0,1,…,2^(32)‐1である)が、以下の式で表される。
Figure 0005700481
ここで、Unit=MACキャッシュライン(ML)であり、
各MLが2^(6)=64バイトであり、(4x128ビット(2^(20)ブロック)であり)、
各MLが、40ビットのベースアドレスを有し、ACL[39:0]のACL[5:0]=[000000] であり、パーティションが2^nMBを有し、
m(MLの数)=2^(n+14)であり、
jが、データストリームのm個のMLのうちの1つであり、
異なる時間に(ML[j](時間t))データストリームがm個のMLであり、以下のようになる。
時間t=0において、ML[0],ML[1],…,ML[m−1]であり、
時間t=1において、ML[0],ML[1],…,ML[m−1]であり、

時間t=2^(32)‐1において、ML[0],ML[1],…,ML[m−1]であり、
ベースアドレス(<ML[j])が、ACL[j]で表される(j=0,1,2,…,m−1)。
MLについて行うと(上述した順序で)、調整が、
Figure 0005700481
という正の整数から始まり、
Figure 0005700481
で終わる、正の整数全てに連続して実行される。 たとえば、2MBのパーティションを考える(n=1及びM=15)。 時間TIME(32ビット)におけるML[j]の調整は、以下のように定義される。
Figure 0005700481
図3は、拡張の調整300の一実施形態を示す。図3に示す拡張された調整300は、128ビット値である。拡張されている調整300の最下位の48ビット(ビット47:0)306は、アドレス(u)についてリザーブされており、残りの80個の最上位ビット(ビット127:48)304が、タイムスタンプ(T)用にリザーブされている。
図2に戻ると、各MACキャッシュライン206が、拡張された調整300を利用して暗号化され、MACキャッシュライン206の4つのMACのグループの開始アドレスが、拡張された調整300の最下位ビット(「アドレス(u)」)に格納され、MACライン206に関するカウンタ201の値が、最上位ビット(「タイムスタンプ(T)」)304に格納される。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キャッシュライン(ML)206のためのカウンタ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ライン領域が、メモリの上位のアドレス領域にある。領域ベースアドレスレジスタは、リプレー保護領域の最下位アドレス(the address of the bottom)(RPR_ACCRESS)を格納して、MAC領域ベースアドレスレジスタが、MACライン領域の最下位アドレス(MLR_ACCRESS)を格納する。
リプレー保護領域のアドレス「A」のキャッシュラインのオフセットは、MAC領域ベースアドレスからのアドレスに整合するMACキャッシュラインのオフセットより16倍大きい、というのも各MACキャッシュラインが、リプレー保護領域の16つのラインをカバーしているからである。
したがって、アドレス「A」に対応するMACキャッシュラインのアドレス(MAC_LINE_ADDRESS)は、以下のように計算することができる。
Figure 0005700481
リプレー保護領域の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)であり、これは、クロック入力を利用してインクリメントされる、ゼロではない値(固定値または乱数値)である。別の実施形態では、カウンタが、無作為または確定的に初期化されるインクリメント論理を含むレジスタであってよい。また別の実施形態では、カウンタが、乱数ビット(random bit)生成器からサンプリングされた値であってよい。カウンタの長さ(出力ビット数)は、コピーしたイメージを同じカウンタ値でリプレーしようとする試みが実現不可能になるよう決定されてよい。処理はブロック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つのキャッシュラインを見て、MAC(CL1)=MAC(CL2)であることが分かっている場合に、攻撃者は、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に限定はされず、他の実施形態では他の調整可能な暗号スキームに適用することもできる。たとえばLRW(M.Liskov、R.Rivest、及びD.Wager)の調整可能なブロック暗号では、LRWを、同様に、向上したLRWモードに向上させることができる。
当業者には、本発明の実施形態の方法を、コンピュータ利用可能媒体を含むコンピュータプログラムプロダクトに具現化することができることを理解する。たとえばコンピュータ利用可能媒体は、コンピュータ読み出し可能プログラムコードを格納したCD ROMディスクまたは従来のROMデバイスといった読み出し専用メモリデバイス、またはコンピュータディスクを含んでよい。
本発明の実施形態を、実施形態を参照しながら具体的に図示、説明してきたが、当業者であれば、添付請求項が含む本発明の実施形態の範囲から逸脱せずに、形態及び詳細における様々な変更を想到するであろう。

Claims (22)

  1. 整合性のチェックおよびリプレーアタックからの保護が行われるメモリ暗号化を行う方法であって、
    プロセッサによって、アプリケーションに関するデータのブロックのメッセージ認証コード(MAC)を生成する段階と、
    プロセッサで、各カウンタがメモリ内の複数のMACキャッシュラインのうちの1つのMACキャッシュラインに関連している、複数のカウンタを提供する段階と、
    前記プロセッサによって、調整を利用して前記MACを暗号化する段階であって、前記調整は、前記MACを格納するための前記1つのMACキャッシュラインのキャッシュライン識別子と、前記1つのMACキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含む、段階と、
    前記プロセッサによって、前記データのブロックを、前記メモリのキャッシュラインに格納する段階と、
    前記プロセッサによって、前記MACを、前記メモリのMACキャッシュラインに格納する段階と
    を備え、前記メモリは前記プロセッサとは別である、方法。
  2. 前記アプリケーションは、セキュアなアプリケーションであり、
    前記データのブロックは、前記プロセッサにより暗号化されており、
    前記暗号化されたデータのブロックは、前記プロセッサによって前記メモリのキャッシュラインに格納される、請求項1に記載の方法。
  3. 前記調整は、XTS(XEX encryption mode with tweak and cipher text stealing)‐AES(Advanced Encryption Standard)調整である、請求項1または2に記載の方法。
  4. 前記調整はLRW調整である、請求項1または2に記載の方法。
  5. 前記複数のMACキャッシュラインは、前記メモリの保護された領域にある、請求項1から4のいずれか一項に記載の方法。
  6. 前記キャッシュラインは、前記メモリのリプレー保護された領域にある、請求項1から5のいずれか一項に記載の方法。
  7. 前記MACは32ビットをもち、前記複数のMACキャッシュラインは512ビットをもち、前記キャッシュラインは512ビットをもつ、請求項1から6のいずれか一項に記載の方法。
  8. 整合性のチェックおよびリプレーアタックからの保護が行われるメモリ暗号化を行う装置であって、
    各カウンタが外部メモリの複数のMACキャッシュラインのうちの1つのMACキャッシュラインに関連している、複数のカウンタと、
    前記外部メモリに格納されているアプリケーションに関するデータのブロックのメッセージ認証コード(MAC)を生成し、調整を利用して前記MACを暗号化する論理と
    を備え、
    前記調整は、前記MACを格納するための前記1つのMACキャッシュラインのキャッシュライン識別子と、前記1つのMACキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含み、
    前記MACを暗号化する論理は、前記データのブロックを前記外部メモリのキャッシュラインに格納して、前記MACを前記外部メモリのMACキャッシュラインに格納する、装置。
  9. 前記アプリケーションは、セキュアなアプリケーションであり、
    前記データのブロックは、プロセッサにより暗号化されており、
    前記暗号化されたデータのブロックは、前記プロセッサによって前記メモリのキャッシュラインに格納される、請求項8に記載の装置。
  10. 前記調整は、XTS(XEX encryption mode with tweak and cipher text stealing)‐AES(Advanced Encryption Standard)調整である、請求項8または9に記載の装置。
  11. 前記調整はLRW調整である、請求項8から10のいずれか一項に記載の装置。
  12. 前記複数のMACキャッシュラインは、前記外部メモリの保護された領域にある、請求項8から11のいずれか一項に記載の装置。
  13. 前記キャッシュラインは、前記外部メモリのリプレー保護された領域にある、請求項8から12のいずれか一項に記載の装置。
  14. 前記MACは32ビットをもち、前記複数のMACキャッシュラインは512ビットをもち、前記キャッシュラインは512ビットをもつ、請求項8から13のいずれか一項に記載の装置。
  15. 関連する情報をもつ機械アクセス可能な媒体を含む物品であって、
    前記情報はアクセスされると、機械に、
    プロセッサによって、アプリケーションに関するデータのブロックのメッセージ認証コード(MAC)を生成する段階と、
    プロセッサで、各カウンタがメモリ内の複数のMACキャッシュラインのうちの1つのMACキャッシュラインに関連している、複数のカウンタを提供する段階と、
    前記プロセッサによって、調整を利用して前記MACを暗号化する段階と、
    前記プロセッサによって、調整を利用して前記MACを暗号化する段階であって、前記調整は、前記MACを格納するための前記1つのMACキャッシュラインのキャッシュライン識別子と、前記1つのMACキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含む、段階と、
    前記プロセッサによって、前記データのブロックを、前記メモリのキャッシュラインに格納する段階と、
    前記プロセッサによって、前記MACを、前記メモリのMACキャッシュラインに格納する段階と
    を実行させ、
    前記メモリは前記プロセッサとは別であり、
    前記データのブロックは、前記プロセッサにより暗号化されており、前記暗号化されたデータのブロックが、前記プロセッサによって前記メモリのキャッシュラインに格納される、物品。
  16. 前記アプリケーションは、セキュアなアプリケーションである、請求項15に記載の物品。
  17. 前記調整は、XTS(XEX encryption mode with tweak and cipher text stealing)‐AES(Advanced Encryption Standard)調整である、請求項15または16に記載の物品。
  18. 前記調整はLRW調整である、請求項15または16に記載の物品。
  19. アプリケーションを格納する大容量記憶デバイスと、
    プロセッサと
    を備え、
    前記プロセッサは、
    各カウンタが外部メモリの複数のMACキャッシュラインのうちの1つのMACキャッシュラインに関連している、複数のカウンタと、
    前記外部メモリに格納されている前記アプリケーションに関するデータのブロックのメッセージ認証コード(MAC)を生成し、調整を利用して前記MACを暗号化する論理と
    を備え、
    前記調整は、前記MACを格納するための前記1つのMACキャッシュラインのキャッシュライン識別子と、前記1つのMACキャッシュラインに関連している前記カウンタから読み出したタイムスタンプ値とを含み、
    前記MACを暗号化する論理は、前記データのブロックを前記外部メモリのキャッシュラインに格納して、前記MACを前記外部メモリのMACキャッシュラインに格納する、システム。
  20. 前記調整は、XTS(XEX encryption mode with tweak and cipher text stealing)‐AES(Advanced Encryption Standard)調整である、請求項19に記載のシステム。
  21. 前記調整はLRW調整である、請求項19に記載のシステム。
  22. 前記アプリケーションは、セキュアなアプリケーションである、請求項19から21のいずれか一項に記載のシステム。
JP2014516958A 2011-06-29 2011-06-29 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置 Active JP5700481B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/042413 WO2013002789A1 (en) 2011-06-29 2011-06-29 Method and apparatus for memory encryption with integrity check and protection against replay attacks

Publications (2)

Publication Number Publication Date
JP2014523020A JP2014523020A (ja) 2014-09-08
JP5700481B2 true JP5700481B2 (ja) 2015-04-15

Family

ID=47424443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014516958A Active JP5700481B2 (ja) 2011-06-29 2011-06-29 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置

Country Status (7)

Country Link
US (1) US9076019B2 (ja)
EP (1) EP2726991B1 (ja)
JP (1) JP5700481B2 (ja)
KR (1) KR101577886B1 (ja)
CN (1) CN103620617B (ja)
TW (1) TWI556106B (ja)
WO (1) WO2013002789A1 (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101577886B1 (ko) 2011-06-29 2015-12-15 인텔 코포레이션 무결성 검사 및 리플레이 공격들에 대한 보호를 이용하는 메모리 암호화를 위한 방법 및 장치
US8996934B2 (en) 2012-09-29 2015-03-31 Intel Corporation Transaction-level testing of memory I/O and memory device
US9003246B2 (en) 2012-09-29 2015-04-07 Intel Corporation Functional memory array testing with a transaction-level test engine
US9009540B2 (en) 2012-12-05 2015-04-14 Intel Corporation Memory subsystem command bus stress testing
US9009531B2 (en) 2012-12-05 2015-04-14 Intel Corporation Memory subsystem data bus stress testing
TWI517655B (zh) * 2013-05-23 2016-01-11 晨星半導體股份有限公司 密碼裝置以及密鑰保護方法
US20150033034A1 (en) * 2013-07-23 2015-01-29 Gideon Gerzon Measuring a secure enclave
CN111160902B (zh) 2013-12-02 2023-06-23 万事达卡国际股份有限公司 用于向不带有安全元件的移动设备安全传送远程通知服务消息的方法及系统
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
US9910790B2 (en) * 2013-12-12 2018-03-06 Intel Corporation Using a memory address to form a tweak key to use to encrypt and decrypt data
US20150363333A1 (en) * 2014-06-16 2015-12-17 Texas Instruments Incorporated High performance autonomous hardware engine for inline cryptographic processing
JP6477699B2 (ja) * 2014-06-20 2019-03-06 ソニー株式会社 情報処理装置および情報処理方法
WO2016071743A1 (en) * 2014-11-07 2016-05-12 Elliptic Technologies Inc. Integrity protection for data storage
US10185842B2 (en) 2015-03-18 2019-01-22 Intel Corporation Cache and data organization for memory protection
US9710675B2 (en) 2015-03-26 2017-07-18 Intel Corporation Providing enhanced replay protection for a memory
US9798900B2 (en) 2015-03-26 2017-10-24 Intel Corporation Flexible counter system for memory protection
US9792229B2 (en) 2015-03-27 2017-10-17 Intel Corporation Protecting a memory
US10230528B2 (en) * 2015-05-04 2019-03-12 Intel Corporation Tree-less integrity and replay memory protection for trusted execution environment
CN105653467A (zh) * 2015-05-21 2016-06-08 宇龙计算机通信科技(深圳)有限公司 一种存储空间分配方法及装置
US10108557B2 (en) * 2015-06-25 2018-10-23 Intel Corporation Technologies for memory confidentiality, integrity, and replay protection
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US9959418B2 (en) * 2015-07-20 2018-05-01 Intel Corporation Supporting configurable security levels for memory address ranges
EP3262481B1 (en) * 2015-09-17 2018-11-07 Hewlett-Packard Enterprise Development LP Efficiently storing initialization vectors
US9904805B2 (en) 2015-09-23 2018-02-27 Intel Corporation Cryptographic cache lines for a trusted execution environment
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US9990249B2 (en) * 2015-12-24 2018-06-05 Intel Corporation Memory integrity with error detection and correction
US10594491B2 (en) * 2015-12-24 2020-03-17 Intel Corporation Cryptographic system memory management
US10534724B2 (en) * 2015-12-24 2020-01-14 Intel Corporation Instructions and logic to suspend/resume migration of enclaves in a secure enclave page cache
CN105491069B (zh) * 2016-01-14 2018-08-21 西安电子科技大学 云存储中基于抵抗主动攻击的完整性验证方法
US10346318B2 (en) * 2016-09-13 2019-07-09 Intel Corporation Multi-stage memory integrity method and apparatus
CN107835145B (zh) * 2016-09-21 2019-12-31 炫彩互动网络科技有限公司 一种防重放攻击的方法及分布式系统
US10528485B2 (en) 2016-09-30 2020-01-07 Intel Corporation Method and apparatus for sharing security metadata memory space
US10235304B2 (en) 2016-10-01 2019-03-19 Intel Corporation Multi-crypto-color-group VM/enclave memory integrity method and apparatus
TWI610196B (zh) * 2016-12-05 2018-01-01 財團法人資訊工業策進會 網路攻擊模式之判斷裝置、判斷方法及其電腦程式產品
US11349668B2 (en) * 2017-02-21 2022-05-31 Mitsubishi Electric Corporation Encryption device and decryption device
US10733313B2 (en) * 2018-02-09 2020-08-04 Arm Limited Counter integrity tree for memory security
KR102488636B1 (ko) * 2017-11-23 2023-01-17 삼성전자주식회사 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치
US11082432B2 (en) 2017-12-05 2021-08-03 Intel Corporation Methods and apparatus to support reliable digital communications without integrity metadata
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
US20190196984A1 (en) * 2017-12-27 2019-06-27 Qualcomm Incorporated Method, apparatus, and system for dynamic management of integrity-protected memory
EP3509003B1 (en) * 2018-01-04 2021-04-21 Shenzhen Goodix Technology Co., Ltd. Method and apparatus to protect code processed by an embedded micro-processor against altering
US10838773B2 (en) * 2018-03-30 2020-11-17 Intel Corporation Techniques for dynamic resource allocation among cryptographic domains
KR102625275B1 (ko) * 2018-08-03 2024-01-12 엘지전자 주식회사 비휘발성 메모리를 구비하는 전자 기기
CN109697174B (zh) * 2018-12-14 2023-06-23 中国航空工业集团公司西安航空计算技术研究所 一种机载计算机存储系统敏感分区防护方法
US11120167B2 (en) 2019-03-25 2021-09-14 Micron Technology, Inc. Block chain based validation of memory commands
KR20200128825A (ko) 2019-05-07 2020-11-17 삼성전자주식회사 분리된 rpmb 기능을 가지는 스토리지 시스템 및 그 구동 방법
KR20200129776A (ko) * 2019-05-10 2020-11-18 삼성전자주식회사 재전송 공격에 대한 방어책을 포함하는 메모리 시스템의 구동 방법 및 이를 수행하는 메모리 시스템
CN113853588A (zh) * 2019-05-21 2021-12-28 美光科技公司 用于非易失性存储器的总线加密
DE102019128528A1 (de) * 2019-10-22 2021-04-22 Infineon Technologies Ag Datenkryptografievorrichtungen und speichersysteme
US11520905B2 (en) 2019-11-20 2022-12-06 Kyndryl, Inc. Smart data protection
US11659001B2 (en) 2019-12-12 2023-05-23 General Electric Company Non-intrusive replay attack detection system
US20230132163A1 (en) * 2020-04-23 2023-04-27 Nec Corporation Memory processing apparatus, memory verification apparatus, memory updating apparatus, memory protection system, method, and computer readable medium
US20220207194A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Memory address bus protection for increased resilience against hardware replay attacks and memory access pattern leakage
KR20220093664A (ko) 2020-12-28 2022-07-05 삼성전자주식회사 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법
GB2622065A (en) * 2022-09-01 2024-03-06 Advanced Risc Mach Ltd Counter integrity tree
GB2622066A (en) * 2022-09-01 2024-03-06 Advanced Risc Mach Ltd Counter tree
CN117407928B (zh) * 2023-12-13 2024-03-22 合肥康芯威存储技术有限公司 存储装置、存储装置的数据保护方法、计算机设备及介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6816968B1 (en) * 1998-07-10 2004-11-09 Silverbrook Research Pty Ltd Consumable authentication protocol and system
JP4153653B2 (ja) * 2000-10-31 2008-09-24 株式会社東芝 マイクロプロセッサおよびデータ保護方法
JP2003228284A (ja) * 2002-01-31 2003-08-15 Fujitsu Ltd データ保存装置、データ保存方法、データ検証装置、データアクセス許可装置、プログラム、記録媒体
US7487365B2 (en) * 2002-04-17 2009-02-03 Microsoft Corporation Saving and retrieving data based on symmetric key encryption
DE10221409A1 (de) * 2002-05-14 2003-12-04 Infineon Technologies Ag Schaltung und Verfahren zur Durchführung einer Berechnung
US20050144468A1 (en) * 2003-01-13 2005-06-30 Northcutt J. D. Method and apparatus for content protection in a personal digital network environment
US7392399B2 (en) * 2003-05-05 2008-06-24 Sun Microsystems, Inc. Methods and systems for efficiently integrating a cryptographic co-processor
US7444523B2 (en) * 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US7681050B2 (en) 2005-12-01 2010-03-16 Telefonaktiebolaget L M Ericsson (Publ) Secure and replay protected memory storage
JP4409619B2 (ja) * 2006-02-24 2010-02-03 富士通株式会社 情報処理装置、制御装置および制御方法
US8095802B2 (en) * 2006-09-12 2012-01-10 International Business Machines Corporation System and method for securely saving a program context to a shared memory
US8356178B2 (en) * 2006-11-13 2013-01-15 Seagate Technology Llc Method and apparatus for authenticated data storage
US8209542B2 (en) 2006-12-29 2012-06-26 Intel Corporation Methods and apparatus for authenticating components of processing systems
US9324361B2 (en) * 2007-08-14 2016-04-26 Seagate Technology Llc Protecting stored data from traffic analysis
EP2186250B1 (en) 2007-08-31 2019-03-27 IP Reservoir, LLC Method and apparatus for hardware-accelerated encryption/decryption
US8296584B2 (en) * 2007-12-28 2012-10-23 Alcatel Lucent Storage and retrieval of encrypted data blocks with in-line message authentication codes
US20090187771A1 (en) * 2008-01-17 2009-07-23 Mclellan Jr Hubert Rae Secure data storage with key update to prevent replay attacks
US8978132B2 (en) * 2008-05-24 2015-03-10 Via Technologies, Inc. Apparatus and method for managing a microprocessor providing for a secure execution mode
JP5333450B2 (ja) * 2008-08-29 2013-11-06 日本電気株式会社 調整値付きブロック暗号化装置、方法及びプログラム並びに復号装置、方法及びプログラム
WO2010054369A1 (en) * 2008-11-10 2010-05-14 Oxford William V Method and system for controling code execution on a computing device using recursive security protocol
KR101612518B1 (ko) * 2009-11-26 2016-04-15 삼성전자주식회사 병렬 처리 가능한 암복호화기 및 그것의 암복호 방법
US8826035B2 (en) * 2009-12-23 2014-09-02 Intel Corporation Cumulative integrity check value (ICV) processor based memory content protection
US8468365B2 (en) * 2010-09-24 2013-06-18 Intel Corporation Tweakable encryption mode for memory encryption with protection against replay attacks
KR101577886B1 (ko) 2011-06-29 2015-12-15 인텔 코포레이션 무결성 검사 및 리플레이 공격들에 대한 보호를 이용하는 메모리 암호화를 위한 방법 및 장치

Also Published As

Publication number Publication date
TW201319809A (zh) 2013-05-16
JP2014523020A (ja) 2014-09-08
EP2726991A1 (en) 2014-05-07
EP2726991A4 (en) 2015-04-08
TWI556106B (zh) 2016-11-01
KR20140018410A (ko) 2014-02-12
WO2013002789A1 (en) 2013-01-03
CN103620617A (zh) 2014-03-05
KR101577886B1 (ko) 2015-12-15
EP2726991B1 (en) 2018-03-14
US9076019B2 (en) 2015-07-07
US20140223197A1 (en) 2014-08-07
CN103620617B (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
JP5700481B2 (ja) 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置
JP5632086B2 (ja) システムメモリに対するハードウェアの攻撃から保護する方法、装置、およびシステム
KR101880075B1 (ko) 중복 제거 기반 데이터 보안
EP3355232B1 (en) Input/output data encryption
US11658808B2 (en) Re-encryption following an OTP update event
JP7464586B2 (ja) メモリ完全性チェックのための完全性ツリー
CN111444553A (zh) 支持tee扩展的安全存储实现方法及系统
CN104598827B (zh) 硬件协助的操作系统重启计数器设计方法
WO2023073368A1 (en) Methods and systems for secure data storage
US20240080193A1 (en) Counter integrity tree
US20240078323A1 (en) Counter tree
US11677541B2 (en) Method and device for secure code execution from external memory
US20230274037A1 (en) Secure Flash Controller
CN114761957A (zh) 控制对存储在非可信存储器中的数据的访问的装置和方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150210

R150 Certificate of patent or registration of utility model

Ref document number: 5700481

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250