(57)【要約】      （修正有）【課題】弱点攻撃に対して暗号アルゴリズムＡの実行を安全にするための方法および暗号デバイスを提供する。【解決手段】暗号キーＫ０およびメッセージＭとすると、暗号アルゴリズムＡが値Ａ（Ｋ０，Ｍ）を計算するように設定されている。Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒとする。ここで、ｆとｇは２つの双射で、ｆは恒等関数とは異なっている。方法は、ａ．暗号アルゴリズムの予測される結果Ａ（Ｋ０，Ｍ）を計算すること、ｂ．暗号アルゴリズムＡを変更されたキーｆ（Ｋ０）およびメッセージｇ（Ｍ）に適用することによって、変更された結果Ａ（ｆ（Ｋ０），ｇ（Ｍ））を計算すること、ｃ．先行する２つのステップで計算された値Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒが検証されているかどうかをチェックすること、ｄ．関係Ｒが検証されない場合には、攻撃を検出することを含んでいる。【選択図】図１
2014197222.tif 000002
【特許請求の範囲】
【請求項１】
弱点攻撃に対する暗号アルゴリズムＡの実行を安全にするための方法であって、暗号キーＫ０およびメッセージＭとすると、暗号アルゴリズムＡが値Ａ（Ｋ０，Ｍ）を計算するように設定されており、Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒとすると、ここで、ｆとｇが２つの双射で、ｆが恒等関数とは異なっており、
ａ．暗号アルゴリズムの予測される結果Ａ（Ｋ０，Ｍ）を計算することと、
ｂ．暗号アルゴリズムＡを変更されたキーｆ（Ｋ０）およびメッセージｇ（Ｍ）に適用することによって、変更された結果Ａ（ｆ（Ｋ０），ｇ（Ｍ））を計算することと、
ｃ．先行する２つのステップで計算された値Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒが検証されているかどうかをチェックすることと、
ｄ．関係Ｒが検証されない場合には、攻撃を検出することとを含む、方法。
【請求項２】
双射ｆがキーＫ０のすべてのビットを反転することである、請求項１に記載の方法。
【請求項３】
双射ｇがメッセージＭのすべてのビットを反転することである、請求項１または２に記載の方法。
【請求項４】
関係Ｒが、予測された結果Ａ（Ｋ０，Ｍ）の各ビットが変更された結果Ａ（ｆ（Ｋ０），ｇ（Ｍ））の対応するビットの反転であることである、請求項１から３のいずれか一項に記載の方法。
【請求項５】
ｎ個のランダムキーＫ１．．．Ｋｎを生成し、０とｎの間の各ｉに対してＡ（Ｋｉ，Ｍ）およびＡ（ｆ（Ｋｉ），ｇ（Ｍ））をランダムな順序で計算し、Ａ（Ｋｉ，Ｍ）およびＡ（ｆ（Ｋｉ），ｇ（Ｍ））の値の各組の関係Ｒをチェックし、０とｎの間のいずれかのｉに対して関係Ｒが検証されない場合には、攻撃を検出することを含む、請求項１から４のいずれか一項に記載の方法。
【請求項６】
暗号キーＫ０およびメッセージＭとすると、暗号アルゴリズムＡが値Ａ（Ｋ０，Ｍ）を計算するように設定されている暗号アルゴリズムＡを実装する暗号デバイスであって、Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒとすると、ここで、ｆとｇが２つの双射で、ｆが恒等関数とは異なっており、暗号デバイスが、
ａ．暗号アルゴリズムの予測される結果Ａ（Ｋ０，Ｍ）を計算すること、
ｂ．暗号アルゴリズムＡを変更されたキーｆ（Ｋ０）およびメッセージｇ（Ｍ）に適用することによって、変更された結果Ａ（ｆ（Ｋ０），ｇ（Ｍ））を計算すること、
ｃ．先行する２つのステップで計算された値Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒが検証されているかどうかをチェックすること、
ｄ．関係Ｒが検証されない場合には、攻撃を検出することのための手段を備えることを特徴とする、暗号デバイス。
【請求項７】
双射ｆがキーＫ０のすべてのビットを反転することである、請求項６に記載の暗号デバイス。
【請求項８】
双射ｇがメッセージＭのすべてのビットを反転することである、請求項６または７に記載の暗号デバイス。
【請求項９】
関係Ｒは、予測された結果Ａ（Ｋ０，Ｍ）の各ビットが変更された結果Ａ（ｆ（Ｋ０），ｇ（Ｍ））の対応するビットの反転であることである、請求項６から８のいずれか一項に記載の暗号デバイス。
【請求項１０】
請求項６から９のいずれか一項に記載の暗号デバイスであって、
ａ．ｎ個のランダムキーＫ１．．．Ｋｎを生成すること、
ｂ．０とｎの間の各ｉに対してＡ（Ｋｉ，Ｍ）およびＡ（ｆ（Ｋｉ），ｇ（Ｍ））をランダムな順序で計算すること、
ｃ．Ａ（Ｋｉ，Ｍ）およびＡ（ｆ（Ｋｉ），ｇ（Ｍ））の値の各組の関係Ｒをチェックすること、
ｄ．０とｎの間のいずれかのｉに対して関係Ｒが検証されない場合には、攻撃を検出することのための手段を備える、暗号デバイス。
【請求項１１】
暗号デバイスがスマートカード、ＴＰＭ、またはＨＳＭである、請求項６から１０のいずれか一項に記載の暗号デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、弱点攻撃に対して暗号アルゴリズムの実行を保護するための方法に関する。
【背景技術】
【０００２】
暗号アルゴリズムは、通常、プログラム可能な任意のコンピュータで実行されることが可能である。しかしながら、安全に設計された暗号アルゴリズムであっても、安全ではないコンピュータ上で実行される場合に、安全ではなくなる場合がある。例えば、スパイウェアがコンピュータ内部にインストールされ、暗号アルゴリズムによって使用される重要なデータを取得しようとする可能性もあり、そうすると、暗号動作は完全に役立たなくなる（例えば、ハッカーは取得した重要なデータを使って完全なテキスト情報を入手することができるはずである）。
【０００３】
したがって、機密情報を扱うアプリケーションの場合、暗号アルゴリズムを特殊な暗号デバイス（安全な暗号デバイス）に実装することが提案されており、そのデバイスは、暗号動作の目的で可能な限り安全に設計されている。
【０００４】
そのような暗号デバイスは、普通のコンピュータの形を取ることができ、そのコンピュータ上にインストールされたソフトウェアを制御し、ファイアウォール、ウィルス対策、スパイウェア対策などの特定のセキュリティソフトウェアをインストールすることによって安全が確保される。そのようなコンピュータは、厳重に制御されることによってより安全にされる、ラップトップコンピュータ、デスクトップコンピュータ、ＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ：携帯情報端末）、携帯電話、または他のいずれかの種類のコンピュータとすることができる。セキュリティは、コモンクライテリア（Ｃｏｍｍｏｎ  Ｃｒｉｔｅｒｉａ）、ＦＩＰＳ  １４０−２などのセキュリティ認定に適合することによって評価されることが可能である。
【０００５】
多くの場合、暗号に特化され、安全確保がより容易な、専用デバイスを頼りにすることが好ましい。そのような専用暗号デバイスの一般的な例には、スマートカード、ＵＳＢキー、ドングル、ＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）、ＨＳＭ（ＨＳＭとはＨａｒｄｗａｒｅ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｕｌｅを表し、非常に酷使されるサーバーでもサポートする目的で多くの暗号動作を実行できるようにするため、通常、強力なＣＰＵを搭載した、よく知られているセキュリティデバイスである）、ＳＳＬ／ＴＬＳアクセラレータが含まれる。そのような専用暗号デバイスは、通常、普通のコンピュータ（例えば、ワークステーション、サーバー、ＰＣ、携帯電話、ＰＤＡなど）とともに使用され、例えば、重要なデータの盗難を非常に難しくすることによって、補充レベルのセキュリティを追加する。
【０００６】
しかしながら、専用デバイスであっても攻撃にさらされる場合がある。例えば、そのような専用暗号デバイスに対する侵入攻撃（物理的攻撃と呼ばれる場合がある、または弱点攻撃）は、通常、デバイスで期待される動作を妨害し、重要なデータを推測するために異常に動作させることにある。そのような攻撃は、９０年代後半に出現してきた。それは深刻な懸念である。なぜならば、攻撃者は、通常、安全であると考えられるスマートカードなどの暗号デバイスに保存されている重要データであっても復元できる場合があるからである。これによって、攻撃者は本物のユーザーのふりをすることができるはずである（例えば、銀行口座からの金融取引の実行、電話回線の使用、その人物の名前での違法行為の実行など）。これまで、そのような攻撃は、パソコンにとって危険なものとは認識されていなかった。それは、通常、侵入攻撃という面倒なことをしなくても、純粋にソフトウェア的手段でコンピュータをクラッキングするより多くの簡単な方法があるからである。しかしながら、詐欺が増大したことによる、ＴＰＭ（ｔｒｕｓｔｅｄ  ｐｌａｔｆｏｒｍ  ｍｏｄｕｌｅ、その仕様はＴｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐによって管理されている）などのコンポーネントの出現で、このことが変化している可能性がある。ＴＰＭとは、可能な限りあらゆる種類の製品（ＰＤＡ、プリンター、携帯電話など）に安全な暗号機能を導入することを意味しており、特に企業のＰＣのほか、すべての種類の電子機器にもますます普及している。ＴＰＭは、その上に一体化されるマザーボードに一体部分となる場合がある（ＴＰＭが取り外し可能にされることは可能であり、それを専用スロットに挿入するようにすることができる。しかしながら、ＴＰＭにはたびたび取り外しされなければならない理由はほとんどない）。ＴＰＭは、通常、コンピューティングシステムプロセッサおよびメモリーなどのコンピューティングシステムの従来の手段のみで実行される場合に比べ、より安全にコンピューティングシステムの暗号データを管理するための手段を備えている。また、汎用プロセッサ（従来のコンピュータシステムに組み込まれたメインプロセッサなど）のセキュリティを改善するようにも試みられてきている。そのため、現在、侵入攻撃は、スタンドアロンの暗号デバイスや高セキュリティコンピュータ（例えば、機密サーバー）だけではなく、以前よりも多くのデバイスで脅威になってきている。ハードウェア製造業者の技術的対応の進展につれ、新しいハードウェア対応策が定期的に追加されている。しかしながら、それらの対応策は、有効なソフトウェア対応策と組み合わされる場合にのみ効果があり得ることが広く認識されている。組み込まれたデバイスは、攻撃者がハードウェアをすべて支配している場合には、とりわけこのカテゴリの攻撃にさらされる。侵入攻撃の代表例は、オリジナルのＢｅｌｌｃｏｒｅ攻撃で、攻撃者は１つの不完全な署名を付与されたＲＳＡ秘密鍵を取得することができる。
【０００７】
特に懸念しているのは、キーレジスターに保存されている値が変えられることにある特別な進入攻撃である。キーレジスターとは、暗号キー、例えば、ＤＥＳキー、ＡＥＳキー、またはＲＳＡキーを保存しているレジスターである。そのような攻撃はますます効果的になっており、現在、特定の状況で、キー（例えば、レーザーまたは他の手段）を入れるように意図されたレジスターの特定ビットをターゲットとし、このビットの値を変えることが可能である。また、同じ攻撃を繰り返すことも可能であり、それによって、例えば、同じキーで２つの連続した計算の結果の比較を無能にする。それは、キーの値は同じ方法で２度、変更され、それによって、動作の冗長性にもかかわらず同じ（誤った）結果になる可能性があるからである。
【０００８】
しかしながら、レジスターを構成するメモリーのタイプに応じて、既存の攻撃は、通常、ビットを必ず０にリセットするか、またはビットを必ず１に設定するものである。「セーフエラー攻撃」とは、攻撃者に、キーの正確なビットを強制的に１または０にする（チップによって異なる）上述の能力があるという想定に基づいている。したがって、攻撃者は、自分の攻撃によって生成された結果を調べることによって、ビットが０または１であるかを推測することができる。有効な結果／通常の反応とは、ビットが強制される前に、既に強制された値を有している場合である。誤った結果／異常な動作（例えば、攻撃が検出された場合）とは、ビットが強制された値とは反対の値を有している場合である。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
選択されたビットを、容易に目的のいずれかの値（０または１）に自由自在に設定できる技術はまだ知られていない。マルチ空間フォールトインジェクションと呼ばれる、そのような技術は、ほとんど実現不可能と見なされている。
【課題を解決するための手段】
【００１０】
本発明の目的は、暗号アルゴリズムの実装形態を変更することであり（当然、最終的な結果を変更することはない）、それは、検出された暗号アルゴリズムの実行の際に暗号アルゴリズムを変更したり、または少なくとも、キーを構成するビットの値を推断する攻撃者の能力を低減化したりすることを試みるような方法である。特に、方法は、両方向でビットの値を変更することはできないが、ビットを０にリセットするか、またはビットを１に設定するかのいずれかにのみ変更できる巧妙な攻撃の状態に対する保護を目的としている。
【００１１】
本発明およびその利点は、添付図面を参照する以下の明細書でより詳細に説明される。
【図面の簡単な説明】
【００１２】
【図１】本発明の好ましい一実施形態による方法を実装する擬似コードを示す図である。
【発明を実施するための形態】
【００１３】
本発明の好ましい一実施形態によると、弱点攻撃に対する暗号アルゴリズムＡの実行を安全にするための方法が提案されている。暗号アルゴリズムＡは、例えば、ＤＥＳ（またはＤＥＳ−１、すなわちＤＥＳ復号化）、３ＤＥＳ（または３ＤＥＳ−１）、またはＡＥＳ（ＡＥＳ−１）、あるいはＲＳＡなどの非対称アルゴリズム、楕円曲線、Ｄｉｆｆｉｅ  Ｈｅｌｌｍａｎなどにすることができる（各非対称アルゴリズムは、ＲＳＡ暗号化もしくはＲＳＡ署名認証などの公開鍵の動作、またはＲＳＡ署名もしくはＲＳＡ復号化などの秘密鍵の動作のいずれかで使用されている）。暗号アルゴリズムＡには、キーＫ０およびメッセージＭが関係している。暗号アルゴリズムＡは、値Ａ（Ｋ０，Ｍ）を計算するように設定されている。例えば、好ましい一実施形態では、ＡはＤＥＳアルゴリズムであり、ＭはＤＥＳアルゴリズムで暗号化される１つのデータで、Ｋ０は暗号化に使用されるＤＥＳキーで、Ａ（Ｋ０，Ｍ）は暗号化されたメッセージである。Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒとすると、ここで、ｆとｇは２つの双射で、ｆは恒等関数とは異なっており、方法は次から構成されている：
ａ．暗号アルゴリズムの予測される結果Ａ（Ｋ０，Ｍ）を計算する
ｂ．暗号アルゴリズムＡを変更されたキーｆ（Ｋ０）およびメッセージｇ（Ｍ）に適用することによって、変更された結果Ａ（ｆ（Ｋ０），ｇ（Ｍ））を計算する
ｃ．先行する２つのステップで計算された値Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒが検証されているかどうかをチェックする
ｄ．関係Ｒが検証されない場合には、攻撃を検出する
【００１４】
ステップａおよびｂが実行される順序は問題ではなく、好ましくはランダムである。当然、双射ｆおよびｇならびに関係Ｒはすべて共に暗号アルゴリズムＡにリンクされており、任意に選択されることはできない。それらは、当業者によって定義される必要がある（特定のアルゴリズムＡの場合、使いやすい関係Ｒがなく、そのような場合には、提案されている方法は適用できない）。
【００１５】
ＲＳＡ秘密鍵の動作では、Ｋ０はｄ（ＲＳＡ秘密鍵の指数）と表記されることができ、さらにＡ（Ｋ０，Ｍ）＝Ａ（ｄ，Ｍ）＝Ｍｄ  ｍｏｄ  Ｎ（標準ＲＳＡ、当業者にはよく知られている）である。ｅを公開指数、ＮをＲＳＡキーのペアのモジュール（ＲＳＡの従来の表記）とすることにする。例えば、ｆ（ｄ）をｆ（ｄ）＝ｄ＋ｂ＊（ｅ＊ｄ−１）として定義し、ｇ（Ｍ）をｇ（Ｍ）＝Ｍ＊（ａｅ）ｍｏｄ  Ｎとして定義することが可能であり、ここで、ａとｂは１とＮ−１（０＜ａ，ｂ＜Ｎ）の間で構成される２つのランダムな数値である。好ましくは、数値ａはｐまたはｑの倍数であってはならず、ここで、ｐとｑはモジュールＮを構成する素数である（別の方法では、ｇは双射ではなく、関係Ｒの検証の容易さはより少なくなる。それは、Ａ（ｄ，Ｍ）からＡ（ｆ（ｄ），ｇ（Ｍ））を計算することができるが、必ずしも他の方法である必要はない）。
【００１６】
ｆとｇのこの定義により、Ａ（ｆ（ｄ），ｇ（Ｍ））＝ａ＊Ａ（ｄ，Ｍ）ｍｏｄ  Ｎとなり、これは検証する関係Ｒである。
【００１７】
実際には次のとおりである：
Ａ（ｆ（ｄ），ｇ（Ｍ））＝［Ｍ＊（ａｅ）］［ｄ＋ｂ＊（ｅ＊ｄ−１）］ｍｏｄ  Ｎ
＝［Ｍｄ＊（ａｅ）ｄ］＊［Ｍ＊（ａｅ）］［ｂ＊（ｅ＊ｄ−１）］ｍｏｄ  Ｎ
＝Ｍｄ＊（ａｅ）ｄ  ｍｏｄ  Ｎ
＝ａ＊（Ｍｄ）ｍｏｄ  Ｎ
＝ａ＊Ａ（ｄ，Ｍ）ｍｏｄ  Ｎ
【００１８】
関数ｆがキーＫ０で可能な限り多くのビットを変更することが好ましい。それは、Ｋ０とｆ（Ｋ０）の両方で同じ攻撃が実行されたので、通常、Ｋ０とｆ（Ｋ０）で異なっているビットの１つがターゲットにされる場合、Ｋ０とｆ（Ｋ０）の両方を変更することができないことになる（すなわち、Ｋ０とｆ（Ｋ０）の両方のターゲットビットではなく、Ｋ０またはｆ（Ｋ０）のいずれかのターゲットビットが変更される）。実際にところ、巧妙な攻撃の状態では、ビットを１に設定したり、ビットを０にリセットしたりすることができるが、ビットの値を自由に０または１に定義することはできない。攻撃でビットを自由に変更できた場合でも、攻撃者は、Ｋ０とｆ（Ｋ０）を、値Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒが引き続き満たされるような方式で変更する必要がある。それは、Ｒが定義される方法により困難な問題となる場合がある。
【００１９】
上述の方法の一好ましいバージョンでは、双射ｆはキーＫ０のすべてのビットを反転し、すなわち、Ｋ０の各０はｆ（Ｋ０）で１に置き換えられ、その逆も同様である。このことは、巧妙な攻撃の上記で説明した状態に基づき、攻撃者はＫ０とｆ（Ｋ０）の両方で指定されたビットを変更できないので利点となる。
【００２０】
双射ｇでは、メッセージＭのすべてのビットを反転させる場合がある。
メッセージを変更する必要がない場合もあるが、暗号アルゴリズムＡのプロパティは、関係Ｒを単純化するためにメッセージも変更すること（ｇは恒等とは異なっている）が利点となるような場合もある。
【００２１】
特に、関係Ｒは、予測された結果Ａ（Ｋ０，Ｍ）の各ビットが変更された結果Ａ（ｆ（Ｋ０），ｇ（Ｍ））の対応するビットの反転であるという場合がある。
【００２２】
例えば、ＤＥＳアルゴリズムを使うと、好ましい一方法は、次のようになるはずである：
ａ．予測される結果ｒ＝ＤＥＳ（Ｋ０，Ｍ）を計算する
ｂ．変更された結果ｍｒ＝ＤＥＳ（Ｋ０，Ｍ）を計算する。ここで、Ｋ０はＫ０の論理ビットの補数を表し、ＭはＭの論理ビットの補数を表す。
ｃ．最初の結果ｒが第２の結果ｍｒの論理ビットの補数であるかどうかをチェックする例えば、ｒ  ＸＯＲ  ｍｒが１１１１１．．．１１に等しいことをチェックすることができる。
ｄ．関係が検証されない場合、すなわち、２つの結果が論理ビットの補数ではない場合、攻撃を検出する。
【００２３】
ステップａおよびｂの順序は問題ではなく、ランダムであることが好ましい。同じ例が、ＤＥＳ−１、３ＤＥＳ、または３ＤＥＳ−１によりＤＥＳを置き換えることにより同様に機能する。
【００２４】
上記の方法の改善された一バージョンによると、ｎ個のランダムキーＫ１．．．Ｋｎを生成し、０とｎの間の各ｉに対してＡ（Ｋｉ，Ｍ）およびＡ（ｆ（Ｋｉ），ｇ（Ｍ））をランダムな順序で計算することができる。順序は、方法が呼び出されるたびに異なることが好ましい。例えば、ｎ＝３の場合、順序はＡ（ｆ（Ｋ２），ｇ（Ｍ））、Ａ（ｆ（Ｋ０），ｇ（Ｍ））、Ａ（Ｋ１，Ｍ）、Ａ（ｆ（Ｋ３），ｇ（Ｍ））、Ａ（Ｋ３，Ｍ）、Ａ（Ｋ０，Ｍ）、Ａ（Ｋ２，Ｍ）、Ａ（ｆ（Ｋ１），ｇ（Ｍ））となる場合があり、次に方法が呼び出される場合には、順序は異なるようにすることができる。
【００２５】
次に、好ましい方法ではＡ（Ｋｉ，Ｍ）およびＡ（ｆ（Ｋｉ），ｇ（Ｍ））の値の各組の関係Ｒをチェックし、関係Ｒが０とｎの間のいずれかのｉで検証されない場合に攻撃が検出される。この技術は、ハッカーがどの地点で、方法がどの暗号動作を計算するか知ることが非常に困難なので利点となる。例えば、ハッカーにとって方法が実際に有効な暗号動作（予測される結果Ａ（Ｋ０，Ｍ）を計算する動作）を方法がいつ計算するかを知ることは非常に困難である。したがって、攻撃を行うとき、ハッカーには妨害しているのがどのキーかがわからない。これによって、ハッカーが成果を引き出すのはさらに困難になる。素朴な計算結果Ａ（Ｋ０，Ｍ）を使って、ハッカーはＫ０の１ビットを設定するよう試みる場合があり、ビットが既に設定されている場合には、方法により予測される結果が出力されるようになり、キーのビットが設定されていない場合には、方法によりエラーメッセージ（攻撃が検出される場合）または誤った結果が出力されるようになる。したがって、ハッカーにはキーのビットが０であったか、または１であったかが通知される。しかし、この好ましい実施形態では、ハッカーが何かを変えるように試みるときには常に、ハッカーが推測する可能性のあるビットは必ずしもキーＫ０のビットではなく、いずれかのキーＫｉ、またはｆ（Ｋｉ）のビットである場合があり（正しいキーをターゲットにするのは２＊（ｎ＋１）回の中で１回）、誤った結果を引き出す可能性が非常に高くなる。
【００２６】
ｎ＝０の場合でも、ランダムな順序で、Ａ（Ｋ０，Ｍ）次いでＡ（ｆ（Ｋ０），ｇ（Ｍ））、または最初にＡ（ｆ（Ｋ０），ｇ（Ｍ））次いでＡ（Ｋ０，Ｍ）のいずれかを計算することが可能であることに留意すべきである。
【００２７】
ちょうど説明されてきた方法の改善された一バージョンでは、検証が単純化されることができる。例えば、ｆおよびｇで入力パラメータの論理ビットの補数を取り、関係で２つの結果が論理ビットの補数であることを検証される場合、検証ではすべての結果の排他的論理和をとり、ｎが奇数の場合、最終結果は０であること、ｎが偶数の場合、結果は１１１１．．．１１１であることを検証することができる。
【００２８】
例えば、ＤＥＳの場合、図１による擬似コードが使用されることができる。
【００２９】
注記：この擬似コード、およびＴ［ｋ］＝ＤＥＳ（Ｋｓ（ｋ）−ｎ−１，Ｍ）の行で、下線は論理ビットの補数演算であることを指定するものである。Ｒが１１１１．．．１１１に等しいことのチェックは、Ｒ＋１が０に等しいことを検証によってチェックされることができる。
【００３０】
もちろん、同じ擬似コードはＤＥＳ−１、３ＤＥＳ、または３ＤＥＳ−１にも適用することができる。
【００３１】
また本発明は、上記で説明された方法を実装する暗号デバイスにも関する。暗号デバイスは、暗号アルゴリズムをソフトウェアまたはハードウェアのいずれかで実装するあらゆるデバイスとすることができる。しかしながら、好ましい実施形態では、暗号デバイスは、スマートカード、ＴＰＭ、またはＨＳＭなどの安全な暗号デバイスであり、その３つすべてには、通常、例えば、汎用目的のコンピュータより安全性をかなり向上できるセキュリティ機能（ハードウェアおよび／またはソフトウェアベース）が備えられている。
【図１】
2014197222.tif 000003
【手続補正書】
【提出日】平成26年6月20日(2014.6.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
暗号キーＫ０およびメッセージＭとすると、暗号アルゴリズムＡが値Ａ（Ｋ０，Ｍ）を計算するように設定されている暗号アルゴリズムＡを実装する暗号デバイスであって、Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒとすると、ここで、ｆとｇが２つの双射で、ｆが恒等関数とは異なっており、暗号デバイスが、
ａ．暗号アルゴリズムの予測される結果Ａ（Ｋ０，Ｍ）を計算すること、
ｂ．暗号アルゴリズムＡを変更されたキーｆ（Ｋ０）およびメッセージｇ（Ｍ）に適用することによって、変更された結果Ａ（ｆ（Ｋ０），ｇ（Ｍ））を計算すること、
ｃ．先行する２つのステップで計算された値Ａ（Ｋ０，Ｍ）とＡ（ｆ（Ｋ０），ｇ（Ｍ））の間の関係Ｒが検証されているかどうかをチェックすること、
ｄ．関係Ｒが検証されない場合には、攻撃を検出することのための手段を備え、
前記予測される結果（Ｋｉ，Ｍ）および前記変更された結果Ａ（ｆ（Ｋｉ），ｇ（Ｍ））はランダムな順序で計算されることを特徴とする、暗号デバイス。
【請求項２】
双射ｆがキーＫ０のすべてのビットを反転することである、請求項１に記載の暗号デバイス。
【請求項３】
双射ｇがメッセージＭのすべてのビットを反転することである、請求項１または２に記載の暗号デバイス。
【請求項４】
関係Ｒは、予測された結果Ａ（Ｋ０，Ｍ）の各ビットが変更された結果Ａ（ｆ（Ｋ０），ｇ（Ｍ））の対応するビットの反転であることである、請求項１から３のいずれか一項に記載の暗号デバイス。
【請求項５】
請求項１から４のいずれか一項に記載の暗号デバイスであって、
ａ．ｎ個のランダムキーＫ１．．．Ｋｎを生成し、
ｂ．０とｎの間の各ｉに対してＡ（Ｋｉ，Ｍ）およびＡ（ｆ（Ｋｉ），ｇ（Ｍ））をランダムな順序で計算し、
ｃ．Ａ（Ｋｉ，Ｍ）およびＡ（ｆ（Ｋｉ），ｇ（Ｍ））の値の各組の関係Ｒをチェックし、
ｄ．０とｎの間のいずれかのｉに対して関係Ｒが検証されない場合には、攻撃を検出するための手段を備える、暗号デバイス。
【請求項６】
暗号デバイスがスマートカード、ＴＰＭ、またはＨＳＭである、請求項１から５のいずれか一項に記載の暗号デバイス。