JP4284320B2 - 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム - Google Patents

楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム Download PDF

Info

Publication number
JP4284320B2
JP4284320B2 JP2005507578A JP2005507578A JP4284320B2 JP 4284320 B2 JP4284320 B2 JP 4284320B2 JP 2005507578 A JP2005507578 A JP 2005507578A JP 2005507578 A JP2005507578 A JP 2005507578A JP 4284320 B2 JP4284320 B2 JP 4284320B2
Authority
JP
Japan
Prior art keywords
elliptic curve
scalar multiplication
coordinates
algorithm
coordinate
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 - Fee Related
Application number
JP2005507578A
Other languages
English (en)
Other versions
JPWO2005015526A1 (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
Publication of JPWO2005015526A1 publication Critical patent/JPWO2005015526A1/ja
Application granted granted Critical
Publication of JP4284320B2 publication Critical patent/JP4284320B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7228Random curve mapping, e.g. mapping to an isomorphous or projective curve
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Storage Device Security (AREA)
  • Image Processing (AREA)

Description

本発明は、楕円曲線暗号処理に関し、特に、楕円曲線暗号処理を行なうプロセッサにおける電力解析攻撃の防止に用いて好適な、楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラムに関する。
暗号方式には公開鍵暗号方式と共通鍵暗号方式とが含まれる。公開鍵暗号方式は、暗号化と復号化とで異なる鍵(キー)を用いる方式である。典型的な公開鍵暗号方式では、暗号化を行なうための鍵(公開鍵)を公開しておき、この公開鍵を用いて平文を暗号化して受信者に送信する。暗号文を復号化するための鍵(秘密鍵)は受信者のみが知る秘密情報として保持されており、受信者がこの秘密鍵を用いて暗号文を復号化することにより平文を得ることができる。
また、近年では、公開鍵暗号として楕円曲線暗号 (Elliptic Curve Cryptography)が注目を集めている。この楕円曲線暗号にはさまざまな種類の暗号化・復号化アルゴリズムが知られているが、ほとんどの暗号化・復号化処理でスカラー倍算という演算が用いられる。ここでスカラー倍算とは、楕円曲線上のベースポイントと呼ばれる点Pとスカラーと呼ばれる整数dとから、d×P=P+P+..+P(d個の和)を計算することである。なお、楕円曲線暗号においては、ベースポイントPとスカラー倍点d×Pとから、スカラーd(秘密鍵)を求めることは困難であることが知られている。
ここで、楕円曲線暗号の例として、ECES暗号方式を説明する。送信者Aが秘密鍵s(sは整数)を持ち、受信者Bが秘密鍵t(tは整数)を持つ場合に、楕円曲線Eと、楕円曲線E上に設定されるベースポイントP(=(x,y))と、公開鍵s×P(送信者Aの秘密鍵sとベースポイントPとのスカラー倍点)と、公開鍵t×P(受信者Bの秘密鍵tとベースポイントPとのスカラー倍点)とがあらかじめ公開されている。
このとき送信者Aは、自分の秘密鍵sと、受信者Bの公開鍵t×Pとのスカラー倍算s×(t×P)を計算し、そのx座標のビット表現を求め、このビット表現とメッセージのビット表現との間でビット対応のEOR(Exclusive OR:排他的論理和)演算を施すことで、メッセージmに対する暗号文Cを生成し、それを受信者Bに送信する。受信者Bは、自分の秘密鍵tと、送信者Aの公開鍵s×Pとのスカラー倍算t×(s×P)を計算し、そのx座標のビット表現を求める。そして、
s×(t×P)=t×(s×P)
という関係式が成立することを考慮して、そのビット表現と暗号文Cのビット表現との間でビット対応のEOR演算を施すことで、暗号文Cを復号してメッセージmを得る。このようにしてECES暗号と呼ばれる暗号方式では、スカラー倍を用いて暗号化・復号化処理を行なう。
また、暗号の分野における技術の一つに、解読技術と呼ばれるものがある。解読技術とは秘密鍵等の秘密情報を暗号文等入手可能な情報から推定する技術のことであり、様々な手法が存在する。その中で最近注目されている技術に、サイドチャネル攻撃と呼ばれる手法がある。
サイドチャネル攻撃は、1998年に Paul Kocherによって考案された手法であって、スマートカード等に搭載された暗号プロセッサに様々な入力データを与えた時のサイドチャネル情報(消費電力データ・消費時間データ・電磁波データ等)を収集・解析することにより、暗号プロセッサ内部の鍵情報を推定する手法である。サイドチャネル攻撃を用いると、公開鍵暗号、共通鍵暗号共に暗号プロセッサから秘密鍵を推定できる可能性があることが指摘されている。
このサイドチャネル攻撃の中で、電力解析攻撃は強力な攻撃法である。この電力解析攻撃として、単純電力解析(SPA;Single Power Analysis)と、差分電力解析(DPA;Differential Power Analysis)との2種類の手法が知られている。SPAは暗号プロセッサにおける単一の電力消費データの特徴から秘密鍵の推定を行なう方式であり、DPAは多数の電力消費データの差分を解析することで秘密鍵の推定を行なう方式である。
そして、楕円曲線暗号に対しても、上述したSPAやDPAを適用することが可能である。この場合、スカラー倍算が攻撃対象となることが多い。詳細な推定法については、Jean-Sebastein Coron “Resistance against Differential Power Analysis for Elliptic Curve Crytosystems”, Cryptographic Hardware and Embedded Systems 1999 (CHES1999), Lecture Notes in Computer Science vol. 1717, Springer-Verlag, pp.292-302, 1999(以下、文献Coron99という)等の文献にて述べられている。
さて、楕円曲線暗号の暗号化・復号化処理では、楕円曲線上の点のスカラー倍算が中心となる。スカラー倍算d×Pの最も単純な実現手法としてバイナリ法(Binary method)があり、最上位ビット(Most Significant Bit;MSB)から計算する方法(バイナリ法(MSB))と、最下位ビット(Least Significant Bit;LSB)から計算する方法(バイナリ法(LSB))とが知られている。
ここで、バイナリ法(MSB)のアルゴリズム例を(1)Algorithm1に、又、バイナリ法(LSB)のアルゴリズム例を(2)Algorithm2に示す。なお、以下、特に断りの無い限り、小文字(d等)はスカラー値を表わし、大文字(P,T等)は楕円曲線上の点を表わすものとする。又、楕円加算をECADD、楕円2倍算をECDBLと表わす。更に、符号“^”はべき乗算を表わすものとし、“(”と“)2”とによって囲まれた数列は2進数で表現された数字を表わす。又、“S1:”等のように、Sを付した数字はアルゴリズムを表わすプログラム例におけるステップ数を示すものとする。
(1)Algorithm1[バイナリ法(MSB)]
S1: T := P
S2: for i = n-2 downto 0 [
S3: T := ECDBL( T )
S4: if ( d[i] == 1 ) [
S5: T := ECADD( T, P ) ← ※
S6: ]
S7: ]
S8: return( T )
ここで、T は一時変数、dはnビットのスカラー値で、d[i] はdの下位i番目のビットの値である。
例えば d=21=2^4+2^2+2^0=(10101)2 についてスカラー倍算d×Pを計算する場合を考える。ステップ S1においては変数Tに点Pが設定され、その次のステップS2〜S7において、i=3,2,1,0に対応する各処理が行なわれる。
i=3のとき、ステップS3では変数TにECDBL(T)が設定され、処理後の変数Tの値は2×Pとなる。また、i=3 のときには、d[i]=d[3]=0なので、ステップS4〜S6はスキップされる。
i=2 のとき、ステップS3では変数TにECDBL(T)が設定され、処理後の変数Tの値は4×Pとなる。又、i=2のときには、d[i]=d[2]=1なので、ステップS5では変数TにECADD(T,P)が設定され、処理後の変数Tの値は5×Pとなる。
i=1のとき、ステップS3では変数TにECDBL(T)が設定され、処理後の変数Tの値は10×Pとなる。又、i=1のときには、d[i]=d[1]=0なので、ステップS4〜S6はスキップされる。
i=0とき、ステップS3では変数TにECDBL(T)が設定され、処理後の変数Tの値は20×Pとなる。又、i=0のときには、d[i]=d[0]=1なので、ステップS5では変数TにECADD (T,P)が設定され、処理後の変数Tの値は21×Pとなる。
以上でステップS2〜S7の処理が終了し、最後のステップS8で変数Tの値21×Pが出力される。このようにバイナリ法(MSB)では、スカラ値の最上位ビットから処理が行なわれるのである。
(2)Algorithm2[バイナリ法(LSB)]
S1: T[1] := P
S2: T[0] := O
S3: for i = 0 upto n-1 [
S4: if ( d[i] == 1 ) [
S5: T[0] := ECADD( T[0], T[1] ) ← ※
S6: ]
S7: T[1] := ECDBL( T[1] )
S8: ]
S9: return( T[0] )
ここで T[0],T[1] はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位i番目のビットの値である。
例えば d=21=2^4+2^2+2^0=(10101)2 についてスカラー倍算d×Pを計算する場合を考える。ステップS1においては変数T[1] に点Pが、又、変数T[0]に点Oが設定される。次のステップS3〜S8においてi=0,1,2,3,4に対応する各処理が行なわれる。
i=0のときには、d[i]=d[0]=1なので、ステップS5では変数T[0]に ECADD(T[0],T[1])が設定され、処理後の変数T[0]の値はPとなる。ステップS7では変数T[1]にECDBL(T[1])が設定され、処理後の変数T[1]の値は2×Pとなる。
i=1のときには、d[i]=d[1]=0なので、ステップS4〜S6はスキップされる。ステップS7では変数T[1]にECDBL(T[1])が設定され、処理後の変数T[1]の値は4×Pとなる。
i=2のときには、d[i]=d[2]=1なので、ステップS5では変数T[0]にECADD(T[0],T[1])が設定され、処理後の変数T[0]の値は5×Pとなる。ステップS7では変数T[1]にECDBL(T[1])が設定され、処理後の変数T[1]の値は8×Pとなる。
i=3のときには、d[i]=d[3]=0なので、ステップS4〜S6はスキップされる。ステップS7では変数T[1]にECDBL(T[1])が設定され、処理後の変数T[1]の値は16×Pとなる。
i=4のときには、d[i]=d[0]=1なので、ステップS5では変数T[0]にECADD(T[0],T[1])が設定され、処理後の変数T[0]の値は21×Pとなる。ステップS7では変数T[1]にECDBL(T[1])が設定され、処理後の変数T[1]の値は32×Pとなる。
以上でステップS3〜S8の処理が終了し、最後のステップS9で変数T[0]の値21×Pが出力される。このようにバイナリ法(LSB)では、スカラ値の最下位ビットから処理が行なわれるのである。
さて、上述したAlgorithm1およびAlgorithm2を点のスカラー倍算に使用した場合には、いずれも※印を付したステップS5の処理は、dのビット値d[i]に応じて実行されたりされなかったりする。SPAではこの性質を利用して秘密鍵dを解析する。多くの実験から、ECDBLとECADDの電力波形は特徴的で容易に区別可能であることが知られている。従って、プロセッサにおけるAlgorithm1およびAlgorithm2の演算において発生する電力波形を測定することによって、その波形からECDBLとECADDの演算の順序と回数がわかり、秘密鍵dを解析して求めることができる。
このSPAへの対策として、アド・アンド・ダブル・オールウェイズ(add-and-double-always)と呼ばれる、加算と2倍算とを常に行なう方法が 文献Coron99で提案されている。この方法では、常にECDBL演算とECADD演算とが交互に行なわれるのでSPAに対して安全である。以下に、先述したAlgorithm1およびAlgorithm2に対してアド・アンド・ダブル・オールウェイズを施したアルゴリズム例をAlgorithm3およびAlgorithm4として示す。
(3)Algorithm3[バイナリ法 (MSB,アド・アンド・ダブル・オールウェイズ)]
S1: T[0] := P
S2: for i = n-2 downto 0 [
S3: T[0] := ECDBL(T[0] )
S4: T[1] := ECADD( T[0], P )
S5: T[0] := T[d[i]]
S6: ]
S7: return( T[0] )
ここで、T[0], T[1] はいずれも一時変数、dはnビットのスカラー値で、d[i] はdの下位iビット目の値である。
(4)Algorithm4[バイナリ法 (LSB,アド・アンド・ダブル・オールウェイズ)]
S1: T[0] := O
S2: T[2] := P
S3: for i = 0 upto n-1 [
S4: T[1] := ECADD( T[0], T[2] )
S5: T[2] := ECDBL( T[2] )
S6: T[0] := T[d[i]]
S7: ]
S8: return( T[0])
ここで、T[0], T[1], T[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。
上述したAlgorithm3およびAlgorithm4を用いることによりSPAを防止することができる。又、同様の効果をもつ方式として、 モンゴメリ・ラダー(Montgomery-Ladder) を用いた方法が、T. Izu, and T. Takagi, "A Fast Parallel Elliptic Curve Multiplication Resistant against Side Channel Attacks'', Public-Key Cryptography 2002 (PKC2002), Lecture Notes in Computer Science vol. 2274, pp.280-296, Springer-Verlag, 2002.(以下、文献Izu-Takagi02という)にて提案されている。
スカラー倍算d×Pにおいて、モンゴメリ・ラダーでは常にECDBLとECADDを交互に計算するので、SPAに対して安全である。モンゴメリ・ラダーのアルゴリズム例を Algorithm5に示す。
(5)Algorithm5[モンゴメリ・ラダー]
S1: T[0] := P
S2: T[1] := ECDBL( T[0] )
S3: for i = n-2 downto 0 [
S4: T[2] := ECDBL( T[d[i]] )
S5: T[1] := ECADD( T[0], T[1] )
S6: T[0] := T[2-d[i]]
S7: T[1] := T[1+d[i]]
S8: ]
S9: return ( T[0] )
ここで T[0], T[1], T[2]はいずれも一時変数、dはnビットのスカラー値で、d[i] はdの下位iビット目の値である。
上述したAlgorithm3〜Algorithm5を用いることによりSPAを防止することができるが、文献Coron99にはこれらのアルゴリズムに対するDPAについても述べられており、Algorithm3〜Algorithm5ではDPAで秘密鍵を解析して求めることができることが示されている。そして、文献Coron99には、ランダム化射影座標(Randomized Projective Coordinates;RPC)と呼ばれる、乱数を使用した楕円曲線上の点の表現を導入することによって、Algorithm3〜Algorithm5に対するDPAへの各対策が提案されている。
以下に、Algorithm3に対してRPCを施したアルゴリズム例をAlgorithm3′として示す他、Algorithm4に対してRPCを施したアルゴリズム例をAlgorithm4′として、又、Algorithm5に対してRPCを施したものをAlgorithm5′としてそれぞれ示す。なお、以下、RPCで表現された楕円曲線上の点をダッシュ(′もしくは’)付の変数で示す。
(6)Algorithm3′[バイナリ法(MSB,アド・アンド・ダブル・オールウェイズ,RPC)]
S1: T'[2] := RPC(P)
S2: T'[0] := T'[2]
S3: for i = n-2 downto 0 [
S4: T'[0] := ECDBL( T'[0] )
S5: T'[1] := ECADD( T'[0], T'[2] )
S6: T'[0] := T'[d[i]]
S7: ]
S8: return( invRPC(T'[0]) )
ここで、T’[0], T’[1], T’[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。又、invRPCはRPC表現からの逆変換を示す。
(7)Algorithm4′[バイナリ法 (LSB,アド・アンド・ダブル・オールウェイズ,RPC)]
S1: T'[0] := O
S2: T'[2] := RPC(P)
S3: for i = 0 upto n-1 [
S4: T'[1] := ECADD( T'[0], T'[2] )
S5: T'[2] := ECDBL( T'[2] )
S6: T'[0] := T'[d[i]]
S7: ]
S8: return( invRPC(T'[0]) )
ここで、T’[0], T’[1], T’[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。又、invRPCはRPC表現からの逆変換を示す。
(8)Algorithm5′[モンゴメリ・ラダー,RPC]
S1: T'[0] := RPC(P)
S2: T'[1] := ECDBL(T'[0])
S3: for i = n-2 downto 0 [
S4: T'[2] := ECDBL( T'[d[i]] )
S5: T'[1] := ECADD( T'[0], T'[1] )
S6: T'[0] := T'[2-d[i]]
S7: T'[1] := T'[1+d[i]]
S8: ]
S9: return( invRPC(T'[0]) )
ここで、T’[0], T’[1], T’[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。又、invRPCはRPC表現からの逆変換を示す。
また、DPAに対する対策として、RPCと同様の効果を持つ方式として、M. Joye, and C. Tymen, “Protections against differential analysis for elliptic curve cryptography”, Cryptographic Hardware and Embedded Systems 2001 (CHES 2001), Lecture Notes in Computer Science vol. 2162, pp. 377-390, Springer-Verlag, 2001.(文献Joye-Tymen01という)で提案された ランダム化曲線(Randomized Curve ;RC)法がある。
RCは、RPCと同様に乱数を用いた点の表現を用いた点の表現を用いた点の表現を用いることによるDPA対策法である。RCの適用方法はRPCと同様である。Algorithm3に対してRCを施したアルゴリズム例をAlgorithm3″として示し、同様に、Algorithm4に対してRCを施したアルゴリズム例をAlgorithm4″,Algorithm5に対してRCを施したアルゴリズム例をAlgorithm5″としてそれぞれ示す。なお、以下、RCで表現された楕円曲線上の点はダブルダッシュ(″もしくは”)付の変数で示す。
(9)Algorithm3″[バイナリ法(MSB,アド・アンド・ダブル・オールウェイズ,RC)]
S1: T" [2] := RC(P)
S2: T"[0] := T"[2]
S3: for i = n-2 downto 0 [
S4: T"[0] := ECDBL( T"[0] )
S5: T"[1] := ECADD( T"[0], T"[2] )
S6: T"[0] := T"[d[i]]
S7: ]
S8: return( invRC(T"[0]) )
ここで、T”[0], T”[1], T”[2] はいずれも一時変数、dはnビットのスカラー値で、d[i] はdの下位iビット目の値である。又、invRCはRC表現からの逆変換を示す。
(10)Algorithm4″[バイナリ法(LSB,アド・アンド・ダブル・オールウェイズ,RC)
S1: T"[0] := O
S2: T"[2] := RC(P)
S3: for i = 0 upto n-1 [
S4: T"[1] := ECADD( T"[0], T"[2] )
S5: T"[2] := ECDBL( T"[2] )
S6: T"[0] := T"[d[i]]
S7: ]
S8: return( invRC(T"[0]) )
ここで、T”[0], T”[1], T”[2]はいずれも一時変数、dはnビットのスカラー値で、d[i] はdの下位iビット目の値である。又、invRCはRC表現からの逆変換を示す。
(11)Algorithm5″[モンゴメリ・ラダー,RC]
S1: T"[0] := RC(P)
S2: T"[1] := ECDBL(T"[0])
S3: for i = n-2 downto 0 [
S4: T"[2] := ECDBL( T"[d[i]] )
S5: T"[1] := ECADD( T"[0], T"[1] )
S6: T"[0] := T"[2-d[i]]
S7: T"[1] := T"[1+d[i]]
S8: ]
S9: return( invRC(T"[0]) )
ここで、T”[0], T”[1], T”[2]はいずれも一時変数、dはnビットのスカラー値で、d[i] はdの下位iビット目の値である。又、invRCはRC表現からの逆変換を示す。
また、スカラー倍算d×Pの実現手法としては、前述したバイナリ法(Algorithm1,2)やモンゴメリ・ラダー(Algorithm5)の他に、ウィンドウ法(window method)と呼ばれる方法もある。例えば、幅4ビットのウィンドウ法は、初期処理としてPの0〜15倍を計算し、その結果をテーブルとして持っておき、次にスカラー値を4ビット単位(ウィンドウ)に分割することにより、スカラー倍算を処理する。以下に、Algorithm6としてウィンドウ法(幅4ビット)のアルゴリズム例を示す。
(12)Algorithm6[ウィンドウ法(幅4ビット)]
S01: W[0] = O
S02: W[1] = P
S03: for i = 2 upto 15 [
S04: W[i] = ECADD(W[i-1], P)
S05: ]
S06: T := W[d[n-1,n-4]]
S07: for i = n-5 downto 3 step -4 [
S08: T := ECDBL( T )
S09: T := ECDBL( T )
S10: T := ECDBL( T )
S11: T := ECDBL( T )
S12: T := ECADD( T, W[d[i,i-3]] )
S13: ]
S14: return( T )
ここで、dはnビットのスカラー値で、nは4の倍数と仮定する。又、d[i,i-3]はdの下位iビット目から(i−3)ビットまでの4ビット値とする。W[i]はウィンドウ法で使用するテーブルである。
例えば、d=21=2^4+2^2+2^0=(10101)2=(0001 0101)2に対するスカラー倍算を考える。このときdは5ビットで4の倍数ではないので、便宜上、その上位3ビットに0を挿入して8ビットとみなす。このときn=8である。先ず、初期値としてステップS01でW[0]=0が、ステップS02でW[1]=Pが設定される。次に i=2,3,...,15に対し、ステップS03〜S05が実行される。各iに対し、ステップS04でW[i] = ECADD(W[i-1], P)が設定される。このとき、W[i]に設定されている値は i×Pとなっている。ステップS03〜S05の処理の終了後、ステップS06で変数TにW[d[n-1,n-4]] = W[d[7,4]] = W[d[0001]] = 1×P が設定される。
次に、i=3に対してステップS07〜S13が処理される。ステップS08ではT := ECDBL( T ) が処理され、変数Tには2×Pが登録される。ステップS09ではT:= ECDBL( T )が処理され、変数Tには4×Pが登録される。ステップS10ではT := ECDBL( T )が処理され、変数Tには8×Pが登録される。ステップS11ではT := ECDBL( T )が処理され、変数Tには16×Pが登録される。ステップS12ではT := ECADD( T, W[d[i,i-3]] ) = ECADD( T, W[0101] ) = ECADD( 16×P, 5×P ) = 21×Pが処理され、変数Tに21×Pが登録される。
以上でステップS07〜S13の処理が終了する。最後にステップS14において変数Tの値21×Pが出力される。このようにウィンドウ法では、あらかじめ作成したテーブルを用いてスカラー倍算d×Pを計算するのである。
さて、点のスカラー倍算にAlgorithm6(ウィンドウ法)を使用する場合には、dのビット値に応じて行なわれたり行なわれなかったりするような処理が無いので、バイナリ法と比較して一般にSPAに対して安全であるといわれている。しかし、ウィンドウ法は、バイナリ法と同様に、DPAに対しては安全ではなく、文献Coron99に開示された手法で解析可能であるが、かかるDPAに対しては、バイナリ法やモンゴメリ・ラダーと同様に、RPCやRCが有効であることが知られている。以下に、Algorithm6に対してRPCを施したアルゴリズム例をAlgorithm6′に、又、Algorithm6にRCを施したアルゴリズム例をAlgorithm6″に示す。
(13)Algorithm6′[ウィンドウ法(幅4ビット),RPC]
S01: W'[0] = O
S02: W'[1] = RPC(P)
S03: for i = 2 upto 15 [
S04: W'[i] = ECADD( W'[i-1], W'[1] )
S05: ]
S06: T' := W'[d[n-1,n-4]]
S07: for i = n-5 downto 0 step -4 [
S08: T' := ECDBL( T' )
S09: T' := ECDBL( T' )
S10: T' := ECDBL( T' )
S11: T' := ECDBL( T' )
S12: T' := ECADD( T', W'[d[i,i-3]] )
S13: ]
S14: return( invRPC(T') )
ここで、dはnビットのスカラー値で、nは4の倍数と仮定する。また d[i,i-3]はdの下位iビット目から(i−3)ビットまでの4ビット値とする。T′は一時変数、W'[i]はウィンドウ法で使用するテーブル、invRPCはRPC表現からの逆変換を示す。
(14)Algorithm6″[ウィンドウ法(幅4ビット),RC]
S01: W"[0] = O
S02: W"[1] = RC(P)
S03: for i = 2 upto 15 [
S04: W''[i] = ECADD( W"[i-1], W"[1] )
S05: ]
S06: T" := W"[d[n-1,n-4]]
S07: for i = n-5 downto 3 step -4 [
S08: T" := ECDBL( T" )
S09: T" := ECDBL( T" )
S10: T" := ECDBL( T" )
S11: T" := ECDBL( T" )
S12: T" := ECADD( T", W"[d[i,i-3]] )
S13: ]
S14: return( invRC(T'') )
ここで、dはnビットのスカラー値で、nは4の倍数と仮定する。また d[i,i-3]はdの下位iビット目から(i−3)ビットまでの4ビット値とする。T″は一時変数、W”[i] はウィンドウ法で使用するテーブル、invRCはRC表現からの逆変換を示す。
(文献Coron99) Jean-Sebastein Coron "Resistance against Differential Power Analysis for Elliptic Curve Crytosystems", Cryptographic Hardware and Embedded Systems 1999 (CHES1999), Lecture Notes in Computer Science vol. 1717, Springer-Verlag, pp.292-302, 1999 (文献Izu-Takagi02) T. Izu, and T. Takagi, "A Fast Parallel Elliptic Curve Multiplication Resistant against Side Channel Attacks'', Public-Key Cryptography 2002 (PKC2002), Lecture Notes in Computer Science vol. 2274, pp.280-296, Springer-Verlag, 2002. (文献Joye-Tymen01) M. Joye, and C. Tymen, "Protections against differential analysis for elliptic curve cryptography", Cryptographic Hardware and Embedded Systems 2001 (CHES 2001), Lecture Notes in Computer Science vol. 2162, pp. 377-390, Springer-Verlag, 2001. (文献Goubin03) L. Goubin, "A Refined Power-Analysis Attack on Elliptic Curve Cryptosystem", Public-Key Cryptography 2003 (PKC2003), Lecture Notes in Computer Science vol. 2567, Springer-Verlag, pp.199-210, 2003. (文献Clavier-Joye01) C. Clavier, and M. Joye, "Universal exponentiation algorithm --A first step towards provable SPA-resistance--", Cryptographic Hardware and Embedded Systems 2001 (CHES2001), Lecture Notes in Computer Science vol. 2162, Springer-Verlag, pp.300-308, 2001.
さて、SPAとDPAとの双方に対しては、従来、前述したAlgorithm3′〜6′やAlgorithm3″〜6″を用いれば安全であるとされていた。しかしながら、最近、L. Goubin, “A Refined Power-Analysis Attack on Elliptic Curve Cryptosystem”, Public-Key Cryptography 2003 (PKC2003), Lecture Notes in Computer Science vol. 2567, Springer-Verlag, pp.199-210, 2003.(文献Goubin03という)において、これらを解析する手法が開示された。
楕円曲線上の点のうち、x座標またはy座標が0であるような点を特殊点という。スカラー倍算の途中に特殊点が出現した場合には、SPAやDPAによって、このような点が中間値として現れたことを容易に検出することができる。文献Goubin03に開示された解析手法においては、あるビットd[i]に対応する計算の終了時に特殊点が現れるようなベースポイントを人工的に生成し、実際に特殊点が検出されるかどうかによってd[i]の値を推定するようになっている。以下、便宜上、この文献Goubin03の解析手法を用いた攻撃を特殊点攻撃と呼ぶ。
この特殊点攻撃に対し、バイナリ法やモンゴメリ・ラダーは安全でない。又、RPCやRCを用いたとしても、座標値が0になるという性質は保持されてしまうので、Algorithm3′〜6′やAlgorithm3″〜6″も特殊点攻撃に対して安全であるとはいえない。
なお、Algorithm3〜6についてのDPAに対する他の対策として、C. Clavier, and M. Joye, "Universal exponentiation algorithm --A first step towards provable SPA-resistance--", Cryptographic Hardware and Embedded Systems 2001 (CHES2001), Lecture Notes in Computer Science vol. 2162, Springer-Verlag, pp.300-308, 2001.(文献Clavier-Joye01という)にて提案されているエクスポーネント・スプリッティング(exponent-splitting;ES)がある。このESはスカラー値をランダムに変化させる手法であって、乱数rによって、スカラーdをd=r+(d−r)に分割して、2つのスカラー倍算r×Pと(d−r)×Pとを別々に計算し、
r×P+(d−r)×P=d×P
が成り立つという性質を利用して、2つのスカラー倍算の結果を足しあわせることでd×Pを計算するものである。
ここで、2つのスカラー倍算r×Pおよび(d―r)×Pには、他のSPA/DPAに耐性を有するアルゴリズムを用いる。特殊点攻撃に対しては、スカラー値がランダムに変化するために防御が可能となる。ESのアルゴリズム例をAlgorithm7に示す。
(15)Algorithm7[エクスポーネント・スプリッティング]
S1: r := random()
S2: T1 := scalar( r, P )
S3: T2 := scalar( d-r, P )
S4: T := ECADD( T1, T2 )
S5: return( T )
ここで random()はnビットの乱数を生成する関数である。又、scalar( d, P ) はスカラー倍算d×Pを計算する関数であって、具体的には、前述したAlgorithm3′〜6′やAlgorithm3″〜6″等を用いて計算される。また変数 r, T, T1, T2 はいずれも一時変数である。
ESは、SPA,DPAおよび特殊点攻撃に対して安全といえるが、ESで使用するスカラー倍算はその手法単独でSPA対策, DPA対策であるので、既にSPA対策とDPA対策済のAlgorithm3′〜6′やAlgorithm3″〜6″に適用するには無駄が多い。特に、これらの手法を適用すると、楕円曲線上の点の加算および2倍算を、適用前と比較して余分に処理しなければならず、処理オーバーヘッドが大きくなる欠点がある。
本発明は、このような課題に鑑み創案されたもので、特定点攻撃に対して秘密情報の推定を困難にし、暗号処理の安全性を高めることが可能な楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラムを提供することを目的とする。
上記の目的を達成するために、本発明の楕円曲線暗号装置は、楕円曲線暗号処理を行なう楕円曲線暗号装置であって、有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換する座標変換部(ただし、pは素数、mは1以上の整数、r1,r2,r3はいずれも1以上且つ(p−1)以下の整数、s1,s2,s3はいずれも0以上且つ(p−1)以下の整数、又、符号^はべき乗を表わす)と、この座標変換部によって変換された楕円曲線上の点のスカラー倍算を行なうスカラー倍算演算部とをそなえ、パラメーターs1,s2,s3のうち少なくとも1つが0以外の値を有することを特徴としている。
なお、スカラー倍算演算部が、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッドで、スカラー倍算を行なってもよく、又、モンゴメリ・ラダー法でスカラー倍算を行なってもよく、更に、ウィンドウ・メソッドでスカラー倍算を行なってもよい。
また、スカラー倍算演算部が、x座標法でスカラー倍算を行なってもよく、連続楕円2倍算を用いてスカラー倍算を行なってもよい。
さらに、本発明の楕円曲線暗号方法は、CPU(Central Processing Unit)をそなえた情報処理装置により楕円曲線暗号処理を行なう楕円曲線暗号方法であって、該CPUにより、有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換し、変換後の該座標を演算結果出力レジスタ群に格納する座標変換ステップ(ただし、pは素数、mは1以上の整数、r1,r2,r3はいずれも1以上且つ(p−1)以下の整数、s1,s2,s3はいずれも0以上且つ(p−1)以下の整数、又、符号^はべき乗を表わす)と、この座標変換ステップにおいて変換され該演算結果出力レジスタ群に格納された該座標に対して、該CPUにより、楕円曲線上の点のスカラー倍算を行なうスカラー倍算演算ステップとをそなえ、パラメーターs1,s2,s3のうち少なくとも1つが0以外の値を有することを特徴としている。
なお、スカラー倍算演算ステップにおいて、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッドでスカラー倍算を行なってもよく、又、スカラー倍算演算ステップにおいてモンゴメリ・ラダー法でスカラー倍算を行なってもよく、更に、スカラー倍算演算ステップにおいて、ウィンドウ・メソッドでスカラー倍算を行なってもよい。
また、スカラー倍算演算ステップにおいて、x座標法でスカラー倍算を行なってもよく、又、スカラー倍算演算ステップにおいて、連続楕円2倍算を用いてスカラー倍算を行なってもよい。
さらに、本発明の楕円曲線暗号プログラムは、楕円曲線暗号処理を行なう楕円曲線暗号プログラムであって、有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換する座標変換部(ただし、pは素数、mは1以上の整数、r1,r2,r3はいずれも1以上且つ(p−1)以下の整数、s1,s2,s3はいずれも0以上且つ(p−1)以下の整数であり、且つ、これらのs1,s2,s3のうち少なくとも1つが0以外の値を有する。又、符号^はべき乗を表わす)と、座標変換部によって変換された楕円曲線上の点のスカラー倍算を行なうスカラー倍算演算部としてコンピュータを機能させることを特徴としている。
なお、スカラー倍算演算部としてコンピュータを機能させる際に、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッドでスカラー倍算を行なってもよく、又、スカラー倍算演算部としてコンピュータを機能させる際に、モンゴメリ・ラダー法でスカラー倍算を行なってもよく、更に、スカラー倍算演算部としてコンピュータを機能させる際に、ウィンドウ・メソッドでスカラー倍算を行なってもよい。
また、スカラー倍算演算部としてコンピュータを機能させる際に、x座標法でスカラー倍算を行なってもよく、又、スカラー倍算演算部としてコンピュータを機能させる際に、連続楕円2倍算を用いてスカラー倍算を行なってもよい
このように、本発明の楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラムによれば、以下の効果ないし利点がある。
(1)有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換(ただし、pは素数、mは1以上の整数、r1,r2,r3はいずれも1以上且つ(p−1)以下のランダムな整数、s1,s2,s3はいずれも0以上且つ(p−1)以下のランダムな整数であり、且つ、これらのs1,s2,s3のうち少なくとも1つが0以外の値を有する。又、符号^はべき乗を表わす)し、この変換された楕円曲線上の点のスカラー倍算を行なうので、楕円曲線暗号におけるスカラー倍算を、サイドチャネル攻撃に対する耐性をもって計算することが可能となる。
(2)特に、s1,s2,s3のうち少なくとも1つが0以外の値を有するので、特殊点の線型変換座標での座標が0以外の値となり、スカラー倍算の途中で出現することがなく、これにより特殊点攻撃に対して安全である。
(3)アド・アンド・ダブル・オールウェイズを用いたバイナリメソッドで、スカラー倍算を行なうことにより、SPAおよびDPAに対して安全である。
(4)ヤコビアン座標におけるRPCと同様のランダム効果が期待でき、DPAに対しても安全である。
(5)モンゴメリ・ラダー法で前記スカラー倍算を行なうことにより、SPAおよびDPAに対して安全である。
(6)x座標法で前記スカラー倍算を行なうことにより、SPAおよびDPAに対して安全であり、さらに計算時間を短縮することができる。
(7)ウィンドウ・メソッドで前記スカラー倍算を行なうことにより、SPAおよびDPAに対して安全である。
(8)連続楕円2倍算を用いて前記スカラー倍算を行なうことにより、高速に演算を行なうことができる。
以下、図面を参照して本発明の実施の形態を説明する。
(a)基本説明
本発明の一実施形態としての楕円曲線暗号装置は、例えば、楕円曲線暗号の専用の情報処理装置,パーソナルコンピュータ,ICカード(スマートカード)等に内蔵されたICチップ,携帯電話機,携帯情報端末装置(PDA(Personal data assistant)等),DVDプレーヤ等として実現されるものであり、演算を行なうプロセッサを有して構成されるものである。
以下の説明では、本発明にかかる楕円曲線暗号演算方法を、pを素数、mを1以上の整数とし、要素数p^mの有限体GF(p^m)上の楕円曲線に適用した場合について説明する。なお、以下、特に断りの無い限り、小文字(d等)はスカラー値を表わし、大文字(P,T等)は楕円曲線上の点を表わすものとする。又、楕円加算をECADD、楕円2倍算をECDBLと表わす。更に、符号“^”はべき乗算を表わすものとし、“(”と“)2”とによって囲まれた数列は2進数で表現された数字を表わす。又、“S01:”等のように、Sを付した数字はアルゴリズムを表わすプログラム例におけるステップ数を示すものとする。
GF(p^m)上の楕円曲線Eは、以下の方程式を満たす点(x,y)の集合に、無限遠点(以下、ゼロ点という場合もある)と呼ばれる点∞を加えた集合である。なお、無限遠点∞を0と表すこともある。
E:y^2+a1×x×y+a3×y=x^3+a2×x^2+a4×x+a6
ここでa1,a2,a3,a4,a6,x,yはそれぞれGF(p^m)の要素である。楕円曲線上の点は(x,y)のような座標形式で表現できるが、無限遠点∞は(x,y)のような座標形式で表現することができない唯一の点である。
PをGF(p^m)上の楕円曲線E上の点とし、以下のようにPの逆元−Pを定義する。
(1)P=∞ならば、−P=∞
(2)P≠∞ならば、P=(x,y)としたときに、
−P=(x,−y−a1×x−a3)
また、P1,P2をGF(p^m)上の楕円曲線E上の2点とし、以下に示すようにP1とP2との和P3=P1+P2を定義する。
(1)P1=∞ならば、P3=P2
(2)P2=∞ならば、P3=P1
(3)P1=−P2ならば、P3=∞
(4)P1≠−P2ならばP1=(x1,y1),P2=(x2,y2),P3=(x3,y3)としたときに、
x3=λ^2+a1×λ−a2−x1−x2,
y3=−(λ+a1)×x3−ν−a3,
ただし、
P1≠P2のとき
λ=(y2−y1)/(x2−x1)
ν=(y1×x2−y2×x1)/(x2−x1)
P1=P2のとき
λ=(3×x1^2+2×a2×x+a4−a1×y1)/(2×y1+a1×x1+a3)
ν=(−x1^3+a4×x1+2×a6−a3×y1)/(2×y1+a1×x1+a3)
と定める。
P1≠P2のときに、P1+P2を計算することを楕円加算(ECADD)、P1=P2のときにP1+P2=2×P1を計算することを楕円2倍算(ECDBL)という。楕円加算・楕円2倍算は、有限体GF(p^m)での加減算・乗算・平方算・逆元計算の組み合わせによって計算される。
pを素数とするとき、有限体GF(p)を素体という。特に、pが5以上の素数の場合には、素体GF(p)上の楕円曲線Eは、方程式
E:y^2=x^3+a×x+b
を満たす点(x,y)の集合上に、無限遠点と呼ばれる点∞を加えた集合である。なお、無限遠点∞を0と表すこともある。又、a,b,x,yはそれぞれGF(p)の要素である。楕円曲線上の点は(x,y)のような座標形式で表現できるが、無限遠点∞は(x,y)のような座標形式で表現することができない唯一の点である。
PをGF(p)上の楕円曲線E上の点とし、以下に示すようにPの逆元−Pを定義する。
(1)P=∞ならば、−P=∞
(2)P≠∞ならば、P=(x,y)としたときに、−P=(x,−y)
また、P1,P2をGF(p)上の楕円曲線E上の2点とし、以下に示すようにしてP1とP2との和P3=P1+P2を定義する。
(1)P1=∞ならば、P3=P2
(2)P2=∞ならば、P3=P1
(3)P1=−P2ならば、P3=∞
(4)P1≠−P2ならば、P1=(x1,y1),P2=(x2,y2),P3=(x3,y3)としたときに、
x3=λ^2−x1−x2
y3=−λ×x3−ν,
ただし
P1≠P2のとき
λ=(y2−y1)/(x2−x1)
ν=(y1×x2−y2×x1)/(x2−x1)
P1=P2のとき
λ=(3×x1^2+a)/(2×y1)
ν=(−x1^3+a×x1+2×b)/(2×y1)
と定める。
P1≠P2のときに、P1+P2を計算することを楕円加算(ECADD)、P1=P2のときにP1+P2=2×P1を計算することを楕円2倍算(ECDBL)という。楕円加算・楕円2倍算は、有限体GF(p)での加減算・乗算・平方算・逆元計算の組み合わせによって計算される。
図1は楕円加算を説明するための図、図2は楕円2倍算を説明するための図である。楕円加算は、図1に示すように、楕円曲線上の点P1=(x1,y1)とP2=(x2,y2)とを結ぶ直線と楕円曲線との交点を、x軸で折り返した点P3=P1+P2=(x3,y3)として定義される。楕円2倍算は、図2に示されるように、楕円曲線上の点P1=(x1,y1)の接線と楕円曲線との交点を、x軸で折り返した点P4=P1+P1=2×P1=(x4,y4)として定義される。
有限体上の楕円曲線Eと、ベースポイントと呼ばれる曲線上の点Pと、スカラーと呼ばれる整数dとに対して、点d×P=P+P+…+P(d個の和)を計算することをスカラー倍算という。スカラー倍算は、楕円加算、楕円2倍算の組み合わせによって実現される。
楕円加算、楕円2倍算、スカラー倍算の計算時間は、有限体における乗算、平方算、逆元計算の計算時間の和によって見積もられることが多い。これは実際の楕円加算、楕円2倍算、スカラー倍算の計算が、有限体における加減算・乗算・平方算・逆元計算の組み合わせで計算され、多くの場合、加減算の計算時間はその他の計算時間に比べて無視できるほど短いからである。
一般に有限体GF(p^m)での逆元計算の計算時間は、乗算・平方算の計算時間に比べて非常に大きくなる。このため、本発明の楕円曲線暗号装置においては、楕円曲線の点を表現する上で線形座標を使用するようになっている。
本発明で使用する線型変換座標においては、GF(p^m)上の楕円曲線の点は(X:Y:Z)のような3つの要素の組み合わせで表される。ただし、GF(p^m)の要素r1≠0、r2≠0、r3≠0、s1、s2、s3に対して、
(X:Y:Z)と( r1×(X―s1):r2×(Y―s2):r3×(Z―s3) )とが同じ点と考える。
そして、本楕円曲線暗号装置11においては、線形変換座標は、有限体上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換するものであって、r1,r2,r3はそれぞれ0以外の任意の整数であり、s1,s2,s3の少なくともいずれか1つが0以外の整数である。なお、以下、これらのr1,r2,r3,s1,s2,s3を線型変換座標のパラメータという場合もある。
線型変換座標を用いると、楕円曲線上の全ての点は(X:Y:Z)のような座標形式で表現することができる。又、無限遠点は∞=(0:1:0)となる。
なお、線型変換座標のパラメータを(r1,r2,r3,s1,s2,s3)と表わす場合に、
(r1,r2,r3,s1,s2,s3)=(r,r,r,0,0,0)
とした場合に、射影座標として用いることができ、又、
(r1,r2,r3,s1,s2,s3)=(r^2,r^3,r,0,0,0)
とした場合に、ヤコビアン座標として用いることができる。
以下、本発明に係る楕円曲線暗号演算方法を、pを5以上の素数とし、要素数pの有限体GF(p)(pは5以上の素数)上の楕円曲線に適用した場合について説明する。
GF(p)上の楕円曲線Eは、以下の式で表わすことができる。
E:y^2=x^3+a×x+b
ここでa,b,x,yはGF(p)の要素で、4×a^3+27×b^2≠0を満たす。
図3は本発明に係る楕円曲線暗号装置11の要部の構成を示す図である。本楕円曲線暗号装置11は、図3に示すように、演算部(プロセッサ)12と記憶16とをそなえて構成されている。記憶部15は、後述する楕円曲線暗号の楕円加算,楕円2倍算,楕円2^k倍算等の演算プログラムを記憶するものである。
演算部12は、演算器13,レジスタ群14および演算結果出力レジスタ群15をそなえて構成されている。演算器13は、記憶部16に格納された楕円曲線暗号プログラムをレジスタ群14を用いて実行するものであって、その演算結果を演算結果出力レジスタ群15に出力するようになっている。
レジスタ群14および演算結果出力レジスタ群15は、いずれも複数のレジスタからなり、これらのレジスタに、演算を行なうための数値や、演算実行後の結果,現在実行しているコードのメモリアドレス、CPUの状態などを格納するものであり、演算結果出力レジスタ群15には、特に演算器13による演算結果が格納されるようになっている。
図4は本発明の一実施形態としての楕円曲線暗号装置11の機能構成を示すブロック図である。本楕円曲線暗号装置11は、図4に示すように、ゼロ点判定部21,スカラー倍算処理部22,線形座標変換部(座標変換部)23および乱数生成部24をそなえて構成されている。
乱数生成部24は、乱数r1,r2,r3を生成するものであり、生成した乱数r1,r2,r3をスカラ倍算処理部22および線形座標変換部23に渡すようになっている。
ゼロ点判定部21は、スカラー倍算の結果がゼロ点(無限遠点)であるか否かを判定するものである。
線形座標変換部23は、有限体GF(p)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換(線形座標変換)するものであり、変換後の座標(以下、線形変換座標という場合もある)をスカラー倍算処理部22に渡すようになっている。スカラー倍算処理部22は、線形座標変換部23によって変換された楕円曲線上の点のスカラー倍算d×Pを演算するものであり、後述する種々のアルゴリズムを用いて楕円加算,楕円2倍算,楕円2^k倍算等の演算処理を行なうことにより、スカラー倍算を行なうようになっている。
なお、本楕円曲線暗号装置11においては、例えば、演算部12が、記憶部16に記憶されたプログラムを実行することにより、ゼロ点判定部21,スカラー倍算処理部22,線形座標変換部23および乱数生成部24として機能するようになっている。
そして、スカラー倍算処理部22が、スカラー倍算d×Pを計算する際に、この変換後の線型変換座標における楕円加算と楕円2倍算を計算するようになっている。すなわち、スカラー倍算処理部22は、素体GF(p)上の楕円曲線Eに対して、パラメーター(r1,r2,r3,s1,s2,s3)=(r^2,r^3,r,s,0,0)の線型変換座標における楕円加算(以下、LCECADDという)と楕円2倍算(以下、LCECDBLという)を計算するようになっているのである。
このときの楕円加算の計算アルゴリズムをAlgorithm8に示すとともに、楕円2倍算の計算アルゴリズムをAlgorithm9に示す。
(a−1)Algorithm8[LCECADD(パラメーター(r^2,r^3,r,s,0,0))]
Input: P1=(X1:Y1:Z1), P2=(X2:Y2:Z2), s
Output: P3=(X3:Y3:Z3)=(X1:Y1:Z1)+(X2,Y2,Z2)
S01: if ( Z1==0 ) then return( P2 )
S02: if ( Z2==0 ) then return( P1 )
S03: T1 = Z1^2 /* Z1^2 */
S04: T2 = Z1*T1 /* Z1^3 */
S05: T3 = Z2^2 /* Z2^2 */
S06: T4 = Z2*T3 /* Z2^3 */
S07: T5 = X1*T3 /* X1*Z2^2 */
S08: T6 = s*T3 /* s*Z2^2 */
S09: T7 = X2*T1 /* X2*Z1^2 */
S10: T8 = s*T1 /* s*Z1^2 */
S11: T9 = Y1*T4 /* S1=Y1*Z2^3 */
S12: T10 = Y2*T2 /* S2=Y2*Z1^3 */
S13: T11 = T7-T5 /* X2*Z1^2-X1*Z2^2 */
S14: T12 = T11-T8 /* U2-X1*Z2^2 */
S15: T13 = T12+T6 /* U2-U1=W */
S16: T14 = T7+T5 /* X2*Z1^2+X1*Z2^2 */
S17: T15 = T14-T8 /* U2+X1*Z2^2 */
S18: T16 = T15-T6 /* U2+U1=T */
S19: T17 = T10-T9 /* S2-S1=R */
S20: T18 = T10+T9 /* S2+S1=M */
S21: T19 = T17^2 /* R^2 */
S22: T20 = T13^2 /* W^2 */
S23: T21 = T16*T20 /* T*W^2 */
S24: T22 = T19+s /* R^2+s */
S25: X3 = T22-T21 /* R^2-T*W^2+s */
S26: T23 = 2*X3 /* 2*R^2-2*T*W^2+2*s */
S27: T24 = T23-T21 /* 2*R^2-3*T*W^2+2*s */
S28: T25 = 2*s /* 2*s */
S29: T26 = T25-T24 /* 3*T*W^2-2*R^2=V */
S30: T27 = T25*T17 /* V*R */
S31: T28 = T18*T13 /* M*W */
S32: T29 = T28*T20 /* M*W^3 */
S33: Y3 = (T27-T29)/2 /* (V*R-M*W^3)/2 */
S34: T30 = Z1*Z2 /* Z1*Z2 */
S35: Z3 = T30*T13 /* Z1*Z2*W */
S36: return( (X3:Y3:Z3) )
(a−2)Algorithm9の計算例[LCECDBL(パラメーター(r^3,r^3,r,s,0,0))]
Input: P1=(X1:Y1:Z1), s, a
Output: P4=(X4:Y4:Z4)=2×(X1:Y1:Z1)
S01: if ( Z1==0 ) then return( P1 )
S02: T1 = Z1^2 /* Z1^2 */
S03: T2 = T1^2 /* Z1^4 */
S04: T3 = a*T2 /* a*Z1^4 */
S05: T4 = X1^2 /* X1^2 */
S06: T5 = 2*X1 /* 2*X1 */
S07: T6 = s-T5 /* s-2*X1 */
S08: T7 = s*T6 /* s*(s-2*X1) */
S09: T8 = 3*T4 /* 3*X1^2 */
S10: T9 = 3*T7 /* 3*s*(s-2*X1) */
S11: T10 = T3+T8 /* a*Z1^4+3*X1^2 */
S12: T11 = T10+T9 /* W+3*(X1-s)^2=M */
S13: T12 = Y1^2 /* Y1^2 */
S14: T13 = X1*T12 /* X1*Y1^2 */
S15: T14 = s*T12 /* s*Y1^2 */
S16: T15 = T12^2 /* Y1^4 */
S17: T16 = 8*T15 /* 8*s*M */
S18: T17 = T11^2 /* M^2 */
S19: T18 = 8*T13 /* 8*X1*Y1^2 */
S20: T19 = 8*T14 /* 8*s*Y1^2 */
S21: T20 = T17 + s /* M^2+s */
S22: T21 = T20-T18 /* M^2-8*X1*Y1^2+s */
S23: X4 = T20+T19 /* M^2-2*S+s */
S24: T22 = 4*T13 /* 4*X1*Y1^2 */
S25: T23 = 4*T14 /* s*Y1^2 */
S26: T24 = T22+s /* 4*X1*Y1^2+s */
S27: T25 = T24-X4 /* 4*X1*Y1^2+s-X4 */
S28: T26 = T25-T23 /* S-X4+s */
S29: T27 = T11*T26 /* M*(S-X4+s) */
S30: Y4 = T27-T16 /* M*(S-X4+s)-T */
S31: T28 = Y1*Z1 /* Y1*Z1 */
S32: Z4 = 2*T28 /* 2*Y1*Z1 */
S33: return( (X4:Y4:Z4) )
(b)第1実施形態の説明
本発明の第1の実施形態としての楕円曲線暗号装置11は、スカラー倍算処理部22が、スカラー倍算d×Pを計算する際に、バイナリ法(LSB,アド・アンド・ダブル・オールウェイズ)を用いるようになっている。以下に、スカラー倍算処理部22がスカラー倍算に用いるアルゴリズム例をAlgorithm10として示す。
なお、本第1実施形態の楕円曲線暗号装置11においては、線形座標変換部23は、パラメーター(r1,r2,r3,s1,s2,s3)=(r^2,r^3,r,s,0,0)に基づいて、素体GF(p)上の楕円曲線Eに対して、楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換するようになっている。すなわち、線形座標変換部23は、楕円曲線上の点Pの座標(X:Y:Z)を座標(r^2×(X−s):r^3×Y:r×Z)に変換(線形座標変換)するようになっている
(b−1)Algorithm10[バイナリ法(LSB,アド・アンド・ダブル・オールウェイズ,パラメーター(r^2,r^3,r,s,0,0))]
S1: T[0] := LC(O)
S2: T[2] := LC(P)
S3: for i = 0 upto n-1 [
S4: T[1] := LCECADD( T[0], T[2] )
S5: T[2] := LCECDBL( T[2] )
S6: T[0] := T[d[i]]
S7: ]
S8: return( invLC(T[0]) )
ここで、LCは線型写像座標への変換(線形座標変換)、invLCはその逆変換を表す。また T[0],T[1],T[2]はいずれも一時変数であり、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。
すなわち、本第1実施形態の楕円曲線暗号装置11においては、演算部12が上述したAlgorithm10のステップS1およびS2を実行することにより線形座標変換部23として機能し、ステップS3〜ステップS7を実行することにより、スカラー倍算処理部22として機能するようになっているのである。
本発明の第1実施形態としての楕円曲線暗号装置11によれば、線形座標変換部23が、パラメーター(r1,r2,r3,s1,s2,s3)=(r^2,r^3,r,s,0,0)に基づいて、素体GF(p)上の楕円曲線Eに対して、楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換し、スカラー倍算処理部22が、この変換後の線型変換座標における楕円加算と楕円2倍算を計算するので、s≠0とすることにより、x座標が0であるような特殊点は、線型変換座標でのX座標がsの点として表され、スカラー倍算の途中で出現することがない。これにより特殊点攻撃に対して安全である。
また、スカラー倍算処理部22が用いるAlgorithm10において、アド・アンド・ダブル・オールウェイズを用いているので、SPAおよびDPAに対して安全である。
さらに、線形座標変換部23が、パラメーター(r1,r2,r3,s1,s2,s3)=(r^2,r^3,r,s,0,0)に基づいて、素体GF(p)上の楕円曲線Eに対して、楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換し、スカラー倍算処理部22が、この変換後の線型変換座標における楕円加算と楕円2倍算を計算するので、ヤコビアン座標におけるRPCと同様のランダム効果が期待でき、DPAに対しても安全である。
(c)第2実施形態の説明
前述した第1実施形態の楕円曲線暗号装置11で用いられるAlgorithm10においては、変数T[2]に保管される値はdとは無関係であり、そのステップS5以外では値が変更されることはない。そこでバイナリ法(LSB,アド・アンド・ダブル・オールウェイズ)の変形として、以下のAlgorithm11に示すアルゴリズム例によって表わされる変形アド・アンド・ダブル・オールウェイズを適用することもできる。
本発明の第2実施形態としての楕円曲線暗号装置11においては、スカラー倍算d×Pを計算する際に、アド・アンド・ダブル・オールウェイズに代えてAlgorithm11に示すような変形アド・アンド・ダブル・オールウェイズを用いるようになっており、それ以外の部分については前述した第1実施形態の楕円曲線暗号装置11とほぼ同様に構成されている。以下に、スカラー倍算処理部22がスカラー倍算に用いるアルゴリズム例をAlgorithm11として示す。
(c−1)Algorithm11[バイナリ法(LSB,変形アド・アンド・ダブル・オールウェイズ,パラメーター(r^2,r^3,r,s,0,0))]
S01: T[0] := LC(O)
S02: T[2] := LC(P)
S03: T[1] := T[2]
S04: X0 = X(T[2]); Y0 = Y(T[2]) ; Z0 = Z(T[2])
S05: T[2] := LCECDBL( (X0:Y0:Z0) )
S06: T[0] = T[d[0]];
S07: for( i=1; i<=n-1; i++ )[
S08: T[1] := LCECADD( T[0], T[2] )
S09: T[2] := LCiECDBL( T[2], (X0:Y0:Z0) )
S10: T[0] = T[d[i]];
S11: ]
S12: return( invLC(T[0]) )
ここで、LCは線型写像座標への変換、invLCはその逆変換を表す。又、T[0],T[1],T[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。なお、ステップS06とステップS10とで使用される一時変数は共用されるものとする。
本第2実施形態の楕円曲線暗号装置11においては、演算部12が上述したAlgorithm
11のステップS01およびS02を実行することにより線形座標変換部23として機能し、ステップS03〜ステップS12を実行することにより、スカラー倍算処理部22として機能するようになっているのである。
本発明の第2実施形態の楕円曲線暗号装置11によれば、スカラー倍算処理部22が用いるAlgorithm11において、変形アド・アンド・ダブル・オールウェイズを用いている
ので、SPAに対して安全である。
また、線形座標変換部23が、パラメーター(r1,r2,r3,s1,s2,s3)=(r^2,r^3,r,s,0,0)に基づいて、素体GF(p)上の楕円曲線Eに対して、楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換し、スカラー倍算処理部22が、この変換後の線型変換座標における楕円加算と楕円2倍算を計算するので、ヤコビアン座標におけるRPCと同様のランダム効果が期待でき、DPAに対しても安全である。
さらに、上記パラメータにおいてs≠0であるので、x座標が0であるような特殊点は、線型変換座標でのX座標がsとなり、スカラー倍算の途中で出現しない。これにより特殊点攻撃に対しても安全である。
(d)第3実施形態の説明
本発明の第3実施形態としての楕円曲線暗号装置11は、線形座標変換部23が、パラメーター(r1,r2,r3,s1,s2,s3)=(r,r,r,s,0,0)に基づいて、素体GF(p)上の楕円曲線Eに対して、楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換する線形座標変換を行なうようになっており、更に、スカラー倍算処理部22が、x座標法を用いて楕円加算と楕円2倍算と楕円加算2倍算とを計算するようになっている。
本第3実施形態においては、スカラー倍算処理部22がx座標法で前記スカラー倍算を行なうので、SPAおよびDPAに対して安全である他、計算時間を短縮することができる。
また、本実施形態においては、上述の如くパラメーター(r1,r2,r3,s1,s2,s3)=(r,r,r,s,0,0)を用いるようになっており、これにより、計算時間を短縮することができる。
ここで、x座標法とは、楕円加算・楕円2倍算・楕円加算2倍算をy座標を用いずに計算するアルゴリズムである。参考までに、素体上の射影座標で表された楕円曲線に対する、文献Izu-Takagi02に開示されたx座標法のアルゴリズム例を、以下にAlgorithm12m,12a,13,14m,14aとしてそれぞれ示す。なお、アルゴリズムの番号の末尾に付した符号mは乗法的(multiplicative)なECADDを用いることを示すものであり、符号aは加算的(additive)なECADDを用いることを示す。
(d−1)Algorithm12m[xECADDm(射影座標)]
Input: P1=(X1:Z1), P2=(X2:Z2), P3'=(X3':Z3')=P1-P2, a, b
Output: P3=(X3:Z3)=P1+P2
X3 = Z3’×[(X1×X2−a×Z1×Z2)^2−4×b×Z1×Z2×(X1×Z2+2×Z1)
Z3 = X3’×(X1×Z2−X2×Z1)^2
(d−2)Algorithm12a[xECADDa(射影座標)]
Input: P1=(X1:Z1), P2=(X2:Z2), P3'=(X3':Z3')=P1-P2, a, b
Output: P3=(X3:Z3)=P1+P2
S = 2×(X1×Z2+X2×Z1)×(X1×X2+a×Z1×Z2)+4×b×Z1^2×Z2^2
T = (X1×Z2−X2×Z1)^2
X3 = Z3’×S+X3’×T
Z3 = Z3'×T
(d−3)Algorithm13[xECDBL(射影座標)]
Input: P1=(X1:Z1), a, b
Output: P4=(X4:Z4)=2×P1
X4 = (X1^2−a×Z1^2)^2−8×b×X1×Z1^3
Z4 = 4×(X1×Z1×(X1^2+a×Z1^2)+b×Z1^4)
(d−4)Algorithm14m[xECADDDBLm(射影座標)]
Input: P1=(X1:Z1), P2=(X2:Z2), P3'=(X3':Z3')=P1-P2, a, b
Output: P3=(X3:Z3)=P1+P2, P4=(X4:Z4)=2×P1
X3 = Z3’×[(X1×X2−a×Z1×Z2)^2−4×b×Z1×Z2×(X1×Z2+2×Z1)
Z3 = X3’×(X1×Z2−X2×Z1)^2
X4 = (X1^2−a×Z1^2)^2−8×b×X1×Z1^3
Z4 = 4×(X1×Z1×(X1^2+a×Z1^2)+b×Z1^4)
(d−5)Algorithm14a[xECADDDBLa(射影座標)]
Input: P1=(X1:Z1), P2=(X2:Z2), P3'=(X3':Z3')=P1-P2, a, b
Output: P3=(X3:Z3)=P1+P2, P4=(X4:Z4)=2×P1
S = 2×(X1×Z2+X2×Z1)×(X1×X2+a×Z1×Z2)+4×b×Z1^2×Z2^2
T = (X1×Z2−X2×Z1)^2
X3 = Z3’×S+X3’×T
Z3 = Z3'×T
X4 = (X1^2−a×Z1^)^2−8×b×X1×Z1^3
Z4 = 4×(X1×Z1×(X1^2+a×Z1^2)+b×Z1^4)
本発明の第3実施形態の楕円曲線暗号装置11によれば、線形座標変換部23が、パラメーター(r1,r2,r3,s1,s2,s3)=(r,r,r,s,0,0)に基づいて、素体GF(p)上の楕円曲線Eに対して、楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換し、スカラー倍算処理部22が、この変換後の線型変換座標における楕円加算と楕円2倍算を計算するので、ヤコビアン座標におけるRPCと同様のランダム効果が期待でき、DPAに対しても安全である。
また、上記パラメータにおいてs≠0であるので、x座標が0であるような特殊点は、線型変換座標でのX座標がsとなり、スカラー倍算の途中で出現しない。これにより特殊点攻撃に対しても安全である。
さらに、上述したAlgorithm14m,14aによれば、xECADDDBLmやxECADDDBLaを用いることにより、1つの関数で加算と2倍算とを行なうようになっている。これにより、関数の呼び出し回数を低減することができ、処理を高速化することができる。又、加算と2倍算とで演算結果を共有することができるので、計算量も低減することもできる。
(e)第4実施形態の説明
本発明の第4実施形態としての楕円曲線暗号装置11は、第3実施形態の楕円曲線暗号装置11におけるスカラー倍算処理部22が、スカラー倍算d×Pを計算する際にモンゴメリ・ラダーを用いるようになっており、その他の部分については第3実施形態の楕円曲線暗号装置11とほぼ同様に構成されている。以下に、スカラー倍算処理部22がスカラー倍算に用いるアルゴリズム例をAlgorithm15として示す。
(e−1)Algorithm15[モンゴメリ・ラダー,x座標法,パラメーター(r,r,r,s,0,0)]
S1: T[0] := xLC(P)
S2: T[1] := xECDBL( T[0] )
S3: for i = n-2 downto 0 [
S4: T[2] := xECDBL( T[d[i]] )
S5: T[1] := xECADD( T[0], T[1], LC(P) )
S6: T[0] := T[2-d[i]]
S7: T[1] := T[1+d[i]]
S8: ]
S9: return ( invxLC(T[0]) )
ここで、xLCは線型写像座標におけるx座標法で用いる座標への変換であり、 invLCはその逆変換を表す。又、T[0],T[1]およびT[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。
本発明の第4実施形態としての楕円曲線暗号装置11によれば、上述した第4実施形態と同様の作用効果を得ることができる他、スカラー倍算処理部22が用いるAlgorithm15において、モンゴメリ・ラダーを用いているので、SPAおよびDPAに対して安全である。
(f)第5実施形態の説明
本発明の第5実施形態としての楕円曲線暗号装置11は、スカラー倍算処理部22が、スカラー倍算d×Pを計算する際に改良モンゴメリ・ラダーを用いるようになっており、それ以外の部分は第4実施形態の楕円曲線暗号装置11とほぼ同様に構成されている。
改良モンゴメリ・ラダーは、上述したAlgorithm14m,14aと同様に、xECADDDBLを用いることにより、1つの関数で加算と2倍算を行なうことにより、関数の呼び出し回数を低減して処理を高速化することができるものであり、又、加算と2倍算とで演算結果を共有することにより計算量を低減することもできるものである。以下に、スカラー倍算処理部22がスカラー倍算に用いるアルゴリズム例をAlgorithm15′として示す。
(f−1)Algorithm15′[改良モンゴメリ・ラダー,x座標法,パラメーター(r,r,r,r,s,0,0)]
S1: T[0] := xLC(P)
S2: T[1] := xECDBL( T[0] )
S3: for i = n-2 downto 0 [
S4: ( T[1-d[i]], T[d[i]] ) := xECADDDBL( T[d[i]], T[1-d[i]], xLC(P) )
S5: ]
S6: return ( invxLC(T[0]) )
ここで、xLCは線型写像座標におけるx座標法で用いる座標への変換であり、 invLCはその逆変換を表す。又、T[0],T[1]およびT[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。
本発明の第5実施形態としての楕円曲線暗号装置11によれば、上述した第4実施形態と同様の作用効果を得ることができる他、スカラー倍算処理部22が用いるAlgorithm15′において、xECADDDBLを用いるので、1つの関数で加算と2倍算を行なうことにより、関数の呼び出し回数を低減して処理を高速化することができる他、加算と2倍算とで演算結果を共有することにより計算量を低減することができる。
上述の如く、本発明の各実施形態にかかる楕円曲線暗号装置11によれば、楕円曲線暗号におけるスカラー倍算を、サイドチャネル攻撃に対する耐性をもって計算することが可能となる。
(g)第6実施形態
本発明の第6実施形態としての楕円曲線暗号装置11は、スカラー倍算処理部22が、スカラー倍算d×Pを計算する際に、楕円2k(2^k)倍算 (iECDBL) を用いるようになっている。ここで、楕円2k倍算とは、与えられた点の2k倍点2k×Pを計算することである。楕円2k倍算は、楕円2倍算をk回連続して用いることで計算可能であるが、1つの関数として処理した場合には、中間値の削減によって連続に適用するよりも効率的な計算が可能なことがある。
例えば、K. Itoh, M. Takenaka, N. Torii, S. Temma, and Y. Kurihara, Fast Implementation of Public-key Cryptography on DSP TMS320C6201”, Cryptographic Hardware and Embedded Systems 1999 (CHES1999), Lecture Notes in Computer Science vol. 1717, pp.61-72, Springer-Verlag, 1999.(文献Itoh+99という)には、以下のAlgorithm16に示すような、楕円2k倍算を実現するためのアルゴリズムが開示されている。なお、この楕円2k倍算は、素体上でヤコビアン座標で表現された楕円曲線に対して適用可能である。
(g−1)Algorithm16[iECDBL(ヤコビアン座標)]
Input: P[0]=(X[0]:Y[0]:Z[0]), k, a
Output: P[k]=(X[k]:Y[k]:Z[k])=2^k×P[0]
S01: W[0] := a×Z0^4
S02: M[0] := 3×X[0]^2+W[0]
S03: S[0] := 4×X[0]×Y[0]^2
S04: T[0] := 8×Y[0]^4
S05: X[1] := M[0]^2−2×S[0]
S06: Y[1] := M[0]×(S[0]−X[1])−T[0]
S07: Z[1] := 2×Y[0]×Z[0]
S08: for (i=1; i<k; i++)[
S09: W[i] := 2×T[i-1]×W[i-1]
S10: M[i] := 3×X[i]^2+W[i]
S11: S[i] := 4×X[i]×Y[i]^2
S12: T[i] := 8×Y[i]^4
S13: X[i+1] := M[i]^2−2×S[i]
S14: Y[i+1] := M[i]×(S[i]−X[i+1])−T[i]
S15: Z[i+1] := 2×Y[i]×Z[i]
S16: ]
S17: return( (X[k]:Y[k]:Z[k]) )
上述したAlgorithm16は、ヤコビアン座標に対して楕円2k倍算を適用したものであるが、このヤコビアン座標に代えて本発明の線形座標変換部23により行なわれた線形変換座標に対して楕円2k倍算を適用することもでき、これにより、演算速度を向上させることができる。
なお、線形座標変換部23は、パラメーター(r1,r2,r3,s1,s2,s3)=(r^2,r^3,r,s,0,0)に基づいて線形座標変換を行なってもよく、又、パラメーター(r1,r2,r3,s1,s2,s3)=(r,r,r,s,0,0)に基づいて線形座標変換を行なってもよい。
(h)その他
次に、上述した本発明の楕円曲線暗号プログラムを実行する楕円曲線暗号装置のハードウェア構成の一例を図5を参照して説明する。楕円暗号装置は、例えば、パーソナルコンピュータ等の情報処理装置により実現できる。
CPU(Central Processing Unit)31は、楕円曲線暗号の楕円加算、楕円2倍算等を実行する。メモリ32は、演算に使用される各種のレジスタとして使用される。外部記憶装置33は、OSや、楕円曲線暗号プログラム等が格納される。
媒体駆動装置34は、CDROM、DVD、フレキシブルディスク、ICカード等の可搬記録媒体35の読み取り、あるいは書き込みを行なう装置である。
入力装置36は、キーボード等のデータを入力する装置である。出力装置37は、ディスプレイ、プリンタ等の装置である。ネットワーク接続装置38は、インターネット等のネットワークに接続するための装置であり、この装置を介してネットワーク上のサーバからプログラムをダウンロードすることができる。なお、CPU31,メモリ32,外部記憶装置33,入力装置36等はバス39により接続されている。
そして、情報処理装置のCPU31が、楕円曲線暗号プログラムを実行することにより、上述したゼロ点判定部21,スカラー倍算処理部22,線形座標変換部(座標変換部)23および乱数生成部24として機能するようになっている。
なお、これらのゼロ点判定部21,スカラー倍算処理部22,線形座標変換部(座標変換部)23および乱数生成部24としての機能を実現するためのプログラム(楕円曲線暗号プログラム)は、例えばフレキシブルディスク,CD−ROM,CD−R,CD−R/W,DVD,DVD−R,DVD−R/W,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
ゼロ点判定部21,スカラー倍算処理部22,線形座標変換部(座標変換部)23および乱数生成部24としての機能を実現する際には、内部記憶装置(記憶部16,メモリ32)に格納されたプログラムがコンピュータのマイクロプロセッサ(演算部12,CPU31)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、楕円曲線暗号装置11がコンピュータとしての機能を有しているのである。
さらに、本実施形態における記録媒体としては、上述したフレキシブルディスク,CD−ROM,CD−R,CD−R/W,DVD,DVD−R,DVD−R/W,磁気ディスク,光ディスク,光磁気ディスクのほか、ICカード,ROMカートリッジ,磁気テープ,パンチカード,コンピュータの内部記憶装置(RAMやROMなどのメモリ),外部記憶装置等や、バーコードなどの符号が印刷された印刷物等のコンピュータ読取可能な種々の媒体を利用することができる。
そして、本発明は、楕円曲線暗号の暗号化及び解読を行なう専用の装置に限らず、ICカード、DVD装置、携帯電話機、パーソナルコンピュータ等の種々の製品に適用できる。
そして、本発明は上述した各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、演算部12が、記憶部16に記憶されたプログラムを実行することにより、ゼロ点判定部21,スカラー倍算処理部22,線形座標変換部23および乱数生成部24として機能するようになっているが、これに限定されるものではなく、例えば、ゼロ点判定部21,スカラー倍算処理部22,線形座標変換部23および乱数生成部24のうちの一部の機能を外部装置が処理してもよく、例えば、スカラー倍算処理部22のみを実行してもよい。
また、本楕円曲線暗号装置11は、例えば、プロセッサをそなえたスマートカードによって実現されてもよく、又、スマートカードのメモリに秘密鍵や秘密鍵のみを格納しておき、このスマートと通信可能に接続された外部装置(楕円曲線暗号装置)によって楕円曲線暗号処理を行なってもよい。
さらに、上述した第1実施形態および第2実施形態では、線形座標変換部23が、パラメーター(r1,r2,r3,s1,s2,s3)=(r^2,r^3,r,s,0,0)に基づいて線形座標変換を行なう例について説明しているが、これに限定されるものではなく、例えば、パラメータ(r1,r2,r3)の部分が第3〜第5実施形態と同様に(r,r,r)であってもよく、又、これらのr1,r2,r3のうち一部もしくは全てが互いに異なる数値であってもよい。
また、上述した第3〜第5実施形態では、線形座標変換部23が、パラメーター(r1,r2,r3,s1,s2,s3)=(r,r,r,s,0,0)に基づいて線形座標変換を行なう例について説明しているが、これに限定されるものではなく、例えば、パラメータ(r1,r2,r3)の部分が第1実施形態や第2実施形態と同様に(r^2,r^3,r)であってもよく、又、これらのr1,r2,r3のうち一部もしくは全てが互いに異なる数値であってもよい。
さらに、上述した各実施形態について、線形座標変換部23が線形座標変換に用いるパラメーター(r1,r2,r3,s1,s2,s3)における、パラメータ(s1,s2,s3)の部分は、(s、0,0)に限定されるものではなく、例えば、s1,s2,s3のいずれも0以外の値であってもよく、又、s1とs3とだけがそれぞれ0,s1とs2とだけがそれぞれ0,s3だけが0,s2だけが0,s1だけが0等、種々変形して実施することができる。更に、これらのs1,s2,s3のうち一部もしくは全てが互いに異なる数値であってもよい。
ここで、パラメータs1に0ではない数値sを適用することにより、x座標が0であるような特殊点は、線型変換座標でのX座標がsの点として表され、スカラー倍算の途中で出現することがない。これによりx座標に関する特殊点攻撃に対して安全となる。
また、パラメータs2に0ではない数値sを適用することにより、y座標が0であるような特殊点は、線型変換座標でのY座標がsの点として表され、スカラー倍算の途中で出現することがなく、y座標に関する特殊点攻撃に対して安全となる。同様に、パラメータs3に0ではない数値sを適用することにより、z座標が0であるような特殊点は、線型変換座標でのZ座標がsの点として表され、スカラー倍算の途中で出現することがなく、z座標に関する特殊点攻撃に対して安全となる。
さらに、上述した線形座標変換部23によって線形座標変換を行なった変換後の座標を、スカラー倍算処理部22が、ウィンドウ法(Algorithm6,6′,6″参照)を用いてスカラー倍算を行なってもよく、これにより、特殊点攻撃に対して安全であるとともにSPAに対しても安全である。
また、上述した各実施形態においては、pを5以上の素数とし、要素数pの有限体GF(p)(pは5以上の素数)上の楕円曲線に適用した場合について説明しているが、これに限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
なお、本発明の各実施形態が開示されていれば、本発明の楕円曲線暗号装置,楕円曲線暗号方法,楕円曲線暗号プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体を当業者によって実施・製造することが可能である。
(i)付記
(付記1) 楕円曲線暗号処理を行なう楕円曲線暗号装置であって、
有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換する座標変換部(23)(ただし、pは素数、mは1以上の整数、r1,r2,r3はそれぞれ1以上且つ(p−1)以下の整数、s1,s2,s3はそれぞれ0以上且つ(p−1)以下の整数、又、符号^はべき乗を表わす)と、
該座標変換部(23)によって変換された楕円曲線上の点のスカラー倍算を行なうスカラー倍算演算部(22)とをそなえ、
該パラメーターs1,s2,s3のうち少なくとも1つが0以外の値を有することを特徴とする、楕円曲線暗号装置。
(付記2) 該スカラー倍算演算部(22)が、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッドで、該スカラー倍算を行なうことを特徴とする、付記1に記載の楕円曲線暗号装置。
(付記3) 該スカラー倍算演算部(22)が、モンゴメリ・ラダー法で前記スカラー倍算を行なうことを特徴とする、付記1に記載の楕円曲線暗号装置。
(付記4) 該スカラー倍算演算部(22)が、ウィンドウ・メソッドで前記スカラー倍算を行なうことを特徴とする、付記1に記載の楕円曲線暗号装置。
(付記5) 該スカラー倍算演算部(22)が、x座標法で前記スカラー倍算を行なうことを特徴とする、付記1に記載の楕円曲線暗号装置。
(付記6) 該スカラー倍算演算部(22)が、連続楕円2倍算を用いて前記スカラー倍算を行なうことを特徴とする、付記1に記載の楕円曲線暗号装置。
(付記7) 楕円曲線暗号処理を行なう楕円曲線暗号方法であって、
有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換する座標変換ステップ(ただし、pは素数、mは1以上の整数、r1,r2,r3はそれぞれ1以上且つ(p−1)以下の整数、s1,s2,s3はそれぞれ0以上且つ(p−1)以下の整数、又、符号^はべき乗を表わす)と、
該座標変換ステップにおいて変換された楕円曲線上の点のスカラー倍算を行なうスカラー倍算演算ステップとをそなえ、
該パラメーターs1,s2,s3のうち少なくとも1つが0以外の値を有することを特徴とする、楕円曲線暗号方法。
(付記8) 該スカラー倍算演算ステップにおいて、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッドで、該スカラー倍算を行なうことを特徴とする、付記7に記載の楕円曲線暗号方法。
(付記9) 該スカラー倍算演算ステップにおいて、モンゴメリ・ラダー法で前記スカラー倍算を行なうことを特徴とする、付記7に記載の楕円曲線暗号方法。
(付記10) 該スカラー倍算演算ステップにおいて、ウィンドウ・メソッドで前記スカラー倍算を行なうことを特徴とする、付記7に記載の楕円曲線暗号方法。
(付記11) 該スカラー倍算演算ステップにおいて、x座標法で前記スカラー倍算を行なうことを特徴とする、付記7に記載の楕円曲線暗号方法。
(付記12) 該スカラー倍算演算ステップにおいて、連続楕円2倍算を用いて前記スカラー倍算を行なうことを特徴とする、付記7に記載の楕円曲線暗号装置。
(付記13) 楕円曲線暗号処理を行なう楕円曲線暗号プログラムであって、
有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換する座標変換部(23)(ただし、pは素数、mは1以上の整数、r1,r2,r3はそれぞれ1以上且つ(p−1)以下の整数、s1,s2,s3はそれぞれ0以上且つ(p−1)以下の整数であり、且つ、これらのs1,s2,s3のうち少なくとも1つが0以外の値を有する。又、符号^はべき乗を表わす)と、
該座標変換部(23)によって変換された楕円曲線上の点のスカラー倍算を行なうスカラー倍算演算部(22)としてコンピュータを機能させることを特徴とする、楕円曲線暗号プログラム。
(付記14) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッドで、該スカラー倍算を行なうことを特徴とする、付記13に記載の楕円曲線暗号プログラム。
(付記15) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、モンゴメリ・ラダー法で前記スカラー倍算を行なうことを特徴とする、付記13に記載の楕円曲線暗号プログラム。
(付記16) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、ウィンドウ・メソッドで前記スカラー倍算を行なうことを特徴とする、付記13に記載の楕円曲線暗号プログラム。
(付記17) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、x座標法で前記スカラー倍算を行なうことを特徴とする、付記13に記載の楕円曲線暗号プログラム。
(付記18) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、連続楕円2倍算を用いて前記スカラー倍算を行なうことを特徴とする、付記13に記載の楕円曲線暗号プログラム。
(付記19) 楕円曲線暗号処理を行なう楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体であって、
該楕円曲線暗号プログラムが、
有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換する座標変換部(23)(ただし、pは素数、mは1以上の整数、r1,r2,r3はそれぞれ1以上且つ(p−1)以下の整数、s1,s2,s3はそれぞれ0以上且つ(p−1)以下の整数であり、且つ、これらのs1,s2,s3のうち少なくとも1つが0以外の値を有する。又、符号^はべき乗を表わす)と、
該座標変換部(23)によって変換された楕円曲線上の点のスカラー倍算を行なうスカラー倍算演算部(22)としてコンピュータを機能させることを特徴とする、楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体。
(付記20) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッドで、該スカラー倍算を行なうことを特徴とする、付記19に記載の楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体。
(付記21) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、モンゴメリ・ラダー法で前記スカラー倍算を行なうことを特徴とする、付記19に記載の楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体。
(付記22) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、ウィンドウ・メソッドで前記スカラー倍算を行なうことを特徴とする、付記19に記載の楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体。
(付記23) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、x座標法で前記スカラー倍算を行なうことを特徴とする、付記19に記載の楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体。
(付記24) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、連続楕円2倍算を用いて前記スカラー倍算を行なうことを特徴とする、付記19に記載の楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体。
以上のように、本発明の楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラムは、楕円曲線暗号処理を行なうのに有用であり、特にサイドチャネル攻撃に対して有効である。
楕円加算を説明するための図である。 楕円2倍算を説明するための図である。 本発明に係る楕円曲線暗号装置の要部の構成を示す図である。 本発明の一実施形態としての楕円曲線暗号装置の機能構成を示すブロック図である。 本発明の楕円曲線暗号プログラムを実行する楕円曲線暗号装置のハードウェア構成の一例を示す図である。

Claims (5)

  1. 楕円曲線暗号処理を行なう楕円曲線暗号装置であって、
    有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換する座標変換部(23)(ただし、pは素数、mは1以上の整数、r1,r2,r3はそれぞれ1以上且つ(p−1)以下の整数、s1,s2,s3はそれぞれ0以上且つ(p−1)以下の整数、又、符号^はべき乗を表わす)と、
    該座標変換部(23)によって変換された楕円曲線上の点のスカラー倍算を行なうスカラー倍算演算部(22)とを備え、
    該パラメーターs1,s2,s3のうち少なくとも1つが0以外の値を有することを特徴とする、楕円曲線暗号装置。
  2. 該スカラー倍算演算部(22)が、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッド、モンゴメリ・ラダー法、ウィンドウ・メソッド、x座標法または連続楕円2倍算の少なくともいずれかを用いて前記スカラー倍算を行なうことを特徴とする、請求項1記載の楕円曲線暗号装置。
  3. CPU(Central Processing Unit)をそなえた情報処理装置により楕円曲線暗号処理を行なう楕円曲線暗号方法であって、
    該CPUにより、有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換し、変換後の該座標を演算結果出力レジスタ群に格納する座標変換ステップ(ただし、pは素数、mは1以上の整数、r1,r2,r3はそれぞれ1以上且つ(p−1)以下の整数、s1,s2,s3はそれぞれ0以上且つ(p−1)以下の整数、又、符号^はべき乗を表わす)と、
    該座標変換ステップにおいて変換され該演算結果出力レジスタ群に格納された該座標に対して、該CPUにより、楕円曲線上の点のスカラー倍算を行なうスカラー倍算演算ステップとをそなえ、
    該パラメーターs1,s2,s3のうち少なくとも1つが0以外の値を有することを特徴とする、楕円曲線暗号方法。
  4. 楕円曲線暗号処理を行なう楕円曲線暗号プログラムであって、
    有限体GF(p^m)上における楕円曲線上の点Pの座標(X:Y:Z)を座標(r1×(X−s1):r2×(Y−s2):r3×(Z−s3))に変換する座標変換部(23)(ただし、pは素数、mは1以上の整数、r1,r2,r3はそれぞれ1以上且つ(p−1)以下の整数、s1,s2,s3はそれぞれ0以上且つ(p−1)以下の整数であり、且つ、これらのs1,s2,s3のうち少なくとも1つが0以外の値を有する。又、符号^はべき乗を表わす)と、
    該座標変換部(23)によって変換された楕円曲線上の点のスカラー倍算を行なうスカラー倍算演算部(22)としてコンピュータを機能させることを特徴とする、楕円曲線暗号プログラム。
  5. 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッド、モンゴメリ・ラダー法、ウィンドウ・メソッド、x座標法または連続楕円2倍算の少なくともいずれかを用いて前記スカラー倍算を行なうことを特徴とする、請求項4に記載の楕円曲線暗号プログラム。
JP2005507578A 2003-08-06 2003-08-06 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム Expired - Fee Related JP4284320B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2003/010003 WO2005015526A1 (ja) 2003-08-06 2003-08-06 楕円曲線暗号装置,楕円曲線暗号方法,楕円曲線暗号プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体

Publications (2)

Publication Number Publication Date
JPWO2005015526A1 JPWO2005015526A1 (ja) 2006-10-05
JP4284320B2 true JP4284320B2 (ja) 2009-06-24

Family

ID=34131269

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005507578A Expired - Fee Related JP4284320B2 (ja) 2003-08-06 2003-08-06 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム

Country Status (4)

Country Link
US (1) US7639808B2 (ja)
EP (1) EP1653428B1 (ja)
JP (1) JP4284320B2 (ja)
WO (1) WO2005015526A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602005020991D1 (de) * 2005-10-28 2010-06-10 Telecom Italia Spa Verfahren zur skalarmultiplikation in gruppen ellir nebenkanalattacken-beständige kryptosysteme
KR100874909B1 (ko) * 2006-01-14 2008-12-19 삼성전자주식회사 Dfa에 대항하는 몽고메리 전력 래더 알고리즘을 사용하는 암호화 방법
DE102006002891B4 (de) * 2006-01-20 2009-06-04 Siemens Ag Verfahren, Vorrichtung und System zum Verifizieren von auf einer elliptischen Kurve ermittelten Punkten
KR100850202B1 (ko) * 2006-03-04 2008-08-04 삼성전자주식회사 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법
DE102006014353B4 (de) 2006-03-28 2007-11-22 Siemens Ag Verfahren zum sicheren Ermitteln von Daten
EP1840732A1 (en) * 2006-03-31 2007-10-03 Axalto SA Protection against side channel attacks
US8311214B2 (en) * 2006-04-24 2012-11-13 Motorola Mobility Llc Method for elliptic curve public key cryptographic validation
CN101079203B (zh) * 2006-05-22 2010-07-28 北京华大信安科技有限公司 椭圆曲线密码系统和方法
US7864951B2 (en) * 2006-07-10 2011-01-04 King Fahd University Of Petroleum And Minerals Scalar multiplication method with inherent countermeasures
KR20080012634A (ko) * 2006-08-04 2008-02-12 삼성전자주식회사 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
DE102006060760A1 (de) * 2006-09-29 2008-04-10 Siemens Ag Authentifikationsverfahren und Kommunikationssystem zur Authentifikation
US7856101B2 (en) * 2007-02-07 2010-12-21 King Fahd University Of Petroleum And Minerals Method for elliptic curve scalar multiplication
US8102998B2 (en) * 2007-05-02 2012-01-24 King Fahd University Of Petroleum And Minerals Method for elliptic curve scalar multiplication using parameterized projective coordinates
US8559625B2 (en) * 2007-08-07 2013-10-15 Inside Secure Elliptic curve point transformations
US8670557B2 (en) * 2007-09-10 2014-03-11 Spansion Llc Cryptographic system with modular randomization of exponentiation
US8233615B2 (en) 2008-01-15 2012-07-31 Inside Secure Modular reduction using a special form of the modulus
US8619977B2 (en) * 2008-01-15 2013-12-31 Inside Secure Representation change of a point on an elliptic curve
EP2090978A1 (en) * 2008-02-15 2009-08-19 Thomson Licensing An apparatus and a method for calculating a multiple of a point on an elliptic curve
US8422685B2 (en) 2008-02-26 2013-04-16 King Fahd University Of Petroleum And Minerals Method for elliptic curve scalar multiplication
US20090214023A1 (en) * 2008-02-26 2009-08-27 Al-Somani Turki F Method for elliptic curve scalar multiplication
US7991154B2 (en) * 2008-05-14 2011-08-02 Univeristy of Castilla-La Mancha Exponentiation method using multibase number representation
JP2010068293A (ja) * 2008-09-11 2010-03-25 Toshiba Corp 秘密情報を用いて演算する装置、方法およびプログラム
JP2010164904A (ja) * 2009-01-19 2010-07-29 Fujitsu Ltd 楕円曲線演算処理装置、楕円曲線演算処理プログラム及び方法
US8542820B2 (en) * 2009-02-05 2013-09-24 Infineon Technologies Ag Apparatus for calculating a result of a scalar multiplication
US8699701B2 (en) * 2010-12-01 2014-04-15 King Fahd University Method of performing XZ-elliptic curve cryptography for use with network security protocols
US20130336479A1 (en) * 2012-06-15 2013-12-19 Kabushiki Kaisha Toshiba Information recording device
DE102012210354B3 (de) * 2012-06-20 2013-11-07 Siemens Aktiengesellschaft Verfahren und Recheneinheit zur Erzeugung kryptographischer Daten
FR3016987B1 (fr) * 2014-01-29 2017-07-21 Morpho Echelle de montgomery desequilibree
CN104184578B (zh) * 2014-07-30 2017-07-07 山东大学 一种基于fpga的椭圆曲线标量乘法加速电路及其算法
US9645794B2 (en) * 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography
US9590805B1 (en) * 2014-12-23 2017-03-07 EMC IP Holding Company LLC Ladder-based cryptographic techniques using pre-computed points
JP6457911B2 (ja) * 2015-09-28 2019-01-23 株式会社メガチップス スカラー倍算装置
US11146397B2 (en) * 2017-10-31 2021-10-12 Micro Focus Llc Encoding abelian variety-based ciphertext with metadata
CN108875416B (zh) * 2018-06-22 2020-05-19 北京智芯微电子科技有限公司 椭圆曲线多倍点运算方法和装置
CN111966324B (zh) * 2020-08-19 2024-01-30 哈尔滨理工大学 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质
CN114527956B (zh) * 2022-01-25 2024-05-10 北京航空航天大学 抗spa攻击的sm2算法中非定点标量乘法的计算方法
CN115344525B (zh) * 2022-08-16 2023-04-18 江南信安(北京)科技有限公司 一种椭圆曲线点加硬件加速方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854759A (en) * 1997-05-05 1998-12-29 Rsa Data Security, Inc. Methods and apparatus for efficient finite field basis conversion
US6212279B1 (en) * 1998-06-26 2001-04-03 The United States Of America As Represented By The United States National Security Agency Method of elliptic curve cryptographic key exchange using reduced base tau expansion in non-adjacent form
FR2791497B1 (fr) * 1999-03-26 2001-05-18 Gemplus Card Int Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique

Also Published As

Publication number Publication date
EP1653428B1 (en) 2012-08-15
EP1653428A1 (en) 2006-05-03
US7639808B2 (en) 2009-12-29
JPWO2005015526A1 (ja) 2006-10-05
EP1653428A4 (en) 2008-04-09
WO2005015526A1 (ja) 2005-02-17
US20060093137A1 (en) 2006-05-04

Similar Documents

Publication Publication Date Title
JP4284320B2 (ja) 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム
JP4067818B2 (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
JP4789468B2 (ja) 秘密鍵を用いた耐タンパ楕円曲線暗号処理
JP3821631B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
JP4682852B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8300810B2 (en) Method for securely encrypting or decrypting a message
JP5182364B2 (ja) サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
JP4513752B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2003098962A (ja) 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
JP2004163687A (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
JP4772081B2 (ja) 秘密鍵を用いた耐タンパ楕円曲線暗号処理
JP2004053814A (ja) 楕円曲線暗号装置及び楕円曲線暗号演算方法
JP2010008883A (ja) 暗号用演算装置、暗号用演算方法及びプログラム
Kaminaga et al. Power analysis and countermeasure of RSA cryptosystem
JP2007212768A (ja) 楕円曲線暗号における事前計算テーブル作成装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090205

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: 20090303

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: 20090323

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120327

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130327

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140327

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees