説明

セキュアなメモリに応用するメッセージ認証コードの事前計算

擬似ランダム置換(PRP)および擬似ランダム関数(PRF)のうちの少なくとも1つを実行することによってデータ入力からデータのランダム置換を作成するステップと、データのランダム置換を受信された第2のデータブロックと結合すること、および結合の結果にε差分一様関数を実行することによって第1のデータブロックを作成するステップと、秘密鍵を使用してε差分一様関数の値を求めた結果をXOR演算するステップと、第1のデータブロックを第1のメッセージ認証コードに縮小するステップとを含む方法。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュアなメモリに応用する、認証コードを事前計算するための方法および装置を対象とする。
【背景技術】
【0002】
消費者製品、業務用製品、および軍用機器さえも、日に日にコンピュータシステムに依存するようになっている。製品がコンピューティング装置を組み込むとき、人々はその製品を無料で利用するために、またはその製品を妨害するために、製品の弱点を悪用しようとする可能性がある。コンピューティングの世界では、ハッカー、著作権侵害者、または敵対者が、機器のメモリを改ざんすることにより、コンピューティング機器を使用する製品を悪用しようとする可能性がある。一般に、コンピューティングの完全性(インテグリティ)を保護することに関しては、ソフトウェアベースとハードウェアベースの、2つの主要なセキュリティ領域がある。ソフトウェアベースのセキュリティは、ソフトウェアの完全性に関係する。ハードウェアベースのセキュリティは、ハッカーがコンピューティングシステムにフルアクセスし、オシロスコープおよびロジックアナライザを使用してコンピューティングシステムを監視することができるとされる。
【0003】
チップ上に回路を非常に大規模に集積化することが進歩し、チップ上に完全なシステム(Systems on a Chip(SoC))を集積化することによって、耐タンパー性ハードウェアのコンピューティングシステムがもたらされた。このように、コンピューティングシステム全体をチップ上に集積化することにより、敵対者の攻撃を阻止することができる。しかしながらほとんどの実際の状況では、オンチップメモリの不足が、この解決法を実現不可能にしている。プログラムおよびデータは、オフチップメモリに格納されなければならない。これは、敵対者がオフチップメモリを改ざんすることによってコンピューティング機器に障害を生じさせる道を開く。
【0004】
メモリに署名し、暗号化することは、敵対者がオフチップメモリを成功裏に改ざんすることを阻止するための一方法である。メッセージの署名は、メモリの一部が前回読み出されてから変わっていないことを検証するために使用されることが可能であるチェックサムと同様である。データがオフチップメモリに書き込まれるとき、署名が生成され、データと共に格納される。データがオフチップメモリから読み出されるとき、署名が検証されて、データが変わっていないことを確認する。署名の生成は、高価な操作となる可能性がある。署名を生成するには多くのクロックサイクルが使用される場合がある。したがって、メモリの署名を生成し、チェックすることは、効率的でなければならない。
【0005】
メッセージの認証が、大量の研究の主題となった。最も自然なMAC方式は、冗長データ(32個のゼロの列など)と連結されたメッセージに擬似ランダム置換(PRP)の単純な値を求める(evaluation)ことを含むが、このような方式は、事前計算に向いていない。
【0006】
MAC計算の別の手法は、万能ハッシュ関数(UHF)を使用する。UHFからMACを取得する考えは、最初にCarterおよびWegmanによって提案された(Wegman、Carter、New Hash Functions and Their Use in Authentication and Set Equality、JCSS、22:265、1981)。後にBrassardが、擬似ランダム生成器を使用して、MAC鍵のサイズを縮小することを提案した(Gilles Brassard、On computationally secure authentication tags requiring short secret shared keys、Crypto’82,79−86)。その結果の構成は、次のとおりである:Mac(m,r)=h(m)XOR F(r)、ただしhはUHFであり、Fは擬似ランダム生成器である。それ以来、相当量の研究は、使用される関数hおよびFの速度およびその他の改善に集中した。
【0007】
MACの事前計算の構成は、以前に提案された構成とは異なり、事前計算を用いた短いメッセージの認証には特に望ましい特性を持っている。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】Wegman、Carter、New Hash Functions and Their Use in Authentication and Set Equality、JCSS、22:265、1981
【非特許文献2】Gilles Brassard、On computationally secure authentication tags requiring short secret shared keys、Crypto’82,79−86
【発明の概要】
【課題を解決するための手段】
【0009】
1つの実施形態における方法は、擬似ランダム関数(PRF)および擬似ランダム置換(PRP)のうちの少なくとも1つを実行することによってデータ入力からデータのランダム置換を作成するステップと、データのランダム置換を受信された第2のデータブロックと結合すること、およびε差分一様(ε−DU)置換を実行することによって第1のデータブロックを作成するステップとを含む。秘密鍵を使用してε−DU関数の値を求めた結果をXOR演算し、第1のデータブロックを第1のメッセージ認証コードに縮小する。
【0010】
別の実施形態におけるシステムは、MACコンピュータを含み、MACコンピュータが擬似ランダム関数(PRF)および擬似ランダム置換(PRP)のうちの少なくとも1つを実行することによってデータ入力からデータのランダム置換を作成し、MACコンピュータがデータのランダム置換を受信された第2のデータブロックと結合する、およびε差分一様(ε−DU)置換を実行することによって第1のデータブロックを作成し、MACコンピュータが秘密鍵を使用してε−DUの値を求めた結果をXOR演算し、MACコンピュータが第1のデータブロックを第1のメッセージ認証コードに縮小する。
【0011】
本発明の例示的実装の特徴は、説明、特許請求の範囲、および添付の図面から明らかになるであろう。
【図面の簡単な説明】
【0012】
【図1】MACの事前計算のための装置および方法があるコンピュータシステムの見本のブロック図である。
【図2】MACの事前計算を使用してデータを読み書きする際に使用することができる方法の一例を示す図である。
【図3】MACの事前計算を使用してデータをメモリに書き込む方法を示す図である。
【図4】MACの事前計算を使用してメモリからデータを読み出して認証する方法を示す図である。
【図5】MACの事前計算を行うための装置を含むことができるシステムの一実施形態を示す図である。
【発明を実施するための形態】
【0013】
先に述べたように、コンピュータセキュリティの弱点部分はオフチップメモリである。敵対者は、オフチップメモリに含まれている情報を変える、または再生して、コンピュータシステムを破壊させる可能性がある。敵対者を減らす1つの方法は、オフチップメモリに署名し、暗号化することである。メモリ上の署名を計算することは、メッセージ認証コード(MAC)を生成することを伴うことがある。鍵およびメモリもしくはデータのブロックを入力として使用してMACアルゴリズムが実行される。MACアルゴリズムは、署名またはMACを出力することができる。MACは値であることが可能である。MACは、16ビットまたは32ビットであることが可能である。しかしながらMACは、より大きいまたはより小さいことが可能である。オフチップメモリに書き込まれたデータを使用して、第1のMACが計算される。第1のMACは、データと共に格納される。データがオフチップメモリから読み出されるとき、読み出されるデータから第2のMACが生成される。第1のMACが第2のMACと一致しない場合、システムはデータをリセットおよび/または廃棄することができる。
【0014】
図1を見ると、これは、MACの事前計算のための装置および方法が備わっていることが可能であるシステム100の見本のブロック図である。システム100の主要構成要素は、オンチップか、オフチップである。システムのオフチップ構成要素は、ダイナミックランダムアクセスメモリ(DRAM)115の形態のメモリである。DRAMは、システムのオンチップ部分にあるソフトウェアまたはプログラムによって使用されるデータを格納することができる。この実施形態ではDRAMを示しているが、このシステム100においてオフチップデータを格納するために、DRAM、ランダムアクセスメモリ、または他のいかなるメモリもしくはデータを格納する方法も使用することができる。
【0015】
オンチップにある構成要素には、DRAMコントローラ120、暗号化認証ユニット125、バスインタフェースロジック130、バス135、中央処理ユニット140およびキャッシュ145、ならびにダイレクトメモリアクセス(DMA)エンジン150が含まれる。
【0016】
CPU140およびDMAエンジン150は、バス135を介してバスインタフェースロジック130と通信することができる。バスインタフェースロジック130は、EAU125と通信可能に結合されることが可能である。EAU125は、さらにDRAMコントローラ120と通信可能に結合されることが可能である。DRAMコントローラは、DRAM115と通信可能に結合されることが可能である。
【0017】
CPU140およびDMA150は、DRAM115に対してデータの読み書きを行うことができる。CPU140またはDMA150がDRAM115に対して読み書きを行うとき、読み書きされるデータは、バスインタフェースロジック130、EAU125、およびDRAMコントローラ120を通って流れる。データを読み書きする際に、バスインタフェースロジック130はあらゆるサイズのトランザクションを処理する。しかしながらEAU125は、オフチップのDRAM115に対して固定サイズのデータのブロックを読み書きする。固定サイズのブロックは、暗号化ブロックまたはデータブロックと呼ばれることが可能である。一実施形態では、データブロックは256ビットを含む。暗号化ブロックは、メモリ115に読み書きされる最小単位のデータとすることができる。バスインタフェースロジック130はあらゆるサイズのトランザクションを処理するので、EAU125は、暗号化ブロックより大きいまたは小さいデータを読み書きする要求を管理しなければならない。
【0018】
一実施形態では、メッセージ認証コードの事前計算のための方法およびシステムは、EAU125にあることが可能である。EAU125は、DRAM115から読み書きされるデータの暗号化/復号化および認証を行うことができる。書き込みトランザクションは、DRAM115に向かう途中で暗号化されることが可能である。読み出しトランザクションは、情報がDRAM115から読み出されるとき認証されて、復号化されることが可能である。したがって、EAU125がメモリから読み書きするいかなるデータブロックも、暗号化されたデータを含むことができる。
【0019】
データまたはメモリを認証するとき、EAU125は、EAU125がメモリに書き込むデータブロック用の第1のMACを生成することができる。次に第1のMACは、このデータブロックと関連付けられる。このデータブロックがメモリから読み出されるとき、EAU125は読み出されるデータに基づいて第2のMACを生成することができる。第2のMACは、第1のMACと比較されることが可能である。第1のMACおよび第2のMACが一致しない場合、メモリは破損した、または損なわれた可能性がある。メモリが破損している場合、EAU125はメモリ破損プロシージャを実行することができる。これは、システムをリセットすること、またはCPUにメッセージを送信してメモリの異常をCPUに知らせることを伴うことができる。次にCPUは、システムをリセットする、または他のなんらかの予防アクションを起こすことができる。
【0020】
一般には、EAU125がメモリトランザクションのアドレスを受信した後に、メモリトランザクションと関連付けられたデータが届く。したがって、データを暗号化すること、およびMACを生成することを含む計算の大部分は、データが届く前に行われることが可能である。
【0021】
図2を見ると、これは、セキュアなメモリに応用するMAC事前計算を使用してデータを読み書きする際に使用されることが可能である方法200の1つの例である。この方法200は、暗号化認証ユニット125上にあることが可能である。この方法は、まず要求を処理する210。要求は、データを読み書きする要求であることが可能である。要求は、バスインタフェースロジック130を介して届くことが可能である。バスインタフェースロジック130がデータを読み書きする要求を送信するとき、バスインタフェースロジック130は方法200へアドレスを渡すことができる。要求が書き込み要求である場合、アドレスは、データが書き込まれる予定のアドレスであることが可能である。要求が読み出し要求である場合、アドレスは、データが読み出される予定のアドレスであることが可能である。
【0022】
次に方法200は、要求が書き込み要求であるかどうかを判断する215。要求が書き込み要求である場合、方法200は書き込みハンドラを呼び出す220。これは書き込み要求であるので、バスインタフェースロジック130は、書き込みアドレスを方法200に渡すことができる。方法200が書き込みハンドラを呼び出すと、方法200はアドレスまたは書き込みアドレスを書き込みハンドラに渡すことができる。書き込みハンドラが要求の処理を行われた後、方法200は要求の処理210を続ける。
【0023】
入来する要求が書き込み要求ではない場合、方法200は、要求が読み出し要求であるかどうかを判断する225。要求が読み出し要求ではない場合、方法200は要求の処理210に戻る。要求が読み出し要求である場合、方法200は読み出しハンドラを呼び出すことができる230。方法200が読み出しハンドラを呼び出すと、方法200はアドレスまたは読み出しアドレスを読み出しハンドラに渡すことができる。
【0024】
図3を見ると、MAC事前計算を使用してDRAM115へデータを書き込むことができる、1つの例の方法である。書き込みハンドラの方法または書き込みハンドラ300は、EAU125の一部としてオンチップにあることが可能である。EAU125がデータを受信すると、EAU125はMACを生成することができ、またデータを暗号化することもできる。このプロセスは、書き込みハンドラがアドレスを受信すると始まる310。アドレスは、EAU125がデータを書き込むことになっているDRAM115の中の位置であることが可能である。アドレスは、32ビットのアドレス、16ビットのアドレス、またはDRAM115をアドレス指定するために使用されることが可能である他のいかなるサイズのアドレスとすることもできる。説明のために、アドレスは32ビット長であると仮定する。この時点では、データは到着していない可能性がある。
【0025】
この時、アドレスは利用できるので、MAC計算は開始可能である。方法300は、データが到着するのを待ってMAC計算を始める必要がない。EAU125は、208ビットのゼロ(パッド)、32ビットのアドレス、および16ビットのノンス(ゼロ、アドレス、およびノンス)を連結することによって、256ビットのデータブロックを作成することができる。256ビットのデータブロックは、データ入力であることが可能である。MACを計算することの一部は、データ入力を使用してPRFまたはPRPまたはランダム性の値を求めることを含むことができる。PRF/PRPは、理想化されたブロック暗号であり、その暗号はランダム性から識別することができないビットパターンになることを、当業者であれば容易に理解するであろう。またMACを計算することの一部は、イプシロン差分一様(ε−DU)関数の値を求めることを含むことができる。ε−DU関数が、ランダムビットパターンをもたらすブロック暗号でありうることは、当業者には容易に理解されるであろう。しかしながら、ε−DU関数によって作り出されるビットパターンのランダム性は、PRPによって生成されるビットパターンのランダム性ほどすぐれていない。したがって、ε−DUによって生成されたビットパターンは、PRPによって生成されたビットパターンほど安全ではない可能性がある。ノンス、または一度使用された数は、滅多に繰り返されることのない数であることも、当業者は容易に理解するであろう。この実施形態では、ノンスは、書き込みが行われるたびにインクリメントされるカウンタとすることができる。
【0026】
ノンス、アドレス、およびゼロを暗号化する際に必要とされるレベルのランダム性を作り出すために、PRPまたはPRF関数Fが使用されることが可能である。方法300は、Rijndael(または、その最も普及している具体例である、次世代暗号化標準、すなわちAES)Fを実行することができる320。方法300は、データ入力(ゼロ、アドレス、およびノンス)にRijndaelの14ラウンドを実行し、256ビットのランダム性を達成することができる。256ビットのランダム性は、Rijndael書き込みブロックまたはRijndaelブロックであることが可能である。ランダム値またはランダム性は、例えば一連の1および0であることが可能である。一部の実施形態では、PRP Fは、2組の128ビットにRijndaelのAESバージョンの10ラウンドを実行することによって達成されることが可能であることに留意されたい。2組の128ビットは連結されて、256ビットのブロックを形成する。Rijndaelを実行するとき、方法300はランダムキー、k1を選択する。Rijndaelアルゴリズムは、Rijndaelアルゴリズムへの入力として鍵k1を使用することができる。ランダムキーまたは秘密鍵は、ランダムに選択される鍵である。例えば、乱数生成器が使用されて、ランダムキーを選択することが可能である。他の形態のランダム生成器が使用されて、ランダムキーを選択することも可能である。
【0027】
方法300は、書き込みデータを受信する330。方法300が書き込みデータを受信すると、方法300はこのデータを暗号化することができる。方法300は、AES、またはデータを暗号化する他のいかなる方法を使用することによってもデータを暗号化することができる。暗号化されたデータは、Rijndael書き込みブロックを使用してXOR演算されることが可能である335。その結果は、XOR演算されたRijndael書き込みブロックとなることが可能である。XOR演算されたRijndael書き込みブロックは、256ビットを含むことができる。
【0028】
方法300は、ε−DU関数族の関数Gを計算することができる。方法300は、ε−DU関数族への入力として使用されることが可能である第2のランダムキー、K2を選択することができる。ε−DU関数Gは、XOR演算されたRijndael書き込みブロックで実行されることが可能である340。関数Gは、結果として256ビットのG書き込みブロックとなる、XOR演算されたRijndael書き込みブロックでRijndaelの2または4ラウンドの値を求めることであることが可能である。G書き込みブロックは、256ビットの鍵、k3でXOR演算されることが可能であり345、結果として256ビットのMブロックとなる。Mブロックは、XORツリーを使用することによって、256ビットから32ビットのMACまたは第1のMACに折り畳まれることが可能である350。暗号化されたデータブロックは、DRAMに格納されることが可能である360。32ビットの第1のMACおよびノンスもまた、DRAMに格納され360、暗号化されたデータブロックと関連付けられることが可能である。したがって暗号化されたデータが認証される必要があるとき、認証を行うために必要とされる情報は取り出されることが可能である。鍵k1、k2、およびk3は、EAUに格納されることが可能である。
【0029】
この例では、データをメモリに書き込む際にMACを事前計算するための方法および装置が使用されたが、この方法および装置は、データを書き込むことまたは送信することを含むいかなる用途に使用されることも可能である。他の実施形態では、メモリアドレスを使用してMACを事前計算するのではなく、他の値を使用してMACを計算することができる。例えば、この方法および装置がメッセージの用途に使用される場合、アドレスの代わりにメッセージコンテキスト識別子を使用することができる。さらに、アドレス、ノンス、および他の変数のサイズは、ユーザの必要およびこの方法が使用される用途に応じて変わる可能性がある。
【0030】
図4を見ると、これは、DRAM115からデータを読み出すことができる1つの例における方法400である。DRAM115からデータを読み出すプロセスにおいて、方法400はデータを認証することができる。データを認証することは、格納されたデータに基づいて第2のMACを生成すること、および第2のMACを、データと共にもともと格納されていた第1のMACと比較することを伴うことができる。方法400は、バスインタフェースロジック130からアドレスまたは読み出しアドレスを受信することができる410。
【0031】
方法400は、データを認証するために必要とされる情報を取り出すことができる420。この情報は、鍵k1、k2、k3のような、オンチップにあることが可能である情報を含むことができる。さらにこの情報は、読み出しアドレスにある第1のMAC、ノンス、および読み出しデータのような、オフチップにあることが可能である情報を含むことができる。読み出しデータは、暗号化されたデータであることが可能である。
【0032】
方法400は、図3に関して説明したように、アドレス、ノンス、およびゼロ(ゼロパッド)にPRP Fを計算することができる430。鍵k1は、PRP Fを計算するために必要とされる。データを認証するまたは読み出すときにPRP Fを計算するために使用される鍵k1は、データを書き込むときにPRP Fを計算するために使用された同じ鍵k1であることが可能であることに留意されたい。前述のように、PRP Fは、ノンス、アドレス、および208ビットのゼロにRijndaelの14ラウンドを実行することによって達成されることが可能である430。14ラウンドのRijndaelの結果は、Rijndaelブロックであることが可能である、256ビットのランダム性となることが可能である。またFは、Rijndaelの10ラウンドの128ビットAESバージョンの2インスタンスを並行して実行することによって達成されることが可能である。データを読み出すとき、Rijndaelブロックは、Rijndael読み出しブロックと呼ばれることがある。
【0033】
Gを計算する440際に、Rijndael読み出しブロックは、読み出しデータを使用してXOR演算されることが可能である。結果は、XOR演算されたRijndaelブロック、またはXOR演算されたRijndael読み出しブロックであることが可能である。Gは、XOR演算されたRijndael読み出しブロックに2または4ラウンドのRijndaelを実行して達成されることが可能である。Gを計算した440結果は、256ビットのGブロックまたはG読み出しブロックであることが可能である。G書き込みブロックを計算するために使用された同じ鍵k2が、G読み出しブロックを計算するために使用されることが可能であることに留意されたい。
【0034】
G読み出しブロックは、鍵k3を使用してXOR演算され、256ビットのM読み出しブロックに到達することができる。M読み出しブロックは、XORツリーによって32ビットの第2のMACに縮小されることが可能である450。第2のMACは、第1のMACと比較されることが可能である470。第1のMACは、データがもともとDRAM115に書き込まれたときに生成されたことを思い出す。第1のMACおよび第2のMACが等しくない場合、データは破損した、または損なわれた可能性がある。方法400は、メモリ破損応答プロシージャを実行することによってミスマッチを処理する490。第1のMACおよび第2のMACが等しい場合、方法400は読み出しデータをバスインタフェースロジック130に戻すことができる。データは、MACの破壊がシステムリセットを招く可能性があるので、MACの検証前にCPUに渡されることも可能である。記載した方法300、400は、shallow MACまたはshMACとして知られている場合がある。
【0035】
図5を見ると、これはMACの事前計算を行うための装置を含むことができるシステム550の一実施形態を示している。システム500は、バスインタフェースロジックユニット130、DRAMコントローラ120、およびEAU125からなることが可能である。EAU125はさらに、データハンドラ530、MACコンピュータ535、およびデータ暗号器540からなることが可能である。さらにMACコンピュータ535は、MAC PRP F計算機545、およびε−DU計算機550からなることが可能である。
【0036】
前述のように、EAU125は、DRAMコントローラ120およびバスインタフェースロジック130と通信可能に結合されることが可能である。DRAMコントローラ120およびバスインタフェースロジック130は、データハンドラ530と通信可能に結合されることが可能である。データハンドラ530は、EAU125の外部にあるデータを読み書きすることができるノードまたは構成要素であることが可能である。ノードまたは構成要素は、ソフトウェア、ファームウェア、ハードウェア、または計算を行うことができる他のいかなるタイプの装置とすることもできる。
【0037】
またデータハンドラ530は、MACコンピュータ535およびデータ暗号器540と通信可能に結合されることが可能である。MACコンピュータ535は、MACを事前計算することができるノードまたは構成要素であることが可能である。データ暗号器540は、データを暗号化することができるノードまたは構成要素であることが可能である。
【0038】
さらにMACコンピュータ535は、PRP F計算機545、およびε−DU550計算機からなることが可能である。PRP F計算機545は、PRP F関数を計算することができる構成要素またはノードである。ε−DU550計算機は、ε−DU関数を計算することができる構成要素である。
【0039】
バスインタフェースロジック130は、DRAM115からデータを読み書きする要求を送信することができる。データハンドラ530は、この要求を受信することができる。データを書き込む要求は、2つの部分として届くことが可能である。まず、バスインタフェースロジック130は、データハンドラ530にアドレスを送信することができる。一般的なシステムでは、2以上のクロックサイクル後に、データハンドラ530はこのアドレスと関連する書き込みデータを受信することができる。データを読み出すと、バスインタフェースロジック130は、読み出しアドレスを送信することができる。データハンドラは、読み出したデータをバスインタフェースロジック130に送信することによって応答することができる。
【0040】
データハンドラ530が書き込み要求を受信する場合、データハンドラ530は、書き込みアドレスをMACコンピュータ535およびデータ暗号器540に転送することが可能である。一部の実施形態では、書き込みアドレスは32ビットであることが可能である。データ暗号器540は、データを暗号化するプロセスの一部として書き込みアドレスを使用することができる。MACコンピュータ535は、書き込みアドレスおよびノンスをPRP F計算機545に転送することができる。一部の実施形態では、ノンスは16ビットであることが可能である。PRP F計算機545は、Rijndael関数を実行する際に使用するために、ランダムキー、K1を生成することができる。PRP F計算機は、K1を使用して、256ビットのデータ入力に14ラウンドのRijndael(またはRijndaelの2ラウンドの128ビットAESバージョンの2つの並行するインスタンス)を実行することができる。データ入力は、208ビットのゼロ、32ビットのアドレス、および16ビットのノンスから構成されることが可能である。データ入力にRijndaelの14ラウンドを実行する出力は、256ビットのランダムデータであることが可能であり、これはRijndaelブロックまたはRijndael書き込みブロックと呼ばれることが可能である。PRP F計算機545は、Rijndael書き込みブロックをε−DU計算機550に渡すことができる。一部の実施形態では、書き込みデータはこの時点でまだ到着していない。それにもかかわらず、PRP F計算機545はRijndaelを実行し、Rijndael書き込みブロックを作成した。
【0041】
書き込みデータが到着すると、データハンドラ530は書き込みデータをデータ暗号器540に転送することができる。データ暗号器540はデータを暗号化し、暗号化したデータをε−DU計算機550に渡すことができる。ε−DU計算機550は、暗号化されたデータを、Rijndael書き込みブロックを使用してXOR演算することができる。その結果は、256ビットのXOR演算されたRijndaelブロックまたはXOR演算されたRijndael書き込みブロックとなることが可能である。ε−DU計算機550は、初期化時に、ランダムキー、K2を生成または選択することができる。ε−DU計算機550は、XOR演算されたRijndael書き込みブロックに2または4ラウンドのRijndaelを実行する際にK2を使用することができる。XOR演算されたRijndael書き込みブロックに4ラウンドのRijndaelを実行した結果は、256ビットのG書き込みブロックとなることが可能である。G書き込みブロックは、256ビットの鍵、K3でXOR演算され、256ビットのMブロックに到達することができる。
【0042】
256ビットのMブロックは、XORツリーによって32ビットのMACまたは第1のMACに折り畳まれることが可能である。暗号化されたデータは、DRAM115に書き込まれることが可能である。またノンスおよび第1のMACは、オフチップに格納されて、DRAM115に書き込まれる暗号化されたデータと関連付けられることも可能である。
【0043】
データハンドラ530が読み出し要求を受信するとき、データハンドラ530は読み出し要求と共に読み出しアドレスを受信することができる。データハンドラ530は、読み出しアドレスをMACコンピュータ535に渡すことができる。MACコンピュータ535は、オフチップのメモリから第1のMAC、ノンス、および読み出しデータを取り出すことができる。またMACコンピュータ535は、読み出しデータがDRAM115に書き込まれたときオンチップに格納された鍵、K1、K2、およびK3を取り出すこともできる。MACコンピュータ535は、鍵、第1のMAC、ノンス、および読み出しデータをPRP F計算機545に渡すことができる。PRP F計算機545は、K1を使用して、208ビットのゼロ(ゼロパッド)、32ビットのアドレス、および16ビットのノンスからなる256ビットのデータブロックに14ラウンドのRijndaelを実行することができる。あるいは、書き込みハンドラと相関的に、PRP F計算機545は、Rijndaelの2ラウンド128ビットAESバージョンの2つのインスタンスを並行して実行することができる。実行中のRijndaelの出力は、256ビットのランダムデータであることが可能であり、これはRijndaelブロックまたはRijndael読み出しブロックと呼ばれることが可能である。PRP F計算機545は、Rijndael読み出しブロックをε−DU計算機550に渡すことができる。
【0044】
ε−DU計算機550は、暗号化された読み出しデータをRijndael読み出しブロックでXOR演算することができる。結果は、256ビットのXOR演算されたRijndaelブロックまたはXOR演算されたRijndael読み出しブロックであることが可能である。ε−DU計算機550は、XOR演算されたRijndael読み出しブロックに4ラウンドのRijndaelを実行する際にK2を使用することができる。2または4ラウンドのRijndaelを実行した結果は、256ビットのGブロックまたはG読み出しブロックとなることが可能である。G読み出しブロックは、256ビットの鍵、K3を使用してXOR演算されて、256ビットのMブロックまたはM読み出しブロックに到達することが可能である。
【0045】
256ビットのM読み出しブロックは、XORツリーによって32ビットの第2のMACに折り畳まれることが可能である。第2のMACは、第1のMACと比較されることが可能である。第2のMACが第1のMACと等しくない場合、読み出されたデータは損なわれた、または破損した可能性がある。メモリが損なわれている、または破損している場合、MACコンピュータ535はメモリ破損応答プロシージャを実行することができる。
【0046】
メッセージ認証コードの事前計算のためのシステムおよび方法は、ステートレスである可能性がある。ステートレスである認証および暗号化アルゴリズムは、リプレイアタックにメモリを公開する可能性がある。例えば、敵対者は、メモリのある場所を、以前メモリの同じ場所に格納されていた値と置き換えることができる。同様に、敵対者は、書き込みトランザクション中にDRAMを全く更新することはない。これらのアタックは、結果として、暗号解読および認証後に、有効と間違えられるメモリとなる可能性がある。
【0047】
効率を良くするために、暗号化および認証鍵は、メモリ全体またはメモリの大部分に対して作成されることが可能である。前述のリプレイアタックを阻止する目的で、メモリと関連付けられた暗号化および認証鍵は、定期的にリフレッシュされることが可能である。
【0048】
メモリの鍵リフレッシュの一実施形態は、メモリを2つの領域に分割することを含むことができる。メモリは、第1の領域と第2の領域に分割されることが可能である規則正しい配列である。第1の領域および第2の領域は、境界アドレスによって分けられることが可能である。第1の領域は、第1の組の鍵で暗号化され、認証されることが可能である。第2の領域は、第2の組の鍵で暗号化され、認証されることが可能である。リフレッシュ方法は、他の領域を消費してメモリの1つの領域を拡大することを含む。したがって、第2の領域は、第2の領域の境界がメモリの限界に達するまで拡大することが可能である。メモリの限界は、最も高いアドレス指定可能なアドレスまたは最も低いアドレス指定可能なアドレスであることが可能である。
【0049】
データがメモリの第2の領域に書き込まれるとき、第2の組の鍵が使用されて、データを復号および認証することができる。境界がメモリの限界に達する、例えば境界が最も低いアドレス指定可能なアドレスに達するとき、メモリの第1の領域用の鍵は廃棄されることが可能であり、メモリの第1の領域に対して新しい第3の組の鍵が生成されることが可能である。データがメモリに書き込まれるとき、データはこの第3の組の鍵を使用して暗号化されて、認証され、メモリの第1の領域に配置される。メモリの第1の領域は、メモリの第2の領域を消費して拡大されることが可能である。これは、境界が再びメモリの限界、例えばメモリの最も高いアドレス指定可能なアドレスに達するまで続く。この方法は、第4の組の鍵を生成することによって継続する。新しいデータがメモリに書き込まれるとき、データは第4の組の鍵を使用して暗号化されて、認証され、メモリの第2の領域に配置される。メモリの領域を分けるように鍵を再生して書き込むこの方法は継続する。
【0050】
1つの例におけるシステム500は、コンピュータソフトウェアコンポーネントの1つまたは複数のような複数の構成要素を含む。いくつかのそのような構成要素は、システム500の中で結合される、または分離されることが可能である。システム500の例示的構成要素は、当業者には理解されるように、いずれかのまたはいくつかのプログラミング言語で書かれるまたは実行される一組のおよび/または一連のコンピュータ命令を使用するおよび/または含む。1つの例におけるシステム500は、垂直配向を含み、本明細書の説明および図は、説明の目的で、システム500の1つの例示的配向を示している。
【0051】
1つの例におけるシステム500は、1つまたは複数のコンピュータ可読信号搬送媒体を使用する。コンピュータ可読信号搬送媒体は、本発明の1つまたは複数の実装の1つまたは複数の部分を実行するためのソフトウェア、ファームウェア、および/またはアセンブリ言語を格納する。1つの例におけるシステム500のコンピュータ可読信号搬送媒体は、磁気、電気、光、バイオ、および原子によるデータ記憶媒体のうちの1つまたは複数を含む。例えば、コンピュータ可読信号搬送媒体は、フロッピー(登録商標)ディスク、磁気テープ、CD−ROM、DVD−ROM、ハードディスクドライブ、および電子メモリを含む。
【0052】
本明細書に記載するステップまたは操作は、単なる例示である。これらのステップまたは操作には、システム500および方法200、300、400の趣旨を逸脱することのない、多くの変形形態がある可能性がある。例えば、諸ステップは、異なる順序で行われる場合があり、あるいは諸ステップは、追加、削除、または変更される場合がある。
【0053】
システム500および方法200、300、400の例示的な実施について本明細書に詳細に示し、説明したが、様々な変更、追加、代用などが、方法200、300、400の趣旨を逸脱することなく行われることが可能であり、したがってこれらは次の特許請求の範囲で定義するシステム500および方法200、300、400の範囲内であるとみなされることは、当業者には明らかであろう。

【特許請求の範囲】
【請求項1】
擬似ランダム関数および擬似ランダム置換のうちの少なくとも1つを行うことによって、データ入力からデータのランダム置換を作成するステップと、
データのランダム置換を受信された第2のデータブロックと結合すること、および結合の結果にε差分一様関数を実行することによって第1のデータブロックを作成するステップと、
秘密鍵を使用してε差分一様関数の値を求めた結果をXOR演算するステップと、
第1のデータブロックを第1のメッセージ認証コードに縮小するステップと
を含む、方法。
【請求項2】
データ入力がゼロパッド、ノンス、およびメモリアドレスであり、第1のデータブロックがRijndaelのXOR演算されたブロックであり、受信された第2のデータブロックが暗号化されたデータブロックであり、
データのランダム置換を作成することがさらに、アドレス、ノンス、およびゼロパッドに、14ラウンドのRijndael関数および10ラウンドの次世代暗号化標準関数の2つのインスタンスのうちの少なくとも1つを実行することによってRijndaelブロックを作成することを含み、
第1のデータブロックを作成することがさらに、暗号化されたデータブロックを使用してRijndaelブロックをXOR演算することによってRijndaelのXOR演算されたブロックを作成することを含み、
XOR演算されたRijndaelブロックにRijndael関数を2ラウンドと4ラウンドのうちの少なくとも一方を実行することによってRijndaelのXOR演算されたブロックにε差分一様関数を実行することによってGブロックが作成され、
秘密鍵を使用してε差分一様関数の値を求めた結果をXOR演算することが、Mブロックをもたらし、
第1のデータブロックを第1のメッセージ認証コードに縮小することがさらに、XORツリーによってMブロックを第1のメッセージ認証コードに縮小することを含む、
請求項1に記載の方法。
【請求項3】
読み出しデータブロックを認証することがさらに、秘密鍵、第1のランダムキーおよび第2のランダムキー、第1のメッセージ認証コード、ならびにノンスを取り出すことと
秘密鍵、第1のランダムキーおよび第2のランダムキー、第1のメッセージ認証コード、ならびにノンスから第2のメッセージ認証コードを作成することと
を含む、請求項2に記載の方法。
【請求項4】
第2のメッセージ認証コードを作成することがさらに、
アドレス、ノンス、およびゼロパッドにおいてRijndael関数を14ラウンドと次世代暗号化標準関数を10ラウンドの2インスタンスのうちの少なくとも一方を実行することによってRijndael読み出しブロックを作成することと、
Rijndael読み出しブロックおよび暗号化された読み出しデータブロックをXOR演算することによってRijndaelのXOR演算された読み出しブロックを作成することと、
XOR演算されたRijndaelブロックに4ラウドおよび2ラウドのRijndael関数のうちの少なくとも1つを実行することによってG読み出しブロックを作成することと、
秘密鍵を使用してGブロックをXOR演算することによってM読み出しブロックを作成することと、
XORツリーによってM読み出しブロックを第2のメッセージ認証コードに縮小することと
を含む、請求項3に記載の方法。
【請求項5】
読み出しデータブロックを認証することがさらに、第1のメッセージ認証コードを第2のメッセージ認証コードと比較すること、および第1のメッセージ認証コードが第2のメッセージ認証コードと等しくない場合、メモリ破損プロシージャを実行することを含む、請求項4に記載の方法。
【請求項6】
MACコンピュータを含み、
MACコンピュータが、擬似ランダム置換および擬似ランダム関数のうちの少なくとも1つを実行することによって、ゼロパッド、ノンス、およびメモリアドレスからなるデータ入力からデータのランダム置換を作成し、
MACコンピュータが、データのランダム置換を受信された第2のデータブロックと結合すること、および結合の結果にε差分一様関数を実行することによって第1のデータブロックを作成し、
MACコンピュータが秘密鍵を使用してε差分一様関数の値を求めた結果をXOR演算し、
MACコンピュータが第1のデータブロックを第1のメッセージ認証コードに縮小し、
MACコンピュータがさらにPRP F計算機およびε−DU計算機、データハンドラおよびデータ暗号器を含み、
MACコンピュータがPRP F計算機、ε−DU計算機、データハンドラ、およびデータ暗号器と通信可能に結合され、
PRP F計算機がデータハンドラおよびε−DU計算機と通信可能に結合され、
ε−DU計算機がデータハンドラおよびデータ暗号器と通信可能に結合され、
データハンドラがPRP F計算機およびデータ暗号器にメモリアドレスを送信し、
PRP F計算機が、メモリアドレス、ノンス、およびゼロパッドにRijndael関数の14ラウンドを実行することによりRijndaelブロックを作成することによってデータのランダム置換を作成する、
システム。
【請求項7】
データハンドラが第2のデータブロックをデータ暗号器に送信し、
データ暗号器が第2のデータブロックを暗号化し、暗号化されたデータブロックをε−DU計算機に送信し、
ε−DU計算機が、Rijndaelブロックおよび暗号化されたデータブロックをXOR演算することによってRijndaelのXOR演算されたブロックを作成し、
ε−DU計算機が、RijndaelのXOR演算されたブロックにRijndael関数の4ラウンドと2ラウンドのうちの少なくとも一方を実行することによってGブロックを作成し、
MACコンピュータが、秘密鍵を使用してGブロックをXOR演算することによってMブロックを作成し、
MACコンピュータが、XORツリーによってMブロックを第1のメッセージ認証コードに縮小する、
請求項6に記載のシステム。
【請求項8】
読み出しデータブロックを認証することがさらに、
MACコンピュータが秘密鍵、第1のランダムキーおよび第2のランダムキー、第1のメッセージ認証コード、ならびにノンスを取り出すことと、
MACコンピュータが秘密鍵、第1のランダムキーおよび第2のランダムキー、第1のメッセージ認証コード、ならびにノンスをMACコンピュータのPRP F計算機に送信することと
を含む、請求項7に記載のシステム。
【請求項9】
第2のメッセージ認証コードを生成することがさらに、
PRP F計算機が、読み出しアドレス、ノンス、およびゼロパッドに、Rijndael関数の14ラウンドと10ラウンドの2つの並行ラウンドのうちの少なくとも一方を実行することによってRijndael読み出しブロックを作成することと、
PRP F計算機がRijndael読み出しブロックをε−DU計算機に渡すことと、
ε−DU計算機が、Rijndael読み出しブロックおよび暗号化された読み出しデータブロックをXOR演算することによってRijndaelのXOR演算された読み出しブロックを作成することと、
ε−DU計算機が、XOR演算されたRijndaelブロックにRijndael関数の4ラウンドおよび2ラウンドのうちの少なくとも一方を実行することによってG読み出しブロックを作成することと、
MACコンピュータが、秘密鍵を使用してGブロックをXOR演算することによってM読み出しブロックを作成することと、
MACコンピュータが、XORツリーによってMブロックを第2のメッセージ認証コードに縮小することと、
読み出しデータブロックを認証することがさらに、MACコンピュータが第1のメッセージ認証コードを第2のメッセージ認証コードと比較すること、および第1のメッセージ認証コードが第2のメッセージ認証コードと等しくない場合、メモリ破損プロシージャを実行することを含むことと
を含む、請求項8に記載のシステム。
【請求項10】
メモリを、境界アドレスによって分けられる、第1の領域および第2の領域を含む2つのセグメントに分割するステップと、
第1の組の鍵を第1の領域と、第2の組の鍵を第2の領域と関連付けるステップと、
第1の組の鍵を使用して第1の領域のデータを暗号化し、認証するステップと、
第2の組の鍵を使用して第2の領域のデータを暗号化し、認証するステップと、
メモリの第1の領域から第2の領域のメモリにメモリを割り当てることによってメモリの第2の領域を拡大するステップと、
境界アドレスがメモリの限界に達するとき、第3の組の鍵をメモリの第1の領域と関連付けるステップと
を含む、方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2012−501579(P2012−501579A)
【公表日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2011−524982(P2011−524982)
【出願日】平成21年8月25日(2009.8.25)
【国際出願番号】PCT/US2009/004820
【国際公開番号】WO2010/024874
【国際公開日】平成22年3月4日(2010.3.4)
【出願人】(596092698)アルカテル−ルーセント ユーエスエー インコーポレーテッド (965)
【Fターム(参考)】