JP3863021B2 - 楕円加減算装置及びそのプログラム - Google Patents
楕円加減算装置及びそのプログラム Download PDFInfo
- Publication number
- JP3863021B2 JP3863021B2 JP2002016730A JP2002016730A JP3863021B2 JP 3863021 B2 JP3863021 B2 JP 3863021B2 JP 2002016730 A JP2002016730 A JP 2002016730A JP 2002016730 A JP2002016730 A JP 2002016730A JP 3863021 B2 JP3863021 B2 JP 3863021B2
- Authority
- JP
- Japan
- Prior art keywords
- addition
- subtraction
- partial
- point
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
この発明は、例えば、情報セキュリティ技術(楕円曲線暗号/署名、素因数分解)を実現するために用いられる楕円曲線上の演算を行う装置及びそのプログラムに関する。
【0002】
【従来の技術】
楕円曲線上の演算により公開鍵暗号やデジタル署名を実現する場合、その処理時間のほとんどは楕円曲線上のk倍演算に費やされる。
一般に、暗号や署名には有限体GF(q)上で定義される楕円曲線を使う。これをE/GF(q)と表記する。qは素数または素数のべき乗である。この発明は、いかなるqに対しても適用することが出来る。
楕円曲線上の点Pに対する加算、減算を定義できる。通常の加算と区別するためにこれを、「楕円加算」「楕円減算」「楕円2倍演算」と呼ぶ。いずれも、有限体GF(q)上の加減乗除算を組み合わせることで行うことが出来る。
【0003】
一般に楕円加算、楕円減算はほぼ同じ演算量で実現することが出来る。楕円2倍演算に必要な演算量は、場合によって異なるが楕円加算と同程度である。
通常、k倍演算を構成するために、「楕円加算」「楕円減算」「楕円2倍演算」を組み合わせて行なう方法が用いられており、いずれもlog(k)に比例する回数行う必要がある。
従来の楕円加算において、楕円曲線上の点P(X1 ,Y1 ,Z1 ),Q(X2 ,Y2 ,Z2 )がヤコビ座標(Y2 =X3 +aXZ4 +bZ6 を満たす(X,Y,Z)の3値を用いて点を表す)で表わされている場合は以下の演算によりPとQの和R(X3 ,Y3 ,Z3 )=P+Qが求められる。
【0004】
u1 =X1 Z2 2 , u2 =X2 Z1 2
s1 =Y1 Z2 3 , s2 =Y2 Z1 3
H=u2 −u1 , r=s2 −s1
X3 =−H3 −2u1 H2 +r2
Y3 =−s1 H3 +r(u1 H2 −X3)
Z3 =Z1 Z2 H
この場合、楕円加算1回を行なうのに、有限体上の乗算12回と自乗4回が必要となる。なおY1 Z2 3の演算はZ2 2がx1 Z2 2の演算の際に、既に計算されているから、その値を用いる。よってy1 Z2 3はZ2 2Zとy1 Z2 3との各1回の乗算で求まることになる。
【0005】
点PとQが変形ヤコビ座標(Y2 =X3 +aXZ4 +bZ6 を満たす(X,Y,Z,Z2 ,Z3)の5値を用いて点をあらわす)で表わされている場合は以下の演算によりP(X1 ,Y1 ,Z1 ,Z1 2,Z1 3)+Q(X2 ,Y2 ,Z2 ,Z2 2,Z2 3)=R(X3 ,Y3 ,Z3 ,Z3 2,Z3 3)が求められる。
u1 =X1(Z2 2) , u2 =X2(Z1 2)
s1 =Y1(Z2 3) , s2 =Y2(Z1 3)
H=u2 −u1 , r=s2 −s1
X3 =−H3 −2u1 H2 +r2
Y3 =−s1 H3 +r(u1 H2 −X3)
Z3 =Z1 Z2 H ,Z3 2=Z3 2 , Z3 3=Z3 3
この場合の楕円加算に必要な演算量は有限体上の乗算11回と自乗3回である。
【0006】
点PとQが射影座標(Y2 Z=X3 +aXZ2 +bZ3 を満たす(X,Y,Z
)の3値を用いて点を表わす)で表わされている場合は以下の演算によりP+Q
=R(X3 ,Y3 ,Z3 )が求められる。
u=Y2 Z1 −Y1 Z2 , v=X2 Z1 −X1 Z2
A=u2 Z1 Z2 −v3 −2v2 X1 Z2
X3 =vA
Y3 =u(v2 X1 Z2 −A)−v3 Y1 Z2
Z3 =v3 Z1 Z2
この場合の楕円加算の1回に必要な演算量は、有限体上の乗算12回と自乗2回である。
【0007】
以上の楕円加算演算は例えば文献H.Cohen他“Efficient elliptic curves exponentation using mixed coordinates”Advances in Cryoptology-ASIACRYPT'98, LNCS1514, pp.51〜65,Springer-Verlag,1998中の式(5),(8),(3)に示されている。
これら楕円加算において、Y2 を−Y2 とすれば楕円減算P−Qを演算することができることも知られている。
また楕円曲線上の点をY2 +XYZ=X3 Z+aX2 Z2 +bZ4 を満たす(X,Y,Z)の3値で用いて表わすGF(2m)変形射影座標で表わされた点PとQの楕円加算P+Q=R(X3 ,Y3 ,Z3 )は以下の演算により求められる。
【0008】
A1 =Y2 Z1 2 ,A2 =Y1 Z1 2
B1 =X2 Z1 , B2 =X1 Z2
C=A1 +A2 ,D=B1 +B2
E=Z1 Z2 ,F=DE
Z3 =F2 , G=D2 (F+aE2 )
H=CF , X3 =C2 +H+G
I=D2 B1 E+X3 , J=D2 A1 +X3
Y3 =HI+Z3 J
この場合の楕円加算1回に必要な演算量は、有限体上の乗算14回と自乗6回である。
【0009】
またP(X,Y,Z)点に対する−P点は(X,XZ+Y,Z)として与えられることが例えば、文献JulioLopez他“Improved Algorithms for Elliptic Curve Arithmetic in GF(2m)”SAC'98,LNCS1556,pp.201-212,Springer-Verlag,1999の208頁に示されている。従って楕円減算もP−Qの場合はQのYとしてXZ+Yとおいて楕円加算演算を行えばよい。
所で従来において情報セキュリティ(安全性)技術に用いられる楕円曲線上の演算においては、主として楕円加算が用いられ、楕円減算はほとんど用いられていなかった。楕円減算は点PとQが例えばヤコビ座標で表わされている場合は下記の演算によりP−Q=R(X4 ,Y4 ,Z4 )が求められる。
u1 =X1 Z2 2 , u2 =X2 Z1 2
s1 =Y1 Z2 3 , s′2 =−Y2 Z1 3
H=u2 −u1 , r′=s′2 −s1
X4 =−H3 −2u1 H2 +r′2
Y4 =−s1 H3 +r′(u1 H2 −X4)
Z4 =Z1 Z2 H
この楕円減算の1回に必要とする演算量は、有限体上の乗算12回と自乗4回であり、楕円加算と同一である。他の座標で表わされた点PとQの楕円減算も対応する楕円加算とほぼ同一の演算量を必要とする。
【0010】
【発明が解決しようとする課題】
楕円加算と楕円減算を両方同時に行う場合に、片方ずつ行うと演算量がほぼ倍になる。所で例えば、k倍演算を構成するのに多く使われるWindow法では
ステップ1:まず、ある決まった整数wに対して2P,3P,…,(w−1)Pを求める。
ステップ2:kをw進展開した数列k0 ,k1 ,…,kn を求める。(0<ki <w,k=Σi=0 nki wi )
ステップ3:その後、以下の式によってkPを求める。
【0011】
kP=k0 P+w(k1 P+w(k2 P+w(…+wkn P)…))
上記Window法におけるステップ1の部分に注目する。従来、2P,3P,…,(w−1)Pを求めるためには、2P=P+P,3P=2P+P,4P=3P+P,…,(w−1)P=(w−2)P+Pと(w−2)回の楕円加算(または楕円2倍演算)を行なっていた。つまり従来は楕円加算による演算を行っており、楕円減算はあまり用いられていなかった。しかし例えば、4Pを求めてから4P+Pと4P−Pを演算することにより3Pと5Pを求めることが出来るが、4P+Pと4P−Pの各演算を独立に行えばそれぞれにほぼ同一の演算量を必要とする。このように点PとQの楕円加算P+Qと楕円減算P−Qを同時に演算する場合に、演算を可成り減少する楕円加減算装置を提供することを、この発明は目的とするものである。
【0012】
【課題を解決するための手段】
この発明では、P,QからP+Qを求める楕円加算演算と、P,QからP−Qを求める楕円減算演算とに、共通化できる部分があることに着目し、PとQを入力し、共通部分演算部を複数設け、P+QおよびP−Qの演算の大部分をこれら共通部分演算部で行ってP+QおよびP−Qを出力する楕円加減算演算装置を構成する。
例えば点P,Qがヤコビ座標で表わされている場合、楕円加算1回を行うため有限体上の乗算12回と自乗4回を必要としたが、この発明を適用すると楕円加算P+Qと、楕円減算P−Qとを同時に行うことができ、その楕円加減算のコストは有限体上の乗算13回と自乗5回であり、楕円加算2回とくらべて少ないコストで演算できる。
【0013】
ここでは、ヤコビ座標を用いた点どうしの楕円加算の場合の例をあげたが、プロジェクティブ座標を用いた点どうしの楕円加算や、ヤコビ座標+アフィン座標の混合座標の楕円加算の場合にも同様に構成することができる。
また、楕円曲線の定義体の標数が3よりも大きい楕円曲線の場合を例とした。標数が2の楕円曲線の場合にも適用することができる。
さらに、ヤコビ座標を用いた点どうしの演算には、(X,Y,Z)の3値だけでなく、(X,Y,Z,Z2)の4値、(X,Y,Z,aZ4)の4値、(X,Y,Z,Z2 ,Z3)の5値を用いて楕円曲線上の点をあらわすことによって楕円加算や楕円2倍演算を高速に行う改良版が存在するが、その場合にもこの発明を適用することが出来る。
【0014】
楕円曲線暗号や楕円曲線署名を行う装置を構成する場合は、楕円k倍演算を行う必要があるが、上記楕円加算や楕円2倍を組み合わせて行うことによって、楕円k倍演算の処理全体を効率化することができる。この場合、この発明による楕円加算と楕円減算の同時実行を適用することにより処理効率を一層上げることができる。
【0015】
【発明の実施の形態】
第1の実施例[楕円加減算(ヤコビ座標)]
図1は、定義体の標数が3よりも大きい楕円曲線のE上で入力された楕円曲線上の点P(X1 ,Y1 ,Z1),Q(X2 ,Y2 ,Z2)に対してP+Q=R(X3 ,Y3 ,Z3)およびP−Q=R′(X4 ,Y4 ,Z4)を出力する装置の機能構成を表している。
ただし、各楕円曲線上の点はヤコビ座標(Y2 =X3 +aXZ4 +bZ6 を満たす(X,Y,Z)の3値を用いて点を表す)を用いて表現している。
【0016】
Z1 ,Z2 はそれぞれ自乗部11,12で自乗され、これら結果Z2 2,Zp 2とX1 ,X2 が乗算部13,14で乗算され、u1 ,u2 が得られる。Z1 ,Z2 とZ1 2,Z2 2とがそれぞれ乗算部15,16で乗算され、これら結果Z2 3,Z1 3とY1 ,Y2 が乗算部17,18で乗算され、s1 ,s2 が得られる。
u2 −u1 ,s2 −s1 がそれぞれ引算部21,22で引算され、これら結果H,rが得られ、H,rがそれぞれ自乗部23,24で自乗され、u1 が倍算部25で倍算され、H,2u1 にそれぞれH2 が乗算部26,27で乗算され、これら結果が加算部28で加算されると共に符号が反転されて結果Aが得られる。u1 とH2 の乗算が乗算部29で行われ、結果Cが得られる。s1 とH3 が乗算され、その結果の符号が反転された結果Bが乗算部31により得られる。
【0017】
Aとr2 が加算部32で加算され、結果X3 が得られ、減算・乗算部34でCからX 3 が減算された値にrが乗算され、その結果r(C−X 3 )とBが加算部35で加算されてY3 が得られる。Z1とHが乗算部36で乗算され、更にこれにZ2 が乗算部37で乗算されてZ3 が得られる。
以上の演算によりP+Q=R(X3 ,Y3 ,Z3)が得られる。つまり部分演算部11〜37により楕円加算演算部が構成されている。
更に加算部41でs2 とs1 が加算されて符号が反転され、その結果r′は自乗部42で自乗され、加算部43でAとr′2 が加算されてX4 が得られる。減算・乗算部44でCからX 4 が減算された値にr′が乗算され、その結果に加算部45でBを加算してY4 が得られる。またZ3 がZ4 として出力される。つまり楕円加算演算部に対し、わずかな5個の部分演算部41〜45が付加されて楕円減算P−Q=R′(X4 ,Y4 ,Z4 )が得られる。逆に楕円減算演算部を主体に見れば、これに対し、同様に5個の部分演算部22,24,32,34,35を付加すれば楕円加算も行われることになる。要するに楕円加算演算部又は楕円減算演算部に部分演算結果s1 とs2 に対する加減算部41又は22、その結果の自乗部42又は24、その結果と部分演算結果Aとの加算部43又は32、部分演算結果CからX 4 又はX 3 を減算し、その値を加減算部41又は22の結果と乗算する減算・乗算部44又は34、その結果と部分演算結果Bとの加算部45又は35を設ければよい。
【0018】
この楕円加減算装置においては下記の演算を行っている。
u1 =X1 Z2 2 , u2 =X2 Z1 2
s1 =Y1 Z2 3 , s2 =Y2 Z1 3
H=u2 −u1 , r=s2 −s1
H2 =H2 , H3 =HH2
A=−H3 −2u1 H2 , X3 =A+r2
B=−s1 H3 , C=u1 H 2
Y3 =B+r(C−X 3 ) , Z3 =Z1 Z2 H
r′=−s2 −s1 , X4 =A+r′2
Y4 =B+r′(C−X 4 ) , Z4 =Z3
これと従来の技術の項で述べたヤコビ座標表現の楕円加算演算と比較すれば直ちに理解されるように、加算部28のA=−H3 −2u1 H2 と、乗算部31のB=−s1 H3 と乗算部29のC=u1 H 2 をも共通部分演算部として特に設けたことにより、演算の共通化を一層高めている。
【0019】
図1に示した装置は図2に示すように、制御装置101、メモリ102、加算器103、減算器104、乗算器105を備え、入力P,Qに対し、制御装置101が各部を順次制御して、図1中の各部分演算部の演算を順次行わせるように構成することもできる。
更にこの装置をコンピュータにプログラムを実行させて機能させることもできる。つまり図3に示すように、入力部110にP,Qが入力されると、CPU又はマイクロプロセッサ111がプログラムメモリ112内の楕円加減算プログラムを実行してP,Qを記憶部113に取り込み、このP,Qに対し順次部分演算を行って、最終的にP+Q=R,P−Q=R′を得て出力部114から出力する。
【0020】
この楕円加減算プログラムの実行により処理される手順の例を図4に示す。入力部110にP,Qが入力されると、記憶部113に記憶し(S1)、Z2 を記憶部113から取出し(以下単に取出しと記述する)、Z2 2を演算し(S2)、更にX1 を取出してu1 =X1 Z2 2を演算して記憶部113に記憶する(S3)。以下記憶部に記憶することを単に記憶すると記述する。
Z1 を取出してZ1 2を演算し(S4)、X2 を取出して、u2 =X2 Z1 2を演算して記憶する(S5)。
【0021】
Z2 を取出してZ2 3とを演算し(S6)、Y1 を取出し、s1 =Y1 Z2 3を演算して記憶する(S7)。Z1 を取出してZ1 3を演算し(S8)、Y2 を取出してs2 =Y2 Z1 3を演算して記憶する(S9)。
u1 とu2 を取出してH=u2 −u1 を演算して記憶する(S10)。s1 とs2 を取出してr=s2 −s1 を演算して記憶する(S11)。Hを取出してH2 を演算し(S12)、更にH3 =HH2 を演算して記憶する(S13)。
u1 とH2 を取出して2u1 H2 を演算し(S14)、更にH3 を取出してA=−H3 −2u1 H2 を演算して記憶する(S15)。rを取出し、r2 を演算し(S16)、Aを取出し、X3 =A+r2 を演算して記憶する(S17)。
【0022】
s1 とH3 を取出しB=−s1 H3 を演算して記憶する(S18)。u1 とH 2 を取出してC=u1 H 2 を演算して記憶する(S19)。rとCとX 3 を取出してr(C−X 3 )を演算し(S21)、更にBを取出してY3 =B+r(C−X 3 )を演算して記憶する(S22)。Z1 ,Z2 ,Hを取出してZ3 =Z1 Z2 Hを演算して記憶する(S23)。
s1 ,s2 を取出し、r′=−s2 −s1 を演算し(S24)、更にr′ 2 を演算して記憶する(S25)、r′とAを取出してX4 =A+r′2 を演算して記憶する(S26)。r′とCとX 4 を取出してr′(C−X 4 )を演算し(S27)、更にBを取出してY4 =B+r′(C−X 4 )を演算して記憶する(S28)。Z3 を取出してZ4 とし(S29)、X3 ,Y3 ,Z3 を取出してP+Q=R(X3 ,Y3 ,Z3 )として、X4 ,Y4 ,Z4 を取出してP−Q=R′(X4 ,Y4 ,Z4 )として出力部より出力する(S30)。
【0023】
ステップ(S2,S3)とステップ(S4,S5)、ステップ(S6,S7)、ステップ(S8,S9)の順番は任意でよい。またステップS10はu1 とu2 が求まれば直ちに行ってもよい。同様にステップS11もs1 とs2 が求まれば直ちに行ってもよい。Hを求めればステップS12,13、必要に応じてステップS15を順次行ってもよい。ステップS18はステップS20の後に行ってもよい。ステップ(S25,S26)とステップ(S27,S28)は何れを先に行ってもよい。
【0024】
この構成による楕円加減算は、有限体上の乗算13回と自乗5回で演算できることは図1の構成から直ちに理解される。楕円加算に必要な演算量は、有限体上の乗算12回と自乗4回であるのに対し、乗算と自乗が各1回増加するのみであり、楕円加算を2回或は楕円加算と楕円減算とを独立に行う場合と比較して演算量が著しく少なくて済む。
上述では一般の楕円加減算の場合を示したが、入力されたZ1 ,Z2 の片方または両方が1の場合にZ1 ,Z2 による乗算処理を簡略化するなどの変形も可能である。
第2の実施例[楕円加減算(変形ヤコビ座標)]
定義体の標数が3よりも大きい楕円曲線のE上で入力された楕円曲線上の点P(X1 ,Y1 ,Z1,Z1 2,Z1 3),Q(X2 ,Y2 ,Z2,Z2 2,Z2 3)に対してP+QおよびP−Qを出力する実施例を説明する。この場合、各楕円曲線上の点は変形ヤコビ座標(Y2 =X3 +aXZ4 +bZ6 を満たす(X,Y,Z,Z2 ,Z3)の5値を用いて点を表す)を用いて表現している。
【0025】
この楕円加減算装置の機能構成を図5に示す。なお、図1と対応する部分に同一参照番号を付けて重複する部分の説明は省略する。図1中の部分演算部11,12,15,16が省略乗算部13′でX1 とQのZ 2 2との乗算によりu1 が求められ、乗算部14′でX2 とPのZ1 2との乗算が行われてu2 とされ乗算部17′,18′でそれぞれY1 ,Y2 とQのZ2 3,PのZ1 3との乗算がそれぞれ行われてs1 ,s2 とされる。また乗算部37よりのZ3 が自乗部46で自乗されてZ3 2とされ、乗算部47でZ3 2とZ3 が乗算されてZ3 3とされ、これらがRの要素として出力されると共に、Z3 2,Z3 3がそれぞれR′の要素Z4 2,Z4 3として出力される。その他は図1と同一構成、同一動作がなされる。
【0026】
この場合も図2に示した機能構成により動作させることもできる。またコンピュータによりプログラムを実行させて機能させることもできる。その処理手順の例を図6に図4に示したステップと同一部分に同一ステップ番号を付けて示す。図4中のステップS2,S4,S6,S8が省略され、ステップS3の代りにステップS3′としてX1 とQのZ2 2を取出してこれらの乗算を行ってu1 として記憶し、ステップS5の代りにステップS5′でX2 とPのZ1 2を取出してこれらの乗算を行ってu2 として記憶し、ステップS7の代りにステップS7′でY1 とQのZ2 3を取出して、これらを乗算してs1 として記憶し、ステップS9の代りにステップS9′でY2 とPのZ1 3を取出してs2 として記憶する。またステップS23でZ3 を求めた後、Z3 2を演算して記憶し(S31)、更にZ3 3を演算して記憶し(S32)、Z3 2をZ4 2とし(S33)、Z3 3をZ4 3とし(S34)、ステップS30の代りに、ステップS30′で出力としてR(X3 ,Y3 ,Z3 ,Z3 2,Z3 3),R′(X4 ,Y4 ,Z4 ,Z4 2,Z4 3)を出力する点が図4に示した処理と異なる。なおステップS31,S32はステップS28の後に行ってもよい。
【0027】
以上の各部分演算は、以下の通りであり、これは従来の技術の項で示した変形ヤコビ座標表現のP,Qの演算と同一結果となることは直ちに理解されよう。また第1の実施例と同様に、楕円加算演算部又は楕円減算演算部にわずかな部分演算部を付加するだけで楕円加減算装置が構成されている。
u1 =X1(Z2 2) , u2 =X2(Z1 2)
s1 =Y1(Z2 3) , s2 =Y2(Z1 3)
H=u2 −u1 , r=s2 −s1
H2 =H2 , H3 =HH2
A=−H3 −2u1 H2 , X3 =A+r2
B=−s1 H3 , C=u1 H 2
Y3 =B+r(C−X 3 ) , Z3 =Z1 Z2 H
(Z3 2)=Z3 2 , (Z3 3)=Z3 3
r′=−s2 −s1 , X4 =A+r′2
Y4 =B+r′(C−X 4 ) , Z4 =Z3
(Z4 2)=(Z3 2) , (Z4 3)=(Z3 3)
この構成による楕円加減算は、有限体上の乗算12回と自乗4回で演算できる。楕円加算に必要な演算量は、有限体上の乗算11回と自乗3回であるのに対し、各1回増加するのみである。
【0028】
この場合も、入力されたZ1 ,Z2 の片方または両方が1の場合にZ1 ,Z2による乗算処理を簡略化するなどの変形も可能である。
第3の実施例[楕円加減算(射影座標)]
定義体の標数が3よりも大きい楕円曲線のE上で入力された楕円曲線上の点P(X1 ,Y1 ,Z1),Q(X2 ,Y2 ,Z2)に対してP+Q=R(X3 ,Y3 ,Z3)およびP−Q=R′(X4 ,Y4 ,Z4)を出力する装置として、各楕円曲線上の点は射影座標(Y2 Z=X3 +aXZ2 +bZ3 を満たす(X,Y,Z)の3値を用いて点をあらわす)を用いて表現している、実施例について図7を参照して説明する。
【0029】
乗算部51,52でX1 ,X2 とZ2 ,Z1 とがそれぞれ乗算されてS1 ,S2 が出力され、乗算部53,54でY1 ,Y2とZ2 ,Z1 がそれぞれ乗算されてT1 ,T2 が出力され、減算部55,56でそれぞれS2 ,T2 からS1 ,T1 が減算されてv,uが出力され乗算部57でZ1 とZ2 が乗算されてCが出力され、vが自乗部58で自乗され、更にこれに乗算部59でvが乗算されてv3 とされ、自乗部61でuが自乗され、乗算部62,63でそれぞれ、T1 ,S1 と−v3 ,v2 が乗算されてそれぞれD,Eが出力される。
【0030】
加算部64でv3 と2Eが加算され、その結果が符号反転されてBとして出力され、乗算部65でu 2 とCが乗算され、更にこれとBが加算部66で加算され、Aが出力される。このAとvが乗算部67で乗算されてX3 が出力される。減算部68でEからAが減算されその結果に対し、乗算部69でuが乗算され、更にその結果に対し加算部71でDが加算されて、Y3 が出力される。乗算部72でv3 とCが乗算されZ3 が出力される。
つまり、これら部分演算部51〜72は楕円加算演算部を構成し、これらよりP+Q=R(X3 ,Y3 ,Z3)が得られる。これに対し、次のものが付加される。加算部73でT2 とT1 が加算され、その結果が符号反転されてu′として出力され、u′は自乗部74で自乗され、その結果とCが乗算部75で乗算され、更にその結果にBが加算部76で加算されてA′として出力され、このA′にvが乗算部77で乗算されてX4 が出力される。減算部78でEからA′が減算され、その結果にu′が乗算部79で乗算され、更にその結果にDが加算部81で加算されてY4 が出力される。またZ3 がZ4 としても出力される。これら部分演算部73〜81の付加により、楕円加算演算部の部分演算結果を利用して楕円減算P−Q=R′(X4 ,Y4 ,Z4)が得られる。
【0031】
これは楕円加算演算における部分演算結果T1 ,T2 ,v,B=−v3 −2E,C=Z 1 Z 2 ,D=−v3 T1 ,E=v2 S1 を利用可能なようにしたことにより、わずかの部分演算部73〜81の付加により楕円減算P−Qが可能となった。
この図7に示した装置も図2に示したような機能構成により構成することもでき、またコンピュータによりプログラムを実行させて機能させることもできる。その場合の処理手順の例を図8に示す。
【0032】
入力部はP,Qが入力されると記憶部に記憶し(S1)、X1 とZ2 を取出してこれらを乗算してS1 として記憶し(S2)、X2 とZ1 を取出してこれらを乗算してS2 として記憶し(S3)、Y1 とZ2 を取出し、これらを乗算してT1 として記憶し(S4)、Y2 とZ1 を取出し、これらを乗算してT2 として記憶する(S5)。
T1 とT2 を取出し、T2 −T1 を演算してuとして記憶し(S6)、S1 とS2 を取出しS2 −S1 を演算してvとして記憶し(S7)、Z1 とZ2 を取出し乗算してCとして記憶する(S8)。vを取出し自乗して記憶すると共に(S9)、v2 にvを乗算してv3 を記憶する(S10)。そのv3 に、T1 を取出して乗算して−v3 T1 をDとして記憶し(S12)、v2 とS1 を取出して乗算しEとして記憶し(S12)、v3 とEを取出し、−v3 −2Eを演算してBとして記憶する(S13)。
【0033】
uを取出し自乗し(S14)、これに取出したCを乗算し(S15)、更に、その結果に取出したBを加算してAとして記憶し(S16)、これと共にvを取出してAに乗算してX3 として記憶する(S17)。
EとAを取出し、E−Aを演算し(S18)、これに取出したuを乗算し(S19)、更にその結果に取出したDを加算してY3 として記憶する(S20)。またv3 とCを取出し乗算してZ3 として記憶する(S21)。以上により楕円加算P+Q=R(X3 ,Y3 ,Z3)が求まる。
【0034】
更に、T1 とT2 を取出し、−T2 −T1 を演算し、u′として記憶し(S22)、これと共にu′の自乗を演算し(S23)、更にこれに取出したCを乗算し(S24)、この結果に取出したBを加算してA′として記憶し(S25)、これと共にA′に取出したvを乗算してX4 として記憶する(S26)。
EとA′を取出し、E−A′を演算し(S27)、これに取出したu′を乗算し(S28)、更にその結果に取出したDを加算してY4 として記憶する(S29)。既に求めたZ3 をZ4 としても記憶する(S30)。R(X3 ,Y3 ,Z3)を取出しP+Qの演算結果として、またR′(X4 ,Y4 ,Z4)を取出しP−Qの演算結果として出力部より出力する(S31)。
【0035】
ステップS2〜S5の順は任意でよい。ステップS6のuはT1 とT2 が得られたら直ちに行ってもよい。同様にステップS7のvはS3 ,S2 が得られたら直ちに行ってもよい。ステップS8のCはステップS15でu2 Cを求める前であれば何時行ってもよい。ステップS11とS12は何れを先に行ってもよい。
以上の演算は下記の通りである。
S1 =X1 Z2 , S2 =X2 Z1
T1 =Y1 Z2 , T2 =Y2 Z1
u=T2 −T1 , v=S2 −S1
C=Z1 Z2 , D=−v3 T1
E=v2 S1 , B=−v3 −2E
A=u2 C +B , X3 =vA
Y3 =u(E−A)+D , Z3 =v3 C
u′=−T2 −T1 , A′=u′2 C+B
X4 =vA′ , Y4 =u′(E−A′)+D
Z4 =Z3
この演算によりP+Q,P−Qが正しく行われることは、従来の技術の項で示した対応する加算演算の式と比較すれば容易に理解されよう。
【0036】
この構成による楕円加減算は、有限体上の乗算14回と自乗3回で演算できる。対応する従来の技術の楕円加算に必要な演算量は、有限体上の乗算12回と自乗2回であり、乗算2回、自乗1回を多くするだけで楕円加算と楕円減算とを同時に行うことができる。
この場合も入力されたZ1 ,Z2 の片方または両方が1の場合にZ1 ,Z2 による乗算処理を簡略化するなどの変形も可能である。
第4の実施例[楕円加減算(GF(2 m )変形射影座標)]
定義体の標数が2の楕円曲線のE上で入力された楕円曲線上の点P(X1 ,Y1 ,Z1),Q(X2 ,Y2 ,Z2)に対してP+Q=R(X3 ,Y3 ,Z3)およびP−Q=R′(X4 ,Y4 ,Z4)を出力する装置の実施例を説明する。この場合は各楕円曲線上の点は変形射影座標(Y2 +XYZ=X3 Z+aX2 Z2 +bZ4 を満たす(X,Y,Z)の3値を用いて点を表す)を用いて表現している。
【0037】
図9に示すように、自乗部191,192でZ1 ,Z2 がそれぞれ自乗され、乗算部201,202でこれ等の結果Z1 2,Z2 2とY2 ,Y1 とがそれぞれ乗算され、A1 ,A2 が出力され、乗算部203,204でZ1 ,Z2 とX2 ,X1 がそれぞれ乗算され、B1 ,B2 が出力され、加算部205,206でそれぞれA1 ,B1 とA2 ,B2 が加算されてC,Dが出力され、乗算部207でZ1 とZ2 が乗算されてEが出力され、乗算部208でDとEが乗算されてFが出力され、自乗部209,211,212及び213でそれぞれC,D,E及びFが自乗され、F2 はZ3 として出力される。
【0038】
乗算部214でE2 が楕円曲線の係数a倍され、これとFが加算部215で加算され、その結果に対しD2 が乗算部216で乗算されてGが出力される。乗算部217でCとFが乗算されてHが出力され、加算部218でC2 とHとGが加算されてX3 が出力される。
乗算部219でB1 とEが乗算されてKが出力され、乗算部221でD2 とKが乗算されてLが出力され、乗算部222でD2 とA1 が乗算されてMが出力され、加算部223,224でL,MとX5 がそれぞれ加算されてI,Jが出力され、乗算部225,226でI,JとH,Z3 がそれぞれ乗算され、これら乗算結果が加算部227で加算されてY3 が出力される。
【0039】
以上によりP+Q=R(X3 ,Y3 ,Z3)の演算結果が得られる。加算部228でA1 とKが加算されてA1 ′が出力され、これにA2 が加算部229で加算されてC′が出力される。乗算部231でC′とFが乗算されてH′が出力され、自乗部232でC′が自乗され、加算部233でC′2 とH′とGが加算されてX4 が出力される。
加算部234でLとX4 が加算されてI′が出力され、加算部235でMとLとX4 が加算されて、J′が出力される。乗算部236,237でH′,Z3 とそれぞれI′,J′が乗算され、これ等乗算結果が加算部238で加算されてY4 が出力される。またZ3 がZ4 としても出力される。よってP−Q=R′(X4 ,Y4 ,Z4)の演算結果が得られる。
【0040】
このP−Qの演算はP+Qの演算の際に部分演算K=B,E、L=D2 K、M=D2 A1 を求め、これらを利用するようにしたため、わずかの部分演算部228〜238を付加することにより、P−Qの演算も同時に得られる。
なおこの装置における各部分演算は下記の通りである。
A1 =Y2 Z1 2 , A2 =Y1 Z2 2
B1 =X2 Z1 , B2 =X1 Z2
C=A1 +A2 , D=B1 +B2
E=Z1 Z2 , F=DE , Z3 =F2
G=D2(F+aE2), H=CF
X3 =C2 +H+G , K=B1 E
L=D2 K , I=L+X3 , M=D2 A1
J=M+X3 ,Y3 =HI+Z3 J ,A1 ′=A1 +K
C′=A1 ′+A2 ,H′=C′F ,X4 =C′2 +H′+G
I′=L+X4 , J′=M+L+X4
Y4 =H′I′ +Z3 J′ , Z4 =Z3
これら部分演算によりP+Q,P−Qの演算が正しく行われることはこれらと、従来の技術の項で述べた対応する式と比較すれば直ちに理解されよう。
【0041】
この楕円加減算装置も図2に示したように構成することもでき、またコンピュータにプログラムを実行させて機能させることもできる。その場合の処理手順の例を図10及び図11に示す。
PとQが入力されると記憶部に記憶し(S1)、Z1 を取出して自乗し(S2)、これに取出したY2 を乗算してA1 として記憶する(S3)。Z2 を取出し自乗して、これに取出したY1 を乗算してA2 として記憶する(S5)。X2 とZ1 を取出し、これらを乗算してB1 として記憶し(S6)、X1 とZ2 を取出し、これらを乗算してB2 として記憶し(S7)、A1 とA2 を取出し、これらを加算してCとして記憶し(S8)、B1 とB2 を取出し、これらを加算してDとして記憶し(S9)、Z1 とZ2 を取出しこれらを乗算してEとして記憶し(S10)、これと共にEに取出したDを乗算してFとして記憶し(S11)、これと共にFを自乗してZ3 として記憶する(S12)。
【0042】
Dを取出して自乗して記憶し(S13)、Eを取出し自乗し、これに係数aを乗算し(S15)、更にその結果に取出したFを加算し(S16)、この結果に取出したD2 を乗算してGとして記憶する(S17)。CとFを取出し、これらを乗算してHとして記憶する(S18)。Cを取出し自乗し(S19)、その結果に取出したHとGを加算してその結果をX3 として記憶する(S20)。
B1 とEを取出し、これらを乗算してKとして記憶し(S21)、これと共にD2 を取出してそのKに乗算してLとして記憶する(S22)。図11に示すように、LとX3 を取出し、これらを加算してIとして記憶し(S23)、D2 とA1 を取出し、これらを乗算してMとして記憶し(S24)、これと共にMに取出したX3 を加算してJとし(S25)、このJに取出したZ3 を乗算して記憶する(S26)。またHとIを取出し、これらを乗算し(S27)、この結果と取出したZ3 Jを加算してY3 として記憶する(S28)。
【0043】
A1 とKを取出し、これらを加算してA1 ′とし(S29)、このA1 ′に取出したA2 を加算してC′として記憶する(S30)。これと共にC′に取出したFを乗算してH′として記憶する(S31)。C′を取出し、自乗して記憶し(S32)、これと共にそのC′2 に取出したH′とGを加算してX4 として記憶する(S33)。
LとX4 を取出し、これらを加算しI′として記憶し(S34)、MとLとX4 を取出し、これらを加算しJ′とし(S35)、このJ′と取出したZ3 を乗算して記憶する(S36)。H′とI′を取出し、これらを乗算し(S37)、この結果と取出したZ 3 J′を加算してY4 として記憶する(S38)。Z3 をZ4 にも利用し(S39)、P+Qの演算結果としてR(X3 ,Y3 ,Z3)を取出し、P−Qの演算結果としてR′(X4 ,Y4 ,Z4)を取出して出力部より出力する(S40)。
【0044】
ステップ(S2,S3)、(S4,S5)、(S6,S7)の順は任意でよい。同様に他のステップにおいても、そのステップで処理に必要とするものを、そのステップの前に処理しておけばよく、その順は図10及び図11に示す順に限られるものでない。
この構成による楕円加減算は、有限体上の乗算17回と自乗7回で演算できる。対応する従来の楕円加算に必要な演算量は、有限体上の乗算14回と自乗6回であり、これに対し乗算を3回、自乗を1回多くするだけで楕円加算のみならず楕円減算も同時に行うことができる。
【0045】
この場合も、入力されたZ1 ,Z2 の片方または両方が1の場合にZ1 ,Z2 による乗算処理を簡略化するなどの変形も可能である。
上述の各実施例において、コンピュータにプログラムを実行させて機能させる場合はこの発明の楕円加減算プログラムをコンピュータのプログラムメモリに、CD−ROM、可撓性磁気ディスクなどからインストールさせ、又は通信回線を介してダウンロードさせて行えばよい。
【0046】
【発明の効果】
以上述べたように従来においては楕円加算のみ又は楕円減算のみを独立に行っていたが、この発明によれば楕円曲線上の加算と減算の両方の結果を出力し、しかも楕円加算・減算を独立に行う場合よりも演算を高速化することができる。
たとえば、標数3以上の楕円曲線においてヤコビ座標を用いる場合、楕円加算および楕円減算には、有限体上の乗算と自乗をあわせて16回必要としていた。この発明の方法を適用すれば、楕円加減算を有限体上の乗算と自乗をあわせて18回で行うことができる。
【0047】
したがってこの場合、従来の別々に演算する方法(有限体上の乗算・自乗32回)に比べて約1.78倍高速に演算できる。また、この方法はヤコビ座標以外の座標(射影座標など)に適用することや、標数2の楕円曲線に適用することも可能であり、応用範囲が広い。
【図面の簡単な説明】
【図1】 ヤコビ座標の場合に適用したこの発明による楕円加減算装置の機能構成例を示す図。
【図2】 この発明装置の一般的機能構成の他の例を示す図。
【図3】 この発明装置をコンピュータにより機能される場合の機能構成例を示す図。
【図4】 図1に示した実施例の処理手順の例を示す流れ図。
【図5】 変形ヤコビ座標に適用したこの発明による楕円加減算装置の機能構成例を示す図。
【図6】 その処理手順の例を示す流れ図。
【図7】 射影座標に適用したこの発明の楕円加減算装置の機能構成例を示す図。
【図8】 その処理手順の例を示す流れ図。
【図9】 GF(2m)変形射影座標に適用したこの発明の楕円加減算装置の機能構成例を示す図。
【図10】 その処理手順の例を示す流れ図。
【図11】 図10に示す手順の続きを示す流れ図。
Claims (16)
- 楕円曲線の定義体の標数が3よりも大であり、3値を用いたヤコビ座標で表現される Y2=X3+aXZ4+bZ6を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)が入力され、乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、u1=X1Z2 2、u2=X2Z1 2、H=u2−u1、s1=Y1Z2 3、s2=Y2Z1 3、r=s2−s1、A=−H3−2u1H2、X3=A+r2、B=−s1H3、C=u1H2、Y3=B+r(C−X3)、Z3=Z1Z2Hを演算し、上記s1、s2、A、B、C、Z3を出力すると共に加算結果としてP+Q=R(X3,Y3,Z3)を出力する楕円加算演算部と、
上記s1、s2、A、B、C、Z3が入力され、上記楕円加算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、r‘=−s2−s1、X4=A+r’2、Y4=B+r‘(C−X4)を演算するとともにZ4=Z3とし、減算結果としてP−Q=R’(X4,Y4,Z4)を出力する付加部と
を備える楕円加減算装置。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いたヤコビ座標で表現される Y2=X3+aXZ4+bZ6を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)が入力され、乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、u1=X1Z2 2、u2=X2Z1 2、H=u2−u1、s1=Y1Z2 3、s2=Y2Z1 3、r=s2−s1、r‘=−s2−s1、A=−H3−2u1H2、X3=A+r2、B=−s1H3、C=u1H2、X4=A+r’2、Y4=B+r‘(C−X4)、Z4=Z1Z2Hを演算し、上記s1、s2、A、B、C、Z4を出力すると共に減算結果としてP−Q=R’(X4,Y4,Z4)を出力する楕円減算演算部と、
上記s1、s2、A、B、C、Z4が入力され、上記楕円減算演算部の部分演算部より少ない複数の部分演算部により構成され、r=s2−s1、X3=A+r2、Y3=B+r(C−X3)を演算するとともにZ3=Z4とし、加算結果としてP+Q=R(X3,Y3,Z3)を出力する付加部と
を備える楕円加減算装置。 - 楕円曲線の定義体の標数が3よりも大であり、5値を用いた変形ヤコビ座標で表現されるY2 =X3 +aXZ4 +bZ6 を満たす点P(X1 ,Y1 ,Z1 ,Z1 2,Z1 3)、点Q(X2 ,Y2 ,Z2 ,Z2 2,Z2 3)が入力され、乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、u1 =X1(Z2 2)、u2 =X2(Z1 2) 、H=u2 −u1 、s1 =Y1(Z2 3)、s2 =Y2(Z1 3)、r=s2−s1、A=−H3−2u1H2、X3=A+r2、B=−s1H3、C=u1H2、Y3=B+r(C−X3)、Z3=Z1Z2Hを演算し、上記s1、s2、A、B、C、Z3及びZ3 2、Z3 3を出力すると共に加算結果としてP+Q=R(X3 ,Y3 ,Z3 ,Z3 2,Z3 3)を出力する楕円加算演算部と、 上記s1、s2、A、B、C、Z3、Z3 2、Z3 3が入力され、上記楕円加算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、r‘=−s2−s1、X4=A+r’2、Y4=B+r‘(C−X4)を演算するとともにZ4=Z3、Z4 2=Z3 2、Z4 3=Z3 3とし、減算結果としてP−Q=R’(X4,Y4,Z4,Z4 2,Z4 3)を出力する付加部と
を備える楕円加減算装置。 - 楕円曲線の定義体の標数が3よりも大であり、5値を用いた変形ヤコビ座標で表現されるY2 =X3 +aXZ4 +bZ6 を満たす点P(X1 ,Y1 ,Z1 ,Z1 2,Z1 3)、点Q(X2 ,Y2 ,Z2 ,Z2 2,Z2 3)が入力され、乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、u1=X1Z2 2、u2=X2Z1 2、H=u2−u1、s1=Y1Z2 3、s2=Y2Z1 3、r=s2−s1、r‘=−s2−s1、A=−H3−2u1H2、X3=A+r2、B=−s1H3、C=u1H2、X4=A+r’2、Y4=B+r‘(C−X4)、Z4=Z1Z2Hを演算し、上記s1、s2、A、B、C、Z4及びZ4 2、Z4 3を出力すると共に減算結果としてP−Q=R’(X4,Y4,Z4,Z4 2,Z4 3)を出力する楕円減算演算部と、
上記s1、s2、A、B、C、Z4、Z4 2、Z4 3が入力され、上記楕円減算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、r=s2−s1、X3=A+r2、Y3=B+r(C−X3)を演算するとともにZ3=Z4、Z3 2=Z4 2、Z3 3=Z4 3とし、加算結果としてP+Q=R(X3,Y3,Z3,Z3 2,Z3 3)を出力する付加部と
を備える楕円加減算装置。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いた射影座標で表現される Y2=X3+aXZ2+bZ3を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)が入力され、乗算、加減算のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、S1 =X1 Z2 、S2 =X2 Z1 、v=S2 −S1 、T1 =Y1 Z2 、T2 =Y2 Z1 、u=T2 −T1 、C=Z1Z2、D=−v3T1、E=−v2S1、B=−v3−2E、A=u2C+B、X3=vA、Y3=u(E−A)+D、Z3=v3Cを演算し、上記v、T1、T2、B、C、D、E、Z3を出力すると共に加算結果としてP+Q=R(X3,Y3,Z3)を出力する楕円加算演算部と、 上記v、T1、T2、B、C、D、E、Z3が入力され、上記楕円加算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、u‘=−T2−T1、A‘=u‘2C+B、X4=vA’、Y4=u‘(E−A‘)+Dを演算するとともにZ4=Z3とし、減算結果としてP−Q=R’(X4,Y4,Z4)を出力する付加部と
を備える楕円加減算装置。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いた射影座標で表現される Y2=X3+aXZ2+bZ3を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)が入力され、乗算、加減算のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、S1 =X1 Z2 、S2 =X2 Z1 、v=S2 −S1 、T1 =Y1 Z2 、T2 =Y2 Z1 、u‘=−T2−T1、C=Z1Z2、D=−v3T1、E=−v2S1、B=−v3−2E、A‘=u‘2C+B、X4=vA’、Y4=u‘(E−A‘)+D、Z4=v3Cを演算し、上記T1、T2、B、C、D、E、Z4を出力すると共に減算結果としてP−Q=R’(X4,Y4,Z4)を出力する楕円減算演算部と、
上記T1、T2、B、C、D、E、Z4が入力され、上記楕円減算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、u=T2 −T1 、A=u2C+B、X3=vA、Y3=u(E−A)+Dを演算するとともにZ3=Z4とし、加算結果としてP+Q=R(X3,Y3,Z3)を出力する付加部と
を備える楕円加減算装置。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いた変形射影座標で表現されるY2 +XYZ=X3 Z+aX2 Z2 +bZ4を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)が入力され、乗算、加減算のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、A1 =Y2 Z1 2 、A2 =Y1 Z2 2 、B1 =X2 Z1 、B2 =X1 Z2 、C=A1+A2、D=B1+B2、E=Z1Z2、F=DE、K=B1E、L=D2K、G=D2(F+aE2)、H=CF、I=L+X3、M=D2A1、X3=C2+H+G、J=M+X3、Z3=F2、Y3=HI+Z3Jを演算し、上記A1、A2、F、G、K、L、M、Z3を出力すると共に加算結果としてP+Q=R(X3,Y3,Z3)を出力する楕円加算演算部と、 上記A1、A2、F、G、K、L、M、Z3が入力され、上記楕円加算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、A1 ‘=A1+K、C‘=A1 ‘+A2、H‘=C‘F、X4=C‘2+H‘+G、I‘=L+X4、J‘=M+L+X4、Y4=H‘I‘+Z3J‘を演算するとともにZ4=Z3とし、減算結果としてP−Q=R’(X4,Y4,Z4)を出力する付加部と
を備える楕円加減算装置。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いた変形射影座標で表現されるY2 +XYZ=X3 Z+aX2 Z2 +bZ4を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)が入力され、乗算、加減算のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、A1 =Y2 Z1 2、A2 =Y1 Z2 2 、B1 =X2 Z1 、B2 =X1 Z2 、D=B1+B2、E=Z1Z2、F=DE、K=B1E、L=D2K、G=D2(F+aE2)、M=D2A1、Z4=F2を演算し、上記A1、A2、F、G、L、M、Z4を出力すると共に減算結果としてP−Q=R’(X4,Y4,Z4)を出力する楕円減算演算部と、
上記A1、A2、F、G、L、M、Z4が入力され、上記楕円減算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、C=A1+A2、H=CF、X3=C2+H+G、I=L+X3、J=M+X3、Y3=HI+Z4Jを演算するとともにZ3=Z4とし、加算結果としてP+Q=R(X3,Y3,Z3)を出力する付加部と
を備える楕円加減算装置。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いたヤコビ座標で表現される Y2=X3+aXZ4+bZ6を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)について、P+Q=R(X3,Y3,Z3)とP−Q=R’(X4,Y4,Z4)を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成される楕円加算演算部が、楕円加算演算部に入力された上記点P(X1,Y1,Z1)、上記点Q(X2,Y2,Z2)について、u1=X1Z2 2、u2=X2Z1 2、H=u2−u1、s1=Y1Z2 3、s2=Y2Z1 3、r=s2−s1、A=−H3−2u1H2、X3=A+r2、B=−s1H3、C=u1H2、Y3=B+r(C−X3)、Z3=Z1Z2Hを演算し、上記s1、s2、A、B、C、Z3を出力すると共に加算結果としてP+Q=R(X3,Y3,Z3)を出力するステップと、
上記楕円加算演算部の部分演算部より少ない複数の部分演算部よりなる付加部が、付加部に入力された上記s1、s2、A、B、C、Z3について、r‘=−s2−s1、X4=A+r’2、Y4=B+r‘(C−X4)を演算するとともにZ4=Z3とし、減算結果としてP−Q=R’(X4,Y4,Z4)を出力するステップと、
を有することを特徴とした楕円加減算プログラム。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いたヤコビ座標で表現される Y2=X3+aXZ4+bZ6を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)について、P+Q=R(X3,Y3,Z3)とP−Q=R’(X4,Y4,Z4)を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成される楕円減算演算部が、楕円減算演算部に入力された上記点P(X1,Y1,Z1)、上記点Q(X2,Y2,Z2)について、u1=X1Z2 2、u2=X2Z1 2、H=u2−u1、s1=Y1Z2 3、s2=Y2Z1 3、r=s2−s1、r‘=−s2−s1、A=−H3−2u1H2、X3=A+r2、B=−s1H3、C=u1H2、X4=A+r’2、Y4=B+r‘(C−X4)、Z4=Z1Z2Hを演算し、上記s1、s2、A、B、C、Z4を出力すると共に減算結果としてP−Q=R’(X4,Y4,Z4)を出力するステップと、
上記楕円減算演算部の部分演算部より少ない複数の部分演算部よりなる付加部が、付加部に入力された上記s1、s2、A、B、C、Z4について、r=s2−s1、X3=A+r2、Y3=B+r(C−X3)を演算するとともにZ3=Z4とし、加算結果としてP+Q=R(X3,Y3,Z3)を出力するステップと、
を有することを特徴とした楕円加減算プログラム。 - 楕円曲線の定義体の標数が3よりも大であり、5値を用いた変形ヤコビ座標で表現されるY2 =X3 +aXZ4 +bZ6 を満たす点P(X1 ,Y1 ,Z1 ,Z1 2,Z1 3)、点Q(X2 ,Y2 ,Z2 ,Z2 2,Z2 3)について、P+Q=R(X3 ,Y3 ,Z3 ,Z3 2,Z3 3)とP−Q=R’(X4,Y4,Z4,Z4 2,Z4 3)を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成される楕円加算演算部が、楕円加算演算部に入力された上記点P(X1 ,Y1 ,Z1 ,Z1 2,Z1 3)、上記点Q(X2 ,Y2 ,Z2 ,Z2 2,Z2 3)について、u1 =X1(Z2 2)、u2 =X2(Z1 2) 、H=u2 −u1 、s1 =Y1(Z2 3)、s2 =Y2(Z1 3)、r=s2−s1、A=−H3−2u1H2、X3=A+r2、B=−s1H3、C=u1H2、Y3=B+r(C−X3)、Z3=Z1Z2Hを演算し、上記s1、s2、A、B、C、Z3及びZ3 2、Z3 3を出力すると共に加算結果としてP+Q=R(X3 ,Y3 ,Z3 ,Z3 2,Z3 3)を出力するステップと、
上記楕円加算演算部の部分演算部より少ない複数の部分演算部からなる付加部が、付加部に入力された上記s1、s2、A、B、C、Z3、Z3 2、Z3 3について、r‘=−s2−s1、X4=A+r’2、Y4=B+r‘(C−X4)を演算するとともにZ4=Z3、Z4 2=Z3 2、Z4 3=Z3 3とし、減算結果としてP−Q=R’(X4,Y4,Z4,Z4 2,Z4 3)を出力するステップと、
を有することを特徴とした楕円加減算プログラム。 - 楕円曲線の定義体の標数が3よりも大であり、5値を用いた変形ヤコビ座標で表現されるY2 =X3 +aXZ4 +bZ6 を満たす点P(X1 ,Y1 ,Z1 ,Z1 2,Z1 3)、点Q(X2 ,Y2 ,Z2 ,Z2 2,Z2 3)について、P+Q=R(X3 ,Y3 ,Z3 ,Z3 2,Z3 3)とP−Q=R’(X4,Y4,Z4,Z4 2,Z4 3)を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成される楕円減算演算部が、楕円減算演算部に入力された上記点P(X1 ,Y1 ,Z1 ,Z1 2,Z1 3)、上記点Q(X2 ,Y2 ,Z2 ,Z2 2,Z2 3)について、u1=X1Z2 2、u2=X2Z1 2、H=u2−u1、s1=Y1Z2 3、s2=Y2Z1 3、r=s2−s1、r‘=−s2−s1、A=−H3−2u1H2、X3=A+r2、B=−s1H3、C=u1H2、X4=A+r’2、Y4=B+r‘(C−X4)、Z4=Z1Z2Hを演算し、上記s1、s2、A、B、C、Z4及びZ4 2、Z4 3を出力すると共に減算結果としてP−Q=R’(X4,Y4,Z4,Z4 2,Z4 3)を出力するステップと、
付加部に入力された上記s1、s2、A、B、C、Z4、Z4 2、Z4 3について、付加部を構成する上記楕円減算演算部の部分演算部より少ない複数の部分演算部において、これらの部分演算部により、r=s2−s1、X3=A+r2、Y3=B+r(C−X3)を演算するとともにZ3=Z4、Z3 2=Z4 2、Z3 3=Z4 3とし、加算結果としてP+Q=R(X3,Y3,Z3,Z3 2,Z3 3)を出力するステップと、
を有することを特徴とした楕円加減算プログラム。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いた射影座標で表現される Y2=X3+aXZ2+bZ3を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)について、P+Q=R(X3,Y3,Z3)とP−Q=R’(X4,Y4,Z4)を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算のいずれかを行う複数の部分演算部により構成される楕円加算演算部が、楕円加算演算部に入力された上記点P(X1,Y1,Z1)、上記点Q(X2,Y2,Z2)について、S1 =X1 Z2 、S2 =X2 Z1 、v=S2 −S1 、T1 =Y1 Z2 、T2 =Y2 Z1 、u=T2 −T1 、C=Z1Z2、D=−v3T1、E=−v2S1、B=−v3−2E、A=u2C+B、X3=vA、Y3=u(E−A)+D、Z3=v3Cを演算し、上記v、T1、T2、B、C、D、E、Z3を出力すると共に加算結果としてP+Q=R(X3,Y3,Z3)を出力するステップと、
上記楕円加算演算部の部分演算部より少ない複数の部分演算部からなる付加部が、付加部に入力された上記v、T1、T2、B、C、D、E、Z3について、u‘=−T2−T1、A‘=u‘2C+B、X4=vA’、Y4=u‘(E−A‘)+Dを演算するとともにZ4=Z3とし、減算結果としてP−Q=R’(X4,Y4,Z4)を出力するステップと、
を有することを特徴とした楕円加減算プログラム。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いた射影座標で表現される Y2=X3+aXZ2+bZ3を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)について、P+Q=R(X3,Y3,Z3)とP−Q=R’(X4,Y4,Z4)を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算のいずれかを行う複数の部分演算部により構成される楕円減算演算部が、楕円減算演算部に入力された上記点P(X1,Y1,Z1)、上記点Q(X2,Y2,Z2)について、S1 =X1 Z2 、S2 =X2 Z1 、v=S2 −S1 、T1 =Y1 Z2 、T2 =Y2 Z1 、u‘=−T2−T1、C=Z1Z2、D=−v3T1、E=−v2S1、B=−v3−2E、A‘=u‘2C+B、X4=vA’、Y4=u‘(E−A‘)+D、Z4=v3Cを演算し、上記T1、T2、B、C、D、E、Z4を出力すると共に減算結果としてP−Q=R’(X4,Y4,Z4)を出力するステップと、
上記楕円減算演算部の部分演算部より少ない複数の部分演算部よりなる付加部が、付加部に入力された上記T1、T2、B、C、D、E、Z4について、u=T2 −T1 、A=u2C+B、X3=vA、Y3=u(E−A)+Dを演算するとともにZ3=Z4とし、加算結果としてP+Q=R(X3,Y3,Z3)を出力するステップと、
を有することを特徴とした楕円加減算プログラム。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いた変形射影座標で表現されるY2 +XYZ=X3 Z+aX2 Z2 +bZ4を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)について、P+Q=R(X3,Y3,Z3)とP−Q=R’(X4,Y4,Z4)を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算のいずれかを行う複数の部分演算部により構成される楕円加算演算部が、楕円加算演算部に入力された上記点P(X1,Y1,Z1)、上記点Q(X2,Y2,Z2)について、A1 =Y2 Z1 2 、A2 =Y1 Z2 2 、B1 =X2 Z1 、B2 =X1 Z2 、C=A1+A2、D=B1+B2、E=Z1Z2、F=DE、K=B1E、L=D2K、G=D2(F+aE2)、H=CF、I=L+X3、M=D2A1、X3=C2+H+G、J=M+X3、Z3=F2、Y3=HI+Z3Jを演算し、上記A1、A2、F、G、K、L、M、Z3を出力すると共に加算結果としてP+Q=R(X3,Y3,Z3)を出力するステップと、
上記楕円加算演算部の部分演算部より少ない複数の部分演算部からなる付加部が、付加部に入力された上記A1、A2、F、G、K、L、M、Z3について、A1 ‘=A1+K、C‘=A1 ‘+A2、H‘=C‘F、X4=C‘2+H‘+G、I‘=L+X4、J‘=M+L+X4、Y4=H‘I‘+Z3J‘を演算するとともにZ4=Z3とし、減算結果としてP−Q=R’(X4,Y4,Z4)を出力するステップと、
を有することを特徴とした楕円加減算プログラム。 - 楕円曲線の定義体の標数が3よりも大であり、3値を用いた変形射影座標で表現されるY2 +XYZ=X3 Z+aX2 Z2 +bZ4を満たす点P(X1,Y1,Z1)、点Q(X2,Y2,Z2)について、P+Q=R(X3,Y3,Z3)とP−Q=R’(X4,Y4,Z4)を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算のいずれかを行う複数の部分演算部により構成される楕円減算演算部が、楕円減算演算部に入力された上記点P(X1,Y1,Z1)、上記点Q(X2,Y2,Z2)について、A1 =Y2 Z1 2、A2 =Y1 Z2 2 、B1 =X2 Z1 、B2 =X1 Z2 、D=B1+B2、E=Z1Z2、F=DE、K=B1E、L=D2K、G=D2(F+aE2)、M=D2A1、Z4=F2を演算し、上記A1、A2、F、G、L、M、Z4を出力すると共に減算結果としてP−Q=R’(X4,Y4,Z4)を出力するステップと、
上記楕円減算演算部の部分演算部より少ない複数の部分演算部よりなる付加部が、付加部に入力された上記A1、A2、F、G、L、M、Z4について、C=A1+A2、H=CF、X3=C2+H+G、I=L+X3、J=M+X3、Y3=HI+Z4Jを演算するとともにZ3=Z4とし、加算結果としてP+Q=R(X3,Y3,Z3)を出力するステップと、
を有することを特徴とした楕円加減算プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002016730A JP3863021B2 (ja) | 2002-01-25 | 2002-01-25 | 楕円加減算装置及びそのプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002016730A JP3863021B2 (ja) | 2002-01-25 | 2002-01-25 | 楕円加減算装置及びそのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003216031A JP2003216031A (ja) | 2003-07-30 |
JP3863021B2 true JP3863021B2 (ja) | 2006-12-27 |
Family
ID=27652696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002016730A Expired - Fee Related JP3863021B2 (ja) | 2002-01-25 | 2002-01-25 | 楕円加減算装置及びそのプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3863021B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080012634A (ko) | 2006-08-04 | 2008-02-12 | 삼성전자주식회사 | 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치 |
-
2002
- 2002-01-25 JP JP2002016730A patent/JP3863021B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003216031A (ja) | 2003-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7970131B2 (en) | Elliptic curve cryptosystem apparatus, storage medium storing elliptic curve cryptosystem program, and elliptic curve cryptosystem arithmetic method | |
US7603558B2 (en) | Montgomery transform device, arithmetic device, IC card, encryption device, decryption device and program | |
US20120197956A1 (en) | Calculating unit for reducing an input number with respect to a modulus | |
JP2009500892A (ja) | 攻撃又は解析に対してデータ処理装置を保護するための装置及び方法 | |
US5796645A (en) | Multiply accumulate computation unit | |
US8417760B2 (en) | Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication | |
US7558817B2 (en) | Apparatus and method for calculating a result of a modular multiplication | |
KR101154845B1 (ko) | 스칼라 배산기 및 스칼라 배산프로그램 | |
JP3863021B2 (ja) | 楕円加減算装置及びそのプログラム | |
US8364737B2 (en) | Device and method for calculating a result of a sum with a calculating unit with limited word length | |
KR101128505B1 (ko) | 모듈러 곱셈 연산 방법 및 장치 | |
US7493356B2 (en) | Device and method for cryptoprocessor | |
JP3434220B2 (ja) | 逆元演算装置、及びそのプログラム記録媒体 | |
KR20140089230A (ko) | 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기 | |
CN113467752A (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
TW200400442A (en) | Apparatus and method for calculating an integer quotient | |
US9900154B2 (en) | Optimized hardward architecture and method for ECC point addition using mixed affine-jacobian coordinates over short weierstrass curves | |
JP2001202019A (ja) | 並列楕円演算装置及びそのプログラム記録媒体 | |
JP3691538B2 (ja) | ベクトルデータ加算方法及びベクトルデータ乗算方法 | |
JPH076025A (ja) | 冪剰余演算方法および装置 | |
JP3329440B2 (ja) | 事前計算を用いた複数生成元に対する演算装置及びそのプログラム記録媒体 | |
JP3390966B2 (ja) | 平方数を法とした剰余演算装置及びそのプログラム記録媒体 | |
JP3638493B2 (ja) | 楕円曲線自乗演算装置、およびこのプログラム記録媒体 | |
JP2004226516A (ja) | べき乗剰余演算方法及びそのプログラム | |
JP3966714B2 (ja) | 暗号処理方法、そのプログラム及びその記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060620 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060818 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20060818 |
|
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: 20060912 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060927 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101006 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111006 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121006 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121006 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131006 Year of fee payment: 7 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |