説明

暗号アルゴリズムの弱点保護

本発明は、弱点攻撃に対して暗号アルゴリズムAの実行を安全にするための方法に関する。暗号キーK0およびメッセージMとすると、暗号アルゴリズムAが値A(K0,M)を計算するように設定されている。A(K0,M)とA(f(K0),g(M))の間の関係Rとすると、ここで、fとgは2つの双射で、fは恒等関数とは異なっており、方法は、a.暗号アルゴリズムの予測される結果A(K0,M)を計算すること、b.暗号アルゴリズムAを変更されたキーf(K0)およびメッセージg(M)に適用することによって、変更された結果A(f(K0),g(M))を計算すること、c.先行する2つのステップで計算された値A(K0,M)とA(f(K0),g(M))の間の関係Rが検証されているかどうかをチェックすること、d.関係Rが検証されない場合には、攻撃を検出することを含んでいる。本発明は、上記方法を具現化する暗号デバイスにも関する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、弱点攻撃に対して暗号アルゴリズムの実行を保護するための方法に関する。
【背景技術】
【0002】
暗号アルゴリズムは、通常、プログラム可能な任意のコンピュータで実行されることが可能である。しかしながら、安全に設計された暗号アルゴリズムであっても、安全ではないコンピュータ上で実行される場合に、安全ではなくなる場合がある。例えば、スパイウェアがコンピュータ内部にインストールされ、暗号アルゴリズムによって使用される重要なデータを取得しようとする可能性もあり、そうすると、暗号動作は完全に役立たなくなる(例えば、ハッカーは取得した重要なデータを使って完全なテキスト情報を入手することができるはずである)。
【0003】
したがって、機密情報を扱うアプリケーションの場合、暗号アルゴリズムを特殊な暗号デバイス(安全な暗号デバイス)に実装することが提案されており、そのデバイスは、暗号動作の目的で可能な限り安全に設計されている。
【0004】
そのような暗号デバイスは、普通のコンピュータの形を取ることができ、そのコンピュータ上にインストールされたソフトウェアを制御し、ファイアウォール、ウィルス対策、スパイウェア対策などの特定のセキュリティソフトウェアをインストールすることによって安全が確保される。そのようなコンピュータは、厳重に制御されることによってより安全にされる、ラップトップコンピュータ、デスクトップコンピュータ、PDA(personal digital assistant:携帯情報端末)、携帯電話、または他のいずれかの種類のコンピュータとすることができる。セキュリティは、コモンクライテリア(Common Criteria)、FIPS 140−2などのセキュリティ認定に適合することによって評価されることが可能である。
【0005】
多くの場合、暗号に特化され、安全確保がより容易な、専用デバイスを頼りにすることが好ましい。そのような専用暗号デバイスの一般的な例には、スマートカード、USBキー、ドングル、TPM(Trusted Platform Module)、HSM(HSMとはHardware Security Moduleを表し、非常に酷使されるサーバーでもサポートする目的で多くの暗号動作を実行できるようにするため、通常、強力なCPUを搭載した、よく知られているセキュリティデバイスである)、SSL/TLSアクセラレータが含まれる。そのような専用暗号デバイスは、通常、普通のコンピュータ(例えば、ワークステーション、サーバー、PC、携帯電話、PDAなど)とともに使用され、例えば、重要なデータの盗難を非常に難しくすることによって、補充レベルのセキュリティを追加する。
【0006】
しかしながら、専用デバイスであっても攻撃にさらされる場合がある。例えば、そのような専用暗号デバイスに対する侵入攻撃(物理的攻撃と呼ばれる場合がある、または弱点攻撃)は、通常、デバイスで期待される動作を妨害し、重要なデータを推測するために異常に動作させることにある。そのような攻撃は、90年代後半に出現してきた。それは深刻な懸念である。なぜならば、攻撃者は、通常、安全であると考えられるスマートカードなどの暗号デバイスに保存されている重要データであっても復元できる場合があるからである。これによって、攻撃者は本物のユーザーのふりをすることができるはずである(例えば、銀行口座からの金融取引の実行、電話回線の使用、その人物の名前での違法行為の実行など)。これまで、そのような攻撃は、パソコンにとって危険なものとは認識されていなかった。それは、通常、侵入攻撃という面倒なことをしなくても、純粋にソフトウェア的手段でコンピュータをクラッキングするより多くの簡単な方法があるからである。しかしながら、詐欺が増大したことによる、TPM(trusted platform module、その仕様はTrusted Computing Groupによって管理されている)などのコンポーネントの出現で、このことが変化している可能性がある。TPMとは、可能な限りあらゆる種類の製品(PDA、プリンター、携帯電話など)に安全な暗号機能を導入することを意味しており、特に企業のPCのほか、すべての種類の電子機器にもますます普及している。TPMは、その上に一体化されるマザーボードに一体部分となる場合がある(TPMが取り外し可能にされることは可能であり、それを専用スロットに挿入するようにすることができる。しかしながら、TPMにはたびたび取り外しされなければならない理由はほとんどない)。TPMは、通常、コンピューティングシステムプロセッサおよびメモリーなどのコンピューティングシステムの従来の手段のみで実行される場合に比べ、より安全にコンピューティングシステムの暗号データを管理するための手段を備えている。また、汎用プロセッサ(従来のコンピュータシステムに組み込まれたメインプロセッサなど)のセキュリティを改善するようにも試みられてきている。そのため、現在、侵入攻撃は、スタンドアロンの暗号デバイスや高セキュリティコンピュータ(例えば、機密サーバー)だけではなく、以前よりも多くのデバイスで脅威になってきている。ハードウェア製造業者の技術的対応の進展につれ、新しいハードウェア対応策が定期的に追加されている。しかしながら、それらの対応策は、有効なソフトウェア対応策と組み合わされる場合にのみ効果があり得ることが広く認識されている。組み込まれたデバイスは、攻撃者がハードウェアをすべて支配している場合には、とりわけこのカテゴリの攻撃にさらされる。侵入攻撃の代表例は、オリジナルのBellcore攻撃で、攻撃者は1つの不完全な署名を付与されたRSA秘密鍵を取得することができる。
【0007】
特に懸念しているのは、キーレジスターに保存されている値が変えられることにある特別な進入攻撃である。キーレジスターとは、暗号キー、例えば、DESキー、AESキー、またはRSAキーを保存しているレジスターである。そのような攻撃はますます効果的になっており、現在、特定の状況で、キー(例えば、レーザーまたは他の手段)を入れるように意図されたレジスターの特定ビットをターゲットとし、このビットの値を変えることが可能である。また、同じ攻撃を繰り返すことも可能であり、それによって、例えば、同じキーで2つの連続した計算の結果の比較を無能にする。それは、キーの値は同じ方法で2度、変更され、それによって、動作の冗長性にもかかわらず同じ(誤った)結果になる可能性があるからである。
【0008】
しかしながら、レジスターを構成するメモリーのタイプに応じて、既存の攻撃は、通常、ビットを必ず0にリセットするか、またはビットを必ず1に設定するものである。「セーフエラー攻撃」とは、攻撃者に、キーの正確なビットを強制的に1または0にする(チップによって異なる)上述の能力があるという想定に基づいている。したがって、攻撃者は、自分の攻撃によって生成された結果を調べることによって、ビットが0または1であるかを推測することができる。有効な結果/通常の反応とは、ビットが強制される前に、既に強制された値を有している場合である。誤った結果/異常な動作(例えば、攻撃が検出された場合)とは、ビットが強制された値とは反対の値を有している場合である。
【発明の概要】
【発明が解決しようとする課題】
【0009】
選択されたビットを、容易に目的のいずれかの値(0または1)に自由自在に設定できる技術はまだ知られていない。マルチ空間フォールトインジェクションと呼ばれる、そのような技術は、ほとんど実現不可能と見なされている。
【課題を解決するための手段】
【0010】
本発明の目的は、暗号アルゴリズムの実装形態を変更することであり(当然、最終的な結果を変更することはない)、それは、検出された暗号アルゴリズムの実行の際に暗号アルゴリズムを変更したり、または少なくとも、キーを構成するビットの値を推断する攻撃者の能力を低減化したりすることを試みるような方法である。特に、方法は、両方向でビットの値を変更することはできないが、ビットを0にリセットするか、またはビットを1に設定するかのいずれかにのみ変更できる巧妙な攻撃の状態に対する保護を目的としている。
【0011】
本発明およびその利点は、添付図面を参照する以下の明細書でより詳細に説明される。
【図面の簡単な説明】
【0012】
【図1】本発明の好ましい一実施形態による方法を実装する擬似コードを示す図である。
【発明を実施するための形態】
【0013】
本発明の好ましい一実施形態によると、弱点攻撃に対する暗号アルゴリズムAの実行を安全にするための方法が提案されている。暗号アルゴリズムAは、例えば、DES(またはDES−1、すなわちDES復号化)、3DES(または3DES−1)、またはAES(AES−1)、あるいはRSAなどの非対称アルゴリズム、楕円曲線、Diffie Hellmanなどにすることができる(各非対称アルゴリズムは、RSA暗号化もしくはRSA署名認証などの公開鍵の動作、またはRSA署名もしくはRSA復号化などの秘密鍵の動作のいずれかで使用されている)。暗号アルゴリズムAには、キーK0およびメッセージMが関係している。暗号アルゴリズムAは、値A(K0,M)を計算するように設定されている。例えば、好ましい一実施形態では、AはDESアルゴリズムであり、MはDESアルゴリズムで暗号化される1つのデータで、K0は暗号化に使用されるDESキーで、A(K0,M)は暗号化されたメッセージである。A(K0,M)とA(f(K0),g(M))の間の関係Rとすると、ここで、fとgは2つの双射で、fは恒等関数とは異なっており、方法は次から構成されている:
a.暗号アルゴリズムの予測される結果A(K0,M)を計算する
b.暗号アルゴリズムAを変更されたキーf(K0)およびメッセージg(M)に適用することによって、変更された結果A(f(K0),g(M))を計算する
c.先行する2つのステップで計算された値A(K0,M)とA(f(K0),g(M))の間の関係Rが検証されているかどうかをチェックする
d.関係Rが検証されない場合には、攻撃を検出する
【0014】
ステップaおよびbが実行される順序は問題ではなく、好ましくはランダムである。当然、双射fおよびgならびに関係Rはすべて共に暗号アルゴリズムAにリンクされており、任意に選択されることはできない。それらは、当業者によって定義される必要がある(特定のアルゴリズムAの場合、使いやすい関係Rがなく、そのような場合には、提案されている方法は適用できない)。
【0015】
RSA秘密鍵の動作では、K0はd(RSA秘密鍵の指数)と表記されることができ、さらにA(K0,M)=A(d,M)=M mod N(標準RSA、当業者にはよく知られている)である。eを公開指数、NをRSAキーのペアのモジュール(RSAの従来の表記)とすることにする。例えば、f(d)をf(d)=d+b(ed−1)として定義し、g(M)をg(M)=M(a)mod Nとして定義することが可能であり、ここで、aとbは1とN−1(0<a,b<N)の間で構成される2つのランダムな数値である。好ましくは、数値aはpまたはqの倍数であってはならず、ここで、pとqはモジュールNを構成する素数である(別の方法では、gは双射ではなく、関係Rの検証の容易さはより少なくなる。それは、A(d,M)からA(f(d),g(M))を計算することができるが、必ずしも他の方法である必要はない)。
【0016】
fとgのこの定義により、A(f(d),g(M))=aA(d,M)mod Nとなり、これは検証する関係Rである。
【0017】
実際には次のとおりである:
A(f(d),g(M))=[M(a)][d+b*(e*d−1)]mod N
=[Md*(a[M(a)][b*(e*d−1)]mod N
=Md*(a mod N
=a(M)mod N
=aA(d,M)mod N
【0018】
関数fがキーK0で可能な限り多くのビットを変更することが好ましい。それは、K0とf(K0)の両方で同じ攻撃が実行されたので、通常、K0とf(K0)で異なっているビットの1つがターゲットにされる場合、K0とf(K0)の両方を変更することができないことになる(すなわち、K0とf(K0)の両方のターゲットビットではなく、K0またはf(K0)のいずれかのターゲットビットが変更される)。実際にところ、巧妙な攻撃の状態では、ビットを1に設定したり、ビットを0にリセットしたりすることができるが、ビットの値を自由に0または1に定義することはできない。攻撃でビットを自由に変更できた場合でも、攻撃者は、K0とf(K0)を、値A(K0,M)とA(f(K0),g(M))の間の関係Rが引き続き満たされるような方式で変更する必要がある。それは、Rが定義される方法により困難な問題となる場合がある。
【0019】
上述の方法の一好ましいバージョンでは、双射fはキーK0のすべてのビットを反転し、すなわち、K0の各0はf(K0)で1に置き換えられ、その逆も同様である。このことは、巧妙な攻撃の上記で説明した状態に基づき、攻撃者はK0とf(K0)の両方で指定されたビットを変更できないので利点となる。
【0020】
双射gでは、メッセージMのすべてのビットを反転させる場合がある。
メッセージを変更する必要がない場合もあるが、暗号アルゴリズムAのプロパティは、関係Rを単純化するためにメッセージも変更すること(gは恒等とは異なっている)が利点となるような場合もある。
【0021】
特に、関係Rは、予測された結果A(K0,M)の各ビットが変更された結果A(f(K0),g(M))の対応するビットの反転であるという場合がある。
【0022】
例えば、DESアルゴリズムを使うと、好ましい一方法は、次のようになるはずである:
a.予測される結果r=DES(K0,M)を計算する
b.変更された結果mr=DES(K0,M)を計算する。ここで、K0はK0の論理ビットの補数を表し、はMの論理ビットの補数を表す。
c.最初の結果rが第2の結果mrの論理ビットの補数であるかどうかをチェックする例えば、r XOR mrが11111...11に等しいことをチェックすることができる。
d.関係が検証されない場合、すなわち、2つの結果が論理ビットの補数ではない場合、攻撃を検出する。
【0023】
ステップaおよびbの順序は問題ではなく、ランダムであることが好ましい。同じ例が、DES−1、3DES、または3DES−1によりDESを置き換えることにより同様に機能する。
【0024】
上記の方法の改善された一バージョンによると、n個のランダムキーK1...Knを生成し、0とnの間の各iに対してA(Ki,M)およびA(f(Ki),g(M))をランダムな順序で計算することができる。順序は、方法が呼び出されるたびに異なることが好ましい。例えば、n=3の場合、順序はA(f(K2),g(M))、A(f(K0),g(M))、A(K1,M)、A(f(K3),g(M))、A(K3,M)、A(K0,M)、A(K2,M)、A(f(K1),g(M))となる場合があり、次に方法が呼び出される場合には、順序は異なるようにすることができる。
【0025】
次に、好ましい方法ではA(Ki,M)およびA(f(Ki),g(M))の値の各組の関係Rをチェックし、関係Rが0とnの間のいずれかのiで検証されない場合に攻撃が検出される。この技術は、ハッカーがどの地点で、方法がどの暗号動作を計算するか知ることが非常に困難なので利点となる。例えば、ハッカーにとって方法が実際に有効な暗号動作(予測される結果A(K0,M)を計算する動作)を方法がいつ計算するかを知ることは非常に困難である。したがって、攻撃を行うとき、ハッカーには妨害しているのがどのキーかがわからない。これによって、ハッカーが成果を引き出すのはさらに困難になる。素朴な計算結果A(K0,M)を使って、ハッカーはK0の1ビットを設定するよう試みる場合があり、ビットが既に設定されている場合には、方法により予測される結果が出力されるようになり、キーのビットが設定されていない場合には、方法によりエラーメッセージ(攻撃が検出される場合)または誤った結果が出力されるようになる。したがって、ハッカーにはキーのビットが0であったか、または1であったかが通知される。しかし、この好ましい実施形態では、ハッカーが何かを変えるように試みるときには常に、ハッカーが推測する可能性のあるビットは必ずしもキーK0のビットではなく、いずれかのキーKi、またはf(Ki)のビットである場合があり(正しいキーをターゲットにするのは2(n+1)回の中で1回)、誤った結果を引き出す可能性が非常に高くなる。
【0026】
n=0の場合でも、ランダムな順序で、A(K0,M)次いでA(f(K0),g(M))、または最初にA(f(K0),g(M))次いでA(K0,M)のいずれかを計算することが可能であることに留意すべきである。
【0027】
ちょうど説明されてきた方法の改善された一バージョンでは、検証が単純化されることができる。例えば、fおよびgで入力パラメータの論理ビットの補数を取り、関係で2つの結果が論理ビットの補数であることを検証される場合、検証ではすべての結果の排他的論理和をとり、nが奇数の場合、最終結果は0であること、nが偶数の場合、結果は1111...111であることを検証することができる。
【0028】
例えば、DESの場合、図1による擬似コードが使用されることができる。
【0029】
注記:この擬似コード、およびT[k]=DES(s(k)−n−1)の行で、下線は論理ビットの補数演算であることを指定するものである。Rが1111...111に等しいことのチェックは、R+1が0に等しいことを検証によってチェックされることができる。
【0030】
もちろん、同じ擬似コードはDES−1、3DES、または3DES−1にも適用することができる。
【0031】
また本発明は、上記で説明された方法を実装する暗号デバイスにも関する。暗号デバイスは、暗号アルゴリズムをソフトウェアまたはハードウェアのいずれかで実装するあらゆるデバイスとすることができる。しかしながら、好ましい実施形態では、暗号デバイスは、スマートカード、TPM、またはHSMなどの安全な暗号デバイスであり、その3つすべてには、通常、例えば、汎用目的のコンピュータより安全性をかなり向上できるセキュリティ機能(ハードウェアおよび/またはソフトウェアベース)が備えられている。

【特許請求の範囲】
【請求項1】
弱点攻撃に対する暗号アルゴリズムAの実行を安全にするための方法であって、暗号キーK0およびメッセージMとすると、暗号アルゴリズムAが値A(K0,M)を計算するように設定されており、A(K0,M)とA(f(K0),g(M))の間の関係Rとすると、ここで、fとgが2つの双射で、fが恒等関数とは異なっており、
a.暗号アルゴリズムの予測される結果A(K0,M)を計算することと、
b.暗号アルゴリズムAを変更されたキーf(K0)およびメッセージg(M)に適用することによって、変更された結果A(f(K0),g(M))を計算することと、
c.先行する2つのステップで計算された値A(K0,M)とA(f(K0),g(M))の間の関係Rが検証されているかどうかをチェックすることと、
d.関係Rが検証されない場合には、攻撃を検出することとを含む、方法。
【請求項2】
双射fがキーK0のすべてのビットを反転することである、請求項1に記載の方法。
【請求項3】
双射gがメッセージMのすべてのビットを反転することである、請求項1または2に記載の方法。
【請求項4】
関係Rが、予測された結果A(K0,M)の各ビットが変更された結果A(f(K0),g(M))の対応するビットの反転であることである、請求項1から3のいずれか一項に記載の方法。
【請求項5】
n個のランダムキーK1...Knを生成し、0とnの間の各iに対してA(Ki,M)およびA(f(Ki),g(M))をランダムな順序で計算し、A(Ki,M)およびA(f(Ki),g(M))の値の各組の関係Rをチェックし、0とnの間のいずれかのiに対して関係Rが検証されない場合には、攻撃を検出することを含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
暗号キーK0およびメッセージMとすると、暗号アルゴリズムAが値A(K0,M)を計算するように設定されている暗号アルゴリズムAを実装する暗号デバイスであって、A(K0,M)とA(f(K0),g(M))の間の関係Rとすると、ここで、fとgが2つの双射で、fが恒等関数とは異なっており、暗号デバイスが、
a.暗号アルゴリズムの予測される結果A(K0,M)を計算すること、
b.暗号アルゴリズムAを変更されたキーf(K0)およびメッセージg(M)に適用することによって、変更された結果A(f(K0),g(M))を計算すること、
c.先行する2つのステップで計算された値A(K0,M)とA(f(K0),g(M))の間の関係Rが検証されているかどうかをチェックすること、
d.関係Rが検証されない場合には、攻撃を検出することのための手段を備えることを特徴とする、暗号デバイス。
【請求項7】
双射fがキーK0のすべてのビットを反転することである、請求項6に記載の暗号デバイス。
【請求項8】
双射gがメッセージMのすべてのビットを反転することである、請求項6または7に記載の暗号デバイス。
【請求項9】
関係Rは、予測された結果A(K0,M)の各ビットが変更された結果A(f(K0),g(M))の対応するビットの反転であることである、請求項6から8のいずれか一項に記載の暗号デバイス。
【請求項10】
請求項6から9のいずれか一項に記載の暗号デバイスであって、
a.n個のランダムキーK1...Knを生成すること、
b.0とnの間の各iに対してA(Ki,M)およびA(f(Ki),g(M))をランダムな順序で計算すること、
c.A(Ki,M)およびA(f(Ki),g(M))の値の各組の関係Rをチェックすること、
d.0とnの間のいずれかのiに対して関係Rが検証されない場合には、攻撃を検出することのための手段を備える、暗号デバイス。
【請求項11】
暗号デバイスがスマートカード、TPM、またはHSMである、請求項6から10のいずれか一項に記載の暗号デバイス。

【図1】
image rotate


【公表番号】特表2012−506658(P2012−506658A)
【公表日】平成24年3月15日(2012.3.15)
【国際特許分類】
【出願番号】特願2011−532582(P2011−532582)
【出願日】平成21年10月9日(2009.10.9)
【国際出願番号】PCT/EP2009/063205
【国際公開番号】WO2010/046251
【国際公開日】平成22年4月29日(2010.4.29)
【出願人】(504326572)ジエマルト・エス・アー (31)
【Fターム(参考)】