説明

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

楕円曲線暗号処理を行なう楕円曲線暗号装置である。 有限体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以外の値を有するように構成することにより、楕円曲線暗号におけるスカラー倍算を、サイドチャネル攻撃に対する耐性をもって計算することができる。

【発明の詳細な説明】
【技術分野】
本発明は、楕円曲線暗号処理に関し、特に、楕円曲線暗号処理を行なうプロセッサにおける電力解析攻撃の防止に用いて好適な、楕円曲線暗号装置,楕円曲線暗号方法,楕円曲線暗号プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体に関する。
【背景技術】
暗号方式には公開鍵暗号方式と共通鍵暗号方式とが含まれる。公開鍵暗号方式は、暗号化と復号化とで異なる鍵(キー)を用いる方式である。典型的な公開鍵暗号方式では、暗号化を行なうための鍵(公開鍵)を公開しておき、この公開鍵を用いて平文を暗号化して受信者に送信する。暗号文を復号化するための鍵(秘密鍵)は受信者のみが知る秘密情報として保持されており、受信者がこの秘密鍵を用いて暗号文を復号化することにより平文を得ることができる。
また、近年では、公開鍵暗号として楕円曲線暗号(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)Algorithm 1に、又、バイナリ法(LSB)のアルゴリズム例を(2)Algorithm 2に示す。なお、以下、特に断りの無い限り、小文字(d等)はスカラー値を表わし、大文字(P,T等)は楕円曲線上の点を表わすものとする。又、楕円加算をECADD、楕円2倍算をECDBLと表わす。更に、符号“^”はべき乗算を表わすものとし、“(”と“)”とによって囲まれた数列は2進数で表現された数字を表わす。又、“S1:”等のように、Sを付した数字はアルゴリズムを表わすプログラム例におけるステップ数を示すものとする。


ここで、Tは一時変数、dはnビットのスカラー値で、d[i]はdの下位i番目のビットの値である。
例えばd=21=2^4+2^2+2^0=(10101)についてスカラー倍算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にECDBL(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にECDBL(T,P)が設定され、処理後の変数Tの値は21×Pとなる。
以上でステップS2〜S7の処理が終了し、最後のステップS8で変数Tの値21×Pが出力される。このようにバイナリ法(MSB)では、スカラ値の最上位ビットから処理が行なわれるのである。


ここでT[0],T[1]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位i番目のビットの値である。
例えばd=21=2^4+2^2+2^0=(10101)についてスカラー倍算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)では、スカラ値の最下位ビットから処理が行なわれるのである。
さて、上述したAlgorithm 1およびAlgorithm 2を点のスカラー倍算に使用した場合には、いずれも※印を付したステップS5の処理は、dのビット値d[i]に応じて実行されたりされなかったりする。SPAではこの性質を利用して秘密鍵dを解析する。多くの実験から、ECDBLとECADDの電力波形は特徴的で容易に区別可能であることが知られている。従って、プロセッサにおけるAlgorithm 1およびAlgorithm 2の演算において発生する電力波形を測定することによって、その波形からECDBLとECADDの演算の順序と回数がわかり、秘密鍵dを解析して求めることができる。
このSPAへの対策として、アド・アンド・ダブル・オールウェイズ(add−and−double−always)と呼ばれる、加算と2倍算とを常に行なう方法が文献Coron99で提案されている。この方法では、常にECDBL演算とECADD演算とが交互に行なわれるのでSPAに対して安全である。以下に、先述したAlgorithm 1およびAlgorithm 2に対してアド・アンド・ダブル・オールウェイズを施したアルゴリズム例をAlgorithm 3およびAlgorithm 4として示す。

ここで、T[0],T[1]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。


ここで、T[0],T[1],T[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。
上述したAlgorithm 3およびAlgorithm 4を用いることにより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に対して安全である。モンゴメリ・ラダーのアルゴリズム例をAlgorithm 5に示す。

ここでT[0],T[1],T[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。
上述したAlgorithm 3〜Algorithm 5を用いることによりSPAを防止することができるが、文献Coron99にはこれらのアルゴリズムに対するDPAについても述べられており、Algorithm 3〜Algorithm 5ではDPAで秘密鍵を解析して求めることができることが示されている。そして、文献Coron99には、ランダム化射影座標(Randomized Projective Coordinates;RPC)と呼ばれる、乱数を使用した楕円曲線上の点の表現を導入することによって、Algorithm 3〜Algorithm 5に対するDPAへの各対策が提案されている。
以下に、Algorithm 3に対してRPCを施したアルゴリズム例をAlgorithm 3′として示す他、Algorithm 4に対してRPCを施したアルゴリズム例をAlgorithm 4′として、又、Algorithm 5に対してRPCを施したものをAlgorithm 5′としてそれぞれ示す。なお、以下、RPCで表現された楕円曲線上の点をダッシュ(′もしくは’)付の変数で示す。

ここで、T’[0],T’[1],T’[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。又、invRPCはRPC表現からの逆変換を示す。


ここで、T’[0],T’[1],T’[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。又、invRPCはRPC表現からの逆変換を示す。

ここで、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と同様である。Algorithm 3に対してRCを施したアルゴリズム例をAlgorithm 3″として示し、同様に、Algorithm 4に対してRCを施したアルゴリズム例をAlgorithm 4″,Algorithm 5に対してRCを施したアルゴリズム例をAlgorithm 5″としてそれぞれ示す。なお、以下、RCで表現された楕円曲線上の点はダブルダッシュ(″もしくは”)付の変数で示す。

ここで、T”[0],T”[1],T”[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。又、invRCはRC表現からの逆変換を示す。


ここで、T”[0],T”[1],T”[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。又、invRCはRC表現からの逆変換を示す。

ここで、T”[0],T”[1],T”[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。又、invRCはRC表現からの逆変換を示す。
また、スカラー倍算d×Pの実現手法としては、前述したバイナリ法(Algorithm 1,2)やモンゴメリ・ラダー(Algorithm 5)の他に、ウィンドウ法(window method)と呼ばれる方法もある。例えば、幅4ビットのウィンドウ法は、初期処理としてPの0〜15倍を計算し、その結果をテーブルとして持っておき、次にスカラー値を4ビット単位(ウィンドウ)に分割することにより、スカラー倍算を処理する。以下に、Algorithm 6としてウィンドウ法(幅4ビット)のアルゴリズム例を示す。


ここで、dはnビットのスカラー値で、nは4の倍数と仮定する。又、d[i,i−3]はdの下位iビット目から(i−3)ビットまでの4ビット値とする。W[i]はウィンドウ法で使用するテーブルである。
例えば、d=21=2^4+2^2+2^0=(10101)=(0001 0101)に対するスカラー倍算を考える。このとき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を計算するのである。
さて、点のスカラー倍算にAlgorithm 6(ウィンドウ法)を使用する場合には、dのビット値に応じて行なわれたり行なわれなかったりするような処理が無いので、バイナリ法と比較して一般にSPAに対して安全であるといわれている。しかし、ウィンドウ法は、バイナリ法と同様に、DPAに対しては安全ではなく、文献Coron99に開示された手法で解析可能であるが、かかるDPAに対しては、バイナリ法やモンゴメリ・ラダーと同様に、RPCやRCが有効であることが知られている。以下に、Algorithm 6に対してRPCを施したアルゴリズム例をAlgorithm 6′に、又、Algorithm 6にRCを施したアルゴリズム例をAlgorithm 6″に示す。

ここで、dはnビットのスカラー値で、nは4の倍数と仮定する。またd[i,i−3]はdの下位iビット目から(i−3)ビットまでの4ビット値とする。T′は一時変数、W’[i]はウィンドウ法で使用するテーブル、invRPCはRPC表現からの逆変換を示す。

ここで、dはnビットのスカラー値で、nは4の倍数と仮定する。またd[i,i−3]はdの下位iビット目から(i−3)ビットまでの4ビット値とする。T″は一時変数、W”[i]はウィンドウ法で使用するテーブル、invRCはRC表現からの逆変換を示す。
さて、SPAとDPAとの双方に対しては、従来、前述したAlgorithm 3′〜6′やAlgorithm 3″〜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になるという性質は保持されてしまうので、Algorithm 3′〜6′やAlgorithm 3″〜6″も特殊点攻撃に対して安全であるとはいえない。
なお、Algorithm 3〜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のアルゴリズム例をAlgorithm 7に示す。


ここでrandom()はnビットの乱数を生成する関数である。又、scalar(d,P)はスカラー倍算d×Pを計算する関数であって、具体的には、前述したAlgorithm 3′〜6′やAlgorithm 3″〜6″等を用いて計算される。また変数r,T,T1,T2はいずれも一時変数である。
ESは、SPA,DPAおよび特殊点攻撃に対して安全といえるが、ESで使用するスカラー倍算はその手法単独でSPA対策,DPA対策であるので、既にSPA対策とDPA対策済のAlgorithm 3′〜6′やAlgorithm 3″〜6″に適用するには無駄が多い。特に、これらの手法を適用すると、楕円曲線上の点の加算および2倍算を、適用前と比較して余分に処理しなければならず、処理オーバーヘッドが大きくなる欠点がある。
本発明は、このような課題に鑑み創案されたもので、特定点攻撃に対して秘密情報の推定を困難にし、暗号処理の安全性を高めることが可能な楕円曲線暗号装置,楕円曲線暗号方法,楕円曲線暗号プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体を提供することを目的とする。
【非特許文献1】(文献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
【非特許文献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−Tymen01) M.Joye,and C.Tymen,“Protections against differential analysis for elliptic curve cryptography”,Cryptographic Hardware and Embedded Systems 2001(CHES2001),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−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.
【発明の開示】
上記の目的を達成するために、本発明の楕円曲線暗号装置は、楕円曲線暗号処理を行なう楕円曲線暗号装置であって、有限体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倍算を用いてスカラー倍算を行なってもよい。
さらに、本発明の楕円曲線暗号方法は、楕円曲線暗号処理を行なう楕円曲線暗号方法であって、有限体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倍算を用いてスカラー倍算を行なってもよい。
さらに、本発明の楕円曲線暗号プログラムは、楕円曲線暗号処理を行なう楕円曲線暗号プログラムであって、有限体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倍算を用いて前記スカラー倍算を行なうことにより、高速に演算を行なうことができる。
【図面の簡単な説明】
図1は楕円加算を説明するための図である。
図2は楕円2倍算を説明するための図である。
図3は本発明に係る楕円曲線暗号装置の要部の構成を示す図である。
図4は本発明の一実施形態としての楕円曲線暗号装置の機能構成を示すブロック図である。
図5は本発明の楕円曲線暗号プログラムを実行する楕円曲線暗号装置のハードウェア構成の一例を示す図である。
【発明を実施するための最良の形態】
以下、図面を参照して本発明の実施の形態を説明する。
(a)基本説明
本発明の一実施形態としての楕円曲線暗号装置は、例えば、楕円曲線暗号の専用の情報処理装置,パーソナルコンピュータ,ICカード(スマートカード)等に内蔵されたICチップ,携帯電話機,携帯情報端末装置(PDA(Personal data assistant)等),DVDプレーヤ等として実現されるものであり、演算を行なうプロセッサを有して構成されるものである。
以下の説明では、本発明にかかる楕円曲線暗号演算方法を、pを素数、mを1以上の整数とし、要素数p^mの有限体GF(p^m)上の楕円曲線に適用した場合について説明する。なお、以下、特に断りの無い限り、小文字(d等)はスカラー値を表わし、大文字(P,T等)は楕円曲線上の点を表わすものとする。又、楕円加算をECADD、楕円2倍算をECDBLと表わす。更に、符号“^”はべき乗算を表わすものとし、“(”と“)”とによって囲まれた数列は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という)を計算するようになっているのである。
このときの楕円加算の計算アルゴリズムをAlgorithm 8に示すとともに、楕円2倍算の計算アルゴリズムをAlgorithm 9に示す。




(b)第1実施形態の説明
本発明の第1の実施形態としての楕円曲線暗号装置11は、スカラー倍算処理部22が、スカラー倍算d×Pを計算する際に、バイナリ法(LSB,アド・アンド・ダブル・オールウェイズ)を用いるようになっている。以下に、スカラー倍算処理部22がスカラー倍算に用いるアルゴリズム例をAlgorithm 10として示す。
なお、本第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)に変換(線形座標変換)するようになっている

ここで、LCは線型写像座標への変換(線形座標変換)、invLCはその逆変換を表す。またT[0],T[1],T[2]はいずれも一時変数であり、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。
すなわち、本第1実施形態の楕円曲線暗号装置11においては、演算部12が上述したAlgorithm 10のステップ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が用いるAlgorithm 10において、アド・アンド・ダブル・オールウェイズを用いているので、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で用いられるAlgorithm 10においては、変数T[2]に保管される値はdとは無関係であり、そのステップS5以外では値が変更されることはない。そこでバイナリ法(LSB,アド・アンド・ダブル・オールウェイズ)の変形として、以下のAlgorithm 11に示すアルゴリズム例によって表わされる変形アド・アンド・ダブル・オールウェイズを適用することもできる。
本発明の第2実施形態としての楕円曲線暗号装置11においては、スカラー倍算d×Pを計算する際に、アド・アンド・ダブル・オールウェイズに代えてAlgorithm 11に示すような変形アド・アンド・ダブル・オールウェイズを用いるようになっており、それ以外の部分については前述した第1実施形態の楕円曲線暗号装置11とほぼ同様に構成されている。以下に、スカラー倍算処理部22がスカラー倍算に用いるアルゴリズム例をAlgorithm 11として示す。

ここで、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が用いるAlgorithm 11において、変形アド・アンド・ダブル・オールウェイズを用いているので、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座標法のアルゴリズム例を、以下にAlgorithm 12m,12a,13,14m,14aとしてそれぞれ示す。なお、アルゴリズムの番号の末尾に付した符号mは乗法的(multiplicative)なECADDを用いることを示すものであり、符号aは加算的(additive)なECADDを用いることを示す。


本発明の第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となり、スカラー倍算の途中で出現しない。これにより特殊点攻撃に対しても安全である。
さらに、上述したAlgorithm 14m,14aによれば、xECADDDBLmやxECADDDBLaを用いることにより、1つの関数で加算と2倍算とを行なうようになっている。これにより、関数の呼び出し回数を低減することができ、処理を高速化することができる。又、加算と2倍算とで演算結果を共有することができるので、計算量も低減することもできる。
(e)第4実施形態の説明
本発明の第4実施形態としての楕円曲線暗号装置11は、第3実施形態の楕円曲線暗号装置11におけるスカラー倍算処理部22が、スカラー倍算d×Pを計算する際にモンゴメリ・ラダーを用いるようになっており、その他の部分については第3実施形態の楕円曲線暗号装置11とほぼ同様に構成されている。以下に、スカラー倍算処理部22がスカラー倍算に用いるアルゴリズム例をAlgorithm 15として示す。

ここで、xLCは線型写像座標におけるx座標法で用いる座標への変換であり、invLCはその逆変換を表す。又、T[0],T[1]およびT[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。
本発明の第4実施形態としての楕円曲線暗号装置11によれば、上述した第4実施形態と同様の作用効果を得ることができる他、スカラー倍算処理部22が用いるAlgorithm 15において、モンゴメリ・ラダーを用いているので、SPAおよびDPAに対して安全である。
(f)第5実施形態の説明
本発明の第5実施形態としての楕円曲線暗号装置11は、スカラー倍算処理部22が、スカラー倍算d×Pを計算する際に改良モンゴメリ・ラダーを用いるようになっており、それ以外の部分は第4実施形態の楕円曲線暗号装置11とほぼ同様に構成されている。
改良モンゴメリ・ラダーは、上述したAlgorithm 14m,14aと同様に、xECADDDBLを用いることにより、1つの関数で加算と2倍算を行なうことにより、関数の呼び出し回数を低減して処理を高速化することができるものであり、又、加算と2倍算とで演算結果を共有することにより計算量を低減することもできるものである。以下に、スカラー倍算処理部22がスカラー倍算に用いるアルゴリズム例をAlgorithm 15′として示す。

ここで、xLCは線型写像座標におけるx座標法で用いる座標への変換であり、invLCはその逆変換を表す。又、T[0],T[1]およびT[2]はいずれも一時変数、dはnビットのスカラー値で、d[i]はdの下位iビット目の値である。
本発明の第5実施形態としての楕円曲線暗号装置11によれば、上述した第4実施形態と同様の作用効果を得ることができる他、スカラー倍算処理部22が用いるAlgorithm 15′において、xECADDDBLを用いるので、1つの関数で加算と2倍算を行なうことにより、関数の呼び出し回数を低減して処理を高速化することができる他、加算と2倍算とで演算結果を共有することにより計算量を低減することができる。
上述の如く、本発明の各実施形態にかかる楕円曲線暗号装置11によれば、楕円曲線暗号におけるスカラー倍算を、サイドチャネル攻撃に対する耐性をもって計算することが可能となる。
(g)第6実施形態
本発明の第6実施形態としての楕円曲線暗号装置11は、スカラー倍算処理部22が、スカラー倍算d×Pを計算する際に、楕円2(2^k)倍算(iECDBL)を用いるようになっている。ここで、楕円2k倍算とは、与えられた点の2倍点2×Pを計算することである。楕円2倍算は、楕円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 16に示すような、楕円2倍算を実現するためのアルゴリズムが開示されている。なお、この楕円2倍算は、素体上でヤコビアン座標で表現された楕円曲線に対して適用可能である。

上述したAlgorithm 16は、ヤコビアン座標に対して楕円2倍算を適用したものであるが、このヤコビアン座標に代えて本発明の線形座標変換部23により行なわれた線形変換座標に対して楕円2倍算を適用することもでき、これにより、演算速度を向上させることができる。
なお、線形座標変換部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が、ウィンドウ法(Algorithm 6,6′,6″参照)を用いてスカラー倍算を行なってもよく、これにより、特殊点攻撃に対して安全であるとともにSPAに対しても安全である。
また、上述した各実施形態においては、pを5以上の素数とし、要素数pの有限体GF(p)(pは5以上の素数)上の楕円曲線に適用した場合について説明しているが、これに限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
なお、本発明の各実施形態が開示されていれば、本発明の楕円曲線暗号装置,楕円曲線暗号方法,楕円曲線暗号プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体を当業者によって実施・製造することが可能である。
【産業上の利用可能性】
以上のように、本発明の楕円曲線暗号装置,楕円曲線暗号方法,楕円曲線暗号プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体は、楕円曲線暗号処理を行なうのに有用であり、特にサイドチャネル攻撃に対して有効である。
【図1】

【図2】

【図3】

【図4】

【図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)が、アド・アンド・ダブル・オールウェイズを用いたバイナリメソッドで、該スカラー倍算を行なうことを特徴とする、請求の範囲第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項に記載の楕円曲線暗号プログラムを記録したコンピュータ読取可能な記録媒体。

【国際公開番号】WO2005/015526
【国際公開日】平成17年2月17日(2005.2.17)
【発行日】平成18年10月5日(2006.10.5)
【国際特許分類】
【出願番号】特願2005−507578(P2005−507578)
【国際出願番号】PCT/JP2003/010003
【国際出願日】平成15年8月6日(2003.8.6)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】