楕円曲線暗号装置, 楕円曲線暗号方法, 楕円曲線暗号プログラムおよび同プログ ラムを記録したコンピュータ読取可能な記録媒体 技術分野
本発明は、 楕円曲線暗号処理に関し、 特に、 楕円曲線暗号処理を行なうプロセ ッサにおける電力解析攻撃の防止に用いて好適な、 楕円曲線暗号装置, 楕円曲線 喑号方法, 楕円曲線暗号プログラムおょぴ同プログラムを記録したコンピュータ 明
読取可能な記録媒体に関する。 書
背景技術
暗号方式には公開鍵暗号方式と共通鍵暗号方式とが含まれる。 公開鍵暗号方式 は、 暗号化と復号化とで異なる鍵 (キー) を用いる方式である。 典型的な公開鍵 暗号方式では、 暗号化を行なうための鍵 (公開鍵) を公開しておき、 この公開鍵 を用いて平文を暗号化して受信者に送信する。 暗号文を復号化するための鍵 (秘 密鍵) は受信者のみが知る秘密情報として保持されており、 受信者がこの秘密鍵 を用いて暗号文を復号化することにより平文を得ることができる。
また、 近年では、 公開鍵暗号と して楕円曲線喑号 (Elliptic Curve Cryptography)が注目を集めている。 この楕円曲線暗号にはさまざまな種類の暗 号化 ·復号化アルゴリズムが知られているが、 ほとんどの暗号化 ·復号化処理で スカラー倍算という演算が用いられる。 ここでスカラー倍算とは、 楕円曲線上の ベースポィントと呼ばれる点 Pとスカラーと呼ばれる整数 dと力ゝら、 d X P = .P + P + ..+ P ( d個の和) を計算することである。 なお、 楕円曲線暗号において は、 ベースポイント Pとスカラー倍点 d X Pとから、 スカラー d (秘密鍵) を求 めることは困難であることが知られている。
ここで、 楕円曲線暗号の例として、 E C E S暗号方式を説明する。 送信者 Aが 秘密鍵 s (sは整数) を持ち、 受信者 Bが秘密鍵 t ( tは整数) を持つ場合に、 楕 円曲線 Eと、 楕円曲線 E上に設定されるベースポイント P ( = ( X , y ) ) と、 公
開鍵 s X P (送信者 Aの秘密鍵 sとベースポイント Pとのスカラー倍点) と、 公 開鍵 t X P (受信者 Bの秘密鍵 tとベースポイント Pとのスカラー倍点) とがあ らかじめ公開されている。
このとき送信者 Aは、 自分の秘密鍵 sと、 受信者 Bの公開鍵 t X Pとのスカラ 一倍算 S X ( t X P) を計算し、 その X座標のビット表現を求め、 このビット表 現とメッセージのビット表現との間でビット対応の E O R (Exclusive OR:排他 的論理和) 演算を施すことで、 メッセージ mに対する暗号文 Cを生成し、 それを 受信者 Bに送信する。 受信者 Bは、 自分の秘密鍵 tと、 送信者 Aの公開鍵 s X P とのスカラー倍算 t X ( s X P) を計算し、 その X座標のビット表現を求める。 そして、
s X ( t X P) = t X ( s XP)
という関係式が成立することを考慮して、 そのビット表現と暗号文 Cのビット表 現との間でビット対応の E〇 R演算を施すことで、 暗号文 Cを復号してメッセー ジ mを得る。 このようにして EC E S喑号と呼ばれる喑号方式では、 スカラー倍 を用いて暗号化 ·複号化処理を行なう。
また、 暗号の分野における技術の一つに、 解読技術と呼ばれるものがある。 解 読技術とは秘密鍵等の秘密情報を暗号文等入手可能な情報から推定する技術のこ とであり、 様々な手法が存在する。 その中で最近注目されている技術に、 サイド チヤネル攻撃と呼ばれる手法がある。
サイドチャネル攻撃は、 1 9 9 8年に Paul Kocherによって考案された手法で あって、 スマートカード等に搭載された暗号プロセッサに様々な入力データを与 えた時のサイドチャネル情報 (消費電力データ ·消費時間データ ·電磁波データ 等) を収集 ·解析することにより、 暗号プロセッサ内部の鍵情報を推定する手法 である。 サイドチャネル攻撃を用いると、 公開鍵暗号、 共通鍵暗号共に暗号プロ セッサから秘密鍵を推定できる可能性があることが指摘されている。
このサイドチャネル攻撃の中で、 電力解析攻撃は強力な攻撃法である。 この電 力解析攻撃として、 単純電力解析 (S PA; Single PowerAnalysis) と、 差分電 力解析 (D P A; Differential Power Analysis) との 2種類の手法が知られてい る。 S PAは暗号プロセッサにおける単一の電力消費データの特徴から秘密鍵の
推定を行なう方式であり、 D P Aは多数の電力消費データの差分を解析すること で秘密鍵の推定を行なう方式である。
そして、 楕円曲線暗号に対しても、 上述した S PAや DPAを適用することが 可能である。 この場合、 スカラー倍算が攻擊対象となることが多い。 詳細な推定 法こつレヽて fま、 Jean-Sebastem Coron "Resistance against Difrerential Power Analysis for Elliptic Curve Cry tosy stems", Cryptographic Hardware and Embedded Systems 1999 (CHES1999), Lecture Notes in Computer Science vol.1717, Springer-Verlag, pp.292-302, 1999 (以下、 文献 Coron99という) 等 の文献にて述べられている。
さて、 楕円曲線暗号の暗号化 ·復号化処理では、 楕円曲線上の点のスカラー倍 算が中心となる。 スカラー倍算 dXPの最も単純な実現手法としてバイナリ法 ( Binary method) があり、 最上位ビット (Most Significant Bit; M S B ) から計 算する方法 (バイナリ法 (MSB)) と、 最下位ビッ ト (Least Significant Bit; L SB) から計算する方法 (バイナリ法 (L SB)) とが知られている。
ここで、 バイナリ法 (MS B) のアルゴリズム例を (1) Algorithm 1に、 又、 バイナリ法 (L S B) のアルゴリズム例を (2) Algorithm 2に示す。 なお、 以 下、 特に断りの無い限り、 小文字 (d等) はスカラー値を表わし、 大文字 (Ρ,Τ 等) は楕円曲線上の点を表わすものとする。 又、 楕円加算を ECADD、 楕円 2 倍算を ECDB Lと表わす。 更に、 符号 " " " はべき乗算を表わすものとし、 " ( " と ") 2" とによって囲まれた数列は 2進数で表現された数字を表わす。 又、 " S1: "等のように、 Sを付した数字はァルゴリズムを表わすプログラム例におけ るステツプ数を示すものとする。
(1) Algorithm 1 [バイナリ法 (MSB)]
Si: T :=P
S2: for i = n_2 downto 0 {
S3: T:= ECDBL( T )
S4: if ( d[{| 1 ) {
S5: T:= ECADD( T, P) ※
S6: }
ST- }
S8: return( T )
ここで、 Tは一時変数、 dは nビットのスカラー値で、 d[i] は dの下位 i番目 のビットの値である。 ,
例えば
についてスカラー倍算 d X Pを計算す る場合を考える。 ステップ S1においては変数 Tに点 Pが設定され、 その次のス テツプ S2〜S7において、 i=3,2,l,0に対応する各処理が行なわれる。
i=3のとき、 ステップ S3では変数 Tに ECDBL(T)が設定され、 処理後の変数 T の値は 2XP となる。 また、 i=3 のときには、 d[i]=d[3]=0なので、 ステップ S4〜S6はスキップされる。
i=2 のとき、 ステップ S3では変数 Tに ECDBL(T)が設定され、 処理後の変数 Tの値は 4XP となる。 又、 i=2のときには、 d[i]=d[2]=lなので、 ステップ S5 では変数 Tに ECDBL(T,P)が設定され、 処理後の変数 Tの値は 5XPとなる。 i=lのとき、 ステップ S3では変数 Tに ECDBL(T)が設定され、 処理後の変数 Tの値は 10XPとなる。 又、 i=lのときには、 d[i]=d[l]=0なので、 ステップ S4 〜S6はスキップされる。
i=0とき、 ステップ S3では変数 Tに ECDBL(T)が設定され、 処理後の変数 T の値は 20XPとなる。 又、 i=0のときには、 d[i]=d[0]=lなので、 ステップ S5で は変数 Tに ECDBL(T,P)が設定され、 処理後の変数 Tの値は 21 XPとなる。 以上でステップ S2〜S7の処理が終了し、 最後のステップ S8で変数 Tの値 21
XPが出力される。 このようにバイナリ法 (MSB) では、 スカラ値の最上位ビ ットから処理が行なわれるのである。
(2) Algorithm 2 レ イナリ法 (LSB)]
Si: T[l] := Ρ
S2: T[0]:= O
S3: for i = 0 up to n-1 {
S4: if (d[i] = 1) {
S5: T[0]:= ECADD( T[0], T[l] ) ― ※
S6: }
S7: T[l〗:= ECDBL( T[l] )
S8: }
S9: return( Τ[θ] )
ここで T[0],T[1] はいずれも一時変数、 dは nビットのスカラー値で、 d[i]は dの下位 i番目のビッ トの値である。
例えば
についてスカラー倍算 dXPを計算する 場合を考える。 ステップ S1においては変数 T[l] に点 Ρ力 又、 変数 τ[ο]に点 Οが設定される。次のステップ S3〜S8において i=0,l,2,3,4に対応する各処理が 行なわれる。
i=0 のときには、 d[i]=d[0]=l なので、 ステップ S5 では変数 T[0]に
ECADD(T[0],T[1])が設定され、 処理後の変数 T[0]の値は Pとなる。 ステップ S7 では変数 T[l]に ECDBL(T[1])が設定され、処理後の変数 T[l]の値は 2 X Pとなる i=lのときには、 d[i]=d[l]=0なので、 ステップ S4〜S6はスキップされ'る。 ス テツプ S7では変数 T[l]に ECDBL(T[1])が設定され、 処理後の変数 T[l]の値は 4
ΧΡとなる。
i=2 のときには、 d[i]=d[2]=l なので、 ステップ S5 では変数 T[0]に ECADD(T[0],T[1])が設定され、 処理後の変数 T[0]の値は 5 XPとなる。 ステップ S7では変数 T[l]に ECDBL(T[1])力 S設定され、 処理後の変数 T[l]の値は 8 Χ Ρと なる。
i=3のときには、 d[i]=d[3]=0なので、 ステップ S4〜S6はスキップされる。 ス テツプ S7では変数 T[l]に ECDBL(T[1])が設定され、 処理後の変数 T[l]の値は 16 X Pとなる。
i=4 のと きには、 d[i]二 d[0]=l なので、 ステップ S5 では変数 T[0]に ECADD(T[0],T[1])が設定され、 処理後の変数 T[0]の値は 21 XPとなる。 ステツ プ S7では変数 T[l]に ECDBL(T[1])が設定され、処理後の変数 T[l]の値は 32 ΧΡ となる。
以上でステップ S3〜S8の処理が終了し、 最後のステップ S9で変数 T[0]の値 21 X P が出力される。 このようにバイナリ法 (L S B )では、 スカラ値の最下位ビ
ットから処理が行なわれるのである。
さて、 上述した Algorithm 1および Algorithm 2を点のスカラ一倍算に使用し た場合には、 いずれも※印を付したステップ S5の処理は、 dのビット値 d[i]に応 じて実行されたりされなかったりする。 S P Aではこの性質を利用して秘密鍵 d を解析する。 多くの実験から、 ECDBLと ECADDの電力波形は特徴的で容易に 区別可能であることが知られている。 従って、 プロセッサにおける Algorithm 1 およぴ Algorithm 2の演算において発生する電力波形を測定することによって、 その波形から ECDBLと ECADDの演算の順序と回数がわかり、秘密鍵 dを解析 して求めることができる。
この S P Aへの対策として、 ア ド · アンド ' ダブル ·オールウェイズ ( add-and-double-always) と呼ばれる、 加算と 2倍算とを常に行なう方法が 文献 Coron99で提案されている。 この方法では、常に ECDBL演算と ECADD演算と が交互に行なわれるので S P Aに対して安全である。以下に、先述した Algorithm 1および Algorithm 2に対してァド ·アンド ·ダブル ·オールウェイズを施した アルゴリズム例を Algorithm 3および Algorithm 4として示す。
( 3 ) Algorithm 3 [バイナリ法 (M S B , アド ·アンド .ダブル ·オールゥ エイズ)]
Si: T[0]:= Ρ
S2: for l = n-2 downto 0 \
S3: T[0]:= ECDBL(T[0] )
S4: T[l]:= ECADD( T[0], P )
S5: T[0]:= T[d[i]]
S6: }
S7: return( T[0] )
ここで、 T[0], T[l] はいずれも一時変数、 dは nビットのスカラー値で、 d[i] は dの下位 i ビット目の値である。
( 4 ) Algorithm 4 [バイナリ法 (L S B, アド .アンド .ダブル 'オールゥ エイズ)]
Si: T[0]:= Ο
S2: T[2]:= P
S3: for i = 0 upto n-1 {
S4: T[l]:= 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[l], T[2]はいずれも一時変数、 dは nビットのスカラー値で、 d[i]は dの下位 i ビット目の値である。
上述した Algorithm 3および Algorithm 4を用レ、ることにより S P Aを防止す ることができる。 又、 同様の効果をもつ方式として、 モンゴメリ ' ラダー ( Montgomery-Ladder j を用レヽ 7こ方法力、、 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. (以下、文献 Iz -Takagi02 という) にて提案されている。
スカラー倍算 d X Pにおいて、モンゴメリ 'ラダーでは常に ECDBLと ECADD を交互に計算するので、 S P Aに対して安全である。 モンゴメ リ · ラダーのアル ゴリズム例を Algorithm 5に示す。
( 5 ) Algorithm 5 [モンゴメリ · ラダー]
S1 T[0]:= Ρ
S2 T[l]:= ECDBL( T[0] )
S3 for i = n-2 downto 0 {
S4 T[2] := ECDBL( T[d[i]] )
S5 T[l] := ECADD( T[0], T[l] )
S6 T[0] := T[2-d[i]]
S7 T[l]:= T[l+d[i]]
S8 }
S9 return ( T[0] )
ここで T[0], T[l], T[2]はいずれも一時変数、 dは ηビットのスカラー値で、 d[i] は dの下位 iビット目の値である。
上述した Algorithm 3〜Algorithm 5を用いることにより SPAを防止するこ とができる力 文献 Coron99にはこれらのアルゴリズムに対する D P Aについて も述べられており、 Algorithm 3〜 Algorithm 5では D P Aで秘密鍵を解析して求 めることができることが示されている。 そして、 文献 Coron99には、 ランダム化 射影座標 (Randomized Projective Coordinates; R P C ) と呼ばれる、 乱数を使 用した楕円曲線上の点の表現を導入することによって、 Algorithm 3〜 Algorithm 5に対する DP Aへの各対策が提案されている。
以下に、 Algorithm3に対して RP Cを施したアルゴリズム例を Algorithm3 ' と して示す他、 Algorithm 4に対して R P Cを施したアルゴリ ズム例を Algorithm 4 ' と して、 又、 Algorithm 5に対して R P Cを施したものを Algorithm 51 としてそれぞれ示す。 なお、 以下、 R P Cで表現された楕円曲線 上の点をダッシュ aもしくは,) 付の変数で示す。
( 6 ) Algorithm 3 ' [バイナリ法 (MSB, アド 'アンド ·ダブル ·オール ウェイズ, RPC)]
Si: T'[2]:= RPC(P)
S2: T,[0]:= T,[2]
S3: for i = n-2 downto 0 {
S4: T'[0] :=ECDBL(T'[0])
S5: T'[l]:= ECADD( T'[0], T'[2] )
S6: T'[0]:= T'[d[i]]
S7: }
S8: return( invEPC(T'[0]) )
ここで、 T,[0], T'[l], T,[2]はいずれも一時変数、 dは nビッ トのスカラー値で、 d[i]は dの下位 iビット目の値である。又、 invRPCは RPC表現からの逆変換を 示す。
( 7 ) Algorithm 4 ' [パイナリ法 (L S B, アド ·アンド 'ダブル ·オール ウェイズ, RPC)]
Si: T'[0] := 0
S2: T,[2] := RPC(P)
S3: for i = 0 upto n-1 {
S4: T'[l]:= ECADD( T'[0], T,[2] )
S5: T'[2]:= ECDBL( T'[2] )
S6: T,[0]:= T,[欄
S7: }
S8: return( invRPC(T'[0]) )
ここで、 T,[0], T,[l], T,[2]はいずれも一時変数、 dは nビットのスカラー値で、 d[i]は dの下位 iビット目の値である。又、 invRPCは R P C表現からの逆変換を 示す。
( 8 ) Algorithm 5 ' [モンゴメリ 'ラダー, R P C ]
Si: T'[0] := RPC(P)
S2: T,[l] := ECDBL(T'[0])
S3: for i二 n-2 downto 0 {
S4: T'[2]:= ECDBL( T'[d[i]] )
S5: T'[l] := ECADD( T'[0], T,[l] )
S6: T,[0] := T,[2-d[i]]
S7: T'[l]:= T'[l+d[i]]
S8: }
S9: return( invEPC(T'[0]) )
ここで、 T'[0], T,[l], T'[2]はいずれも一時変数、 dは nビットのスカラー値で、 d[i]は dの下位 iビット目の値である。又、 invRPCは R P C表現からの逆変換を 示す。
また、 D P Aに対する対策として、 R P Cと同様の効果を持つ方式として、 M.
Joye, and C. Tymen, "Protections against aifierential 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'TymenOlという) で提案された ランダム化
曲線 (Randomized Curve ; RC) 法がある。
■ RCは、 R P Cと同様に乱数を用いた点の表現を用いた点の表現を用いた点の 表現を用いることによる D P A対策法である。 R Cの適用方法は R P Cと同様で ある。 I I
Algorith 〇m 3に対して RCを施したアルゴリズム例を Algorithm 3 とし て示し、同様に、 A IIlgorithm 4に対して R Cを施したアルゴリズム例を Algorithm A" , Algorithm5に対して RCを施したアルゴリズム例を Algorithm5 " とし ョ
てそれぞれ示す。 なお、 以下、 RCで表現された楕円曲線上の点はダブルダッシ ュ (〃 もしくは") 付の変数で示す。
( 9 ) Algorithm 3 " レ ィナリ法 (MS B, アド .アンド 'ダブル ·オール ウェイズ, RC)]
S1 T" [2]:= RC(P)
S2 T"[0]:= Τ"[2]
S3 for i = n-2 downto 0 ι
S4 T,,[0] := ECDBL( T"[0] )
S5 T"[l]:= ECADD( T"[0], T"[2] )
S6 T"[0]:= T"[d[i]]
S7 }
S8 return( invRC(T"[0]) )
ここで、 T"[0], T"[l], T"[2] はいずれも一時変数、 dは nビッ トのスカラー値で 、 d[i] は dの下位 i ビット目の値である。 又、 invRCは R C表現からの逆変換を 示す。
( 1 0) Algorithm 4 " [バイナリ法 ( L S B, アド 'アンド 'ダブル ·ォー ルウェイズ, R C)
S1
S2 T"[2] := RC(P)
S3 for l = 0 up to n-1 {
S4 T"[l] := ECADD( T"[0], T"[2] )
S5 T"[2] :=ECDBL( T"[2] )
S6
S7: }
S8: return( invRC(T"[0]) )
ここで、 T"[0], T"[l], T"[2]はいずれも一時変数、 dは nビットのスカラー値で、 • d[i] は dの下位 iビット目の値である。 又、 invRCは R C表現からの逆変換を示 す。
( 1 1 ) Algorithm 5 " [モンゴメリ ·ラダー, R C ]
Si: T"[0]:= RC(P)
S2: T"[l]:= ECDBL(T"[0])
S3: for i = n-2 downto 0 {
S4: T,,[2]:= ECDBL( T"[d[i]] )
S5: T"[l]:= ECADD( T"[0], T,,[l] )
S6: T"[0] := T"[2-d[i]]
S7: T"[l]:= T"[l+d[i]]
S8: }
S9: return( invRC(T"[0]) )
ここで、 T"[0], T,,[l], T"[2]はいずれも一時変数、 dは nビットのスカラー値で、 d[i] は dの下位 iビット目の値である。 又、 invHCは R C表現からの逆変換を示 す。
また、 スカラー倍算 d X Pの実現手法としては、 前述したバイナリ法 ( Algorithm 1 , 2 ) やモンゴメリ 'ラダー (Algorithm 5 ) の他に、 ウィンドウ法 (window method) と呼ばれる方法もある。 例えば、 幅 4ビッ トのウィンドウ法 は、 初期処理として Pの 0〜 1 5倍を計算し、 その結果をテーブルとして持って おき、 次にスカラー値を 4ビット単位(ウインドゥ)に分割することにより、 スカ ラー倍算を処理する。 以下に、 Algorithm 6としてウィンドウ法 (幅 4ビット) のアルゴリズム例を示す。
( 1 2 ) Algorithm 6 [ウィンドウ法 (幅 4ビット)]
S01: W[0] = 0
S02: W[l] = P
S03: for i = 2 upto 15 {
S04 W[i] = ECADD(W[i-l], P)
S05 : }
S06 : T:: = W[d[n-l,n-4]]
S07 : for i = n-5 downto 3 step -4 {
S08 T = ECDBL( T )
S09 T 二 ECDBL( T )
S10 T = ECDBL( T )
Sll 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=2A4+2A2+2A0=(10101)2=(00010101)2に対するスカラー倍算を 考える。 このとき dは 5ビットで 4の倍数ではないので、 便宜上、 その上位 3ビ ットに 0を挿入して 8ビットとみなす。 このとき n = 8である。 先ず、 初期値と してステップ S01で W[0]=Oが、 ステップ S02で W[1]=Pが設定される。 次に i=2,3,..., 15に対し、ステップ S03〜S05が実行される。各 iに対し、ステップ S04 で W[i] = ECADD(W[i-l], P)が設定される。 このとき、 W[i]に設定されている値 は iXPとなっている。 ステップ S03〜S05の処理の終了後、 ステップ S06で変 数 Tに W[d[n-l,n-4]] = W[d[7,4]] = W[d[000l]] = 1XP が設定される。
次に、 i=3に対してステップ S07〜S13が処理される。 ステップ S08では T:= ECDBL( T ) が処理され、 変数 Τには 2 X Ρが登録される。 ステップ S09では T:=ECDBL(T)が処理され、変数 Τには 4 X Ρが登録される。 ステップ S10では T :=ECDBL(T)が処理され、 変数 Tには 8 X Pが登録される。 ステップ S11で は T:二 ECDBL(T)が処理され、変数 Tには 16 X Pが登録される。ステップ S12 では T = ECADD( T, W[d[i,i-3]] ) = ECADD( T, W[010l] ) = ECADD( 16XP, 5 XP) = 21XPが処理され、 変数 Tに 21 ΧΡが登録される。
以上でステップ S07〜S13の処理が終了する。最後にステップ S14において変 数 Tの値 2 1 X Pが出力される。 このようにウィンドウ法では、 あらかじめ作成 したテーブルを用いてスカラー倍算 d X Pを計算するのである。
さて、点のスカラー倍算に Algorithm 6 (ウィンドウ法)を使用する場合には、 dのビット値に応じて行なわれたり行なわれなかったりするような処理が無いの で、 バイナリ法と比較して一般に S P Aに対して安全であるといわれている。 し かし、 ウィンドウ法は、 バイナリ法と同様に、 D P Aに対しては安全ではなく、 文献 Coron99に開示された手法で解析可能であるが、 かかる D P Aに対しては、 バイナリ法やモンゴメリ ·ラダーと同様に、 R P Cや R Cが有効であることが知 られている。 以下に、 Algorithm 6に対して R P Cを施したアルゴリズム例を Algorithmら' に、又、 Algorithm 6に R Cを施したァルゴリズム例を Algorithm ら" に示す。
( 1 3 ) Algorithm 6 ' [ウィンドウ法 (幅 4ビット), R P C]
S01 : W'[0] = 0
S02 • W,[l] = RPC(P)
S03 : for i = 2 up to 15 {
S04 : W'[i] = ECADD( W,[i-1], W'[l] )
S05 : }
S06 : T':= W'[d[n-l,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は 11ビットのスカラー値で、 nは 4の倍数と仮定する。 また d[i,i-3] は dの下位 i ビット目から (i— 3 ) ビットまでの 4ビット値とする。 T' は一
時変数、 W'[i]はウィンドウ法で使用するテーブル、 invRPCは R P C表現からの 逆変換を示す。
( 1 4 ) Algorithm 6 " [ウィンドウ法 (幅 4ビット), R C ] .
S01: II
〇
S02: W"[l] = RC(P)
S03: ior l = 2 upto 15 \
S04: W"[i] = ECADD( W"[i-1], W"[l] )
S05: }
S06: T" := W"[d[n-l,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は R C表現からの逆 変換を示す。
さて、 S P Aと D P Aとの双方に対しては、 従来、 前述した Algorithm s ' 〜 6 ' や Algorithm 3 " 〜 " を用いれば安全であるとされていた。しかしながら、 最近、 JU. Goubm, "A Renned 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であるような点を特殊点とレ、 う。スカラー倍算の途中に特殊点が出現した場合には、 S P Aや D P Aによって、
このような点が中間値として現れたことを容易に検出することができる。 文献
Goubin03 に開示された解析手法においては、 あるビット d[i]に対応する計算の 終了時に特殊点が現れるようなベースボイントを人工的に生成し、 実際に特殊点 が検出されるかどうかによって d[i]の値を推定するようになっている。 以下、 便 宜上、 この文献 Goubin03の解析手法を用いた攻擊を特殊点攻撃と呼ぶ。
この特殊点攻撃に対し、 バイナリ法やモンゴメリ 'ラダーは安全でない。 又、 R P Cや R Cを用いたとしても、 座標値が 0になるという性質は保持されてしま うので、 Algorithm 3 ' 〜 6 ' や Algorithm 3 〜ら" も特殊点攻撃に対して安 全であるとはいえない。
なお、 Algorithm 3〜 6についての D P Aに対する他の対策として、 C. Clavier, and M. Jo e, "Universal exponentiation algorithm "A nrst ster> 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 -Joye 01 とレヽう) tこて提案され ているェクスポーネント .スプリ ツティング (exponent-splitting; E S ) がある 。この E Sはスカラー値をランダムに変化させる手法であって、乱数 rによって、 スカラー dを d = r + ( d— r ) に分割して、 2つのスカラー倍算 r X Pと (d - r ) X Pとを別々に計算し、
r X P + ( d - r ) X P = d X P
が成り立つという性質を利用して、 2つのスカラー倍算の結果を足しあわせるこ とで d X Pを計算するものである。
ここで、 2つのスカラー倍算 r X Pおよび (d— r ) X Pには、 他の S P A/ D P Aに耐性を有するアルゴリズムを用いる。 特殊点攻擊に対しては、 スカラー 値がランダムに変化するために防御が可能となる。 E Sのアルゴリズム例を Algorithm 7に示す。
( 1 5 ) Algorithm 7 [ェクスポーネント ' スプリ ツティング]
SI: r := randomO
S2: Tl:= scalar( r, P )
S3: T2: = scalar( d-r, P )
S4: T := ECADD( Tl, T2 )
S5: return( T )
ここで randomOは nビットの乱数を生成する関数である。 又、 scalar( d, P ) はスカラー倍算 d X Pを計算する関数であって、具体的には、前述した Algorithm 3 ' 〜6 ' や Algorithm 3 〜ら" 等を用いて計算される。また変数 r, T, Tl, T2 はいずれも一時変数である。
E Sは、 S P A, D P Aおよび特殊点攻撃に対して安全といえるが、 E Sで使 用するスカラー倍算はその手法単独で S P A対策, D P A対策であるので、既に S P A対策と D P A対策済の Algorithm 3 ' 〜ら' や Algorithm 3 " 〜ら" に適 用するには無駄が多い。 特に、 これらの手法を適用すると、 楕円曲線上の点の加 算および 2倍算を、 適用前と比較して余分に処理しなければならず、 処理オーバ 一へッドが大きくなる欠点がある。
本発明は、 このような課題に鑑み創案されたもので、 特定点攻撃に対して秘密 情報の推定を困難にし、 暗号処理の安全性を高めることが可能な楕円曲線暗号装 置, 楕円曲線暗号方法, 楕円曲線暗号プログラムおよび同プログラムを記録した コンピュータ読取可能な記録媒体を提供することを目的とする。
非特許文献 1 (文献 Coron99)
dean-Sebastem Uoron "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
非特許文献 2 (文献 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.
非特許文献 3 (文献 Joye-TymenOl)
M. Jo ye, and C. Tymen, "Protections against differential analysis for elliptic curve cryptography", urypto graphic Hardware and. Embedded
Systems 2001 (CHES 2001), Lecture Notes in Computer Science vol. 2162, pp. 377-390, Springer-Verlag, 2001.
非特許文献 4 (文献 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.
非特許文献 5 (文献 Clavier- JoyeOl)
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. 発明の開示
上記の目的を達成するために、 本発明の楕円曲線暗号装置は、 楕円曲線暗号処 理を行なう楕円曲線喑号装置であって、 有限体 G F ( p " m) 上における楕円曲 線上の点 Pの座標 (X: Y: Z ) を座標 (r 1 X ( X - s 1 ) : r 2 X (Y— s 2 ) : r 3 X ( Z - s 3 ) ) に変換する座標変換部 (ただし、 pは素数、 mは 1以上 の整数、 r l, r 2 , r 3はいずれも 1以上且つ (p _ 1 ) 以下の整数、 s i , s 2 , s 3はいずれも 0以上且つ (p _ l ) 以下の整数、 又、 符号-はべき乗を 表わす) と、 この座標変換部によって変換された楕円曲線上の点のスカラー倍算 を行なうスカラー倍算演算部とをそなえ、 パラメーター s 1 , s 2 , s 3のうち 少なくとも 1つが 0以外の値を有することを特徴としている。
なお、 スカラー倍算演算部が、 アド 'アンド 'ダブル ·オールウェイズを用い たバイナリメソッドで、 スカラー倍算を行なってもよく、 又、 モンゴメリ ·ラダ 一法でスカラー倍算を行なってもよく、 更に、 ウィンドウ 'メソッドでスカラー 倍算を行なってもよい。
また、 スカラー倍算演算部が、 X座標法でスカラー倍算を行なってもよく、 連 続楕円 2倍算を用いてスカラー倍算を行なってもよい。
さらに、 本発明の楕円曲線暗号方法は、 楕円曲線暗号処理を行なう楕円曲線暗
号方法であって、 有限体 GF (p " m) 上における楕円曲線上の点 Pの座標 (X : Y: Z) を座標 ( r 1 X (X- s 1) : r 2 X (Y— s 2) : r 3 X (Z— s 3 )) に変換する座標変換ステップ (ただし、 Pは素数、 mは 1以上の整数、 r 1, r 2, r 3はいずれも 1以上且つ (p— 1) 以下の整数、 s l, s 2, s 3はい ずれも 0以上且つ (p _ l) 以下の整数、 又、 符号"はべき乗を表わす) と、 こ の座標変換ステップにおいて変換された楕円曲線上の点のス力ラ一倍算を行なう スカラー倍算演算ステップとをそなえ、 パラメーター s 1, s 2, s 3のうち少 なくとも 1つが 0以外の値を有することを特徴としている。
なお、 スカラー倍算演算ステップにおいて、 アド 'アンド 'ダブル ·オールゥ エイズを用いたバイナリメソッドでスカラー倍箅を行なってもよく、 又、 スカラ 一倍算演算ステップにおいてモンゴメリ ·ラダー法でスカラー倍算を行なっても よく、 更に、 スカラー倍算演算ステップにおいて、 ウィンドウ 'メソッドでスカ ラ一倍算を行なつてもよい。
また、 スカラー倍算演算ステップにおいて、 X座標法でスカラー倍算を^なつ てもよく、 又、 スカラー倍算演算ステップにおいて、 連続楕円 2倍算を用いてス カラー倍算を行なってもよい。
さらに、 本発明の楕円曲線暗号プログラムは、 楕円曲線暗号処理を行なう楕円 曲線暗号プログラムであって、 有限体 GF (p " m) 上における楕円曲線上の点 Pの座標 (X: Y: Z ) を座標 (r l X (X- s i) : r 2 X (Y- s 2) : r 3 X (Z- s 3)) に変換する座標変換部 (ただし、 pは素数、 mは 1以上の整数、 r 1 , r 2, r 3はいずれも 1以上且つ (p— 1) 以下の整数、 s l, s 2, s 3はいずれも 0以上且つ (p— 1) 以下の整数であり、 且つ、 これらの s 1, s 2, s 3のうち少なくとも 1つが 0以外の値を有する。 又、 符号 はべき乗を表 わす) と、 座標変換部によって変換された楕円曲線上の点のスカラー倍算を行な うスカラー倍算演算部としてコンピュータを機能させることを特徴としている。 なお、 スカラー倍算演算部としてコンピュータを機能させる際に、 アド 'アン ド ·ダブル ·オールウェイズを用いたバイナリメソッドでスカラー倍算を行なつ てもよく、 又、 スカラー倍算演算部としてコンピュータを機能させる際に、 モン ゴメリ 'ラダー法でスカラー倍算を行なってもよく、 更に、 スカラー倍算演算部
としてコンピュータを機能させる際に、 ウィンドウ 'メソッドでスカラー倍算を 行なってもよレ、。
また、 スカラー倍算演算部としてコンピュータを機能させる際に、 X座標法で スカラー倍算を行なってもよく、 又、 スカラー倍算演算部としてコンピュータを 機能させる際に、 連続楕円 2倍算を用いてスカラー倍算を行なってもよい。 そして、 本発明のコンピュータ読取可能な記録媒体は、 上述した楕円曲線暗号 プログラムを記録したものである。
このように、 本発明の楕円曲線暗号装置, 楕円曲線暗号方法, 楕円曲線暗号プ ログラムおよぴ同プログラムを記録したコンピュータ読取可能な記録媒体によれ ば、 以下の効果ないし利点がある。
(1) 有限体 GF (p " m) 上における楕円曲線上の点 Pの座標 (X: Y: Z) を座標 (r 1 X (X- s 1): r 2 X (Y— s 2) : r 3 X (Z— s 3)) に 変換 (ただし、 Pは素数、 mは 1以上の整数、 r l, r 2, r 3はいずれも 1 以上且つ (p— 1) 以下のランダムな整数、 s i, s 2, s 3はいずれも 0以 上且つ (p— 1) 以下のランダムな整数であり、 且つ、 これらの s l, s 2, s 3のうち少なくとも 1つが 0以外の値を有する。 又、 符号'はべき乗を表わ す) し、 この変換された楕円曲線上の点のスカラー倍算を行なうので、 楕円曲 線暗号におけるスカラー倍算を、 サイドチャネル攻撃に対する耐性をもって計 算することが可能となる。 .
(2) 特に、 s l, s 2, s 3のうち少なくとも 1つが 0以外の値を有する ので、 特殊点の線型変換座標での座標が 0以外の値となり、 スカラー倍算の途 中で出現することがなく、 これにより特殊点攻擊に対して安全である。
(3) アド ·アンド 'ダブル ·オールウェイズを用いたバイナリメソッドで、 スカラー倍算を行なうことにより、 S P Aおよび DP Aに対して安全である。
(4) ヤコビアン座標における R PCと同様のランダム効果が期待でき、 D
P Aに対しても安全である。
(5) モンゴメリ 'ラダー法で前記スカラー倍算を行なうことにより、 SP Aおよび DP Aに対して安全である。
(6) X座標法で前記スカラー倍算を行なうことにより、 SPAおよび DP
Aに対して安全であり、 さらに計算時間を短縮することができる。
( 7 ) ウィンドウ 'メソッドで前記スカラー倍算を行なうことにより、 S P Aおよび D P Aに対して安全である。
( 8 ) 連続楕円 2倍算を用いて前記スカラー倍算を行なうことにより、 高速 に演算を行なうことができる。 図面の簡単な説明
図 1は楕円加算を説明するための図である。
図 2は楕円 2倍算を説明するための図である。
図 3は本発明に係る楕円曲線喑号装置の要部の構成を示す図である。
図 4は本発明の一実施形態としての楕円曲線暗号装置の機能構成を示すプロッ ク図である。
図 5は本発明の楕円曲線暗号プログラムを実行する楕円曲線暗号装置のハード ウェア構成の一例を示す図である。 発明を実施するための最良の形態
以下、 図面を参照して本発明の実施の形態を説明する。
( a ) 基本説明
本発明の一実施形態としての楕円曲線暗号装置は、 例えば、 楕円曲線暗号の専 用の情報処理装置, パーソナルコンピュータ, I Cカード (スマートカード) 等 に内蔵された I Cチップ,携帯電話機,携帯情報端末装置(P D A (Personal data assistant) 等), D V Dプレーヤ等として実現されるものであり、 演算を行なう プロセッサを有して構成されるものである。
以下の説明では、 本発明にかかる楕円曲線暗号演算方法を、 pを素数、 mを 1 以上の整数とし、 要素数 p の有限体 G F ( p " m) 上の楕円曲線に適用した 場合について説明する。 なお、 以下、 特に断りの無い限り、 小文字 (d等) はス カラー値を表わし、 大文字 (P, T等) は楕円曲線上の点を表わすものとする。 又、 楕円加算を E C AD D、 楕円 2倍算を E C D B Lと表わす。 更に、 符号 " はべき乗算を表わすものとし、 " (" と ") 2" とによって囲まれた数列は 2進
数で表現された数字を表わす。 又、 "S01: "等のように、 Sを付した数字はアル ゴリズムを表わすプ口グラム例におけるステツプ数を示すものとする。
GF (p " m) 上の楕円曲線 Eは、 以下の方程式を満たす点 (X , y) の集合 に、 無限遠点 (以下、 ゼロ点という場合もある) と呼ばれる点∞を加えた集合で ある。 なお、 無限遠点∞を 0と表すこともある。
E: y " 2+ a l X x X y + a 3 X y = x " 3 + a 2 X x " 2 + a 4 X x + a 6 ここで a l, a 2, a 3 , a 4, a 6 , x, yはそれぞれ GF ( p " m) の要素 である。 楕円曲線上の点は (X , y) のような座標形式で表現できるが、 無限遠 点∞は (x, y) のような座標形式で表現することができない唯一の点である。
Pを GF (p " m) 上の楕円曲線 E上の点とし、 以下のように Pの逆元一 Pを 疋 5
( 1 ) P =∞ならば、 一 p =∞
(2) P≠∞ならば、 P= (x, y) としたときに、
— P = (X , — y— a l X x— a 3
また、 P I , P 2を GF (p " m) 上の楕円曲線 E上の 2点とし、 以下に示す ように P 1と P 2との和 P 3 = P 1 +P 2を定義する。
( 1 ) P 1 =∞ならば、 P 3 = P 2
(2) P 2 =∞ならば、 P 3 = P 1
(3) P 1 = _ P 2ならば、 P 3 =∞
(4) P l≠— P 2ならば P l = (x 1 , y 1 ), P 2 = (x 2, y 2), P 3 =
(x 3, y 3) としたときに、
x 3 = λ " 2 + a l X A, - a 2 - x l -x 2,
y 3 =- (λ + a 1 ) X x 3 - v - a 3,
ただし、
P 1≠P 2のとき
λ = (y 2 - y 1 ) / (x 2 - 1 )
v = (y l X x 2 -y 2 X x l) / (x 2 - 1 )
P 1 =P 2のとき
λ = (3 X 1 " 2 + 2 X a 2 X x + a 4- a l X y l) / (2 X y 1 + a 1
X x 1 + a 3)
v = (- x 1 3 + a 4 Xx l + 2 X a 6- a 3 Xy l) / (2 X y 1 + a 1 X x 1 + a 3)
と定める。
P 1≠P 2のときに、 P 1 +P 2を計算することを楕円加算 (ECADD)、 P I
=P 2のときに P 1 +P 2 = 2 X P 1を計算することを楕円 2倍算 (ECDBL) という。 楕円加算 ·楕円 2倍算は、 有限体 GF (p - m) での加減算 ·乗算 ·平 方算 ·逆元計算の組み合わせによって計算される。
pを素数とするとき、 有限体 GF (p) を素体という。 特に、 pが 5以上の素 数の場合には、 素体 GF (p) 上の楕円曲線 Eは、 方程式
E : y " 2=x " 3+a X 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) また、 P l, P 2を GF (p) 上の楕円曲線 E上の 2点とし、 以下に示すよう にして P 1と P 2との和 P 3 =P 1 +P 2を定義する。
( 1 ) P 1 =∞ならば、 P 3 = P 2
(2) P 2=∞ならば、 P 3 = P 1
(3) P 1 =— P 2ならば、 P 3 =∞
(4) P l≠— P 2ならば、 P l = (x 1 , y 1 ), P 2 = (x 2, y 2), P 3 = (x 3, y 3) としたときに、
x 3 = λ " 2— 1— x 2
y 3 = — λ X x 3— v
ただし
P 1≠P 2のとき
λ = (y 2 - y 1 ) / (x 2 - x 1 )
v = (y l X x 2 -y 2 X x l) / (x 2 - x 1 )
P 1 =P 2のとき
X = ( 3 X x 1 " 2 + a ) / (2 X y 1 )
v = (- x l " 3 + a X x l + 2 X b) / (2 X y 1 )
と定める。
P 1≠P 2のときに、 P 1 +P 2を計算することを楕円加算 (ECADD)、 P 1 =P 2のときに P 1 +P 2 = 2 X P 1を計算することを楕円 2倍算 (ECDBL) という。 楕円加算 ·楕円 2倍算は、 有限体 GF (p) での加減算 ·乗算 .平方算
•逆元計算の組み合わせによって計算される。
図 1は楕円加算を説明するための図、 図 2は楕円 2倍算を説明するための図で ある。 楕円加算は、 図 1に示すように、 楕円曲線上の点 P l = (x 1 , y 1 ) と P 2 = (x 2, y 2) とを結ぶ直線と楕円曲線との交点を、 x軸で折り返した点
P 3 = P 1 +P 2 - (x 3, y 3) として定義される。 楕円 2倍算は、 図 2に示 されるように、 楕円曲線上の点 P l = (x 1 , y 1) の接線と楕円曲線との交点 を、 X軸で折り返した点 P 4 = P 1 +P 1 = 2 X P 1 = (x 4, y 4) として定 義される。
有限体上の楕円曲線 Eと、 ベースポイントと呼ばれる曲線上の点 Pと、 スカラ 一と呼ばれる整数 dとに対して、 点 d X P = P + P+…十 P (d個の和) を計算 することをスカラー倍算という。 スカラー倍算は、 楕円加算、 楕円 2倍算の組み 合わせによって実現される。
楕円加算、 楕円 2倍算、 スカラー倍算の計算時間は、 有限体における乗算、 平 方算、 逆元計算の計算時間の和によって見積もられることが多い。 これは実際の 楕円加算、 楕円 2倍算、 スカラー倍算の計算が、 有限体における加減算 ·乗算 - 平方算 ·逆元計算の組み合わせで計算され、 多くの場合、 加減算の計算時間はそ の他の計算時間に比べて無視できるほど短レ、からである。
一般に有限体 GF (p ~ m) での逆元計算の計算時間は、 乗算 ·平方算の計算
時間に比べて非常に大きくなる。 このため、 本発明の楕円曲線暗号装置において は、 楕円曲線の点を表現する上で線形座標を使用するようになっている。
本発明で使用する線型変換座標においては、 GF (p " m) 上の楕円曲線の点 は (X : Y : Z) のような 3つの要素の組み合わせで表される。 ただし、 GF ( p " m) の要素 r 1≠0、 r 2≠0、 r 3≠0、 s l、 s 2、 s 3に対して、
(X : Y : Ζ) と ( r 1 X (X— s 1) : r 2 X (Y s 2) : r 3 X (Z— s 3 ) ) とが同じ点と考える。 .
そして、 本楕円曲線暗号装置 1 1においては、 線形変換座標は、 有限体上にお ける楕円曲線上の点 Pの座標 (X: Y: Z) を座標 (r 1 X (X- s i) : r 2 X (Y- s 2) : r 3 X (Z - s 3)) に変換するものであって、 r 1 , r 2, r 3 はそれぞれ 0以外の任意の整数であり、 s 1, s 2, s 3の少なくともいずれか 1つが 0以外の整数である。 なお、 以下、 これらの r l, r 2, r 3, s i, s 2, s 3を線型変換座標のパラメータという場合もある。
線型変換座標を用いると、 楕円曲線上の全ての点は (X: Y: Z) のような座 標形式で表現することができる。 又、 無限遠点は∞= (0 : 1 : 0) となる。 なお、 線型変換座標のパラメータを (r 1, r 2, r 3, s 1 , s 2, s 3) と表わす場合に、
( r 1 , r 2, r 3 , s 1 , s 2 , s 3) = ( r, r , r, 0, 0, 0) とした場合に、 射影座標として用いることができ、 又、
( r 1 , r 2, r 3, s i, s 2, s 3) = (r " 2, r 3, r , 0, 0, 0
)
とした場合に、 ヤコビアン座標として用いることができる。
以下、 本発明に係る楕円曲線暗号演算方法を、 pを 5以上の素数とし、 要素数 pの有限体 GF (p) (pは 5以上の素数)上の楕円曲線に適用した場合について 説明する。
GF (p) 上の楕円曲線 Eは、 以下の式で表わすことができる。
E : y " 2=x " 3+a Xx+b
ここで a, b, x, yは GF (p) の要素で、 4 X a " 3 + 27 X b " 2≠0を 満たす。
図 3は本発明に係る楕円曲線暗号装置 1 1の要部の構成を示す図である。 本楕 円曲線暗号装置 1 1は、 図 3に示すように、 演算部 (プロセッサ) 1 2と記憶 1 6とをそなえて構成されている。 記憶部 1 5は、 後述する楕円曲線暗号の楕円加 算, 楕円 2倍算, 楕円 2 " k倍算等の演算プログラムを記憶するものである。 演算部 1 2は、 演算器 1 3, レジスタ群 14および演算結果出力レジスタ群 1
5をそなえて構成されている。 演算器 1 3は、 記憶部 1 6に格納された楕円曲線 暗号プログラムをレジスタ群 14を用いて実行するものであって、 その演算結果 を演算結果出力レジスタ群 1 5に出力するようになっている。
レジスタ群 14および演算結果出力レジスタ群 1 5は、 いずれも複数のレジス タからなり、 これらのレジスタに、 演算を行なうための数値や、 演算実行後の結 果, 現在実行しているコードのメモリアドレス、 CPUの状態などを格納するも のであり、 演算結果出力レジスタ群 1 5には、 特に演算器 1 3による演算結果が 格納されるようになっている。
図 4は本発明の一実施形態としての楕円曲線暗号装置 1 1の機能構成を示すブ ロック図である。 本楕円曲線暗号装置 1 1は、 図 4に示すように、 ゼロ点判定部 2 1, スカラー倍算処理部 22, 線形座標変換部 (座標変換部) 23および乱数 生成部 24をそなえて構成されている。
乱数生成部 24は、 乱数 r 1, r 2, r 3を生成するものであり、 生成した乱 数 r 1, r 2, r 3をスカラ倍算処理部 22および線形座標変換部 23に渡すよ うになつている。
ゼロ点判定部 21は、 スカラー倍算の結果がゼロ点 (無限遠点) であるか否か を判定するものである。
線形座標変換部 23は、 有限体 GF (p) 上における楕円曲線上の点 Pの座標 (X: Y: Z) を座標 ( r 1 X (X- s 1) : r 2 X (Y— s 2) : r 3 X (Z— s 3)) に変換 (線形座標変換) するものであり、 変換後の座標 (以下、 線形変換 座標という場合もある) をスカラー倍算処理部 22に渡すようになつている。 ス カラー倍算処理部 22は、 線形座標変換部 23によって変換された楕円曲線上の 点のスカラー倍算 d XPを演算するものであり、 後述する種々のアルゴリズムを 用いて楕円加算,楕円 2倍算,楕円 2 - k倍算等の演算処理を行なうことにより、
スカラー倍算を行なうようになっている。
なお、 本楕円曲線暗号装置 1 1においては、 例えば、 演算部 1 2が、 記憶部 1 6に記憶されたプログラムを実行することにより、 ゼロ点判定部 2 1 , スカラー 倍算処理部 2 2 , 線形座標変換部 2 3および乱数生成部 2 4として機能するよう になっている。
そして、 スカラー倍算処理部 2 2力 スカラー倍算 d X Pを計算する際に、 こ の変換後の線型変換座標における楕円加算と楕円 2倍算を計算するようになって いる。 すなわち、 スカラー倍算処理部 2 2は、 素体 G F ( p ) 上の楕円曲線 Eに 対して、 パラメーター (r 1, r 2 , r 3, s 1, s 2 , s 3 ) = ( r " 2 , r " 3, r , s , 0 , 0 ) の線型変換座標における楕円加算 (以下、 LCECADD と いう)と楕円 2倍算 (以下、 LCECDBL という) を計算するようになっているの である。
このときの楕円加算の計算アルゴリズムを Algorithm sに示すとともに、 楕円 2倍算の計算アルゴリズムを Algorithm 9に示す。
( a - 1 ) Algorithm 8 [LCECADD (パラメーター (rA2,rA3,r,s,0,0) ) ]
Input: Pl=(Xi:Yi:Zl), P2=(X2:Y2:Z2), s
Output: Ρ3=(Χ3:Υ3:Ζ3)=(Χ1:Υ1:Ζ1)+(Χ2,Υ2,Ζ2)
S01: if ( Zl ~0 ) then return( P2 )
S02: if ( Z2==0 ) then ret画( PI )
S03: Tl = Z1A2 /* Ζ1Λ2 */
S05: T3 = Ζ2Λ2 /* Ζ2Λ2 */
S06: T4 = Z2*T3 /* Z2A3 */
S07: T5 = X1*T3 /* X1*Z2A2 */
S08: T6 二 s*T3 /* s*Z2A2 */
S09: T7 = X2*T1 /* X2*Z1A2 */
S10: T8 = s*Tl /* s*ZlA2 */
Sli: T9 = Y1*T4 /* S1=Y1*Z2八 3
S12: T10 = Y2*T2 /* S2=Y2*Z1A3
S13: Til = Τ7-Τ5 /* Χ2*Ζ1Λ2-Χ1*Ζ2Λ2 *
S14: T12 = T11-T8 /* U2-X1*Z2A2 */
S15: T13 = T12+T6 /* U2-U1=W */
S16: T14 = Τ7+Τ5 /* Χ2*Ζ1Λ2+Χ1*Ζ2Λ2 *
S17: T15 = T14-T8 /* U2+X1*Z2A2 */
S18: T16 = T15-T6 /* U2+U1=T */
S19: T17 = T10-T9 /* S2-S1=R */
S20: T18 = T10+T9 /* S2+S1=M */
S2i: T19 = Τ17Α2 /* RA2 */
S22: T20 = Τ13Α2 /* WA2 */
S23: T21: = Τ16*Τ20 /* T*WA2 */
S24: T22 = T19+S /* ; R八 2+s */
S25: X3 二 T22-T21 /* EA2-T*WA2+s */
S26: T23二 2*Χ3 /* 2*RA2-2*T*WA2+2*s
S27: T24 = T23-T21 /* 2*RA2-3*T*WA2+2*s
S28: T25 = 2*s /* 2*s */
S29: Τ26 = Τ25-Τ24 /*
S30: Τ27 = Τ25*Τ17 /* V*R */
S3i: Τ28 = Τ18*Τ13 /* M*W */
S32: Τ29 = Τ28*Τ20 /* M*WA 3 */
S33: Υ3 = (Τ27-Τ29)/2 /* (V*R-M*WA3)/2 */
S34: Τ30 = Ζ1*Ζ2 /* Z1*Z2 */
S35: Ζ3 = Τ30*Τ13 /* Z1*Z2*W */
S36: ret画 ( (Χ3:Υ3:Ζ3) )
( a— 2 ) Algorithm 9の計算例 [LCECDBL (パラメーター (r八 3,rA 3,r,s,0,0
) ) ]
Input: P1=(X1:Y1:Z1), s, a
Output: P4=(X4: Y4:Z4)=2 (XI :Y1 :Z l)
SOI: if ( Z1==0 ) then returnC PI )
S02: Tl = Z1A2 /* Zl八 2 */
S03: T2 = Τ1Λ2 /* Ζ1Λ4 */
S04: T3 = a*T2 . /* a*ZlA4 */
S05: T4 = Χ1Λ2 /* X1A2 */
S06: T5 = 2*X1 /* 2*X1 */
S07: T6 = s-T5 /* s-2*Xl */
S08: T7 = s*T6 /* s*(s-2*Xl) */
S09: T8 = 3*T4 /* 3*X1A2 */
S10: T9 = 3*T7 /* 3*s*(s-2*Xl) */
Sli: T10 = T3+T8 /* a*Zl八 4+3*Χ1Λ2 */
S12: Til = T10+T9 /* W+3*(Xl-s)A2=M *
SI 3: T12 = Y1A2 /* Y1A2 */
S14: T13 = X1*T12 /* X1*Y1A2 */
S15: T14 = s*T12 /* s*YlA2 */
S16: T15 = T12A2 /* Y1A4 */
S17: T16 = 8*T15 /* 8*s*M */
S18: T17 = T11A2 /* MA2 */
S19: T18 = 8*T13 /* 8*X1*Y1A2 */
S20: T19 = 8*T14 /* 8*s*YlA2 */
S2i: T20 = T17 + s /* MA2+s */
S22: T21 = T20-T18 /* MA2-8*Xl*YlA2+s
S23: X4 = T20+T19 /* MA2-2*S+s */
S24: T22 = 4*T13 /* 4*X1*Y1A2 */
S25: T23 = 4* 14 /* s*YlA2 */
S26: T24 = T22+s /* 4*Xl*YlA2+s */
S27: T25 = T24-X4 /* 4*Xl*YlA2+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: Ζ4 = 2*Τ28 /* 2*Υ1*Ζ1 *Ι
S33: return( (Χ4:Υ4:Ζ4) )
(b) 第 1実施形態の説明
本発明の第 1の実施形態としての楕円曲線暗号装置 1 1は、 スカラー倍算処理 部 2 2が、 スカラー倍算 d XPを計算する際に、 バイナリ法 (L S B, アド .ァ ンド ·ダブル .オールウェイズ) を用いるようになつている。 以下に、 スカラー 倍算処理部 2 2がスカラ一倍算に用いるアルゴリズム例を Algorithm 1 0として 示す。
なお、 本第 1実施形態の楕円曲線喑号装置 1 1においては、 線形座標変換部 2
3は、 ノ ラメーター (r l, r 2 , r 3, s i , s 2, s 3) = (r " 2, r "
3, r, s, 0, 0) に基づいて、 素体 GF (p) 上の楕円曲線 Eに対して、 楕 円曲線上の点 Pの座標 (X: Y: Z) を座標 (r l X (X- s i) : r 2 X (Y_ s 2) : r 3 X (Ζ- s 3)) に変換するようになっている。 すなわち、 線形座標 変換部 2 3は、 楕円曲線上の点 Pの座標 (X: Y: Z) を座標 (r ~ 2 X (X— s) : r " 3 XY: r XZ) に変換 (線形座標変換) するようになつている
( b— 1 ) Algorithm 1 0 [バイナリ法 ( L S B , アド 'アンド 'ダブル ·ォ 一ノレウェイズ, パラメーター (rA2,rA3,r,s,0,0))]
Si: T[0]:= LC(O)
S2: T[2] := LC(P)
S3: for i = 0 upto n-1 {
S4: T[l] := LCECADD( T[0], T[2] )
S5: T[2] := LCECDBL( T[2] )
S6: T[0]:= T [删
S7: }
S8: return( invLC(T[0]) )
ここで、 LCは線型写像座標への変換 (線形座標変換)、 invLCはその逆変換を 表す。 また T[0], T[l], Τ[2]はいずれも一時変数であり、 dは ηビットのスカラ 一値で、 d[i]は dの下位 iビット目の値である。
すなわち、 本第 1実施形態の楕円曲線暗号装置 11においては、 演算部 12が 上述した Algorithm 10のステップ SIおよび S2を実行することにより線形座標 変換部 23として機能し、 ステップ S3〜ステップ S7を実行することにより、 ス カラー処理部 22として機能するようになっているのである。
本発明の第 1実施形態としての楕円曲線暗号装置 1 1によれば、 線形座標変換 部 23が、 パラメーター (r l, r 2, r 3, s l, s 2, s 3) = (r ~ 2, r " 3, r , s , 0, 0) に基づいて、 素体 G F (p) 上の楕円曲線 Eに対して、 楕円曲線上の点 Pの座標 (X: Y: Z) を座標 (r 1 X (X- s 1) : r 2 X (Y - s 2) : r 3 X (Z- s 3)) に変換し、 スカラー倍算処理部 22が、 この変換 後の線型変換座標における楕円加算と楕円 2倍算を計算するので、 s≠0とする ことにより、 X座標が 0であるような特殊点は、 線型変換座標での X座標が sの 点として表され、 スカラー倍算の途中で出現することがない。 これにより特殊点 攻撃に対して安全である。
また、 スカラー倍算処理部 22が用いる Algorithm 10において、 アド .ァ ンド ·ダブル'オールウェイズを用いているので、 S PAおよび DP Aに対し て安全である。
さらに、 線形座標変換部 23が、 パラメーター (r 1, r 2, r 3, s i, s 2, s 3) = (r " 2, r " 3, r, s, 0, 0) に基づいて、 素体 GF ( p) 上の楕円曲線 Eに対して、 楕円曲線上の点 Pの座標 (X: Y: Z) を座標 ( r 1 X (X - s 1 ) : r 2 X (Y— s 2) : r 3 X (Z— s 3)) に変換し、 ス カラー倍算処理部 22が、 この変換後の線型変換座標における楕円加算と楕円 2倍算を計算するので、 ヤコビアン座標における R P Cと同様のランダム効果 が期待でき、 DP Aに対しても安全である。
(c) 第 2実施形態の説明
前述した第 1実施形態の楕円曲線喑号装置 1 1で用いられる Algorithm 10に おいては、 変数 T[2]に保管される値は dとは無関係であり、 そのステップ S5以 外では値が変更されることはない。 そこでバイナリ法 (LSB, アド ·アンド - ダブル ·オールウェイズ) の変形として、 以下の Algorithm 1 1に示すアルゴリ ズム例によって表わされる変形ァド .アンド .ダブル .オールゥヱイズを適用す
ることもできる。
本発明の第 2実施形態としての楕円曲線暗号装置 1 1においては、 スカラー倍 算 d X Pを計算する際に、 アド .アンド 'ダブル ·オールウェイズに代えて Algorithm 1 1に示すような変形ァド .アンド 'ダブル ·オールウェイズを用い るようになっており、 それ以外の部分については前述した第 1実施形態の楕円曲 線暗号装置 1 1とほぼ同様に構成されている。 以下に、 スカラー倍算処理部 2 2 がスカラー倍算に用いるアルゴリズム例を Algorithm 1 1として示す。
( c _ 1 ) Algorithm 1 1 レ ィナリ法 ( L S B, 変形ァド ·アンド 'ダブル 'オールウェイズ, パラメーター (rA2,rA3,r,s,0,0) ) ]
SOI: T[0]:= LC(O)
S02: T[2]:= LC(P)
S03: T[l]: = Τ[2]
S04: Χ0 = Χ(Τ[2]); Υ0 = Υ(Τ[2]) ; Ζ0 = Ζ(Τ[2])
S05: Τ[2] := LCECDB (ΧΟ:Υ0:Ζ0) )
S06: Τ[0] = T[d[0]];
S07: for( i=i; i<=n-l; i++ ){
S08: T[l]:= LCECADDC T[0], T[2] )
S09: T[2]:ニ LCiECDBL( T[2],(X0:Y0:Z0) )
S10: T[0] = T[d[i]];
Sll: }
S12: return( invLC(T[0]) )
ここで、 L Cは線型写像座標への変換、 invLCはその逆変換を表す。又、 T[0], T[l], Τ[2]はいずれも一時変数、 dは ηビットのスカラー値で、 d[i]は dの下位 i ビット目の値である。なお、ステップ S06とステップ S10とで使用される一時変 数は共用されるものとする。
本第 2実施形態の楕円曲線暗号装置 1 1においては、 演算部 1 2が上述した Algorithm 1 1のステップ S01および S02を実行することにより線形座標変換部 2 3として機能し、 ステップ S03〜ステップ S12を実行することにより、 スカラ 一処理部 2 2として機能するようになっているのである。
本発明の第 2実施形態の楕円曲線暗号装置 1 1によれば、 スカラー倍算処理部 22が用いる Algorithm 1 1において、 変形ァド ·アンド .ダブル ·オールゥェ ィズを用いているので、 S P Aに対して安全である。
また、 線形座標変換部 23が、 パラメーター (r 1, r 2, r 3, s l, s 2, s 3) = (r " 2, r " 3, r , s , 0, 0) に基づいて、 素体 GF (p
) 上の楕円曲線 Eに対して、 楕円曲線上の点 Pの座標 (X: Y: Z) を座標 ( r 1 X (X- s 1 ) : r 2 X (Y- s 2) : r 3'X (Z— s 3)) に変換し、 スカ ラー倍算処理部 22が、 この変換後の線型変換座標における楕円加算と楕円 2 倍算を計算するので、 ヤコビアン座標における RPCと同様のランダム効果が 期待でき、 DP Aに対しても安全である。
さらに、 上記パラメータにおいて s ≠ 0であるので、 X座標が 0であるよう な特殊点は、 線型変換座標での X座標が sとなり、 スカラー倍算の途中で出現 しない。 これにより特殊点攻撃に対しても安全である。
(d) 第 3実施形態の説明
本発明の第 3実施形態としての楕円曲線暗号装置 1 1は、 線形座標変換部 23 力 パラメーター (r 1, r 2, r 3, s 1, s 2, s 3) = ( r , r, r, s , 0, 0) に基づいて、 素体 GF (p) 上の楕円曲線 Eに対して、 楕円曲線上の点 Pの座標 (X: Y: Z) を座標 (r l X (X- s i) : r 2 X (Y- s 2) : r 3 X (Z— s 3)) に変換する線形座標変換を行なうようになっており、 更に、 スカ ラー倍算処理部 22が、 X座標法を用いて楕円加算と楕円 2倍算と楕円加算 2倍 算とを計算するようになっている。
本第 3実施形態においては、 スカラー倍算処理部 22が X座標法で前記スカラ 一倍算を行なうので、 S PAおよび DPAに対して安全である他、 計算時間を短 縮することができる。
また、 本実施形態においては、 上述の如くパラメーター (r l, r 2, r 3, s l, s 2, s 3) = (r, r, r , s, 0, 0) を用いるようになつており、 これにより、 計算時間を短縮することができる。
ここで、 X座標法とは、 楕円加算 ·楕円 2倍算 '楕円加算 2倍算を y座標を用 いずに計算するアルゴリズムである。 参考までに、 素体上の射影座標で表された
楕円曲線に対する、 文献 Izu-Takagi02 に開示された x座標法のアルゴリズム例 を、 以下に Algorithm 1 2 m, 1 2 a, 1 3, 14 m, 14 aとしてそれぞれ示 す。 なお、 アルゴリズムの番号の末尾に付した符号 mは乗法的 (multiplicative ) な EC ADDを用いることを示すものであり、 符号 aは加算的 (additive) な E CADDを用いることを示す。
( d— 1 ) Algorithm 1 2m [xECADDm (射影座標) ]
Input: P1=(X1:Z1), P2=(X2:Z2), P3'=(X3':Z3')=P1-P2, a, b
Output: P3=(X3:Z3)=P1+P2
X3 = Z3' X [(XI X X2- a X Z 1 X Z2)A2- 4 X b X Zl X Z2 X (XI X Z2+2 X Zl) Z3 = X3' X(X1XZ2-X2XZ1)A2
(d— 2) Algorithm 1 2 a [xECADDa (射影座標)]
Input: P1=(X1:Z1), P2=(X2:Z2), P3'=(X3':Z3')=P1-P2, a, b
Output: P3=(X3:Z3)=P1+P2
S = 2X(XlXZ2 + X2XZl)x(XlXX2 + aXZlXZ2) + 4XbXZlA2XZ2A2
T = (X1XZ2-X2XZ1)A2
X3 = Z3' XS+X3' XT
Z3 = Z3'xT
(d- 3) Algorithm 1 3 [xECDBL (射影座標) ]
Input: Pl=(Xi:Zl), a, b
Output: P4=(X4:Z4)=2xPl
X4 = (XlA2-aXZlA2)A2-8XbXXlXZlA3
Z4 = 4X(XlXZlX(XlA2+aXZlA2) + bXZlA4)
(d-4) Algorithm 14m [xECADDDBLm (射影座標) ]
Input: P1=(X1:Z1), P2=(X2:Z2), P3'=(X3':Z3')=P1-P2, a, b
Output: P3=(X3:Z3)=P1+P2, P4=(X4:Z4)=2xPl
X3 = Z3' X[(XlXX2-aXZlXZ2)A2-4XbXZlXZ2X(XlXZ2+2XZl)
Z3 = X3' X(X1XZ2-X2XZ1)A2
X4 = (XlA2-aXZlA2)A2-8XbXXlXZlA3
Z4 = 4X(XlXZlX(XlA2+aXZlA2) + bXZlA4)
(d- 5) Algorithm 1 4 a [xECADDDBLa (射影座標)]
Input: Pl=(Xl:Zl), P2=(X2:Z2), P3'=(X3':Z3')=P1"P2, a, b
Output: Ρ3=(Χ3··Ζ3)=Ρ1+Ρ2, P4=(X4:Z4)=2xPl
S = 2X(XlXZ2+X2XZl)x(XlXX2 + aXZlXZ2) + 4XbXZlA2XZ2A2.
T = (X1XZ2-X2XZ1)A2
X3二 Z3, XS+X3' XT
Z3 = Z3'xT
X4 = (XlA2-aXZlA)A2-8XbXXlXZlA3
Z4 = 4X(XlXZlx(XlA2+aXZlA2) + bXZlA4)
本発明の第 3実施形態の楕円曲線暗号装置 1 1によれば、 線形座標変換部 2
3力 ノ ラメーター (r l, r 2, r 3, s i, s 2, s 3) = (r, r, r, s, 0, 0) に基づいて、 素体 GF (p) 上の楕円曲線 Eに対して、 楕円曲線 上の点 Pの座標 (X : Y : Z) を座標 (r l X (X_ s l) : r 2 X (Y— s
2) : r 3 X (Z— s 3)) に変換し、 スカラー倍算処理部 22が、 この変換後 の線型変換座標における楕円加算と楕円 2倍算を計算するので、 ヤコビアン座 標における RPCと同様のランダム効果が期待でき、 DP Aに対しても安全で ある。
また、 上記パラメータにおいて s ≠ 0であるので、 X座標が 0であるような特 殊点は、線型変換座標での X座標が sとなり、スカラー倍算の途中で出現しない。 これにより特殊点攻撃に対しても安全である。
さらに、 上述した Algorithm 1 4m, 1 4 aによれば、 xECADDDBLni や xECADDDBLaを用いることにより、 1つの関数で加算と 2倍算とを行なうよう になっている。 これにより、 関数の呼び出し回数を低減することができ、 処理を 高速化することができる。 又、 加算と 2倍算とで演算結果を共有することができ るので、 計算量も低減することもできる。
(e) 第 4実施形態の説明
本発明の第 4実施形態としての楕円曲線暗号装置 1 1は、 第 3実施形態の楕円 曲線喑号装置 1 1におけるスカラー倍算処理部 22が、 スカラー倍算 d XPを計 算する際にモンゴメリ 'ラダーを用いるようになつており、 その他の部分につい
ては第 3実施形態の楕円曲線暗号装置 1 1とほぼ同様に構成されている。以下に、 スカラー倍算処理部 2 2がスカラー倍算に用いるアルゴリズム例を Algorithm 1 5として示す。
( e - 1 ) Algorithm 1 5 [モンゴメリ 'ラダー, x座標法, パラメーター ( r,r,r,s,0,0) ]
Si: T[0]■= xLC(P)
S2: T[l]: = xECDBL( T[0] )
S3: for i = n-2 downto 0 {
S4: T[2]:= xECDBL( T随]] )
S5: T[l]: = xECADD( T[0], T[l], LC(P) )
S6: T[0] := T[2-d[i]]
S7: T[l]:= T[l+d[i]]
S8: }
S9: return ( invxLC(T[0]) )
ここで、 xLC は線型写像座標における X座標法で用いる座標への変換であり、 invLCはその逆変換を表す。 又、 T[0], T[l]および Τ[2]はいずれも一時変数、 d は nビットのスカラー値で、 d[i]は dの下位 iビット目の値である。
本発明の第 4実施形態としての楕円曲線暗号装置 1 1によれば、 上述した第 4 実施形態と同様の作用効果を得ることができる他、 スカラー倍算処理部 2 2が用 いる Algorithm 1 5において、 モンゴメリ 'ラダーを用いているので、 S P Aお よび D P Aに対して安全である。
( f ) 第 5実施形態の説明
本発明の第 5実施形態としての楕円曲線暗号装置 1 1は、 スカラー倍算処理部 2 2が、 スカラー倍算 d X Pを計算する際に改良モンゴメリ 'ラダーを用いるよ うになつており、 それ以外の部分は第 4実施形態の楕円曲線暗号装置 1 1とほぼ 同様に構成されている。
改良モンゴメ リ ·ラダーは、 上述した Algorithm 1 4 m, 1 4 aと同様に、 xECADDDBL を用いることにより、 1つの関数で加算と 2倍算を行なうことに より、関数の呼び出し回数を低減して処理を高速化することができるものであり、
又、 加算と 2倍算とで演算結果を共有することにより計算量を低減することもで きるものである。 以下に、 スカラー倍算処理部 2 2がスカラー倍算に用いるアル ゴリズム例を Algorithm 1 5 ' として示す。
( f - 1 ) Algorithm 1 5 ' [改良モンゴメリ ' ラダー, x座標法, パラメ一 ター , r,r,r,s,0,0) ]
SI: T[0]:= xLC(P)
S2: T[l]:= xECDBL( T[0] )
S3: for i = n-2 downto 0 {
S4: ( T[l-d[i]], T[d[i]] ):= xECADDDBL( T[d[i]], T[l_d[i]], xLC(P) ) S5: }
S6: return ( invxLC(T[0]) )
ここで、 xLC は線型写像座標における X座標法で用いる座標への変換であり、 invLCはその逆変換を表す。 又、 T[0], T[l]および Τ[2]はいずれも一時変数、 d は nビットのスカラー値で、 d[i]は dの下位 i ビット目の値である。
本発明の第 5実施形態としての楕円曲線暗号装置 1 1によれば、 上述した第 4 実施形態と同様の作用効果を得ることができる他、 スカラー倍算処理部 2 2が用 いる Algorithm 1 5 ' において、 xECADDDBL を用いるので、 1つの関数で加 算と 2倍算を行なうことにより、 関数の呼び出し回数を低減して処理を高速化す ることができる他、 加算と 2倍算とで演算結果を共有することにより計算量を低 減することができる。
上述の如く、 本発明の各実施形態にかかる楕円曲線喑号装置 1 1によれば、 楕 円曲線暗号におけるスカラー倍算を、 サイドチャネル攻擊に対する耐性をもって 計算することが可能となる。
( g ) 第 6実施形態
本発明の第 6実施形態としての楕円曲線暗号装置 1 1は、 スカラー倍算処理部
2 2が、 スカラー倍算 d X Pを計算する際に、楕円 2 k ( 2 ~ k )倍算 (iECDBL) を用いるようになつている。 ここで、 楕円 2 k倍算とは、 与えられた点の 2 k倍 点 2 k X Pを計算することである。 楕円 2 k倍算は、 楕円 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という) には、 以下の Algorithm 1 6に示すような、楕円 2 k倍算を実現 するためのアルゴリズムが開示されている。 なお、 この楕円 2 k倍算は、 素体上 でヤコビアン座標で表現された楕円曲線に対して適用可能である。
( g — 1 ) Algorithm 1 6 [iECDBL (ヤコビアン座標) ]
Input: Ρ[0]=(Χ[0]:Υ[0]:Ζ[0]), k, a
Output: P[k]=(X[k]:Y[k]:Z[k])=2AkxP[0]
SOI: W[0]:= axZOM
S02: M[0]:= 3 XX[0]A2 + W[0]
S03: S[0] := 4xX[0]xY[0]A2
S04: T[0] = 8xY[0]A4
S05: X[l]:= M[0]A2-2 X S[0]
S06: Y[l]:= M[0] X (S[0] -X[1])-T[0]
S07: Z[l] := 2xY[0]xZ[0]
S08: for 0=1; i<k; i++){
S09: W[i]:= 2xT[i-l]xW[i-l]
S10: M[i]:= 3 XX[iJA2+W[i]
Sll: S[iJ:= 4xX[i]xY[i]八 2
S12: T[i] 8xY[i]A4
S13: X[i+1] := M[i]A2-2 X S[i]
S14: Y[i+1] := M[i] X (S[i]-X[i+1])-T[i]
S15: Z[i+1]:= 2xY[i]xZ[i]
S16: }
S17: return( (X[k]:Y[k]:Z[k]) )
上述した Algorithm 1 6は、 ヤコビアン座標に対して楕円 2 k倍算を適用した
ものであるが、 このヤコビアン座標に代えて本発明の線形座標変換部 23により 行なわれた線形変換座標に対して楕円 2 k倍算を適用することもでき、 これによ り、 演算速度を向上させることができる。
なお、線形座標変換部 23は、パラメーター (r l, r 2, r 3, s 1, s 2, s 3) = (r " 2, r " 3, r , s, 0, 0) に基づいて線形座標変換を行なつ てもよく、 又、 パラメーター (r 1, r 2, r 3 , s 1 , s 2, s 3) = (r , r, r, s , 0, 0) に基づいて線形座標変換を行なってもよい。
(h) その他
次に、 上述した本発明の楕円曲線暗号プログラムを実行する楕円曲線喑号装置 のハードウエア構成の一例を図 5を参照して説明する。楕円暗号装置は、例えば、 パーソナルコンピュータ等の情報処理装置により実現できる。
CPU (Central Processing Unit) 3 1は、 楕円曲線暗号の楕円加算、 楕円 2 倍算等を実行する。 メモリ 32は、 演算に使用される各種のレジスタとして使用 される。外部記憶装置 33は、 O Sや、楕円曲線暗号プログラム等が格納される。 媒体駆動装置 34は、 CDROM、 DVD, フレキシブルディスク、 I Cカー ド等の可搬記録媒体 35の読み取り、 あるいは書き込みを行なう装置である。 入力装置 3 6は、 キーボード等のデータを入力する装置である。 出力装置 37 は、 ディスプレイ、 プリンタ等の装置である。 ネットワーク接続装置 38は、 ィ ンターネット等のネットワークに接続するための装置であり、 この装置を介して ネットワーク上のサーバからプログラムをダウンロードすることができる。なお、 CPU31, メモリ 32, 外部記憶装置 33, 入力装置 36等はバス 39により 接続されている。
そして、 情報処理装置の CPU 3 1が、 楕円曲線暗号プログラムを実行するこ とにより、 上述したゼロ点判定部 21, スカラー倍算処理部 22, 線形座標変換 部 (座標変換部) 23および乱数生成部 24として機能するようになっている。 なお、 これらのゼロ点判定部 21, スカラ一倍算処理部 22 , 線形座標変換部 (座標変換部) 23および乱数生成部 24としての機能を実現するためのプログ ラム (楕円曲線暗号プログラム) は、 例えばフレキシブルディスク, CD— RO M, CD-R, CD-R/W, D VD, DVD-R, D VD-R/W, 磁気ディ
スク, 光ディスク, 光磁気ディスク等の、 コンピュータ読取可能な記録媒体に記 録された形態で提供される。 そして、 コンピュータはその記録媒体からプロダラ ムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。 又、 そのプログラムを、 例えば磁気ディスク, 光ディスク, 光磁気ディスク等の記憶 装置 (記録媒体) に記録しておき、 その記憶装置から通信経路を介してコンビュ ータに提供するようにしてもよい。
ゼロ点判定部 21, スカラー倍算処理部 22, 線形座標変換部 (座標変換部) 23および乱数生成部 24としての機能を実現する際には、 内部記憶装置 (記憶 部 1 6, メモリ 32) に格納されたプログラムがコンピュータのマイクロプロセ ッサ (演算部 12, CPU 31) によって実行される。 このとき、 記録媒体に記 録されたプログラムをコンピュータが読み取つて実行するようにしてもよレ、。 なお、 本実施形態において、 コンピュータとは、 ハードウェアとオペレーティ ングシステムとを含む概念であり、 オペレーティングシステムの制御の下で動作 するハードウェアを意味している。 又、 オペレーティングシステムが不要でァプ リケーシヨンプログラム単独でハードウェアを動作させるような場合には、 その ハードウェア自体がコンピュータに相当する。 ハードウェアは、 少なくとも、 C PU等のマイクロプロセッサと、 記録媒体に記録されたコンピュータプログラム を読み取るための手段とをそなえており、 本実施形態においては、 楕円曲線暗号 装置 11がコンピュータとしての機能を有しているのである。
さらに、 本実施形態における記録媒体としては、 上述したフレキシブルデイス ク, CD— ROM, CD-R, CD-R/W, DVD, DVD-R, DVD-R /W, 磁気ディスク, 光ディスク, 光磁気ディスクのほか、 I Cカード, ROM カートリッジ, 磁気テープ, パンチカード, コンピュータの内部記憶装置 (RA Mや ROMなどのメモリ),外部記憶装置等や、バーコードなどの符号が印刷され た印刷物等のコンピュータ読取可能な種々の媒体を利用することができる。 そして、 本発明は、 楕円曲線暗号の暗号化及び解読を行なう専用の装置に限ら ず、 I Cカード、 DVD装置、 携帯電話機、 パーソナルコンピュータ等の種々の 製品に適用できる。
そして、 本発明は上述した各実施形態に限定されるものではなく、 本発明の趣
旨を逸脱しなレ、範囲で種々変形して実施することができる。
例えば、 演算部 1 2力 S、 記憶部 1 6に記憶されたプログラムを実行することに より、 ゼロ点判定部 21, スカラ一倍算処理部 22 , 線形座標変換部 23および 乱数生成部 24として機能するようになっているが、 これに限定されるものでは なく、 例えば、 ゼロ点判定部 21, スカラー倍算処理部 22, 線形座標変換部 2 3および乱数生成部 24のうちの一部の機能を外部装置が処理してもよく、 例え ば、 スカラー倍算処理部 22のみを実行してもよい。
また、 本楕円曲線暗号装置 1 1は、 例えば、 プロセッサをそなえたスマート力 ードによって実現されてもよく、 又、 スマートカードのメモリに秘密鍵や秘密鍵 のみを格納しておき、 このスマートと通信可能に接続された外部装置 (楕円曲線 喑号装置) によつて楕円曲線暗号処理を行なつてもよい。
さらに、 上述した第 1実施形態および第 2実施形態では、 線形座標変換部 23 、 パラメーター (r 1, r 2, r 3, s 1, s 2, s 3) = (r " 2, r " 3, r , s , 0, 0) に基づいて線形座標変換を行なう例について説明しているが、 これに限定されるものではなく、 例えば、 パラメータ (r l, r 2, r 3) の部 分が第 3〜第 5実施形態と同様に (r, r , r ) であってもよく、 又、 これらの r 1 , r 2, r 3のうち一部もしくは全てが互いに異なる数値であってもよレ、。 また、 上述した第 3〜第 5実施形態では、 線形座標変換部 23が、 パラメータ 一 (r l, r 2, r 3, s l, s 2, s 3) = ( r , r , r , s , 0, 0) に基 づいて線形座標変換を行なう例について説明しているが、 これに限定されるもの ではなく、 例えば、 パラメータ (r 1 , r 2, r 3) の部分が第 1実施形態や第 2実施形態と同様に(r 2, r " 3, r ) であってもよく、又、 これらの r 1, r 2, r 3のうち一部もしくは全てが互いに異なる数値であってもよレ、。
さらに、 上述した各実施形態について、 線形座標変換部 23が線形座標変換に 用いるパラメーター (r 1 , r 2, r 3, s l, s 2, s 3 ) における、 ノヽ。ラメ ータ (s i, s 2, s 3) の部分は、 (s、 0, 0) に限定されるものではなく、 例えば、 s i, s 2, s 3のいずれも 0以外の値であってもよく、 又、 3 1と 5 3とだけがそれぞれ 0, s 1と s 2とだけがそれぞれ 0, s 3だけが 0, s 2だ けが 0, s 1だけが 0等、 種々変形して実施することができる。 更に、 これらの
s 1 , s 2 , s 3のうち一部もしくは全てが互いに異なる数値であってもよレ、。 ここで、 パラメータ s 1に 0ではない数値 sを適用することにより、 X座標が 0であるような特殊点は、 線型変換座標での X座標が sの点として表され、 スカ ラー倍算の途中で出現することがない。 これにより X座標に関する特殊点攻撃に 対して安全となる。
また、 パラメータ s 2に 0ではない数値 sを適用することにより、 y座標が 0 であるような特殊点は、 線型変換座標での Y座標が sの点として表され、 スカラ 一倍算の途中で出現することがなく、 y座標に関する特殊点攻撃に対して安全と なる。 同様に、 パラメータ s 3に 0ではない数値 sを適用することにより、 z座 標が 0であるような特殊点は、 線型変換座標での Z座標が sの点として表され、 スカラー倍算の途中で出現することがなく、 z座標に関する特殊点攻撃に対して 安全となる。
さらに、 上述した線形座標変換部 2 3によって線形座標変換を行なった変換後 の座標を、 スカラー倍算処理部 2 2が、 ウィンドウ法 (Algorithm 6, 6 ' , 6 〃 参照) を用いてスカラー倍算を行なってもよく、 これにより、 特殊点攻撃に対 して安全であるとともに S P Aに対しても安全である。
また、 上述した各実施形態においては、 pを 5以上の素数とし、 要素数 pの有 限体 G F ( p ) ( pは 5以上の素数)上の楕円曲線に適用した場合について説明し ているが、 これに限定されるものではなく、 本発明の趣旨を逸脱しない範囲で種 々変形して実施することができる。
なお、 本発明の各実施形態が開示されていれば、 本発明の楕円曲線暗号装置, 楕円曲線暗号方法, 楕円曲線喑号プログラムおよび同プログラムを記録したコン ピュータ読取可能な記録媒体を当業者によって実施'製造することが可能である。 産業上の利用可能性
以上のように、 本発明の楕円曲線暗号装置, 楕円曲線暗号方法, 楕円曲線暗号 プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体は、 楕円曲線暗号処理を行なうのに有用であり、 特にサイドチャネル攻撃に対して有 効である。