(57)【要約】暗号化器２０が、二つの暗号化ステップを使用して関連するアドレスＡの制御下でデータワードＤを暗号化する。ハッシュ関数部Ｂ１が、アドレスＡをハッシュされたアドレスＢ１（Ａ）に変換する。ＸＯＲ関数部のような結合器２４が、データワードＤをハッシュされたアドレスＢ１（Ａ）に結合させる。この結果が、ブロック暗号部Ｂ２を使用して更に暗号化される。書き込み器３０が、アドレスＡの制御下でメモリ６０に暗号化されたワードＤ'を書き込む。復号化器４０が、関連するアドレスＡの制御下でメモリ６０から読み出されている暗号化されたワードＤ'を復号化する。ハッシュ関数部Ｂ１が、関連するアドレスＡをハッシュされたアドレスＢ１（Ａ）に変換する。逆ブロック暗号部Ｂ２−１が、暗号化されたワードＤ'を中間形態に復号化する。ＸＯＲのような分離器が、ハッシュされたアドレスＢ１（Ａ）に、復号化されている暗号化されたワードＢ２−１（Ｄ'）を結合させることによって平文データワードＤを生成する。
2005505069.tif 000002
【特許請求の範囲】
【請求項１】
暗号化された形態でメモリにデータワードを記憶するためのシステムであって、前記データワードは各々の関連するアドレスによって特定され、前記システムは、
前記関連するアドレスの制御下でデータワードを暗号化するための暗号化器
を含み、前記暗号化器は、
ハッシュされたアドレスに前記関連するアドレスを変換するためのハッシュ関数部と、
前記ハッシュされたアドレスに前記データワードを結合させるための結合器と、
暗号化されたワードに前記結合されたワード／ハッシュされたアドレスを暗号化するためのブロック暗号部と、
前記関連するアドレスの制御下で前記メモリに前記暗号化されたワードを書き込むための書き込み器と、
前記ワードに関連するアドレスの制御下でメモリから暗号化されたワードを読み出すための読み出し器と、
前記関連するアドレスの制御下で前記読み出された暗号化されたワードを復号化するための復号化器と
を含み、前記復号化器は、
前記暗号化器によって使用されるものと同じであり、ハッシュされたアドレスに前記関連するアドレスを変換するためのハッシュ関数部と、
前記暗号化器の前記ブロック暗号部の逆関数であり、前記暗号化されたワードを復号化するためのブロック暗号部と、
前記ハッシュされたアドレスに前記復号化されている暗号化されたワードを結合させることによってデータワードを取り出すための分離器と
を含むシステム。
【請求項２】
前記復号化器において、前記ハッシュ関数部及び前記ブロック暗号部が並列に構成される請求項１に記載のシステム。
【請求項３】
前記暗号化器の前記ブロック暗号部及び前記ハッシュ関数部が、同じ所定のブロック暗号部のラウンドを使用する請求項１に記載のシステム。
【請求項４】
前記所定のブロック暗号部が、既定数のｎラウンドを有し、前記ハッシュ関数部が、前記所定のブロック暗号部のｋラウンドを使用し、１<＝ｋ<ｎであり、前記暗号化器の前記ブロック暗号部は、前記所定のブロック暗号部のｎ−ｋラウンドを使用する請求項３に記載のシステム。
【請求項５】
ｋ>＝３及びｎ−ｋ>＝３となる請求項４に記載のシステム。
【請求項６】
ｎ＝ｋとなる請求項４に記載のシステム。
【請求項７】
前記データワードが複数のコンポーネントを含み、前記システムは、
前記データワードに関連するアドレスの制御下でメモリから暗号化されたワードを読み出すために前記読み出し器を使用するステップと、
ハッシュされたアドレスに前記関連するアドレスを変換するために前記ハッシュ関数部を使用するステップと、
前記暗号化されたワードを復号化するために前記復号化器の前記ブロック暗号部を使用するステップと、
前記ハッシュされたアドレスの制御下で前記新たなコンポーネント値を前記復号化されている暗号化されたワードに結合させるためにコンポーネント更新器を使用し、更新されている結合されたワード／ハッシュされたアドレスを形成するステップと、
更新されている暗号化されたワードに、前記更新されている結合されたワード／ハッシュされたアドレスを暗号化するための前記暗号化器の前記ブロック暗号部を使用するステップと
によって新たなコンポーネント値に前記データワードのコンポーネントを更新するように動作する請求項１に記載のシステム。
【請求項８】
請求項１に記載される、メモリに暗号化された形態でデータワードを記憶させるためのシステムにおける使用のための暗号化器であって、前記各々のデータワードは各々関連するアドレスによって特定され、前記暗号化器は、
データワードに関連するアドレスをハッシュされたアドレスに変換するためのハッシュ関数部と、
前記ハッシュされたアドレスに前記データワードを結合させるための結合器と、
暗号化されたワードに前記結合されたワード／ハッシュされたアドレスを暗号化するためのブロック暗号部と
を含む暗号化器。
【請求項９】
請求項１に記載される、メモリに暗号化された形態でデータワードが記憶されるシステムにおける使用のための復号化器であって、前記各々のデータワードは各々関連するアドレスによって特定され、前記復号化器は、
前記メモリにおけるデータワードに関連するアドレスをハッシュされたアドレスに変換するためのハッシュ関数部と、
前記関連するアドレスの制御下で前記メモリから読み出されている暗号化されたワードを復号化するためのブロック暗号部と、
前記ハッシュされたアドレスに前記復号化されている暗号化されたワードを結合させることによって平文データワードを取り出すための分離器と
を含む復号化器。
【請求項１０】
暗号化された形態でのメモリにおける記憶のためにデータワードを暗号化する方法であって、前記各々のデータワードは各々関連するアドレスによって特定され、前記方法は、
データワードに関連するアドレスをハッシュされたアドレスに変換するステップと、
前記ハッシュされたアドレスに前記データワードを結合させるステップと、
前記メモリにおける後続する記憶のために、暗号化されたワードに前記結合されたワード／ハッシュされたアドレスを暗号化するためのブロック暗号部を使用するステップと
を含む方法。
【請求項１１】
暗号化された形態でメモリに記憶されるデータワードを復号化する方法であって、前記各々のデータワードは各々関連するアドレスによって特定され、前記方法は、
前記メモリにおいて記憶される暗号化されたデータワードに関連するアドレスをハッシュされたアドレスに変換するステップと、
前記関連するアドレスの制御下で前記メモリから読み出されている前記暗号化されたワードを中間形態に復号化するためのブロック暗号部を使用するステップと、
前記ハッシュされたアドレスに前記中間形態を結合させることによって平文データワードを取り出すステップと
を含む方法。
【請求項１２】
請求項１０に記載の方法をプロセッサに実行させるように動作するコンピュータプログラム製品。
【請求項１３】
請求項１１に記載の方法をプロセッサに実行させるように動作するコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データワードが各々のアドレスによって特定されるメモリにおける暗号化された記憶のための暗号化／復号化データワードに関する。
【背景技術】
【０００２】
暗号化技術（ｃｒｙｐｔｏｇｒａｐｈｙ）は、ますます重要な技術となっている。主な領域はコンテンツ暗号化／復号化（ｃｏｎｔｅｎｔ  ｅｎｃｒｙｐｔｉｏｎ／ｄｅｃｒｙｐｔｉｏｎ）及びアクセス管理機能（ａｃｃｅｓｓ  ｍａｎａｇｅｍｅｎｔ  ｆｕｎｃｔｉｏｎ）である。提供するデバイス（ｒｅｎｄｅｒｉｎｇ  ｄｅｖｉｃｅ）におけるコンテンツの実際の使用と共に、ＣＤのような記憶媒体上の供給又はネットワークを介した送信を含む全サプライチェーン（ｓｕｐｐｌｙ  ｃｈａｉｎ）を保護することは重要である。このことは、スマートカード又は提供するデバイスの半導体素子のランダムアクセスメモリ（ｓｏｌｉｄ  ｓｔａｔｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）におけるデータの記憶も保護される必要があることも意味している。基本的に、ブロック暗号に基づく暗号化は、このような保護に対して使用され得る。暗号上強いブロック暗号（ｃｒｙｐｔｏｇｒａｐｈｉｃａｌｌｙ  ｓｔｒｏｎｇ  ｂｌｏｃｋ  ｃｉｐｈｅｒ）は、一つよりも多くのワードのコンポーネント（通常コンポーネントはバイト）を同時に暗号化する。当該ワードは通常、ブロック、すなわち名称、ブロック暗号と称されている。例えば、ＤＥＳは８バイトを一緒に暗号化し、ＡＥＳは１６バイトを一緒に暗号化する。非常に小さなブロック暗号でさえ、一つのブロックでまだ４バイトを暗号化し得る。複数のバイトを一緒に暗号化することは、それにより可能なコードブックワード（ｃｏｄｅｂｏｏｋ  ｗｏｒｄ）の数がより多くなると共に統計分布（ｓｔａｓｔｉｃａｌ  ｄｉｓｔｒｉｂｕｔｉｏｎ）が平坦化されるため必要となる。ＤＥＳは最もよく知られているブロック暗号のうちの一つであり、１６暗号ラウンドを使用する。ＥＣＢモード（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｄｅ  Ｂｏｏｋ  ｍｏｄｅ）においてＤＥＳを使用することによって、８バイトの各々の平文ワードは個別に暗号化され、暗号化された８バイトワードがもたらされる。
【０００３】
用途レベルにおいて、例えば提供するデバイスに対して、多くの単純なデバイスが同時に一つのバイトに作用する。従来のＥＣＢモードにおいてブロック暗号を使用することは、当該システムにとって不利となる。ワードのバイトの一つへの変更は、暗号化されたワードの全てのバイトへの変更を結果的にもたらす。それ故に、暗号化されたワードのバイトのうちのたった一つを変更することは直接的に不可能となる。まず平文形態におけるワードの全ての他のバイトを取り出すことが必要となる。８バイトブロック暗号の場合、このことは、バイトの一つを変更するステップが、メモリから対応する暗号化された８バイトワードを読み出すステップと、ワードを復号化するステップと、８バイトのうちの一つを変更するステップと、更新されたワードを再暗号化（ｒｅ−ｅｎｃｒｙｐｔｉｎｇ）するステップとを含んでいることを示している。ＤＥＳの場合、これは３２回消費する暗号ラウンド（ｔｈｉｒｔｙ−ｔｗｏ  ｔｉｍｅ  ｃｏｎｓｕｍｉｎｇ  ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｒｏｕｎｄ）を含んでいる。結果として、暗号化されたメモリへのアクセスは、暗号化されていないメモリへのアクセスよりもかなり低速である。このことは、価格の圧力（ｐｒｉｃｅ  ｐｒｅｓｓｕｒｅ）が、更なるハードウエアによって更なる遅延を低減するか、又は克服することを困難にする民生電子デバイスにとって特に問題となる。更に、消費電力を低く保つことも所望される。それ故に、高速メモリアクセスを必要とする用途の場合、ラウンドの数は低減されることが必要となり得る。結果として、より弱い保護がもたらされる。
【０００４】
いわゆるカウンタモード（ＣＴＲ（ｃｏｕｎｔｅｒ  ｍｏｄｅ））においてブロック暗号を使用してメモリ暗号化を実行することが知られている。これは図１に示されている。各々のワードＤは、各々のアドレスＡによって特定される。アドレスＡは、ＥＣＢモードにおけるブロック暗号Ｂを使用して、暗号化されたアドレスＡ’＝Ｂ（Ａ）に暗号化される。データワードＤは、暗号化されたワードＤ’をもたらすために、暗号化されたアドレスＡ’と結合される。当該結合は、ＸＯＲ関数、すなわちＤ’＝ＸＯＲ（Ｄ，Ｂ（Ａ）)を使用して実行される。ＥＣＢモードにおけるブロック暗号の代わりに、他の好適な一方向関数（ｏｎｅ  ｗａｙ  ｆｕｎｃｔｉｏｎ）（ハッシュ）が使用されてもよい。アドレスは、ワードの（バイトのような）全てのコンポーネントを特定するため、ハッシュされたアドレスは全てのコンポーネントに対して有効となる。一つのコンポーネントの変更は、暗号化されたアドレスＡ’＝Ｂ（Ａ）を再計算（ｒｅｃａｌｃｕｌａｔｅ）し、元のデータワード（Ｄ＝ＸＯＲ（Ｄ’，Ｂ（Ａ）)を取り出し、新たな平文ワードＤ１をもたらすワードのコンポーネントを変更し、Ｄ１を暗号化されたアドレス（Ｄ１’＝ＸＯＲ（Ｄ１，Ｂ（Ａ）)と再結合（ｒｅｃｏｍｂｉｎｅ）することによってなされ得る。当該方式において、たった一つの暗号化ステップが行われる（ＤＥＳの場合、１６ラウンドが必要とされる）。しかしながら、ＣＴＲモードは、ランダムアクセスメモリの暗号化に対して使用されると暗号化上弱いことが知られている。通常４バイトワードの場合、総当たり攻撃（ｂｒｕｔｅ  ｆｏｒｃｅ  ａｔｔａｃｋ）のために全部で２５６４対のワードとそれらの暗号化されたカウンタ部分とが収集される必要があるが、この場合個々のバイトが攻撃され得る。その結果、前記システムは、たった４＊２５６対を収集することによって破壊され得る。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、十分な安全性を維持する一方、高速アクセスを可能にするメモリ暗号化アーキテクチャを提供することにある。更なる目的は、民生電子用途における広範な使用を可能にするソフトウエア及びハードウエアに当該アーキテクチャが効率的に実現され得ることにある。
【課題を解決するための手段】
【０００６】
本発明の目的を満たすために、前記システムは請求項１に記載の暗号化器及び復号化器を含む。アドレスをスクランブルするためにハッシュ関数が使用され、スクランブルされたアドレスとデータワードとの結合体が、ブロック暗号を使用して更に暗号化される。この最後のステップが、ＣＴＲモードメモリ暗号化の弱さを克服する。二つのステップの暗号化（アドレスハッシュ及び結合体の暗号化）を使用することによって、最後の転置（ｐｅｒｍｕｔａｔｉｏｎ）の暗号化強さは低減され得るので、ＣＴＲモードの速度の利点の多くが維持され得る。
【０００７】
従属請求項２の手段によれば、前記アーキテクチャが、読み出しのための二つの暗号化ステップのパラレル装置を可能にする。これにより、メモリアクセスの速度が増大させられる。多くのシステムにおいて、バックグランドで行われている書き込みの間、処理は継続させられ得るが、データが読み出されるまで処理は停止させられる必要があり得るため、読み出し速度が増大させられ得ることは更なる利点である。
【０００８】
請求項３の手段によれば、ハッシュされたアドレスを有するデータのスクランブルとアドレスハッシュとの両方に対して同じブロック暗号ラウンドが使用される。このことはたった一つの暗号化関数しか実施される必要がないという利点を有する。
【０００９】
従属請求項４の手段によれば、所定のブロック暗号（例えばＤＥＳは１６ラウンドを使用する）の既定数のラウンドが、ハッシュされたアドレスとデータワードとの結合体の暗号化及びアドレスのハッシュを介して分割される。ＣＴＲに匹敵する暗号強度が増大される一方、全数のラウンド自体は、メモリ暗号化のＣＴＲモードにおいて使用される数と同じに保たれ得る。
【００１０】
従属請求項５の手段によれば、アドレスのハッシュと、データワード及びハッシュされたアドレスの結合の暗号化との両方の演算は、少なくとも３ラウンドを使用する。これにより適当なレベルの転置が保証される。
【００１１】
従属請求項６に記載の好ましい実施例において、両方の演算は同数のラウンドを使用する。これにより、最適なことに特に並列演算が高速になる。
【００１２】
従属請求項７の手段によれば、前記アーキテクチャが、ワードの一つ又はそれより多くのコンポーネントの高速更新を可能にする。ここで全ワードは平文形態において利用可能ではない。
【００１３】
本発明の目的は、独立請求項８及び９にそれぞれ記載の暗号化器及び復号化器と、独立請求項１０乃至１３に記載の各々の方法及びコンピュータプログラム製品とによっても満たされる。
【００１４】
本発明のこれら及び他の態様は、図面に示されている実施例から明らかであり、図面に示されている実施例を参照して説明される。
【発明を実施するための最良の形態】
【００１５】
図２は、本発明による暗号システム（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｓｙｓｔｅｍ）を示している。  前記システムは、復号化器（ｄｅｃｒｙｐｔｏｒ）４０及び暗号化器（ｅｎｃｒｙｐｔｏｒ）２０を備える暗号ユニット１０を含んでいる。ユニット１０は通常、暗号化された態様でデータを記憶するためのダイレクトアクセスメモリ（ｄｉｒｅｃｔ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）６０に接続される。プログラム（すなわち実行可能なコードのような、何れかの形態におけるコンピュータ命令（ｃｏｍｐｕｔｅｒ  ｉｎｓｔｒｕｃｔｉｏｎ））もデータで表されることは評価されるであろう。本記載において、メモリは読み出し及び書き込み型であることが仮定されている。しかしながら、前記システムは読み出しのみのためにも使用され得る。好ましくは、暗号ユニット１０は、不正変更（ｔａｍｐｅｒｉｎｇ）の機会を低減させるために暗号化されたモジュール（ｓｅｃｕｒｅ  ｍｏｄｕｌｅ）で実現される。
【００１６】
暗号化器２０は、入力部２６を介して処理ユニットから、複数のコンポーネントから構成されるデータワードＤを受信する。通常、コンポーネントはバイトであるが、ニブル（１／２バイト（ｎｉｂｂｌｅ））又は１６ビットコンポーネントのような他のサイズも使用され得る。暗号化器２０は、メモリ６０におけるワードの記憶位置を特定する入力部２２を介してアドレスＡも受信する。好ましくは、アドレスＡ及びワードＤを供給する処理ユニットが、同じ暗号化されたモジュールにも組み込まれる。暗号化器２０は、アドレスをハッシュされたアドレスＢ１（Ａ）に変換するためのハッシュ関数（ｈａｓｈｉｎｇ  ｆｕｎｃｔｉｏｎ）部Ｂ１を含んでいる。好ましくは、ハッシュ関数部Ｂ１は、ブロック暗号のラウンド（ｒｏｕｎｄ  ｏｆ  ｂｌｏｃｋ  ｃｉｐｈｅｒ）の形態で実現されるキーによるハッシュ関数となる。ＤＥＳ又はＴＥＡはよく知られていると共に、本発明によるシステムにおいて使用されるべき好適な暗号である。暗号化器２０は、ハッシュされたアドレスＢ１（Ａ）を受信ワードＤに結合するための結合器（ｃｏｍｂｉｎｅｒ）２４も含んでいる。好ましくは、結合器２４はビット形式のＸＯＲ（排他的論理和（ｅｘｃｌｕｓｉｖｅ  ＯＲ））関数として実現される。これにより、ＸＯＲ（Ｄ，Ｂ１（Ａ））の中間結果がもたらされる。結合器２４の出力は、暗号化されたワードＤ’をもたらす暗号化器２０のブロック暗号器Ｂ２を介して入力される。書き込み器（ｗｒｉｔｅｒ）３０は、アドレスＡの制御下で暗号化されたワードＤ’をメモリに書き込む。前記書き込みは、アドレスＡの直接制御下でなされてもよい。しかしながら、特にメモリ６０が前記暗号化されたモジュール外にもたらされている場合、アドレスＡを、メモリ６０にアクセスするために使用されるスクランブルされたアドレスＡ’にスクランブルするための更なるスクランブル関数（ｓｃｒａｍｂｌｉｎｇ  ｆｕｎｃｔｉｏｎ）部２８を暗号器が含んでいることは好ましい。スクランブルされたアドレスＡ’は、アドレスＡの代わりにそれから書き込み器３０に供給される。暗号化されたモジュールからの情報漏れがないことを保証するために、スクランブル関数部はハッシュ関数部Ｂ１と同じになるべきではない。通常アドレスがワードの個々のコンポーネントを特定することは評価されるであろう。ワードアドレスは、コンポーネントアドレスから（例えば、一つのワード内に４バイトがもたらされている場合、バイトレベルアドレスの二つの最下位ビットを無視することによって）通常簡単な態様でもたらされ得る。
【００１７】
復号化器４０は、暗号化器２０の逆の演算（ｏｐｅｒａｔｉｏｎ）を行う。入力部４２を介して、復号化器４０は処理ユニットからアドレスＡを受信する。復号化器は、メモリ６０にアクセスするために使用されるアドレスＡ’にアドレスＡをスクランブルするためのスクランブル関数部４８をオプションとして含んでいる。スクランブル関数部４８は、暗号化器２０のスクランブル関数部２８と同じである。読み出し器（ｒｅａｄｅｒ）５０は、アドレスＡ（又はオプションとして、スクランブルされたアドレスＡ’）の制御下でメモリ６０から暗号化されたワードＤ’を読み出す。暗号化されたワードＤ’は、Ｂ２の逆関数部である復号化器Ｂ２−１を介して入力される。フェイステルブロック暗号（Ｆｅｉｓｔｅｌ  ｂｌｏｃｋ  ｃｉｐｈｅｒ）のような多くのブロック暗号の場合、逆暗号（ｉｎｖｅｒｓｅ  ｃｉｐｈｅｒ）のラウンドは、暗号化する暗号（ｅｎｃｒｙｐｔｉｎｇ  ｃｉｐｈｅｒ）のラウンドと同じになる。ここでラウンドキー（ｒｏｕｎｄ  ｋｅｙ）は、逆の順序で供給される。アドレスＡは、前記アドレスをハッシュされたアドレスＢ１（Ａ）に変換するための暗号化器２０によって使用されるものと同じハッシュ関数部Ｂ１を介して入力される。分離器（ｄｅｃｏｍｐｏｓｅｒ）４４は、ハッシュされたアドレスＢ１（Ａ）を使用して部分的に復号化されたワードＢ２−１（Ｄ’）から平文ワード（プレーンテキストワード（ｐｌａｉｎｔｅｘｔ  ｗｏｒｄ））Ｄを取り出すために使用される。好ましい実施例において、ＸＯＲ関数部２４は、分離器４４のためのＸＯＲ関数を使用してもミラー（ｍｉｒｒｏｒ）される。前記分離はそのとき、Ｄ＝ＸＯＲ（Ｂ２−１（Ｄ’），Ｂ１（Ａ））となる。Ｄは、出力部４６を介して処理ユニットに供給される。
【００１８】
処理ユニットは通常、暗号関数部Ｂ１及びＢ２のための一つのキー又は複数のキーを暗号化器／復号化器にも供給する。
【００１９】
暗号化及び復号化が時間シーケンシャル（ｔｉｍｅ−ｓｅｑｕｅｎｔｉａｌ）に行われるシステムにおいて、暗号化器及び復号化器の対応する演算は一度しか実施される必要がないことは評価されるであろう。特に、Ｂ１及びＢ２が同じブロック暗号の暗号ラウンドを使用することは好ましい。Ｂ２が（逆順で供給されるラウンドキー（ｒｏｕｎｄ  ｋｅｙ）で）自身の逆関数となっている場合、暗号化と復号化との両方をサポートするために、たった一つのラウンドキーしか実施される必要がない。
【００２０】
好ましい実施例において、復号化器４０は、逆の演算Ｂ２−１とアドレスハッシュ（ａｄｄｒｅｓｓ  ｈａｓｈｉｎｇ）Ｂ１とを並行して行う。Ｂ２−１とＢ１とが同じラウンド関数に基づいている場合、このことは、当該関数が二度実施される必要のあることを示しているが、それにより、復号化のために必要とされる期間は低減される。
【００２１】
好ましくは、ハッシュ関数部Ｂ１は、既定数のｎラウンド（ｋ<ｎ）の場合、ｋラウンドの所定のブロック暗号を使用し、暗号化器（Ｂ１）のブロック暗号は、ｎ−ｋラウンドの所定のブロック暗号を使用する。このように、ｎラウンドは、アドレスをハッシュするＢ１演算と、中間結果ＸＯＲ（Ｄ，Ｂ１（Ａ））を暗号化するＢ２（又は読み出しの場合、Ｂ２−１演算）とに分割される。十分な強度を維持する一方、読み出しは、記載のパラレル装置を使用して高速に実行される。パラレル装置において、読み出しはｍａｘ（ｋ，ｎ−ｋ）ラウンドを実行するための期間を必要とする。一方従来システムにおいてこれはｎラウンドをとる。特にｎ＝ｋの場合、パラレル装置は演算期間を半減させ、それ故に消費電力もかなり低減させ得る（又は、同レベルの消費電力を維持する一方、より多くのラウンドを使用することによって安全性を向上させ得る）。
【００２２】
Ｂ２によって行われる暗号化及びＢ１によって行われるアドレスのハッシュはかなり強い（ｓｔｒｏｎｇ）ため、通常合計１６ラウンドを使用する、ＤＥＳのような従来のブロック暗号に対してｋ>＝３及びｎ−ｋ>＝３となることは好ましい。既存のブロック暗号で少なくとも３ラウンドを使用するよい暗号化の理由（ｇｏｏｄ  ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｒｅａｓｏｎ）はあるが、問題の特定のブロック暗号でスクランブルの適切なレベルを保証する概して多くのラウンドが使用されるべきことは評価されるであろう。
【００２３】
好ましい実施例において、アドレスハッシュＢ１及び暗号化／復号化Ｂ２は、同数のラウンド（ｎ＝ｋ）を使用する。二つの部分に渡る暗号強度（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｓｔｒｅｎｇｔｈ）の均衡をとることに加えて、上記のように、このことは読み出し速度を最適化する。
【００２４】
本発明によるアーキテクチャを使用することにより、ニブル、バイト、又は１６ビット部分のような、より大きな合成ワード（ｃｏｍｐｏｓｉｔｅ  ｗｏｒｄ）（ブロック）の個々のコンポーネントの迅速な更新が可能になる。例として、ワードＤは四つのコンポーネントｄ０乃至ｄ３から構成されると共にコンポーネントｄ０は更新される必要があると仮定する。まずワードＤのアドレスＡがロードされる（通常処理ユニットによってもたらされる）。次に読み出し器５０が、前記ワードに関連するアドレスＡの制御下でメモリから、対応する暗号化されたワードＤ’を読み出すために使用される。オプションのアドレススクランブルが使用される場合、メモリ６０にアクセスするために使用される、スクランブルされたアドレスＡ’を生成するためにアドレススクランブラー（ａｄｄｒｅｓｓ  ｓｃｒａｍｂｌｅｒ）４８が使用される。次に前記ワードのアドレスＡをハッシュされたアドレスＢ１（Ａ）に変換するためにハッシュ関数部Ｂ１が使用される。ブロック暗号Ｂ２−１は、暗号化されたワードＤ’を中間形態に復号化する。始めに記載されているように、当該呼び出し動作（ｒｅａｄ  ａｃｔｉｖｉｔｙ）に対して、Ｂ１及びＢ２−１は、好ましくは並列に実行される。この場合、成分（Ｂ１（Ａ）、Ｂ２−１（Ｄ’）、及びｄ０）は、更新された中間結果を形成するために全てもたらされている。当該更新は、ハッシュされたアドレス（Ｂ１（Ａ））の制御下で新たなコンポーネント値（ｄ０’）を復号化されている暗号化されたワード（Ｂ２−１（Ｄ’））に結合させるコンポーネント更新器（ｃｏｍｐｏｎｅｎｔ  ｕｐｄａｔｅｒ）によって実行される。これにより、更新された結合ワード／ハッシュされたアドレスが形成される。コンポーネント更新器は図に示されていない。好ましい実施例において、合成（ｃｏｍｐｏｓｉｔｉｏｎ）２４は、ＸＯＲ演算によって実行される。当該システムの場合、コンポーネントｄ０の更新は、ハッシュされたアドレスＢ１（Ａ）から最下位コンポーネント（ｌｅａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｃｏｍｐｏｎｅｎｔ）を抽出すると共に、当該コンポーネントをコンポーネントワイドＸＯＲ関数（ｃｏｍｐｏｎｅｎｔ  ｗｉｄｅ  ＸＯＲ  ｆｕｎｃｔｉｏｎ）を使用して新たな値ｄ０’と結合させることによって実行され得る。結果としてもたらされる結合コンポーネント値（ｃｏｍｂｉｎｅｄ  ｃｏｍｐｏｎｅｎｔ  ｖａｌｕｅ）はそれからＢ２−１（Ｄ’）の最下位コンポーネント位置にロードされる。当該コンポーネント更新が完了された後、ブロック暗号Ｂ２は、更新された結合されたワード（ｃｏｍｂｉｎｅｄ  ｗｏｒｄ）／ハッシュされたアドレス（ｈａｓｈｅｄ  ａｄｄｒｅｓｓ）を更新された暗号化されたワード（ｅｎｃｒｙｐｔｅｄ  ｗｏｒｄ）に暗号化するために使用される。当該ワードは、それから書き込み器３０を使用してメモリ６０に書き込まれる。オプションのアドレススクランブルが使用された場合、最初ワードを読み出すために使用された同じスクランブルアドレスが、この場合ここでも更新されたワードを書き込むために使用され得る。
【００２５】
メモリ暗号化が好ましくは専用の暗号化／復号化デバイスを使用して実現されることは評価されるであろう。記載の暗号演算は、専用のハードウエアにおいて実現されてもよく、暗号化プロセッサによって実行されてもよい。前記プロセッサは、従来のプロセッサコアに基づいていてもよいが、暗号演算のために最適化される命令（ｉｎｓｔｒｕｃｔｉｏｎ）を備える専用の暗号処理コアに基づいていてもよい。前記プロセッサは、本発明によるアルゴリズムのステップを実行するための好適なプログラム（ファームウエア（ｆｉｒｍｗａｒｅ））の制御下で通常動作される。当該コンピュータプログラム製品が、本発明によるメモリ暗号システム（ｍｅｍｏｒｙ  ｅｎｃｒｙｐｔｉｏｎ  ｓｙｓｔｅｍ）に暗号化された態様で組み込まれることは好ましい。所望ならば、当該製品はハードディスク又はＲＯＭのようなバックグランド記憶部（ｂａｃｋｇｒｏｕｎｄ  ｓｔｏｒａｇｅ）からロードされてもよい。当該記憶部においてプログラムは好ましくは暗号により（例えばＤＥＳを使用して）悪意のあるユーザから保護される。コンピュータプログラム製品は、公共のインタネットのようなネットワークを介して、又はＣＤ−ＲＯＭのような記憶媒体（ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）に分配された後、バックグランド記憶部に記憶され得る。暗号キー（ｅｎｃｒｙｐｔｉｏｎ  ｋｅｙ）のような敏感な情報（ｓｅｎｓｉｔｉｖｅ  ｉｎｆｏｒｍａｔｉｏｎ）は好ましくは暗号化された態様で分配されると共に記憶される。そうするための技術は一般に知られており、更には記載されない。暗号システムは、部分的又は全体的にスマートカード（ｓｍａｒｔ−ｃａｒｄ）上に実現されてもよい。
【図面の簡単な説明】
【００２６】
【図１】従来技術のＣＴＲメモリ暗号化アーキテクチャを示している。
【図２】本発明によるメモリ暗号化アーキテクチャを示している。
【図１】
2005505069.tif 000003
【図２】
2005505069.tif 000004
【国際公開パンフレット】
2005505069.tif 000005
2005505069.tif 000006
2005505069.tif 000007
2005505069.tif 000008
2005505069.tif 000009
2005505069.tif 000010
2005505069.tif 000011
2005505069.tif 000012
2005505069.tif 000013
2005505069.tif 000014
2005505069.tif 000015
2005505069.tif 000016
2005505069.tif 000017
【国際公開パンフレット（コレクトバージョン）】
2005505069.tif 000018
【国際調査報告】
2005505069.tif 000019
2005505069.tif 000020
2005505069.tif 000021