JP4772081B2 - 秘密鍵を用いた耐タンパ楕円曲線暗号処理 - Google Patents

秘密鍵を用いた耐タンパ楕円曲線暗号処理 Download PDF

Info

Publication number
JP4772081B2
JP4772081B2 JP2008109993A JP2008109993A JP4772081B2 JP 4772081 B2 JP4772081 B2 JP 4772081B2 JP 2008109993 A JP2008109993 A JP 2008109993A JP 2008109993 A JP2008109993 A JP 2008109993A JP 4772081 B2 JP4772081 B2 JP 4772081B2
Authority
JP
Japan
Prior art keywords
algorithm
value
data storage
scalar multiplication
point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2008109993A
Other languages
English (en)
Other versions
JP2008217033A (ja
Inventor
正彦 武仲
哲也 伊豆
孝一 伊藤
直哉 鳥居
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008109993A priority Critical patent/JP4772081B2/ja
Publication of JP2008217033A publication Critical patent/JP2008217033A/ja
Application granted granted Critical
Publication of JP4772081B2 publication Critical patent/JP4772081B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

発明の分野
本発明は、暗号処理の分野に関し、特に、楕円曲線暗号のためのプロセッサにおけるSPAおよびDPAのような電力解析攻撃を防止する耐タンパ(tamper-proof)暗号化/復号に関する。
発明の背景
暗号方式には一般的に公開鍵暗号方式と共通鍵暗号方式が含まれる。公開鍵暗号方式は、暗号化と復号に異なる鍵(キー)を用いる。典型的には、公開鍵を用いて平文(plaintext)が暗号化され、秘密鍵を用いて暗号文(ciphertext)が復号され、それによって暗号文が安全に送信できる。または、秘密鍵を用いて平文が暗号化され、公開鍵を用いて暗号文が復号され、それによって平文を暗号化したユーザが識別される。図1は、スマートカードのような暗号デバイスにおける秘密鍵を用いた暗号化/復号の構成の例を示している。図1において、暗号デバイスは、その内部の暗号化/復号ユニットにおいて周知の形態で秘密鍵を用いて入力平文/暗号文メッセージを処理して出力暗号文/平文メッセージを供給する。
公開鍵暗号の1つのタイプである楕円曲線暗号(Elliptic Curve Cryptography)のためのプロセッサにおいては、スカラー倍算が行われる。点のスカラー倍算は、スカラー値d、および楕円曲線上の点Aに対して、V=dAを満たす点Rを求める。例えば、楕円曲線暗号におけるDiffe-Hellman(ディッフィー・ヘルマン)鍵配送において、V=dAで表される点が秘密鍵dを用いてスカラー倍算で生成される。
バイナリ・メソッド(binary method)を用いた点のスカラー倍算は、2進値dについて、MSB(最上位ビット)からLSB(最下位ビット)まで順に点の2倍算と点の加算を実行することによって、Vを求める。例えばd=21=2+2+2=(10101)についてVを求めるとき、最初のMSB“1”に対して初期値V=O(無限遠点)にAの加算を実行してV=Aを生成し、次のビット“0”に対してそのVに2倍算を実行してV=A×2を生成し、次のビット“1”に対してそのVに2倍算とAの加算を実行してV=(A×2)×2+Aを生成し、次のビット“0”に対してそのVに2倍算を実行してV=((A×2)×2+A)×2を生成し、LSB“1”に対してそのVに2倍算とAの加算を実行して、V=(((A×2)×2+A)×2)×2+A=(2+2+2)Aを生成する。
効率的な指数剰余演算のためのウィンドウ法(window method)が知られている。ウィンドウ法は、Alfred J. Menezes他の“HANDBOOK OF APPLIED CRYPTOGRAPHY”(CRC press), pp. 615, Algorithm 14.82に記載されている。
Alfred J. Menezes et al."HANDBOOK OF APPLIED CRYPTOGRAPHY"(CRC press), pp. 615, Algorithm 14.82
図2は、ウィンドウ法を用いて楕円曲線暗号における点のスカラー倍算V=dAを求めるためのアルゴリズムを示している。ここで、dは2進表現でd=(du−1,du−2,...dと表記される。そのアルゴリズムはC言語で記述されている。
図2のアルゴリズムを説明する。まず、0<x<2の全ての整数xに対して、W[x]=xAを満たす値WのテーブルWを作成する。テーブルWの作成後、uビットの値d=(du−1,du−2,...dを分割してm個のkビット・シーケンスb=(dik+k−1,...dik(i=0,1,2,...)を生成する。ここで、m=ceiling(u/k)。そのbに対する値W[b](=bA)をテーブルWでルックアップすることによる加算V=V+W[b]と、V=2Vで表される2倍算とを、上位シーケンスbm−1から下位シーケンスbへ順に実行することによって、V=dAを求める。
暗号解読(分析)またはタンパ(tamper)は、暗号文のような入手可能な情報から秘密鍵を含めた秘密情報を推定する。暗号解読の1つである電力解析攻撃が、1998年にPaul Kocher(ポール コーチャ)によって考案された。この電力解析攻撃は、スマートカードのような暗号デバイスに含まれる暗号プロセッサに相異なる入力データを与え、例えば図1に示されているようにオシロスコープ等を用いてその処理中における時間に対する消費電力の変化を測定し、統計的に充分な数の消費電力変化の曲線を収集しそれを解析し、それによって暗号プロセッサ内部の鍵情報を推定する。これは、共通鍵暗号と公開鍵暗号の双方に適用できる。
電力解析攻撃には、単純電力解析(以下、SPAという)(Simple Power Analysis)および電力差分攻撃(以下、DPAという)(Differential Power Analysis)が含まれる。SPAは暗号プロセッサにおける1つの消費電力変化曲線の特徴から秘密鍵の推定を行う。DPAは相異なる多数の消費電力変化曲線の差分(以下、電力差分曲線という)を用いて解析することによって秘密鍵の推定を行う。一般的にはDPAの方が強力である。
例えばDES(Data Encryption Standard)およびAES(Advanced Encryption Standard)等の共通鍵暗号に対するSPAおよびDPAが、Paul Kocher, Joshua Jaffe, and Benjamin Jun,“Differential Power Analysis”in proceedings of Advances in Cryptology-CRYPTO’99,Lecture Notes in Computer Science, vol. 1666, Springer-Verlag, 1999, pp. 388-397に記載されている。
Paul Kocher, Joshua Jaffe, and Benjamin Jun,"Differential Power Analysis"in proceedings of Advances in Cryptology-CRYPTO’99,Lecture Notes in Computer Science, vol. 1666, Springer-Verlag, 1999, pp. 388-397
例えばRSA暗号および楕円曲線暗号等の公開鍵暗号に対するSPAおよびDPAが、例えば、Thomas S. Messerges, Ezzy A. Dabbish and Robert H. Sloan“Power Analysis Attacks of Modular Exponentiation in Smartcards”Cryptographic Hardware and Embedded Systems(CHES’99),Lecture Notes in Computer Science Vol. 1717,Springer-Verlag,pp. 144-157(以下、Messerges 99という)、およびJean-Sebastein Coron“Resistance against Differential Power Analysis for Elliptic Curve Crytosystems”Cryptographic Hardware and Embedded Systems(CHES ’99),Lecture Notes in Computer Science Vol.1717, Springer-Verlag, pp. 292-302, 1999(以下、Coron 99という)に記載されている。
Thomas S. Messerges, Ezzy A. Dabbish and Robert H. Sloan"Power Analysis Attacks of Modular Exponentiation in Smartcards"Cryptographic Hardware and Embedded Systems(CHES’99),Lecture Notes in Computer Science Vol. 1717,Springer-Verlag,pp. 144-157 Jean-Sebastein Coron"Resistance against Differential Power Analysis for Elliptic Curve Crytosystems"Cryptographic Hardware and Embedded Systems(CHES ’99),Lecture Notes in Computer Science Vol.1717, Springer-Verlag, pp. 292-302, 1999
楕円曲線暗号法は、楕円曲線の離散対数問題に基づくもので、N. Koblitz (“Elliptic Curve Cryptosystems”, Mathematics of Computers, Vol. 48, pp. 203-209, 1987.)と V. Miller(“Use of elliptic curves in cryptography”, Advances in Cryptology-Proceedings of Crypto'85, Lecture Notes in Computer Science, 218 (1986), Springer-Verlag, pp 417-426)により提案された。
N. Koblitz ("Elliptic Curve Cryptosystems", Mathematics of Computers, Vol. 48, pp. 203-209, 1987.) V. Miller("Use of elliptic curves in cryptography", Advances in Cryptology-Proceedings of Crypto'85, Lecture Notes in Computer Science, 218 (1986), Springer-Verlag, pp 417-426)
楕円曲線暗号は、楕円曲線上の点のスカラー倍算に基づく演算である。例えば、公開鍵点Pは、公開されたベースポイントと呼ばれる楕円曲線上の点Gに対して、スカラー値である秘密鍵dを用いた楕円曲線上の点のスカラー倍算P=dGで計算された楕円曲線上の点である。また、楕円曲線上のDiffie-Helman鍵共有を用いたAとBの間での鍵共有では、Aの秘密鍵と公開鍵の対をd,Pとし、Bの秘密鍵と公開鍵の対をd,Pとして、X=d=dの関係を利用する。楕円曲線上における点のスカラー倍算は、「点の加算(ECADD)」と「点の2倍算(ECDBL)」の繰り返しからなる。スカラー倍算R=dQの最も単純な実現法に次の基本的アルゴリズムAlgorithm 1およびAlgorithm 2にそれぞれ示されたバイナリ・メソッド(MSB)およびバイナリ・メソッド(LSB)がある。以下の記載において、特に断らない限り、小文字(d等)をスカラー値とし、大文字(R、Q等)を楕円曲線上の点を表すものとする。
〈Algorithm1: Binary Method (MSB)〉
Figure 0004772081
ここで、Tは一時的変数、dはnビットのスカラー値で、diはdのi番目のLSB(最下位ビット)(下位i番目のビット)の値である。
〈Algorithm2: Binary Method (LSB)〉
Figure 0004772081
ここで、レジスタT[0]およびT[1]は一時的変数であり、dはnビットのスカラー値であり、diはdのi番目のLSBの値である。
点のスカラー倍算にAlgorithm 1およびAlgorithm 2を使用したとき、*で示された演算はd中のビット値に応じて実行されたりされなかったりする。SPAは、この性質を利用して秘密鍵dを解析する。多くの実験からECDBL演算とECADD演算の電力波形は、特徴的で容易に区別可能であることが知られている。従って、プロセッサにおけるAlgorithm 1およびAlgorithm 2の演算において発生する電力波形を測定することによって、その波形からECDBLとECADDの演算の順序と回数が変化するので、秘密鍵dを解析して求めることができる。
このSPAへの対策として、アド・アンド・ダブル・オールウェイズ(add-and-double-always、常に加算と2倍算を行う)と呼ばれる方法がCoron 99で提案されている。この方法は、常にECADD演算とECDBL演算が交互に行われるので、SPAに対して安全である。次に、Algorithm 1およびAlgorithm 2に対してアド・アンド・ダブル・オールウェイズを施したものをAlgorithm 3およびAlgorithm 4として示す。
〈Algorithm3: Binary Method (MSB, add-and-double-always)〉
Figure 0004772081
ここで、レジスタT[0]およびT[1]は一時的変数であり、dはnビットのスカラー値であり、diはdのi番目のLSBの値である。
〈Algorithm4: Binary Method (LSB, add-and-double-always)〉
Figure 0004772081
ここで、レジスタT[0]、T[1]およびT[2]は一時的変数であり、dはnビットのスカラー値であり、diはdのi番目のLSBの値である。
Algorithm 3およびAlgorithm 4を用いてSPAを防止することができる。しかし、Coron 99には、これらのアルゴリズムに対するDPAについても述べられており、Algorithm 3およびAlgorithm 4ではDPAで秘密鍵を解析して求めることができることが示されている。さらに、Coron 99には、ランダム化射影座標Randomized Projective Coordinates(RPC)と呼ばれる、乱数を使用した楕円曲線上の点の表現を導入することによって、Algorithm 3およびAlgorithm 4に対するDPAへの対策が提案されている。Algorithm 3およびAlgorithm 4に対してRPCを施したものをAlgorithm 5およびAlgorithm 6として示す。RPCで表現された楕円曲線上の点はダッシュ(prime)(')付きの変数で示されている。
〈Algorithm5: Binary Method (MSB, add-and-double-always, RPC)〉
Figure 0004772081
ここで、T’[0]、T’[1]およびT’[2]は一時的変数であり、dはnビットのスカラー値であり、diはd中のi番目のLSBである。“←”はRPC表現からの逆変換を示している。
図3は、図1に示されているような暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 5のフロー図を示している。図4は、Algorithm 5を実装したブロック図を示している。
図3を参照すると、ステップ302において、プロセッサはRPC変換した点Qの座標の値をレジスタT[2]に代入する。ステップ304において、プロセッサはレジスタT[2]の値をレジスタT[0]に代入する。ステップ306は変数i=(n−1),(n−2),...0に対するループ処理である。ステップ306中のステップ308において、プロセッサはレジスタT[0]の値をECDBL演算(点の2倍算)してその2倍値をレジスタT[0]に代入する。ステップ310において、プロセッサはレジスタT[0]とレジスタT[2]の値をECADD演算(点の加算)してその加算値をレジスタT[1]に代入する。ステップ312において、プロセッサは鍵のi番目のビットの値diの値に従ってレジスタT[di]の値をレジスタT[0]に代入する。ステップ312はアドレス・ビットDPAの標的になる。ステップ314において、プロセッサはi=i−1とセットする。その後、手順はステップ308に戻る。i=(n−1),(n−2),...0についてステップ306を実行した後、ステップ316において、プロセッサはレジスタT[0]の値をRPC逆変換して出力する。
〈Algorithm6: Binary Method (LSB, add-and-double-always, RPC)〉
Figure 0004772081
ここで、T’[0]、T’[1]およびT’[2]は一時的変数であり、dはnビットのスカラー値であり、diはd中のi番目のLSBである。“←”はRPC表現からの逆変換を表している。
図5は、図1に示されているような暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 6のフロー図を示している。図6は、Algorithm 6を実装したブロック図を示している。
図5を参照すると、ステップ502において、プロセッサは0点の座標の値をレジスタT[0]に代入する。ステップ504において、プロセッサはRPC変換した点Q座標値をレジスタT[2]に代入する。ステップ506は変数i=0,1,...(n−1)に対するループ処理である。ステップ506中のステップ508において、プロセッサはレジスタT[0]とT[2]の値をECADD演算してその加算値をレジスタT[1]に代入する。ステップ510において、プロセッサはレジスタT[2]の値をECDBL演算してその2倍値をレジスタT[2]に代入する。ステップ512において、プロセッサは鍵のi番目のLSBの値diの値に従ってレジスタT[di]の値をレジスタT[0]に代入する。ステップ512はアドレス・ビットDPAの標的になる。ステップ514において、プロセッサはi=i+1とセットする。その後、手順はステップ508に戻る。i=0,1,...(n−1)についてステップ506を実行した後、ステップ516において、プロセッサはレジスタT[0]の値をRPC逆変換して出力する。
Algorithm 5およびAlgorithm 6を用いて、SPAおよびDPAを防止することができることが、Coron 99に述べられている。同様の効果をもつ方式としては、SPAを防止するモンゴメリ・ラダー(Montgomery-Ladder)とRPCの双方を用いる方法が、T. Izu, and T. Takagi, "A Fast Parallel Elliptic Curve Multiplication Resistant against Side Channel Attacks'', PKC 2002, LNCS 2274, pp.280-296, Springer-Verlag, 2002. (Izu-Takagi)において提案されている。これは、アド・アンド・ダブル・オールウェイズを用いたバイナリ・メソッド(Algorithm 3およびAlgorithm 4)の代わりにSPA対策を施したモンゴメリ・ラダーと呼ばれるスカラー倍算を用いるのが特徴である。モンゴメリ・ラダーでは、スカラー倍算R=dQにおいて、常にECADD演算とECDBL演算を行うことにより、差が1Qとなるような2点の計算を行う。SPA対策を施したモンゴメリ・ラダーとRPCを使用したスカラー倍算をAlgorithm7として示す。
Izu, and T. Takagi, "A Fast Parallel Elliptic Curve Multiplication Resistant against Side Channel Attacks'', PKC 2002, LNCS 2274, pp.280-296, Springer-Verlag, 2002
〈Algorithm7: Montgomery-Ladder (SPA-countermeasure, RPC)〉
Figure 0004772081
ここで、T’[0]、T’[1]およびT’[2]は一時的変数であり、dはnビットのスカラー値であり、diはd中のi番目のLSBである。“←”はRPC表現からの逆変換を示している。
図7は、図1に示されているような暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 7のフロー図を示している。図8は、Algorithm 7を実装したブロック図を示している。
図7を参照すると、ステップ702において、プロセッサはRPC変換した点Qの座標の値をレジスタT[0]に代入する。ステップ704において、プロセッサは、レジスタT[0]の値をECDBL演算してその2倍値をレジスタT[1]に代入する。ステップ706は変数i=(n−2),(n−1)...0に対するループ処理である。ステップ706中のステップ708において、プロセッサは鍵のi番目のLSBの値diに従ってレジスタT[di]の値をECDBL演算してその2倍値をレジスタT[2]に代入する。ステップ710において、プロセッサはレジスタT[0]とT[1]の値をECADD演算してレジスタT[1]に代入する。ステップ712において、プロセッサは鍵のi番目のLSBの値diに従ってレジスタT[2−di]の値をレジスタT[0]に代入する。ステップ714において、プロセッサは鍵のi番目のLSBの値diに従ってレジスタT[1+di]の値をレジスタT[1]に代入する。ステップ708、712および714はアドレス・ビットDPAの標的になる。ステップ716において、プロセッサはi=i−1とセットする。その後、手順はステップ708に戻る。i=(n−2),(n−1)...0についてステップ706を実行した後、ステップ718において、プロセッサはレジスタT[0]の値をRPC逆変換して出力する。
RPCと同様の効果を持つ方式としてM. Joye, and C. Tymen, “Protections against differential analysis for elliptic curve cryptography”, CHES 2001, LNCS 2162, pp. 377-390, Springer-Verlag, 2001.(JT01)において提案されたランダム化曲線Randomized Curve(RC)法がある。RCは、RPCと同様に乱数を用いた点の表現を用いることによるDPA対策である。RCの適用方法はRPCと同じである。アルゴリズムAlgorithm 5〜Algorithm 7についてRPCの代わりにRCを用いたものを、“’”を付加してAlgorithm 5’〜Algorithm 7’として示す。なお、RCで表現された楕円曲線上の点は(”)付の変数で表す。
M. Joye, and C. Tymen, "Protections against differential analysis for elliptic curve cryptography", CHES 2001, LNCS 2162, pp. 377-390, Springer-Verlag, 2001.
〈Algorithm5’: Binary Method (MSB, add-and-double-always, RC)〉
Figure 0004772081
ここで、T”[0]、T”[1]およびT”[2]は一時的変数であり、dはnビットのスカラー値であり、diはd中のi番目のLSBである。“←”はRC表現からの逆変換を表している。
図4は、Algorithm 5’のブロック図をも示している。
〈Algorithm6’: Binary Method (LSB, add-and-double-always, RC)〉
Figure 0004772081
ここで、T”[0]、T”[1]およびT”[2]は一時的変数であり、dはnビットのスカラー値であり、diはd中のi番目のLSBである。"←"はRC表現からの逆変換を示している。
図6は、Algorithm 6’を実装したブロック図をも示している。
〈Algorithm7’: Montgomery-Ladder (SPA-countermeasure, RC)〉
Figure 0004772081
ここで、T”[0]、T”[1]およびT”[2]は一時的変数であり、dはnビットのスカラー値であり、diはd中のi番目のLSBである。“←”はRC表現からの逆変換を示している。
図8は、Algorithm 7’を実装したブロック図をも示している。
前述のように、スカラー倍算R=dQの実現法にはAlgorithm 1およびAlgorithm 2以外にウィンドウ・メソッドと呼ばれる方法も存在する。例えば4ビットのウィンドウ・メソッドは、初期処理としてQの0〜15倍を計算し、その結果をテーブルとして持っておき、秘密鍵を4ビット・ウィンドウ単位で処理する。次のAlgorithm 8は4ビットのウィンドウ・メソッドの最も基本的なアルゴリズムである。
〈Algorithm8: Window Method (4-bits)〉
Figure 0004772081
ここで、dはnビットのスカラー値であり、説明を簡単にするために、nは4の倍数と仮定する。また、di,i−3は、d中のiビット目から(i−3)ビット目までの4ビットの値とする。W[i]はウィンドウ・メソッドで使用されるテーブルである。
点のスカラー倍算にAlgorithm 8が使用される場合、dのビット値に応じて行われたり行われなかったりするような演算は無い。従って、ウィンドウ・メソッドは、バイナリ・メソッドとは異なり、一般にSPAに対して安全であるといわれている。しかし、ウィンドウ・メソッドは、バイナリ・メソッドと同様にDPAに対して安全でなく、Coron 99の手法で解析可能であるが、バイナリ・メソッドと同様にウィンドウ・メソッドのDPA対策もRPCやRCが有効であることが知られている。次のAlgorithm 9およびAlgorithm 9'は、Algorithm 8に対してRPCおよびRCを施したものである。
〈Algorithm9: Window Method (4-bit, RPC)〉
Figure 0004772081
ここで、dはnビットのスカラー値であり、説明を簡単にするために、nは4の倍数と仮定する。また、di,i−3は、d中のiビット目から(i−3)ビット目までの4ビットの値とする。R’、Q’、T’[0]およびT’[1]は一時的変数であり、W’[i]はウィンドウ・メソッドで使用されるテーブルであり、"←"はRPC表現からの逆変換を示している。
〈Algorithm9': Window Method (4-bit, RC)〉
Figure 0004772081
ここで、dはnビットのスカラー値であり、説明を簡単にするために、nは4の倍数と仮定する。また、di,i−3は、d中のiビット目から(i−3)ビット目までの4ビットの値とする。R”、Q”、T”[0]およびT[1]は一時的変数であり、W”[i]はウィンドウ・メソッドで使用されるテーブルであり、“←”はRC表現からの逆変換を示している。
図9および10は、図1に示されているような暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 9およびAlgorithm 9’のフロー図を示している。図11および12は、Algorithm 9およびAlgorithm 9’を実装したブロック図を示している。
図9および10を参照すると、ステップ902において、プロセッサは0点の座標値をテーブルW[0]に代入する。ステップ904において、プロセッサはRPC変換した点Qの座標値をテーブルW[1]に代入する。ステップ906において、プロセッサはテーブルW[1]の値をECDBL演算してテーブルW[2]に代入する。ステップ908は変数i=3,4,...15に対するループ処理である。ステップ910において、プロセッサはテーブルW[i−1]とW[1]の値をECADD演算してW[i]に代入する。ステップ912において、プロセッサはi=i+1とセットする。ステップ914において、プロセッサは、鍵のn−1,n−2,...n−4ビット目の値dn−1,n−4に従ってテーブルW[dn−1,n−4]の値をRに代入する。
ステップ916は変数i=(n−5),(n−6),...0に対するループ処理である。ステップ916中のステップ918は4回反復ループ処理である。ステップ920において、プロセッサはレジスタRの値をECDBL演算してRに代入する。ステップ920は4回繰り返される。ステップ922において、プロセッサは鍵のi〜(i−3)ビット目の値di,i−3に従ってテーブルW[di,i−3]の値とレジスタRの値をECADD演算してその加算値をレジスタRに代入する。ステップ922はアドレス・ビットDPAの標的になる。ステップ924において、プロセッサはi=i−4とセットする。その後、手順はステップ918に戻る。i=(n−5),(n−6),...0についてステップ924を実行した後、ステップ926において、プロセッサはレジスタRの値をRPC逆変換して出力する。
従来、Algorithm 5〜Algorithm 7およびAlgorithm 5’〜Algorithm 7’、 Algorithm 9およびAlgorithm 9'を用いれば、SPAおよびDPAに対して安全であると考えられていた。しかし、K. Itoh, T. Izu, and M. Takenaka “Address-bit Differential Power Analysis of Cryptographic Schemes OK-ECDH and OK-ECDSA”, Cryptographic Hardware and Embedded Systems (CHES2002), Pre-proceeding, pp.129-143 (以下、IIT02という) でAlgorithm 7を解析して求める手法が発表された。通常のDPA(データビットDPA(data-bit DPA))は、データの変化がもたらす消費電力に注目するのに対して、このアドレス・ビットDPA(address-bit DPA)は、アドレスの変化がもたらす消費電力に注目した解析手法である。
K. Itoh, T. Izu, and M. Takenaka "Address-bit Differential Power Analysis of Cryptographic Schemes OK-ECDH and OK-ECDSA", Cryptographic Hardware and Embedded Systems (CHES2002), Pre-proceeding, pp.129-143
例えば、Algorithm7において、*の演算dでは、diの値に応じて、T’[0]が使用されるかまたはT’[1]が使用されるかが決定される。従って、ECDBL演算で使用されるデータが格納されているアドレスはdiと相関関係を有する。同様のことが#で示された演算においても生じている。アドレス・ビットDPAでは、その関係を利用して秘密鍵情報dを解析可能としている。
文献IIT02では、モンゴメリ・ラダー(Algorithm7)に対して、アドレス・ビットDPAを行っているが、同様の解析は、Algorithm 5、 Algorithm 6およびAlgorithm 5’〜Algorithm 7’に対しても適用可能である。Algorithm 9および Algorithm 9' でも*で示された演算において、秘密鍵情報dの値と使用するテーブルとが強い相関関係を有するので、同様の攻撃が可能であると考えられる。そのためアドレス・ビットDPAを用いれば、Algorithm 5〜7およびAlgorithm 5’〜Algorithm 7’、Algorithm 9〜Algorithm 9'はDPAに対して安全であるとはいえない。
IIT02には、アドレス・ビットDPAへの対策について述べられている。IIT02で述べられているのは、Algorithm 5〜Algorithm 7に対してCoron 99やMessages 99で提案されているエクスポーネント・ブラインディング(exponent-blinding)、C. Clavier, and M. Joye, "Universal exponentiation algorithm - A first step towards provable SPA-resistance -", Cryptographic Hardware and Embedded Systems (CHES 2001), Lecture Notes in Computer Science vol. 2162, Springer-Verlag, pp.300-308(以下、CJ01という)において提案されているエクスポーネント・スプリッティング(exponent-splitting)、.J. Yajima, K. Itoh, M. Takenaka, and N, Torii “DPA countermeasure by improving the window method”, Cryptographic Hardware and Embedded Systems (CHES2002), Pre-proceeding, pp.304-319 (以下、YITT02という)において提案されているオーバラップ・ウィンドウ法(overlapped window method)等のスカラー値をランダムに変化させる手法を適用することである。
C. Clavier, and M. Joye, "Universal exponentiation algorithm - A first step towards provable SPA-resistance -", Cryptographic Hardware and Embedded Systems (CHES 2001), Lecture Notes in Computer Science vol. 2162, Springer-Verlag, pp.300-308 J. Yajima, K. Itoh, M. Takenaka, and N, Torii "DPA countermeasure by improving the window method", Cryptographic Hardware and Embedded Systems (CHES 2002), Pre-proceeding, pp.304-319
しかし、これらの手法は、その手法単独でSPA対策、データ・ビットDPA対策およびアドレス・ビットDPA対策であるので、既にSPA対策とデータ・ビットDPA対策済みのAlgorithm 5〜Algorithm 7に適用するには無駄が多い。特にこれらの手法を適用すると、楕円曲線上の点の加算および2倍算を、適用前と比較して余分に処理しなければならず、処理オーバーヘッドが大きくなる欠点がある。
発明者たちは、アドレス・ビットDPAに対して安全な耐タンパ性の点のスカラー倍算を実現することの必要性(ニーズ)を認識した。
本発明の1つの目的は、秘密鍵の推定を困難にし、暗号処理の安全性を高めることである。
本発明の別の目的は、効率的な耐タンパ性の点のスカラー倍算を実現することである。
本発明のさらに別の目的は、アドレス・ビットDPAに対して効率的で安全な耐タンパ性の点のスカラー倍算を実現することである。
発明の概要
本発明の特徴によれば、暗号装置は秘密鍵を用いて楕円曲線暗号処理を行う。その暗号装置は、ウィンドウ・メソッドで楕円曲線上の点のスカラー倍算を行う演算手段と、複数のデータ格納領域を有する格納手段と、所定のビット数からなる乱数rの値よりその演算手段によって行われるその点のスカラー倍算の初期処理としての演算によって得られた値をそれぞれ格納するのに用いるその複数のデータ格納領域のアドレスを決定し、秘密鍵dとその乱数rとの排他的論理和の値により、その点のスカラー倍算を行うための入力に用いる、その初期処理としての演算によって得られた値が格納されたその複数のデータ格納領域の中の1つのデータ格納領域のアドレスをその点のスカラー倍算の演算ごとに更新して決定するアドレス決定手段と、を具えている。
本発明の別の特徴によれば、プロセッサおよびデータ格納手段を具える暗号処理を行う装置において秘密鍵を用い楕円曲線暗号処理を行うプログラム(これは記憶媒体に格納されていてもよい)は、所定のビット数からなる乱数rの値よりウィンドウ・メソッドによる点のスカラー倍算の初期処理としての演算によって得られた値をそれぞれ格納するのに用いるそのデータ格納手段の複数のデータ格納領域のアドレスを決定して、その演算によって得られた値をその複数のデータ格納領域に格納するステップと、秘密鍵dとその乱数rとの排他的論理和の値により、その点のスカラー倍算を行うための入力に用いる、その初期処理としての演算によって得られた値が格納されたその複数のデータ格納領域の中のデータ格納領域のアドレスをその点のスカラー倍算の演算ごとに更新して決定するステップと、その更新して決定されたアドレスのデータ格納領域のデータを用いて、ウィンドウ・メソッドによる楕円曲線上の点のスカラー倍算を行うステップと、そのプロセッサに実行させ
本発明のさらに別の特徴によれば、プロセッサおよびデータ格納手段を具える楕円曲線暗号処理装置において、秘密鍵を用いて楕円曲線暗号処理装置が実行する方法は、所定のビット数からなる乱数rの値よりウィンドウ・メソッドによる点のスカラー倍算の初期処理としての演算によって得られた値をそれぞれ格納するのに用いるそのデータ格納手段の複数のデータ格納領域のアドレスを決定して、その演算によって得られた値をその複数のデータ格納領域に格納するステップと、秘密鍵dとその乱数rとの排他的論理和の値により、その点のスカラー倍算を行うための入力に用いる、その初期処理としての演算によって得られた値が格納されたその複数のデータ格納領域の中のデータ格納領域のアドレスをその点のスカラー倍算の演算ごとに更新して決定するステップと、その更新して決定されたアドレスのデータ格納領域のデータを用いて、ウィンドウ・メソッドによる楕円曲線上の点のスカラー倍算を行うステップと、を含んでいる。
本発明によれば、秘密鍵の推定を困難にし、暗号処理の安全性を高めることができ、効率的な耐タンパ性の点のスカラー倍算を実現できる。
全ての図面を通して、同じ参照番号は同じ要素を示している。
前述のAlgorithm 7において*で示された演算では、変数レジスタT’[x]の格納アドレスが秘密鍵diに依存して変化することが問題である。即ち、di=0に対してレジスタT’[0]が、di=1に対してレジスタT’[1]がそれぞれ使用されるので、アドレス・ビットDPAで鍵を解析して求めることができる。従って、diの値と使用される変数T’[0]およびT’[1]がランダムに変化すればアドレス・ビットDPAで解析できなくなる。#で示された演算についても、同様である。
図13Aおよび13Bは、本発明の原理を説明するのに役立つ。入力値が、鍵のビット・シーケンスに従って制御されるスイッチを介して2つのレジスタ1および2に供給されて格納される。図13Aに示されているように、通常は、鍵のビット・シーケンスに従って、値を格納すべきレジスタの順序が入れ替わったり、使用するレジスタが決定されるのを防止するために、本発明によれば、図13Bに示されているように、演算すべき値を格納するレジスタを鍵の値だけで決定せずに、鍵と乱数のXOR(排他的論理和)をとることによってアドレス・ビットDPAに対して高い耐性を有する暗号処理を実現する。
次に、本発明の実施形態による、Algorithm 7 とAlgorithm 7’において*と#で示された演算に乱数を導入したアルゴリズムを次のAlgorithm 10 およびAlgorithm 10’として示す。本発明による変数をランダムに決定する方法を、ランダマイズド・アドレシング(Randomized Addressing(RA)、乱数アドレス制御)と呼ぶ。
〈Algorithm10: Montgomery-Ladder (SPA-countermeasure, RPC, RA)〉
Figure 0004772081
ここで、T’[0]、T’[1]およびT’[2]は一時的変数、dはnビットのスカラー値で、dはdのi番目のLSBの値を表す。rはnビットの乱数を表し、rはrのi番目のLSBの値である。“←”はRPC表現からの逆変換を示している。
〈Algorithm10’: Montgomery-Ladder (SPA-countermeasure, RC, RA)〉
Figure 0004772081
ここで、T”[0]、T ”[1]およびT”[2]は一時的変数であり、dはnビットのスカラー値であり、dはdのi番目のLSB(最下位ビット)の値である。rはnビットの乱数で、rはrのi番目のLSBの値とする。また、“←”はRC表現からの逆変換を表す。
Algorithm 10およびAlgorithm 10’において、*の部分はインデックスが秘密鍵dと乱数rのXORなので、変数レジスタT’[0]とT’[1]のどちらが使用されるかは秘密鍵dに無関係に決定される。同様に、#で示された演算は、インデックスそのものが秘密鍵dと無関係である。従って、Algorithm10およびAlgorithm 10’はアドレス・ビットDPAに対して安全である。オーバヘッドについて、Algorithm10およびAlgorithm 10’における楕円曲線上の点の演算(ECDBLとECADD)の数は、Algorithm7およびAlgorithm 7’の場合と等しく、増加した部分は*で示された演算におけるインデックスだけである。従って、Algorithm10およびAlgorithm 10’におけるオーバヘッドは僅かである。
図14は、図1に示されているような暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 10およびAlgorithm 10’のフロー図を示している。Algorithm 10およびAlgorithm 10'の違いはRPCとRCのうちのいずれを使用するかだけである。
図14を参照すると、ステップ1402において、プロセッサは、乱数rのn−1番目のビットの値rn−1に従って、RPCまたはRC変換した点Qの座標値をレジスタT[rn−1]に代入する。ステップ1404において、プロセッサは、乱数rのn−1番目のLSBの値rn−1に従って、レジスタT[1−rn−1]の値をECDBL演算してその2倍値をレジスタT[rn−1]に代入する。ステップ1402および1404は初期化のための処理である。
ステップ1406は、ステップ1408〜1416を含んでおり、変数i=n−2,...0に対するループ処理である。
ステップ1408において、プロセッサは、乱数rのi+1番目のLSBの値ri+1と鍵のi番目のLSBの値diに従って、レジスタT[di]の値をECDBL演算してレジスタT[2]に代入する。ステップ1410において、プロセッサは、レジスタT[0]およびT[1]の値をECADD演算してその加算値をレジスタT[1]に代入する。ステップ1412において、プロセッサは、乱数rのi番目のLSBの値rと鍵のi番目のLSBの値diに従ってレジスタ
Figure 0004772081
の値をECDBL演算してその2倍値をレジスタT[0]に代入する。ステップ1414において、プロセッサは、乱数rのi番目のLSBの値rと鍵のi番目のLSBの値diの値に従って、レジスタ
Figure 0004772081
の値をレジスタT[1]に代入する。ステップ1416においてi=i−1とセットする。i=n−2,...0についてステップ1406のループ処理が終了したとき、手順はステップ1418に進む。
ステップ1418において、プロセッサは、レジスタT[0]の値をRPCまたはRC逆変換して出力する。
図15は、Algorithm 10およびAlgorithm 10’を実装したブロック図を示している。図15、および後で説明する図17、19、22および23において、“T[x]”は一時的変数格納レジスタを表し、“W[x]”はテーブル変数格納レジスタを表し、“x”は格納レジスタのアドレスであり、“d”および“d’”は秘密情報を格納するレジスタであり、“r”は乱数rを格納するレジスタを表し、“R”は出力値を格納するレジスタを表し、ECDBL演算は楕円曲線上の点の2倍算演算処理ブロックを表し、“ECADD”は楕円曲線上の点の加算演算処理ブロックを表し、“SEL”は複数の入力のうち1つを選択し出力するセレクタを表し、“D”は1つの入力を複数の出力先のうちどれかを選択して出力するデマルチプレクサを表し、“RNG”は乱数生成ブロックを表し、
Figure 0004772081
はビット毎のXOR演算を表し、“>>1”は1ビット右シフト演算を表し、“△”はNOT演算を表す。
暗号化装置は、さらに、プロセッサ62と、ROMのようなプログラム・メモリ64とを含んでいる。プロセッサ62は、メモリ64に格納されているプログラムに従って図15に示された諸要素を制御する。代替構成として、プロセッサ62は、その諸要素に対応する機能を実現するメモリ64中のプログラムを実行することによってその諸要素を実現してもよい。
図15のブロック図のフローを次に示す。
Figure 0004772081
Algorithm 10およびAlgorithm 10'とこのフローの相違は以下の通りである。
− 初期化処理において、Algorithm 10およびAlgorithm 10'ではQとECDBL(Q)を代入するレジスタT[0]およびT[1]を、rn−1によって直接指定したが、このフローでは、いったんレジスタT[0]およびT[1]の両方にQを代入し、ECDBLを計算してレジスタT[2]に格納して、次いでレジスタT[2]の値をコピーして格納するべきレジスタをrn−1によって決定するという、3つのステップで構成している。
− Algorithm 10およびAlgorithm 10'ではループ処理内で秘密鍵dと乱数rの演算を行っているが、このフローでは、ループ処理の前の秘密鍵のランダム化とループ処理後の逆変換において秘密鍵dと乱数rのXOR演算を行う。これに伴って、点の2倍算とデータのコピーにおけるインデックスが変更される。Algorithm 10およびAlgorithm 10'とこのフローの処理は等価であり、同型変換可能である。
− 図15では、このフローにおけるインデックスの計算をセレクタで構成している。これはハードウェアで表現するためであり、共に効果は同じである。
図8のAlgorithm 7およびAlgorithm 7’のブロック図と比較すると、図15のAlgorithm 10およびAlgorithm 10’のブロック図では、秘密鍵のランダム化処理が増加するのみで、楕円曲線上の点の加算と2倍算の回数は変わらない。
次のAlgorithm 11およびAlgorithm 11’は、それぞれAlgorithm 5およびAlgorithm 5’に対して同様のアドレス・ビットDPA対策を施したものである。
〈Algorithm11: Binary Method (MSB, add-and-double-always, RPC, RA)〉
Figure 0004772081
ここで、T”[0]、T ”[1]およびT”[2]は一時的変数であり、dはnビットのスカラー値であり、dはdのi番目のLSBの値である。rはnビットの乱数であり、rはrのi番目のLSBの値とする。また、“←”はRPC表現からの逆変換を表す。
〈Algorithm11’: Binary Method (MSB, add-and-double-always, RC, RA)〉
Figure 0004772081
ここで、T”[0]、T ”[1]およびT”[2]は一時的変数であり、dはnビットのスカラー値であり、dはdのi番目のLSBの値である。rはnビットの乱数であり、rはrのi番目のLSBの値とする。また、“←”はRC表現からの逆変換を表す。
図16は、図1に示されているような暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 11およびAlgorithm 11’のフロー図を示している。
ステップ1502において、プロセッサは、RPCまたはRC変換した点Qの座標値をレジスタT[2]に代入する。ステップ1504において、プロセッサは、乱数rのn−1番目のLSBの値rn−1に従ってレジスタT[2]の値をECDBL演算してその2倍値をレジスタT[rn−1]に代入する。ステップ1502および1504は初期化のための処理である。
ステップ1506は、ステップ1508〜1514を含んでおり、変数i=n−2,...0に対するループ処理である。
ステップ1508において、プロセッサは、乱数rのi+1番目のLSBの値ri+1に従ってレジスタT[ri+1]の値をECDBL演算してその2倍値をレジスタT[ri+1]に代入する。ステップ1510において、プロセッサは、乱数rのi+1番目のLSBの値ri+1に従ってレジスタT[ri+1]とT[2]の値をADD演算してその加算値をレジスタT[1−ri+1]に代入する。ステップ1502において、プロセッサは、乱数rのi+1番目およびi番目のLSBの値rおよびri+1と鍵のi番目のLSBの値diに従って、レジスタ
Figure 0004772081
の値をECDBL演算してその2倍値をレジスタT[0]に代入する。i=n−2,...0についてステップ1506のループ処理が終了したとき、手順はステップ1516に進む。
ステップ1516において、プロセッサは乱数rの0番目のLSBの値rに従って、レジスタT[r]の値をRPCまたはRC逆変換して出力する。
図17は、Algorithm 11およびAlgorithm 11’を実装したブロック図を示している。
暗号化装置は、さらに、プロセッサ62と、ROMのようなプログラム・メモリ64とを含んでいる。プロセッサ62は、メモリ64に格納されているプログラムに従って図17に示された諸要素を制御する。代替構成として、プロセッサ62は、その諸要素に対応する機能を実現するメモリ64中のプログラムを実行することによってその諸要素を実現してもよい。
図17のブロック図のフローを次に示す。
〈実施例2のフロー:Algorithm11、11'の実施例フロー〉
Figure 0004772081
このフローはAlgorithm 11およびAlgorithm 11'のどちらにも適応可能である。Algorithm 11およびAlgorithm 11'とこのフローの相違は以下の通りである。
− Algorithm 11およびAlgorithm 11'では、初期化処理においてrn−1によって指定されるレジスタT[0]およびT[1]のどちらかをQで初期化するが、このフローでは、レジスタT[0]およびT[1]の両方をQで初期化する。
− Algorithm 11およびAlgorithm 11'では、コピーにおいて秘密鍵dと乱数rの演算を行うが、このフローではループ処理の前の秘密鍵のランダム化処理とループ処理後の逆変換処理において秘密鍵dと乱数rのXOR演算を行う。これに伴って、データのコピーにおけるインデックスが変更される。Algorithm 11およびAlgorithm 11'とこのフローの処理は等価であり、同型変換可能である。
− 図17では、このフローにおけるインデックス計算をセレクタとデマルチプレクサで実現している。これはハードウェアで表現するためであり、共に効果は同じである。
図4のAlgorithm 5およびAlgorithm 5’のブロック図と比較すると、図17のAlgorithm 11およびAlgorithm 11'のブロック図では、秘密鍵のランダム化処理、データの出力先を選択するセレクタ、およびデマルチプレクサが増加するのみで、楕円曲線上の点の加算と2倍算の回数は変わらない。
次のAlgorithm 12およびAlgorithm 12’は、それぞれAlgorithm 6およびAlgorithm 6’に対して同様のアドレス・ビットDPA対策を施したものである。
〈Algorithm12: Binary Method (LSB, add-and-double-always, RPC, RA)〉
Figure 0004772081
ここで、T”[0]、T ”[1]およびT”[2]は一時的変数であり、dはnビットのスカラー値であり、dはdのi番目のLSBの値である。rは(n+1)ビットの乱数であり、rはrのi番目のLSBの値とする。また、“←”はRPC表現からの逆変換を表す。
〈Algorithm12’: Binary Method (LSB, add-and-double-always, RC, RA)〉
Figure 0004772081
ここで、T”[0]、T ”[1]およびT”[2]は一時的変数であり、dはnビットのスカラー値であり、dはdのi番目のLSBの値である。rは(n+1)ビットの乱数であり、rはrのi番目のLSBの値とする。また、“←”はRC表現からの逆変換を表す。
図18は、図1に示されているような暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 12およびAlgorithm 12’のフロー図を示している。
ステップ1602において、プロセッサは、乱数rの0番目のLSBの値rに従って0(ゼロ)点の座標をレジスタT[r]に代入する。ステップ1604において、プロセッサは、RPCまたはRC変換した点Qの座標値をレジスタT[2]に代入する。ステップ1602および1604は初期化のための処理である。
ステップ1606は、ステップ1608〜1616を含んでおり、変数i=0,...n−1に対するループ処理である。
ステップ1608において、プロセッサは、乱数rのi番目のLSBの値rに従ってレジスタT[r]およびT[2]の値をECADD演算してレジスタT[1−r]に代入する。ステップ1610において、プロセッサは、レジスタT[2]の値をECDBL演算してレジスタT[2]に代入する。ステップ1612において、プロセッサは、乱数rのiおよびi+1番目のLSBの値rおよびri+1と鍵のi番目のLSBの値diに従ってレジスタ
Figure 0004772081
の値をレジスタT[rj+1]に代入する。ステップ1614において、プロセッサは、i=i+1とセットする。i=0,...n−1についてステップ1606のループ処理が終了したとき、手順はステップ1616に進む。
ステップ1616において、プロセッサは、乱数rのn番目のLSBの値rに従って、レジスタT[r]の値をRPCまたはRC逆変換して出力する。
図19は、Algorithm 12およびAlgorithm 12’を実装したブロック図を示している。
暗号化装置は、さらに、プロセッサ62と、ROMのようなプログラム・メモリ64とを含んでいる。プロセッサ62は、メモリ64に格納されているプログラムに従って図19に示された諸要素を制御する。代替構成として、プロセッサ62は、その諸要素に対応する機能を実現するメモリ64中のプログラムを実行することによってその諸要素を実現してもよい。
図19のブロック図のフローを次に示す。
Figure 0004772081
このフローはAlgorithm 12およびAlgorithm 12'のどちらにも適応可能である。Algorithm 12およびAlgorithm 12'とこのフローの相違は以下の通りである。
− Algorithm 12およびAlgorithm 12'では、初期化処理においてrn−1によって指定されるレジスタT[0]およびT[1]のどちらかを0に初期化しているが、このフローでは、レジスタT[0]およびT[1]の両方を0に初期化する。
− Algorithm 12およびAlgorithm 12'では、コピー処理において秘密鍵dと乱数rの演算を行うが、このフローではループ処理の前の秘密鍵のランダム化とループ処理後の逆変換において秘密鍵dと乱数rのXOR演算を行う。これに伴って、データのコピーにおけるインデックスが変更される。Algorithm 12およびAlgorithm 12'とこのフローの処理は等価であり、同型変換可能である。
− 図19においては、このフローにおけるインデックス計算をセレクタとデマルチプレクサで構成している。これはハードウェアで表現するためであり、共に効果は同じである。
図6のAlgorithm 6およびAlgorithm 6’のブロック図と比較すると、図19のAlgorithm 12およびAlgorithm 12'のブロック図では、秘密鍵のランダム化と、データの出力先を選択するセレクタおよびデマルチプレクサが増加するのみで、楕円曲線上の点の加算と2倍算の回数は変わらない。
次のAlgorithm 13およびAlgorithm 13’は、それぞれAlgorithm 9およびAlgorithm 9’に対して同様のアドレス・ビットDPA対策を施したものである。
〈Algorithm13: Window Method (4-bit, RPC, RA)〉
Figure 0004772081
ここで、dはnビットのスカラー値であり、説明を簡単にするために、nは4の倍数と仮定する。また、di,i−3は、dのiビット目のからi−3ビット目のまでの4ビットの値とする。R’、Q’、T’[0]およびT’[1]は一時的変数であり、W’[i]はウィンドウ・メソッドで使用されるテーブルを表し、rは4ビットの乱数であり、"←"はRPC表現からの逆変換を表す。
〈Algorithm13': Window Method (4-bit, RC, RA)〉
Figure 0004772081
ここで、dはnビットのスカラー値であり、説明を簡単にするために、nは4の倍数と仮定する。また、di,i−3は、d中のiビット目から(i−3)ビット目までの4ビットの値とする。R”、Q”、T”およびT”[1]は一時的変数であり、W”[i]はウィンドウ・メソッドで使用されるテーブルを表し、rは4ビットの乱数である。“←”はRC表現からの逆変換を表す。
図20および21は、図1に示されているような暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 13およびAlgorithm 13’のフロー図を示している。
ステップ1702において、プロセッサは、乱数値に従って0点の座標値をテーブルW[r]に代入する。ステップ1704において、プロセッサは、乱数値rに従いRPCまたはRC変換した点Qの座標値を
Figure 0004772081
に代入する。ステップ1706において、乱数値rに従って
Figure 0004772081
の値をECDBL演算し
Figure 0004772081
に代入する。
ステップ1708は、ステップ1710〜1712を含んでおり、変数i=3,...15に対するループ処理である。
ステップ1710において、プロセッサは、乱数値rに従って
Figure 0004772081
の値をECADD演算してW[i]に代入する。ステップ1712において、プロセッサは、i=i+1とセットする。ステップ1702〜1712は、テーブル作成のための処理である。i=3,...15についてステップ1708のループ処理が終了したとき、手順はステップ1714に進む。
ステップ1714において、プロセッサは、乱数値rと鍵n−1,...n−4番目の値dn−1,n−4の値に従って、
Figure 0004772081
の値をRに代入する。ステップ1714は、初期化のための処理である。
ステップ1716は、ステップ1718〜1724を含んでおり、変数i=n−5,...0に対するループ処理である。
ステップ1718は4回繰り返されるループ処理である。ステップ1720において、プロセッサはレジスタRの値をECDBL演算してRに代入する。ステップ1722において、乱数値rと鍵のi,...i−3番目のビットの値に従って
Figure 0004772081
の値とRの値をECADD演算してRに代入する。ステップ1724において、プロセッサはi=i−4とセットする。i=n−5,...0についてステップ1716の処理が終了したとき、手順はステップ1726に進む。
ステップ1726において、プロセッサは、レジスタRの値をRPCまたはRC逆変換して出力する。
図22および23は、Algorithm 13およびAlgorithm 13'を実装したブロック図を示している。
暗号化装置は、さらに、プロセッサ62と、ROMのようなプログラム・メモリ64とを含んでいる。プロセッサ62は、メモリ64に格納されているプログラムに従って図22および23に示された諸要素を制御する。代替構成として、プロセッサ62は、その諸要素に対応する機能を実現するメモリ64中のプログラムを実行することによってその諸要素を実現してもよい。
図22および23のブロック図のフローを次に表す。
Figure 0004772081
このフローはAlgorithm 13およびAlgorithm 13'のどちらにも適応可能である。Algorithm 13およびAlgorithm 13'とこのフローの相違は以下の通りである。
− 図20および21においては、このフローにおけるインデックス計算をセレクタとデマルチプレクサで構成している。これはハードウェアで表現するためであり、共に効果は同じである。
図11のAlgorithm 9およびAlgorithm 9’のブロック図と比較すると、図22および23のブロック図では、インデックスとランダム値のXORが増加するのみで、楕円曲線上の点の加算と2倍算の回数は変わらない。
本発明によるAlgorithm11、Algorithm11’、Algorithm 12およびAlgorithm 12’、Algorithm 13およびAlgorithm 13'は、Algorithm 10およびAlgorithm10’と同様に、アドレス・ビットDPAに対して安全である。オーバヘッドについても、Algorithm 11、Algorithm 12およびAlgorithm10’〜Algorithm 12’、Algorith13、およびAlgorithm 13'は、Algorithm5、Algorithm 6およびAlgorithm 5’〜Algorithm 7’、Algorithm 9、およびAlgorithm 9'と比較すると、楕円曲線上の点の演算(ECDBLとECADD)の数は等しく、増加したのはインデックスの計算だけである。そのため、Algorithm 8と同様、本対策による、オーバヘッドはほぼ無視できるものである。
図24は、各アルゴリズムの関係を示している。
以上説明した本発明の実施形態の手法を用いることによりAlgorithm 5- Algorithm 7およびAlgorithm 5’- Algorithm 7’、 Algorithm 9およびAlgorithm 9'に対してアドレス・ビットDPA対策を施すことができる。その場合のオーバヘッドは、スカラー値の計算(シフトとXOR)のみで、楕円曲線上の点の演算は生じない。楕円曲線暗号の処理の場合、点の演算以外の処理量はほぼ無視できるので、本手法を用いた場合のオーバヘッドは無視できる。Coron 99、Messerges 99、 CJ01およびYITT02の方法に使用された場合、楕円曲線上の点の演算は5%〜15%程度だけ増加するので、本発明の手法は速度低下を起こすことなくアドレス・ビットDPA対策を実現でき、SPA、データ・ビットDPAおよびアドレス・ビットDPAに対して安全な楕円曲線暗号実装方法を提供できる。
以上説明した実施形態は典型例として挙げたに過ぎず、その変形およびバリエーションは当業者にとって明らかであり、当業者であれば本発明の原理および請求の範囲に記載した発明の範囲を逸脱することなく上述の実施形態の種々の変形を行えることは明らかである。
図1は、暗号デバイスにおける秘密鍵を用いた暗号処理を例示している。 図2は、ウィンドウ法を用いた点のスカラー倍算V=dAのアルゴリズムを示している。 図3は、暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 5のフロー図を示している。 図4は、Algorithm 5を実装したブロック図を示している。 図5は、暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 6のフロー図を示している。 図6は、Algorithm 6を実装したブロック図を示している。 図7は、暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 7のフロー図を示している。 図8は、Algorithm 7を実装したブロック図を示している。 図9および10は、暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 9およびAlgorithm 9’のフロー図を示している。 (図10は図9で説明) 図11および12は、Algorithm 9およびAlgorithm 9’を実装したブロック図を示している。 (図12は図9で説明) 図13Aおよび13Bは、本発明の原理を説明するのに役立つ。 図14は、暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 10およびAlgorithm 10’のフロー図を示している。 図15は、Algorithm 10およびAlgorithm 10’を実装したブロック図を示している。 図16は、暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 11およびAlgorithm 11’のフロー図を示している。 図17は、Algorithm 11およびAlgorithm 11’を実装したブロック図を示している。 図18は、暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 12およびAlgorithm 12’のフロー図を示している。 図19は、Algorithm 12およびAlgorithm 12’を実装したブロック図を示している。 図20および21は、暗号化/復号ユニットまたはプロセッサによって実行されるAlgorithm 13およびAlgorithm 13’のフロー図を示している。 (図21は図9で説明) 図22および23は、Algorithm 13およびAlgorithm 13'を実装したブロック図を示している。 (図23は図9で説明) 図24は、各アルゴリズムの関係を示している。

Claims (9)

  1. 秘密鍵を用いて楕円曲線暗号処理を行う暗号装置であって、
    ウィンドウ・メソッドで楕円曲線上の点のスカラー倍算を行う演算手段と、
    複数のデータ格納領域を有する格納手段と、
    所定のビット数からなる乱数rの値より前記演算手段によって行われる前記点のスカラー倍算の初期処理としての演算によって得られた値をそれぞれ格納するのに用いる前記複数のデータ格納領域のアドレスを決定し、秘密鍵dと前記乱数rとの排他的論理和の値により、前記点のスカラー倍算を行うための入力に用いる、前記初期処理としての演算によって得られた値が格納された前記複数のデータ格納領域の中の1つのデータ格納領域のアドレスを前記点のスカラー倍算の演算ごとに更新して決定するアドレス決定手段と、
    を具える、暗号装置。
  2. 前記演算手段は、RPC法による変換を含む演算を行うものである、請求項1に記載の暗号装置。
  3. 前記演算手段は、RC法による変換を含む演算を行うものである、請求項1に記載の暗号装置。
  4. プロセッサおよびデータ格納手段を具える暗号処理を行う装置において秘密鍵を用い楕円曲線暗号処理を前記プロセッサに実行させるためのプログラムであって、
    所定のビット数からなる乱数rの値よりウィンドウ・メソッドによる点のスカラー倍算の初期処理としての演算によって得られた値をそれぞれ格納するのに用いる前記データ格納手段の複数のデータ格納領域のアドレスを決定して、前記演算によって得られた値を前記複数のデータ格納領域に格納するステップと、
    秘密鍵dと前記乱数rとの排他的論理和の値により、前記点のスカラー倍算を行うための入力に用いる、前記初期処理としての演算によって得られた値が格納された前記複数のデータ格納領域の中のデータ格納領域のアドレスを前記点のスカラー倍算の演算ごとに更新して決定するステップと、
    前記更新して決定されたアドレスのデータ格納領域のデータを用いて、ウィンドウ・メソッドによる楕円曲線上の点のスカラー倍算を行うステップと、
    を前記プロセッサに実行させるためのプログラム。
  5. 前記点のスカラー倍算を行うステップは、RPC法による変換を含む演算を行うものである、請求項に記載のプログラム。
  6. 前記点のスカラー倍算を行うステップは、RC法による変換を含む演算を行うものである、請求項に記載のプログラム。
  7. プロセッサおよびデータ格納手段を具える暗号処理を行う楕円曲線暗号処理装置において、秘密鍵を用いて前記楕円曲線暗号処理装置が実行する方法であって、
    所定のビット数からなる乱数rの値よりウィンドウ・メソッドによる点のスカラー倍算の初期処理としての演算によって得られた値をそれぞれ格納するのに用いる前記データ格納手段の複数のデータ格納領域のアドレスを決定して、前記演算によって得られた値を前記複数のデータ格納領域に格納するステップと、
    秘密鍵dと前記乱数rとの排他的論理和の値により、前記点のスカラー倍算を行うための入力に用いる、前記初期処理としての演算によって得られた値が格納された前記複数のデータ格納領域の中のデータ格納領域のアドレスを前記点のスカラー倍算の演算ごとに更新して決定するステップと、
    前記更新して決定されたアドレスのデータ格納領域のデータを用いて、ウィンドウ・メソッドによる楕円曲線上の点のスカラー倍算を行うステップと、
    前記楕円曲線暗号処理装置が実行する方法。
  8. 前記点のスカラー倍算を行うステップは、RPC法による変換を含む演算を行うものである、請求項に記載の方法。
  9. 前記点のスカラー倍算を行うステップは、RC法による変換を含む演算を行うものである、請求項に記載の方法。
JP2008109993A 2008-04-21 2008-04-21 秘密鍵を用いた耐タンパ楕円曲線暗号処理 Expired - Lifetime JP4772081B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008109993A JP4772081B2 (ja) 2008-04-21 2008-04-21 秘密鍵を用いた耐タンパ楕円曲線暗号処理

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008109993A JP4772081B2 (ja) 2008-04-21 2008-04-21 秘密鍵を用いた耐タンパ楕円曲線暗号処理

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004560591A Division JP4789468B2 (ja) 2002-12-18 2002-12-18 秘密鍵を用いた耐タンパ楕円曲線暗号処理

Publications (2)

Publication Number Publication Date
JP2008217033A JP2008217033A (ja) 2008-09-18
JP4772081B2 true JP4772081B2 (ja) 2011-09-14

Family

ID=39837056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008109993A Expired - Lifetime JP4772081B2 (ja) 2008-04-21 2008-04-21 秘密鍵を用いた耐タンパ楕円曲線暗号処理

Country Status (1)

Country Link
JP (1) JP4772081B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6360440B2 (ja) * 2015-01-06 2018-07-18 Kddi株式会社 復号装置、方法及びプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002519722A (ja) * 1998-06-03 2002-07-02 クリプターグラフィー リサーチ インコーポレイテッド スマートカードおよび他の暗号システム用の、漏洩を最小に抑える、改良desおよび他の暗号プロセス
EP1548687B1 (en) * 2002-12-18 2013-01-09 Fujitsu Limited Tamper-resistant elliptical curve encryption using secret key

Also Published As

Publication number Publication date
JP2008217033A (ja) 2008-09-18

Similar Documents

Publication Publication Date Title
JP4789468B2 (ja) 秘密鍵を用いた耐タンパ楕円曲線暗号処理
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
JP4632950B2 (ja) 個人鍵を用いた耐タンパ暗号処理
Izu et al. Improved elliptic curve multiplication methods resistant against side channel attacks
US7639808B2 (en) Elliptic curve cryptosystem apparatus, elliptic curve cryptosystem method, elliptic curve cryptosystem program and computer readable recording medium storing the elliptic curve cryptosystem program
Coron Resistance against differential power analysis for elliptic curve cryptosystems
JP3821631B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
JP5365624B2 (ja) 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置
JPWO2008149496A1 (ja) 情報セキュリティ装置
JP5182364B2 (ja) サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
JP5407352B2 (ja) 復号処理装置、復号処理プログラム、復号処理方法
JP5977996B2 (ja) サイドチャンネル攻撃に対する抵抗力のあるモジュラー累乗法及び装置
JP5553773B2 (ja) 楕円曲線上の点のスカラー倍を計算する装置及び方法
Fouque et al. Defeating countermeasures based on randomized BSD representations
JP4772081B2 (ja) 秘密鍵を用いた耐タンパ楕円曲線暗号処理
JP2004163687A (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
Yen et al. Improvement on Ha-Moon randomized exponentiation algorithm
Akishita et al. Zero-value register attack on elliptic curve cryptosystem
Kaminaga et al. Power analysis and countermeasure of RSA cryptosystem
Gulen et al. Side-Channel Resistant 2048-Bit RSA Implementation for Wireless Sensor Networks and Internet of Things
Cryptosystems A New Variant Nevine Maurice Ebied’s Key Randomization
Kim et al. SPA countermeasure based on unsigned left-to-right recodings
Reddy et al. E. Kesavulu Reddy Cryptosystem to Resistance against Simple Power Analysis Attacks in Mobile Devices
JP2006078943A (ja) べき演算装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110509

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110621

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110621

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140701

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4772081

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

EXPY Cancellation because of completion of term