(57)【要約】  特に秘密鍵を見出すことを目的とした、例えば電磁放射（ＥＭ）攻撃のような攻撃、又は例えば差分電力解析（ＤＰＡ）のような解析が安全に回避される、少なくとも１つのデータ処理装置、特に例えば少なくとも１つのチップカード又はスマートカードのような少なくとも１つの埋め込みシステムを、少なくとも１つの攻撃、特に例えば少なくとも１つの電流追跡解析のような少なくとも１つのサイドチャネル攻撃から保護するための装置及び方法であって、前記データ処理装置、特に前記データ処理装置の少なくとも１つの集積回路が、計算、特に暗号演算を実行する装置及び方法を更に発展させるため、前記計算のオペランドを反転することなく、少なくとも１つのランダム的な変数により、前記計算の全ての中間結果を隠蔽することが提案される。
2009500892.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのデータ処理装置、特に例えば少なくとも１つのチップカード又はスマートカードのような少なくとも１つの埋め込みシステムを、少なくとも１つの攻撃、特に例えば少なくとも１つの電流追跡解析のような少なくとも１つのサイドチャネル攻撃から保護するための装置であって、前記データ処理装置、特に前記データ処理装置の少なくとも１つの集積回路が、計算、特に暗号演算を実行する装置において、前記計算のオペランドを反転することなく、少なくとも１つのランダム的な変数により、前記計算の全ての中間結果を隠蔽することを特徴とする装置。
【請求項２】
前記ランダム的な変数は、
前記計算の全体の間一定に保たれ、
新たな計算が開始されたときに変化させられる
ことを特徴とする、請求項１に記載の装置。
【請求項３】
前記計算は、ＲＳＡアルゴリズム及び／又は楕円曲線暗号アルゴリズムに基づくことを特徴とする、請求項１又は２に記載の装置。
【請求項４】
モンゴメリ還元又は他のタイプの還元を利用することを特徴とする、請求項１乃至３のいずれか一項に記載の装置。
【請求項５】
前記オペランド、特に全てのオペランドと、前記計算の結果、特に全ての結果を保存するための、少なくとも１つのメモリユニットと、
前記メモリユニットに接続された少なくとも１つの乗算ユニットと、
少なくとも１つの状態機械と、
を有し、前記状態機械は、
必要とされるタイプの計算を実行するために前記乗算ユニットを制御し、
前記メモリユニットから入力オペランドを読み取り、及び／又は
前記計算の結果、特に全ての結果を、前記メモリユニットに書き込むことを特徴とする、請求項１乃至４のいずれか一項に記載の装置。
【請求項６】
前記乗算ユニットは、
少なくとも１つのｃレジスタモジュールと、
少なくとも１つのｒレジスタモジュールと、
前記ｃレジスタモジュールに接続された少なくとも１つの第１の全加算モジュールと、
前記ｒレジスタモジュールに接続された少なくとも１つの第２の全加算モジュールと、
前記結果の範囲を決定する少なくとも１つの範囲モジュールと、
を有することを特徴とする、請求項５に記載の装置。
【請求項７】
データ処理装置、特に例えばチップカード又はスマートカードのような埋め込みシステムのようなデータ処理装置であって、計算、特に暗号演算を実行する少なくとも１つの集積回路を有するデータ処理装置において、請求項１乃至６のいずれか一項に記載の装置を有することを特徴とするデータ処理装置。
【請求項８】
少なくとも１つのデータ処理システム、特に例えば少なくとも１つのチップカード又はスマートカードのような少なくとも１つの埋め込みシステムを、少なくとも１つの攻撃、特に例えば少なくとも１つの電流追跡解析のような少なくとも１つのサイドチャネル攻撃から保護するための方法であって、前記データ処理装置、特に前記データ処理装置の少なくとも１つの集積回路が、計算、特に暗号演算を実行する方法において、前記計算のオペランドを反転することなく、少なくとも１つのランダム的な変数により、前記計算の全ての中間結果を隠蔽することを特徴とする方法。
【請求項９】
前記ランダム的な変数は、
前記計算の全体の間一定に保たれ、
新たな計算が開始されたときに変化させられる
ことを特徴とする、請求項８に記載の方法。
【請求項１０】
前記計算は、ＲＳＡアルゴリズム及び／又は楕円曲線暗号アルゴリズムに基づくことを特徴とする、請求項８又は９に記載の方法。
【請求項１１】
モンゴメリ還元又は他のタイプの還元を利用することを特徴とする、請求項８乃至１０のいずれか一項に記載の方法。
【請求項１２】
差分電力解析から保護されるべき少なくとも１つの請求項７に記載のデータ処理装置における、請求項１乃至６のいずれか一項に記載の装置、及び／又は請求項８乃至１１のいずれか一項に記載の方法の使用。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、暗号解析を防ぐ技術分野に関し、特に少なくとも１つの攻撃に対して、例えば少なくとも１つの電磁（Electro Magnetic、ＥＭ）放射攻撃に対して、又は少なくとも１つの解析に対して、例えば少なくとも１つの差分電力解析（Differential Power Analysis、ＤＰＡ）に対して、少なくとも１つのデータ処理装置を保護する技術分野に関する。
【０００２】
更に詳細には、本発明は、少なくとも１つのデータ処理装置、特に例えば少なくとも１つのチップカード又はスマートカードのような少なくとも１つの埋め込みシステムを、少なくとも１つの攻撃、特に例えば少なくとも１つの電流追跡解析のような少なくとも１つのサイドチャネル攻撃から保護するための装置及び方法であって、前記データ処理装置、特に前記データ処理装置の少なくとも１つの集積回路が、計算、特に暗号演算を実行するための装置及び方法に関する。
【背景技術】
【０００３】
特にチップカード又はスマートカードのような埋め込みシステムのようなデータ処理装置は、鍵を交換するために公開鍵基盤（ＰＫＩ）システムを利用し、秘密鍵を見出すことを目的とする幾つかの形態の攻撃に対して保護される必要がある。斯かる攻撃の１つは、
−チップ上の、特にむき出しの（従って光に敏感な）チップ上の、１以上の光源、又は
−チップ上の、何らかの種類の電磁（ＥＭ）放射源を目標とすることにより、計算、特に暗号演算に影響を与えることである。
【０００４】
ＲＳＡ（Rivest-Shamir-Adleman）アルゴリズム及び／又は楕円曲線暗号（Elliptic  Curve Cryptography、ＥＣＣ）アルゴリズムに基づく計算のためには、多くの乗算が必要とされる。通常これらの計算は、例えば電流追跡解析のような、サイドチャネル攻撃に対する保護なく実行される。
【０００５】
このことは、ＤＰＡ攻撃に対して脆弱であり得る。なぜなら、同一の乗算が実行される度に、攻撃者が多くの電流追跡を為し得るからである。これらの追跡を加算した後には、ノイズの殆どが除去される。攻撃者が異なる入力に対し同一のことを実行すると、該攻撃者は電流追跡を比較し、ビット毎に秘密鍵を知ることができる。
【０００６】
国際特許出願公開WO01/97009A1の先行技術文献は、モジュール型のべき乗ルーティンを有する暗号計算のための方法を開示している。該既知の方法は、中間結果を隠蔽するための２つのランダム的な変数を用いて動作する。これに関連して、国際特許出願公開WO01/97009A1の先行技術は、ランダム的な変数の加算を用いて動作するが、乗算演算のみが隠蔽される。
【０００７】
しかしながら、結果が次の計算のために利用される前に、該結果は最初に隠蔽されず、該結果はやはり脆弱になる。乗算はＤＰＡに対して敏感であるのみならず、隠蔽されていない結果のランダムアクセスメモリ（ＲＡＭ）のアクセスに対しても敏感である。
【０００８】
Jean-Sebastien Coron及びLouis Goubinによる先行技術の論文「On Boolean and Arithmetic Masking against Differential Power Analysis」は、ＤＰＡ攻撃を議論し、全ての入力及び出力をマスキングすることを提案している（第２頁、第４及び５段落）。第５段落は乗算によるＲＳＡのマスキングを議論しており、Thomas S. Messergesによる「Securing the AES Finalists Against Power Analysis Attacks」（FSE 2000、Springer-Verlag）に参照が為されている。
【０００９】
Radu Muresanによる先行技術の論文「Modeling and applications of current dynamics in a complex processor core」は、ＥＣＣを適用する前に楕円曲線上の点を隠蔽することを言及している（第33乃至37頁）。
【００１０】
本発明の技術的な背景に関して、更なる参照が、以下に対して為され得る：
−Luca Benini、Angelo Galati、Alberto Macii、Enrico Macii及びMassimo Poncinoによる先行技術の論文「Energy-Efficient Data Scrambling on Memory-Processor Interfaces」、
−Tom Lashによる先行技術の論文「A Study of Power Analysis and the Advanced Encryption Standard - Recommendations for Designing Power Analysis Resistant Devices」、
−欧州特許出願公開EP1014617A2、
−欧州特許出願公開EP1267514A9、
−英国特許出願公開GB2345229A、
−米国特許出願公開US2003/0194086A1、
−国際特許出願公開WO00/42511A1、
−国際特許出願公開WO01/08012A1、
−国際特許出願公開WO01/31436A1、
−国際特許出願公開WO02/50658A1、
−国際特許出願公開WO03/101039A1、及び
−Larry T. McDaniel IIIによる先行技術の論文「An Investigation of Differential Power Analysis Attacks on FPGA-based Encryption Systems」。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述した欠点及び短所を発端とし、議論されたような先行技術を考慮に入れ、本発明の目的は、本技術分野における上述したような装置、及び本技術分野における上述したような種類の方法を更に発展させ、特に秘密鍵を見出すことを目的とした、例えばＥＭ放射攻撃のような攻撃、又は例えばＤＰＡのような解析を、安全に回避することを可能とすることにある。
【課題を解決するための手段】
【００１２】
本発明の目的は、請求項１の特徴を有する装置、及び請求項８の特徴を有する方法により達成される。本発明の有利な実施例及び好適な改良は、それぞれの従属請求項に開示される。
【００１３】
本発明は主に、非脆弱性、特にＤＰＡに対する非脆弱性を提供するため、中間結果を隠蔽するための装置及び方法を利用するという発想に基づく。とりわけ、斯かる隠蔽は例えば、少なくとも１つのランダム的な変数を利用することにより、計算、特に暗号演算に含まれる加算により、乗算において利用される。ここで、オペランドの逆数の計算は必要とされない。
【００１４】
より具体的には、メッセージMが変数Vによって隠蔽されることができる。該変数Vは、ランダム的に選択された変数vから導出されることができる。このようにして、全ての中間結果もが隠蔽される。これら中間結果は、計算の終了まで、特に暗号演算の終了まで、隠蔽されたままとなる。
【００１５】
本発明の好適な実施例によれば、ＲＳＡ計算全体の間又はＥＣＣ計算の全体の間一定に保たれるが、新たな計算が開始されると変化させられるランダム的な変数によって、全ての中間結果が隠蔽される。これにより、全ての入力が同一である場合であっても、全ての電流追跡が変化させられる。なぜなら、ランダム的な変数は同一でないからである。
【００１６】
本発明の好適な実施例においては、モンゴメリ還元（Montgomery reduction）の原理が利用される。モンゴメリ還元は、Peter L. Montgomeryによって1985年に発表された、モジュール型計算における乗算のための効率的なアルゴリズムである。より具体的には、モンゴメリ還元は、c=ab・mod(n)を計算するための方法であり、ここでa、b及びnはkビットのバイナリ数である。
【００１７】
モンゴメリ還元は、ここでは特に暗号化に適用される。mを正の整数とし、R及びTをR>m、gcd(m,R)=1且つ0≦T<mRとなる整数とする。ここでgcdは最大公約数（greatest common divisor）である。古典的な方法を使わずにTR-1mod(m)を算出することは、Rに対するTモジュロmのモンゴメリ還元と呼ばれる。Rの適切な選択により、モンゴメリ還元が効率的に計算されることができる。
【００１８】
有利にも、本発明はモンゴメリ還元に限定されるものではなく、本発明は他の還元原理にも適合されることができる。
【００１９】
本発明はオペランドの逆数を計算する能力を必要とせず、このことはＲＳＡアプリケーションに好適であり得る。
【００２０】
本発明は更に、計算、特に暗号演算を実行する少なくとも１つの集積回路を有する、データ処理装置、特に例えばチップカード又はスマートカードのような埋め込みシステムに関する。ここで前記集積回路は、
−少なくとも１つの攻撃に対して、特に少なくとも１つのＥＭ放射攻撃に対して、又は
−少なくとも１つの暗号解析に対して、特に少なくとも１つのＤＰＡに対して、
前記計算のオペランドを反転させることなく、少なくとも１つのランダム的な変数によって、前記計算の全ての中間結果を隠蔽することにより、保護される。
【００２１】
本発明は最後に、ＤＰＡに対して保護されるべき上述したような少なくとも１つのデータ処理装置における、上述したような少なくとも１つの装置の使用、及び／又は上述したような方法の使用に関する。
【００２２】
既に上述したように、本発明の教示を有利な態様で実施化及び改善する幾つかの選択肢がある。この目的のため、請求項１に従属する及び請求項８に従属する請求項に参照が為される。本発明の更なる改善、特徴及び利点は、例として示される好適な実施例及び添付図面を参照しながら、以下により詳細に説明される。
【発明を実施するための最良の形態】
【００２３】
図１乃至図４において、対応する部分には同一の参照番号が用いられる。
【００２４】
データ処理装置の実施例、即ち暗号演算を実行する集積回路（ＩＣ）を有するチップカード又はスマートカードの形をとる埋め込みシステムは、ＰＫＩシステムを参照し、本発明の方法に従って動作する。即ち、保護装置１００（図４を参照）により不正使用及び／又は操作から保護される。
【００２５】
本発明は、オペランドの逆数を計算する能力を必要としない。
【００２６】
本集積回路の暗号計算は、ＲＳＡアルゴリズムに基づくものであっても良い（米国特許US4405829、又はRon Rivest、Adi Shamir及びLen Adlemanによる先行技術の論文「A Method for Obtaining Digital Signatures and Public-Key Cryptosystems」（Communications of the ACM、21(2)、120-126頁、1978年2月を参照）。該アルゴリズムは暗号化C=Memod(N)を計算するためのものであり、ここで、
Mは暗号化されるべきメッセージであり、
N=p・qであり、
eは(p-1)(q-1)と互いに素であり、
dはxedmod[(p-1)(q-1)]=1であるような数である。
復号化はM=Cdmod(N)を計算する。
【００２７】
Me（又はCd）を計算するための方法の１つは、以下のとおりである：
第１のステップ：R=1から始める。
第２のステップ：左から右へと指数eを走査する。
第３のステップ：R=R2mod(N)を常に計算する。
第４のステップ：eの走査されたビットが１である場合、R=R・M・mod(N)が更に計算される。
【００２８】
かくして、本計算は幾つかの二乗及び乗算を有する。
【００２９】
係数Nがnビットから成る幾つかの語mを有すると仮定する。即ち、
N=nm-1Bm-1+nm-2Bm-2+...+n1B+n0（ここでB=2n）である。
【００３０】
モジュール還元の後、変数はnビットから成るm個の語を有するが、最上位語（ＭＳＷ）は更に数ビットを持ち得る。モジュール還元の前に、結果は更なる語（通常は１）を持つ。
【００３１】
以下により詳細に示されるように、本発明は最初に、１つの語のランダム的に選択された変数vを用いて、Mを隠蔽する。該ランダム的に選択された変数vは、Mmod(N)の全ての語から減算される。V=(Bm-1+Bm-2+...+B+1)vを用いると、Mは、M=M-Vmod(N)として計算されることができる。本文脈においては、下線は変数が隠蔽されることを示す。次いで、結果RがVによって同様に隠蔽されるように、乗算及び二乗が変更される。従って、全ての中間結果も隠蔽される。次いで最後の端において、べき乗が準備状態となると、結果が非隠蔽化される。
【００３２】
更に詳細には、初期隠蔽の最初の段階において、vをnビットのランダム的に選択された変数であるとする。還元を容易化するための更なる条件はv<nm-1であり得るが、nm-1が幾つかの先行ゼロを持つ場合には、該条件は隠蔽を危うくする。なぜなら、vが常に、少なくとも同じ数の先行ゼロを常に受信することになるからである。
【００３３】
次いで、ランダム的に選択された変数vが、Mの全ての語から減算される。結果が負である場合には、N又は2Nが加算される。しかしながら、結果が負であるか否かを事前に知ることが好ましい。
【００３４】
このため、最初にMm-1-v-1+nm-1が計算される：
−結果がオーバフローする場合には、M-Vが計算される。
−結果が正でありオーバフローしない場合には、M-V+Nが計算される。
−結果が負である場合には、M-V+2Nが計算される。
【００３５】
vの減算はその２の補数を利用することにより為される。即ち、
-V=-Bm+(B-v-1)Bm-1+...+(B-v-1)B+(B-v-1)+1である。従って、Bmについて予期される全ての正の数が加算される。項-Bmは利用されないが、他の変数に対する(B-v-1)Bm-1+...+(B-v-1)B+(B-v-1)+1の加算がキャリービットを与える場合には、項-Bmは無視される。
【００３６】
上述の計算の数学的実装は、以下のようになる：
c=1
if Mm-1-v-1+nm-1≧B
for j=0 to m-1: Bc+Rj=Mj+(B-v-1)+c
else if Mm-1-v-1+nm-1≧0
for j=0 to m-1: Bc+Rj=Mj+(B-v-1)+c+nj
else
for j=0 to m-1: Bc+Rj=Mj+(B-v-1)+c+2nj
【００３７】
第４のステップ、即ち保護のないＲＳＡ計算即ち乗算のステップにおいて、以下の計算が実行される：
R=X*Ymod(N)
X=xm-1Bm-1+xm-2Bm-2+...+x1B+x0
Y=ym-1Bm-1+ym-2Bm-2+...+y1B+y0
B=2n
ここで、mは語の数であり（例えばm=16）、nは語のビットの数である（例えばn=64）。
【００３８】
図１は、４つの語についての、即ちm=4についての、モジュール乗算X*Yの例を与える。Yの１つの語が完全なXにより乗算される度に、以前の結果Rが加算される。次いで、該結果が還元される。図１の例においては、モンゴメリ還元（図１における参照記号Ｍｒ）により還元される。次いで、Yの全ての語が利用されるまで、この手順がYの次の語について繰り返される。
【００３９】
該乗算のサブステップにおいて、XYj+Rが計算され、次いでモンゴメリ還元Ｍｒが実行される。このことは、以下のように為される：
C=0;
for i=0 to m-1 {(BC+Ri)=XiYj+Ri+C}
Rm=C
【００４０】
保護の場合には、全てのオペランドがVにより隠蔽されることが想定される。即ち、
V=(Bm-1+...+B+1)v
【００４１】
次いで、X=X-Vmod(N)、Y=Y-Vmod(N)及びR=R-Vmod(N)が計算される。
【００４２】
最初に、Yjが非隠蔽化される：
キャリーを与える場合にはvが全ての語Yjに加算され、次に高次の語Yj+1に加算される：
Bc+Yj=Yj+v+c
【００４３】
ここで、R'=XYj+R+VYj-Bmv=(X-V)Yj+R-V+VYj-Bmv=XYj+R-V-Bmv=R'-Vが計算される。項-Bmvは積XYjのＭＳＷ（インデクスm）を隠蔽するためのものである。従って、新たな結果R'もまたVによって隠蔽される。それ故、VYj-BmVが乗算XYj+Rに加算される必要があり、このことはvYj=BWH+WLと記述されることができる。
【００４４】
このことは、以下のアルゴリズムに帰着する：
C=0;
Bc+Yj=Yj+v+c;
BWH+WL=vYj;
for i=0 to m-1: {(BC+Ri)=XiYj+BWH+WL+Ri+C}
Rm=C-v
【００４５】
j=0について、隠蔽の一部を実行したRの加算なく、R=XYが計算される必要がある。この場合、XY0-Vが代わりに計算される：
C=0;
Bc+Y0=Y0+v+c;
BWH+WL=vY0
for i=0 to m-1: {(BC+Ri)=XiY0+BWH+WL-v+C}
Rm=C-v
【００４６】
付加的な還元のサブステップに関しては、モンゴメリ還元Ｍｒは１つの語の分だけ還元し、このことは不十分であり得る。乗算の間、R'=XYj+R+VYj-Bmvが計算される。本文脈において、Yj=B-1について、VYj-Bm=-vであることは留意されるべきである。0≦X<Bm、0≦Yj<B、0≦R<Bm及び0≦v<Bであると、Bm+1<R'<Bm+1となる。中間結果は負となり得る。
【００４７】
乗算及び還元の全体の結果は、R''=(NQ+XYj+R+VYj-Bmv)/Bである。Yjが最大値B-1を持つと仮定すると、(VYj-Bmv)/B=-v/B>-1であり、従ってこれら項は無視され得る。
【００４８】
この場合、R<N+Xである場合には、R''<N+Xも成り立つことが証明され得る。従ってR及びそれ故R''は多くとも１ビットだけ大きいが、幾つかの計算の間累積しない。最後の端においてのみ、即ちYm-1が利用される場合にのみ、多くとも２度Nを減算することによる付加的な還元が実行される必要がある。
【００４９】
他方の端において、Q=0且つYj-1=0である場合、R>-vBm-1である場合には、R''>-vBm-1も成り立つことが証明され得る。従って、R''は負となり得るが、幾つかの付加的な還元の間累積しない。従って、結果が負のままとなる。最後の端においてのみ、即ちYm-1が利用される場合にのみ、多くとも２度Nを加算することによる付加的な還元が実行される必要がある。
【００５０】
上述の計算は更に、以下のことを意味する：
−次のYjがロードされる度に、最初にvが加算される必要があり、次いでvYj=BWH+WLが事前に計算される必要があり、WH及びWLが保存される必要がある。このことは付加的な乗算であり、これにより計算時間が長くなり得る。
−BWH+WLが乗算の間に加算される必要があり、このことは乗算器１０（図３及び４を参照）に対する付加的な加算入力を意味する。
−還元の最後の乗算の間、vが当該結果の上部から減算される必要があり、このこともまた乗算器１０（図３及び４を参照）の適合を必要とする。
【００５１】
第３のステップ、即ち保護のないＲＳＡ計算即ち二乗のステップにおいて、図２は、４つの語についての、即ちm=4についての、通常のＲＳＡ二乗の第１のサブステップ及びモンゴメリ還元（図２における参照記号Ｍｒ）を示す。
XHj=Bm-1Xm-1+...+Bj+1Xj+1（即ちXj+1から始まるXの全ての項）であり、
RHj=Bm-1Rm-1+...+Bj+1Rj+1（即ちRj+1から始まるRの全ての項）であるが、
RH0=0である。
【００５２】
一般に、Xj2+Rj及び2XHjXj+RHj+Cが計算され、次いでモンゴメリ還元（図２における参照記号Ｍｒ）が実行される。
【００５３】
第３のステップ、即ち保護のないＲＳＡ計算即ち二乗のステップにおいて、全てのオペランドがVにより隠蔽されることが仮定される。即ち、
V=(Bm-1+...+B+1)v
【００５４】
X=X-Vmod(N)及びR=R-Vmod(N)を計算した後、最初にXjが非隠蔽化される。vが全ての語Xjに加算される。キャリーを与える場合には、次に高次の語Xj+1に加算される：Bc+Xj=Xj+v+c
【００５５】
ここで、二乗のために、以下が計算される：
BC+Rj'=XjXj+Rj+vXj=(Xj-v)Xj+Rj+vXj=Xj2+Rj
【００５６】
隠蔽されたRjの加算は、項Rj'を再び隠蔽する。
【００５７】
二重積については、
RHj'=2XHjXj+RHj+C+2VHjXj-Bmv=2XHjXj+RHj+C-Bmv
であり、ここでVHj=(Bm-1+...+Bj+1)vである。
【００５８】
項RHjは、j+1からm-1に亘るインデクスを持つ全ての項を隠蔽する。項-Bmvは、結果（Rm）のＭＳＷを隠蔽する。0からj-1に亘るインデクスを持つ全ての項Rは変化させられず、それ故隠蔽される。
【００５９】
従って、新たな結果R'もまたVにより隠蔽される。
【００６０】
それ故、vXjが二乗に加算される必要があり、2VHjXj-Bmvが二重積に加算される必要がある。
【００６１】
j=0については、隠蔽の一部を実行したRの加算なくR=X2が計算される必要があり、この場合においては、代わりにXX0-Vが計算される。
【００６２】
このことは、以下のアルゴリズムを与える：
//j=0
Bc+X0=X0+v;
BWH+WL=VX0;
BC+R0=X0X0+BWH+WL-v;
for i=1 to m-1: {BC+Ri=2X0X0+B2WH+2WL-v+C}
Rm=C-v;
R=Montgomery(R);
//j>0
for j=1 to m-1:
{   Bc+Xj=Xj+v+c;
BWH+WL=vXj;
BC+Rj=XjXj+BWH+WL+Rj;
for i=j+1 to m-1: {BC+Ri=2XiXj+B2WH+2WL+Ri+C}
Rm=C-v;
R=Montgomery(R);
}
【００６３】
付加的な還元のサブステップにおいて、モンゴメリ還元（図２における参照記号Ｍｒ）は１語だけ還元し、このことは不十分であり得る。
【００６４】
乗算の間、
R=(XjXj+Rj+vXj)Bj+2XHjXj+RHj+2VHjXj-Bmv
が計算される。ここで
R<2XHj-1Xj+RHj-1+2VHj-1Xj-Bmv
である。
【００６５】
Xj<B、XHj-1<Bm-Bj、VHj-1<Bm-Bj、v<Bとすると、R'<3Bm+1となる。vを除く全ての変数がゼロとすると、R'>-Bm+1となる。中間結果は負となり得、正である場合には２ビットだけオーバフローし得る。
【００６６】
乗算及び還元の全体の結果は、
R''<(NQ+2XHj-1Xj+RHj-1+2VHj-1Xj-Bmv)/B
となる。
【００６７】
R<N+2XHj-1+2VHj-1-Bmである場合には、
R''<N+2XHj-1+2VHj-1-Bm<3Bm+N<4Bm
も成り立つことが、証明され得る。
【００６８】
従って、R及びそれ故R''は多くとも２ビットだけ大きいが、幾つかの計算の間累積しない。従って、最後の１つを除いて、全ての還元について残される。
【００６９】
しかしながら最後の還元は、１つの乗算を伴い、二重積を伴わずに終了する。このことは、乗算と同一の結果を与える（保護のない乗算の間の付加的な還元のサブステップを参照）。
【００７０】
上述した計算は更に、乗算の間、BWH+WLの他に、2(BWH+WL)もが加算される必要があることを示している。このことは、BWH+WLのための付加的な加算器が、入力をシフトするために入力部において多重化器を持つことを意味している。
【００７１】
ＥＣＣについては（M. Ernst、M. Jung、F. Madlenerらによる先行技術の論文「A Reconfigurable System on Chip Implementation for Elliptic Curve Cryptography over GF(2n)」、381-399頁を参照）、楕円曲線及び該曲線上の点Pが選択される。
【００７２】
第１のインスタンスＡにおいて、ランダム的な数aが選択される。公開鍵としてaPが計算され第２のインスタンスＢに送信される。第２のインスタンスＢにおいても、ランダム的な数bが選択される。公開鍵としてbPが計算され第１のインスタンスＡに送信される。次いで第１のインスタンスＡはK=a(bP)を計算し、第２のインスタンスＢはK'=b(aP)を計算する。ここでK=K'であり、このことは２つのインスタンスＡ及びＢの共通の秘密である。
【００７３】
基本的な演算は、スカラaによる点Pの乗算である。該乗算は、（a回）繰り返される点の加算：X=aP=P+P+...+Pである。該加算は点Pから開始され、スカラaが左から右へと走査される。即ち、
−R=Pで開始；
−スカラaを左から右へと走査：
−−R=2Rmod(N)を常に計算（所謂点倍算（point doubling））
−−aの走査されたビットが1である場合、R=R+Pmod(N)が更に算出される（所謂点加算（point addition））。
【００７４】
所謂点倍算のためのアルゴリズム及び所謂点加算のためのアルゴリズムは、XYmod(N)及びX2mod(N)のような演算を利用するが（ＲＳＡアルゴリズムのように）、
R=X+Ymod(N)及びR=X-Ymod(N)のような演算にもよる。
【００７５】
点倍算アルゴリズム及び点加算アルゴリズムはまた、X-1を計算する逆数演算を必要とし、ここでXX-1mod(N)=1である。
【００７６】
隠蔽は逆数には適しておらず、従ってオペランドは最初に非隠蔽化され、次いで反転され、次いで再び隠蔽される。このことは問題とはならない。なぜなら、殆どのアルゴリズムは、１つの反転のみを持つ投射座標を用いて動作し、最後まで後回しにされるからである。他にも逆数演算を隠蔽する既知の方法がある。
【００７７】
ＥＣＣのための語の数は、ＲＳＡのための語の数よりもかなり少ない。それ故、最初に加算／減算を伴う完全な乗算が、還元の前に実行される。ＲＳＡのように、乗算と還元とをインタリーブすることも可能である。
【００７８】
ここで、モンゴメリ還元が利用されるが、隠蔽は他のタイプの減算のために設計されても良い。
【００７９】
最初の段階、即ち初期隠蔽において、該初期隠蔽は、ＲＳＡアルゴリズムについて上述したものと同一の方法で実行されるが、ここでは点Pの両方の座標が隠蔽される必要がある。全ての演算は、同一の方法で隠蔽される結果をもたらす。
【００８０】
第２の段階、即ち乗算（XYmod(N)）及び二乗（X2mod(N)）において、これら演算の隠蔽は、ＲＳＡアルゴリズムについて上述したものと同一の方法で実行される。
【００８１】
最後のステップ、即ち付加的な還元（R=X±Ymod(N)）においては、
−加算の場合、R=X+Y+V=(X-V)+(Y-V)+V=R-Vが計算され、
−減算の場合、R=X-Y-V=(X-V)-(Y-V)-V=R-Vが計算される。  
【００８２】
本発明の実装は、少なくとも部分的にソフトウェアベースであっても良い。これに関連して、ＲＳＡプログラミング及び／又はＥＣＣプログラミングに適したプロセッサが、上述した付加的な還元アルゴリズムを実装しても良い。
【００８３】
本発明による保護装置１００のハードウェア実装の例が、図３及び４に示される。最大限の速度のため、図３に例示された乗算ユニット１０は、以下の式を計算することが可能である：
Bc+r=xy+Bu-kBx+z+c (k=-2,...,3)
【００８４】
ここでrは、XY±Zの乗算についての例えばn2q+Br5-Bkn2+c2+c又はxy±Bz+r+cについての結果の最下位語（ＬＳＷ）であり、cはＭＳＷである。
【００８５】
乗算器１０は、
（ｉ）積xyを計算する；
（ii）必要であれば、該積xyの下部にzを加算する；
（iii）必要であれば、該積xyの下部にｃレジスタ１４ｃの内容を加算する；
（iv）必要であれば、該積xyの上部にuを加算する；
（ｖ）必要であれば、該積xyの上部にxの倍数を加算又は減算する；
（vi）結果の下部をｒレジスタ１４ｒに保存する；
（vii）結果の上部を、次の計算における利用のため、ｃレジスタ１４ｃに保存する。
【００８６】
更に図３から分かるように、乗算器１０は、
−結果rのための全加算器１６ｒと、
−乗算が完了したときのキャリーのための全加算器１６ｃと、
−どの範囲（2pに対して）に結果が存在するかを決定する範囲器１８と、
を有する。
【００８７】
乗算器１０を例えば２ビットのルックアップテーブルを用いて構築することは有利である。なぜならこのとき、xの倍数（特に3x）が既に利用可能であるからである。
【００８８】
これとは独立して、又はこれに加えて、キャリー保存加算器を用いて合計を実行し、ｒレジスタ１４ｒについてのみ全加算器１６ｒを利用することも有利である。この場合、cは２つの語、即ちキャリーとキャリー保存加算器の合計とを有する。次いでｃレジスタ１４ｃが倍算され、入力cもまた２つの語を有する。
【００８９】
範囲器１８は、結果Bc+rがf2p/Bm-1よりも小さいか否かを決定する必要がある。ここでfは以下の値、即ち0、3/4又は1（Reについて）、及び-7/8、-3/4、-1/2、0、3/4、7/8、1、3/2、7/4及び2を持つ。結果Bc+rが正であるか負であるかは、符号ビットをみることにより分かる。例えば値7/8については、位置p-2m-1から下の４ビットは0111である。p=Bmである場合、これら４ビットはcのＭＳＢである。
【００９０】
乗算器１０はメモリ２０に接続され（図４における参照記号１２ａ及び１２ｂ）、メモリ２０において全てのオペランドが保存される。前記結果もまた該メモリ２０に保存される。
【００９１】
更に状態機械３０が存在し、該状態機械３０は、
−必要とされるタイプの計算を実行するため乗算器１０を制御し、
−keの値及びkの値を選択し、
−メモリ２０から入力オペランドを読み込み、
−結果をメモリ２０に書き込む。
【図面の簡単な説明】
【００９２】
【図１】４つの語に対するモジュール型乗算の実施例を模式的に示す。
【図２】４つの語に対する、通常のＲＳＡ二乗及びモンゴメリ還元の実施例を模式的に示す。
【図３】図４の装置に含まれる乗算ユニットの実施例を模式的に示す。
【図４】本発明の方法に従って動作する、本発明による装置の実施例を模式的に示す。
【符号の説明】
【００９３】
１００  装置
１０  装置１００の乗算ユニット
１２ａ  乗算ユニット１０とメモリユニット２０との間の第１の接続、とりわけ乗算ユニット１０からメモリ２０への接続
１２ｂ  乗算ユニット１０とメモリユニット２０との間の第２の接続、とりわけメモリユニット２０から乗算ユニット１０への接続
１４ｃ  乗算ユニット１０のｃレジスタモジュール
１４ｒ  乗算ユニット１０のｒレジスタモジュール
１６ｃ  乗算ユニット１０の第１の全加算モジュール
１６ｒ  乗算ユニット１０の第２の全加算モジュール
１８  乗算ユニット１０の範囲モジュール
２０  装置１００のメモリユニット
３０  装置１００の状態機械
Ｍｒ  モンゴメリ還元
【図１】
2009500892.tif 000003
【図２】
2009500892.tif 000004
【図３】
2009500892.tif 000005
【図４】
2009500892.tif 000006
【国際調査報告】
2009500892.tif 000007
2009500892.tif 000008