楕円スカラー倍演算装置、方法及びプログラム
【課題】標数3の有限体F3^m上定義されたprojective座標上の超特異楕円曲線E(F3^m)上の点P(X1,Y1,1)の楕円スカラー倍演算において行われる楕円加算を効率良く行う。
【解決手段】ある乗数(例えばZ2)について乗算する際に生成された事前演算結果(Z2’)を記憶しておき、その乗数と同一の乗数(Z2)について多項式乗算をする際に既に生成されたその事前演算結果(Z2’)を再利用する。これにより、同一の乗数についての再度事前演算をする処理を省くことができる。したがって、楕円加算を効率良く行うことができる。
【解決手段】ある乗数(例えばZ2)について乗算する際に生成された事前演算結果(Z2’)を記憶しておき、その乗数と同一の乗数(Z2)について多項式乗算をする際に既に生成されたその事前演算結果(Z2’)を再利用する。これにより、同一の乗数についての再度事前演算をする処理を省くことができる。したがって、楕円加算を効率良く行うことができる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、暗号技術に関し、特にIDベース暗号等において楕円曲線上の点を楕円スカラー倍演算する技術に関する。
【背景技術】
【0002】
情報通信技術に不可欠な技術として公開鍵暗号技術が知られている。しかし、RSAなどの公開鍵暗号は、公開鍵の管理が煩雑で管理コストが高いといった問題がある。近年、このような問題を解決する技術として任意のビット列であるID∈{0,1}*を公開鍵として用いるIDベース暗号が提案された(例えば、非特許文献1参照)。
【0003】
IDベース暗号では、任意のビット列であるID∈{0,1}*を楕円曲線上の点に変換し、この楕円曲線上でペアリング演算や楕円スカラー倍演算などを行って暗号化処理や秘密鍵生成処理を行う。近年、ペアリング演算を高速に行える楕円曲線として、標数3の有限体F3^m上で定義された超特異(Supersingular)楕円曲線が注目されている。
【0004】
楕円スカラー倍演算は、楕円三倍算と楕円加算とを用いて行われる。楕円三倍算と楕円加算とを用いて楕円曲線E(F3^m)上の点P∈E(F3^m)をn倍する楕円スカラー倍演算アルゴリズムの例を以下に示す(例えば、非特許文献1参照。)。nは、n=Σi=0L−1ni3iとして三進数で展開されるとする。この例では、「3.」において楕円三倍算が行われ、「4.」「5.」において楕円加算が行われている。
【0005】
[楕円スカラー倍演算アルゴリズム]
1.T←P
2.for i=L−2 down to 0 do
3. T←[3]T
4. if ni=1 then T←T+P
5. if ni=−1 then T←T−P
6.then T
【0006】
従来から行われている、プロジェクティブ座標上において点P(X1,Y1,1)と点Q(X2,Y2,Z2)とを楕円加算して点R(X3,Y3,Z3)を求める楕円加算アルゴリズムの例を以下に挙げる(例えば、非特許文献2参照。)。
1.A=X1Z2−X2
2.B=Y1Z2−Y2
3.C=A3
4.D=C2−B2Z2
5.X3=X2C−AD
6.Y3=BD−Y2C
7.Z3=CZ2
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】Roberto M. Avanzi, Henri Cohen, Christophe Doche, Gerhard Frey, Tanja Lange, Kim Nguyen, Frederik Vercauteren, “Handbook of Elliptic and Hyperelliptic Curve Cryptography”, Henri Cohen, Gerhard Frey, Christophe Doche, 7/19/2005
【非特許文献2】Paulo S. L. M. Barreto1, Hae Y. Kim1, Ben Lynn2, and Michael Scott3, “Efficient Algorithms for Pairing-Based Cryptosystems”
【発明の概要】
【発明が解決しようとする課題】
【0008】
IDベース暗号においては、楕円スカラー倍演算を高速に行うことが求められており、そのために楕円加算を高速に行う必要がある。しかしながら、上記楕円加算アルゴリズムを効率的に行う技術は知られていなかった。
【課題を解決するための手段】
【0009】
ある乗数について乗算する際に生成された事前演算結果を記憶しておき、その乗数と同一の乗数について多項式乗算をする際に既に生成されたその事前演算結果を再利用する。
【発明の効果】
【0010】
既に生成された事前演算結果を再利用することにより、同一の乗数についての再度事前演算結果を求める処理を省くことができる。したがって、楕円加算の処理速度が上がり、楕円スカラー倍演算の処理速度も上がる。
【図面の簡単な説明】
【0011】
【図1】第一演算部の例の機能ブロック図。
【図2】第二演算部の例の機能ブロック図。
【図3】第三演算部の例の機能ブロック図。
【図4】第四演算部の例の機能ブロック図。
【図5】第五演算部の例の機能ブロック図。
【図6】第六演算部の例の機能ブロック図。
【図7】第七演算部の例の機能ブロック図。
【図8】この発明による楕円スカラー倍演算装置の例の機能ブロック図。
【図9】事前演算結果を例示する図。
【図10】この発明による乗算スケジュールを示す図。
【発明を実施するための形態】
【0012】
[有限体乗算について]
標数3の基礎体F3={0,1,2}のm次拡大体である有限体F3^mについての多項式乗算
C(x)=A(x)・B(x)
を例に挙げて説明をする。有限体乗算とは、入力A(x),B(x)∈F3^mから、出力C(x)∈F3^mを求めることをいう。ここで、標数3の有限体F3^mの元A(x),B(x),C(x)は、コンピュータ上では基礎体F3の元を係数とする多項式として次のように表される。楕円曲線E(F3^m)上の点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)、点R(X3,Y3,Z3)の各座標の値X1,Y1,1,X2,Y2,Z2,X3,Y3,Z3も同様に、コンピュータ上では基礎体F3の元を係数とする多項式として表される。ここで、i=0,…,m−1として、ai∈F3,bi∈F3,ci∈F3である。
【0013】
A(x)=a0+a1x+a2x2+…+am−1xm−1
B(x)=b0+b1x+b2x2+…+bm−1xm−1
C(x)=c0+c1x+c2x2+…+c2m−2x2m−2
【0014】
この有限体乗算は、いわゆるWindow法等の手法によって高速処理が可能となる。Window法は、A(x)に対して事前演算を行い事前演算結果を求め、その事前演算結果を用いてB(x)の走査時に複数の係数biを同時に確認して加算を行うアルゴリズムのことである。ここで、1度に確認する係数の個数Wsを、(bi+ws−1,bi+ws−2,…,bi)をウィンドウサイズWsとする。Window法は、(1)事前演算と、(2)多項式演算と、(3)リダクションの3段階からなる。
【0015】
A(x)に対する事前演算とは、項数WsのWs−1次多項式
W(x)=w0+w1x+w2x2+…+wWs−1xWs−1(wi∈{0,1,2})
のすべての組合せのそれぞれに対して、A(x)×W(x)の結果を求めることをいう。言い換えると、有限体F3を基礎体とするm次拡大体F3^mの元であり多項式で表現されるA(x)を、その有限体F3の元を係数とする項数Wsの各多項式W(x)と演算することである。ある係数wi∈{0,1,2}の組{w0,w1,w2,…,wWs−1}についてのA(x)×W(x)の事前演算結果をA’[w0,w1,w2,…,wWs−1]∈F3^mとする。この演算により、例えば、図9に例示するような事前演算結果を得ることができる。このように事前演算結果とは、Ws個の係数の各組と、その演算結果とを対応づけたものである。換言すると、事前演算結果とは、項数Wsの各多項式と、その演算結果を対応づけたものである。
【0016】
次に、事前演算結果を用いた多項式乗算について説明をする。m次多項式であるB(x)は、項数Wsの多項式に分割される。より詳細には、項数Wsの多項式に分割された後に、項数Wsの分割された各多項式は共通するxの累乗で括られる。
【0017】
B(x)= (b0+b1x+b2x2+…+bWs-1xWs-1)
+(bWs+b+Ws+1x+bWs+2x2+…+b2Ws-1xWs-1)xWs
…
+(bm-Ws+bm-Ws+1x+bm-Ws+2x2+…+bm-1xm-1)xm-Ws
【0018】
この場合、A(x)・B(x)を以下のように書くことができる。
A(x)・B(x)= A(x)・(b0+b1x+b2x2+…+bWs-1xWs-1)
+A(x)・(bWs+b+Ws+1x+bWs+2x2+…+b2Ws-1xWs-1)xWs
…
+A(x)・(bm-Ws+bm-Ws+1x+bm-Ws+2x2+…+bm-1xWs-1)xm-Ws
【0019】
事前演算において、A(x)と項数Wsの各多項式W(x)との積は計算してあるので、事前演算結果を参照することにより、A(x)と分割された項数Wsの各多項式との積は容易に求めることができる。すなわち、分割された項数Wsの多項式のWs個の係数の組に対応する演算結果を参照する。そして、その分割された項数Wsの多項式が、xの累乗で括ったものであれば、その演算結果にそのxの累乗をかけることにより、A(x)と分割された項数Wsの各多項式との積を求めることができる。
【0020】
A(x)・B(x)= A[b0,b1,b2,…,bWs-1]
+A[bWs,bWs+1,bWs+2,…,b2Ws-1]xWs
…
+A[bm-Ws,bm-Ws+1,bm-Ws+2,…,bm-1]xm-Ws
【0021】
このようにして求まったA(x)と分割された項数Wsの各多項式との積を加算することにより、C(x)=A(x)・B(x)が計算される。
【0022】
リダクションとは、基礎体F3から拡大体F3^mを作るために定義した既約多項式f(x)でC(x)を割った余りを求めることである。リダクションは演算結果であるC(x)に対して行うだけではなく、A(x)×B(x)の演算過程で適宜行ってもよい。
Window法は、参考文献1に詳しく説明がされている。
【0023】
〔参考文献1〕
川原祐人、他3名、「ηTペアリングの高速ソフトウェア実装」、SCIS2007、2007、2007年1月23日−6日
【0024】
[実施形態]
この発明による楕円スカラー倍演算装置の一実施形態を説明する。
IDベース暗号で用いられるIDは、ハッシュ関数等でaffine座標上の点(X1,Y1)にまず変換される。しかし、affine座標においては、逆元の計算に時間がかかることが知られている。したがって、この発明では、楕円スカラー倍演算を高速に行うために、点(X1,Y1)をaffine座標上からprojective座標上に変換した点P(X1,Y1,1)について楕円スカラー倍演算を行うことにする。この発明による楕円スカラー倍演算装置は、入力されたaffine座標とprojective座標とを互いに変換する座標変換部500(図8)を有していても良い。
【0025】
projective座標は、射影座標ともいう。予めZが定められており、affine座標の点(X,Y)の各成分をZ倍して、Z成分を付加することにより、affine座標の点(X,Y)をprojective座標の点(X・Z,Y・Z,Z)に変換することができる。逆にprojective座標の点(X,Y,Z)のXY成分をそれぞれZで割り、Z成分を削除することにより、projective座標の点(X,Y,Z)をaffine座標の点(X/Z,Y/Z)に変換することができる。この発明では、affine座標の点(X1,Y1)は、Z1=1として、projective座標の点P(X1,Y1,1)に変換されている。
【0026】
楕円スカラー倍演算は、楕円三倍算と楕円加算とを用いて行われる。楕円三倍算と楕円加算とを用いて楕円曲線E(F3^m)上の点P∈E(F3^m)をn倍する楕円スカラー倍演算アルゴリズムの例を以下に示す(例えば、非特許文献1参照。)。nは、n=Σi=0L−1ni3iとして三進数で展開されるとする。この例では、「3.」において楕円三倍算が行われ、「4.」「5.」において楕円加算が行われている。
【0027】
[楕円スカラー倍演算アルゴリズム]
1.T←P
2.for i=L−2 down to 0 do
3. T←[3]T
4. if ni=1 then T←T+P
5. if ni=−1 then T←T−P
6.then T
【0028】
この発明では、「4.」「5.」において行われる楕円加算を効率良く行うことにより、楕円スカラー倍演算全体の処理速度を上げようとする。以下、点P(X1,Y1,1)∈E(F3^m)と点Q(X2,Y2,Z2)∈E(F3^m)とを楕円加算して、点R(X3,Y3,Z3)∈E(F3^m)を効率良く求める方法について説明する。X1,Y1,X2,Y2,Z2,X3,Y3,Z3のそれぞれは、有限体F3^mの元である。上記のようにZ1=1であり、楕円スカラー倍演算を行う対象である点が点P(X1,Y1,1)である場合には、非特許文献2に記載されている下記の楕円加算は、図10に示した乗算スケジュールにより効率良く行うことができる。
【0029】
1.A=X1Z2−X2
2.B=Y1Z2−Y2
3.C=A3
4.D=C2−B2Z2
5.X3=X2C−AD
6.Y3=BD−Y2C
7.Z3=CZ2
【0030】
<ステップS1>
第一演算部1(図1)は、Z2についての事前演算結果Z2’を求め、その事前演算結果Z2’を用いてX1Z2について多項式乗算することにより、A=X1Z2−X2を演算する(ステップS1)。第一演算部1は、第一事前演算部11、第一事前演算結果記憶部12、第一多項式乗算部13及び第一加算部14を備える。
【0031】
まず、第一事前演算部11は、Z2についての事前演算を行い事前演算結果Z2’を生成する。事前演算結果Z2’は、第一事前演算結果記憶部12に記憶される。第一多項式乗算部13は、第一事前演算結果記憶部12から読み込んだ事前演算結果Z2’を用いて、X1Z2を多項式乗算する。生成されたX1Z2は、第一加算部に送られる。第一加算部14は、生成されたX1Z2とX2とを用いて、A=X1Z2−X2を演算する。
【0032】
<ステップS2>
第二演算部2(図2)は、事前演算結果Z2’を用いてY1Z2について多項式乗算することにより、B=Y1Z2−Y2を演算する(ステップS2)。
【0033】
第二多項式乗算部21は、第一事前演算結果記憶部12から読み込んだ事前演算結果Z2’を用いて、Y1Z2について多項式乗算する。生成されたY1Z2は、第二加算部22に送られる。第二加算部22は、生成されたY1Z2とY2とを用いて、B=Y1Z2−Y2を演算する。
【0034】
<ステップS3>
第三演算部3(図3)は、C=A3を演算する(ステップS3)。楕円三乗算はフロベニウスマップを用いて高速に演算することができる。
【0035】
<ステップS4>
第四演算部4(図4)は、Bについての事前演算結果B’を求め、その事前演算結果B’を用いてt1=B2を多項式乗算し、上記事前演算結果Z2’を用いてt1Z2を多項式乗算することにより、D=C−B2Z2を演算する(ステップS4)。
【0036】
第四事前演算部41は、Bについての事前演算を行い事前演算結果B’を生成する。事前演算結果B’は、第四事前演算結果記憶部42に記憶される。第四A多項式乗算部43は、事前演算結果B’を用いて、B2を演算する。第四B多項式乗算部44は、第一事前演算結果記憶部12から読み込んだZ2’とB2とを用いて、B2Z2について多項式乗算を行う。第四加算部45は、生成されたB2Z2とCとを用いて、D=C−B2Z2を演算する。
【0037】
<ステップS5>
第五演算部5(図5)は、Cについての事前演算結果C’を求め、その事前演算結果C’を用いてX2Cを多項式乗算し、A又はDについての事前演算結果A’又はD’を求め、その事前演算結果A’又はD’を用いてADを多項式乗算することにより、X3=X2C−ADを演算する(ステップS5)。
【0038】
第五A事前演算部51は、Cについて事前演算を行い事前演算結果C’を求める。事前演算結果Cは、第五A事前演算結果記憶部52に記憶される。第五A多項式乗算部53は、第五A事前演算結果記憶部52から読み込んだC’を用いて、X2Cについて多項式乗算を行う。X2Cは、第五加算部57に送られる。
【0039】
第五B事前演算部54は、A又はDについて事前演算を行い、事前演算結果A’又は事前演算結果D’を生成する。事前演算結果A’又は事前演算結果D’は、第五B事前演算結果記憶部55に記憶させる。第五B多項式乗算部56は、第五B事前演算結果記憶部55から読み込んだ事前演算結果A’又はD’を用いて、ADについて多項式乗算する。ADは、第五加算部57に送られる。
第五加算部57は、X3C及びADを用いて、X3=X2C−ADを演算する。
【0040】
<ステップS6>
第六演算部6(図6)は、事前演算結果B’又はD’を用いてBDを多項式乗算し、上記事前演算結果C’を用いてY2Cを多項式乗算することにより、Y3=BD−Y2Cを演算する(ステップS6)。
【0041】
第六A多項式乗算部61は、第四事前演算結果記憶部42から読み込んだ事前演算結果B’を用いて、BDについて多項式乗算する。BDは、第六加算部63に送られる。なお、図6において破線で示すように、第六A多項式乗算部61は、第五B事前演算結果記憶部55から読み込んだ事前演算結果D’を用いて、BDについて多項式乗算してもよい。
【0042】
第六B多項式乗算部62は、第五A事前演算結果記憶部52から読み込んだ事前演算結果C’を用いて、Y2Cについて多項式乗算する。Y2Cは、第六加算部63に送られる。
第六加算部63は、BDとY2Cを用いて、Y3=BD−Y2Cを演算する。
【0043】
<ステップS7>
第七演算部7(図7)は、事前演算結果Z2’又はC’を用いて、CZ2を多項式乗算することにより、Z3=CZ2を演算する(ステップS7)。
【0044】
第七多項式乗算部71は、CZ2を多項式乗算する際に、第一事前演算結果記憶部12から読み込んだ事前演算結果Z2’を用いても良いし、図7に破線で示すように、第五A事前演算結果記憶部52から読み込んだ事前演算結果C’を用いてもよい。
【0045】
なお、リダクションについてはふれていないが、リダクション部400(図10)が適宜所定の既約多項式f(x)を用いてリダクションを行うものとする。
【0046】
このように、ある乗数について乗算する際に生成された事前演算結果を記憶しておき、その乗数と同一の乗数について多項式乗算をする際に既に生成されたその事前演算結果を再利用することにより、事前演算の回数を少なくすることができる。
【0047】
従来は、多項式乗算をする度に事前計算を行っていた。したがって、事前演算は、多項式乗算の回数と同一の回数である9回行っていた。この発明により、図10に示すように事前演算の回数は4回となる。したがって、楕円加算の処理速度、ひいては楕円スカラー倍演算の処理速度が従来よりも上がる。
【0048】
なお、点P(X1,Y1,Z1)∈E(F3^m)を3倍した点R(X3,Y3,Z3)を求める楕円三倍算アルゴリズムを以下に例示する。bは±1である。楕円三倍算部200はこのアルゴリズムを実行することにより楕円三倍算を行う。
1.X3=X19−bZ19
2.Y3=−Y19
3.Z3=−Z19
【0049】
楕円スカラー倍演算装置は、単一の事前演算部101、事前演算結果記憶部102、多項式乗算部103及び加算部104を有していても良い。この場合の楕円スカラー倍演算装置の機能ブロック図を図8に例示する。楕円スカラー倍演算装置は、楕円加算部100、楕円三倍算部200、記憶部301、通信部302、及び、各部の動作を制御する制御部303、リダクション部400を備える。また、楕円加算部100は、事前演算部101、事前演算結果記憶部102、多項式乗算部103及び加算部104を備える。
【0050】
この場合、事前演算部101が第一事前演算部11、第四事前演算部41、第五A事前演算部51及び第五B事前演算部54として機能し、事前演算結果記憶部102が、第一事前演算結果記憶部12、第四事前演算結果記憶部42、第五A事前演算結果記憶部52及び第五B事前演算結果記憶部55として機能し、多項式乗算部103が第一多項式乗算部13、第二多項式乗算部21、第四A多項式乗算部43、第四B多項式乗算部44、第五A多項式乗算部53、第五B多項式乗算部56、第六A多項式乗算部61、第六B多項式乗算部62及び第七多項式乗算部71として機能し、加算部104が第一加算部14、第二加算部22、第四加算部45、第五加算部57及び第六加算部63として機能する。
【0051】
各部間で直接データがやり取りされてもよいし、記憶部301を介してデータがやり取りされてもよい。
【0052】
楕円スカラー倍演算装置は、コンピュータによって実現することができる。この場合、これらの装置がそれぞれ有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、これらの装置における各処理機能が、コンピュータ上で実現される。
【0053】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、これらの装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【0054】
この発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【0055】
1 第一演算部
2 第二演算部
3 第三演算部
4 第四演算部
5 第五演算部
6 第六演算部
7 第七演算部
100 楕円加算部
101 事前演算部
102 事前演算結果記憶部
103 多項式乗算部
104 加算部
200 楕円三倍算部
【技術分野】
【0001】
この発明は、暗号技術に関し、特にIDベース暗号等において楕円曲線上の点を楕円スカラー倍演算する技術に関する。
【背景技術】
【0002】
情報通信技術に不可欠な技術として公開鍵暗号技術が知られている。しかし、RSAなどの公開鍵暗号は、公開鍵の管理が煩雑で管理コストが高いといった問題がある。近年、このような問題を解決する技術として任意のビット列であるID∈{0,1}*を公開鍵として用いるIDベース暗号が提案された(例えば、非特許文献1参照)。
【0003】
IDベース暗号では、任意のビット列であるID∈{0,1}*を楕円曲線上の点に変換し、この楕円曲線上でペアリング演算や楕円スカラー倍演算などを行って暗号化処理や秘密鍵生成処理を行う。近年、ペアリング演算を高速に行える楕円曲線として、標数3の有限体F3^m上で定義された超特異(Supersingular)楕円曲線が注目されている。
【0004】
楕円スカラー倍演算は、楕円三倍算と楕円加算とを用いて行われる。楕円三倍算と楕円加算とを用いて楕円曲線E(F3^m)上の点P∈E(F3^m)をn倍する楕円スカラー倍演算アルゴリズムの例を以下に示す(例えば、非特許文献1参照。)。nは、n=Σi=0L−1ni3iとして三進数で展開されるとする。この例では、「3.」において楕円三倍算が行われ、「4.」「5.」において楕円加算が行われている。
【0005】
[楕円スカラー倍演算アルゴリズム]
1.T←P
2.for i=L−2 down to 0 do
3. T←[3]T
4. if ni=1 then T←T+P
5. if ni=−1 then T←T−P
6.then T
【0006】
従来から行われている、プロジェクティブ座標上において点P(X1,Y1,1)と点Q(X2,Y2,Z2)とを楕円加算して点R(X3,Y3,Z3)を求める楕円加算アルゴリズムの例を以下に挙げる(例えば、非特許文献2参照。)。
1.A=X1Z2−X2
2.B=Y1Z2−Y2
3.C=A3
4.D=C2−B2Z2
5.X3=X2C−AD
6.Y3=BD−Y2C
7.Z3=CZ2
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】Roberto M. Avanzi, Henri Cohen, Christophe Doche, Gerhard Frey, Tanja Lange, Kim Nguyen, Frederik Vercauteren, “Handbook of Elliptic and Hyperelliptic Curve Cryptography”, Henri Cohen, Gerhard Frey, Christophe Doche, 7/19/2005
【非特許文献2】Paulo S. L. M. Barreto1, Hae Y. Kim1, Ben Lynn2, and Michael Scott3, “Efficient Algorithms for Pairing-Based Cryptosystems”
【発明の概要】
【発明が解決しようとする課題】
【0008】
IDベース暗号においては、楕円スカラー倍演算を高速に行うことが求められており、そのために楕円加算を高速に行う必要がある。しかしながら、上記楕円加算アルゴリズムを効率的に行う技術は知られていなかった。
【課題を解決するための手段】
【0009】
ある乗数について乗算する際に生成された事前演算結果を記憶しておき、その乗数と同一の乗数について多項式乗算をする際に既に生成されたその事前演算結果を再利用する。
【発明の効果】
【0010】
既に生成された事前演算結果を再利用することにより、同一の乗数についての再度事前演算結果を求める処理を省くことができる。したがって、楕円加算の処理速度が上がり、楕円スカラー倍演算の処理速度も上がる。
【図面の簡単な説明】
【0011】
【図1】第一演算部の例の機能ブロック図。
【図2】第二演算部の例の機能ブロック図。
【図3】第三演算部の例の機能ブロック図。
【図4】第四演算部の例の機能ブロック図。
【図5】第五演算部の例の機能ブロック図。
【図6】第六演算部の例の機能ブロック図。
【図7】第七演算部の例の機能ブロック図。
【図8】この発明による楕円スカラー倍演算装置の例の機能ブロック図。
【図9】事前演算結果を例示する図。
【図10】この発明による乗算スケジュールを示す図。
【発明を実施するための形態】
【0012】
[有限体乗算について]
標数3の基礎体F3={0,1,2}のm次拡大体である有限体F3^mについての多項式乗算
C(x)=A(x)・B(x)
を例に挙げて説明をする。有限体乗算とは、入力A(x),B(x)∈F3^mから、出力C(x)∈F3^mを求めることをいう。ここで、標数3の有限体F3^mの元A(x),B(x),C(x)は、コンピュータ上では基礎体F3の元を係数とする多項式として次のように表される。楕円曲線E(F3^m)上の点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)、点R(X3,Y3,Z3)の各座標の値X1,Y1,1,X2,Y2,Z2,X3,Y3,Z3も同様に、コンピュータ上では基礎体F3の元を係数とする多項式として表される。ここで、i=0,…,m−1として、ai∈F3,bi∈F3,ci∈F3である。
【0013】
A(x)=a0+a1x+a2x2+…+am−1xm−1
B(x)=b0+b1x+b2x2+…+bm−1xm−1
C(x)=c0+c1x+c2x2+…+c2m−2x2m−2
【0014】
この有限体乗算は、いわゆるWindow法等の手法によって高速処理が可能となる。Window法は、A(x)に対して事前演算を行い事前演算結果を求め、その事前演算結果を用いてB(x)の走査時に複数の係数biを同時に確認して加算を行うアルゴリズムのことである。ここで、1度に確認する係数の個数Wsを、(bi+ws−1,bi+ws−2,…,bi)をウィンドウサイズWsとする。Window法は、(1)事前演算と、(2)多項式演算と、(3)リダクションの3段階からなる。
【0015】
A(x)に対する事前演算とは、項数WsのWs−1次多項式
W(x)=w0+w1x+w2x2+…+wWs−1xWs−1(wi∈{0,1,2})
のすべての組合せのそれぞれに対して、A(x)×W(x)の結果を求めることをいう。言い換えると、有限体F3を基礎体とするm次拡大体F3^mの元であり多項式で表現されるA(x)を、その有限体F3の元を係数とする項数Wsの各多項式W(x)と演算することである。ある係数wi∈{0,1,2}の組{w0,w1,w2,…,wWs−1}についてのA(x)×W(x)の事前演算結果をA’[w0,w1,w2,…,wWs−1]∈F3^mとする。この演算により、例えば、図9に例示するような事前演算結果を得ることができる。このように事前演算結果とは、Ws個の係数の各組と、その演算結果とを対応づけたものである。換言すると、事前演算結果とは、項数Wsの各多項式と、その演算結果を対応づけたものである。
【0016】
次に、事前演算結果を用いた多項式乗算について説明をする。m次多項式であるB(x)は、項数Wsの多項式に分割される。より詳細には、項数Wsの多項式に分割された後に、項数Wsの分割された各多項式は共通するxの累乗で括られる。
【0017】
B(x)= (b0+b1x+b2x2+…+bWs-1xWs-1)
+(bWs+b+Ws+1x+bWs+2x2+…+b2Ws-1xWs-1)xWs
…
+(bm-Ws+bm-Ws+1x+bm-Ws+2x2+…+bm-1xm-1)xm-Ws
【0018】
この場合、A(x)・B(x)を以下のように書くことができる。
A(x)・B(x)= A(x)・(b0+b1x+b2x2+…+bWs-1xWs-1)
+A(x)・(bWs+b+Ws+1x+bWs+2x2+…+b2Ws-1xWs-1)xWs
…
+A(x)・(bm-Ws+bm-Ws+1x+bm-Ws+2x2+…+bm-1xWs-1)xm-Ws
【0019】
事前演算において、A(x)と項数Wsの各多項式W(x)との積は計算してあるので、事前演算結果を参照することにより、A(x)と分割された項数Wsの各多項式との積は容易に求めることができる。すなわち、分割された項数Wsの多項式のWs個の係数の組に対応する演算結果を参照する。そして、その分割された項数Wsの多項式が、xの累乗で括ったものであれば、その演算結果にそのxの累乗をかけることにより、A(x)と分割された項数Wsの各多項式との積を求めることができる。
【0020】
A(x)・B(x)= A[b0,b1,b2,…,bWs-1]
+A[bWs,bWs+1,bWs+2,…,b2Ws-1]xWs
…
+A[bm-Ws,bm-Ws+1,bm-Ws+2,…,bm-1]xm-Ws
【0021】
このようにして求まったA(x)と分割された項数Wsの各多項式との積を加算することにより、C(x)=A(x)・B(x)が計算される。
【0022】
リダクションとは、基礎体F3から拡大体F3^mを作るために定義した既約多項式f(x)でC(x)を割った余りを求めることである。リダクションは演算結果であるC(x)に対して行うだけではなく、A(x)×B(x)の演算過程で適宜行ってもよい。
Window法は、参考文献1に詳しく説明がされている。
【0023】
〔参考文献1〕
川原祐人、他3名、「ηTペアリングの高速ソフトウェア実装」、SCIS2007、2007、2007年1月23日−6日
【0024】
[実施形態]
この発明による楕円スカラー倍演算装置の一実施形態を説明する。
IDベース暗号で用いられるIDは、ハッシュ関数等でaffine座標上の点(X1,Y1)にまず変換される。しかし、affine座標においては、逆元の計算に時間がかかることが知られている。したがって、この発明では、楕円スカラー倍演算を高速に行うために、点(X1,Y1)をaffine座標上からprojective座標上に変換した点P(X1,Y1,1)について楕円スカラー倍演算を行うことにする。この発明による楕円スカラー倍演算装置は、入力されたaffine座標とprojective座標とを互いに変換する座標変換部500(図8)を有していても良い。
【0025】
projective座標は、射影座標ともいう。予めZが定められており、affine座標の点(X,Y)の各成分をZ倍して、Z成分を付加することにより、affine座標の点(X,Y)をprojective座標の点(X・Z,Y・Z,Z)に変換することができる。逆にprojective座標の点(X,Y,Z)のXY成分をそれぞれZで割り、Z成分を削除することにより、projective座標の点(X,Y,Z)をaffine座標の点(X/Z,Y/Z)に変換することができる。この発明では、affine座標の点(X1,Y1)は、Z1=1として、projective座標の点P(X1,Y1,1)に変換されている。
【0026】
楕円スカラー倍演算は、楕円三倍算と楕円加算とを用いて行われる。楕円三倍算と楕円加算とを用いて楕円曲線E(F3^m)上の点P∈E(F3^m)をn倍する楕円スカラー倍演算アルゴリズムの例を以下に示す(例えば、非特許文献1参照。)。nは、n=Σi=0L−1ni3iとして三進数で展開されるとする。この例では、「3.」において楕円三倍算が行われ、「4.」「5.」において楕円加算が行われている。
【0027】
[楕円スカラー倍演算アルゴリズム]
1.T←P
2.for i=L−2 down to 0 do
3. T←[3]T
4. if ni=1 then T←T+P
5. if ni=−1 then T←T−P
6.then T
【0028】
この発明では、「4.」「5.」において行われる楕円加算を効率良く行うことにより、楕円スカラー倍演算全体の処理速度を上げようとする。以下、点P(X1,Y1,1)∈E(F3^m)と点Q(X2,Y2,Z2)∈E(F3^m)とを楕円加算して、点R(X3,Y3,Z3)∈E(F3^m)を効率良く求める方法について説明する。X1,Y1,X2,Y2,Z2,X3,Y3,Z3のそれぞれは、有限体F3^mの元である。上記のようにZ1=1であり、楕円スカラー倍演算を行う対象である点が点P(X1,Y1,1)である場合には、非特許文献2に記載されている下記の楕円加算は、図10に示した乗算スケジュールにより効率良く行うことができる。
【0029】
1.A=X1Z2−X2
2.B=Y1Z2−Y2
3.C=A3
4.D=C2−B2Z2
5.X3=X2C−AD
6.Y3=BD−Y2C
7.Z3=CZ2
【0030】
<ステップS1>
第一演算部1(図1)は、Z2についての事前演算結果Z2’を求め、その事前演算結果Z2’を用いてX1Z2について多項式乗算することにより、A=X1Z2−X2を演算する(ステップS1)。第一演算部1は、第一事前演算部11、第一事前演算結果記憶部12、第一多項式乗算部13及び第一加算部14を備える。
【0031】
まず、第一事前演算部11は、Z2についての事前演算を行い事前演算結果Z2’を生成する。事前演算結果Z2’は、第一事前演算結果記憶部12に記憶される。第一多項式乗算部13は、第一事前演算結果記憶部12から読み込んだ事前演算結果Z2’を用いて、X1Z2を多項式乗算する。生成されたX1Z2は、第一加算部に送られる。第一加算部14は、生成されたX1Z2とX2とを用いて、A=X1Z2−X2を演算する。
【0032】
<ステップS2>
第二演算部2(図2)は、事前演算結果Z2’を用いてY1Z2について多項式乗算することにより、B=Y1Z2−Y2を演算する(ステップS2)。
【0033】
第二多項式乗算部21は、第一事前演算結果記憶部12から読み込んだ事前演算結果Z2’を用いて、Y1Z2について多項式乗算する。生成されたY1Z2は、第二加算部22に送られる。第二加算部22は、生成されたY1Z2とY2とを用いて、B=Y1Z2−Y2を演算する。
【0034】
<ステップS3>
第三演算部3(図3)は、C=A3を演算する(ステップS3)。楕円三乗算はフロベニウスマップを用いて高速に演算することができる。
【0035】
<ステップS4>
第四演算部4(図4)は、Bについての事前演算結果B’を求め、その事前演算結果B’を用いてt1=B2を多項式乗算し、上記事前演算結果Z2’を用いてt1Z2を多項式乗算することにより、D=C−B2Z2を演算する(ステップS4)。
【0036】
第四事前演算部41は、Bについての事前演算を行い事前演算結果B’を生成する。事前演算結果B’は、第四事前演算結果記憶部42に記憶される。第四A多項式乗算部43は、事前演算結果B’を用いて、B2を演算する。第四B多項式乗算部44は、第一事前演算結果記憶部12から読み込んだZ2’とB2とを用いて、B2Z2について多項式乗算を行う。第四加算部45は、生成されたB2Z2とCとを用いて、D=C−B2Z2を演算する。
【0037】
<ステップS5>
第五演算部5(図5)は、Cについての事前演算結果C’を求め、その事前演算結果C’を用いてX2Cを多項式乗算し、A又はDについての事前演算結果A’又はD’を求め、その事前演算結果A’又はD’を用いてADを多項式乗算することにより、X3=X2C−ADを演算する(ステップS5)。
【0038】
第五A事前演算部51は、Cについて事前演算を行い事前演算結果C’を求める。事前演算結果Cは、第五A事前演算結果記憶部52に記憶される。第五A多項式乗算部53は、第五A事前演算結果記憶部52から読み込んだC’を用いて、X2Cについて多項式乗算を行う。X2Cは、第五加算部57に送られる。
【0039】
第五B事前演算部54は、A又はDについて事前演算を行い、事前演算結果A’又は事前演算結果D’を生成する。事前演算結果A’又は事前演算結果D’は、第五B事前演算結果記憶部55に記憶させる。第五B多項式乗算部56は、第五B事前演算結果記憶部55から読み込んだ事前演算結果A’又はD’を用いて、ADについて多項式乗算する。ADは、第五加算部57に送られる。
第五加算部57は、X3C及びADを用いて、X3=X2C−ADを演算する。
【0040】
<ステップS6>
第六演算部6(図6)は、事前演算結果B’又はD’を用いてBDを多項式乗算し、上記事前演算結果C’を用いてY2Cを多項式乗算することにより、Y3=BD−Y2Cを演算する(ステップS6)。
【0041】
第六A多項式乗算部61は、第四事前演算結果記憶部42から読み込んだ事前演算結果B’を用いて、BDについて多項式乗算する。BDは、第六加算部63に送られる。なお、図6において破線で示すように、第六A多項式乗算部61は、第五B事前演算結果記憶部55から読み込んだ事前演算結果D’を用いて、BDについて多項式乗算してもよい。
【0042】
第六B多項式乗算部62は、第五A事前演算結果記憶部52から読み込んだ事前演算結果C’を用いて、Y2Cについて多項式乗算する。Y2Cは、第六加算部63に送られる。
第六加算部63は、BDとY2Cを用いて、Y3=BD−Y2Cを演算する。
【0043】
<ステップS7>
第七演算部7(図7)は、事前演算結果Z2’又はC’を用いて、CZ2を多項式乗算することにより、Z3=CZ2を演算する(ステップS7)。
【0044】
第七多項式乗算部71は、CZ2を多項式乗算する際に、第一事前演算結果記憶部12から読み込んだ事前演算結果Z2’を用いても良いし、図7に破線で示すように、第五A事前演算結果記憶部52から読み込んだ事前演算結果C’を用いてもよい。
【0045】
なお、リダクションについてはふれていないが、リダクション部400(図10)が適宜所定の既約多項式f(x)を用いてリダクションを行うものとする。
【0046】
このように、ある乗数について乗算する際に生成された事前演算結果を記憶しておき、その乗数と同一の乗数について多項式乗算をする際に既に生成されたその事前演算結果を再利用することにより、事前演算の回数を少なくすることができる。
【0047】
従来は、多項式乗算をする度に事前計算を行っていた。したがって、事前演算は、多項式乗算の回数と同一の回数である9回行っていた。この発明により、図10に示すように事前演算の回数は4回となる。したがって、楕円加算の処理速度、ひいては楕円スカラー倍演算の処理速度が従来よりも上がる。
【0048】
なお、点P(X1,Y1,Z1)∈E(F3^m)を3倍した点R(X3,Y3,Z3)を求める楕円三倍算アルゴリズムを以下に例示する。bは±1である。楕円三倍算部200はこのアルゴリズムを実行することにより楕円三倍算を行う。
1.X3=X19−bZ19
2.Y3=−Y19
3.Z3=−Z19
【0049】
楕円スカラー倍演算装置は、単一の事前演算部101、事前演算結果記憶部102、多項式乗算部103及び加算部104を有していても良い。この場合の楕円スカラー倍演算装置の機能ブロック図を図8に例示する。楕円スカラー倍演算装置は、楕円加算部100、楕円三倍算部200、記憶部301、通信部302、及び、各部の動作を制御する制御部303、リダクション部400を備える。また、楕円加算部100は、事前演算部101、事前演算結果記憶部102、多項式乗算部103及び加算部104を備える。
【0050】
この場合、事前演算部101が第一事前演算部11、第四事前演算部41、第五A事前演算部51及び第五B事前演算部54として機能し、事前演算結果記憶部102が、第一事前演算結果記憶部12、第四事前演算結果記憶部42、第五A事前演算結果記憶部52及び第五B事前演算結果記憶部55として機能し、多項式乗算部103が第一多項式乗算部13、第二多項式乗算部21、第四A多項式乗算部43、第四B多項式乗算部44、第五A多項式乗算部53、第五B多項式乗算部56、第六A多項式乗算部61、第六B多項式乗算部62及び第七多項式乗算部71として機能し、加算部104が第一加算部14、第二加算部22、第四加算部45、第五加算部57及び第六加算部63として機能する。
【0051】
各部間で直接データがやり取りされてもよいし、記憶部301を介してデータがやり取りされてもよい。
【0052】
楕円スカラー倍演算装置は、コンピュータによって実現することができる。この場合、これらの装置がそれぞれ有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、これらの装置における各処理機能が、コンピュータ上で実現される。
【0053】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、これらの装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【0054】
この発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【0055】
1 第一演算部
2 第二演算部
3 第三演算部
4 第四演算部
5 第五演算部
6 第六演算部
7 第七演算部
100 楕円加算部
101 事前演算部
102 事前演算結果記憶部
103 多項式乗算部
104 加算部
200 楕円三倍算部
【特許請求の範囲】
【請求項1】
標数3の有限体F3^m上定義されたprojective座標上の超特異楕円曲線上の点P(X1,Y1,1)の楕円スカラー倍演算を、楕円三倍算と楕円加算とを用いて行う楕円スカラー倍演算装置において、
上記楕円加算は、上記超特異楕円曲線上の、点P(X1,Y1,1)と点(X2,Y2,Z2)とを加算した点(X3,Y3,Z3)を演算するものであり、
Z2についての事前演算結果Z2’を求め、その事前演算結果Z2’を用いてX1Z2について多項式乗算することにより、A=X1Z2−X2を演算する第一演算部と、
上記事前演算結果Z2’を用いてY1Z2について多項式乗算することにより、B=Y1Z2−Y2を演算する第二演算部と、
C=A3を演算する第三演算部と、
Bについての事前演算結果B’を求め、その事前演算結果B’を用いてt1=B2を多項式乗算し、上記事前演算結果Z2’を用いてt1Z2を多項式乗算することにより、D=C−B2Z2を演算する第四演算部と、
Cについての事前演算結果C’を求め、その事前演算結果C’を用いてX2Cを多項式乗算し、A又はDについての事前演算結果A’又はD’を求め、その事前演算結果A’又はD’を用いてADを多項式乗算することにより、X3=X2C−ADを演算する第五演算部と、
上記事前演算結果B’又はD’を用いてBDを多項式乗算し、上記事前演算結果C’を用いてY2Cを多項式乗算することにより、Y3=BD−Y2Cを演算する第六演算部と、
上記事前演算結果Z2’又はC’を用いて、CZ2を多項式乗算することにより、Z3=CZ2を演算する第七演算部と、
を含む楕円スカラー倍演算装置。
【請求項2】
標数3の有限体F3^m上定義されたprojective座標上の超特異楕円曲線上の点P(X1,Y1,1)の楕円スカラー倍演算を、楕円三倍算と楕円加算とを用いて行う楕円スカラー倍演算方法において、
上記楕円加算は、上記超特異楕円曲線上の、点P(X1,Y1,1)と点(X2,Y2,Z2)とを加算した点(X3,Y3,Z3)を演算するものであり、
Z2についての事前演算結果Z2’を求め、その事前演算結果Z2’を用いてX1Z2について多項式乗算することにより、A=X1Z2−X2を演算する第一演算ステップと、
上記事前演算結果Z2’を用いてY1Z2について多項式乗算することにより、B=Y1Z2−Y2を演算する第二演算ステップと、
C=A3を演算する第三演算ステップと、
Bについての事前演算結果B’を求め、その事前演算結果B’を用いてt1=B2を多項式乗算し、上記事前演算結果Z2’を用いてt1Z2を多項式乗算することにより、D=C−B2Z2を演算する第四演算ステップと、
Cについての事前演算結果C’を求め、その事前演算結果C’を用いてX2Cを多項式乗算し、A又はDについての事前演算結果A’又はD’を求め、その事前演算結果A’又はD’を用いてADを多項式乗算することにより、X3=X2C−ADを演算する第五演算ステップと、
上記事前演算結果B’又はD’を用いてBDを多項式乗算し、上記事前演算結果C’を用いてY2Cを多項式乗算することにより、Y3=BD−Y2Cを演算する第六演算ステップと、
上記事前演算結果Z2’又はC’を用いて、CZ2を多項式乗算することにより、Z3=CZ2を演算する第七演算ステップと、
を含む楕円スカラー倍演算方法。
【請求項3】
請求項1に記載の楕円スカラー倍演算装置としてコンピュータを機能させるための楕円スカラー倍演算プログラム。
【請求項1】
標数3の有限体F3^m上定義されたprojective座標上の超特異楕円曲線上の点P(X1,Y1,1)の楕円スカラー倍演算を、楕円三倍算と楕円加算とを用いて行う楕円スカラー倍演算装置において、
上記楕円加算は、上記超特異楕円曲線上の、点P(X1,Y1,1)と点(X2,Y2,Z2)とを加算した点(X3,Y3,Z3)を演算するものであり、
Z2についての事前演算結果Z2’を求め、その事前演算結果Z2’を用いてX1Z2について多項式乗算することにより、A=X1Z2−X2を演算する第一演算部と、
上記事前演算結果Z2’を用いてY1Z2について多項式乗算することにより、B=Y1Z2−Y2を演算する第二演算部と、
C=A3を演算する第三演算部と、
Bについての事前演算結果B’を求め、その事前演算結果B’を用いてt1=B2を多項式乗算し、上記事前演算結果Z2’を用いてt1Z2を多項式乗算することにより、D=C−B2Z2を演算する第四演算部と、
Cについての事前演算結果C’を求め、その事前演算結果C’を用いてX2Cを多項式乗算し、A又はDについての事前演算結果A’又はD’を求め、その事前演算結果A’又はD’を用いてADを多項式乗算することにより、X3=X2C−ADを演算する第五演算部と、
上記事前演算結果B’又はD’を用いてBDを多項式乗算し、上記事前演算結果C’を用いてY2Cを多項式乗算することにより、Y3=BD−Y2Cを演算する第六演算部と、
上記事前演算結果Z2’又はC’を用いて、CZ2を多項式乗算することにより、Z3=CZ2を演算する第七演算部と、
を含む楕円スカラー倍演算装置。
【請求項2】
標数3の有限体F3^m上定義されたprojective座標上の超特異楕円曲線上の点P(X1,Y1,1)の楕円スカラー倍演算を、楕円三倍算と楕円加算とを用いて行う楕円スカラー倍演算方法において、
上記楕円加算は、上記超特異楕円曲線上の、点P(X1,Y1,1)と点(X2,Y2,Z2)とを加算した点(X3,Y3,Z3)を演算するものであり、
Z2についての事前演算結果Z2’を求め、その事前演算結果Z2’を用いてX1Z2について多項式乗算することにより、A=X1Z2−X2を演算する第一演算ステップと、
上記事前演算結果Z2’を用いてY1Z2について多項式乗算することにより、B=Y1Z2−Y2を演算する第二演算ステップと、
C=A3を演算する第三演算ステップと、
Bについての事前演算結果B’を求め、その事前演算結果B’を用いてt1=B2を多項式乗算し、上記事前演算結果Z2’を用いてt1Z2を多項式乗算することにより、D=C−B2Z2を演算する第四演算ステップと、
Cについての事前演算結果C’を求め、その事前演算結果C’を用いてX2Cを多項式乗算し、A又はDについての事前演算結果A’又はD’を求め、その事前演算結果A’又はD’を用いてADを多項式乗算することにより、X3=X2C−ADを演算する第五演算ステップと、
上記事前演算結果B’又はD’を用いてBDを多項式乗算し、上記事前演算結果C’を用いてY2Cを多項式乗算することにより、Y3=BD−Y2Cを演算する第六演算ステップと、
上記事前演算結果Z2’又はC’を用いて、CZ2を多項式乗算することにより、Z3=CZ2を演算する第七演算ステップと、
を含む楕円スカラー倍演算方法。
【請求項3】
請求項1に記載の楕円スカラー倍演算装置としてコンピュータを機能させるための楕円スカラー倍演算プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2010−164878(P2010−164878A)
【公開日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願番号】特願2009−8577(P2009−8577)
【出願日】平成21年1月19日(2009.1.19)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願日】平成21年1月19日(2009.1.19)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]