JP3604126B2 - 循環窓加算装置、その方法及びそのプログラム記録媒体 - Google Patents
循環窓加算装置、その方法及びそのプログラム記録媒体 Download PDFInfo
- Publication number
- JP3604126B2 JP3604126B2 JP2000229611A JP2000229611A JP3604126B2 JP 3604126 B2 JP3604126 B2 JP 3604126B2 JP 2000229611 A JP2000229611 A JP 2000229611A JP 2000229611 A JP2000229611 A JP 2000229611A JP 3604126 B2 JP3604126 B2 JP 3604126B2
- Authority
- JP
- Japan
- Prior art keywords
- unit
- storage unit
- calculating
- updated
- calculation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
この発明は、例えば情報セキュリティ技術で用いられる楕円暗号に適用され、Z加群M上の元Pをスカラーk(∈Z)倍する循環窓加算装置、その方法及びそのプログラム記録媒体に関する。
【0002】
【従来の技術】
近年、インターネットなどの発達により様々な情報を公衆回線を用い、やり取りすることが増えた。公衆回線は誰でも利用できることから中継情報の盗聴・改竄(かいざん)などを容易に行なうことができる。盗聴のような悪意ある行動に対抗するためには情報セキュリティ(安全性)技術が有効である。
従来、情報セキュリティ技術の実現に冪乗剰余演算がよく用いられてきたが、近年、鍵と呼ばれる秘密に保持すべき情報を少なくできることや、高速性などから有限体上の楕円曲線のなす群を用いた方式、すなわち楕円暗号が注目されている。
【0003】
暗号に用いる楕円曲線は定義体と呼ばれる有限体GF(q)上で定義される楕円曲線E/GF(q)の、GF(qm )有理点からなる群E(GF(qm ))を用いることが殆んどである。
楕円暗号の殆んどは、群E(GF(qm ))をZ加群とみなし、このZ加群上のスカラー倍演算、つまり楕円曲線上の点P∈E(GF(qm ))とスカラーk∈Zに対してkPを求めること、を多用することにより実現している。そのため、スカラー倍演算を高速に実現する研究が数多く行なわれてきた。
【0004】
ソフトウェアでスカラー倍を高速に実現する方法として文献「Neal Koblitz:“CM−CURVES WITH GOOD CRYPTOGRAPHIC PROPERTIES,”Advances in Cryptology−CRYPTO’91,Lecture Notes in Computer Science 576,pp.279−287,Springer−Verlag,1992」(以下「文献C」と略す)で提案されたφ進展開法が有力である。φ進展開法は、楕円曲線E/GF(q)上のFrobenius写像と呼ばれる自己準同型写像
φ:E(GF(qm ))→E(GF(qm ))
∀P,Q∈E(GF(qm ))[φ(P+Q)=φ(P)+φ(Q)]
(なお∀x F(x)はすべてのxに対してF(x)を意味する)
を利用する。楕円2倍算より高速な楕円φ倍算を、2倍算の代わりに使うことによりスカラー倍を高速化する。
【0005】
文献Cの方法では利用できる定義体としてGF(2)が用いられたが、文献「Volker Mueller:“Fast Multiplication on Elliptic Curves over Small Fields of Characteristic Two,”pp.219−234, Journal of Cryptologoy,no.4,vol.11, Springer,1998」で、q=2e (eは小)に拡張され、さらに文献「Tetsutarou Kobayashi, et al.:“Fast Elliptic Curve Algorithm Combining Frobenius Map and Table Reference to Adapt to Higher Characteristic,”Advances in Cryptology−EUROCRYPT ’99,Lecture Notes in Computer Science 1592,pp.176−189,Springer−Verlag,1999」(以下「文献E」と略す)で、qが一般の場合に拡張された。
【0006】
上記φ進展開法の概要は以下の通りである。
Step1:kをφ進展開する。つまり、
k=Σi=0 m’−1Σj=0 n’−1ci,j 2j φi (ci,j ∈{−1,0,1}) (1)
を満たす{ci,j }を求める。
Step2:式(1)を利用し
を求める。
【0007】
式(1)は、「k倍演算」という意味でのE(GF(qm ))上の自己準同型写像としての等号である。また、m′≧2、n′≧1である。この発明ではφ進展開しか扱わないので、φ進展開となっていないm′=1の場合は扱わない。
Step2の具体的な計算については、{ci,j }の構造により様々な最適化手法がある。文献Eの方法は次の通りである。式(2)は有限和であることからΣの順序を換えても結果は変わらない。従って、
kP=Σj=0 n’−12j Σi=0 m’−1ci,j φi (P)
となる。この式から、以下の処理が導かれる。
【0008】
Step1:R←Ο,j←n′−1に初期化。
Step2:i=0,1,…,m′−1に対して、
R←R+φi (P)ci,j =1の場合
R←R−φi (P)ci,j =−1の場合
何もしない ci,j =0の場合
とする。
【0009】
Step3:j=0ならR(=kP)を出力して終了。j>0なら
R←2R, j←j−1
とし、Step2に戻る。
ここでΟはE(GF(qm ))の単位元を表す。
この文献Eの方法は、式(1)で、一様にランダムなkに対しci,j ≠0となるci,j を平均的には全体の約1/3にできることがわかっているのでこの場合の平均計算量は以下の通りである。
【0010】
楕円加減算 m′n′/3回
楕円2倍算 n′−1回
なお、φi 倍は高速に計算可能であるから上記計算量に含めていない。
【0011】
【発明が解決しようとする課題】
文献Eの方法のStep2では、異なるjに対して、全く同じ加算、例えば、
R←R+(φ1 (P)+φ2 (P))
を複数回行なうことがある。冗長な同じ加算を行なわないようにするためには、上記例の場合一旦φ1 (P)+φ2 (P)を計算し記録しておき、φ1 (P)+φ2 (P)が必要になったときにこの記録された値を読みだしてRに加算することにより冗長な加算を行なわないようにすることができる。
【0012】
一般的に冗長な加算を行なわないためにはStep2より前に、あり得る全ての
【0013】
【数1】
【0014】
を計算しておくことが考えられるが、この計算自体に時間がかかってしまい、結果として全体の計算が遅くなってしまう。
この発明の目的は、φ進展開法を用いてPをk倍演算する際に冗長な加算を効率的に減らすことができる循環窓加算装置、その方法及びそのプログラム記録媒体を提供することにある。
【0015】
【課題を解決するための手段】
【0016】
【数2】
【0017】
【発明の実施の形態】
以下ではこの発明の実施例を示す。
第1の実施例[一般]
図1にこの発明による循環窓加算装置であるスカラー倍装置10の実施例を示す。この装置10は、φ倍及びd倍演算を有するZ加群M上の元Pとスカラーk∈Zを入力し、スカラー倍kPを出力する。二つの値例えばPとQが入力されてP+Q又はP−Qを出力する加減算部11、Pが入力されてそのd倍値dPを出力するd倍演算部12、iとPが入力されてφi(P)を出力するφi倍演算部13、記憶部14、kが入力されて{ci,j }を出力するφ進展開部15が制御部16に接続され、制御部16はこの装置10に入力されたk,Pを記憶部14に格納し、記憶部14から所要のデータを取出して、各部へ入力させて、所望の処理を行わせ、その結果(出力)を記憶部に格納して、各部を制御してkP値を得て出力する。
【0018】
図1中の各部はMに合わせて設定されているものとする。このスカラー倍装置10を機能的に表わすと図2に示すようになる。つまりd倍演算部12、記憶部14、φ進展開部15、制御部16を同様に備えるが、Qb演算部21、探索部22、ci,j更新部23、R更新部24が設けられる。
この発明では、QbをQb演算部21で演算し、このQbを利用して、演算を簡単にしている。従って、まずQbはどのようなものであるかを以下に示す。
【0019】
Log30=−1とし、以下のベクトルを定義する。
Φb ={φh }h=0 B+1=(φ0 ,φ1 ,…,φB+1 )
vb ={vb,h }h=0 B+1=(vb,0 ,vb,1 ,…,vb,B+1 )
但し、B=[log3 b]、つまりBはlog3 bの小数以下を切捨てたものである。
h=0の場合 vb,h =1
h≠0の場合 vb,h =[b/(3h−1 )]mod3
とする。ここで剰余modは0,1,−1を取るものとする。つまり2の代りに−1とおいた。
【0020】
また、vbとΦb の形式的内積vb・Φb を以下の通り定義する。
vb・Φb =Σh=0 B+1vb,h φh
さらに、
Qb =(vb・Φb )(P)
wH (vb )=Σh=0 B+1|vb,h |
とおく。
【0021】
図1及び図2に示したスカラー倍装置は、以下の通り動作する。また、この動作の流れを図3に示す。
Step1:Z加群M上の元Pとスカラーkが入力されると記憶部14に格納する。
Step2:φ進展開部15はkを入力し
k=Σi=0 m’−1Σj=0 n’−1ci,j dj φi (ci,j ∈{−1,0,1})
を満たす{ci,j }を求めて出力し、{ci,j }は記憶部14に格納される。
【0022】
Step3:いくつかのbに対して、加減算部11、φi 倍演算部13を用いてQb 演算部21でそれぞれのQb を計算し、これらQb とその計算に用いたvb を記憶部14に記憶する。但し、Q0 は必ず準備する。このQ0 はQb の定義からPに等しい。
Step4:R←Ο,j←n′−1に初期化し、記憶部14に記憶する。
Step5:{ci,j }i=0 m’−1(=(c0,j ,c1,j,…,cm’−1,j))に±1が含まれている間、以下を繰り返す。
【0023】
Step5−1:まず{ci,j }i=0 m’−1に±1が含まれているかを調べ、含まれていればStep5−2に移り、含まれていなければStep6に移る。
Step5−2:記憶部14に記憶されているQb に対しwH (vb )の大きな順に、各vb についてvb,h ≠0の全てのh(0≦h≦B+1)に対して、
ci+h,j=(−1)e vb,h
となるb,e,iを探す。eは0又は1である。
【0024】
つまり、まずj=n′−1であるから、係数ci,jは図4に示すように、m′×n′個あり、そのj=n′−1のベクトル{ci,n’−1 }i=0 m’−1=(c0, n’ −1,c1,n’−1 ,c2,n’−1 ,…,cm’−1, n’−1 )を記憶部14から取出し、また、wH(vb)の大きい順、つまり1と−1の数が多い順にvbを取出し、vb,0,vb,1,vb,2,…,vb,B−1その1又は−1、つまり0以外のもの(e=0)又はその符号を反転したもの(e=1)についてその配列位置を保持した状態で、{ci,n’−1 }i=0 m’−1の配列中に同一のものが存在するかを、i=0から始まる配列から、順次iを+1した配列と比較して探し、存在すればその時のiの値と、eの値と、vbのbを出力する。例えばci,n’−1 が図5Aに示す列であり、vbが図5Bに示すようにv12=(1,0,0,−1)である場合に、このv12の始めをci,n’−1 のi=0に合せて(図5B)、vb,h≠0が全て一致しているかを調べ、一致していないので図5Cに示すようにci,n’−1 のi=1にvbの始めを合せて比較し、一致していないので図5Dに示すようにci,n’−1 のi=2にvbの始めを合わせてる。この時vb中のvb,0=1とvb,3=−1とが{ci,n’−1 }中のc2,n’−1 =1、c5,n’−1 =−1とそれぞれ一致する。これによりそのbとe=0とi=2で一致が見い出されたことになる。
【0025】
このように一致するか否かをiの値を順次ずらして行う。一致するものが存在しなければ、Step5−2に戻り、次にwH(vb)の大きいvbについて同様に、一致するものを探す。このb,e,iの探索は図2中の探索部22で行う。なおvbの取出しは、wH(vb)の大きい順から行わなくてもよいが、wH(vb)の大きな順から行った方が効率がよいことが多い。
Step5−3:Step5−2でb,e,iが見つかった場合、
・ci+h,j←ci+h,j−(−1)e vb,h 0≦h≦[log3 b]+1となる全てのh
例えば、図5Bに示すようなvb=(1,0,0,−1)について、図5Aに示すようなあるjに対する{ci,j }i=0 m’−1のi=2、e=0でvbのvb,h≠0の要素が一致した場合に、その{ci,j }i=0 m’−1から一致した部分のvb,h≠0を引いて0として図5Eに示すように{ci,j }i=0 m−1を更新する。この更新は図2中のci,j更新部23で行う。
・R←R+(−1)e φi (Qb )
をφi 倍演算部13、加減算部11を用いて、つまり図2中のR更新部24で計算して記憶部14中のRを更新する。図5に示した例ではi=2でvb と一致が得られたのであるからQb にφ2をほどこしたものを記憶部14中のRに加算すればよい。Step5−3が終了すると、Step5−1に戻り同様のことを行う。取出したj=n′−1の係数列{ci,j }i=0 m’−1に±1がなくなれば、その列に対するΣi=0 m’−1ci,j φi (P)の計算がなされたことになる。
【0026】
Step6−1:j=0であるかを調べ、
Step6−2:j=0ならR(=kP)を出力して終了。
Step6−3:j>0ならd倍演算部12を用いてRをd倍してR←dRと更新し、またjも−1して、つまりj←j−1と更新してStep5に戻る。即ちj=n′−2について、Step5の処理を行い、これが終了した時は(Σi=0 m’−1ci, n’−1 dn’−1φi (P))+(Σi=0 m’−1ci,n’−2dn’−2φi(P))が求まり、以下同様のことを繰り返してkP=Σj=0 n’−1 Σi=0 m’−1ci,jdiφi(P)が求まる。
【0027】
以上のようにして予め求めたQb を何回も利用すればする程、文献Eの方法よりも計算量が少なくて済む。
上記Step5−2について、b,e,iはこのStepに書いてある条件の範囲内でどのように探してもよいが、より具体的には例えば以下のように探すこともできる(図6参照)。
記憶部14に記憶されているQb のvb について、wH (vb )の大きな順に並べた集合を{b1 ,b2 ,…,bs }とする。
【0028】
S−1.r←0に初期化する。
S−2.i←0に初期化する。
S−3.e←0に初期化する。
S−4.vbr,h≠0となる全てのh(0≦h≦[log3 br ]+1)に対し、ci+h,j
=(−1)e vbr,hとなればその時のb=br ,i,eを出力して終了。
【0029】
S−5.S−4で一致が得られなければe←e+1とし、e<2であれば、S−4に戻る。
S−6.S−5でe<2でなければi←i+1とし、i<m′であれば、S−3に戻る。
S−7.S−6でi<m′でなければr←r+1とし、r≦sであれば、S−2に戻る。
第2の実施例[ window size 小]
第1の実施例のStep3のいくつかのbとして、小さい順に選ぶ。
【0030】
この実施例は、m′が有限であり、かつ非ゼロのci,j が少ない場合に、bが大きいものはStep5−2でマッチする確率が低いので、bとして小さい順、例えば1,2,3,…に選ぶことが有効である。
さらに、それぞれのbに対するQb を計算する際に、既に計算したQb’に対し
∃b’<b[wH (vb’−vb )=1]
であるので、つまりvb’とvb との差のハミング重みが1となるものが必ず存在するので、Qb’に(−1)eφi(P)を加算することによりQb を計算できる。よってQbの計算量を削減できる。
【0031】
このQbの計算手順は例えば図7に示すように、まずbを小さい順に並べ(S1)、次にその並べた順に小さい方から1つbを選択し(S2)、その選択したbのvbと、既に計算したQb’のvb’とのベクトル差のハミング重みが1となるかを確め(S3)、前記ハミング重みが1となれば、そのvb’について既に計算したQb’に(−1)eφi(P)を加算してQbを求める(S4)。Qbの計算後、全てのbを選択したかを調べ、また選択していないbがあればステップS2に戻り、全て選択し、全てのQbを求めたならば終了する(S5)。
【0032】
なお一般にQbを求める際に、既に求まっているQb’に対し(−1)eφi(P)を加算することにより計算量を削減できる。例えば図7中のステップS3で∃Qb’,e,i[Qb=Qb’+(−1)eφi(P)](b′<b)となるQb’があるかを調べ、Qb’があればQb=Qb’+(−1)eφi(P)によりQb を求める。例えばQ1 =P+φPであり、Q7 =P+φP−φ2 Pであるが、Q7 の計算をQ7 =Q1+(−1)1φ2 Pの計算により求める。
第3の実施例[w H (b) + window size 小]
第1の実施例のStep3のいくつかのbとして、wH(vb)+log2(b)の小さい順に選ぶ。この場合logの値として2に限らず、3、5などでもよく、要はvbのハミング重みと、vbの要素数とを重み付けて加算し、その小さい順にbを選べばよい。つまりvbの要素数[log3 b]+1が大でもその要素vb,h中に0のものを多く含む場合はQbを求めておき、これを利用してもkPの計算の量の削減に大きく寄与しない。その点でwH(vb)が大きくかつlog2(b)が小さい方がよい。この場合はwH(vb)+log2(b)の小さい順に並べ図7に示したと同様の手順でQbを求めることができる。
第4の実施例[φ m =1(楕円曲線)]
計算対象のZ加群MとP(∈M)によっては、φm(P)=Pを満たす場合がある。この場合は、m′=mととることができる。一般にはb≠b′に対して、
∀i≠0[Qb≠φi(Qb’)]
である。つまり全てのi≠0に対し、Qb=φi(Qb’)となるものはない。しかしφm(P)=Pのときは、
∃i≠0[Qb=φi(Qb’)]
となることがある。即ちQb=φi(Qb’)となるiが存在する。
【0033】
従って、第1の実施例のStep3で、Qbを求める際に、
Qb=φi(Qb’)
なる、QbおよびQb’については、そのいずれか一方を計算すれば十分であるので、片方だけ計算する。但し、Step5で用いられるci,jの最初の添字iはmod m′で考える。
所でQb,Qb’の一方の計算で済ませるためには、各vbについて次のような計算をする。vb=(v0,v1,…,vB+1)に対し、φ(vb)は(vB+1,v0,v1,…,vB)=vb’となる。従ってvb’=φi(vb)なる関係があるvbとvb’を予め調べ、この関係があるものについてはQb又はQb’を計算すればよい。このような関係vb’=φi(vb)=φi’(vb’’)になるように、2つ以上のvb が、φi倍の関係にある場合があり、これらの関係のある複数のvb中の1つのbについてQb を求めればよい。なおQbを計算と比較して、前記vb’=φi(vb)の関係があるか否かを調べる計算は頗る簡単で、高速に行うことができる。
第5の実施例[ non−signed (楕円曲線)]
第1の実施例ではci,jの符号に制限を設けなかったが、Z加群によっては、Step2で、それぞれのjに対し、
∀i[ci,j ≧0]
つまり1つのjについてみるとci,jは1又は0,または
∀i[ci,j ≦0]
つまりそのiについてはci,jは−1又は0と取れることが全てのjについて云える。即ち各jについてみるとci,jは同一符号に取れる。この場合は、Step3のQb(=vb・Φb)として
∀h[vb,h≧0]
つまりvb,hが1又は0からのみなるものを選べば十分である。
【0034】
即ちvb,h=−1を含むvbは用いない。
このようにすることによりci,jが−1,0,1の何れをも取れる場合と比較して計算量を著しく少くすることができる。
第6の実施例[mが小]
第4及び第5の実施例が共に適用できるような場合、つまりφm(P)=P、かつそれぞれのjについてみるとci,jは同一符号である場合で、更に
wH({ci,j }i=0 m−1)=wH((c0,j,c1,j,…,cm−1,j))≦m/2
と{ci,j }が取れて、つまり各jに対し{ci,j }中の0の数が半分より多く、かつmが、例えば32以下、d=1の場合はmが256以下のように小さい場合は、第1の実施例のStep3で、以下のようにあり得る全てのQbを計算しておくと有利である。例えば、楕円曲線上の多くの点Pでは、
(1+φ+…+φm−1 )(P)=0
を満たすので、wH({ci,j }i=0 m−1)=wH((c0,j,c1,j,…,cm−1,j))≦m/2とでき、この発明の有効性が増す。
【0035】
m=2,3の場合
Q0=P
m=4,5の場合
Q0 =P
Q1 =(1+φ)(P)
Q3 =(1+φ2 )(P)
m=6,7の場合
Q0 =P
Q1 =(1+φ)P
Q3 =(1+φ2 )(P)
Q4 =(1+φ+φ2 )(P)
Q9 =(1+φ3 )(P)
Q10=(1+φ+φ3 )(P)
Q28=(1+φ+φ4 )(P)
Q30=(1+φ2 +φ4 )(P)
以上の各Qの1つ乃至複数をφ倍したものでもよい。
第7の実施例[適応的]
第1の実施例のStep3で、どのbに対応するQbを計算するかについて、Step2によって定められたci,jを調べStep5で2回以上利用されるQbについて計算する。
第8の実施例[P固定]
第1の実施例で、予め入力されるPが既知の場合、Step3を実行せず、予め記憶装置が許す限りのQb について事前に計算しておく。
【0036】
以上の実施例は部分体GF(q)上定義される楕円曲線のGF(qm )有理点のなす群E(GF(qm ))/GF(q)について、m′=m,n′=[log2 q]+1,d=2とでき、非常に効果を発揮する。この[log2 q]はlog2 qの小数を切上げた整数である。
上述したこの発明のスカラー倍装置はコンピュータにより機能させることもできる。その場合は例えば図8に示すように、P,kなどが入力され、kPが出力される入出力部31、楕円パラメータm,q,dとbの集合などが記憶された記憶部32、φ進展開展プログラムが格納されたメモリ33、Qbを演算するプログラムが格納されたメモリ34、φi倍演算を行うプログラムが格納されたメモリ35、d倍演算を行うプログラムが格納されたメモリ36、加減算を行うプログラムが格納されたメモリ37、これらプログラムを用いてkP演算を行うプログラムが格納されたメモリ38、プロセッサ39がバス41に接続され、プロセッサ39により、これらのプログラムを実行してスカラー倍演算を行う。なおこの発明は楕円曲線上の演算に限らず、一般にZ加群M上の元Pをスカラーk(∈Z)倍する方法に適用できる。
【0037】
【発明の効果】
この発明により、楕円曲線E(GF(pm ))/GF(p)上の点のスカラー倍の計算は、例えば第6の実施例のm=7,p=229−3の場合、文献Eの方法に比べて下記に示すように、楕円加減算を約半分に削減できる。
例えば、楕円加減算と楕円2倍算の速度が等しい場合には、全体として約1.7倍の高速化が計られたことになる。
【0038】
なお、この様な楕円曲線は実際に楕円曲線暗号として使われている。
【図面の簡単な説明】
【図1】この発明装置の実施例を示すブロック図。
【図2】この発明装置を機能的に示すブロック図。
【図3】この発明装置の動作手順の例を示す流れ図。
【図4】φ進展開係数の例を示す図。
【図5】係数ci,jの更新を説明するための図。
【図6】vb中のvb,h≠0の全てがci,jの列の一部と一致している部分を探す手順の例を示す流れ図。
【図7】第2の実施例を説明するための流れ図。
【図8】この発明装置をコンピュータにより構成する場合の例を示す図。
Claims (15)
- 整数dと非負整数bの集合が格納された記憶部と、
kが入力されて、
k=Σi=0 n’−1Σj=0 m’−1ci,j dj φi
ただしci,j ∈{−1,0,1}、φはZ加群M上の自己準同型写像
を満す{ci,j }を求めて出力するφ進展開部と、
上記複数のbとPが入力され、複数のQb =(vb ・Φb )(P)を演算して出力するQb 演算部と、
ただしΦb ={φh }h=0 B+1=(φ0 ,φ1 ,…,φB+1 )
B=[log3 b]([a]はaの小数切捨を意味する)
vb ={vb,h }h=0 B+1=(vb,0 ,vb,1 ,…,vb,B+1)
h=0でvb,h =1、h≠0で[b/3(h−1) ]mod3
log3 0=−1,mod3=2の場合−1とし、
vb ・Φb =Σh=0 B+1vb,h φh
wH (vb )=Σh=0 B+1|vb,h|
Rが入力され、Z加群M上でRをd倍して出力するd倍演算部と、
iとQb が入力され、Z加群M上で、φiQb を演算して出力するφi 倍演算部と、
二つの値が入力され、Z加群M上でこれら入力値を加減算して出力する加減算部と、
外部よりの入力P,kを記憶部に格納し、記憶部から所要のものを読み出して、各部へ入力し、各部の出力を記憶部に格納し、上記加減算部及び上記φi 倍演算部を用いて上記Qb を演算させ、{ci,j }i=0 m’−1に±1が含まれている間、vb,h ≠0となる全てのh(0≦h≦B+1)に対し、ci,j =(−1)e vb,h となるb,e,iを探し、ci+h,j −(−1)e vb,h によりci+h,j を更新し、φi 倍演算部と加減算部を用いてR+(−1)e φi (Qb )を演算させてRを更新することをj=n′−1,n′−2,…,0について行わせ、そのjの更新ごとにRをd倍演算部でd倍してRを更新し、j=0のRをkPの演算結果として出力する制御部と
を具備する循環窓加算装置。 - φm(P)=Pの関係があり、
上記Qb 演算部は上記複数のb中でQb1=φi (Qb2)となるものを予測計算する手段と、
その予測計算されたものについてはQb1とQb2の一方のみを演算する手段とを備えることを特徴とする請求項1記載の循環窓加算装置。 - 上記Qb 演算部は、既に求まっているQb5とPが入力されて
Qb6=Qb5+(−1)e φi (P)
を演算する手段を含む(b6>b5)ことを特徴とする請求項1又は2記載の循環窓加算装置。 - 上記φ進展開部は、各jについてci,j が同一符号のものを求める手段であり、
上記Qb 演算部はvb,h が1又は0であるvb に対しQb を演算する手段であることを特徴とする請求項1乃至3の何れかに記載の循環窓加算装置。 - d倍演算及びφ倍演算を有するZ加群M上の元Pとスカラーk∈Zを入力してスカラー倍kPを出力する方法において、
Pとkが入力されると記憶部に記憶する過程と、
記憶部からkを取出して、
k=Σi=0 n’−1Σj=0 m’−1ci,j dj φi
ただしci,j ∈{−1,0,1}、Z加群M上の自己準同型写像
を満す{ci,j }を求めて記憶部に格納するφ進展開過程と、
複数の非負整数bについてそれぞれQb =(vh ・Φb )(P)を演算し、かつ各vb を記憶部に格納するQb 過程と、
ただしΦb ={φh }h=0 B+1=(φ0 ,φ1 ,…,φB+1 )
B=[log3 b]([a]はaの小数切捨を意味する)
vb ={vb,h }h=0 B+1=(vb,0 ,vb,1 ,…,vb,B+1)
h=0でvb,h =1、h≠0で[b/3(h−1) ]mod3
log3 0=−1,mod3=2の場合−1とし、
vb ・Φb =Σh=0 B+1vb,h φh
wH (vb )=Σh=0 B+1|vb,h|
有限体GF(q)上で定義される楕円曲線E/GF(q)のGF(qm )有理点からなる群E(GF(qm ))の単位元OにRを、n′−1にjをそれぞれ初期化する過程と、
記憶部から{ci,j }i=0 m’−1(=(c0,j ,c1,j,…,cm’−1,j))、vb を取出し、{ci,j }i=0 m’−1に±1が含まれている間、
vb,h≠0となる全てのh(0≦h≦B+1)に対し、
ci+h,j =(−1)e vb,h
となるb,e,iを探し、
bが見つかると0≦h≦B+1となる全てのhに対しci+h,j をci+h,j −(−1)e vb,h と更新し、
記憶部からR,Qb を取出し、
R+(−1)e φi (Qb )を演算してRを更新して記憶部に格納することを繰返す繰返し過程と、
j=0であるか否かを調べるチェック過程と、
j=0でなければ記憶部からRを取出してdRを演算してRを更新して記憶部に格納し、かつ記憶部のjを−1して、更新して上記繰返し処理に戻る過程と、上記チェック処理でj=0と判定されると、上記記憶部からRを取出してkPの演算結果として出力する過程と、
を有することを特徴とする循環窓加算方法。 - φm (P)=Pを満し、
上記Qb 過程の前に、上記複数のb中でQb1=φi (Qb2)となるものを予測計算する過程を有し、
上記Qb 過程は上記予測されたb1 とb2 についてはQb1およびQb2のいずれか一方を求める過程であることを特徴とする請求項6記載の循環窓加算方法。 - 上記Qb 過程は既に求まっているQb5を用いてQb6=Qb5+(−1)e φi (P)を演算してQb6を求める過程を少くとも1つ含むことを特徴とする請求項6又は7記載の循環窓加算方法。
- 上記Qb 過程は、既に求まったQb3のb3 を用いてwH (vb3−vb4)を演算する過程と、
wH (vb3−vb4)が1であるか否か判定する過程と、
この判定が1であればQb4=Qb3+(−1)e φi (P)を演算してQb4を求める過程とを有することを特徴とする請求項8記載の循環窓加算方法。 - 上記Qb 過程は、vb のハミング重みと、vb の要素数とを重み付け加算する過程と、
その加算結果が小さい順にbを選んでQb を求める過程を行わせる過程とを有することを特徴とする請求項6乃至9の何れかに記載の循環窓加算方法。 - 上記φ進展開過程はそれぞれのjに対して∀i [ci,j ≧0]又は∀i [ci,j ≦0]とし、
上記Qb 過程は∀h [vb,h ≧0]のものについてのみ行うことを特徴とする請求項6乃至10の何れかに記載の循環窓加算方法。 - 上記φ進展開過程で得られた{ci,j }中の各j方向における配列で1,−1からなる部分配列が同一のものが2つ以上あるものを探す過程を有し、
上記Qb 過程は上記2つ以上ある部分配列と対応するQbを求める過程であることを特徴とする請求項6乃至9の何れかに記載の循環窓加算方法。 - 上記繰返し過程中の上記b,e,iを探す過程は、wH (vb )の大きい順に並べた集合を{b1 ,b2 ,…,bs }として、
rを0に初期化するr初期化過程と、
iを0に初期化するi初期化過程と、
eを0に初期化するe初期化過程と、
vb,h ≠0となる全てのh(0≦h≦[log3 br ]+1)に対し、ci+h,j =(−1)e vbr,hを探し、見つかればb=br ,i,eを出力して終了する探索過程と、
この探索過程で見つからない場合は、eを+1して更新し、更新したeが2より小さければ探索過程に戻るe更新過程と、
e更新過程において更新したeが2より小さくなければiを+1して更新し、その更新したiがm′より小さければe初期化過程に戻る過程と、
更新したiがm′より小さくなければrを+1して更新し、その更新したrがs以下であればi初期化過程に戻る過程とよりなる
ことを特徴とする請求項6乃至13の何れかに記載の循環窓加算方法。 - 請求項6乃至14の何れかに記載の方法をコンピュータに実行させるためのプログラムを記録した記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000229611A JP3604126B2 (ja) | 2000-07-28 | 2000-07-28 | 循環窓加算装置、その方法及びそのプログラム記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000229611A JP3604126B2 (ja) | 2000-07-28 | 2000-07-28 | 循環窓加算装置、その方法及びそのプログラム記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002040938A JP2002040938A (ja) | 2002-02-08 |
JP3604126B2 true JP3604126B2 (ja) | 2004-12-22 |
Family
ID=18722701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000229611A Expired - Lifetime JP3604126B2 (ja) | 2000-07-28 | 2000-07-28 | 循環窓加算装置、その方法及びそのプログラム記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3604126B2 (ja) |
-
2000
- 2000-07-28 JP JP2000229611A patent/JP3604126B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2002040938A (ja) | 2002-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7447310B2 (en) | Lean multiplication of multi-precision numbers over GF(2m) | |
Moldovyan et al. | Post-quantum signature algorithms based on the hidden discrete logarithm problem | |
EP0917047B1 (en) | Apparatus for modular inversion for information security | |
EP2350811B1 (en) | Method and apparatus for modulus reduction | |
CN100437548C (zh) | 在Montgomery乘法内利用SIMD指令的方法和系统 | |
US20030142820A1 (en) | Device and method for calculation on elliptic curve | |
Granger et al. | Faster ECC over | |
Jalali et al. | Efficient post-quantum undeniable signature on 64-bit ARM | |
JP3604126B2 (ja) | 循環窓加算装置、その方法及びそのプログラム記録媒体 | |
JP4621162B2 (ja) | 有限可換群演算方法、装置およびそのプログラム | |
Anagreh et al. | Accelerate Performance for Elliptic Curve Scalar Multiplication based on NAF by Parallel Computing. | |
CN114706557A (zh) | 一种asic芯片及蒙哥马利模乘的实现方法和装置 | |
JP4856599B2 (ja) | ペアリング演算装置、プログラム | |
JP4184120B2 (ja) | 楕円曲線上スカラー倍演算装置、及び楕円曲線上スカラー倍演算プログラム | |
KR100194769B1 (ko) | 메모리를 사용하여 유한체상에서 역원을 구하는 방법 | |
JP2007526513A (ja) | 要素の累乗またはスカラー乗算の方法 | |
JP3460798B2 (ja) | 楕円積和演算計算方法、楕円積和演算計算装置及び楕円積和演算計算プログラムを記録した記録媒体 | |
CN114510273B (zh) | 一种实现椭圆曲线密码的标量乘运算的处理器和方法 | |
JP4861272B2 (ja) | 楕円曲線暗号演算装置、方法、プログラム | |
Wang et al. | Fast Implementation of Multiplication on Polynomial Rings | |
JP4752176B2 (ja) | 一方向性関数演算方法及び装置及びプログラム | |
JP4629972B2 (ja) | ベクトル演算装置及び分割値演算装置及び楕円曲線スカラー倍演算装置及び楕円暗号演算装置及びベクトル演算方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
KR102000914B1 (ko) | 자연수에 적용가능하며 무조건적이며 결정론 방식을 이용한 소수판별 및 소인수분해 방법 | |
Assmann et al. | Using the Mal'cev correspondence for collection in polycyclic groups | |
Petković | Laguerre-like inclusion method for polynomial zeros |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040831 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040927 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 3604126 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071008 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081008 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091008 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101008 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101008 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111008 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111008 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121008 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121008 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131008 Year of fee payment: 9 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |