(57)【特許請求の範囲】
【請求項１】
入力メッセージに対してターゲットブロック暗号を計算する暗号デバイスであって、
前記入力メッセージに対して前記ターゲットブロック暗号を計算して、第１のブロック暗号結果を得る第１のブロック暗号ユニットと、
前記入力メッセージに対して前記ターゲットブロック暗号を計算して、第２のブロック暗号結果を得る第２のブロック暗号ユニットと、
前記第１のブロック暗号結果及び前記第２のブロック暗号結果を入力として取る第１の制御ユニットと、
を含み、
前記第１の制御ユニットは、入力として、第１の値及び第２の値を取り、前記第１の値及び前記第２の値が同じである場合にのみ、前記第１の値を生成し、
前記第１の制御ユニットは、前記第１の値及び前記第２の値に第１の結合関数を適用することによって、前記第１の値及び前記第２の値を組み合わせて、比較値を得て、
前記比較値に対して補助ブロック暗号を計算して、計算された制御値を得て、
第２の結合関数を適用することによって、前記第１の値、前記計算された制御値及び記憶された制御値を組み合わせ、
前記第１の結合関数は、前記第１の値及び前記第２の値が同じである場合にのみ、所定値と同じであり、
前記第２の結合関数は、前記計算された制御値が前記記憶された制御値と同じである場合にのみ、前記第１の値を生成する、暗号デバイス。
【請求項２】
前記第１の制御ユニットは、マスキング制御ユニットであり、マスキング制御ユニットは、前記第１の値に対してマスキングブロック暗号を計算し、したがって、マスキングされた形式の前記第１の値が得られ、前記第２の結合関数は、マスキングされた形式の前記第１の値に適用され、前記マスキング制御ユニットは、前記第１の値及び前記第２の値が同じである場合にのみ、マスキングされた形式の前記第１の値を生成する、請求項１に記載の暗号デバイス。
【請求項３】
前記第１の制御ユニットの前記結果に対して前記マスキングブロック暗号の逆元を計算する更なるブロック暗号ユニットを含む、請求項２に記載の暗号デバイス。
【請求項４】
前記入力メッセージに対して前記ターゲットブロック暗号を計算して、第３の値を得る第３のブロック暗号ユニットと、
前記入力メッセージに対して前記ターゲットブロック暗号を計算して、第４の値を得る第４のブロック暗号ユニットと、
前記第３のブロック暗号結果及び前記第４のブロック暗号結果を入力として取る第２のマスキング制御ユニットと、
前記第１のマスキング制御ユニットの前記結果及び前記第２のマスキング制御ユニットの前記結果を入力として取る第３のマスキング制御ユニットと、
を含み、
前記第２のマスキング制御ユニットは、前記第１のマスキング制御ユニットと同じマスキングブロック暗号を使用し、
前記第３のマスキング制御ユニットは、前記第１のマスキング制御ユニット及び前記第２のマスキング制御ユニットの前記マスキングブロック暗号の逆元を使用する、請求項２に記載の暗号デバイス。
【請求項５】
前記マスキングブロック暗号は、前記補助ブロック暗号と同じブロック暗号である、請求項１乃至４の何れか一項に記載の暗号デバイス。
【請求項６】
前記第１のブロック暗号ユニット及び前記第２のブロック暗号ユニットにおける前記ターゲットブロック暗号は、それぞれ、複数のブロック暗号ラウンドと前記複数のブロック暗号ラウンドに散在する１つ以上のダミーラウンドとからなるシーケンスを含み、前記第１のブロック暗号ユニットの前記シーケンスにおける最後のブロック暗号ラウンドは、前記第２のブロック暗号ユニットの前記シーケンスにおける最後のブロック暗号ラウンドとはアラインされていない、請求項１乃至５の何れか一項に記載の暗号デバイス。
【請求項７】
前記第１のブロック暗号ユニット又は前記第２のブロック暗号ユニットにおける前記ターゲットブロック暗号におけるラウンドの前記シーケンスは、ダミーラウンドと、前記ダミーラウンドの逆元とを含む、請求項６に記載の暗号デバイス。
【請求項８】
前記第１のブロック暗号ユニットにおける前記ターゲットブロック暗号の前記シーケンスにおけるラウンドの第１の変数は、前記第２のブロック暗号ユニットにおける前記ターゲットブロック暗号の前記シーケンスにおける同じラウンドにおける対応する第２の変数と結合符号化される、請求項６又は７に記載の暗号デバイス。
【請求項９】
前記第１の変数及び前記第２の変数の前記結合符号化は、複数のシェアにわたって分布する、請求項８に記載の暗号デバイス。
【請求項１０】
それぞれ、前記入力メッセージに対して前記ターゲットブロック暗号を計算して、ブロック暗号結果を得る複数のブロック暗号ユニットと、
前記複数のブロック暗号ユニットの前記ブロック暗号結果のうちの２つのブロック暗号結果を入力として取る複数の第１の制御ユニットと、
最終ブロック暗号結果を生成するように、前記複数の第１の制御ユニットの前記結果を組み合わせる１つ以上の第２の制御ユニットと、
を含み、
前記最終ブロック暗号結果は、前記複数のブロック暗号ユニットのすべてのブロック暗号結果が同じである場合にのみ、前記複数のブロック暗号ユニットの第１のブロック暗号ユニットの前記ブロック暗号結果と同じである、請求項１乃至９の何れか一項に記載の暗号デバイス。
【請求項１１】
前記第１の結合関数は、前記第１の値及び前記第２の値の排他的ＯＲであるか、又は、
前記第１の結合関数の少なくとも一部は、前記第１の値の少なくとも一部と前記第２の値の少なくとも一部との算術差によって形成されるか、又は、
前記第１の結合関数の少なくとも一部は、前記第１の値の少なくとも一部及び前記第２の値の少なくとも一部にルックアップテーブルを適用することによって形成され、前記ルックアップテーブルは、前記第１の値の前記少なくとも一部及び前記第２の値の前記少なくとも一部が同じである場合に、前記所定値を与える、請求項１乃至１０の何れか一項に記載の暗号デバイス。
【請求項１２】
前記第２の結合関数は、前記第１の値又はマスキングされた第１の値、前記計算された制御値及び記憶された制御値の排他的ＯＲであり、
前記第２の結合関数の少なくとも一部は、前記第１の値又は前記マスキングされた第１の値の少なくとも一部、前記計算された制御値の少なくとも一部の合計から、前記記憶された制御値の少なくとも一部を引いたものによって形成され、
前記第２の結合関数の少なくとも一部は、前記第１の値又は前記マスキングされた第１の値の少なくとも一部、前記記憶された制御値の少なくとも一部の合計から、前記計算された制御値の少なくとも一部を引いたものによって形成され、
前記第２の結合関数の少なくとも一部は、前記第１の値又は前記マスキングされた第１の値の少なくとも一部、前記計算された制御値の少なくとも一部及び前記記憶された制御値の少なくとも一部にルックアップテーブルを適用することによって形成され、前記ルックアップテーブルは、前記計算された制御値の前記少なくとも一部及び前記記憶された制御値の前記少なくとも一部が同じである場合に、前記第１の値又は前記マスキングされた第１の値の前記少なくとも一部を与える、請求項１乃至１１の何れか一項に記載の暗号デバイス。
【請求項１３】
前記第１のブロック暗号ユニット、前記第２のブロック暗号ユニット及び前記第１の制御ユニットは、１つ以上のテーブルネットワークとして実装される、請求項１乃至１２の何れか一項に記載の暗号デバイス。
【請求項１４】
入力メッセージに対してターゲットブロック暗号を計算する暗号デバイスの作動方法であって、
前記暗号デバイスの第１のブロック暗号ユニットが、前記入力メッセージに対して前記ターゲットブロック暗号を計算して、第１のブロック暗号結果を得るステップと、
前記暗号デバイスの第２のブロック暗号ユニットが、前記入力メッセージに対して前記ターゲットブロック暗号を計算して、第２のブロック暗号結果を得るステップと、
前記暗号デバイスの第１の制御ユニットが、前記第１のブロック暗号結果及び前記第２のブロック暗号結果を、第１の制御動作における入力として使用するステップと、
を含み、
前記第１の制御ユニットの前記第１の制御動作は、入力として、第１の値及び第２の値を取り、前記第１の値及び前記第２の値が同じである場合にのみ、前記第１の値を生成し、
前記第１の制御動作は、前記第１の値及び前記第２の値に第１の結合関数を適用することによって、前記第１の値及び前記第２の値を組み合わせて、比較値を得て、
前記比較値に対して補助ブロック暗号を計算して、計算された制御値を得て、
第２の結合関数を適用することによって、前記第１の値、前記計算された制御値及び記憶された制御値を組み合わせるステップを含み、
前記第１の結合関数は、前記第１の値及び前記第２の値が同じである場合にのみ、所定値と同じであり、
前記第２の結合関数は、前記計算された制御値が前記記憶された制御値と同じである場合にのみ、前記第１の値を生成する、暗号デバイスの作動方法。
【請求項１５】
入力メッセージに対してターゲットブロック暗号を計算して、第１のブロック暗号結果を得るステップと、
前記入力メッセージに対して前記ターゲットブロック暗号を計算して、第２のブロック暗号結果を得るステップと、
前記第１のブロック暗号結果及び前記第２のブロック暗号結果を、第１の制御動作における入力として使用するステップと、をコンピュータに実行させるためのコンピュータプログラムであって、
前記第１の制御動作は、入力として、第１の値及び第２の値を取り、前記第１の値及び前記第２の値が同じである場合にのみ、前記第１の値を生成し、
前記第１の制御動作は、前記第１の値及び前記第２の値に第１の結合関数を適用することによって、前記第１の値及び前記第２の値を組み合わせて、比較値を得て、
前記比較値に対して補助ブロック暗号を計算して、計算された制御値を得て、
第２の結合関数を適用することによって、前記第１の値、前記計算された制御値及び記憶された制御値を組み合わせるステップを含み、
前記第１の結合関数は、前記第１の値及び前記第２の値が同じである場合にのみ、所定値と同じであり、
前記第２の結合関数は、前記計算された制御値が前記記憶された制御値と同じである場合にのみ、前記第１の値を生成する、ことをコンピュータに実行させるためのコンピュータプログラム。
【請求項１６】
請求項１５に記載のコンピュータプログラムを含む、記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号デバイス、暗号方法、コンピュータプログラム及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
Ｓ．Ｃｈｏｗ他による論文「A White-Box DES Implementation for DRM Applications」において、データ暗号規格（ＤＥＳ）のホワイトボックス実装が提示されている（以下「Ｃｈｏｗ」と言う）。ホワイトボックス実装は、ホワイトボックスコンテキストにおいて攻撃に耐えるようにデザインされている暗号実装である。ホワイトボックスコンテキストでは、攻撃者は、ソフトウェア実装及び実行の完全な可視性を有する。しかし、それでも、ホワイトボックス実施は、プログラムからの秘密鍵の抽出を阻止することを狙いとしている。
【０００３】
Ｃｈｏｗは、テーブルルックアップ演算だけでできているＤＥＳの実装を形成する。通常の暗号が、幾つかの中間方法を介して、この形式での実装に変換され、したがって、テーブルネットワークを使用してＤＥＳを計算することができる。テーブルネットワークにおけるテーブルを符号化することによって、解析及び攻撃に対するシステムの抵抗力が増加される。
【０００４】
テーブルネットワークを使用したホワイトボックス実装の解析は難しいが、ブロック暗号のテーブルベースの実装は依然として一部の攻撃に弱い。発明者は、ホワイトボックス実装において、変数の観察から鍵が直接引き出されなくても、変数へのアクセスを使用して、以前は物理的な攻撃の領域からしか知られていない攻撃が実行されることを認識した。
【０００５】
例えばＢｉｈａｍ他による論文「Differential Fault Analysis of Secret Key Cryptosystems」において、電源電圧を変更することによって、遷移故障がスマートカードに導入され、これにより、ＤＥＳ計算は不正確な結果を生成する。遷移故障によって生じるエラーを解析することによって、秘密鍵に関する情報が得られる。
【０００６】
発明者は、このような物理的な故障攻撃が適応されてホワイトボックス実装が攻撃される可能性があるという見識を持っていた。攻撃者は、攻撃者に可視である変数の解析から機密情報を得ることができなくても、符号化された変数を改変して、物理的な攻撃を模倣しようとすることによって、機密情報を引き出すことができる場合がある。変数の故意的改変は、遷移故障として作用する。
【０００７】
例えば米国特許第８，３８６，７９１Ｂ２号「Secure data processing method based particularly on a cryptographic algorithm」において、従来技術において導入されている差分故障攻撃に対する対策は、ホワイトボックスモデルでは役に立たないことが分かっている。ブロック暗号ＤＥＳが入力データに２回適用される。２つの計算の結果が比較される。結果が同じでなければ、故障が検出される。
【０００８】
ホワイトボックスモデルにおいて、この対策は簡単に回避されてしまう。例えば第２の実行、即ち、比較が無効にされるか、又は、ＤＥＳの両コピーに同じ故障が導入されることが可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ホワイトボックスモデルにおいて攻撃された場合によりうまく保護可能である新しいＤＦＡ対策が必要である。
【課題を解決するための手段】
【００１０】
入力メッセージに対してターゲットブロック暗号を計算する暗号デバイスが提供される。デバイスは、
入力メッセージに対してターゲットブロック暗号を計算して、第１のブロック暗号結果を得る第１のブロック暗号ユニットと、
入力メッセージに対してターゲットブロック暗号を計算して、第２のブロック暗号結果を得る第２のブロック暗号ユニットと、
第１のブロック暗号結果及び第２のブロック暗号結果を入力として取る第１の制御ユニットとを含む。一般に、制御ユニットは、入力として、第１の値及び第２の値を取り、第１の値及び第２の値が同じである場合にのみ、第１の値を生成する。制御ユニットは、第１の値及び第２の値に第１の結合関数を適用することによって、第１の値及び第２の値を組み合わせて、比較値を得て、
比較値に対して補助ブロック暗号を計算して、計算された制御値を得て、
第２の結合関数を適用することによって、第１の値、計算された制御値及び記憶された制御値を組み合わせ、
上記第１の結合関数は、第１の値及び第２の値が同じである場合にのみ、所定値と同じであり、
上記第２の結合関数は、計算された制御値が記憶された制御値と同じである場合にのみ、第１の値を生成する。
【００１１】
この構成は、プロブラムのどこかに故障を導入した後、観察された最終出力から引き出すことができる情報を減らす。暗号デバイスでは、ブロック暗号結果における故障は、直接的には伝搬されない。したがって、攻撃者は、そこから情報を引き出すことができず、ＤＦＡ攻撃を複雑にする。
【００１２】
一実施形態では、制御ユニットの出力は、第２の比較関数の前に、制御ユニット内の更なるブロック暗号によってマスキングされる。一実施形態では、暗号デバイスは、第２の比較関数の後に、マスキングブロック暗号の逆元を含む。マスキングブロック暗号の逆元は、第２の比較関数によって引き起こされる任意の変化を、ブロック暗号結果全体にわたって分布させる。
【００１３】
一実施形態では、暗号デバイスは、攻撃者にとってＤＦＡを更に複雑にするために、ターゲットブロック暗号用の３つ以上のブロック暗号ユニットと、複数の制御ユニットとを含む。
【００１４】
暗号デバイスは、例えばモバイル電子デバイスである電子デバイスである。暗号デバイスは、モバイルフォン、セットトップボックス、コンピュータ等であってよい。
【００１５】
本明細書における暗号方法及びデバイス方法は、様々な実用的応用に適用されてよい。このような実用的応用には、バンキングアプリケーション、安全な通信、デジタル著作権管理等が含まれる。
【００１６】
本発明による方法は、コンピュータ実装方法としてコンピュータ上に、又は、専用ハードウェア内に、又は、これらの組み合わせで実装されてよい。本発明による方法の実行可能コードは、コンピュータプログラムプロダクトに記憶されてよい。コンピュータプログラムプロダクトの例としては、メモリデバイス、光学ストレージデバイス、集積回路、サーバ、オンラインソフトウェア等が挙げられる。好適には、コンピュータプログラムプロダクトは、コンピュータ上で実行されると本発明による方法を行うためのコンピュータ可読媒体に記憶される非一時的プログラムコードを含む。
【００１７】
好適な実施形態では、コンピュータプログラムは、コンピュータ上で実行されると、本発明による方法のすべてのステップを行うように適応されたコンピュータプログラムコードを含む。好適には、コンピュータプログラムは、コンピュータ可読媒体上に具現化される。
【００１８】
本発明の別の態様は、コンピュータプログラムをダウンロード用に利用可能にする方法を提供する。この態様は、コンピュータプログラムが、例えばアップル社のアップストア、グーグル社のプレイストア又はマイクロソフト社のウィンドウズ（登録商標）ストアにアップロードされるとき、また、コンピュータプログラムが、上記ストアからダウンロードされるように利用可能であるときに使用される。
【図面の簡単な説明】
【００１９】
本発明の更なる詳細、態様及び実施形態は、図面を参照して、ほんの一例として、説明される。図面における要素は、簡潔さ及び明瞭さのために示され、必ずしも縮尺通りではない。図面において、既に説明されている要素に対応する要素は同じ参照符号を有する。
【００２０】
【図１ａ】図１ａは、暗号デバイスの一実施形態の一例を概略的に示す。
【図１ｂ】図１ｂは、暗号デバイスの一実施形態の一例を概略的に示す。
【図２】図２は、暗号デバイスの一実施形態の一例を概略的に示す。
【図３】図３は、暗号デバイスの一実施形態の一例を概略的に示す。
【図４ａ】図４ａは、暗号デバイスの一実施形態の一例を概略的に示す。
【図４ｂ】図４ｂは、暗号デバイスの一実施形態の一例を概略的に示す。
【図５ａ】図５ａは、ラウンドのシーケンスの例を概略的に示す。
【図５ｂ】図５ｂは、ラウンドのシーケンスの例を概略的に示す。
【図６】図６は、暗号方法のフローチャートの例を概略的に示す。
【図７ａ】図７ａは、一実施形態によるコンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体を概略的に示す。
【図７ｂ】図７ｂは、一実施形態によるプロセッサシステムの表現を概略的に示す。
【発明を実施するための形態】
【００２１】
本発明は、多くの異なる形式の実施形態が可能であるが、図面には、１つ以上の具体的な実施形態が示され、また、本開示は本発明の原理を例示するものと見なされ、本発明を図示及び説明される特定の実施形態に限定することを意図していないという理解と共に、本明細書において、当該１つ以上の具体的な実施形態が詳細に説明される。
【００２２】
以下、理解を助けるために、実施形態の要素は動作で説明される。しかし、各要素が、当該要素によって行われるものとして説明される機能を実行するように構成されていることは明らかである。
【００２３】
更に、本発明は、実施形態に限定されない。また、本発明は、上記される又は相互に異なる従属請求項に記載される各新規の特徴又は特徴の組み合わせにある。
【００２４】
図１ａは、暗号デバイス１００の一実施形態の一例を概略的に示す。
【００２５】
暗号デバイス１００は、入力メッセージ１１０に対してターゲットブロック暗号を計算する。ブロック暗号は、入力に連続して作用して出力を生成する複数のラウンドを有する。多くのブロック暗号は差分故障攻撃に弱い。例えばフェイステル（Feistel）型暗号において使用されるように、例えば最終ラウンドがラウンド関数に基づいているブロック暗号は、特定のタイプの差分故障攻撃に弱い。同じ入力に対して暗号を２回作用させることによって、しかし、最終ラウンドにおける値を操作して（いわゆる故障）、攻撃者は、故障ありの出力と故障なしの出力とを比較することによって、秘密暗号鍵の情報を得ることができる。従来、差分故障攻撃は、故障を物理的に生じさせるために、暗号が実行されるハードウェアを操作することによって行われていた。例えば電圧スパイクが導入されて、ハードウェアに計算の故障を導入させていた。発明者は、差分故障攻撃は、ホワイトボックス攻撃モデルにおいても実行可能であることに気が付いた。ホワイトボックス攻撃モデルでは、攻撃者は、ブロック暗号が実行されている間に、ブロック暗号の変数を操作する能力があると仮定される。多くの応用では、ホワイトボックス攻撃モデルは、コンピュータデータ及びソフトウェア保護の現実に非常によく似ている。
【００２６】
暗号デバイス１００は、入力メッセージ１１０に対してターゲットブロック暗号Ｂｔを計算する。例えば暗号デバイス１００は、メッセージ１１０を受信する受信器を含むか、又は、暗号デバイス１００は、メッセージ１１０が記憶されているメッセージ用ストレージを含む（いずれも図１ａには個別に図示しない）。暗号デバイス１００は、暗号化モード又は復号化モードにおいて、ターゲットブロック暗号を計算する。
【００２７】
暗号デバイス１００は、第１のブロック暗号ユニット１２１と、第２のブロック暗号ユニット１２２とを含む。第１及び第２のブロック暗号ユニット１２１、１２２は、それぞれ、入力メッセージ１１０に対してターゲットブロック暗号Ｂｔを計算し、第１及び第２のブロック暗号結果Ｃ１、Ｃ２を得る。
【００２８】
ターゲットブロック暗号は、故障攻撃から保護されるべきブロック暗号である。例えばターゲットブロック暗号は、ＤＥＳ、トリプルＤＥＳ、ＡＥＳ等である。一実施形態では、第１及び第２のブロック暗号ユニット１２１、１２２は、例えばＣｈｏｗに示されるように、ホワイトボックス暗号法を使用してテーブルネットワークにターゲットブロック暗号を実装する。テーブルネットワーク実装は、ＡＥＳ等についても知られている。
【００２９】
攻撃者が、例えばスマートフォン、ＰＣ等であるコンピュータデバイス上で動くソフトウェアを完全に制御することができる。ホワイトボックス暗号法は、このような攻撃者からソフトウェア実装を保護することを目標とする。
【００３０】
ブロック暗号は、例えばＤＥＳでは６４ビットである一定数のビットの平分Ｐを同サイズの暗号文Ｃに変換する。この変換は、例えばＤＥＳでは５６ビット、トリプルＤＥＳでは１６８ビットである鍵によって制御される。ホワイトボックス暗号法は、攻撃者が実装から鍵を取り出し難くすることを目標の１つとしている。ソフトウェア実装への多くの攻撃は、内部変数を符号化し、例えばテーブルネットワークの形のテーブルによって符号化された変数に作用することによって阻止することができる。テーブルは、変数の符号化に適応されているため、これは依然として同じ結果をもたらす。
【００３１】
ホワイトボックス環境における鍵への特に強力な攻撃は、差分故障解析に基づいている。攻撃者は、暗号の適当な内部変数を改変し、結果として生じる暗号文の変化を観察する。攻撃者は、暗号アルゴリズムの詳細を知っていることにより、鍵をすばやく取り出すことができてしまう。故障攻撃は、内部変数の符号化をバイパスするので、ホワイトボックス実装において特に厄介である。ホワイトボックス実装の出力に生じた故障の種類から鍵が推測される。
【００３２】
暗号デバイス１００は更に、第１の制御ユニット１３０を含む。制御ユニットは、図１ａ及び図１ｂを参照して説明される第１の制御ユニット１３０及びマスキング制御ユニット１３１によって説明される。
【００３３】
制御ユニット１３０といった制御ユニットは、入力として、第１の値及び第２の値を取り、第１の値及び第２の値が同じである場合にのみ、第１の値を生成する。この場合、第１の制御ユニット１３０は、入力として、第１のブロック暗号結果Ｃ１及び第２のブロック暗号結果Ｃ２を取る。
【００３４】
制御ユニットは、第１の値及び第２の値に第１の結合関数を適用することによって第１の値と第２の値とを組み合わせ、比較値が得られる。当該結合関数は、第１の値及び第２の値が同じである場合にのみ、所定値に等しい。例えば第１の比較関数は、第１の比較テーブル又はテーブルネットワークとして実装される。図１ａに示されるように、第１の比較関数は、第１の比較関数ユニット１４０として実装される。第１の比較関数ユニット１４０は、入力として、第１及び第２の値を受信し、出力として、所定の比較値を生成する。
【００３５】
比較関数の実装には多くのやり方がある。以下において、Ｃ１及びＣ２を使用して、第１及び第２の入力値が表される。
【００３６】
例えば第１の比較関数１４０は、第１の値及び第２の値の排他的ＯＲ（ＸＯＲ）：
【数１】
0006517438.tif 000002
であってよい。
【００３７】
比較は、差、例えばＣ１−Ｃ２であってよい。当該差は、例えば２の補数で表されるか、又は、モジュラスを法として計算される。例えば第１の結合関数の少なくとも一部は、第１の値の少なくとも一部と第２の値の少なくとも一部との算術差によって形成される。例えばＣ１＝（ｃ１，１、ｃ１，２、…、ｃ１，ｎ）及びＣ２＝（ｃ２，１、ｃ２，２、…、ｃ２，ｎ）とする。ここで、小文字のｃは、第１の値及び第２の値の部分をそれぞれ表す。例えば一部分は、バイト、ニブル等であってよい。第１の比較関数は（ｃ１，１−ｃ２，１、ｃ１，２−ｃ２，２、…、ｃ１，ｎ−ｃ２、ｎ）、即ち、第１の値と第２との値の部分毎の差であってよい。差は、モジュラスを法としてよく、例えば２の上記部分のビットサイズのべき乗を法としてよい。差は絶対差等であってよい。
【００３８】
比較関数１４０は、関数ｃｏｍｂ（Ｃ１，Ｃ２）であってよい。第１の比較関数１４０は、複数のサブ関数ｆｉから構成されてよい。例えば第１の比較関数は（ｆ１（ｃ１，１，ｃ２，１）、ｆ２（ｃ１，２，ｃ２，２）、…、ｆｎ（ｃ１，ｎ，ｃ２，ｎ））である。複数のサブ関数は、第１の部分及び第２の部分が同じである場合にのみ、所定値に等しいという特性を有する。サブ関数は、ルックアップテーブルとして実装されてよい。
【００３９】
好適には、関数ｆｉは、ｆｉ（ｘ，ｘ）が定数関数であり、ｆ（ｘ，ｙ）及びｆ（ｙ，ｘ）が任意の固定ｙ及び変数ｘの全単射であるという特性を有する。
【００４０】
最初の行及び列に与えられた２つのビット値に作用するサブ関数の一例を以下に示す。なお、サブ関数は、どの座標においても全単射である。
【表１】
0006517438.tif 000003
【００４１】
このようなテーブルは、まず、主対角線を所定値で埋め、残りを乱数で埋め、全単射条件が壊れるならば、戻ることによって、簡単に作成される。
【００４２】
所定値はゼロ（０）であってよい。所定値は、任意の他の値、例えばδであってよい。０を所定値とする第１の比較関数を所与とすると、第１の比較関数は、任意の他の固定値、例えばｆ＋δ又は
【数２】
0006517438.tif 000004
等及びこの反対について作成される。以下では、所定値は０と仮定するが、当業者は、所定値が任意の所望値であってよいことに留意されたい。
【００４３】
制御ユニットは更に、補助ブロック暗号１４２を含む。補助ブロック暗号１４２は、任意のブロック暗号Ｂ１、例えばＤＥＳ、ＡＥＳ等であってよい。補助ブロック暗号１４２が、ターゲットブロック暗号と同じ構造を有すれば好都合である。通常、同じ構造のブロック暗号は、ターゲットブロック暗号のパラメータを改変する（例えばＳボックスを改変する、線形演算子又は置換等を改変する）ことによって得られる。同様の構造の補助ブロック暗号は更に、その鍵を改変することによっても得られる。例えば鍵を違う鍵で置換することによって得られる。補助ブロック暗号及びターゲットブロック暗号は同一で、同じ鍵を使用するが異なる符号化を用いてよい。例えば鍵符号化のために補助ブロック暗号において使用される符号化が異なる（例えばランダムに選択される）場合、事実上、補助ブロック暗号において使用される鍵は、ターゲットブロック暗号において使用される鍵と無関係である。
【００４４】
補助ブロック暗号１４２は、比較値に対して計算され、これにより、計算された制御値Δｃｏｍｐが得られる。第１又は第２のブロック暗号ユニットにおいて故障が生じていなければ、補助ブロック暗号１４２は、所定値（例えばＢ１（０））に対して計算される。したがって、故障が生じていなければ、計算された制御値Δｃｏｍｐが分かる。故障が生じなかった場合の計算された制御値の既知値は、例えば暗号デバイスを用いて、例えばストレージ１６０に記憶される。記憶された制御値は符号化されてよい。
【００４５】
補助ブロック暗号は、ブロック暗号ユニットによって実装されてよい。
【００４６】
制御ユニットは、例えば第２の結合関数ユニットに実装される第２の結合関数１５０を含む。第２の結合関数１５０は、第１のブロック暗号ユニット１２１によって計算された第１の値と、第１の比較関数１４０によって計算された計算制御値Δｃｏｍｐと、記憶された制御値Δｓｔｏｒｅとを組み合わせる。第２の結合関数１５０は、計算された制御値Δｃｏｍｐが記憶された制御値Δｓｔｏｒｅと同じである場合にのみ、第１の値を生成する。
【００４７】
例えば第２の結合関数は、第１の比較関数から作成される。例えばｇが第２の結合関数を示し、ｆが所定値０を有する第１の結合関数を示す場合、例えば
【数３】
0006517438.tif 000005
又は
【数４】
0006517438.tif 000006
等を取る。ここでは、ｘは、場合によってはマスキングされた形式にある第１の値を示す。
【００４８】
第１の比較関数について上記されたように、第２の比較関数の例には、次が含まれる。
【００４９】
例えば第２の結合関数は、第１の値又はマスキングされた第１の値、計算された制御値（Δｃｏｍｐ）及び記憶された制御値（Δｓｔｏｒｅ）の排他的ＯＲ（ＸＯＲ）である。ＸＯＲの順番を変えてもよく、例えば
【数５】
0006517438.tif 000007
、
【数６】
0006517438.tif 000008
又は
【数７】
0006517438.tif 000009
等に変えてもよい。
【００５０】
例えば第２の結合関数の少なくとも一部は、第１の値又はマスキングされた第１の値の少なくとも一部と、計算された制御値（Δｃｏｍｐ）の少なくとも一部との合計から、記憶された制御値（Δｓｔｏｒｅ）の少なくとも一部を引いたものによって形成されてよい。
【００５１】
例えば第２の結合関数の少なくとも一部は、第１の値又はマスキングされた第１の値の少なくとも一部と、記憶された制御値（Δｓｔｏｒｅ）の少なくとも一部との合計から、計算された制御値（Δｃｏｍｐ）の少なくとも一部を引いたものによって形成されてよい。
【００５２】
例えば第２の結合関数の少なくとも一部は、第１の値又はマスキングされた第１の値の少なくとも一部と、計算された制御値（Δｃｏｍｐ）の少なくとも一部と、記憶された制御値（Δｓｔｏｒｅ）の少なくとも一部とにルックアップテーブルを適用することによって形成されてよい。ルックアップテーブルは、計算された制御値（Δｃｏｍｐ）の少なくとも一部と、記憶された制御値（Δｓｔｏｒｅ）の少なくとも一部とが同じである場合に、第１の値又はマスキングされた第１の値の少なくとも一部を与える。
【００５３】
第２の比較関数は、制御関数の出力のＤＦＡに対する感度を低下させる要因の１つである。ＤＦＡ攻撃の影響を受け易いシステムでは、特定の故障が注入された場合に戻される故障値によって、攻撃者が、鍵に関する情報を抽出することを可能にする。これは、例えば故障結果と機密情報（例えば鍵）との間に関係があることによる。暗号デバイスでは、攻撃者は、攻撃者が受信する値が真の故障回答（faulty answer）ではないため、ＤＦＡ攻撃の解析フェーズをうまく実行することができない。疑似故障出力を与えることによって、攻撃者は、鍵に関する機密情報を得ることができない。真の故障出力は、複数の関連した故障が正確に正しい場所に注入された場合にのみ、与えられる。故障をどこに注入し、故障出力を使用して鍵に関する情報が得られるように注入された故障をどのように関連付けるかを見つけ出すことは、難しい。
【００５４】
例えば、また、具体的には、単一の故障しか生じなかった場合、値は依然として伝搬されるが、真の故障値ではない。故障の詳細は更に、補助ブロック暗号によってマスキングされる。
【００５５】
範囲内のすべてのｘ及びｙについて、最初に、ｇ（ｘ，ｙ，ｚ）＝ｘと設定し、テーブルの残りを乱数で埋めることによって、第２の比較関数ｇ（ｘ，ｙ，ｚ）もテーブルとして作成される。一実施形態では、第２の比較関数もどの座標においても全単射である。つまり、３つのパラメータのうち２つを固定したままにすることによって、残りの変数が変化できる場合、関数ｇ（ｘ，ｙ，ｚ）は全単射である。ここでは、ｘは第１の値であり、ｙは計算された比較値であり、ｚは記憶された比較値である。この条件は、例えば全単射条件が満たされない場合に戻すことによって、作成されたテーブルに課される。
【００５６】
第２の比較関数が全単射条件を満たすことによって、攻撃者が採用しうる構造が回避される。特に、ｘ及びｚが任意であるが固定値であるならば、ｇ（ｘ，ｙ，ｚ）は全単射であるという条件は、第１の比較関数の２つの全単射条件と組み合わせて、故障回答を効果的にランダム化させる。任意のエラーが第１の比較値に反映される。当該エラーは、この結果、マスキングブロック暗号なしでも、補助ブロック暗号を介してランダム化される。ランダム化された計算制御値は、次に、第１の値をランダム化させる。例えばＸＯＲ又は差に基づく与えられた例は、この条件を満たす。
【００５７】
第１の制御関数１３０の場合、第１のブロック暗号結果Ｃ１は、故障が生じなければ生成される。ブロック暗号ユニット１２１又は１２２において故障が生じた場合、又は、両方において異なる故障が生じた場合、比較値は、所定の比較値と同じにはならない。この場合、計算された制御値は、記憶された制御値と同じにはならない。最後に、第２の結合関数は、第１のブロック暗号結果を生成しない。したがって、攻撃者は、ＤＦＡ攻撃において第１のブロック暗号結果を使用することができない。
【００５８】
記憶制御値は、ストレージユニット１６０に記憶されてよい。例えばストレージユニット１６０は、メモリ又は他の電子ストレージである。例えばストレージユニット１６０は、値Ｂ１（０）を記憶する。
【００５９】
図１ｂは、暗号デバイス１０１の一実施形態の一例を概略的に示す。暗号デバイス１０１は、制御ユニット１３０の代わりにマスキング制御ユニット１３１が使用される点で、暗号デバイス１００とは異なる。マスキング制御ユニット１３１は、マスキングブロック暗号１４１が追加されることを除き、制御ユニット１３０と同じである。通常、マスキング制御ユニットは、第１の値に対してマスキングブロック暗号を計算し、したがって、マスキングされた形式の第１の値が得られる。
【００６０】
マスキングブロック暗号１４１は、第１の値に対してマスキングブロック暗号Ｂｍを計算し、したがって、マスキングされた形式の第１の値（例えばＢｍ（Ｃ１））が得られる。図１ｂの場合、第１の値は、第１のブロック暗号結果Ｃ１である。マスキングブロック暗号１４１は、第１の比較関数１４０には何も影響を及ぼさない。第２の結合関数１５０は、今度は、マスキングブロック暗号１４１によって計算されたマスキングされた形式の第１の値（例えばＢｍ（Ｃ１））と、第１の比較関数１４０によって計算された計算制御値Δｃｏｍｐと、記憶された制御値Δｓｔｏｒｅとを組み合わせる。なお、図１ｂにおける記憶された制御値Δｓｔｏｒｅは、図１ａと同じである。これは、記憶された制御値Δｓｔｏｒｅが、補助ブロック暗号に依存するが、マスキングブロック暗号には依存しないことによる。
【００６１】
図１ｂにおいて、結果として、故障が生じなければ、制御ユニット１３１は、マスキングされた第１のブロック暗号結果Ｂｍ（Ｃ１）を生成する。以下に説明されるように、マスキング制御関数が様々な入力（例えばブロック暗号結果ではなく、例えば他の制御ユニットの出力）に使用されるならば、また、マスキングブロック暗号について適切な選択がなされるならば、マスキング制御ユニットは更に、マスキングを追加するのではなく、入力からマスキングを外すことができる。
【００６２】
マスキングブロック暗号１４１は更に、故障の場合、制御ユニット１３１の結果を効果的にランダム化させる。故障の場合、攻撃者は、マスキングされた第１のブロック暗号結果を受信しない。興味深いことに、第２の結合関数１５０が、マスキングされた第１のブロック暗号結果に近い、例えば数ビット以内の結果を生成する場合であっても、出力はマスキングブロック暗号によって暗号化されているので、当該出力は依然としてほとんど情報を有さない。例えば攻撃者がマスキングブロック暗号ユニット１４１の復号ユニットへのアクセスを有していたとしても（通常は有さないが）、同様の値の復号は、故障第１のブロック暗号結果とは完全に異なる。後者は、ブロック暗号の入力における小さいビット変更が、その出力における大きい差につながることにより起きる。
【００６３】
制御ユニット１３１の出力は、例えばメッセージを暗号化形式で格納するために、そのまま使用されてもよい。この場合、当該メッセージが復号されると、マスキングブロック暗号が最初に反転され、次に、ターゲットブロック暗号が復号される。図２、図３及び図４は、マスキング制御ユニットが使用される更なる方法を示す。例えば図２は、マスキング制御ユニット１３１の後に、第１のマスキング制御ユニットの結果に対して、マスキングブロック暗号の逆元
【数８】
0006517438.tif 000010
を計算する更なるブロック暗号ユニット１３５が続くことを除き、暗号デバイス１０１と同じである暗号デバイス１０２を示す。
【００６４】
暗号デバイス１０２では、マスキングなしで、例えば暗号化又は復号関数であるターゲットブロック暗号の結果が生成される。マスキングブロック暗号を用いた暗号化及び復号の演算は、第２の比較関数の効果を、ブロック暗号結果全体にわたって分布させる。
【００６５】
一実施形態では、マスキングブロック暗号１４１及び補助ブロック暗号１４２は同じ構造を有する。マスキングブロック暗号Ｂｍ及び補助ブロック暗号Ｂ１は同じブロック暗号であってもよい。
【００６６】
一実施形態では、マスキングブロック暗号１４１、補助ブロック暗号１４２及びターゲットブロック暗号はすべて同じ構造を有する。これは、攻撃者がターゲットブロック暗号をマスキング及び補助ブロック暗号から区別することを、特に計算が、例えばホワイトボックス実装において符号化された変数に対してテーブルネットワークによって行われたならば、非常に難しくする。
【００６７】
一実施形態では、ターゲットブロック暗号Ｂｔは、複数のブロック暗号ラウンドを含む。ブロック暗号ユニット１２１及び１２２におけるターゲットブロック暗号の実装は、複数のブロック暗号ラウンドにおいて、１つ以上のダミーラウンドを含む。ダミーラウンドは、計算を行うが、ブロック暗号計算の最終結果には影響を及ぼさない。ブロック暗号ラウンド及びダミーラウンド及びブロック暗号ラウンドは共に、ラウンドのシーケンスを形成する。ラウンドのシーケンスは、複数のブロック暗号ラウンドと、ブロック暗号ラウンドに散在する１つ以上のダミーラウンドとを含む。
【００６８】
例えばダミーラウンドは、最終結果がそれには依存しない変数を更新する。ダミーラウンドを導入するより効果的なやり方は、ダミーラウンドをダミーラウンドの逆元と一致させるやり方である。ダミーラウンドは、ブロック暗号の任意のラウンドを選択することによって作ることができる。例えば第１又は第２のブロック暗号ユニットにおけるターゲットブロック暗号（Ｂｔ）におけるラウンドシーケンスは、ダミーラウンドと、当該ダミーランドの逆元とを、例えば連続して含む。
【００６９】
一実施形態では、第１のブロック暗号ユニットのシーケンスにおける最後のブロック暗号ラウンドは、第２のブロック暗号ユニットのシーケンスにおける最後のブロック暗号ラウンドとアラインしていない。例えばラウンドシーケンスにおけるラウンドは、シーケンスにおけるその場所を示すラウンド番号又はインデックスを有する。第１のブロック暗号ユニット１２１及び第２のブロック暗号ユニット１２２におけるラウンドシーケンスにおける最後のブロック暗号ラウンドのラウンド番号は異なる。
【００７０】
例えばこれは、ユニット１２１及び１２２において次の２つのラウンドシーケンスを使用することによって達成される。ここでは、シーケンスは、例えばＤＥＳにあるように、１６のブロック暗号ラウンドを有すると仮定される。図５の表は、ユニット１２１及び１２２の例示的なラウンドシーケンスを示す。図示される例では、暗号ラウンドは番号によって示され、文字はダミーラウンドを示し、プライム記号は逆元を示す。
【００７１】
なお、図５ａでは、ブロック暗号の最終ラウンド、即ち、ラウンド１６は、２つのシーケンスにおいてアラインしていない。ブロック暗号ユニット１２１では、最終ブロック暗号ラウンドは、インデックス２２を有する。ブロック暗号ユニット１２２では、最終ブロック暗号ラウンドは、インデックス２４を有する。これらの２つのインデックスは異なる。なお、最後から２番目のラウンド（ここでの場合、ラウンド１５）のインデックスもアラインしておらず、インデックス２１及び２３をそれぞれ有する。発明者は、最後から２番目のラウンドも、特にＤＥＳ及びトリプルＤＥＳの場合に、ＤＦＡに弱いことを見出した。ラウンドシーケンスは、ダミーラウンドを含む。幾つかのダミーラウンドのすぐ後にそれらの逆元が続く。例えばインデックス１４を有するダミーラウンドｃである。シーケンスは更に、ａｂｂ’ａ’といったパターン、例えば第１のダミーラウンド、第２のダミーラウンド、その後に第２のダミーラウンドの逆元、第１のダミーラウンドの逆元が続くパターンを含む。
【００７２】
図５ａの例では、第１及び第２のブロック暗号の最終結果は同じである。一実施形態では、第１及び第２のブロック暗号の最終ラウンドの結果は結合符号化され、好適には、攻撃者に対して情報を全く又はほとんど明らかにすることがないはずである。しかし、潜在的なリスクは、２つの同一値の結合符号化がシステム全体の最終アウトカムと相関する可能性がある点である。高度な攻撃では、攻撃者は、システムを何回も実行し、最終結果と相関するすべての中間データを特定する可能性がある。これは、翻って、第１及び第２のブロック暗号の最終（ダミー）ラウンドが計算されたテーブルネットワークにおける場所を明らかにする。これは、攻撃者がこの情報へのアクセスを有するという状況は、通常、望ましくない。
【００７３】
保護を向上させるために、図５ｂを参照して以下に説明される対策が使用される。実際には、幾つかの場合では、例えば競合リソース要件により、より弱い符号化の方が好まれることがある。このような場合、次の実施形態も有益である。図５ｂは、図５ａと同様に、ダミーラウンドと共にブロック暗号ラウンドのシーケンスを示す。
【００７４】
図５ａにあるように、図５ｂの実施形態でも、第１及び第２のブロック暗号の最終ラウンドは、アラインしないように配置される。第１及び第２のブロック暗号の最終ラウンドの結果をＣと呼ぶ。暗号文Ｃは、両方のブランチ、即ち、第１及び第２のブロック暗号において計算されるが、アラインされず、同じラウンド内にない。Ｃが計算されると、各ブランチにおいて更なる非自明な計算が行われる。例えばランダム鍵を用いたＤＥＳ又はＡＥＳの幾つかの追加ラウンドは、暗号文Ｇをもたらす。図５ａとの相違点は、最終ラウンドの後のダミーラウンドの均衡が取れていない点である。図５ｂの例では、ユニット１２１は、４つの更なるダミーラウンドを実行し、ユニット１２２は、２つの追加のダミーラウンドを実行する。ダミーラウンドは、ユニット１２１及び１２２が全部で同数のラウンドを実行するように選択される。更に、ダミーラウンドは、同じ入力に対して、同じ出力を生成するように選択される。図５ｂの例では、ダミーラウンドは、同じユニットにおいて逆元にされている（例えばユニット１２１におけるダミーラウンドｄ及びｄ’）か、別のユニットにおいて複製されている（例えばダミーラウンドｇ）。なお、ダミーラウンドの均衡は取れていない。図５ｂにおけるラウンド２６が、ｇではなくｇ’を使用したならば、システムの均衡が取られ、両者は、図５ａにあるように、暗号文Ｃを生成するが、実際には、両者は異なる暗号文Ｇを生成する。なお、ラウンド２６は、省略されても、違うダミーラウンドで置換されてもよい。より多くのダミーラウンドも可能である。異なる暗号文Ｇは、図５ｂの場合、ｇ（ｇ（Ｃ））として、正しい暗号文Ｃの暗号化されたバージョンと見なされる。
【００７５】
ダミーラウンドを使用して、Ｇの計算又はアラインされる。したがって、故障が生じなければ、両ユニットは、同じ値Ｇを生成する。この場合、後続する第１の制御ユニット１３０において、差（例えばＸＯＲ等）が２つのブランチから取られる。故障が生じなければ、図５ａにあるように、差は０である。補助ブロック暗号１４２は、比較値に作用し、上記されたように、計算された制御値Δｃｏｍｐが得られる。マスキングブロック暗号１４１において、均衡の取れていないダミーラウンドは、新しいダミーラウンドとして、マスキングブロック暗号１４１の始まりにおいて逆元にされる。図５ｂの例では、マスキングブロック暗号１４１は、２つのダミーラウンドｇ’で開始する。マスキングブロック暗号１４１の始まりに挿入されるダミーラウンドは、例えばユニット１２１又はユニット１２２のどちらかにおいてＣを計算した最終ブロック暗号ラウンド後に生じたダミーラウンドを逆元にすることによって、挿入されたダミーラウンドの終わりにおいて、暗号文Ｃが得られるように選択される。
【００７６】
追加のダミーラウンドは、暗号文Ｃが結合符号化において生じることを回避する。ユニット１２１及び１２２の終わりにおける結合符号化は、追加のダミーラウンド（例えばダミーラウンドｇ）によって相関している度合いはかなり少ない。暗号文Ｃは、例えばユニット１２１及び１２２におけるラウンド２２及び２４の後の計算において依然として生じるが、ここでは、暗号文Ｃは、それ自身と結合符号化されていないので、相関の可能性はかなり少ない。
【００７７】
図１ａ〜図１ｃ及び図２の暗号デバイスでは、ブロック暗号ユニット１２１及び１２２において同じ故障を実行することによって、ＤＦＡ対策が回避されてしまう可能性がある。アラインされていないラウンドがあることによって、故障を導入する２つの位置が同じ位置に置かれないことが確実にされる。ホワイトボックス実装において故障を導入するための適切な場所を見つけることは既に難しいが、このような場所を２つ見つけなければならない場合、作業量はかなり増加する。攻撃者は、同じ実行中に、すべての故障を正しく実行したならば、故障を正しく実行したということのみを認識することができる。
【００７８】
一実施形態では、暗号デバイスの変数は符号化される。具体的には、第１のブロック暗号ユニットにおけるターゲットブロック暗号Ｂｔのシーケンスにおけるラウンドの第１の変数が、第２のブロック暗号ユニットにおけるターゲットブロック暗号Ｂｔのシーケンスにおける同じラウンドにおける対応する第２の変数と結合符号化される。
【００７９】
例えば第１のブロック暗号ユニットにおけるターゲットブロック暗号（Ｂｔ）のシーケンスにおけるラウンドの第１の変数ｘが、第２のブロック暗号ユニットにおけるターゲットブロック暗号（Ｂｔ）のシーケンスにおける同じラウンドにおける対応する第２の変数ｘ２と結合符号化される。マスキングブロック暗号及び補助ブロック暗号についても同じことが行われてよい。変数は、例えばニブル又はバイト等である。
【００８０】
結合符号化された２つの変数は、これらの変数へのＤＦＡ攻撃実行を難しくする。一実施形態では、第１及び第２のブロック暗号ユニット又はマスキング及び補助ブロック暗号ユニットにおける複数の、又は、更には、すべての変数が結合符号化されてもよい。
【００８１】
例えば図５ａを参照するに、ブロック暗号ユニット１２１のラウンド２６の変数（ｄ’）は、ブロック暗号ユニット１２２のラウンド２６の変数（ｊ’）と結合符号化されてよい。対応する変数が同じ相対位置に生じる。ターゲットブロック暗号ユニットの場合、対応する変数は、同じデータにも作用する。マスキング及び補助ブロック暗号の場合、対応する変数は、異なるデータに作用してもよい。
【００８２】
結合符号化は、変数の変化が、通常、他のブロック暗号における対応する変数の変化を誘発するという利点を有する。例えば変数は、ｘ＝Ｅｎｃ（ｘ１，ｘ２）と符号化される。ここでは、Ｅｎｃは符号化を示す。例えば符号化は、例えばコンパイル時に選択されたランダムに選択された全単射マッピングである。一実施形態では、第１及び第２のブロック暗号ユニットは、結合符号化された変数に作用する。
【００８３】
例えばｘ１に作用する演算Ｔ１と、ｘ２に作用する演算Ｔ２とは、次の通りに演算Ｔによって一緒に行われてよい。Ｔ（ｘ）＝Ｅｎｃ（Ｔ１（τ１（ｘ）），Ｔ２（τ２（ｘ）））。後者の式において、τ１及びτ２はｘの復号を示し、したがって、ｘ＝Ｅｎｃ（τ１（ｘ），τ２（ｘ））。
【００８４】
故障がｘを改変するならば、可能性は低いが、幾つかの改変されたｘ１について、当該故障が偶然にＥｎｃ（ｘ’１，ｘ２）に対応しない限り、ｘ１及びｘ２の両方が影響を受ける可能性がある。
【００８５】
更に、第１及び第２の比較関数は、符号化されたデータに対して行われる。例えば第１の比較関数ｆ（ｘ１，ｘ２）は、Ｅｎｃ（τ１（ｘ），ｆ（τ１（ｘ），τ２（ｘ）））として、符号化された領域に引き上げられる。後者は、単一テーブルとして実装される。
【００８６】
ｘの符号化は、いわゆる状態変数も含む。状態変数は、符号化に更なる冗長データを導入する。例えばｘ＝Ｅｎｃ（ｘ１，ｘ２，ｓ）において、ｓが状態変数である。具体的には、変数ｘ１、ｘ２は、複数のシェア（share）
【数９】
0006517438.tif 000011
及び
【数１０】
0006517438.tif 000012
にわたって分布し、したがって、
【数１１】
0006517438.tif 000013
である。和は、ＸＯＲ演算又は算術的合計等であってよい。変数ｘ１、ｘ２は、今度は、複数の符号化されたシェア（ｘｊ）として符号化される。符号化されたシェアは、符号化
【数１２】
0006517438.tif 000014
である。
【００８７】
例えば暗号デバイスは、符号化された形式の複数の変数を記憶するデータストアを含む。暗号デバイスは、当該変数に作用して、少なくともターゲットブロック暗号を計算する。暗号デバイスは更に、複数のルックアップテーブルを記憶するテーブルストアを含む。ルックアップテーブルは、１つ以上の変数の１つ以上の符号化されたシェアを入力として取り、複数のルックアップテーブルは共に、少なくともターゲットブロック暗号を実装するテーブルネットワークを形成する。一実施形態では、マスキングブロック暗号の変数は、補助ブロック暗号の変数と結合符号化される。複数のルックアップテーブルは更に、暗号デバイスの残り、例えばマスキング及び補助ブロック暗号並びに第１及び第２の制御関数を実装する。
【００８８】
データストア及びテーブルストアは、ストレージユニット１６０と組み合わされてよい。データストアは、揮発性メモリであり、テーブルストア及びストレージユニットは、揮発性又は不揮発性メモリであってよい。
【００８９】
ターゲットブロック暗号が同じ構造を有するならば、結合符号化はより簡単であり、マスキング及び補助ブロック暗号も同様である。例えば第１のブロック暗号における各変数が第２のブロック暗号における対応する変数を有する場合である。
【００９０】
ターゲットブロック暗号、補助ブロック暗号及びマスキングブロック暗号は、例えば部分評価によって暗号に埋め込まれた固定鍵を有してよい。これらの暗号は更に、例えばメモリであるストレージから読み出される又は受信される非固定鍵を使用してもよい。鍵は、変数と同様に、符号化されてよい。
【００９１】
テーブルネットワークは、ホワイトボックス暗号法自体から知られている。例えばＣｈｏｗによる上記論文又はこれもＣｈｏｗ他による「White-box cryptography and an AES implementation」（参照することにより本明細書に組み込まれる）を参照されたい。テーブルネットワークは、１つ以上の入力を受信し、１つ以上の出力を生成する。１つのテーブルネットワークにおいて、例えばテーブルストレージに記憶されている複数のルックアップテーブルが使用される。テーブルは、他のテーブルの入力及び／又は出力から直接入力を取る。テーブルは、１つの入力、２つの入力又は３つ以上の入力を取ってよい。
【００９２】
未符号化変数ｗの計算を、複数のシェア（これらもテーブルネットワークとして実装されてよい）として符号化された変数ｗの計算に変換する好都合なやり方は、Ｃａｒｌｅｔ他による「Higher-Order Masking Schemes for S-boxes」（参照することにより本明細書に組み込まれる）に記載されている。
【００９３】
一実施形態において、暗号デバイスは、
−それぞれ、入力メッセージに対してターゲットブロック暗号（Ｂｔ）を計算し、ブロック暗号結果（Ｃｉ）が得られる複数のブロック暗号ユニットと、
−複数のブロック暗号ユニットのブロック暗号結果（Ｃｉ）の２つのブロック暗号結果を入力として取る１つ以上の第１の制御ユニットと、
−第１の制御ユニットの結果を組み合わせて最終ブロック暗号結果を生成する１つ以上の第２の制御ユニットと、
を含み、最終ブロック暗号結果は、複数のブロック暗号ユニットのすべてのブロック暗号結果（Ｃｉ）が同じである場合にのみ、複数のブロック暗号ユニットの第１のブロック暗号ユニットのブロック暗号結果と同じである。一実施形態では、第１の制御ユニットの数は３以上である。図３、図４ａ及び図４ｂに、このタイプの実施形態が示されている。
【００９４】
図３は、暗号デバイス２００の一実施形態の一例を概略的に示す。
【００９５】
暗号デバイス２００は、図１ｂに示されるように、第１のブロック暗号ユニット１２１と、第２のブロック暗号ユニット１２２と、制御ユニット１３１とを含む。暗号デバイス２００は更に、
−入力メッセージに対してターゲットブロック暗号Ｂｔを計算し、第３の値Ｃ３を得る第３のブロック暗号ユニット１２３と、
−入力メッセージに対してターゲットブロック暗号Ｂｔを計算し、第４の値Ｃ４を得る第４のブロック暗号ユニット１２４とを含む。
【００９６】
故障が生じなければ、複数のブロック暗号ユニットのそれぞれは、同じブロック暗号結果を生成する。なお、ブロック暗号ユニットのそれぞれは、異なる符号化を使用してよい。したがって、これらの値が同じであることは、暗号デバイスによって使用される符号化へのアクセスを有する場合にのみ確認することができる。通常、攻撃者には、暗号デバイス２００を作成（例えばコンパイル）するために使用された符号化へのアクセスは提供されない。
【００９７】
暗号デバイス２００は、第３のブロック暗号結果Ｃ３と第４のブロック暗号結果Ｃ４とを入力として取る第２のマスキング制御ユニット２３０を含む。
【００９８】
マスキング制御ユニット２３０は、第２の結合関数２４０と、マスキングブロック暗号ユニット２４１と、補助ブロック暗号ユニット２４２と、第２の結合関数２５０とを含む。第２の制御ユニット２３０の制御部は、マスキング制御ユニット１３１のそれとは異なってよい。例えば異なる補助ブロック暗号ユニット２４２並びに異なる第１及び／又は第２の結合関数が使用されてよい。しかし、マスキングブロック暗号２４１は、マスキングブロック暗号１４１と同じに選択され、したがって、故障が生じなければ、両方のマスキング制御関数１３１及び２３０は同じ値（例えばマスキングされた形式の第１のブロック暗号結果（Ｂｍ（Ｃ１））を生成する。ここでも、マスキング制御ユニット１３１及び２３０において使用される異なる符号化によって、これは、攻撃者には直接的には可視ではない。
【００９９】
マスキング制御ユニット２３０が、マスキング制御ユニット１３１と同じ第１の結合関数、補助ブロック暗号と、符号化とを使用するならば、記憶された制御値（Δｓｔｏｒｅ）は、マスキング制御ユニット１３１及び２３０間で共有される。
【０１００】
暗号デバイス２００は更に、第１のマスキング制御ユニットの結果と、第２のマスキング制御ユニットの結果とを入力として取る第３のマスキング制御ユニット３３０を含み、第３のマスキングユニットは、第１及び第２のマスキング制御ユニットのマスキングブロック暗号の逆元を使用する。なお、暗号デバイス２００及び暗号デバイス１０２の両方において、制御ユニット１３１の後に、マスキングブロック暗号の逆元が続く。
【０１０１】
マスキング制御ユニット３３０は、第２の結合関数３４０と、マスキングブロック暗号ユニット３４１と、補助ブロック暗号ユニット３４２と、第２の結合関数３５０とを含む。マスキングブロック暗号ユニット３４１は、マスキング制御ユニット１３１及び２３０のマスキングブロック暗号１４１及び２４１の逆元を使用する。
【０１０２】
どのブロック暗号ユニット１２１〜１２４においても故障が生じなければ、制御ユニット１３１及び２３０は共に、マスキングされた形式の同じブロック暗号結果を生成する。この場合、マスキング制御ユニット３３０は、マスキングブロック暗号結果の逆元を通じてマスキングを外し、ブロック暗号結果を生成する。
【０１０３】
ブロック暗号ユニット１２１〜１２４の何れか１つが、故障によって間違ったブロック暗号結果を生成するならば、対応する制御ユニット１３１又は２３０は、間違ったマスキングされたブロック暗号結果を生成する。間違ったマスキングされたブロック暗号結果は、次に、マスキング制御ユニット３３０に間違った結果を生成させる。
【０１０４】
マスキング制御ユニット２３０及び３３０は、マスキング制御ユニット１３１について上記されたように実装される。例えば第１及び第２の結合関数は、ｘｏｒであり、変数は結合符号化され、ラウンドはアラインされる必要はない。
【０１０５】
攻撃者は、ブロック暗号ユニット１２１〜１２４のうちの１つにおけるターゲットブロック暗号の最後のラウンド入力の変数（例えばニブル）を改変することを望んでいるとする。攻撃者は、マスキング制御ユニット３３０の出力部において受信された暗号文出力において観察された変化に基づき、鍵に関して結論を引き出すことを望む。例えばこの時点において、出力は、例えばターゲットブロック暗号が例えばレンダリングを意図したコンテンツの復号である場合、符号化されていない。攻撃者によってなされた変更が意味を持つには、攻撃者は、４つのブロック暗号ユニット１２１〜１２４のすべてが同じＣ’となるように、４つのブロック暗号ユニット１２１〜１２４のすべてを同じように「ヒット」しなければならない。攻撃者はこれができなければ、例えばマスキングブロック暗号によって、出力は攻撃者にとって意味がない。
【０１０６】
２つのブロック暗号ユニット１２１及び１２２における変数が結合符号化され、ブロック暗号ラウンドが、例えば図５ａにあるように、アラインされていないとする。次の推論は、任意のラウンドにＤＦＡを使用する任意の攻撃者に当てはまるが、提示のために、ターゲットブロック暗号のラウンド１６の始まりに故障を注入することを選択する攻撃者を検討する。図５ａには、２６のラウンドがあり、ターゲットブロック暗号の各々の１６番目のラウンドの始まりにおいて両方のターゲットブロック暗号をヒットするには、攻撃者は、ラウンド２２及び２４の始まりにおいて故障を注入しなければならない。ラウンド２４において注入された故障は、より低いブランチのみをヒットし、より高いブランチはミスしなければならず、ラウンド２２において注入された故障は、より高いブランチのみをヒットし、より低いブランチはミスしなければならない。したがって、故障が符号化されたニブルの対に対して注入されるならば、２５５２通りの可能性があるうち１５通りの可能性しか同じＣ’を与えない。
【０１０７】
ブロック暗号ユニット１２３及び１２４にも同様の推論が当てはまり、攻撃者は、ここでも、ユニット１２１及び１２２におけるのと正確に同じやり方で、ニブルをヒットする変化を２つのラウンドに適用しなければならない。２５５２通りの可能性のうちこれを行うのは１通りの可能性しかない。したがって、すべての意味のある変化を見つけるのに必要な作業量は、２５５４である。ここでは、攻撃者は、どのラウンドにおいてどの符号化されたニブルを変更しなければならないかを既に知っていると仮定する。これを見つけることは、多くの作業ではあるが、これは１回だけ行えばよい。
【０１０８】
上記作業負荷推定では、差分故障解析の作業負荷のみを考慮した。攻撃者が、（Ｃ，Ｃ）又は（Ｃ，０）対のニブル毎のすべての有効な代表（representative）を見つけることによってシステムを攻撃することを試みることが考えられる。この情報を利用して、ＤＦＡ攻撃の作業負荷は、２５５４から１５４に減少する。しかし、結合符号化が複数のシェア（例えば１６のシェア）を使用して値を符号化するならば、有効な代表の完全集合を見つけることは実行不可能となる。
【０１０９】
図４ａは、暗号デバイス４００の一実施形態の一例を概略的に示す。
【０１１０】
暗号デバイス４００は、ブロック暗号ユニット１２１〜１２８を含み、その出力は、第１の制御ユニット４３１〜４３４によって対となるように結合られる。第１の制御ユニット４３１〜４３４の結果は更に、１つの結果しか残らなくなるまで、第２の制御ユニット４３５〜４３７によって組み合わされる。
【０１１１】
例えば制御ユニット４３５及び４３６は、マスキングブロック暗号を使用しなくてよい。マスキング制御ユニット４３７は、ユニット４３１〜４３４のマスキングブロック暗号の逆元を使用してよい。或いは、制御ユニット４３５及び４３６は、更なるマスキングブロック暗号を使用してよい。マスキング制御ユニット４３７は、更なるマスキングブロック暗号の逆元を使用してよく、その後に、マスキング制御ユニット４３１〜４３４のマスキングブロック暗号の逆元が続く。
【０１１２】
ブロック暗号ユニット及び制御ユニットの数が増えるにつれて、攻撃者の作業負荷が急速に増える。
【０１１３】
図４ｂは、ブロック暗号ユニットの数が、２のべき乗ではなく、より具体的には、奇数である暗号デバイス４００の一実施形態の一例を概略的に示す。
【０１１４】
ブロック暗号ユニット１２１〜１２３は、制御ユニット４３１及び４３２によって組み合わされる。ブロック暗号結果の１つが、２つの異なる制御ユニットへの入力として使用される。一実施形態では、暗号デバイスは、同じブロック暗号ユニットからの２つの入力のうちの１つを受信する２つの異なる制御ユニットを含む。図４ｂの制御ユニットは、例えば図３にあるように構成されてよい。
【０１１５】
通常、本明細書に示される暗号デバイスは、それぞれ、デバイスに記憶された適切なソフトウェアを実行するマイクロプロセッサ（個別に図示しない）を含む。例えば当該ソフトウェアは、対応するメモリ（例えばＲＡＭといった揮発性メモリ又はフラッシュといった不揮発性メモリ）（個別に図示しない）にダウンロードされたか及び／又は記憶されている。或いは、デバイスは、全体的又は部分的に、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）としてプログラマブル論理回路に実装されてよい。デバイスは、全体的又は部分的に、いわゆる特定用途向け集積回路（ＡＳＩＣ）、即ち、特定の使用にカスタマイズされた集積回路（ＩＣ）として実装されてよい。例えば回路は、例えばＶｅｒｉｌｏｇ、ＶＨＤＬ等といったハードウェア記述言語を使用して、ＣＭＯＳに実装されてもよい。
【０１１６】
一実施形態では、暗号デバイスは、第１のブロック暗号回路と、第２のブロック暗号回路と、第１の制御回路とを含む。デバイスは、例えば第１及び／又は第２の比較回路、補助ブロック暗号回路、マスキングブロック暗号回路である追加の回路を含んでもよい。これらの回路は、第１の制御回路に含まれていてもよい。デバイスは、更なるブロック暗号回路等を含んでもよい。回路は、本明細書において説明される対応するユニットを実現する。回路は、プロセッサ回路及びストレージ回路であってよい。プロセッサ回路は、ストレージ回路内に電子的に表現される命令を実行する。回路は、ＦＰＧＡ、ＡＳＩＣ等であってもよい。
【０１１７】
図６は、入力メッセージ１１０に対してターゲットブロック暗号Ｂｔを計算する暗号方法６００を説明する概略的なフローチャートを示す。方法６００は、
−入力メッセージに対してターゲットブロック暗号Ｂｔを計算して、第１のブロック暗号結果Ｃ１を得るステップ６１０と、
−入力メッセージに対してターゲットブロック暗号Ｂｔを計算して、第２のブロック暗号結果Ｃ２を得るステップ６２０と、
−第１のブロック暗号結果及び第２のブロック暗号結果を、第１の制御動作における入力として使用するステップ６３０とを含む。
【０１１８】
制御動作は、フローチャート６０１によって説明される。制御動作は、入力として、第１の値及び第２の値を取り、第１の値及び第２の値が同じである場合にのみ、第１の値を生成する。制御動作６０１は、
−第１の値及び第２の値に第１の結合関数１４０（当該結合関数は、第１の値及び第２の値が同じである場合にのみ、所定値（例えば０又はδ）と同じである）を適用することによって、第１の値及び第２の値を組み合わせて、比較値を得るステップ６３１と、
−比較値に対して補助ブロック暗号１４２  Ｂ１を計算し、計算された制御値Δｃｏｍｐを得るステップ６３２と、
−第２の結合関数（第２の結合関数は、計算された制御値Δｃｏｍｐが記憶された制御値Δｓｔｏｒｅと同じである場合にのみ、第１の値を生成する）を適用することによって、第１の値、計算された制御値Δｃｏｍｐ及び記憶された制御値Δｓｔｏｒｅを組み合わせるステップ６３３とを含む。
【０１１９】
当業者には明らかであるように、上記方法を実行する多くの様々な方法が可能である。例えばステップの順番が変更されても、幾つかのステップが並列で実行されてもよい。更に、ステップ間に、他の方法ステップが挿入されてもよい。挿入されたステップは、本明細書において説明されたような方法の微調整を表すか、上記方法と無関係であってもよい。例えばステップ６１０及び６２０は、少なくとも部分的に並列で実行されてもよい。更に、所与のステップが、次のステップが開始するまでに完全に終了していなくてもよい。
【０１２０】
本発明による方法は、方法６００をプロセッサシステムに行わせる命令を含むソフトウェアを使用して実行されてよい。ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー（登録商標）、メモリ、光学ディスク等といった適切な記憶媒体に記憶されてよい。ソフトウェアは、信号として、電線に沿って、ワイヤレスに、又は、例えばインターネットであるデータネットワークを使用して送信されてよい。ソフトウェアは、ダウンロード及び／又はサーバ上での遠隔使用のために利用可能にされてよい。本発明による方法は、当該方法を行うように、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であるプログラマブル論理回路を設定するビットストリームを使用して実行されてもよい。
【０１２１】
当然ながら、本発明は更に、本発明を実現するように適応されたコンピュータプログラム、特に担体上又は内のコンピュータプログラムにまで及ぶ。プログラムは、ソースコード、オブジェクトコード、コード中間ソース及び部分的にコンパイルされた形式のオブジェクトコードのフォーマット、又は、本発明による方法の実装における使用に適した任意の他のフォーマットであってよい。コンピュータプログラムプロダクトに関する一実施形態は、上記方法のうちの少なくとも１つの方法の処理ステップのそれぞれに対応する実行可能な命令を含む。これらの命令は、サブルーチンに分割されるか、及び／又は、静的若しくは動的にリンクされた１つ以上のファイルに記憶されてよい。コンピュータプログラムプロダクトに関する別の実施形態は、上記システム及び／又はプロダクトのうちの少なくとも１つの手段のそれぞれに対応する実行可能な命令を含む。
【０１２２】
図７ａは、コンピュータプログラム１０２０を含む書き込み可能部１０１０を有するコンピュータ可読媒体１０００を示す。コンピュータプログラム１０２０は、一実施形態による暗号方法をプロセッサシステムに行わせる命令を含む。コンピュータプログラム１０２０は、コンピュータ可読媒体１０００上に物理的なマークとして、又は、コンピュータ可読媒体１０００の磁気化によって具現化される。しかし、任意の他の適切な実施形態も想到可能である。更に、当然ながら、コンピュータ可読媒体１０００は、ここでは光学ディスクとして示されているが、コンピュータ可読媒体１０００は、ハードディスク、固体メモリ、フラッシュメモリ等といった任意の適切なコンピュータ可読媒体であってよく、また、記録不可であっても記録可能であってもよい。コンピュータプログラム１０２０は、上記暗号方法をプロセッサシステムに行わせる命令を含む。
【０１２３】
図７ｂは、一実施形態によるプロセッサシステム１１４０の概略図を示す。プロセッサシステムは、１つ以上の集積回路１１１０を含む。図７ｂに、１つ以上の集積回路１１１０のアーキテクチャが概略的に示される。回路１１１０は、一実施形態による方法を実行する及び／又はそのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを実行する処理ユニット１１２０（例えばＣＰＵ）を含む。回路１１１０は、プログラミングコード、データ等を記憶するメモリ１１２１を含む。メモリ１１２１の一部は、読取専用であってよい。回路１１１０は、例えばアンテナ、コネクタ又は両方等である通信要素１１５０を含んでよい。回路１１１０は、上記方法において規定される処理の一部又は全部を行う専用集積回路１１２２を含んでよい。プロセッサ１１２０、メモリ１１２１、専用ＩＣ１１２２及び通信要素１１５０は、例えばバスである相互接続部１１３０を介して互いに接続される。プロセッサシステム１１１０は、アンテナ及び／又はコネクタをそれぞれ使用して接触及び／又は非接触通信向けに構成されてもよい。
【０１２４】
なお、上記実施形態は、発明を例示するものであって限定するものではなく、当業者であれば、多くの代替実施形態をデザインすることができるであろう。
【０１２５】
請求項において、括弧内の任意の参照符号は、請求項を限定するものと解釈されるべきではない。動詞「含む」及びその活用形の使用は、請求項に記載される要素又はステップ以外の要素又はステップの存在を排除しない。要素に先行する「ａ」又は「ａｎ」との冠詞は、当該要素の複数の存在を排除しない。本発明は、幾つかの異なる要素を含むハードウェアによって、また、適切にプログラミングされたコンピュータによって実装される。幾つかの手段を列挙するデバイスの請求項において、これらの手段のうちの幾つかは、同一のハードウェアによって具体化されてもよい。特定の手段が相互に異なる従属請求項に記載されているというだけで、これらの手段の組み合わせを有利に使用することができないということを示すものではない。
【０１２６】
請求項において、括弧内の参照は、実施形態の図面又は実施形態の式における参照符号を指している。これにより、請求項の理解度が増加されるが、これらの参照は、請求項を限定するものとして解釈されるべきではない。
【符号の説明】
【０１２７】
１００、１０１、１０２  暗号デバイス
１１０  入力メッセージ
１２１〜１２８  ブロック暗号ユニット
１２１  第１のブロック暗号ユニット
１２２  第２のブロック暗号ユニット
１２３  第３のブロック暗号ユニット
１２４  第４のブロック暗号ユニット
１３０  第１の制御ユニット
１３１  第１のマスキング制御ユニット
１３５  更なるブロック暗号ユニット
１４０、２４０、３４０  第１の結合関数
１４１、２４１、３４１  マスキングブロック暗号
１４２、２４２、３４２  補助ブロック暗号
１５０、２５０、３５０  第２の結合関数
１６０  ストレージユニット
２００  暗号デバイス
２３０  第２のマスキング制御ユニット
３３０  第３の制御ユニット
３３０  第３のマスキング制御ユニット
４００  暗号デバイス
４３１〜４３４  第１の制御ユニット
４３５〜４３７  第２の制御ユニット
Ｃｉ  ブロック暗号結果
Δｓｔｏｒｅ  記憶制御値
Δｃｏｍｐ  計算制御値
Ｂｔ  ターゲットブロック暗号
Ｂｍ  マスキングブロック暗号
Ｂ１  補助ブロック暗号
【図１ａ】
0006517438.tif 000015
【図１ｂ】
0006517438.tif 000016
【図２】
0006517438.tif 000017
【図３】
0006517438.tif 000018
【図４ａ】
0006517438.tif 000019
【図４ｂ】
0006517438.tif 000020
【図５ａ】
0006517438.tif 000021
【図５ｂ】
0006517438.tif 000022
【図６】
0006517438.tif 000023
【図７ａ】
0006517438.tif 000024
【図７ｂ】
0006517438.tif 000025