JP4284320B2 - 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム - Google Patents
楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7228—Random curve mapping, e.g. mapping to an isomorphous or projective curve
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, 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
s×(t×P)=t×(s×P)
という関係式が成立することを考慮して、そのビット表現と暗号文Cのビット表現との間でビット対応のEOR演算を施すことで、暗号文Cを復号してメッセージmを得る。このようにしてECES暗号と呼ばれる暗号方式では、スカラー倍を用いて暗号化・復号化処理を行なう。
サイドチャネル攻撃は、1998年に Paul Kocherによって考案された手法であって、スマートカード等に搭載された暗号プロセッサに様々な入力データを与えた時のサイドチャネル情報(消費電力データ・消費時間データ・電磁波データ等)を収集・解析することにより、暗号プロセッサ内部の鍵情報を推定する手法である。サイドチャネル攻撃を用いると、公開鍵暗号、共通鍵暗号共に暗号プロセッサから秘密鍵を推定できる可能性があることが指摘されている。
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番目のビットの値である。
i=3のとき、ステップS3では変数TにECDBL(T)が設定され、処理後の変数Tの値は2×Pとなる。また、i=3 のときには、d[i]=d[3]=0なので、ステップS4〜S6はスキップされる。
i=1のとき、ステップS3では変数TにECDBL(T)が設定され、処理後の変数Tの値は10×Pとなる。又、i=1のときには、d[i]=d[1]=0なので、ステップS4〜S6はスキップされる。
以上でステップS2〜S7の処理が終了し、最後のステップS8で変数Tの値21×Pが出力される。このようにバイナリ法(MSB)では、スカラ値の最上位ビットから処理が行なわれるのである。
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番目のビットの値である。
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=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=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となる。
さて、上述したAlgorithm1およびAlgorithm2を点のスカラー倍算に使用した場合には、いずれも※印を付したステップS5の処理は、dのビット値d[i]に応じて実行されたりされなかったりする。SPAではこの性質を利用して秘密鍵dを解析する。多くの実験から、ECDBLとECADDの電力波形は特徴的で容易に区別可能であることが知られている。従って、プロセッサにおけるAlgorithm1およびAlgorithm2の演算において発生する電力波形を測定することによって、その波形からECDBLとECADDの演算の順序と回数がわかり、秘密鍵dを解析して求めることができる。
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ビット目の値である。
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ビット目の値である。
(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ビット目の値である。
(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表現からの逆変換を示す。
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表現からの逆変換を示す。
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表現からの逆変換を示す。
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表現からの逆変換を示す。
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表現からの逆変換を示す。
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表現からの逆変換を示す。
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]はウィンドウ法で使用するテーブルである。
さて、点のスカラー倍算にAlgorithm6(ウィンドウ法)を使用する場合には、dのビット値に応じて行なわれたり行なわれなかったりするような処理が無いので、バイナリ法と比較して一般にSPAに対して安全であるといわれている。しかし、ウィンドウ法は、バイナリ法と同様に、DPAに対しては安全ではなく、文献Coron99に開示された手法で解析可能であるが、かかるDPAに対しては、バイナリ法やモンゴメリ・ラダーと同様に、RPCやRCが有効であることが知られている。以下に、Algorithm6に対してRPCを施したアルゴリズム例をAlgorithm6′に、又、Algorithm6にRCを施したアルゴリズム例をAlgorithm6″に示す。
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表現からの逆変換を示す。
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.
なお、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を計算するものである。
(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 はいずれも一時変数である。
また、スカラー倍算演算部が、x座標法でスカラー倍算を行なってもよく、連続楕円2倍算を用いてスカラー倍算を行なってもよい。
また、スカラー倍算演算ステップにおいて、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以外の値を有する。又、符号^はべき乗を表わす)し、この変換された楕円曲線上の点のスカラー倍算を行なうので、楕円曲線暗号におけるスカラー倍算を、サイドチャネル攻撃に対する耐性をもって計算することが可能となる。
(3)アド・アンド・ダブル・オールウェイズを用いたバイナリメソッドで、スカラー倍算を行なうことにより、SPAおよびDPAに対して安全である。
(5)モンゴメリ・ラダー法で前記スカラー倍算を行なうことにより、SPAおよびDPAに対して安全である。
(6)x座標法で前記スカラー倍算を行なうことにより、SPAおよびDPAに対して安全であり、さらに計算時間を短縮することができる。
(8)連続楕円2倍算を用いて前記スカラー倍算を行なうことにより、高速に演算を行なうことができる。
(a)基本説明
本発明の一実施形態としての楕円曲線暗号装置は、例えば、楕円曲線暗号の専用の情報処理装置,パーソナルコンピュータ,ICカード(スマートカード)等に内蔵されたICチップ,携帯電話機,携帯情報端末装置(PDA(Personal data assistant)等),DVDプレーヤ等として実現されるものであり、演算を行なうプロセッサを有して構成されるものである。
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)のような座標形式で表現することができない唯一の点である。
(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)
と定める。
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)のような座標形式で表現することができない唯一の点である。
(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)
と定める。
図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)として定義される。
楕円加算、楕円2倍算、スカラー倍算の計算時間は、有限体における乗算、平方算、逆元計算の計算時間の和によって見積もられることが多い。これは実際の楕円加算、楕円2倍算、スカラー倍算の計算が、有限体における加減算・乗算・平方算・逆元計算の組み合わせで計算され、多くの場合、加減算の計算時間はその他の計算時間に比べて無視できるほど短いからである。
本発明で使用する線型変換座標においては、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) )とが同じ点と考える。
なお、線型変換座標のパラメータを(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)
とした場合に、ヤコビアン座標として用いることができる。
GF(p)上の楕円曲線Eは、以下の式で表わすことができる。
E:y^2=x^3+a×x+b
ここでa,b,x,yはGF(p)の要素で、4×a^3+27×b^2≠0を満たす。
演算部12は、演算器13,レジスタ群14および演算結果出力レジスタ群15をそなえて構成されている。演算器13は、記憶部16に格納された楕円曲線暗号プログラムをレジスタ群14を用いて実行するものであって、その演算結果を演算結果出力レジスタ群15に出力するようになっている。
図4は本発明の一実施形態としての楕円曲線暗号装置11の機能構成を示すブロック図である。本楕円曲線暗号装置11は、図4に示すように、ゼロ点判定部21,スカラー倍算処理部22,線形座標変換部(座標変換部)23および乱数生成部24をそなえて構成されている。
ゼロ点判定部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倍算等の演算処理を行なうことにより、スカラー倍算を行なうようになっている。
そして、スカラー倍算処理部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という)を計算するようになっているのである。
(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として示す。
(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によれば、線形座標変換部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の点として表され、スカラー倍算の途中で出現することがない。これにより特殊点攻撃に対して安全である。
さらに、線形座標変換部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に対しても安全である。
前述した第1実施形態の楕円曲線暗号装置11で用いられるAlgorithm10においては、変数T[2]に保管される値はdとは無関係であり、そのステップS5以外では値が変更されることはない。そこでバイナリ法(LSB,アド・アンド・ダブル・オールウェイズ)の変形として、以下のAlgorithm11に示すアルゴリズム例によって表わされる変形アド・アンド・ダブル・オールウェイズを適用することもできる。
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とで使用される一時変数は共用されるものとする。
11のステップS01およびS02を実行することにより線形座標変換部23として機能し、ステップS03〜ステップS12を実行することにより、スカラー倍算処理部22として機能するようになっているのである。
本発明の第2実施形態の楕円曲線暗号装置11によれば、スカラー倍算処理部22が用いるAlgorithm11において、変形アド・アンド・ダブル・オールウェイズを用いている
ので、SPAに対して安全である。
(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倍算とを計算するようになっている。
また、本実施形態においては、上述の如くパラメーター(r1,r2,r3,s1,s2,s3)=(r,r,r,s,0,0)を用いるようになっており、これにより、計算時間を短縮することができる。
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に対しても安全である。
さらに、上述したAlgorithm14m,14aによれば、xECADDDBLmやxECADDDBLaを用いることにより、1つの関数で加算と2倍算とを行なうようになっている。これにより、関数の呼び出し回数を低減することができ、処理を高速化することができる。又、加算と2倍算とで演算結果を共有することができるので、計算量も低減することもできる。
本発明の第4実施形態としての楕円曲線暗号装置11は、第3実施形態の楕円曲線暗号装置11におけるスカラー倍算処理部22が、スカラー倍算d×Pを計算する際にモンゴメリ・ラダーを用いるようになっており、その他の部分については第3実施形態の楕円曲線暗号装置11とほぼ同様に構成されている。以下に、スカラー倍算処理部22がスカラー倍算に用いるアルゴリズム例をAlgorithm15として示す。
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ビット目の値である。
(f)第5実施形態の説明
本発明の第5実施形態としての楕円曲線暗号装置11は、スカラー倍算処理部22が、スカラー倍算d×Pを計算する際に改良モンゴメリ・ラダーを用いるようになっており、それ以外の部分は第4実施形態の楕円曲線暗号装置11とほぼ同様に構成されている。
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ビット目の値である。
(g)第6実施形態
本発明の第6実施形態としての楕円曲線暗号装置11は、スカラー倍算処理部22が、スカラー倍算d×Pを計算する際に、楕円2k(2^k)倍算 (iECDBL) を用いるようになっている。ここで、楕円2k倍算とは、与えられた点の2k倍点2k×Pを計算することである。楕円2k倍算は、楕円2倍算をk回連続して用いることで計算可能であるが、1つの関数として処理した場合には、中間値の削減によって連続に適用するよりも効率的な計算が可能なことがある。
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倍算を適用することもでき、これにより、演算速度を向上させることができる。
(h)その他
次に、上述した本発明の楕円曲線暗号プログラムを実行する楕円曲線暗号装置のハードウェア構成の一例を図5を参照して説明する。楕円暗号装置は、例えば、パーソナルコンピュータ等の情報処理装置により実現できる。
媒体駆動装置34は、CDROM、DVD、フレキシブルディスク、ICカード等の可搬記録媒体35の読み取り、あるいは書き込みを行なう装置である。
なお、これらのゼロ点判定部21,スカラー倍算処理部22,線形座標変換部(座標変換部)23および乱数生成部24としての機能を実現するためのプログラム(楕円曲線暗号プログラム)は、例えばフレキシブルディスク,CD−ROM,CD−R,CD−R/W,DVD,DVD−R,DVD−R/W,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
そして、本発明は上述した各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
さらに、上述した第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のうち一部もしくは全てが互いに異なる数値であってもよい。
また、パラメータs2に0ではない数値sを適用することにより、y座標が0であるような特殊点は、線型変換座標でのY座標がsの点として表され、スカラー倍算の途中で出現することがなく、y座標に関する特殊点攻撃に対して安全となる。同様に、パラメータs3に0ではない数値sを適用することにより、z座標が0であるような特殊点は、線型変換座標でのZ座標がsの点として表され、スカラー倍算の途中で出現することがなく、z座標に関する特殊点攻撃に対して安全となる。
また、上述した各実施形態においては、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以外の値を有することを特徴とする、楕円曲線暗号装置。
(付記3) 該スカラー倍算演算部(22)が、モンゴメリ・ラダー法で前記スカラー倍算を行なうことを特徴とする、付記1に記載の楕円曲線暗号装置。
(付記5) 該スカラー倍算演算部(22)が、x座標法で前記スカラー倍算を行なうことを特徴とする、付記1に記載の楕円曲線暗号装置。
(付記6) 該スカラー倍算演算部(22)が、連続楕円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以外の値を有することを特徴とする、楕円曲線暗号方法。
(付記9) 該スカラー倍算演算ステップにおいて、モンゴメリ・ラダー法で前記スカラー倍算を行なうことを特徴とする、付記7に記載の楕円曲線暗号方法。
(付記11) 該スカラー倍算演算ステップにおいて、x座標法で前記スカラー倍算を行なうことを特徴とする、付記7に記載の楕円曲線暗号方法。
(付記12) 該スカラー倍算演算ステップにおいて、連続楕円2倍算を用いて前記スカラー倍算を行なうことを特徴とする、付記7に記載の楕円曲線暗号装置。
有限体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)としてコンピュータを機能させることを特徴とする、楕円曲線暗号プログラム。
(付記15) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、モンゴメリ・ラダー法で前記スカラー倍算を行なうことを特徴とする、付記13に記載の楕円曲線暗号プログラム。
(付記17) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、x座標法で前記スカラー倍算を行なうことを特徴とする、付記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)としてコンピュータを機能させることを特徴とする、楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体。
(付記21) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、モンゴメリ・ラダー法で前記スカラー倍算を行なうことを特徴とする、付記19に記載の楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体。
(付記23) 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、x座標法で前記スカラー倍算を行なうことを特徴とする、付記19に記載の楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体。
Claims (5)
- 楕円曲線暗号処理を行なう楕円曲線暗号装置であって、
有限体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以外の値を有することを特徴とする、楕円曲線暗号装置。 - 該スカラー倍算演算部(22)が、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッド、モンゴメリ・ラダー法、ウィンドウ・メソッド、x座標法または連続楕円2倍算の少なくともいずれかを用いて前記スカラー倍算を行なうことを特徴とする、請求項1記載の楕円曲線暗号装置。
- 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以外の値を有することを特徴とする、楕円曲線暗号方法。 - 楕円曲線暗号処理を行なう楕円曲線暗号プログラムであって、
有限体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)としてコンピュータを機能させることを特徴とする、楕円曲線暗号プログラム。 - 該スカラー倍算演算部(22)として該コンピュータを機能させる際に、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッド、モンゴメリ・ラダー法、ウィンドウ・メソッド、x座標法または連続楕円2倍算の少なくともいずれかを用いて前記スカラー倍算を行なうことを特徴とする、請求項4に記載の楕円曲線暗号プログラム。
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)
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)
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 |
-
2003
- 2003-08-06 EP EP03817985A patent/EP1653428B1/en not_active Expired - Fee Related
- 2003-08-06 JP JP2005507578A patent/JP4284320B2/ja not_active Expired - Fee Related
- 2003-08-06 WO PCT/JP2003/010003 patent/WO2005015526A1/ja active Application Filing
-
2005
- 2005-12-16 US US11/311,590 patent/US7639808B2/en not_active Expired - Fee Related
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 |