(57)【特許請求の範囲】
【請求項１】
入力メッセージに対してブロック暗号を演算する暗号処理デバイスであって、ブロック暗号化が、複数のブロック暗号化ラウンドを含み、前記暗号処理デバイスは、
前記入力メッセージを受信する入力インターフェースと、
プロセッサ回路と、
を備え、前記プロセッサ回路は、
複数の中間ブロック暗号化結果を演算することであって、
前記入力メッセージに連続して前記複数のブロック暗号化ラウンドを適用した後に、１つ又は複数の追加的ブロック暗号化ラウンドを続けることにより、前記複数の中間ブロック暗号化結果のうちの第１の中間ブロック暗号化結果を演算すること、及び
前記複数のブロック暗号化ラウンドのうちの終期ブロック暗号化ラウンドのうちの少なくとも１つを再演算した後に、前記１つ又は複数の追加的ブロック暗号化ラウンドを続けることにより、前記複数の中間ブロック暗号化結果のうちのさらなる中間ブロック暗号化結果を演算すること、
により、複数の中間ブロック暗号化結果を演算することと、
前記複数の中間ブロック暗号化結果に複数の平均化関数を適用することであって、前記複数の平均化関数の、関数の和が恒等関数に等しくなるように、前記複数の平均化関数が選択されている、複数の平均化関数を適用することと、
前記複数の平均化関数の結果を加算することと、
前記１つ又は複数の追加的ブロック暗号化ラウンドの逆関数を適用することであって、ブロック暗号化結果が、前記逆関数の結果から取得される、逆関数を適用することと、を行う、
暗号処理デバイス。
【請求項２】
前記追加的ブロック暗号化ラウンドが、ラウンド鍵を変化させることにより、前記複数のブロック暗号化ラウンドのうちの１つのブロック暗号化ラウンドから取得される、
請求項１に記載の暗号処理デバイス。
【請求項３】
前記複数の平均化関数のうちの少なくとも１つが、可逆である、
請求項１又は２に記載の暗号処理デバイス。
【請求項４】
前記中間ブロック暗号化結果が、複数のデータ要素を含み、前記平均化関数が、前記データ要素に対してコンポーネントワイズに作用する、
請求項１から３のいずれか一項に記載の暗号処理デバイス。
【請求項５】
前記平均化関数が、線形である、
請求項１から４のいずれか一項に記載の暗号処理デバイス。
【請求項６】
前記複数の平均化関数のうちの１つを除くすべてが、前記平均化関数のより大きい集合から無作為に選択されており、最終的な前記平均化関数が、前記恒等関数と選択された前記平均化関数との関数差として演算されている、
請求項１から５のいずれか一項に記載の暗号処理デバイス。
【請求項７】
前記複数のブロック暗号化ラウンドを適用することが、１つ又は複数のダミーラウンドを適用することを含む、
請求項１から６のいずれか一項に記載の暗号処理デバイス。
【請求項８】
前記中間ブロック暗号化結果のうちの少なくとも１つが、符号化された変数に対して演算され、前記変数が、連携して符号化されない、
請求項１から７のいずれか一項に記載の暗号処理デバイス。
【請求項９】
前記複数の中間ブロック暗号化結果が、符号化され、前記符号化のもとでは等しい、
請求項１から８のいずれか一項に記載の暗号処理デバイス。
【請求項１０】
前記プロセッサ回路が、
前記さらなる中間ブロック暗号化結果を演算することであって、
前記複数のブロック暗号化ラウンドのうちの前記終期ブロック暗号化ラウンドのうちの少なくとも１つを再演算した後に、前記１つ又は複数の追加的ブロック暗号化ラウンドを続けた後に、１つ又は複数のさらなる追加的ブロック暗号化ラウンドを続けることにより、さらなる複数の中間ブロック暗号化結果を演算すること、により前記さらなる中間ブロック暗号化結果を演算することと、
前記さらなる複数の中間ブロック暗号化結果にさらなる複数の平均化関数を適用することであって、前記さらなる複数の平均化関数の、関数の和が前記恒等関数に等しくなるように、前記さらなる複数の平均化関数が選択されている、さらなる複数の平均化関数を適用することと、
前記さらなる複数の平均化関数の結果を加算することと、
前記１つ又は複数のさらなる追加的ブロック暗号化ラウンドの逆関数を適用することと、
を行う、
請求項１から９のいずれか一項に記載の暗号処理デバイス。
【請求項１１】
入力メッセージに対してブロック暗号を演算する暗号処理デバイスの作動方法であって、ブロック暗号化が、複数のブロック暗号化ラウンドを含み、
前記暗号処理デバイスの入力インターフェースが、前記入力メッセージを受信するステップと、
前記暗号処理デバイスのプロセッサ回路が、複数の中間ブロック暗号化結果を演算するステップであって、
前記入力メッセージに連続して前記複数のブロック暗号化ラウンドを適用した後に、１つ又は複数の追加的ブロック暗号化ラウンドを続けることにより前記複数の中間ブロック暗号化結果のうちの第１の中間ブロック暗号化結果を演算するステップ、及び
前記複数のブロック暗号化ラウンドのうちの終期ブロック暗号化ラウンドのうちの少なくとも１つを再演算した後に、前記１つ又は複数の追加的ブロック暗号化ラウンドを続けることにより、前記複数の中間ブロック暗号化結果のうちのさらなる中間ブロック暗号化結果を演算するステップ、
により、複数の中間ブロック暗号化結果を演算するステップと、
前記プロセッサ回路が、前記複数の中間ブロック暗号化結果に複数の平均化関数を適用するステップであって、前記複数の平均化関数の、関数の和が恒等関数に等しくなるように、前記複数の平均化関数が選択されている、複数の平均化関数を適用するステップと、
前記プロセッサ回路が、前記複数の平均化関数の結果を加算するステップと、
前記プロセッサ回路が、前記１つ又は複数の追加的ブロック暗号化ラウンドの逆関数を適用するステップであって、ブロック暗号化結果が、前記逆関数の結果から取得される、逆関数を適用するステップと、
を有する、
暗号処理デバイスの作動方法。
【請求項１２】
プロセッサシステムに請求項１１に記載の暗号処理デバイスの作動方法を実施させる命令を表す一時的な、又は非一時的なデータを含む、
コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック暗号を演算するように構成された暗号処理デバイス、ブロック暗号を演算するように構成された暗号処理方法、及び、コンピュータ可読媒体に関する。
【背景技術】
【０００２】
Ｓ．Ｃｈｏｗらによる論文「Ａ  Ｗｈｉｔｅ−Ｂｏｘ  ＤＥＳ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｆｏｒ  ＤＲＭ  Ａｐｐｌｉｃａｔｉｏｎｓ」において、データ暗号化規格（ＤＥＳ）のホワイトボックス実装が提示されている（以下、「Ｃｈｏｗ」と呼ばれ、本明細書に参照により組み込まれる）。ホワイトボックス実装は、ホワイトボックスコンテキストにおける攻撃に耐えるように設計された暗号処理実装である。ホワイトボックスコンテキストにおいて、攻撃者は、ソフトウェアの実装及び実行に対して完全な可視性をもつ。それにもかかわらず、それでも、ホワイトボックス実装はプログラムからの秘密鍵の抽出を防ぐことを目的としている。
【０００３】
Ｃｈｏｗは、完全にテーブル参照動作からなるＤＥＳの実装を形成している。いくつかの中間の方法を通して、通常の暗号化は、この形態の実装に変換されるので、ＤＥＳを演算するためにテーブルネットワークが使用され得る。テーブルネットワークにおけるテーブルを符号化することにより、分析及び攻撃に対するシステムの抵抗力が高まる。
【０００４】
テーブルネットワークを使用するホワイトボックス実装は、分析することが困難であるが、ブロック暗号化のテーブルベースの実装は、依然としていくつかの攻撃を受けやすいままである。本発明者らは、ホワイトボックス実装における変数を観察することから鍵が直接的に導き出されたわけではない場合であっても、以前から物理的攻撃の分野から知られているのみであった攻撃を実行するために変数へのアクセスが使用されることに気付いた。
【０００５】
例えば、Ｂｉｈａｍらによる論文「Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｆａｕｌｔ  Ａｎａｌｙｓｉｓ  ｏｆ  Ｓｅｃｒｅｔ  Ｋｅｙ  Ｃｒｙｐｔｏｓｙｓｔｅｍｓ」によると、電源電圧を変えることによりスマートカードに過渡故障が誘発されて、ＤＥＳ演算が不正確な結果を生成することをもたらす。過渡故障により結果的にもたらされるエラーを分析することにより、秘密鍵に関する情報が取得される。
【０００６】
本発明者は、このような物理的な故障攻撃が、ホワイトボックス実装を攻撃するために適応されるという洞察を得た。攻撃者にとって可視性の変数の分析から秘密情報を取得することが不可能であるとしても、攻撃者は、物理的攻撃をエミュレートしようと試みるために、符号化された変数を変更することにより、秘密情報を導出することが可能である。変数の意図的な変更は、過渡故障として作用する。実際、例えばメモリスクレイピング、衝突攻撃といった、ホワイトボックスモデルに対して特異的な他の攻撃に耐えるホワイトボックス実装が、依然として故障攻撃を受けやすいことが分かる。
【０００７】
特異的な故障攻撃に対して従来技術において導入された対策は、例えば、参照により本明細書に組み込まれる米国特許ＵＳ８３８６７９１Ｂ２、「Ｓｅｃｕｒｅ  ｄａｔａ  ｐｒｏｃｅｓｓｉｎｇ  ｍｅｔｈｏｄ  ｂａｓｅｄ  ｐａｒｔｉｃｕｌａｒｌｙ  ｏｎ  ａ  ｃｒｙｐｔｏｇｒａｐｈｉｃ  ａｌｇｏｒｉｔｈｍ」において、ホワイトボックスモデルにおいて効果がないことが証明されている。ブロック暗号化ＤＥＳは、２回、入力データに適用される。２回の演算の結果が次に比較される。結果が等しくない場合、故障が検出される。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ホワイトボックスモデルにおいて、この対策は、簡単に回避される。例えば、ある者は、第２の実行、又は比較を無効化し、又は、ある者は、ＤＥＳの両方のコピーに同じ故障を導入する。ホワイトボックスモデルにおいて攻撃されたとき、より良く保護され得る新しいＤＦＡ対策が必要とされる。
【課題を解決するための手段】
【０００９】
ブロック暗号を演算するデバイスが提案される。ブロック暗号化結果が複数回演算されて、結果が組み合わされる。組合せステップの前及び後に追加的ブロック暗号化ラウンドを挿入することにより、故障がブロック暗号化結果内に広がることが確実なものとされる。この構成は、プログラム内の任意の場所に故障を導入した後に、観測された最終的な出力から導出され得る情報を減らす。ブロック暗号化の鍵依存ラウンドにおいて攻撃者により導入された故障は、ブロック暗号化結果内に直接的に現れにくい。したがって、攻撃者は、そこから情報を導出する機会がより少なくなり、したがってＤＦＡ攻撃を困難にする。
【００１０】
故障攻撃が防がれ得る代替的な手法は、連携して符号化された変数を使用して再演算を初期演算と一緒に連携して演算することであり、この場合において、例えば、初期演算において使用される変数が再演算において使用される変数とともに連携して符号化される。これは、テーブルドリブン実装における大きいテーブル、又は、多項式実装における多くの多項式係数を結果的にもたらす。しかし、このような連携した符号化は、実施形態において必要ない。結果として、より小さい実装が、例えば、より小さいテーブルを使用して可能となる。
【００１１】
本発明による実施形態の別の利点は、本発明では、故障後の任意のブロック暗号化ラウンドがブロック暗号化結果にわたって故障の広がりを追加するので、より効果的な広がりがある。それは、広がりに寄与する追加的ブロック暗号化ラウンドだけでなくブロック暗号化の任意の従来のラウンドを含む、故障後の任意のラウンドでもある。結果として、必要とされる追加的なラウンドがより少なくなる。
【００１２】
ブロック暗号化デバイスは、電子デバイスである。例えば、それは、モバイル電子デバイス、例えば、携帯電話であってよい。本デバイスは、セットトップボックス、スマートカード、コンピュータなどであってよい。本明細書において説明されるブロック暗号を演算するデバイス及び方法は、広範囲の実用的な用途に適用される。このような実用的な用途は、デジタル権利管理、金融用途、コンピュータセキュリティーなどを含む。
【００１３】
本発明による方法は、コンピュータにより実施される方法としてコンピュータにおいて、若しくは、専用ハードウェアにおいて、又は、両方の組合せとして実施されてよい。本発明による方法のための実行可能コードは、コンピュータプログラム製品に格納されてよい。コンピュータプログラム製品の例として、メモリデバイス、光記憶デバイス、集積回路、サーバー、オンラインソフトウェアなどが挙げられる。好ましくは、コンピュータプログラム製品は、プログラム製品がコンピュータにおいて実行されたときに本発明による方法を実施するための、コンピュータ可読媒体に記憶された非一時的プログラムコードを含む。
【００１４】
好ましい実施形態において、コンピュータプログラムは、コンピュータプログラムがコンピュータにおいて実行されたときに本発明による方法のすべてのステップを実施するように適応されたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムは、コンピュータ可読媒体において具現化される。
【００１５】
本発明の別の一態様は、コンピュータプログラムをダウンロードに利用可能にする方法を提供する。コンピュータプログラムが、例えば、ＡｐｐｌｅのＡｐｐ  Ｓｔｏｒｅ、ＧｏｏｇｌｅのＰｌａｙ  Ｓｔｏｒｅ、又は、ＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓ  Ｓｔｏｒｅにアップロードされたとき、及び、コンピュータプログラムが、このようなストアからのダウンロードのために利用可能であるとき、この態様が使用される。
【００１６】
本発明のさらなる詳細、態様、及び実施形態が、図面を参照しながら、単なる例示として説明される。図中の要素は、簡潔かつ明確であるように描かれており、一定の縮尺で描かれているとは限らない。図中、既に説明されている要素に対応した要素は、同じ参照符号をもつ。
【図面の簡単な説明】
【００１７】
【図１ａ−１ｃ】暗号処理デバイスの一実施形態の例を概略的に示す図である。
【図２】暗号処理デバイスの一実施形態の例を概略的に示す図である。
【図３】暗号処理方法の一実施形態の例を概略的に示す図である。
【図４】従来のブロック暗号化計算の一例を概略的に示す図である。
【図５ａ−５ｂ】ブロック暗号化計算の一実施形態の例を概略的に示す図である。
【図６ａ】一実施形態によるコンピュータプログラムを含む書き込み可能部分を含むコンピュータ可読媒体を概略的に示す図である。
【図６ｂ】一実施形態によるプロセッサシステムの表現を概略的に示す図である。
【発明を実施するための形態】
【００１８】
本発明は、多くの異なる形態をとる実施形態を許容するとともに、本開示が本発明の原理の例とみなされるものであり、図示され説明される特定の実施形態に本発明を限定することを意図していないという理解のもとに、１つ又は複数の特定の実施形態が図面に示され、本明細書において詳細に説明される。
【００１９】
以下、理解のために、動作中における実施形態の要素が説明される。しかし、それぞれの要素により実施されるように説明される機能を実施するように、それぞれの要素が構成されていることが明らかとなる。
【００２０】
さらに、本発明は実施形態に限定されず、本発明は、本明細書において説明されている、又は、相互に異なる従属請求項に記載されている新しい特徴又は特徴の組合せの各々に内在する。
【００２１】
図４は、ラウンド関数Ｒ０、Ｒ１、…、Ｒ９を連続して適用することにより入力ｘを出力ｙに変換する従来の計算を示す。中間状態はｘ０、…、ｘ８と表記される。この特定の例ではＡＥＳ−１２８の場合と同様に１０個のラウンドが存在するが、ＡＥＳ−１９２（１２個のラウンド）、ＡＥＳ−２５６（１４個のラウンド）、又はＤＥＳ（１６個のラウンド）などの異なる数のラウンドを使用する計算のために、同様のグラフが描かれ得る。すべてのこれらの計算において、ラウンド関数は、ラウンド鍵に依存した公開関数である。
【００２２】
この計算の実装、例えば、コンピュータプログラムに直面した攻撃者は、プログラムが動作している間にコンピュータメモリからラウンド鍵を読み出すことが可能である。しかし、プログラマーは、プログラム内のすべての変数、特に、ラウンド鍵を符号化することにより、このメモリスクレイピング攻撃から防御し得る。攻撃者は、符号化をリバースエンジニアリングし、したがって、ラウンド鍵を入手しようと試み得るが、典型的には、リバースエンジニアリングを必要としない、鍵を抽出するより簡単な方法が存在する。ＤＦＡ攻撃は、これらの方法のうちの１つである。
【００２３】
ＤＦＡ攻撃において、攻撃者は、プログラム内のどこかに故障を挿入し、すなわち、変数を変化させ、出力におけるこの変化の効果を観察する。出力がどのように変化するかが、最後のラウンドのラウンド鍵の一部を明らかにする。
【００２４】
これをより具体的に示すために、図４に示されるＡＥＳ−１２８の例に戻る。１０個のラウンドと１１個のラウンド鍵ｋ０、ｋ１、…、ｋ１０とが存在する。入力ｘからの出力ｙの計算は、次のように進行する。
ｘ０＝Ｒ０（ｘ）  ｘ１＝Ｒ１（ｘ０）  ｘ２＝Ｒ２（ｘ１）  ｘ３＝Ｒ３（ｘ２）
ｘ４＝Ｒ４（ｘ３）  ｘ５＝Ｒ５（ｘ４）  ｘ６＝Ｒ６（ｘ５）  ｘ７＝Ｒ７（ｘ６）
ｘ８＝Ｒ８（ｘ７）  ｙ＝Ｒ９（ｘ８）
ここで、ラウンド０から８に対して、ラウンド関数が、
【数１】
0006782864.tif 000002
により与えられ、最後のラウンド関数Ｒ９が、
【数２】
0006782864.tif 000003
により与えられる。
【００２５】
攻撃者が最後のラウンドから１つのバイトを符号化するプログラム変数、例えば、ｘ８、ｋ９、又はｋ１０のバイトを変化させた場合、２つの出力が１つのバイトにおいて異なり、鍵に関する情報が明らかにされない。攻撃者が、ラウンド０から７までのうちの１つからの１つのバイトを符号化する変数を変化させた場合、次に出力全体が変化し、ラウンド鍵のうちの任意のものに関する情報を導出することは現実的ではない。しかし、攻撃者が、例えば、ｘ７又はｋ８のバイトといった、最後から２番目のラウンドの１つのバイトを符号化する変数を変化させた場合、（故障注入のない）出力ｙと（故障注入のある）ｙ＊とが（ＭｉｘＣｏｌｕｍｎｓ工程に起因して）１６バイトのうちの４つにおいて異なり、これらの出力に対して、
【数３】
0006782864.tif 000004
と、
【数４】
0006782864.tif 000005
とが、ちょうど１バイト異なることを維持しなければならない。これは、ｙとｙ＊とが異なる位置においてｋ１０のうちの４バイトの取り得る値を制約する。同じプログラム変数に異なる変化を適用することは、同じ４バイトに対して異なる制約を与え、典型的には、いくつかのこのような故障注入のみが、ｋ１０のうちの４バイトを一意に決定するために必要とされる。ｋ１０の他のバイトは、ラウンド８における異なる変数に対するＤＦＡ攻撃により観測される。
【００２６】
図１ａは、暗号処理デバイス１００の一実施形態の例を概略的に示す。暗号処理デバイス１００は、ブロック暗号を演算するように構成されている。デバイス１００は、入力メッセージを受信するように構成された入力インターフェース１０５を備え、入力メッセージに対してブロック暗号が演算される。デバイスにおいて入力メッセージを受信するのに適切な多くの入力インターフェースが存在し、その例が本明細書に示される。デバイス１００は、プロセッサ回路をさらに備える。プロセッサ回路は、受信された入力メッセージを処理して、ブロック暗号化結果を表す出力メッセージを取得するように構成されている。
【００２７】
ブロック暗号化の実行は、プロセッサ回路において実装され、その例が本明細書に示される。図１ａ、図１ｂ、図１ｃ、及び図２は、プロセッサ回路の機能ユニットである機能ユニットを示す。例えば、図１ａは、プロセッサ回路の可能な機能的体系の設計図として使用される。プロセッサ回路は、図１ａにおけるユニットとは別に図示されていない。例えば、図１ａに示される機能ユニットは、デバイス１００に、例えば、デバイス１００の電子メモリに記憶された、及び、デバイス１００のマイクロプロセッサにより実行可能なコンピュータ命令において全体的に、又は部分的に実装される。ハイブリッド型の実施形態において、機能ユニットは、部分的にハードウェア、例えば、コプロセッサとして、例えば、暗号コプロセッサにおいて、及び部分的にデバイス１００に記憶され、実行されるソフトウェアにおいて実装される。
【００２８】
ブロック暗号化は、入力データに連続して複数の可逆ラウンドを適用することにより動作する。例えば、内部状態は維持される。次の内部状態は、現在の内部状態に次のラウンドを適用することにより、現在の内部状態から取得される。初期内部状態は、入力メッセージから導出される。ブロック暗号化結果は、最終的な内部状態から取得される。例えば、ブロック暗号化ラウンドは、内部状態における撹乱及び拡散を増加させる。撹乱及び拡散は、クロード・シャノンにより最初に特定されたブロック暗号化ラウンドの２つの性質である。ブロック暗号化によりもたらされる撹乱及び拡散が限られている場合でも、複数のボック暗号化を使用すると、撹乱及び拡散の効果が複合的となる。例えば、ブロック暗号化ラウンドは、内部状態に適用される複数の関数を含み、そのうちの少なくとも１つは、撹乱を増加させるように構成され（例えば、ｓボックス、又はｓボックスのアレイ）、そのうちの少なくとも１つは、拡散を増加させるように構成される（例えば、ｍ内部状態の順序交換変換又は線形変換）。
【００２９】
大部分の例に対して、ブロック暗号化ＡＥＳが使用される。高度暗号化標準（ＡＥＳ）は、Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ、Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｓ  Ｐｕｂｌｉｃａｔｉｏｎ  １９７、２００１において説明されている。しかし、実施形態は、複数のラウンドを使用する任意のブロック暗号化、例えば、ＳＬＴ型ブロック暗号化（換字転置ネットワーク（ＳＰＮ）としても知られる、置換／線形変換）、例えば、ＡＥＳ（ラインダール）、３−Ｗａｙ、Ｋｕｚｎｙｅｃｈｉｋ、ＰＲＥＳＥＮＴ、ＳＡＦＥＲ、ＳＨＡＲＫ、Ｓｑｕａｒｅなどだけでなく、Ｆｅｉｓｔｅｌ型ブロック暗号化、例えば、ＤＥＳ、３ＤＥＳなどを使用し得る。
【００３０】
入力インターフェース１０５により受信された入力メッセージ１１０は、平文形式であるか、又は、符号化されており、例えば、秘密の符号化に従って符号化されているものである。例えば、ＡＥＳの場合、入力メッセージは、符号化されていない１６バイトのメッセージである。デバイス１００に実装されたブロック暗号化は、入力メッセージに適用される複数のブロック暗号化ラウンドを含む。デバイス１００は、初期ブロック暗号化ラウンドユニット１２０及び終期ブロック暗号化ラウンドユニット１３１を備える。初期ブロック暗号化ラウンドユニット１２０と終期ブロック暗号化ラウンドユニット１３１とが一緒になって、ブロック暗号化のすべてのラウンドを備える。例えば、初期ブロック暗号化ラウンドユニット１２０は、ブロック暗号化ラウンドの初期部分を実施するように構成され、終期ブロック暗号化ラウンドユニット１３１は、ブロック暗号化ラウンドの終期部分を含む。２つの部分は、同数のラウンドを含むとは限らない。ブロック暗号化の終期ラウンドはＤＦＡ攻撃をより受けやすいことが知られている。ＤＦＡ攻撃に対して保護されるラウンドは終期ブロック暗号化ラウンドユニット１３１に含まれるのに対し、ラウンドであってそのラウンドに対する知られたＤＦＡ攻撃が存在しないラウンドは、初期ブロック暗号化ラウンドユニット１２０に含まれ得る。例えば、ブロック暗号化が１０個のラウンドを含む場合、初期の７個のラウンドが、初期ブロック暗号化ラウンドユニット１２０において実施されるのに対し、終期の３個のラウンドは、終期ブロック暗号化ラウンドユニット１３１において行われる。
【００３１】
本発明の一実施形態において、ブロック暗号化ラウンドは、例えば、従来のホワイトボックス技術を使用して、符号化されたデータに対して動作する。例えば、ブロック暗号化ラウンドは、符号化された内部状態に対して動作する。例えば、内部データ、例えば、内部状態は、複数のデータ要素、例えばバイト又はニブルを含み、その各々が符号化される。例えば、符号化は、秘密の符号化であり、例えば、デバイス１００に対して非公開である。例えば、符号化は、コンパイル時に選択される。原理的に、任意のラウンドにおける任意のデータ要素が、異なる符号化を使用して符号化される。しかし、何らかの再使用が可能である。例えば、いくつかのラウンドが、他のラウンドと同じ符号化を使用する。これは、結果的に、実装のサイズの縮小をもたらす。符号化は、セキュリティーを高めるために様々な追加的な手段を使用する。例えば、符号化されたデータ要素は、符号化されていない要素より大きい。例えば、符号化は、複数の共用部分を使用し、共用部分の和が符号化されたデータ要素である。個々の共用部分は、個々に符号化される。例えば、データ要素は、冗長なデータ、例えば、ｓａｌｔ値と連携して符号化されるので、複数の異なる符号化された値が、同じ平文データ値を表す。
【００３２】
ホワイトボックス実装は、参照テーブル、行列の乗算などを使用して符号化されたデータに対して動作する。ホワイトボックス実装は、また、例えば、有限体にわたる複数の相互に関係した多項式を使用して実装される。
【００３３】
例えば、符号化ラウンドは、入力メッセージを符号化するために、最初のブロック暗号化ラウンド前に実施される。例えば、復号ラウンドは、最後のブロック暗号化ラウンド後に実施される。このように、デバイス１００は、入力及び出力が符号化されない場合でも符号化されたデータに対して動作し得る。例えば、一実施形態において、ブロック暗号化は、例えば、デジタル権利管理アプリケーション（ＤＲＭ）の一部として暗号解読工程に対して構成される。デバイス１００を使用して、ＤＲＭアプリケーションがコンテンツを暗号解読し得る。それにもかかわらず、ユーザーは、鍵であってコンテンツがその鍵を使用して暗号化された鍵を抽出することができない。例えば、一実施形態において、ブロック暗号化は、例えば、ブロック暗号化が、例えばＭＡＣ、例えばＣＢＣ−ＭＡＣを使用してメッセージに署名するために使用される金融アプリケーションの一部として、暗号化工程のために構成される。ユーザーがメッセージに署名することが可能な場合であっても、ユーザーは署名鍵を抽出することができない。
【００３４】
興味深いことに、ブロック暗号化のホワイトボックス実装は、ブロック暗号化から非対称暗号処理システムを生成するために使用される。例えば、ブロック暗号化・暗号化工程を使用して誰でもデータを暗号化し得るが、それでもブロック暗号化実装に使用される秘密鍵を知る者のみが暗号解読し得るように、ブロック暗号化・暗号化工程のホワイトボックス実装が公開される。
【００３５】
デバイス１００は、追加的ブロック暗号化ラウンドユニット１４１をさらに備える。追加的ブロック暗号化ラウンドは、例えば異なる、例えば無関係の、例えば無作為なラウンド鍵を使用するのではあるが、デバイス１００により実装されたブロック暗号化のラウンドと同じである。しかし、追加的ブロック暗号化ラウンドは、同じブロック暗号化のラウンドである必要があるとは限らない。例えば、一実施形態において、追加的ブロック暗号化ラウンドユニット１４１により実装されたブロック暗号化ラウンドは、終期ブロック暗号化ラウンドユニット１３１のラウンドにおける故障攻撃が広げられるように、内部状態における追加的な撹乱及び／又は拡散をもたらす。それらのラウンドにおける故障は、ユニット１３１（存在する場合）、ユニット１４１、及びユニット１６１における後続のラウンドにより広げられる（以下を参照されたい）。故障が広げられる程度は、追加的ブロック暗号化ラウンドユニットにおけるブロック暗号化ラウンドの数を増やすことにより大きくされ得る。ラウンドのこの数を増やすことにより、故障が完全な内部状態を均一にするように広がることが確実とされ得る。例えば、このような高いバーは、ユニット１３１のラウンドごとに単一ビットを反転させた結果としての最終的な（平文）出力における任意の特定のビットフリッピングの確率が５０％＋／−閾値であることを要求することにより定量化され得る。閾値は、例えば、１０％、又は１％などである。反転の確率は、実験により確立される。
【００３６】
例えば、ユニット１４１のラウンドは、内部状態全体の無作為だが固定の線形変換が後に続く、データ要素、例えば、内部状態のバイトに対して動作するｓボックスアレイの組合せから構成される。後者は、明示的な鍵が必要とされないブロック暗号化ラウンドの例である。
【００３７】
ユニット１３１の終了時に符号化された領域内においてではあるが、ブロック暗号化の結果が演算されることに留意されたい。しかし、攻撃者にしてみると、これは不可視である。ユニット１４１の終了時に、正しい結果が歪められた状態にある。この点について、第１の中間ブロック暗号化結果１５１が演算されている。例えば、使用される符号化などの、ユニット１４１において使用されるブロック暗号化ラウンドの実装の知識情報をもつ誰かにとってみれば、ブロック暗号化により使用される鍵の知識情報なしでも、中間ブロック暗号化結果１５１からブロック暗号化の結果が再構成され得る。
【００３８】
他のホワイトボックス攻撃、例えば、変更されずに観測されただけの変数における攻撃に対する効果的な保護は、共用部分に基づく。例えば、変数ｘは、変数を表すタプルｘｉと表される。例えば、ｋ個の共用部分が存在する場合に、ｘ＝Σｉ＝１…ｋｘｉをもつ。変数ｘは、データ要素、例えば内部状態のバイトである。内部状態のすべてのデータ要素、例えばバイトが、この手法により表される。個々の共用部分は、何らかの全単射Ｅｉに対して、符号化された形態Ｅｉ（ｘｉ）でホワイトボックスプログラムにおいて実装される。共用部分を使用したホワイトボックス実装は、衝突攻撃などのいくつかの高度なホワイトボックス攻撃による影響を受けにくい。実施形態は、例えば、実行時間又はテーブルサイズに過度に追加することなく、追加的なコストを比較的少なくするために、このような実装にＤＦＡ保護を追加する。
【００３９】
一実施形態において、共用ベースの表現が初期ラウンドにおいて、例えば、ユニット１２０において使用されるが後のラウンド、例えば、ユニット１３１、１３２、１３３などでは使用されない。これの利点は、比較的高価な共用部分が、より少ないラウンドにおいて使用されることである。衝突攻撃は、後のラウンドでは有益さが低いのに対し、ＤＦＡ攻撃は、より早期のラウンドでは有益さがより低く、したがって、これが、セキュリティーにおいて大きな犠牲を払わずにコスト、特にテーブルサイズを小さくする。
【００４０】
デバイス１００は、中間ブロック暗号化結果をさらに演算するように構成される。２つのさらなる中間ブロック暗号化結果、すなわち中間ブロック暗号化結果１５２及び１５３が図１ａに示される。２つを上回るさらなる中間ブロック暗号化結果を演算することが可能である。図１ｂは、１つのみのさらなる中間ブロック暗号化結果が演算される一実施形態を示す。
【００４１】
さらなる中間ブロック暗号化結果を演算するために、デバイス１００は、さらなる終期ブロック暗号化ラウンドユニットを備える。終期ブロック暗号化ラウンドユニット１３２及び１３３が図１ａに示される。初期ブロック暗号化ラウンドユニット１２０、及び、さらなる終期ブロック暗号化ラウンドユニットのうちの任意の１つが、ブロック暗号化のすべてのラウンドを備える。さらなる終期ブロック暗号化ラウンドユニット、例えばユニット１３２及び１３３は、終期ブロック暗号化ラウンドユニット１３１と同じブロック暗号化ラウンドを演算するが、さらなる終期ブロック暗号化ラウンドユニットは、典型的には異なる符号化においてそれを行う。さらなる終期ブロック暗号化ラウンドユニットは、したがって、複数のブロック暗号化ラウンドの終期ブロック暗号化ラウンドのうちの少なくとも１つ、例えば、ユニット１３１のラウンドを再演算する。ユニット１３２及び１３３の終了時にブロック暗号化結果が符号化においてではあるが利用可能であり、故障が存在しない場合、ブロック暗号化結果はすべて、ユニット１３１の結果に等しくなければならない。
【００４２】
さらなる終期ブロック暗号化ラウンドユニット１３２及び１３３の後、ユニット１４１の１つ又は複数の追加的ブロック暗号化ラウンドが適用される。ユニット１３２及び１３３の後に、それぞれ、さらなる追加的ブロック暗号化ラウンドユニット１４２及び１４３が、図１ａに示される。さらなる追加的ブロック暗号化ラウンドユニットは、追加的ブロック暗号化ラウンドユニット１４１と同じブロック暗号化ラウンドを実施する。さらなる追加的ブロック暗号化ラウンドユニットの結果は、さらなる中間ブロック暗号化結果１５２及び１５３である。異なる符号化は別として、及び、故障が発生していないと仮定すると、すべての中間ブロック暗号化結果、例えば、結果１５１、１５２、及び１５３は等しくなる。
【００４３】
デバイス１００は、平均化関数ユニットをさらに備える。平均化関数ユニット１６１、１６２、及び１６３が図１ａに示される。平均化関数ユニットは、対応する複数の平均化関数を複数の中間ブロック暗号化結果に適用する。複数の平均化関数の、関数の和が恒等関数に等しくなるように、複数の平均化関数が選択されている。例えば、平均化関数がｆｉと表され、かつ、平均化関数の入力がｘと表される場合、本要求は、Σｉｆｉ（ｘ）＝ｘである。例えば、関数ｆ１は、平均化関数ユニット１６１により実装され得、関数ｆ２は、平均化関数ユニット１６２により実装され得、関数ｆ３は、平均化関数ユニット１６３により実装され得る。３つの平均化関数ユニットが存在する場合、ｆ１（ｘ）＋ｆ２（ｘ）＋ｆ３（ｘ）＝ｘである。
【００４４】
平均化関数は、様々な手法により選択される。例えば、複数の平均化関数のうちのいくつか、又は、さらには、１つを除くすべてが、平均化関数のより大きい集合から無作為に選択される。最終的な平均化関数は、恒等関数と選択された平均化関数との関数差として演算される。例えば、最終的な関数は、ｋ個の平均化関数が存在すると仮定して、
【数５】
0006782864.tif 000006
と規定される。
【００４５】
平均化関数のより大きい集合に対する様々な選択が有益である。例えば、中間ブロック暗号化結果におけるデータ要素に対してコンポーネントワイズに作用する関数として平均化関数が選択される。例えば、中間ブロック暗号化結果がデータ要素、例えば、バイト、ｘ＝ｘ１｜…｜ｘｉのシーケンスである場合、平均化関数は、ｆ（ｘ）＝ｇ１（ｘ１）｜…｜ｇｉ（ｘｉ）として規定される。
【００４６】
別の取り得る例は、線形演算として平均化関数を選択することである。例えば、中間ブロック暗号化結果に作用する線形演算である。この場合、中間ブロック暗号化結果は、データ要素、例えば、バイトのシーケンスとみなされ、線形演算は、例えばバイトの場合のＦ２５６といった、対応する有限体における行列とみなされる。特に、線形演算は、例えばＦ２にわたる行列といった、中間ブロック暗号化結果におけるビットに対して演算を行う行列とみなされる。
【００４７】
平均化関数を選択することに対する別のさらなる選択肢は、例えば２次多項式といった、事前に規定された最大次数をもつ多項式から平均化関数を選択することである。バイトワイズで符号化された値に対して多項式関数をどのように実装するかということ自体は、知られている。
【００４８】
平均化関数は、様々なブロック暗号化ラウンドユニットに実装されたラウンドと同じホワイトボックス技術を使用して実装されることに留意されたい。例えば、平均化関数は、テーブルネットワーク、多項式演算のシーケンスなどとして実装される。
【００４９】
正しい演算のために必要なわけではないが、複数の平均化関数のうちの少なくとも１つが可逆であることが好ましい。複数の平均化関数のすべてが可逆であるなら、さらに好ましい。例えば、平均化関数のうちの大部分に対して、可逆関数が無作為に選択され、及びそこから最終的な平均化関数を演算する。最終的な平均化関数が可逆ではないように決定された場合、すべての関数が可逆となるまで、他の平均化関数のうちの一部又はすべてが再度選択される。
【００５０】
平均化関数の結果は加算ユニット１７０において加算される。加算のタイプは、平均化関数の規定において使用される加算と同じである。一実施形態において、加算ユニット１７０はＸＯＲ演算を使用するが、他の加算演算、例えば、通常のバイトワイズでの算術的な加算も可能である。平均化関数がどのように選択されるかを理由として、加算の結果は、追加的ブロック暗号化ラウンドユニットのうちの任意のものの出力と同じであり、例えば、中間ブロック暗号化結果のうちの任意のものと同じである。複数の中間ブロック暗号化結果の演算のうちの任意のものに故障が発生した場合、それは、歪められた最終的なブロック暗号化結果を結果的にもたらす。
【００５１】
例えば、ユニット１３３における故障について検討する。例えば、ユニット１３３、１４３、及び１８０における故障後の任意のブロック暗号化ラウンドは、ブロック暗号化結果にわたって故障を広げることに寄与する。故障は、最終的なブロック暗号化結果のますます大きい部分に影響を与えるので、攻撃者が故障から有用な情報を導出することがより難しくなる。理想的には、故障が最終的なブロック暗号化結果におけるビットのすべてに影響を与える。すなわち、理想的には、最終的なブロック暗号化結果における任意のビットに対して、故障の結果としてビットが変化する正の確率が存在する。
【００５２】
デバイス１００は、逆追加的ブロック暗号化ラウンドユニット１８０を備える。ユニット１８０は、追加的ブロック暗号化ラウンドユニットのブロック暗号化ラウンドの逆関数（ｉｎｖｅｒｓｅ）を実施して、ブロック暗号化結果１９０を取得する。故障が発生していない場合、これは、正しいブロック暗号化結果である。所望される場合、逆追加的ブロック暗号化ラウンドユニット１８０は、さらに符号化を解除し得るので、正しいブロック暗号化結果１９０が明らかである。出力インターフェース１９５は、ブロック暗号化結果１９０を送信するように構成される。
【００５３】
ブロック暗号化ラウンドがどこで演算されたかを分かりにくくするために、一実施形態は、１つ又は複数のダミーラウンドを含む。ダミーラウンドは、ブロック暗号化ラウンドのうちの任意のものに含まれる。特に、ダミーラウンドは、終期ブロック暗号化ラウンドユニット、追加的ブロック暗号化ラウンドユニット、及び、場合によっては平均化関数ユニットにさえ含まれる。ダミーラウンドとして、場合によっては、異なるラウンド鍵を使用して、１つ又は複数の実際のボック暗号化ラウンドが実施された後、ボック暗号化ラウンドの逆関数が続き得る。ダミーラウンドは、例えば、一形態から別の形態への符号化を変えるのみの恒等演算を実施するラウンドでもあり得る。
【００５４】
上述のように、ホワイトボックス実装では、中間データの大部分又はすべてが符号化された形態をとる。特に、中間ブロック暗号化結果は符号化される。興味深いことに、一実施形態において、異なる中間ブロック暗号化結果は、連携して符号化されるわけではない。例えば、中間ブロック暗号化結果１５１は中間ブロック暗号化結果１５２及び１５３に無関係に符号化される。連携符号化はより大きいテーブルを必要とするので、これは有益である。一実施形態において、連携符号化は、任意の変数に対して使用されるわけではない。
【００５５】
ホワイトボックスモデルに加えて、他の攻撃モデルが存在する。プリミティブの入力及び出力の知識情報しかもたない攻撃者が、攻撃者の権利を上げること、例えば、秘密鍵を取得すること、メッセージを暗号化すること、メッセージを暗号解読することなどができない場合、暗号処理プリミティブは、ブラックボックスモデルにおいてセキュアと呼ばれる。しかし、実際には、攻撃者は、多くの場合、ブラックボックスモデルにおいて操作を行うのではなく、実際には、単なる入力及び出力より多くの情報をもつ。例えば、グレーボックスモデルでは、攻撃者がプリミティブの実行に関係した何らかの情報にアクセス可能であると仮定される。これらの追加的な情報源は「サイドチャンネル」と呼ばれる。例えば、サイドチャンネルは、演算が費やした時間長、又は、消費された電力量などを含む。ホワイトボックスモデルは、攻撃者がプリミティブのすべての内部変数に完全にアクセス可能であるので、関連しているが、さらに強いモデルである。
【００５６】
故障の意図的な導入は、ホワイトボックスにおける問題と同様にグレーボックスにおいて問題である。したがって、例えば、ホワイトボックス型攻撃が利用不能であるか、又は、攻撃者のリソースを考慮すると過度に高価であるので、グレーボックスの防止しか必要とされない場合、本明細書において説明される実施形態が使用される。この場合、変数のすべてを符号化するなどの、ホワイトボックス対策のうちのいくつかが省略される。しかし、故障攻撃の結果を歪めることの利点は残されるので、攻撃者は、故障の前及び後に観測された出力に基づいて鍵に関して干渉することができない。
【００５７】
図１ｂは、暗号処理デバイス１０１の一実施形態の例を概略的に示す。デバイス１０１は、より少ない中間ブロック暗号化結果が演算されることを除いて、デバイス１００と同様であり、図１ｂでは結果１５１及び１５２という２つの中間ブロック暗号化結果が演算される。結果として、平均化関数１６１及び１６２がさらに適応される。これらの平均化関数の、関数の和が恒等に等しくなるように、これらの平均化関数が選択されている。例えば、分岐１３２、１４２、１６２及び分岐１３３、１４３、１６３などの、より多くの分岐を追加することにより、図１ａに示されるものより多くの中間ブロック暗号化結果をもつことも可能であることに留意されたい。分岐の数及び中間ブロック暗号化結果の数が変えられた場合、平均化関数が相応に変えられる。
【００５８】
図１ｃは、暗号処理デバイス１０２の一実施形態の例を概略的に示す。デバイス１０２は、多くの終期ラウンドだけでなく、ブロック暗号化のすべてのラウンドが再演算されることを除いて、デバイス１００と同様である。デバイス１０２は、初期ブロック暗号化ラウンドユニット１２１及び１２２を備える。ユニット１２１及び１２２は、初期ブロック暗号化ラウンドユニット１２０と同じ演算を実施するが、異なる符号化においてそれを行ってよい。
【００５９】
図２は、暗号処理デバイス２００の一実施形態の例を概略的に示す。図１ａに示されるように、図２は、３つの中間ブロック暗号化結果の演算を示す。中間ブロック暗号化結果のうちの２つは、各々が中間ブロック暗号化結果を演算する２つの分岐、すなわち１３１〜１６１及び１３２〜１６２を使用して、図１ａにおける手法と同じ手法により演算される。第３の中間ブロック暗号化結果を演算するために、より複雑なアプローチが使用される。
【００６０】
デバイス２００は、複数のさらなる中間ブロック暗号化結果を演算し、結果２５１、２５２が示される。これらのさらなる中間ブロック暗号化結果は、さらなる平均化関数ユニット２６１、２６２においてさらなる平均化関数を使用して平均化される。しかし、さらなる平均化関数に入るさらなる中間ブロック暗号化結果２５１、２５２は、平均化関数ユニット１６１及び１６２に入る中間ブロック暗号化結果１５１及び１５２と同じではなく、符号化のもとでさえ同じではない。
【００６１】
デバイス２００は、ユニット２３１及び２３２として示される終期ブロック暗号化ラウンドユニットを備え、これらは、ユニット１３１と同じブロック暗号化ラウンドを演算する。終期ブロック暗号化ラウンドユニットに続いて、追加的ブロック暗号化ラウンドユニット２４１及び２４２として示される追加的ブロック暗号化ラウンドユニットが適用される。これらのユニットは、ユニット１４１と同じブロック暗号化ラウンドを演算する。しかし、分岐１３１〜１６１及び１３２〜１６２と異なり、追加的ブロック暗号化ラウンドユニット２４１及び２４２の後に、ユニット２４６及び２４７として示されるさらなる追加的ブロック暗号化ラウンドユニットが存在する。さらなる追加的ブロック暗号化ラウンドユニットの結果は、さらなる複数の中間ブロック暗号化結果である。
【００６２】
デバイス２００は、さらなる複数の平均化関数を実装するさらなる平均化関数ユニットを備える。これらの関数は、さらなる複数の中間ブロック暗号化結果に適用される。さらなる複数の平均化関数の、関数の和が恒等関数に等しくなるように、さらなる複数の平均化関数が選択されている。デバイス２００は、さらなる複数の平均化関数の結果を加算するように構成された加算ユニット２７０を備える。故障が発生していない場合、加算ユニット２７０の結果は、例えば、さらなる追加的ブロック暗号化ラウンドユニット２４６の結果と同じである。
【００６３】
デバイス２００は、さらなる追加的ブロック暗号化ラウンドユニット２４６のラウンドの逆関数を加算の結果に適用するように構成された、逆のさらなる追加的ブロック暗号化ラウンドユニット２８０を備える。誤りが存在しない場合、結果は、中間ブロック暗号化結果である。平均化関数ユニット１６３は、加算の結果に適用される。平均化関数ユニット１６１、１６２、及び１６３の関数の和が恒等であるように、平均化関数ユニット１６１、１６２、及び１６３が選択される。
【００６４】
デバイス１００、１０１、１０２、及び２００の様々な実施形態において、入力インターフェースは、様々な代替例から選択される。例えば、入力インターフェースは、ローカルエリアネットワーク又は広域ネットワーク、例えば、インターネットへのネットワークインターフェース、内部又は外部データ記憶装置、キーボード、アプリケーションインターフェース（ＡＰＩ）への記憶装置インターフェースなどであってよい。出力インターフェースは、対応する、例えば、ローカルエリアネットワーク又は広域ネットワーク、例えば、インターネットへのネットワークインターフェース、内部又は外部データ記憶装置、キーボード、アプリケーションインターフェース（ＡＰＩ）への記憶装置インターフェースなどであってよい。出力インターフェースは、ディスプレイ、プリンターなどでもよい。
【００６５】
デバイス１００、１０１、１０２、及び２００は、例えば、１つ又は複数のボタン、キーボード、ディスプレイ、タッチスクリーンなどのよく知られた要素を含むユーザーインターフェースを含んでよい。ユーザーインターフェースは、例えばデバイスにおいて記憶された、又は受信されたデータに対して、ブロック暗号化アクション、例えば暗号化又は暗号解読を実施するためにユーザー対話に対応するように構成されてよい。
【００６６】
記憶装置１１０は、電子メモリ、例えばフラッシュメモリ、又は、磁気メモリ、例えばハードディスクなどとして実現されてよい。記憶装置１１０は、記憶装置１１０を一緒に構成する複数の独立したメモリを備えてよい。記憶装置１１０は、また、一時的なメモリ、例えばＲＡＭであってよい。一時的な記憶装置１１０の場合、記憶装置１１０は、例えば（図示されていない）任意選択的なネットワーク接続を介してデータを取得することにより、使用前にデータを取得するためのいくつかの手段を含む。
【００６７】
典型的には、デバイス１００、１０１、１０２、２００の各々が、デバイスに記憶された適切なソフトウェアを実行する（別々には示されていない）マイクロプロセッサを備え、例えば、そのソフトウェアは、対応するメモリ、例えば、（別々には示されていない）揮発性メモリ、例えばＲＡＭ、又は、不揮発性メモリ、例えばフラッシュにダウンロード及び／又は記憶されたものであってよい。代替的に、デバイスは、プログラム可能論理部、例えばフィールドプログラム可能ゲートアレイ（ＦＰＧＡ）において全体的に、又は部分的に実現されてよい。デバイスは、いわゆる特定用途向け集積回路（ＡＳＩＣ）、すなわち、それらの特定の使用のためにカスタマイズされた集積回路（ＩＣ）として全体的に、又は部分的に実現されてよい。例えば、回路は、例えば、ハードウェア記述言語、例えばＶｅｒｉｌｏｇ、ＶＨＤＬなどを使用してＣＭＯＳにおいて実現されてよい。
【００６８】
一実施形態において、デバイスは、入力インターフェース回路、初期ブロック暗号化ラウンドユニット回路、２つ以上の終期ブロック暗号化ラウンドユニット回路、２つ以上の追加的ブロック暗号化ラウンドユニット回路、２つ以上の平均化関数ユニット回路、加算ユニット回路、逆追加的ブロック暗号化ラウンドユニット回路、出力インターフェース回路を備える。一実施形態は、２つ以上のさらなる追加的ブロック暗号化ラウンドユニット回路、２つ以上のさらなる平均化関数ユニット回路、さらなる加算ユニット回路、逆のさらなる追加的ブロック暗号化ラウンドユニット回路などをさらに備える。回路は、本明細書において説明される対応するユニットを実現する。回路は、プロセッサ回路及び記憶装置回路であり、プロセッサ回路は、記憶装置回路において電子的に表された命令を実行する。
【００６９】
プロセッサ回路は、例えば複数のサブプロセッサ回路といった分散された手法により実現されてよい。記憶装置は、複数の分散したサブ記憶装置にわたって分散されてよい。メモリの一部又はすべては、電子メモリ、磁気メモリ、などである。例えば、記憶装置は、揮発性の、及び不揮発性の部分を含む。記憶装置の一部は、読み出し専用である。
【００７０】
図３は、暗号処理方法３００の一実施形態の例を概略的に示す。方法３００は、入力メッセージ１１０に対してブロック暗号を演算するように構成された暗号処理方法である。方法３００は、電子デバイス、例えばコンピュータ及び／又はデバイス、例えばデバイス１００、１０１、１０２、又は２００において実行され得る。ブロック暗号化は、複数のブロック暗号化ラウンドを含む。方法３００は、
−  例えば入力インターフェースを介して、入力メッセージを受信すること（３１０）であって、例えば入力メッセージが、例えば暗号化又は暗号解読のために、例えばブロック暗号化を使用するコンピュータプログラムから受信され得る、受信すること（３１０）と、
−  複数の中間ブロック暗号化結果を演算すること（３２０）（中間ブロック暗号化結果は、互いに独立し得る多くの分岐において演算される。各分岐において、中間ブロック暗号化結果が演算される。方法３００は、第１の分岐を含み、第１の分岐において、第１の中間ブロック暗号化結果が演算される。方法３００は、入力メッセージに、複数のブロック暗号化ラウンドを連続して適用すること（３３０）を有し、後に１つ又は複数の追加的ブロック暗号化ラウンドが続く。さらなる中間ブロック暗号化結果が、さらなる分岐において演算される。方法３００は、複数のブロック暗号化ラウンドのうちの終期ブロック暗号化ラウンドのうちの少なくとも１つを再演算すること（３４０）を有し、後に１つ又は複数の追加的ブロック暗号化ラウンドが続く。再演算の数を増やすことは、セキュリティーを高める。）と、
−  複数の中間ブロック暗号化結果に複数の平均化関数を適用すること（３５０）であって、複数の平均化関数の、関数の和が恒等関数に等しくなるように、複数の平均化関数が選択されている、適用すること（３５０）と、
−  複数の平均化関数の結果を加算すること（３６０）と、
−  １つ又は複数の追加的ブロック暗号化ラウンドの逆関数を適用すること（３７０）とであって、ブロック暗号化結果１９０が、逆関数の結果から取得される、適用すること（３７０）と、
を有する。
【００７１】
当業者に明らかなように、方法を実行する多くの異なる手法が可能である。例えば、ステップの順序は変えられ得、又は、いくつかのステップは並行して実行されてよい。さらに、ステップ間において他の方法ステップが挿入されてよい。挿入されたステップは、例えば本明細書において説明される方法の改良例を表すか、又は本方法に無関係であってよい。例えば、異なる分岐の一部又はすべてが、少なくとも部分的に並行して実行されてよい。さらに、所与のステップは、次のステップが始められる前に、完全に終えられていなくてもよい。
【００７２】
本発明による方法は、プロセッサシステムに方法３００を実施させるための命令を含むソフトウェアを使用して実行される。ソフトウェアは、システムの特定のサブエンティティにより行われるステップのみを有するものである。ソフトウェアは、例えばハードディスク、フロッピー、メモリ、光ディスクなどの適切な記憶媒体に記憶される。ソフトウェアは、有線により、又は無線により、又はデータネットワーク、例えばインターネットを使用して信号として送信される。ソフトウェアは、ダウンロードのために、及び／又は、サーバーにおける遠隔使用のために利用可能とされる。本発明による方法は、本方法を実施するようにプログラム可能論理部、例えばフィールドプログラム可能ゲートアレイ（ＦＰＧＡ）を形成するように構成されたビットストリームを使用して実行される。
【００７３】
本発明が、本発明を実施するように適応された、コンピュータプログラム、特に媒体上の、又は媒体内のコンピュータプログラムにも広がることが理解される。プログラムは、例えば部分的にコンパイルされた形態、又は本発明による方法の実施態様における使用に適した任意の他の形態による、ソースコード、オブジェクトコード、コード中間ソース、及びオブジェクトコードの形態であってよい。コンピュータプログラム製品に関する一実施形態は、記載される方法のうちの少なくとも１つの処理ステップの各々に対応したコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに再分割されてよい、及び／又は静的に、又は動的にリンクされる１つ又は複数のファイルに記憶される。コンピュータプログラム製品に関する別の実施形態は、記載されるシステム及び／又は製品のうちの少なくとも１つの手段の各々に対応したコンピュータ実行可能命令を含む。
【００７４】
以下で、電子デバイスに実装されるさらなる実施形態が説明される。以下で開示される実施形態は、以下の特徴のうちの１つ又は複数を含む。
【００７５】
１．計算は、複数の分岐に分けられ、各分岐が、ＤＦＡ攻撃を受けやすいラウンドを含む。
【００７６】
２．各分岐における変数は、別々に符号化され、異なる分岐が、異なる符号化を使用しなければならず、したがって、異なる分岐におけるどのラウンドが同じであるかは明らかでない。
【００７７】
３．各分岐において、ダミーラウンド、すなわち互いの逆関数である２つの連続したラウンドのペアが、通常ラウンド間に挿入される。
【００７８】
４．各分岐において、注入された故障の拡散、例えばすべてのバイトにわたる完全な拡散を達成するために、追加的なラウンドが実行される。
【００７９】
５．同じラウンドを実行した分岐が「平均化される」。誤りがこれらの分岐のうちのいずれにも注入されておらず、かつ、すべてのこれらの分岐が（異なる符号化において）同じ結果を計算した場合、平均化の結果が、この同じ結果の別の符号化となる手法により、それらのバイトが組み合わされる。
【００８０】
６．平均化後、出力が取得されるまで、追加的なラウンドが逆にされる。
【００８１】
ステップ５及びステップ６の効果は、厳密に同じ故障が、ＤＦＡ攻撃を受けやすいラウンドのすべてのインスタンスに注入されていない限り、攻撃者は、攻撃者が想定する出力における変化を観測せず、図４に関係して説明されるようにＤＦＡが機能しないことである。言い換えると、ＤＦＡによる影響を受けやすいラウンドを含むｎ個の分岐が存在する場合、攻撃者は、これらの分岐の各々に正確な故障を注入しなければならない。図５ａは、２つの分岐及び１つの追加的なラウンドＲ１０が使用される一実施形態を示す。図５ｂは、５つの分岐、及び、３つの追加的なラウンド関数Ｒ１０、Ｒ１１及びＲ１２が使用される、より精巧な例を示す。２個のダミーラウンド（Ｒｄ及びその逆関数）が、分岐のうちの１つにさらに挿入されている。
【００８２】
図５ａは、一実施形態を示し、この実施形態に対して、２つの故障がＤＦＡ攻撃において注入されなければならない。ラウンド７から始まり、計算が異なる符号化を使用して２回実施される。符号化は図に示されていない。これは、ｘ７＝Ｒ７（ｘ６）がｘ’７と同じであることを意味する。追加的なラウンドＲ１０は、ラウンド８におけるＭｉｘＣｏｌｕｍｎｓと一緒に、ｘ１０又はｘ’１０のすべてのバイトにわたって、ｘ７又はｘ’７において注入された誤りの影響を広げなければならない−ＡＥＳ−１２８ではＲ９がＭｉｘＣｏｌｕｍｎｓを使用せず、したがって、誤りの影響を動かすが複数のバイトにわたって誤りの影響を広げないことを思い出されたい。適切な選択は、無作為なｋを選び出すことであり、
【数６】
0006782864.tif 000007
であるとする。故障が注入されない場合、この回路は、図４の回路と同じ出力を計算する。ｘ１０及びｘ’１０と表記される２つの分岐からの結果は、
【数７】
0006782864.tif 000008
に平均化される。ここで、Ａは、
【数８】
0006782864.tif 000009
という性質をもつ状態空間写像における任意の可逆な写像であり、ここで、Ｉは、恒等写像を表し、同様に可逆である。したがって、ｘ１０＝ｘ’１０の場合かつその場合に限り、ｘ１１＝ｘ１０であり、このことは、同じ故障が両方の分岐に注入されていなければならないことを意味する。
【００８３】
図５ｂはより精巧な実施形態を示し、本実施形態に対して、５つの故障がＤＦＡ攻撃において注入されなければならない。２つの分岐からのラウンド１２の後の結果は、可逆な写像Ａと、
【数９】
0006782864.tif 000010
とを使用して組み合わされ、Ｒ１２の逆関数が適用され、このアクションによる結果は、別個の可逆な写像Ｂ、Ｃ、Ｄ、及び、
【数１０】
0006782864.tif 000011
を使用して、３つの他の分岐からの結果と組み合わされる。最後に、ラウンド１１及び１０が、出力を取得するために逆転される。
【００８４】
図６ａは、コンピュータプログラム１０２０を含む書き込み可能部分１０１０を含むコンピュータ可読媒体１０００を示し、コンピュータプログラム１０２０は、一実施形態による、プロセッサシステムにブロック暗号を演算する方法を実施させるための命令を含む。コンピュータプログラム１０２０は、物理的なマークとして、又は、コンピュータ可読媒体１０００の磁化によりコンピュータ可読媒体１０００において具現化されてよい。しかし、任意の他の適切な実施形態もさらに考えられる。さらに、本例ではコンピュータ可読媒体１０００が光ディスクとして示されるが、コンピュータ可読媒体１０００は、任意の適切なコンピュータ可読媒体、例えばハードディスク、ソリッドステートメモリ、フラッシュメモリなどであってよく、書き込み不能、又は書き込み可能であってよいことが理解される。コンピュータプログラム１０２０は、プロセッサシステムにブロック暗号を演算する本方法を実施させるための命令を含む。
【００８５】
図６ｂは、ブロック暗号を演算する暗号処理デバイスの一実施形態によるプロセッサシステム１１４０の概略図を示す。プロセッサシステムは、１つ又は複数の集積回路１１１０を備える。１つ又は複数の集積回路１１１０のアーキテクチャが、図６ｂに概略的に示される。回路１１１０は、一実施形態による方法を実行するように、及び／又はそのモジュール又はユニットを実装するようにコンピュータプログラムコンポーネントを動作させるための処理ユニット１１２０、例えばＣＰＵを備える。回路１１１０は、プログラミングコード、データなどを記憶するためのメモリ１１２２を備える。メモリ１１２２の一部は、読み出し専用であってよい。回路１１１０は、通信要素１１２６、例えば、アンテナ、コネクタ、又はその両方などを備えてよい。回路１１１０は、本方法において規定される処理の一部又はすべてを実施するための専用集積回路１１２４を備えてよい。プロセッサ１１２０、メモリ１１２２、専用ＩＣ１１２４、及び通信要素１１２６は、バスなどの相互接続体１１３０を介して互いに接続されてよい。プロセッサシステム１１１０は、アンテナ及び／又はコネクタをそれぞれ使用した接触及び／又は非接触通信のために構成されてよい。
【００８６】
例えば、一実施形態において、ブロック暗号を演算するデバイスは、プロセッサ回路とメモリ回路とを備えてよく、プロセッサは、メモリ回路に記憶されたソフトウェアを実行するように構成される。例えば、プロセッサ回路は、Ｉｎｔｅｌ  Ｃｏｒｅ  ｉ７プロセッサ、ＡＲＭ  Ｃｏｒｔｅｘ−Ｒ８などであってよい。一実施形態において、プロセッサ回路は、ＡＲＭ  Ｃｏｒｔｅｘ  Ｍ０であってよい。メモリ回路は、ＲＯＭ回路、又は不揮発性メモリ、例えばフラッシュメモリであってよい。メモリ回路は、揮発性メモリ、例えばＳＲＡＭメモリであってよい。後者の場合において、デバイスは、ソフトウェアを提供するために構成された、不揮発性ソフトウェアインターフェース、例えばハードドライブ、ネットワークインターフェースなどを備えてよい。
【００８７】
上述の実施形態は本発明を限定するのではなく例示すること、及び、当業者が多くの代替的な実施形態を設計することができることが留意されなければならない。
【００８８】
特許請求の範囲において、括弧間に位置するいずれの参照符号も、請求項を限定すると解釈されてはならない。「備える（含む、有する、もつ）」という動詞及びその活用形の使用は、請求項に記載された要素及びステップ以外の要素及びステップの存在を排除しない。単数形の表現は、複数のこのような要素の存在を排除しない。本発明は、いくつかの区別される要素を備えるハードウェアにより、及び適切にプログラムされたコンピュータにより実現されてよい。いくつかの手段を列挙したデバイスの請求項において、これらの手段のうちのいくつかは、同じ１つの部材のハードウェアにより具現化されてよい。単に特定の手段が相互に異なる従属請求項に記載されているということが、利点を得るためにこれらの手段の組合せが使用不可能なことを示すわけではない。
【００８９】
特許請求の範囲において、括弧内の参照は、例示的な実施形態の図面における参照符号、又は、実施形態の式を表し、したがって、請求項の理解のしやすさを高める。これらの参照は、請求項を限定すると解釈されてはならない。
【符号の説明】
【００９０】
１００、１０１、１０２  暗号処理デバイス
１０５  入力インターフェース
１１０  入力メッセージ
１２０、１２１、１２２  初期ブロック暗号化ラウンドユニット
１３１、１３２、１３３  終期ブロック暗号化ラウンドユニット
１４１、１４２、１４３  追加的ブロック暗号化ラウンドユニット
１５１、１５２、１５３  中間ブロック暗号化結果
１６１、１６２、１６３  平均化関数ユニット
１７０  加算ユニット
１８０  逆追加的ブロック暗号化ラウンドユニット
１９０  ブロック暗号化結果
１９５  出力インターフェース
２００  暗号処理デバイス
２３１、２３２  終期ブロック暗号化ラウンドユニット
２４１、２４２  追加的ブロック暗号化ラウンドユニット
２４６、２４７  さらなる追加的ブロック暗号化ラウンドユニット
２５１、２５２  さらなる中間ブロック暗号化結果
２６１、２６２  さらなる平均化関数ユニット
２７０  加算ユニット
２８０  逆のさらなる追加的ブロック暗号化ラウンドユニット
【図１ａ】
0006782864.tif 000012
【図１ｂ】
0006782864.tif 000013
【図１ｃ】
0006782864.tif 000014
【図２】
0006782864.tif 000015
【図３】
0006782864.tif 000016
【図４】
0006782864.tif 000017
【図５ａ】
0006782864.tif 000018
【図５ｂ】
0006782864.tif 000019
【図６ａ】
0006782864.tif 000020
【図６ｂ】
0006782864.tif 000021