JP2000181347A - 素体上楕円曲線上の点の演算方法およびその装置 - Google Patents
素体上楕円曲線上の点の演算方法およびその装置Info
- Publication number
- JP2000181347A JP2000181347A JP36149198A JP36149198A JP2000181347A JP 2000181347 A JP2000181347 A JP 2000181347A JP 36149198 A JP36149198 A JP 36149198A JP 36149198 A JP36149198 A JP 36149198A JP 2000181347 A JP2000181347 A JP 2000181347A
- Authority
- JP
- Japan
- Prior art keywords
- point
- elliptic curve
- doubling
- calculation
- processing
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
Abstract
コビアン座標を用いることで逆数演算を行うことなく加
算処理を可能とし、かつ付加的な座標を追加せずに高速
な処理を可能とする素体上楕円曲線上の点の演算方法を
提案する。 【解決手段】 素体上楕円曲線上の点演算方法は、2倍
算が連続する場合の初回の2倍算処理では、Y’=2Y
0,W0=aZ0 4を演算し(ステップS202)、
(X1,2Y1(=Y1’),Z1),F1=T0,F2=W0
を出力し、2回目以降は、現在の座標(Xi,2Yi(=
Yi’),Zi)を用いて(Xi+1,2Yi+1(=
Yi+1’),Zi+1)を演算し(ステップS204)、最
終回はYi=Yi/2を演算して(ステップS206)、
演算結果である(Xi,Yi,Zi)=2m(X0,Y0,Z
0)を出力する(ステップS207)ことを特徴とす
る。
Description
の点の演算方法、特に、楕円曲線上の点に乗数を乗算す
る際に、2進数系表現に変換された乗数に基づいて2倍
算処理および加算処理を組み合わせて演算を行う演算方
法およびこの演算方法を実現する素体上楕円曲線上の点
の演算装置に関する。
により、データベースの検索や電子メール、電子ニュー
スなどの電子化された情報をネットワークを経由して送
受信する機会が急速の増加してきている。さらに、これ
らを利用して、オンラインショッピングなどのサービス
も提供されつつある。しかし、それに伴って、ネットワ
ーク上の電子化されたデータを盗聴したり、改竄した
り、または他人になりすましてサービスを受けるなどの
違法行為についての問題が浮上してきている。特に、無
線を利用したネットワークにおいては、傍受が容易なた
めこれらを防止する対策が望まれている。
on technology)を応用した暗号化電子メールや利用者
認証システムが提案され、種々のネットワークにも導入
されつつあり、コンピュータネットワークにおいて暗号
化は必須の技術となりつつある。この意味でコンピュー
タネットワークにおいては暗号化は必須の技術であると
いえる。
公開鍵暗号系の2つの分類することができる。
を持つことにより暗号通信を行う方式である。すなわ
ち、秘密鍵暗号系では、あるメッセージを秘密の暗号鍵
に基づいて暗号化し相手に送り、受け手はこの暗号鍵を
用いて暗号分を複合化しもとのメッセージに戻して情報
を入手する。
受信者の公開鍵でメッセージを暗号化して送信し、受信
者は自分の秘密鍵でその暗号化メッセージを復号するこ
とで通信を行う方式である。すなわち、公開鍵暗号系で
は、公開鍵は暗号化のための鍵、秘密鍵は公開鍵により
暗号化された暗号を復号するための鍵であり、公開鍵で
暗号化した暗号が秘密鍵でのみ復号することができる。
ければならない鍵の数が通信相手の数だけ必要であり、
必要な総鍵数はn人のネットワークの場合、n(n−
1)/2個である。また、はじめて通信をする相手に対
しては、何らかの方法で秘密鍵の配送を行う必要がある
という点で欠点がある。この問題を避けるために、大規
模なネットワークでは、鍵管理センタを設置し、センタ
との間の秘密鍵のみを保管し、暗号通信を行う場合はセ
ンタから送信相手との秘密鍵を得る方法が用いられる。
この場合秘密鍵の総数はnとなる。
する鍵は自分の秘密鍵のみであり、必要な総秘密鍵数も
n人のネットワークの場合、n個である。また、はじめ
て通信する相手に対しては、公開鍵の配送を行えばよ
く、鍵管理センタを設置して、ユーザの公開鍵をn個公
開簿に登録し、センタから送信相手の公開鍵を得る方法
が用いられる。この場合、センタは公開鍵の改竄を防ぐ
だけで、秘密に保管する必要がない。ただし、公開鍵方
式は秘密鍵方式に比べて鍵のビット数が大きいため保管
に要するファイルサイズが大きくなるという問題を内包
している。
えば、送信するメッセージを秘密鍵で圧縮変換し、送信
文に付加して送り、受信側では同様に圧縮変換して比較
する方式がとられている。しかし、送受信が同じ鍵であ
るため受信者は認証データを偽造することができる。
で暗号化することができるのは本人だけであるという特
徴を利用する。送信者はメッセージを圧縮変換して秘密
鍵で暗号化し、送信文に付加して送り、受信者は送信者
の公開鍵で付加されたデータを復号化し、同様に圧縮変
換したものと比較する方式がとられている。この場合は
受信者が不正できない。
術は必要不可欠であるといえる。しかし、公開鍵暗号系
には、暗号化/復号化に大量の処理が必要であるという
大きな欠点があるため、一般には処理の速い秘密鍵暗号
系をメッセージの暗号化に、公開鍵暗号系は認証用にと
いうように組み合わせて用いられる場合が多い。
SI X 9.62などで標準化が進んでいるものに、楕円曲線
暗号(Elliptic Curve Cryptography)がある。これ
は、楕円曲線の離散対数問題に基づくもので、N. Kobli
tz("A course in number theory and cryptography",
Spring-Verlag, 1997)と、V. Miller("Use of ellipt
ic curves in cryptography", Advances in Cryptology
-Proceedings of Crypto'85, Lecture Notes in Comput
er Science, 218(1986), Spring-Verlag, pp 417-426)
により提案された。 〔楕円曲線暗号に用いる楕円曲線〕楕円曲線暗号に用い
る主な楕円曲線は、素体上の楕円曲線(標準形:y2=
x3+ax+b(modp),p:素数,a,b:GF
(p)の元)と、2の拡大体上の楕円曲線(標準形:y
2+xy=x3+ax2+b(mod f),f:n次既
約多項式,a,b:GF(2n)の元)である。この楕
円曲線上の点P(x,y)および単位元となる無限遠点
Οの集合は、加算に関して群をなす。楕円曲線は、この
点の演算による離散対数問題に基づく暗号である。 〔楕円曲線の点の演算と離散対数問題〕楕円曲線上の点
の演算は以下のものが定義されている。 加算:R=P+Q=Q+P 2倍算:R=2P=P+P 減算:R=P−Q 零点:Ο(無限遠点)=P−P スカラー倍算:kP=P+P+・・・+P(k個のPの
和) ここで、kPとPからkを計算することは困難である。
このことは、楕円曲線の離散対数問題と呼ばれており、
この離散対数問題に関連する計算の困難性に基づいて公
開鍵系の暗号とすることができる。
体上の)ディフィ−ヘルマン(Diffie-Hellman)鍵交換
と同様の鍵交換方式を実現することができる。楕円曲線
上のベースポイントをGとし、Aの秘密鍵をsaとしP
a=saGを演算して公開鍵とする。また、Bの秘密鍵
をsbとし、Pb=sbGを演算してこれを公開鍵とす
る。AはBの公開鍵Pbと自分の秘密鍵saから、KAB
=saPb=sasbGを演算することによって共通鍵を
得ることができる。また、同様にして、BはAの公開鍵
Paと自分の秘密鍵sbから、KBA=sbPa=sbsaG
を演算することによって共通鍵を得ることができる。こ
の方式は、ECDH(Elliptic Curve Diffie-Hellma
n)方式と呼ばれ、秘密鍵sa,sbをスカラー量として
楕円曲線上の点G、Pa、Pbに乗算する必要があり、
暗号化/復号化の際に大量の演算処理を必要とする。こ
の他にECDSA方式やECES方式なども提案されて
いるが、演算処理が大きくなる点については同様であ
る。 〔楕円曲線上の点のスカラー倍算〕楕円曲線上の点のス
カラー倍算は上記のように定義されるが、kの値が大き
くなると計算量が膨大となるため、通常は、加算と2倍
算を組み合わせたバイナリメソッド(Binary Method)
や加算と2倍算、減算を組み合わせたサインドバイナリ
メソッド(Signed Binary Method)、事前計算表を用い
て用いてバイナリメソッドを複数ビット単位で行うウィ
ンドウメソッド(Window Method)などを用いて計算を
行うことが提案されている。 〔素体上楕円曲線上における点の加算〕楕円曲線上の点
のスカラー倍算を行うためにバイナリーメソッドやウィ
ンドウメソッドを用いる場合、2進数系の表現に変換さ
れた乗数に基づいて、2倍算処理または加算処理と2倍
算処理を行って、楕円曲線上の点を次々に演算していく
ことにより結果を得ることができる。
od p)での点の演算を定義する。点P=(x0,
y0)、点Q=(x1,y1)、点R=(x2,y2)、単
位元Ο(無限遠点)とすると、点の加算は次のように定
義される。但し、−P=(x0,−y0)と定義される。
p) y2=((y1−y0)/(x1−x0))(x0−x1)−y0(mo
d p) 5.点Pの2倍算 R=P+P=2P=(x2,y2) x2=((3x0 2−a)/2y0)2−2x0 (mod p) y2=((3x0 2−a)/2y0)(x0−x2)−y0(mod
p) 〔点の三次元表現と演算〕上述の楕円曲線上の点の加算
は、もっとも基本的な方式であり、加算ごとに素体上の
逆数演算が必要となる。通常、素体上の逆数演算は大量
の処理が必要となるため、楕円曲線上の点を三次元表現
することで、逆数演算を行わずに加算処理を行う方式
が、D. V. ChudnovskyとG. V. Chudnovskyにより、"Seq
uences of Numbers Generated by Addition in Formal
Groups and New Primality and Factorization Tests",
Advances in Applied Mathematics, Vol. 7, 1986に提
案されている。このうち、ヤコビアン(Jacobian)座標
を用いれば、楕円曲線上の点は、(x,y)=(X/Z
2,Y/Z3)となる(X,Y,Z)に投影される。この
場合の点の加算および2倍算は、IEEE P1363に掲載され
ており、次のように示される。
−311379号に、ヤコビアン座標を用いた楕円曲線
上の点の演算を行う際に、演算途中の計算結果を利用し
て点の2倍算を連続実行するようにした素体上楕円曲線
上の点の演算方法を提案した。この演算方法のアルゴリ
ズムを下に示す。
乗算回数を削減することができる。IEEE P1363に記載さ
れているヤコビアン座標を用いた点の加算および2倍算
に必要な計算量および特願平10−311379号にお
けるべき値mの場合のべき乗倍算に必要な計算量を表1
に示す。
算、1/2算、3倍算、4倍算、8倍算の総称である。
加算、減算、2倍算、1/2算の計算量を1とし、加算
と2倍算とを1回ずつ実行することで可能な3倍算およ
び2倍算を2回実行することで可能な4倍算の計算量を
2とし、2倍算を3回実行することで可能な8倍算の計
算量を3とする。
IEEE P1363の方法では、10×べき値m回の乗算を必要
とするのに対して、特開平10−311379号のもの
では8m+2回となり、べき値mが多くなればそれだけ
乗算回数が削減されることとなる。しかしながら、加算
系の演算回数については、べき値mが多くなるにつれて
むしろ増加してしまう。
処理に比して非常に負担の小さい処理とされていたが、
ハードウェア乗算器を備えたプロセッサなどでは、乗算
処理と比較して加算系の処理が無視できるほど小さいも
のではない場合が多い。特に、DSPなどの高速なハー
ドウェア乗算器を持つプロセッサにおいて楕円曲線上の
点の加算、2倍算を高速に処理するためには、乗算回数
の最適化のみならず、加算系の回数の最適化が重要な課
題となる。
3次元に投影したヤコビアン座標を用いることで逆数演
算を行うことなく加算処理を可能とし、かつ付加的な座
標を追加せずに高速な処理を可能とする素体上楕円曲線
上の点の演算方法およびその装置を提案することにあ
る。
x+b(mod p)で表される素体上楕円曲線上の点
(x,y)に乗数を乗算する際に、2進数系表現に変換
された前記乗数に基づいて2倍算処理および加算処理を
組み合わせて演算を行う方法であって、前記素体上楕円
曲線上の点(x,y)を(x,y)=(X/Z2,Y/
Z3)となるヤコビアン座標表現(X,Y,Z)に変換
し、2倍算処理を連続して行う場合には、その連続した
2倍算処理の時点(t+1)での演算結果(Xt+1,Y
t+1,Zt+1)を現在のヤコビアン座標(Xt,Yt,
Zt)を用いて、 Yt’=2Yt Mt=3Xt 2+aZt 4 St=Xt(Yt’)2 Tt=(Yt’)4/2 Xt+1=Mt 2−2St Yt+1=Mt(St−Xt+1)−Tt Zt+1=Yt’Zt として演算処理を行うことを特徴とする素体上楕円曲線
上の点の演算方法である(ただし、計算式の記載順は、
計算順を特定するものではない)。
Y2の演算を、4×Y2として演算すると、乗算1回およ
び加算系2回の計算量を必要とする。これに対して、4
Y2の演算を(2Y)2として演算を行った場合、乗算1
回および加算系1回の計算量となり、前者の場合と比し
て加算系を1回削減することができる。上述した本発明
の演算方法では、Y座標の2倍の値であるY’の値を先
に計算し、このY’の値を用いることによって、ヤコビ
アン座標の点の2倍算における加算系の回数を削減して
いる。
(mod p)で表される素体上楕円曲線上の点(x,
y)に乗数を乗算する際に、2進数系表現に変換された
前記乗数に基づいて2倍算処理および加算処理を組み合
わせて演算を行う方法であって、前記素体上楕円曲線上
の点(x,y)を(x,y)=(X/Z2,Y/Z3)と
なるヤコビアン座標表現(X,Y,Z)に変換し、2倍
算処理を連続して行う場合には、初回は、 Y0’=2Y0 W0=aZ0 4 M0=3X0 2+W0 S0=X0(Y0’)2 T0=(Y0’)4 X1=M0 2−2S0 Y1’=2M0(S0−X1)−T0 Z1=Y0’Z0 を演算し、2回目以降はその連続した2倍算処理の時点
(t+1)での演算結果(Xt+1,Yt+1’,Zt+1)を
現在の座標(Xt,Yt’,Zt)を用いて、 Wt=Tt-1Wt-1 Mt=3Xt 2+Wt St=Xt(Yt’)2 Tt=(Yt’)4 Xt+1=Mt 2−2St Yt+1’=2Mt(St−Xt+1)−Tt Zt+1=Yt’Zt として演算処理を行い、最終回には、Yt+1=Yt+1’/
2を演算することを特徴とする素体上楕円曲線上の点の
演算方法を提案する。
=aZt 4からWt=2Tt-1Wt-1を演算していたのに対
し、この方法を用いることによって、Tt=(Yt’)4
=16Yt 4の演算結果を利用して、Wt=Tt-1Wt-1=
16Yt 4Wtとして演算することができる。したがっ
て、Ttの2倍算が不要となり計算量を削減することが
可能となる。
演算方法では、(X0,Y0,Z0)の2t倍点(Xt,
Yt,Zt)から2t+1倍点(Xt+1,Yt+1,Zt+1)を計
算していたが、上述の方法では、点(Xt,2Yt,
Zt)から点(Xt+1,2Yt+1,Zt +1)を計算すること
によって点の2のべき乗倍算ループ毎に必要なY座標の
2倍値の計算を削減することができ、初回のY0→2Y1
の2倍算および最終回のY座標の1/2算が増加するも
のの、全体として計算量を削減することが可能となる。
1)での演算処理において、前回の時点(t)での演算
結果(Xt,Yt’,Zt)を求める際に用いたWt-1=a
Zt- 1 4とTt-1=Yt-1 4とを用いて2倍算処理を行うと
ともに、この2倍算処理において求めたWt=aZt 4と
Tt=(Yt’)4とを記憶するように構成できる。
1)において、演算結果(Xt+1,Yt +1’,Zt+1)以
外の情報を出力しないように構成できる。
装置は、記憶手段と、演算手段と、レジスタ群と、出力
手段とを備えている。記憶手段は、y2=x3+ax+b
(mod p)で表される素体上楕円曲線上の点(x,
y)に対応して(x,y)=(X/Z2,Y/Z3)とな
るヤコビアン座標表現とした点(X,Y,Z)および乗
数が格納される領域を有する。演算手段は、記憶手段に
格納された乗数を2進数系表現に変換し、この乗数に基
づいて前記ヤコビアン座標に2倍算処理または加算処理
と2倍算処理とを選択的に行って次のヤコビアン座標を
演算する。レジスタ群は、演算手段による演算処理にお
いて途中の情報を一時的に格納する。出力手段は、演算
手段により演算された次のヤコビアン座標を記憶手段に
出力する。しかして、演算手段により演算されて記憶手
段に記憶されたヤコビアン座標を用いて、前記乗数に基
づく演算を連続的に行うとともに、演算手段による演算
が連続する2倍算処理である場合には、初回は、 Y0’=2Y0 W0=aZ0 4 M0=3X0 2+W0 S0=X0(Y0’)2 T0=(Y0’)4 X1=M0 2−2S0 Y1’=2M0(S0−X1)−T0 Z1=Y0’Z0 を演算し、2回目以降はその連続した2倍算処理の時点
(t+1)での演算結果(Xt+1,Yt+1’,Zt+1)を
現在の座標(Xt,Yt’,Zt)を用いて、 Wt=Tt-1Wt-1 Mt=3Xt 2+Wt St=Xt(Yt’)2 Tt=(Yt’)4 Xt+1=Mt 2−2St Yt+1’=2Mt(St−Xt+1)−Tt Zt+1=Yt’Zt として演算処理を行い、最終回には、Yt+1=Yt+1’/
2を演算することを特徴とする。
法を実現することができ、たとえば、2倍算処理を連続
して行う場合には、レジスタ群に残っているWおよびT
の値を用いて演算を行うことによって演算回数を軽減す
ることが可能となり、演算を高速化することができる。
演算装置の1実施形態を図1を用いて説明する。
モリを搭載したコンピュータにより実現されるものであ
って、主に記憶手段2と演算部3とで構成される。
ヤコビアン座標(X,Y,Z)や乗数kが格納される。
楕円曲線上の点に乗数kを乗算する際に、バイナリーメ
ソッドやウィンドウメソッドなどを用いて2倍算処理ま
たは加算処理と2倍算処理を選択的に行って楕円曲線上
の点を次のヤコビアン座標として演算する演算手段4を
備えている。また、演算部3は、演算手段4における演
算に必要な入力変数を一時的に格納しておくレジスタ群
5を備えている。また、演算部3は、演算手段4の演算
結果を一時的に格納する演算結果出力用レジスタ6を備
えている。
現時点でのヤコビアン座標(Xt,Yt,Zt)を2倍算
処理するか加算処理と2倍算処理とを行うかを、乗数k
の値に基づいて選択し、演算処理を行う。
た前述のアルゴリズムと同様であり、ここでは省略す
る。 〔第1実施形態〕2倍算処理が連続する、いわゆる2の
べき乗倍算を行う際に、その連続した2倍算処理の時点
(t+1)での演算結果(Xt+1,Yt+1,Zt+1)を現
在のヤコビアン座標(Xt,Yt,Zt)を用いて、 Yt’=2Yt Mt=3Xt 2+aZt 4 St=Xt(Yt’)2 Tt=(Yt’)4/2 Xt+1=Mt 2−2St Yt+1=Mt(St−Xt)−Tt Zt+1=Yt’Zt とする第1のアルゴリズムの場合について考える。この
ときの処理を表すフローチャートを図2に示す。
Z0)、出力するヤコビアン座標を(X1,Y1,Z1)と
し、計算過程におけるテンポラリ値を格納しておく場所
をレジスタ群F1〜F5とする。
されている(X0,Y0,Z0)および楕円パラメータa
をレジスタ群5に読み出す。ステップS101では、2
×Y 0、X0×X0、Z0×Z0を演算し、演算結果をそれ
ぞれレジスタF1、F4、F3に格納する。このとき、F1
=Y0’となっている。
を読み出してF3×F3を演算し、この演算結果をレジス
タF3に再度格納する。さらに、レジスタF4の値を読み
出して2×F4を演算しこの演算結果をF5に格納する。
ここでは、F3=Z0 4、F4=2X0 2となっている。
を読み出してa×F3を演算しこの演算結果をレジスタ
F2に格納する。さらに、レジスタF4、F5の値を読み
出してF4+F5を演算しこの演算結果をレジスタF4に
格納する。このとき、F2=aZ 0 4、F4=3X0 2となっ
ている。
の値を読み出してF4+F2を演算しこの演算結果をレジ
スタF4に格納する。このとき、F4=3X0 2+aZ0 4=
Mとなっている。
タF1の値を読み出してZ0×F1を演算しこの演算結果
をZ1として演算結果出力用レジスタ6に出力する。ま
た、レジスタF1の値を読み出してF1×F1を演算しこ
の演算結果をレジスタF3に格納する。このとき、Z1=
Y0’Z0、F3=(Y0’)2となっている。
タF3の値を読み出してX0×F3を演算しこの演算結果
をレジスタF5に格納する。また、レジスタF4の値を読
み出してF4×F4を演算しこの演算結果をレジスタF1
に格納する。このとき、F5=X 0×(Y0’)2=S、F
1=M2となっている。
を読み出して2×F5を演算しこの演算結果をX1として
演算結果出力用レジスタ6に出力する。このとき、X1
=2Sになっている。
とX1の値を読み出してF1−X1を演算しこの演算結果
をX1として演算結果出力用レジスタ6に出力する。こ
のとき、X1=M2−2Sとなっている。
を読み出してF3×F3の演算を行いこの演算結果をレジ
スタF1に格納する。また、レジスタF5の値およびX1
の値を読み出してF5−X1の演算を行いこの演算結果を
レジスタF5に格納する。このとき、F1=(Y0’)4、
F5=S−X1となっている。
を読み出してF1/2の演算を行いこの演算結果をレジ
スタF1に格納する。また、レジスタF5、F4の値を読
み出してF5×F4を演算しこの演算結果をY1として演
算結果出力用レジスタ6に出力する。このとき、F1=
(Y0’)4/2=8Y0 4、Y1=M(S−X1)となって
いる。
ジスタF1の値を読み出してY1−F1を演算しこの演算
結果をY1として演算結果出力用レジスタ6に出力す
る。このとき、Y1=M(S−X1)−Tとなっている。
記憶手段2に出力される。
(X1,Y1,Z1)の値を入力(X0,Y0,Z0)として
同じ動作を繰り返し行うことで続けて演算することが可
能である。 〔第2実施形態〕2倍算処理が連続する、いわゆる2の
べき乗倍算を行う際に、初回には、 Y0’=2Y0 W0=aZ0 4 M0=3X0 2+W0 S0=X0(Y0’)2 T0=(Y0’)4 X1=M0 2−2S0 Y1’=2M0(S0−X1)−T0 Z1=Y0’Z0 を演算し、2回目以降にはその連続した2倍算処理の時
点(t+1)での演算結果(Xt+1,Yt+1’,Zt+1)
を現在の座標(Xt,Yt’,Zt)を用いて、 Wt=Tt-1Wt-1 Mt=3Xt 2+Wt St=Xt(Yt’)2 Tt=(Yt’)4 Xt+1=Mt 2−2St Yt+1’=2Mt(St−Xt)−Tt Zt+1=Yt’Zt として演算処理を行い、最終回には、Yt+1=Yt+1’/
2を演算する第2のアルゴリズムの場合について考え
る。このときの処理を表すフローチャートを図3に示
す。
Z0)、連続する2倍算の途中におけるヤコビアン座標
を(Xi,Yi,Zi)とし、計算過程におけるテンポラ
リ値を格納しておく場所をレジスタ群F1〜F5とする。
されている(X0,Y0,Z0)、べき数mおよび楕円パ
ラメータaをレジスタ群5に読み出す。ステップS20
1では、連続した2倍算の演算回数をカウントするため
の計数iを初期化する。
ンを実行し、得られた(Xi,Yi,Zi)の値および
F1、F2の値をレジスタ群5内に出力する。
の演算回数iが今回行うべき数mに到達したか否かを判
別する。現在の連続2倍算の演算回数iが今回行うべき
数mに到達していない場合には、ステップS204に移
行する。ステップS204では、点の2倍算ループルー
チンを実行する。ここでは、レジスタ群5中の(Xi,
Yi,Zi)の値およびF1、F2の値を入力X0,Y0,Z
0,T0,W0とし、演算の結果得られる値を再度(Xi,
Yi,Zi)、F1、F2の値としてレジスタ群5に出力す
る。
の演算回数iをインクリメントする。この後、ステップ
S203に移行する。
倍算の演算回数iが今回行うべき数mに到達したと判断
した場合には、ステップS206に移行する。ステップ
S206では、レジスタ群5よりYiの値を読み出して
Yi/2を演算しこの演算結果をYiとしてレジスタ群5
に出力する。ステップS207では、(Xi,Yi,
Zi)の値を2m(X0,Y0,Z0)として演算結果出力
用レジスタ6に出力する。
チンを図4に示す。
されている(X0,Y0,Z0)および楕円パラメータa
をレジスタ群5に読み出す。
0、Z0×Z0を演算し、演算結果をそれぞれレジスタ
F1、F4、F3に格納する。このとき、F1=Y0’、F4
=X0 2、F3=Z0 2となっている。
を読み出してF3×F3を演算し、この演算結果をレジス
タF3に再度格納する。さらに、レジスタF4の値を読み
出して2×F4を演算しこの演算結果をF5に格納する。
ここでは、F3=Z0 4、F5=2X0 2となっている。
を読み出してa×F3を演算しこの演算結果をレジスタ
F2に格納する。さらに、レジスタF4、F5の値を読み
出してF4+F5を演算しこの演算結果をレジスタF4に
格納する。このとき、F2=aZ 0 4=W0、F4=3X0 2
となっている。
の値を読み出してF4+F2を演算しこの演算結果をレジ
スタF4に格納する。このとき、F4=3X0 2+aZ0 4=
M0となっている。
タF1の値を読み出してZ0×F1を演算しこの演算結果
をZiとして演算結果出力用レジスタ6に出力する。ま
た、レジスタF1の値を読み出してF1×F1を演算しこ
の演算結果をレジスタF3に格納する。このとき、Zi=
Y0’Z0、F3=(Y0’)2となっている。
タF3の値を読み出してX0×F3を演算しこの演算結果
をレジスタF5に格納する。また、レジスタF4の値を読
み出してF4×F4を演算しこの演算結果をレジスタF1
に格納する。このとき、F5=X 0×(Y0’)2=S0、
F1=M0 2となっている。
を読み出して2×F5を演算しこの演算結果をXiとして
演算結果出力用レジスタ6に出力する。このとき、Xi
=2S 0になっている。
とXiの値を読み出してF1−Xiを演算しこの演算結果
をXiとして演算結果出力用レジスタ6に出力する。こ
のとき、Xi=M0 2−2S0となっている。
を読み出してF3×F3の演算を行いこの演算結果をレジ
スタF1に格納する。また、レジスタF5の値およびXi
の値を読み出してF5−Xiの演算を行いこの演算結果を
レジスタF5に格納する。このとき、F1=(Y0’)4=
T0、F5=S−Xiとなっている。
の値を読み出してF5×F4の演算を行いこの演算結果を
Yiとして演算結果出力用レジスタ6に出力する。この
とき、Yi=M0(S0−Xi)となっている。
して2×Yiを演算しこの演算結果をYiとして演算結果
出力用レジスタ6に出力する。このとき、Yi=2M
0(S0−Xi)となっている。
ジスタF1の値を読み出してYi−F1を演算しこの演算
結果をYiとして演算結果出力用レジスタ6に出力す
る。このとき、Yi=2M0(S0−Xi)−T0となって
いる。
たXi,Yi,Zi,F1,F2を記憶手段2に出力する。
このあと、メインルーチンに復帰する。
倍算の初回において、Y0’=2Y0およびW0=aZ0 4
を演算し、これらに基づいて演算した結果、出力される
(Xi,Yi,Zi)の値は、実際のヤコビヤン座標
(X1,Y1,Z1)に対して(X1,2Y1,Z1)となっ
ている。
チンについて、図5により説明する。この2倍算ループ
ルーチンでは、実際のヤコビヤン座標を(Xt,Yt,Z
t)とすると、(Xt,2Yt,Zt)を入力として(X
t+1,2Yt+1,Zt+1)を演算してこれを出力としてい
る。
されている(Xi,Yi,Zi)およびレジスタF1(=T
i-1)、F2(=Wi-1)の値を入力として読み出す。
その演算結果をレジスタF2に格納する。また、Xi×X
iを演算しその演算結果をレジスタF3に格納する。この
とき、F2=Wi、F3=Xi 2となっている。
を読み出して2×F3を演算しこの演算結果をF5に格納
する。ここでは、F4=2Xi 2となっている。
の値を読み出してF5+F3を演算しこの演算結果をレジ
スタF5に格納する。このとき、F5=3Xi 2となってい
る。
の値を読み出してF2+F5を演算しこの演算結果をレジ
スタF5に格納する。このとき、F5=3Xi 2+Wi=Mi
となっている。
み出してYi×Ziを演算しこの演算結果をZiとして演
算結果出力用レジスタ6に出力する。また、Yi×Yiを
演算しこの演算結果をレジスタF4に格納する。ここで
は、入力されるXi,Yi,Ziに対してZi+1を演算して
Ziとして出力しており、演算としてはZi+1=Yi’Z i
を実行したこととなる。また、レジスタF4に格納され
る値は、F4=(Yi’) 2となっている。
タF4の値を読み出してXi×F4を演算しこの演算結果
をレジスタF3に格納する。また、レジスタF5の値を読
み出してF5×F5を演算しこの演算結果をレジスタF1
に格納する。このとき、F3=X i×(Yi’)2=Si、
F1=Mi 2となっている。
を読み出して2×F3を演算しこの演算結果をXiとして
演算結果出力用レジスタ6に出力する。ここでは、入力
されるXi,Yi,Ziに対してXi+1を演算してXiとし
て出力しており、演算としてはXi+1=2Siを実行した
こととなる。
とXiの値を読み出してF1−Xiを演算しこの演算結果
をXiとして演算結果出力用レジスタ6に出力する。こ
のとき、Xi+1=Mi 2−2Siを演算したこととなる。
を読み出してF4×F4の演算を行いこの演算結果をレジ
スタF1に格納する。また、レジスタF3の値およびXi
の値を読み出してF3−Xiの演算を行いこの演算結果を
レジスタF3に格納する。このとき、F1=(Yi’)4=
Ti、F3=Si−Xiとなっている。
の値を読み出してF5×F3の演算を行いこの演算結果を
Yiとして演算結果出力用レジスタ6に出力する。ここ
では、入力されるXi,Yi,Ziに対してYi+1を演算し
てYiとして出力しており、演算としてはYi+1=M
i(Si−Xi+1)を実行したこととなる。
して2×Yiを演算しこの演算結果をYiとして演算結果
出力用レジスタ6に出力する。このとき、Yi+1=2Mi
(Si−Xi+1)を演算したこととなる。
ジスタF1の値を読み出してYi−F1を演算しこの演算
結果をYiとして演算結果出力用レジスタ6に出力す
る。このとき、Yi+1=2Mi(Si−Xi+1)−Tiを演
算したこととなる。
たXi,Yi,Zi,F1,F2を記憶手段2に出力する。
このあと、メインルーチンに復帰する。
の計算量を従来例による場合と本発明による場合とで比
較したものを表2に示す。
形態を採用することができる。この場合には、IEEE P13
63に記載されている従来例の場合と乗算回数は同じであ
るが、加算系の演算回数を13回から9回に削減でき
る。
第2実施形態を採用することができる。このとき、特願
平10−311379号に記載の従来例の場合と同様に
乗算回数は8m+2となる。しかしながら、加算系の演
算回数が従来例の場合、14m−1回であるのに対し、
本発明の方法では8m+2回となり、大幅に計算量を削
減することができる。
(テキサスインスツルメンツ社製TMS320C6x)
に実装したところ、特願平10−311379号に記載
の従来の方法に比して、楕円曲線上の任意点のスカラー
倍算が6%高速化することがでい、この結果楕円曲線暗
号を用いたDSA署名確認処理が従来法よりも5%高速
化された。
の演算において、加算系の演算処理を削減することがで
き、特に、2倍算処理が連続する場合に計算量を削減
し、楕円曲線上の点のスカラー倍算を行った場合、演算
の高速化を図ることが可能となる。
Claims (5)
- 【請求項1】y2=x3+ax+b(mod p)で表さ
れる素体上楕円曲線上の点(x,y)に乗数を乗算する
際に、2進数系表現に変換された前記乗数に基づいて2
倍算処理および加算処理を組み合わせて演算を行う方法
であって、 前記素体上楕円曲線上の点(x,y)を(x,y)=
(X/Z2,Y/Z3)となるヤコビアン座標表現(X,
Y,Z)に変換し、2倍算処理を連続して行う場合に
は、その連続した2倍算処理の時点(t+1)での演算
結果(Xt+1,Yt+1,Zt+1)を現在のヤコビアン座標
(Xt,Yt,Zt)を用いて、 Yt’=2Yt Mt=3Xt 2+aZt 4 St=Xt(Yt’)2 Tt=(Yt’)4/2 Xt+1=Mt 2−2St Yt+1=Mt(St−Xt+1)−Tt Zt+1=Yt’Zt として演算処理を行うことを特徴とする素体上楕円曲線
上の点の演算方法。 - 【請求項2】y2=x3+ax+b(mod p)で表さ
れる素体上楕円曲線上の点(x,y)に乗数を乗算する
際に、2進数系表現に変換された前記乗数に基づいて2
倍算処理および加算処理を組み合わせて演算を行う方法
であって、前記素体上楕円曲線上の点(x,y)を
(x,y)=(X/Z2,Y/Z3)となるヤコビアン座
標表現(X,Y,Z)に変換し、2倍算処理を連続して
行う場合には、初回は、 Y0’=2Y0 W0=aZ0 4 M0=3X0 2+W0 S0=X0(Y0’)2 T0=(Y0’)4 X1=M0 2−2S0 Y1’=2M0(S0−X1)−T0 Z1=Y0’Z0 を演算し、2回目以降はその連続した2倍算処理の時点
(t+1)での演算結果(Xt+1,Yt+1’,Zt+1)を
現在の座標(Xt,Yt’,Zt)を用いて、 Wt=Tt-1Wt-1 Mt=3Xt 2+Wt St=Xt(Yt’)2 Tt=(Yt’)4 Xt+1=Mt 2−2St Yt+1’=2Mt(St−Xt+1)−Tt Zt+1=Yt’Zt として演算処理を行い、最終回には、Yt+1=Yt+1’/
2を演算することを特徴とする素体上楕円曲線上の点の
演算方法。 - 【請求項3】連続した2倍算処理の時点(t+1)での
演算処理において、前回の時点(t)での演算結果(X
t,Yt’,Zt)を求める際に用いたWt-1=aZt-1 4と
Tt- 1=(Yt-1’)4とを用いて2倍算処理を行うとと
もに、この2倍算処理において求めたWt=aZt 4とTt
=(Yt’)4とを記憶しておくことを特徴とする、請求
項2に記載の素体上楕円曲線上の点の演算方法。 - 【請求項4】連続した2倍算処理の時点(t+1)にお
いて、演算結果(Xt+1,Yt+1’,Zt+1)以外の情報
を出力しないことを特徴とする、請求項2または3に記
載の素体上楕円曲線上の点の演算方法。 - 【請求項5】y2=x3+ax+b(mod p)で表さ
れる素体上楕円曲線上の点(x,y)に対応して(x,
y)=(X/Z2,Y/Z3)となるヤコビアン座標表現
とした点(X,Y,Z)および乗数が格納される領域を
有する記憶手段と、 前記記憶手段に格納された乗数を2進数系表現に変換
し、この乗数に基づいて前記ヤコビアン座標に2倍算処
理または加算処理と2倍算処理とを選択的に行って次の
ヤコビアン座標を演算する演算手段と、 前記演算手段による演算処理において途中の情報を一時
的に格納するレジスタ群と、 前記演算手段により演算された次のヤコビアン座標を前
記記憶手段に出力する出力手段と、 を備え、前記演算手段により演算されて前記記憶手段に
記憶されたヤコビアン座標を用いて、前記乗数に基づく
演算を連続的に行うとともに、前記演算手段による演算
が連続する2倍算処理である場合には、初回は、 Y0’=2Y0 W0=aZ0 4 M0=3X0 2+W0 S0=X0(Y0’)2 T0=(Y0’)4 X1=M0 2−2S0 Y1’=2M0(S0−X1)−T0 Z1=Y0’Z0 を演算し、2回目以降はその連続した2倍算処理の時点
(t+1)での演算結果(Xt+1,Yt+1’,Zt+1)を
現在の座標(Xt,Yt’,Zt)を用いて、 Wt=Tt-1Wt-1 Mt=3Xt 2+Wt St=Xt(Yt’)2 Tt=(Yt’)4 Xt+1=Mt 2−2St Yt+1’=2Mt(St−Xt+1)−Tt Zt+1=Yt’Zt として演算処理を行い、最終回には、Yt+1=Yt+1’/
2を演算することを特徴とする素体上楕円曲線上の点の
演算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP36149198A JP3615405B2 (ja) | 1998-12-18 | 1998-12-18 | 素体上楕円曲線上の点の演算方法およびその装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP36149198A JP3615405B2 (ja) | 1998-12-18 | 1998-12-18 | 素体上楕円曲線上の点の演算方法およびその装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000181347A true JP2000181347A (ja) | 2000-06-30 |
JP3615405B2 JP3615405B2 (ja) | 2005-02-02 |
Family
ID=18473799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP36149198A Expired - Fee Related JP3615405B2 (ja) | 1998-12-18 | 1998-12-18 | 素体上楕円曲線上の点の演算方法およびその装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3615405B2 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004177582A (ja) * | 2002-11-26 | 2004-06-24 | Fujitsu Ltd | 楕円曲線暗号装置、楕円曲線暗号演算方法 |
JP2006259734A (ja) * | 2005-03-15 | 2006-09-28 | Microsoft Corp | 重み付き射影座標用の楕円曲線点8倍化 |
JP2006259735A (ja) * | 2005-03-15 | 2006-09-28 | Microsoft Corp | Simd処理を用いた楕円曲線点8倍化 |
JP2011512556A (ja) * | 2008-02-15 | 2011-04-21 | トムソン ライセンシング | 楕円曲線上の多数の点を計算する装置及び方法 |
US8180047B2 (en) | 2006-01-13 | 2012-05-15 | Microsoft Corporation | Trapdoor pairings |
US8208626B2 (en) | 2006-08-04 | 2012-06-26 | Samsung Electronics Co., Ltd. | Apparatus for performing a fault detection operation and method thereof |
-
1998
- 1998-12-18 JP JP36149198A patent/JP3615405B2/ja not_active Expired - Fee Related
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004177582A (ja) * | 2002-11-26 | 2004-06-24 | Fujitsu Ltd | 楕円曲線暗号装置、楕円曲線暗号演算方法 |
JP4543143B2 (ja) * | 2002-11-26 | 2010-09-15 | 富士通株式会社 | 楕円曲線暗号装置、楕円曲線暗号演算方法 |
JP2006259734A (ja) * | 2005-03-15 | 2006-09-28 | Microsoft Corp | 重み付き射影座標用の楕円曲線点8倍化 |
JP2006259735A (ja) * | 2005-03-15 | 2006-09-28 | Microsoft Corp | Simd処理を用いた楕円曲線点8倍化 |
US8180047B2 (en) | 2006-01-13 | 2012-05-15 | Microsoft Corporation | Trapdoor pairings |
US8208626B2 (en) | 2006-08-04 | 2012-06-26 | Samsung Electronics Co., Ltd. | Apparatus for performing a fault detection operation and method thereof |
JP2011512556A (ja) * | 2008-02-15 | 2011-04-21 | トムソン ライセンシング | 楕円曲線上の多数の点を計算する装置及び方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3615405B2 (ja) | 2005-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7961874B2 (en) | XZ-elliptic curve cryptography with secret key embedding | |
US6243467B1 (en) | Method of elliptic curve cryptographic digital signature generation and verification using reduced base tau expansion in non-adjacent form | |
US7379546B2 (en) | Method for XZ-elliptic curve cryptography | |
US6202076B1 (en) | Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed | |
US20110161390A1 (en) | Modular multiplication processing apparatus | |
EP0704124A1 (en) | A cryptographic method | |
WO1993006672A1 (en) | Method and apparatus for public key exchange in a cryptographic system | |
EP1306750A2 (en) | Multi-scalar multiplication computation in elliptic curve signature verification | |
US6898284B2 (en) | Cryptographic identification and digital signature method using efficient elliptic curve | |
JP4783382B2 (ja) | モンゴメリ法用乗算剰余計算装置 | |
EP1330702B1 (en) | Method and system of using an insecure crypto-accelerator | |
EP0899907B1 (en) | Apparatus for processing bivectors and encrypting system including the same | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
US6993136B2 (en) | Cryptographic key exchange method using efficient elliptic curve | |
JP2003098962A (ja) | 楕円曲線スカラー倍計算方法及び装置並びに記録媒体 | |
JP2000132376A (ja) | 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体 | |
JP4177526B2 (ja) | 乗算剰余演算方法および乗算剰余回路 | |
JP4690819B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 | |
JP3616897B2 (ja) | モンゴメリ法による乗算剰余計算装置 | |
Pandey et al. | An RNS implementation of the elliptic curve cryptography for IoT security | |
JP3615405B2 (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
KR100340102B1 (ko) | 알에스에이 공개키 암호 고속화 장치 및 방법 | |
JP3797808B2 (ja) | スカラー倍算方法およびその装置 | |
JP2000137436A (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
JP2005055488A (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040427 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040624 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040713 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040913 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20040924 |
|
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: 20041026 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041029 |
|
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: 20081112 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081112 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091112 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101112 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101112 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111112 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111112 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121112 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121112 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131112 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |