説明

物理的解析によってコンピュータシステムを攻撃から保護する秘密鍵暗号化方法

【課題】本発明は、秘密鍵を有する電子式暗号化集合を、暗号解析的な攻撃から保護する方法に関する。
【解決手段】本方法は、a)標準の暗号化計算方法を、標準の暗号化計算の結果とは別個の部分中間結果を用いて、いくつかの別個の並行処理段階に分割するステップと、b)当該別個の部分中間結果から最終値を再構成するステップとからなる。本発明は、組み込みシステムなどの電子的な集合にとって有用である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密鍵を用いた暗号化アルゴリズムを実現するコンピュータシステムを保護する方法に関する。より正確には、その方法の目的は、計算の実行中におけるコンピュータシステムの電力消費量の検討を通じて秘密鍵上の情報を得ることを目的とした「差分電力解析(Differential Power Analysis)」又は「高次差分電力解析(High−Order Differential Power Analysis)」として知られる特定のタイプの物理的攻撃に対して脆弱でないアルゴリズムのバージョンを提供することである。
【背景技術】
【0002】
ここで考察される暗号化アルゴリズムは、出力情報を、入力情報の関数として計算する秘密鍵を用いる;これには、暗号化、復号化、署名、署名の検証、認証又は非拒絶の操作が含まれる。それらは、入力及び出力を知っている攻撃者が、秘密鍵それ自身上のいかなる情報も事実上演繹することができないような方法で構成される。
【0003】
われわれは、「秘密鍵アルゴリズム」又は「対称アルゴリズム」という表現で以前から表されているクラスよりも大きいクラスに関わっている。特に本特許の応用例で説明される全てが、さらにいわゆる「公開鍵アルゴリズム」又は「非対称アルゴリズム」に適合し、当該アルゴリズムは、2つの鍵(一方は公開で、他方は個人又は非公開であり、後者は以下に説明される攻撃の目標となる鍵である)を含む。
【0004】
ポール・コッヘル及びCryptographic Research社によって開発された電力解析(参照として本明細書に組み込まれる、URLアドレスhttp://www.cryptography.com/dpa/technical/index.htmlにおいてHTML文書として公開された、ポール・コッヘル、ジョシュア・ジャフィ、ベンジャミン・ジュン及びCryptographic Research社、カリフォルニア州94102、サンフランシスコ、スーツ1008、マーケットストリート870による文書「Introduction to Differential Power Analysis」を参照)として知られるタイプの攻撃は、攻撃者(アタッカー)が、例えば、マイクロコントローラの電力消費量又は回路から発せられる電磁放射等の計算の実行中に、入力及び出力データ以外の情報を、事実上取得できるという観察に基づいている。
【0005】
「DPA」と略記される差分電力解析は、秘密鍵における多数の計算において電力消費量の測定を行うことにより、コンピュータシステム内に収容されるこの秘密鍵に関する情報を得ることを可能にする攻撃である。
【0006】
非制限的な例として、われわれは、DES(Data Encryption Standard:データ暗号化基準)アルゴリズムの場合を考察するが、その説明は、以下の文書のいずれの中にも見出すことができる:
FIPS PUB46−2、「Data Encryption Standard」、1994年;
FIPS PUB74、「Guidline for Implementing and Using the NBS Data Encryption Standard」、1981年;
ANSI X3.92「American National Standard, Data Encryption Standard」、1981年;
ISO/IEC8731、「Banking−Approved Algorithms for Message Authentication−パート1:Data Encryption Algorithm(DEA)」、1987;
又は、以下の書籍の中に見出すことができる:
ブルース・シュナイヤー、「Applied Cryptography」第2版、ジョン・ワイリー&サン、1996年、270ページ。
【0007】
上記の文書は、参照として本明細書に組み込まれる。
【発明の概要】
【発明が解決しようとする課題】
【0008】
DESアルゴリズムは、ラウンドとして周知の16のステップにおいて実行される(図1aを参照)。16のラウンドのそれぞれにおいて、32ビットへの変換Fが実行される。この変換Fは、6ビットから4ビットへの8つの非線形変換を用い、その各々は、「Sボックス」と呼ばれるテーブルにおいて符号化される(図1bを参照、そこにおいて、Sボックスは、S、S、…、Sとマーク付けされている)。
【0009】
DES上でのDPA攻撃は、以下の方法によって実行される:
第1ステップ:電力消費量の測定は、第1ラウンドにおいて、1,000個のDES計算に対して行われる。これら1,000個の計算の入力値は、E[1]、…、E[1,000]とマーク付けされる。これらの計算中に測定された対応する1,000個の電力消費量曲線は、C[1]、…、C[1,000]とマーク付けされる。1,000個の消費量曲線の平均の曲線CMが、さらに計算される。
【0010】
第2ステップ:第1ラウンド中の第1のSボックスからの出力の第1ビットが選択される。bをこのビットの値とする。bは、秘密鍵の6ビットによって決まるだけであることが容易に理解できる。攻撃者は、問題の6ビットに、ある仮説を立てる。攻撃者は、これらの6ビットおよびE[i]から、bに対して、対応する理論値を計算する。これによって、1,000個の入力E[1]、…、E[1,000]を、2つのカテゴリ(b=0となるカテゴリ、及びb=1となるカテゴリである)に分けることが可能となる。
【0011】
第3ステップ:次に、第1のカテゴリすなわちb=0となるカテゴリに対応する曲線の平均CM′が計算される。CM及びCM′が著しく異なる場合には、6個の鍵ビットに保持されている値は、正しい値と見なされる。CM及びCM′に、統計的な意味で、いかなる実質的な相違も認められない、すなわち測定されたノイズに起因する典型的な相違よりも明確に大きい相違が認められない場合は、6ビットに対する別の選択を行って、第2ステップが繰り返される。
【0012】
第4ステップ:第2のSボックス、第3のSボックス、…、第8のSボックスからの出力の目標ビットbを伴って、ステップ2及び3が繰り返される。この様にして秘密鍵の48ビットが最終的に得られる。
【0013】
第5ステップ:徹底的探索によって、残りの8ビットを求めることが可能である。
【0014】
この攻撃は、各命令の個々の電力消費量についての又はこれらの命令のそれぞれの時間的位置についてのいかなる知識をも必要としない。この攻撃は、攻撃者が、アルゴリズムの出力のいくつか及び対応する消費量曲線を知っていると仮定できる場合は、いつでも同じ方法で利用される。この攻撃は、次の基本的な仮定にだけ基づく。
【0015】
基本的仮定:実際には32ビットよりも少ない、いくつかの鍵ビットを知っていれば、2つの入力及びそれぞれ2つの出力が、中間変数について同じ値になるか否かを決定することが可能になるような、アルゴリズムの計算中に現れる中間変数が存在する。
【0016】
実行の通常モードは、一般に、前記の仮定の範囲内に入ってしまうので、DESのようなSボックスを用いるアルゴリズムの全ては、DPAに対して潜在的に脆弱である。
【0017】
「HO−DPA」と略記される高次差分電力解析として知られる攻撃は、上に説明したDPA攻撃の一般化である。それらの攻撃は、いくつかの異なる情報源を用いることができる。電力消費量に加えて、それらの攻撃は、電磁放射及び温度等の測定結果を含むことができ、また単純な平均の概念よりもより洗練された統計的操作、及びより基本的でない(前記のビットbを一般化した)中間変数を用いることができる。それでもやはり、それらの攻撃は、DPAと全く同じ基本的仮定に基づいている。
【0018】
本発明の主題となる方法の目的は、秘密鍵又は個人鍵暗号化を用いるコンピュータにおけるDPA又はHO−DPA攻撃の危険を取除くことである。
【0019】
従って、本発明の別の主題は、前記の基本的仮定がもはや満たされないような、言い換えれば、中間変数が個人又は秘密鍵の容易にアクセス可能なサブシステムの電力消費量に依存せず、従ってDPA又はHO−DPAタイプの攻撃の効力を失わせるような、暗号化を用いて保護されたコンピュータシステムによって実行される暗号化計算方法の変更例である。
【課題を解決するための手段】
【0020】
本発明の主題である秘密鍵を用いた標準の暗号化計算方法を実行するコンピュータシステムを保護する方法は、暗号化計算方法が、並行して実行されかつ標準の暗号化計算の結果とは別個の部分中間的結果を生成する、いくつかの別個の暗号化計算方法の部分に分割されるという点で、及び、分割することなく標準の暗号化計算によって得られる最終値が、別個の部分中間的結果から再構成されるという点で、注目に値する。「標準の暗号化計算方法」という用語は、暗号化された値、復号化された値、及び署名、署名の検証、認証、非拒絶の値を得ることを可能にする、全ての一連の又は連続した計算方法を意味することを意図したものである。このタイプの方法は、クレジットカード、ATMカード、アクセス管理カード又は類似の機能用のスマートカード等の暗号化計算機能を備える埋め込みシステムに対するDPA又はHO−DPAタイプの攻撃を防止することを可能にする。
【0021】
本発明は、下記の記述および図面の考察を読めば、よりよく理解できるであろう。
【図面の簡単な説明】
【0022】
【図1a】DESの暗号化/復号化方法、すなわち「Data Encryption Standard:データ暗号化基準」に関連する先行技術について表す。
【図1b】DESの暗号化/復号化方法、すなわち「Data Encryption Standard:データ暗号化基準」に関連する先行技術について表す。
【図2】本発明の主題となる方法を示すフローチャートを表す。
【図3a】本発明の主題となる方法の実行の非限定的なモードを示す例を表す。
【図3b】DESのような標準の暗号化計算方法に用いられる非線形変換に適用される、本発明の主題となる方法の特定の実行のフローチャートを示す例を表す。
【図3c】図2に示したような本発明の主題となる方法の実行の変更例を表す。
【図3d】DESのような標準の暗号化計算方法に用いられる非線形変換に適用される秘密全単射変換に基づいた、本発明の主題となる方法の別の特定の実行のフローチャートを示す例を表す。
【図3e】DESのような標準の暗号化計算方法に用いられる非線形変換に適用される多項式関数に基づいた、本発明の主題となる方法の別の特定の実行のフローチャートを示す例を表す。
【発明を実施するための形態】
【0023】
ここで、本発明の主題となる秘密鍵を用いる標準の暗号化計算方法を実行するコンピュータシステムを保護する方法のより詳細な説明を、図を参照して行う。
【0024】
一般的に、本発明の主題となる方法は、秘密又は個人鍵Kを用いる標準の暗号化方法については、暗号化計算方法の変更からなり、そこにおいては、前記の基本的仮定は、もはや満たされず、本発明の主題となりかつ秘密鍵について容易にアクセス可能なサブシステムの知識に依存する方法に従って計算されるいかなる中間変数ももはや存在しない。
【0025】
この目的のために、及び図2に表されるような本発明の主題となる方法によれば、a)標準の暗号化計算方法は、並行して実行される幾つかの別個の計算方法の部分PPC〜PPCに分割され、b)分割することなく標準の暗号化計算方法により得られる値に対応する最終値vは、上記の別個の計算方法の部分PPC〜PPCを実行することにより得られた別個の部分結果v〜vから再構成される。
【0026】
従って、計算方法の部分は、独立しているが、部分中間変数又は中間結果は、関連している。
【0027】
この分割は、計算中に発生し、入力(又は出力)データによって決まる各中間変数vを、k個の変数v、v、…、vで置き換えることによって実施される。必要に応じて、v、v、…、vは、vを再構成することを可能にする。より正確に言えば、これは、v=f(v、v、…、v)であるような関数fが存在することを意味する。さらに、fは、次の条件を満たすことが望ましいということに注意されたい。
【0028】
(条件1)
iを、最も広い意味で、1及びkの間の添字とする。vの値を知っていても、現存する(k−1)項組(v、…、vi−1、vi+1、…、v)が等式f(v、…、v)=vを満たすように、全てのv値の情報を演繹することは事実上不可能である。
(例1)
関数
【数1】

を取る場合、条件1は、明らかに満たされる。その理由は、1とkとの間の任意の添字iに対して、検討中のvの集合は、全ての考えられる値を含み、従ってvに依存しないからである。なお、以下の文章中では、記号
【数2】

は、特に断りのない限りは「○+」と記す。
【0029】
(例2)
乗法群(multiplicative group)Z/nZにおける値、すなわち、nを法とする逆数を有するnを法とする整数の全ての値を有する変数vを考える場合、新たな変数v、v、…、vが、さらに乗法群Z/nZにおける値を持つような、nを法とする関数f(v、…、v)=v・v・…・vを取り上げることができる。条件1は、やはり明らかに満たされる。その理由は、1とkとの間の全ての添字iに対して、検討中のvの集合は、全ての考えられる値を含み、従ってvに依存しないからである。
【0030】
本発明の主題となる方法の注目すべき態様によれば、入力(又は出力)データによって決まる各中間変数vを、k個の変数v、v、…、vで置き換えることによって、アルゴリズムの「変換」が実行される。新たな形態に変更されたアルゴリズムの最大限のセキュリティを保証するために、関数fに対して、次の追加的な条件が課される。
【0031】
(条件2)
関数fは、vに対して行われる通常の変換の代わりに、計算中に、v、v、…、又はvに対して行われる変換が、vを再計算する必要なしに、実行可能である。
【0032】
(第1の例:DES)
DESの保護に関連した第1の例を、図3aを参照して説明する。
【0033】
この例では、DESの特定の例が検討される。この場合、われわれは、計算中に発生し、入力又は出力データに依存する各中間変数vの2つの変数v及びvへの分割を選択する、すなわちk=2とする。それ自身の構造において条件1を満たす、前記の例1の関数f(v、v)=v=v○+vを検討する。アルゴリズムの構造から、vに対して実行する変換は、常に次の5つのカテゴリ内に入ることを理解するのは容易である。
vのビットの順列(permutation);
vのビットの展開(expansion);
vと、同タイプの別の変数v′との排他的論理和;
vと、鍵又は副鍵だけに依存する変数cとの排他的論理和;
Sボックスによるvの非線形変換。
【0034】
最初の2つのカテゴリは、変数vのビットについての線形変換に対応する。従って、これらに対しては、条件2を満たすのは、非常に容易である。通常vに対して実行される変換の代りに、vそしてvに対して順列又は展開を行うだけでよく、そして、変換前に「真」であった関係f(v、v)=vは、その後も依然として等しく「真」である。
【0035】
第3の場合も同様に、v″=v○+v′の計算を、v″=v○+v′及びv″=v○+v′の計算で置き換えるだけでよい。関係式f(v、v)=v及びf(v′、v′)=v′は、明確にf(v″、v″)=v″を生み出し、条件2は、再び満たされる。
【0036】
vと、鍵又は副鍵だけによって決まる変数cとの排他的論理和において、条件2は、また非常に容易に満たされる。計算v○+cを、条件2を満たす計算v○+c又はv○+cで置き換えるだけでよい。
【0037】
最後に、この例では、6ビットの入力を取り4ビットの出力を生じるSボックスの形態で与えられる非線形変換v′=S(v)の代りに、変換(v′、v′)=S′(v、v′)が、2つの新たなSボックスを用いて実行される。この場合、それぞれのSボックスは、12ビットから4ビットに変換する。等式f(v′、v′)=v′を保証するために、以下を選択するだけでよい。
【数3】

ここで、Aは、12ビットから4ビットへの「秘密ランダム変換(secret random transformation)」を表す。第1の(新たな)Sボックスは、(v、v)をA(v、v)と関連付ける「変換(v、v)→A(v、v)」のテーブルに対応し、第2の(新たな)Sボックスは、(v、v)をS(v○+v)○+A(v、v)と関連付ける「変換(v、v)→S(v○+v)○+A(v、v)」のテーブルに対応する。ランダム関数Aがあることによって、条件1の保証が可能となる。さらにテーブルを用いることによって、計算v○+vの必要性が無くなり、従って条件2を満たすことが可能となる。
【0038】
コンピュータシステムがスマートカードによって構成されている場合には、変換(transformation又はconversion)テーブルは、スマートカード内のROMに記憶することができる。
【0039】
こうして、DESのような標準の暗号化計算方法によって用いられる非線形変換タイプの計算ステップに対して、図3bに示されるようなk個の部分への分割を行なうことができる。変換されたn個の出力ビットが、m個の入力ビットの関数であるアドレスにおいて読み込まれる変換テーブルによって記述され、m個のビットからn個のビットへの非線形変換を用いる標準の暗号化計算方法に対しては、分割されない標準の暗号化計算方法の入力変数Eの役割をする中間変数に適用される各非線形変換が、部分中間変数v〜vの全てに適用されるk×m個のビットからk×n個のビットへの部分非線形変換によって置き換えられる。本発明の主題である方法の特に注目すべき態様によれば、この部分非線形変換は、変換されたn個の出力ビットv′、v′、…、又はv′が、k×m個の入力ビットの関数であるアドレスにおいて読み込まれるk個の部分変換テーブルによって記述され実行される。
【0040】
前記の第1の例において、及び図3bに関連して、k=2、n=4、及びm=6と指示されている。
(第1の変更例)
ROM内の記憶空間を節約するために、DESの標準的記述の8個のSボックスのそれぞれに対して標準的ランダム関数Aを用いることが全く可能であり、従って16個のSボックスの代りに記憶のための新たなSボックスを9個持つだけでよくなる。
【0041】
別の第2の変更例を、図3cを参照して説明する。
(第2の変更例)
Sボックスを記憶するのに要するROMの大きさを縮小するために、次の方法を用いることがさらに可能である。(DESの例では、6ビットの入力を取り4ビットの出力を生じる)Sボックスの形態で与えられる初期実行の各非線形変換v′=S(v)の代りに、変換(v′、v′)=S′(v、v)を2つのSボックスを用いて実行することができる。この場合、それぞれのSボックスが、6ビットから4ビットに変換する。v′=S(v)の計算の初期実行は、次の2つの連続する計算によって置き換えられる:
【数4】

ここで、φは、6ビットから6ビットへの「秘密全単射関数(secret bijective function)」であり、Aは、6ビットから4ビットへ秘密ランダム変換を表す。第1の(新たな)Sボックスは、vをA(v)に関連付ける「変換v→A(v)」のテーブルに対応し、第2の(新たな)Sボックスは、vをS(φ−1(v))○+A(v)に関連付ける「変換v→S(φ−1(v))○+A(v)」のテーブルに対応する。構造から、さらに等式f(v′、v′)=v′を得る。ランダム関数Aの存在によって、条件1の保証が可能となる。テーブルを用いることにより、φ−1(v)=v○+vを計算する必要が無くなる。
【0042】
図3dは、第2の変更例に従って本発明の主題である方法により変更された、DES等の標準の暗号化計算方法の枠組みの中で用いられる非線形変換タイプの対応する計算ステップを表す。n個の出力ビットが、m個の入力ビットの関数であるアドレスにおいて読み込まれる変換テーブルによって記述される、m個のビットからn個のビットへの非線形変換に対して、入力変数Eに適用されるk個の部分への分割に加えて、標準の暗号化計算方法の入力変数Eの役割を果たす中間変数に適用される各非線形変換は、部分中間変数v〜vの全てに適用されるk×m個のビットからk×n個のビットへの部分非線形変換によって置き換えられる。この部分非線形変換は、k個の変換テーブルによって記述され実行される。変換テーブルの入力のそれぞれは、関係式φ○f(v、…、v)及びj∈[l、k]に従って、秘密全単射関数φを、部分中間変数の関数f(v、…、v)に適用することにより得られた値を受け取る。
【0043】
本発明の主題である方法の特に注目すべき態様に従えば、上記の適用φ○f(v、…、v)は、対応する変換テーブル1〜kの入力に適用され、これらのm個の入力ビットの関数であるアドレスにおいて、変換v′又はv′又は…v′のn個の出力ビットを読み込むことを可能にする結果として生じる値を、直接評価することによって実行される。
【0044】
図3dを参照して説明された第1の例のように、第2の変更例については、k=2、m=6及びn=4と指示されている。
【0045】
さらに、単純化されたバージョンにおいては、全単射関数φ及びφは同一である。
【0046】
条件2が満たされるためには、v=φ(v○+v)の計算が、v○+vを再計算する必要なしに行われ得るように、全単射変換φ又は全単射関数φ〜φを選択することがさらに必要である。関数φのための2つの選択例を、以下に述べる。
【0047】
(第1の実施形態:線形全単射関数φ)
6ビットから6ビットへの秘密全単射線形関数が、φに対して選択される。このような選択の枠内で、6ビット値は、すべて、2つのエレメントを持つ有限体F中で、6というディメンジョンを持つベクトル空間と考えられる。実際には、φを選択するということは、0又は1という係数を持つランダム可逆6×6行列式を選択することである。φをこのように選択すると、条件2が満たされていることが容易に分かる。要するに、φ(v○+v)を計算するには、φ(v)を計算して、次にφ(v)を計算して、最後にこの得られた2つの結果の「排他的論理和」を計算するだけでよい。
【0048】
例えば、次の行列式:
【数5】

は可逆である。これは、次式で定義される6ビットオーバー4ビットの線形全単射関数φに相当する。
【数6】

=(v1.1、v1.2、v1.3、v1.4、v1.5、v1.6)であり、v=(v2.1、v2.2、v2.3、v2.3、v2.5、v2.6)であることに注目すると、φ(v○+v)を計算するには、次式を連続的に計算する:
【数7】

これで、得られた2つの結果の「排他的論理和」が計算される。
【0049】
(第2の実施形態:二次全単射関数φ)
6ビットから6ビットへの秘密全単射二次関数が、φに対して選択される。「二次」という用語は、この場合、関数φから出力された各々の値のビットは、有限体Fの6つのエレメントで識別される6個の入力ビットの内の2ビットで与えられる次数を持つ多項式関数によって表されることを意味する。実際には、式φ(x)=t(s(x))で定義される関数φを選択することが可能であるが、ここで、sは(FをLに対して秘密全単射線形適用したものであり、tはLを(Fに対して秘密全単射線形適用したものであり、Lは有限体Fの6次代数展開を示すものである。この関数φの全単射の性質は、a→aが展開L(この逆がb→b38)に対する全単射関数であるという事実に由来する。条件2がまだ満たされているかどうかを確定するためには、次式が成立するかどうかを判断するだけでよい:
【数8】

ここで、関数Ψは、Ψ(x、y)=t(s(x)・s(y))によって定義される。
【0050】
例えば、LがF[X]/(X+X+1)と同一視され、また、sとtが、それぞれF中のLの基数(1、X、X、X、X、X)とFにおける(Fの標準基数とに対する次の行列式とすると:
【数9】

と次の6ビットから6ビットへの二次全単射関数φが得られる:
【数10】

φ(v○+v)を計算するためには、12ビットから6ビットへの関数Ψ(x、y)=t(s(x)・s(y))を用いるが、これは次の規則に従って12個の入力ビットの関数として6個の出力ビットを与えるものである:
【数11】

【0051】
これらの式を用いて、次式を連続的に計算する:
【数12】

すると、得られた4つの結果の「排他的論理和」が計算される。
【0052】
(第3の変更例)
再度、Sボックスを記憶するに必要なROMサイズを減少させるためには、また、先行の変更例である変更例1と変更例2の双方の概念を同時に適用すればよい。すなわち、変更例2を、Sボックスという形態で表現される各々の非線形変換を新たに実施する際に、前記と同じ秘密全単射関数φ(6ビットから6ビットへの関数)と同じ秘密ランダム関数A(6ビットから6ビットへの関数)と共に用いる。
【0053】
(第4の変更例)
この最後の変更例では、1つのSボックスという形態で表現された初期実施の非線形変換v′=S(v)を置換する2つのSボックスによって、変換(v′、v′)=S′(v、v)を実現する代わりに、v′とv′それぞれの計算を、v′とv′それぞれが有するビットが、vとvのビットで与えられる合計次数が1又は2である多項式関数によって与えられる代数関数によって実行され、次に、v′とv′それぞれが、テーブルによって計算される。これによって、また、ハードウエアの実行にとって必要なROMサイズを減少させることができる。
【0054】
したがって、図3eに示すように、DESなどの標準の暗号化計算方法によって実現される非線形変換タイプの計算ステップの場合、入力Eの役割を果たす中間変数v〜vのk個の部分に分割することに加えて、図3bと3dだけではなく、この標準の暗号化計算方法の場合も、当該非線形変換は、変換されたn個の出力ビットが、m個の入力ビットの関数であるアドレスのところで読み取られる変換テーブルによって記載されている、m個のビットからn個のビットへの非線形変換からなる。すなわち、本発明の手段であるこの方法によれば、分割を実行しない標準の暗号化計算方法の中間変数に適用される各非線形変換の代わりに、部分中間変数v〜vのすべての適用されるk×m個のビットからk×n個のビットへの部分非線形変換が用いられる。この場合、また、上記の実施形態2の変更例4を参照すると、この変換された(k−1)×n個の出力ビットは、次の関係式に従って、変数v、v、...、vのk×m個の入力ビットの多項式関数として計算される:
【数13】

ここで、PとPk−1は、mビットからnビットへの多項式変換関数を示している。
【0055】
次に、出力変数のn個の残余のビットv′が、例えば、これらのn個のビットがk×m個の入力ビットの関数であるアドレスで読み取られる非線形変換テーブルを読むことによって得られる。
【0056】
上記の実施形態の変更例4では、k=2、m=6、n=4が再現されている。
【0057】
(第2の実施形態:トリプルDES)
トリプルDESは、秘密鍵を用いて暗号化/復号化動作を連続的に実行することからなる。
【0058】
トリプルDESアルゴリズムを説明するには、次の文書のどれかを参照すれば役に立つであろう:
ISO/IEC 8732、「Banking−Key Management(Wholesale)」、1987;
ANSI X9.17、「American National Standard、Financial Institution Key Management(Wholesale)」、1985年。
又は、次の書籍を参照されたい:
ブルース・シュナイヤー、「Applid Cryptography」、第2版、ジョン・ワイリー&サン、1996年、358ページ;
これらは、参照して本出願に組み込まれる。
【0059】
この原理は、メッセージを暗号化するために、DESアルゴリズムを連続して3回用いることからなる。すなわち、最初に鍵番号1を用いて暗号化モードでDES動作を実行し、次に鍵番号2を用いて復号化モードでDES動作を実行し、最後に鍵番号1を用いて暗号化モードでもう一度DES動作を実行する。DPAタイプの攻撃は、DESの場合と同様に可能である。すなわち、最初のDES動作の第1ラウンドに付いての消費電力測定値に基づいて、鍵番号1の48ビットを発見し、次に、第2ラウンドを解析することによって、鍵番号1の残余の8ビットを発見する。鍵番号1が分かっているので、2番目のDES動作の入力が分かり、従って、同じ攻撃を適用して鍵番号2を発見することができる。
【0060】
このアルゴリズムの保護は、上記の第1の実施形態で説明した単純なDESの場合に動作し得る。すなわち、同じ関数fを用いて、中間変数の「分割」、したがってアルゴリズムの同じ変換を実行する。
【0061】
(第3の実施形態:RSA)
RSAは、最も有名な非対称暗号化アルゴリズムである。それは、1978年に、リベスト、シャミール及びアドルマンによって開発された。このアルゴリズムの詳細は、以下の文書を参照すれば役に立つであろう:
R.L.リベスト、A.シャミール、L.M.アドルマン、「A Method for Obtaining Digital Signatures and Public−Key Cryptosystems, Communications of the ACM,21、第2号」、120〜126ページ、1978年;
又は、次の文書を参照されたい。
ISO/IEC 9594−8/ITU−T X.509、「Information Technology−Open Systems Interconnection−The directory:Authentication Framework」;
ANSI X9.31−1、「「American National Standard、Public−Key Cryptography Using Reversible Algorithms for the Financial Services Industry」、1993年;
PKCS #1、「RSA Encryption Standard,第2版」、1998年; これは、次のアドレスで入手可能である。http://ftp.rsa.com/pub/pkcs/doc/pkcs−1v2.doc;
これらの文書又はそのHTMLページとしての公開内容は、参照して本明細書に組み込まれる。
【0062】
RSAアルゴリズムは、2つの大きい素数pとqの積である整数nと、ppcm(p−1、 q−1)と素である整数eを、e≠±1 mod ppcm(p−1、 q−1)となるように用いる。整数nとeが、公開鍵を構成する。この公開鍵の計算には、 g(x)=x mod nで定義されるZ/nZに対して、Z/nZの関数gを用いる。秘密鍵計算は、関数g−1(y)=yを用いるが、ここで、n又はdは、ed ≡ 1 mod ppcm(p−1、 q−1)で定義される秘密成分(秘密鍵すなわち個人鍵とも呼ばれる)である。
【0063】
DPAタイプ又はHO−DPAタイプの攻撃もまた、RSAアルゴリズムの標準的実現に対する脅威となる。事実、後者は、極めてしばしば、いわゆる「二乗して乗算する」原理を用いて、x mod nの計算を実行する。この原理とは、秘密成分dの内訳d = dm−1・2m−1 + dm−2・2m−2 + … + d・2 + d・2を、基数2に書き込んで、次のように計算することである。
1. z ← 1;
次に、m−1から0までの範囲のiに対して、次の計算を実行する。
2. z ← z mod n;
3. d=1であれば、z ← z・x mod n。
【0064】
この計算で、変数zが取る連続値の中で、素数は、秘密鍵dの数ビットに依存するだけであることに注意されたい。したがって、DPA攻撃を許容する基本的仮定は満たされる。これで、例えば、m−1からm−10の範囲のiに対応するアルゴリズムに付いての消費電力測定値を解析することによって、dについての10個の高位ビットを推定することが可能となる。次に、m−11からm−20の範囲のiに対応するアルゴリズムの部分に付いての消費電力測定値を用いて攻撃を継続することが可能であり、これによって、dの次の10ビットを、さらに次の10ビットをという具合に発見することができる。最終的には、秘密成分dのすべてのビットが分かる。
【0065】
本発明の主題であるこの方法はまた、RSAアルゴリズムの保護にも適用される。それは、乗法群Z/nZにおける値、すなわち、計算中に発生し、また、入力データ又は出力データに依存する、自身もnを法とする逆数を有するnを法とする整数のすべてを持つ各中間変数vを、2つの変数vとvに分割する。k=2とし、また、関数f(v、v)=v=v・v mod nとする。上記の説明で示したように(実施形態2「アルゴリズムの保護」を参照)、この関数fによって条件1を満たすことができる。
【0066】
したがって、xを(x、x)と置き換え、これで、x=x・x mod nとし、またzを(z、z)と置き換え、これで、z=z・z mod nとなるようにする。実際、例えば、xをランダムに選択して、それからxを演繹することが可能である。ここで、「二乗して乗算する」方法の3つのステップに戻ると、次の変換が実行される。
1. ≪z ← 1≫を、≪z ←1、z ← 1≫で置き換える;
2. ≪z ← z mod n≫を、≪z ← z mod n、z ← z mod n≫で置き換える;
3. ≪z ← z・x mod n≫を、≪z ← z・x mod n、z ← z・x mod n≫で置き換える。
【0067】
関係式Z=f(z、z)が、計算全体にわたって「真」であることを満たすことは容易であり、これで、条件2が満たされることが分かる。
【0068】
それぞれ変数zと変数zに対して実行される計算は、完全に独立していることに注意されたい。したがって、この2つの計算を、
連続的に、インターリーブ形式で、マルチプログラミングすれば同時並行して、又は、並行に動作する別々のプロセッサで同時に実行することが可能である。

【特許請求の範囲】
【請求項1】
秘密鍵を用いる標準の暗号化計算方法を実現するコンピュータシステムを保護する方法であって、
a)前記標準の暗号化計算方法が、並行に実行され、前記標準の暗号化計算の結果とは別個の部分中間結果(v〜v)を生成する、別個の複数の暗号化計算方法の部分(PPC〜PPC)に分割され、
b)分割することなく前記標準の暗号化計算によって得られる最終値(v)を、前記別個の部分中間結果(v〜v)から再構成することを特徴とする方法。
【請求項2】
前記標準の暗号化計算方法によって用いられる入力データ又は出力データに依存する中間変数又は中間結果(v)の各々が、任意の数であるk個の部分中間変数(v〜v)で置き換えられ、
前記中間変数(v)と部分中間変数(v〜v)が、関数fによってリンクされ、
v=f(v、v、...、v)によって、前記中間変数(v)を再構成できることを特徴とする請求項1に記載の方法。
【請求項3】
前記部分中間変数(v〜v)と前記中間変数(v)をリンクする関数fが、前記中間変数(v)の1つの値が分かっても、現存する(k−1)項組(v、...、vi−1、vi+1、...、v)が、式f(v、...、v、...、v)=vを満たすように、特定の部分の値(v)のすべてを演繹することが不可能な関数であることを特徴とする請求項2に記載の方法。
【請求項4】
前記関数fが、ビット毎の「排他的論理和」関数であり、前記中間変数又は中間結果(v)と部分中間変数(v、...、v、...、v)が、関係式
【数1】

を満たすことを特徴とする請求項3に記載の方法。
【請求項5】
nを法とする整数のすべてによって定義される乗法群Z/nZにおける値を有する中間変数(v)に対して、前記関数fが、nを法とする積関数f(v、...、v)=v・v・...・v modulo nであり、前記部分中間変数(v、...、v、...、v)が、前記乗法群Z/nZにおける値を有する変数であることを特徴とする請求項3に記載の方法。
【請求項6】
前記関数fが、前記部分中間変数(v、...、v、...、v)と前記中間変数(v)をリンクし、並行に実行される別個の暗号化計算方法の部分(PPC〜PPC)が、互いに独立しており、前記並行に実行される別個の暗号化計算方法の部分(PPC〜PPC)が、前記標準の暗号化計算方法によって用いられる入力データ又は出力データに依存する中間変数(v)を再構成することなく実行されることを特徴とする請求項3に記載の方法。
【請求項7】
分割が、並行に実行される2つの別個の部分に行われることを特徴とする請求項1に記載の方法。
【請求項8】
分割が、k個の部分に行われ、
変換されたn個の出力ビットが、m個の入力ビットの関数であるアドレスで読み取られる変換テーブルによって記載される、m個のビットからn個のビットへの非線形変換を用いる標準の暗号化計算方法に対して、分割することなく標準の暗号化計算方法の中間変数に適用される非線形変換の各々が、前記部分中間変数のすべてに適用されるk×m個のビットからk×n個のビットへの部分非線形変換によって置き換えられ、
前記部分非線形変換が、前記変換されたn個の出力ビットが、前記k×m個の入力ビットの関数であるアドレスで読み取られるk個の部分変換テーブルで記載されることを特徴とする請求項1に記載の方法。
【請求項9】
前記k個の部分変換テーブルの内、(k−1)個の部分変換テーブルが、秘密ランダム変数を含んでいることを特徴とする請求項8に記載の方法。
【請求項10】
各非線形変換テーブルを置き換えるように用いられるk個の部分変換テーブルの内、同じ(k−1)個の秘密ランダムテーブルが、毎回用いられることを特徴とする請求項8に記載の方法。
【請求項11】
分割が、k個の部分に行われ、
前記変換されたn個の出力ビットが、前記m個の入力ビットの関数であるアドレスで読み取られる変換テーブルによって記載されるm個のビットからn個のビットへの非線形変換を用いる標準の暗号化計算方法に対して、分割することなく前記標準の暗号化計算方法の中間変数に適用される非線形変換が、前記部分中間変数のすべてに適用されるk×m個のビットからk×n個のビットへの部分非線形変換によって置き換えられ、
前記変換された出力ビットの内の(k−1)×n個のビットが、前記k×m個の入力ビットの多項式関数として計算され、
前記出力ビットの内の残余のn個のビットが、前記k×m個の入力ビットの関数であるアドレスで読み取られる変換テーブルを読み取ることによって得られることを特徴とする請求項1に記載の方法。
【請求項12】
分割が、k個の部分に行われ、
前記変換されたn個の出力ビットが、前記m個の入力ビットの関数であるアドレスで読み取られる変換テーブルによって記載されるm個のビットからn個のビットへの非線形変換を用いる標準の暗号化計算方法に対して、分割することなく前記標準の暗号化計算方法の中間変数に適用される各非線形変換が、前記部分中間変数のすべてに適用されるk×m個のビットからk×n個のビットへの部分非線形変換によって置き換えられ、
前記部分非線形変換が、k個の変換テーブルによって記載され、
前記変換テーブルの各々が、関係式φ○f(v、...、v)、j∈[1、k]に従って、前記部分中間変数の関数f(v、...、v)に対して秘密全単射関数φを適用することによって得られる値を入力として受容し、
φ○f(v、...、v)の適用が、結果として生じる値を、直接的に評価することによって実行され、
前記結果として生じる値が、前記変換テーブルの入力に適用され、これによって、前記m個の入力ビットの関数であるアドレスで、前記変換されたn個の出力ビットを読み取ることが可能であることを特徴とする請求項2に記載の方法。
【請求項13】
前記k個の部分変換テーブルの内、(k−1)個の部分変換テーブルが、秘密ランダム値を包含することを特徴とする請求項12に記載の方法。
【請求項14】
各非線形変換テーブルを置き換えるように用いられるk個の部分変換テーブルの内、同じ(k−1)個の秘密ランダム変換テーブルが、毎回用いられることを特徴とする請求項12に記載の方法。
【請求項15】
前記暗号化計算方法を複数の別個の暗号化計算方法の部分に分割したことに起因する様々な部分において実行される動作が、連続的に実行されることを特徴とする請求項1に記載の方法。
【請求項16】
前記暗号化計算方法を複数の別個の暗号化計算方法の部分に分割したことに起因する様々な部分において実行される動作が、インタリーブ形式で実行されることを特徴とする請求項1に記載の方法。
【請求項17】
前記暗号化計算方法を複数の別個の暗号化計算方法の部分に分割したことに起因する様々な部分において実行される動作が、マルチプログラミングの場合では、同時並行的に実行されることを特徴とする請求項1に記載の方法。
【請求項18】
前記暗号化計算方法を複数の跋扈の暗号化計算方法の部分に分割したことに起因する様々な部分において実行される動作が、並行に動作する別々のプロセッサで同時に実行されることを特徴とする請求項1に記載の方法。
【請求項19】
請求項1に記載の方法をスマートカードで利用することを特徴とする方法。
【請求項20】
DES、トリプルDES及びRSAアルゴリズムによってサポートされる暗号化計算方法を保護するために、請求項1に記載の方法を利用することを特徴とする方法。

【図1a】
image rotate

【図1b】
image rotate

【図2】
image rotate

【図3a】
image rotate

【図3b】
image rotate

【図3c】
image rotate

【図3d】
image rotate

【図3e】
image rotate


【公開番号】特開2010−72664(P2010−72664A)
【公開日】平成22年4月2日(2010.4.2)
【国際特許分類】
【出願番号】特願2009−297838(P2009−297838)
【出願日】平成21年12月28日(2009.12.28)
【分割の表示】特願2000−597921(P2000−597921)の分割
【原出願日】平成12年2月3日(2000.2.3)
【出願人】(505304964)セー・ペー・8・テクノロジーズ (1)
【Fターム(参考)】