JP2001202019A - 並列楕円演算装置及びそのプログラム記録媒体 - Google Patents

並列楕円演算装置及びそのプログラム記録媒体

Info

Publication number
JP2001202019A
JP2001202019A JP2000013245A JP2000013245A JP2001202019A JP 2001202019 A JP2001202019 A JP 2001202019A JP 2000013245 A JP2000013245 A JP 2000013245A JP 2000013245 A JP2000013245 A JP 2000013245A JP 2001202019 A JP2001202019 A JP 2001202019A
Authority
JP
Japan
Prior art keywords
elliptic curve
multiplier
parallel
multipliers
elliptic
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.)
Pending
Application number
JP2000013245A
Other languages
English (en)
Inventor
Tetsutaro Kobayashi
鉄太郎 小林
Fumisato Hoshino
文学 星野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2000013245A priority Critical patent/JP2001202019A/ja
Publication of JP2001202019A publication Critical patent/JP2001202019A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】 複数の乗算器を備え、楕円曲線上の加算や2
倍演算を高速に可能とする。 【解決手段】 変形ヤコビ座標で表された入力点P(x
1,1,1,1 2)とQ(x2,2,2,2 2)の加算を例
に、乗算器が4つの場合とする。まず4つの乗算器でu
2 =z1 22 ,u1 =z2 21 ,z1 3=(z2 2)z2
それぞれ演算し(Step 1),h2 1 −u2 を求め、
2 =z1 32 ,s1 =z2 31 ,h2 ,z1 2 をそ
れぞれ4つの乗算器で求め(Step 2),r=s1 −s
2 を求め、u1 (h2),h3 =(h2)h,r2,z3 =z
1 2 hをそれぞれ4つの乗算器で求め(Step 3),
3 =−h3 −2u1 2 +r2 を求め、r(u1 2
−x 3),s1 3 ,z3 2をそれぞれ3つの乗算器で求め
(Step 4),y3=−s13 +r(u1 2 −x3
を求め、x3 ,y3 ,z3 ,z3 2を出力する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、例えば情報セキ
ュリティ技術(楕円曲線暗号/署名、素因数分解)を実
現するために用いられる楕円曲線上の演算装置及びその
プログラム記録媒体に関する。
【0002】
【従来の技術】楕円曲線上で公開鍵暗号やデジタル署名
を実現する場合、その処理時間のほとんどは楕円曲線上
のk倍演算に費やされる。一般に、暗号や署名には有限
体GF(q)上で定義される楕円曲線を使う。これをE
/GF(q)と表記する。qは素数または素数のべき乗
である。この発明は、いかなるqに対しても適用するこ
とができる。
【0003】楕円曲線上の点Pに対する加算を定義でき
る。通常の加算と区別するためにこれを、「楕円加算」
「楕円2倍演算」と呼ぶ。いずれも、有限体GF(q)
上の加減乗除算を組み合わせることで行うことができ
る。通常、k倍演算を構成するために、「楕円加算」
「楕円2倍演算」を組み合わせて行う方法が用いられて
おり、いずれもlog(k)に比例する回数行う必要がある。
【0004】
【発明が解決しようとする課題】近年は、1台の電子計
算機に複数の乗算プロセッサを持つアーキテクチャが増
えている。例えば、Pentium MMXや Pentium IIは、
一度に16bit の乗算を4つ同時に行えるプロセッサを
備えている。このような環境でk倍演算を高速に行う場
合、「楕円加算」「楕円2倍演算」を組み合わせて行う
方法を並列に行うことが難しいと言う点が問題となる。
【0005】この発明は、この問題を解決するために、
個々の「楕円加算」や「楕円2倍演算」を複数の乗算器
を用いて並列に行う装置である。
【0006】
【課題を解決するための手段】楕円曲線上の点の表現方
法によっては、「楕円加算」「楕円2倍演算」を並列的
に演算することができる。例えば、楕円曲線上の点P
(x1,1,1),Q(x2,2,2)がヤコビ座標で表さ
れているとすると、P+Q(x3,3,3)は以下の演算
式によって求められる。
【0007】 u1 =x1 2 22 =x2 1 21 =y1 2 32 =y2 1 3 h=u2 −u1 r=s2 −s13 =−h3 −2u1 2 +r23 =−s1 3 +r(u1 2 −x3) z3 =z1 2 h ここで、u1 とu2 ,s1 とs2 ,r2 とh2 等は独立
に計算することができることを考慮すると、2つ、また
はそれ以上の乗算器を持つ計算機で乗算を並列に行うこ
とによってP+Qを求めることができる。
【0008】ここでは、ヤコビ座標を用いた点どうしの
楕円加算の場合の例をあげたが、楕円2倍演算の場合も
同様に並列に行うことができる。また、プロジェクティ
ブ座標を用いた点どうしの楕円加算や楕円2倍演算にも
適用できる。さらに、ヤコビ座標を用いた点どうしの演
算には、(x,y,z)の3値だけでなく、(x,y,
z,z2)の4値、(x,y,z,az4)の4値、(x,
y,z,z2,z3)の5値を用いて楕円曲線上の点を表す
ことによって楕円加算や楕円2倍演算を高速に行う改良
版が存在するが、その場合にもこの発明を適用すること
ができる。
【0009】
【発明の実施の形態】並列に乗算を演算することによっ
て、楕円加算や楕円2倍を行う。楕円曲線暗号や楕円曲
線署名を行う装置を構成する場合は、楕円k倍演算を行
う必要があるが、上記楕円加算や楕円2倍を組み合わせ
て行うことによって、楕円k倍演算の処理全体が並列演
算で行われる効果がある。ヤコビ:楕円加算、2並列 図1に示す装置はヤコビ座標を用いた楕円加算装置であ
り、2つの乗算器を備えている場合を示している。
【0010】この装置をプログラムによって実行する場
合は、処理の流れは図9に示すようになる。入力値P,
Qは、楕円曲線 E:Y2 =X3 +aXZ4 +bZ6 上の点であり、P(x1,1,1),Q(x2,2,2)は
ヤコビ座標で表されている。P+Q(x3,3,3)を以
下の等式によって求める。
【0011】 u1 =x1 2 22 =x2 1 21 =y1 2 32 =y2 1 3 h=u2 −u1 r=s2 −s13 =−h3 −2u1 2 +r23 =−s1 3 +r(u1 2 −x3) z3 =z1 2 h この楕円曲線加算装置100は制御装置101に、GF
(q)乗算器102,103,GF(q)定数倍器10
6,GF(q)加算器107,GF(q)減算器108
及びメモリ109が接続されて構成される。
【0012】制御装置101は入力された点P(x1,
1,1),Q(x2,2,2)をメモリ109に格納する。 Step 1:制御装置101は、乗算器102を用いてw
1 =z1 2を、乗算器103を用いてw2 =z2 2を求め、
メモリ109に保存する。 Step 2:制御装置101は、乗算器102を用いてw
1 ′=z1 3=z1(z1 2)を、乗算器103を用いて
2 ′=z2 3=z2(z2 2) を求め、メモリ109に保存
する。
【0013】Step 3:制御装置101は、乗算器10
2を用いてu1 =x1(z2 2) を、乗算器103を用いて
2 =x2(z1 2) を求め、メモリ109に保存する。 Step 4:制御装置101は、乗算器102を用いてs
1 =y1(z2 3) を、乗算器103を用いてs2 =y2(z
1 3) を求め、メモリ109に保存する。
【0014】Step 5:制御装置101は、減算器10
8を用いてh=(u2 −u1)を演算し、またr=(s2
−s1)を演算し、その後、乗算器102を用いてh
2 を、乗算器103を用いてr2を求め、メモリ109
に保存する。 Step 6:制御装置101は、乗算器102を用いてh
3 を、乗算器103を用いてu1 2 を求め、メモリ1
09に保存する。
【0015】Step 7:制御装置101は、乗算器10
2を用いてs1 3 を、乗算器103を用いてz1 2
を求め、また定数倍器106で2u1 2 を求め、更に
加算器107と減算器108を用いてx3 =−h3 −2
1 2 +r2 として、メモリ109に保存する。 Step 8:制御装置101は、減算器108を用いてu
1 2 −x3 を演算した後、乗算器102を用いてr
(u1 2 −x3 )を、乗算器103を用いてz3 =z
1 2 hを求め、メモリ109に保存する。
【0016】Step 9:制御装置101は、減算器10
8を用いてy3 =−s1 3 +r(u1 2 −x3)を求
め、x3,3,3 を出力部に出力する。 この装置では、Step 1と5は2つの乗算器102,1
03が両方とも自乗を行うので、自乗器を備えた装置の
場合は、Step 1と5においては自乗器を用いることに
しても良い。ヤコビ:楕円2倍、2並列 図2に示す装置はヤコビ座標を用いた楕円2倍装置であ
り、2つの乗算器を備えている場合を示している。
【0017】この装置をプログラムによって実行する場
合は、その処理の手順は図10に示すようになる。入力
値Pは、楕円曲線 E:Y2 =X3 +aXZ4 +bZ6 上の点であり、P(x,y,z)はヤコビ座標で表され
ている。2P(x3,3,3)を以下の等式によって求め
る。
【0018】 s=4xy2 m=3x2 +az4 t=−2s+m23 =t y3 =−8y4 +m(s−t)=−8y4 +m(12x
2 −m2) z3 =2yz この楕円曲線2倍装置200は制御装置201に、GF
(q)乗算器202,203,GF(q)定数倍器20
6,GF(q)加算器207,GF(q)減算器208
及びメモリ209が接続されて構成される。
【0019】制御装置201は入力値P(x,y,z)
を入力してメモリ209に保存する。 Step 1:制御装置201は、乗算器202を用いてy
2 を、乗算器203を用いてz2 を求め、メモリ209
に保存する。 Step 2:制御装置201は、乗算器202を用いてx
2 を、乗算器203を用いてz4 =(z2)2 を求め、メ
モリ209に保存する。
【0020】Step 3:制御装置201は、乗算器20
2を用いてx(y2)を、乗算器203を用いてa(z4)
を求め、メモリ209に保存する。楕円曲線の係数aは
メモリ209に記憶してある。 Step 4:制御装置201は、定数倍器206で3x2
を求め、また加算器207を用いてm=3x2 +az4
を求め、その後、乗算器202を用いてy4 =(y2)2
を、乗算器203を用いてm2 を求め、メモリ209に
保存する。
【0021】Step 5:制御装置201は、定数倍器2
06を用いて12xy2 を求め、更に減算器208を用
いて(12xy2 −m2)を求め、その後、乗算器202
を用いてyzを、乗算器203を用いてm(12xy2
−m2)を求め、メモリ209を保存する。 Step 6:制御装置201は、x3 =t,また定数倍器
206を用いて8y4を求め、更に減算器208を用い
てy3 =−8y4 +m(12xy2−m2)、定数倍器2
06を用いてz3=2yzを求め、x3,3,3を出力部
に出力する。
【0022】この装置では、Step 1,2,4は2つの
乗算器が両方とも自乗を行うので、自乗器を備えた装置
の場合は、Step 1,2,4においては自乗器を用いる
ことにしても良い。また、a=−3の場合は、Step 2
を省略して、Step 3の乗算器203が3(x−z2)
(x+z2)の乗算を行うことによってmを求めても良
い。変形ヤコビ:楕円加算、4並列 図3に示す装置は変形ヤコビ座標を用いた楕円加算装置
であり、4つの乗算器を備えている場合を示している。
【0023】この装置をプログラムによって実行する場
合は、その処理手順は図11に示すようになる。入力値
P,Qは、楕円曲線 E:Y2 =X3 +aXZ4 +bZ6 上の点であり、それぞれP(x1,1,1,1 2) ,Q
(x2,2,2,2 2) の4つの値によって表している。
【0024】P+Q(x3,3,3 3 2) を以下の等式
によって求める。 u1 =x1 2 22 =x2 1 21 =y1 2 32 =y2 1 3 h=u2 −u1 r=s2 −s13 =−h3 −2u1 2 +r23 =−s1 3 +r(u1 2 −x3) z3 =z1 2 h z3 2=(z1 2 h)2 この楕円曲線加算装置300は制御装置301に、GF
(q)乗算器302,303,304,305,GF
(q)定数倍器306,GF(q)加算器307,GF
(q)減算器308及びメモリ309が接続されて構成
される。
【0025】制御装置301は入力値P(x1,1,1,
1 2),Q(x2,2,2,2 2)を入力してメモリ30
9に保存する。 Step 1:制御装置301は、乗算器302を用いてu
2 =z1 22 を、乗算器303を用いてu1 =z2 21
を、乗算器304を用いてz1 3=(z1 2)z1 を、乗算器
305を用いてz2 3=(z2 2)z2 を求め、メモリ309
に保存する。
【0026】Step 2:制御装置301は、減算器30
8を用いてh=u2 −u1 を求め、乗算器302を用い
てs2 =z1 32 を、乗算器303を用いてs1 =z2 3
1 を求め、乗算器304を用いてh2 を、乗算器30
5を用いてz1 2 を求め、メモリ309に保存する。 Step 3:制御装置301は、減算器308を用いてr
=s2 −s1 を求め、乗算器302を用いてu1(h2)
を、乗算器303を用いてh3 =(h2)hを、乗算器3
04を用いてr2 を、乗算器305を用いてz3 =z1
2 hを求め、メモリ309に保存する。
【0027】Step 4:制御装置301は、定数倍器3
06を用いて2u1 2 を求め、加算器307と減算器
308を用いてx3 =−h3−2u1 2 +r2 を求め、
減算器308を用いて(u1 2 −x3 )を求め、乗算
器302を用いて(u1 2−x3 )を、乗算器303を
用いてs13を、乗算器304を用いてz3 2を求め、メ
モリ309に保存する。
【0028】Step 5:制御装置301は、減算器30
8を用いてy3 =−s1 3 +r(u1 2 −x3)を求
め、x3,3,3,z3 2を出力部に出力する。この装置の
Step 1の前に、z1 2とz2 2を求めるStep を追加する
ことで、通常のヤコビ座標((x,y,z)の3値で点
を表す)を用いる場合の装置に変更することができる。
また、この装置の動作の1つのStep を2つに分割する
ことによって、乗算器が2つの装置へと容易に変更する
ことができる。
【0029】変形ヤコビ:楕円2倍、4並列 図4に示す装置は変形ヤコビ座標を用いた楕円2倍装置
であり、4つの乗算器を備えている場合を示している。
この装置をプログラムによって実行する場合は、その処
理手順は図12に示すようになる。入力値Pは、楕円曲
線 E:Y2 =X3 +aXZ4 +bZ6 上の点であり、P(x,y,z,z2)と4つの値よって
1つの楕円曲線上の点が表されている。2P(x3,3,
3,z3 2) を以下の等式によって求める。
【0030】 s=4xy2 m=3x2 +az4 t=−2s+m23 =t y3 =−8y4 +m(s−t)=−8y4 +m(12x
2 −m2) z3 =2yz z3 2=(2yz)2 この楕円曲線2倍装置400は制御装置401に、GF
(q)乗算器402,403,404,405,GF
(q)定数倍器406,GF(q)加算器407,GF
(q)減算器408及びメモリ409が接続されて構成
される。
【0031】制御装置401は入力値P(x,y,z,
2)を入力してメモリ409に保存する。 Step 1:制御装置401は、定数倍器406を用いて
2yを求め、乗算器402を用いてx2 を、乗算器40
3を用いてz4 =(z2)2 を、乗算器404を用いてy
2 を、乗算器405を用いてz3 =2yzを求め、メモ
リ409に保存する。
【0032】Step 2:制御装置401は、定数倍器4
06を用いて4xを求め、また定数倍器406を用いて
3x2 を求め、更に加算器407を用いてm=3x2
az4 を求め、その後、乗算器402を用いて4xy2
を、乗算器403を用いてm2 を、乗算器404を用い
てy4 を、乗算器405を用いてz3 2を求め、メモリ4
09に保存する。ただし、az4 は定数倍器406で行
う。
【0033】Step 3:制御装置401は、定数倍器4
06を用いて12xy2 を求め、更に減算器408を用
いて(12xy2 −m2)を求め、その後、乗算器402
を用いてm(12xy2 −m2)を求め、メモリ409に
保存する。 Step 4:制御装置401は、x3 =t,定数倍器40
6を用いて8y4 を求め、更に加算器407を用いてy
3 =−8y4 +m(12xy2 −m2)を求め、x3,3,
3,z3 2を出力部に出力する。
【0034】この装置は、a倍を高速に行うことができ
る手段がある場合のものである(例えば、a=±1の場
合など)。a倍を高速に行うことができない場合の装置
は、Step 1とStep 2の間にaz4 を求めるStep を
挿入することによって構成できる。また、この装置の動
作の1つのStep を2つに分割することによって、乗算
器が2つの装置へと容易に変更することができる。
【0035】宮地ヤコビ:楕円加算、4並列 図5に示す装置は宮地ヤコビ座標を用いた楕円加算装置
であり、4つの乗算器を備えている場合を示している。
この装置をプログラムによって実行する場合は、その処
理手順は図13に示すようになる。入力値P,Qは、楕
円曲線 E:Y2 =X3 +aXZ4 +bZ6 上の点であり、それぞれP(x1,1,1,az1 4),Q
(x2,2,2,az2 4)の4つの値によって表してい
る。
【0036】P+Q(x3,3,3,az3 4)を以下の等
式によって求める。 u1 =x1 2 22 =x2 1 21 =y1 2 32 =y2 1 3 h=u2 −u1 r=s2 −s13 =−h3 −2u1 2 +r23 =−s1 3 +r(u1 2 −x3) z3 =z1 2 h az3 4=a(z1 2 h)4 この楕円曲線加算装置500は制御装置501に、GF
(q)乗算器502,503,504,505,GF
(q)定数倍器506,GF(q)加算器507,GF
(q)減算器508及びメモリ509が接続されて構成
される。
【0037】制御装置501は入力値P(x1,1,1,
az1 4),Q(x2,2,2,az2 4)を入力してメモリ5
09に保存する。 Step 1:制御装置501は、乗算器502を用いてz
1 2を、乗算器503を用いてz2 2を、乗算器504を用
いてy1 2 を、乗算器505を用いてz1 2 を求
め、メモリ509に保存する。 Step 2:制御装置501は、乗算器502を用いてu
2 =z1 22 を、乗算器503を用いてu1 =z2 21
を、乗算器504を用いてz1 3=(z1 2)z1 を、乗算
器505を用いてd=(az1 4)(az2 4)を求め、メ
モリ509に保存する。
【0038】Step 3:制御装置501は、減算器50
8を用いてh=u2 −u1 を求め、乗算器502を用い
てs2 =(z1 3)y2 を、乗算器503を用いてs1
2 2(y1 2)を、乗算器504を用いてh2 を、乗算
器505を用いてa-1dを求め、メモリ509に保存す
る。 Step 4:制御装置501は、減算器508を用いてr
=s2−s1 を求め、乗算器502を用いてu1(h2)
を、乗算器503を用いてh3 =(h2)hを、乗算器5
04を用いてr2 を、乗算器505を用いてh4 =(h
2)2 を求め、メモリ509に保存する。
【0039】Step 5:制御装置501は、定数倍器5
06を用いて2u1 2 を求め、加算器507と減算器
508を用いてx3=−h3−2u1 3 +r2 を求め、
更に減算器508を用いて(u1 2 −x3 )を求め、
その後、乗算器502を用いてr(u1 2 −x3
を、乗算器503を用いてs1 3 を、乗算器504を
用いてz3 =(z1 2)hを、乗算器505を用いて
(az3 4) =(a-1d)(h4)を求め、メモリ509に保
存する。
【0040】Step 6:制御装置501は、減算器50
8を用いてy3 =−s1 3 +r(u1 2−x3)を求
め、x3,y3,z3,az3 4を出力部に出力する。 この装置のStep 3ではa-1との乗算があるが、aは楕
円曲線のパラメータであり、固定値なので予め計算して
求めておけば良い。また、この装置の動作の1つのSte
p を2つに分割することによって、乗算器が2つの装置
へと容易に変更することができる。
【0041】宮地ヤコビ:楕円2倍、3並列 図6に示す装置は宮地ヤコビ座標を用いた楕円2倍装置
であり、3つの乗算器を備えている場合を示している。
この装置をプログラムによって実行する場合は、その処
理手順は図14に示すようになる。入力値Pは、楕円曲
線 E:Y2 =X3 +aXZ4 +bZ6 上の点であり、P(x,y,z,az4)と4つの値よっ
て1つの楕円曲線上の点が表されている。2P(x3,
3,3,az3 4) を以下の等式によって求める。
【0042】 s=4xy2 m=3x2 +az4 t=−2s+m23 =t y3 =−8y4 +m(s−t)=−8y4 +m(12x
2 −m2) z3 =2yz az3 4=16(az4)y4 この楕円曲線2倍装置600は制御装置601に、GF
(q)乗算器602,603,604,GF(q)定数
倍器606,GF(q)加算器607,GF(q)減算
器608及びメモリ609が接続されて構成される。
【0043】制御装置601は入力値P(x,y,z,
az4)を入力してメモリ609に保存する。 Step 1:制御装置601は、乗算器602を用いてx
2 を、乗算器603を用いてy2 を、乗算器604を用
いてyzを求め、定数倍器606を用いてz3 =2yz
を求め、メモリ609に保存する。 Step 2:制御装置601は、定数倍器606を用いて
3x2 を求め、更に加算器607を用いてm=3x2
az4 を求め、また定数倍器606を用いて4xを求
め、その後、乗算器602を用いて4xy2 を、乗算器
603を用いてm2 を、乗算器604を用いてy4 を求
め、メモリ609に保存する。
【0044】Step 3:制御装置601は、定数倍器6
06を用いて12xy2 を求め、更に減算器608を用
いて(12xy2 −m2)を求め、その後、乗算器602
を用いてm(12xy2 −m2)を、定数倍器606を用
いて16y4を求め、乗算器603を用いてaz3 4
(16y4)(az4)を求め、メモリ609に保存する。 Step 4:制御装置601は、x3 =t,定数倍器60
6を用いて8y4 を求め、更に減算器608を用いてy
3 =−8y4 +m(12xy2 −m2)を求め、x3,3,
3,az3 4を出力部に出力する。
【0045】また、この装置の動作の1つのStep を2
つに分割することによって、乗算器が2つの装置へと変
更することができる。射影:楕円加算、4並列 図7に示す装置は射影座標を用いた楕円加算装置であ
り、4つの乗算器を備えている場合を示している。この
装置をプログラムによって実行する場合は、その処理手
順は図15に示すようになる。
【0046】入力値P,Qは、楕円曲線 E:Y2 =X3 +aXZ2 +bZ3 上の点であり、それぞれP(x1,1,1),Q(x2,
2,2)の3つの値によって表している。P+Q(x3,
3,3 )を以下の等式によって求める。 u=y2 1 −y1 2 v=x2 1 −x1 2 t=x2 1 +x1 2 α=u2 1 2 −v2 t x3 =vα y3 =u(v2 1 2 −α)−v3 1 23 =v3 1 2 この楕円曲線加算装置700は制御装置701に、GF
(q)乗算器702,703,704,705,GF
(q)定数倍器706,GF(q)加算器707,GF
(q)減算器708及びメモリ709が接続されて構成
される。
【0047】制御装置701は入力値P(x1,
1,1),Q(x2,2,2)を入力してメモリ709に保
存する。 Step 1:制御装置701は、乗算器702を用いてy
2 1 を、乗算器703を用いてy1 2 を、乗算器7
04を用いてx2 1 を、乗算器705を用いてx1
2 を求め、メモリ709に保存する。 Step 2:制御装置701は、減算器708を用いてu
=y2 1 −y1 2とv=x2 1 −x1 2 を求
め、その後、乗算器702を用いてu2 を、乗算器70
3を用いてv2を、乗算器704を用いてz12を求
め、メモリ709に保存する。
【0048】Step 3:制御装置701は、加算器70
7を用いてt=x2 1 +x1 2を求め、その後、乗
算器702を用いてu2 1 2 を、乗算器703を用
いてv2 tを、乗算器704を用いてv2 1 2 を、
乗算器705を用いてv3 を求め、メモリ709に保存
する。 Step 4:制御装置701は、減算器708を用いてα
=u2 1 2 −v2tを求め、乗算器702を用いて
vαを、乗算器703を用いてu×(v2 1 2
α)を、乗算器704を用いてv3 12を、乗算器7
05を用いてv3 1 2 を求め、メモリ709に保存
する。
【0049】Step 5:制御装置701は、x3 =v
α,y3 =u(v2 1 2 −α)−v3 1 2 ,z
3 =v3 1 2 を求め、x3,3,3 を出力部に出力
する。 この装置の動作の1つのStep を2つに分割することに
よって、乗算器が2つの装置へと容易に変更することが
できる。射影:楕円2倍、4並列 図8に示す装置は射影座標を用いた楕円2倍装置であ
り、4つの乗算器を備えている場合を示している。
【0050】この装置をプログラムによって実行する場
合は、その処理手順は図16に示すようになる。入力値
Pは、楕円曲線 E:Y2 =X3 +aXZ2 +bZ3 上の点であり、P(x,y,z)の3つの値によって1
つの楕円曲線上の点が表されている。2P(x3,3,
3 )を以下の等式によって求める。
【0051】 s=yz w=3x2 +az2 e=ys f=xe h=w2 −8f x3 =2sh y3 =w(4f−h)−8e23 =8s3 この楕円曲線2倍装置800は制御装置801に、GF
(q)乗算器802,803,804,805,GF
(q)定数倍器806,GF(q)加算器807,GF
(q)減算器808及びメモリ809が接続されて構成
される。
【0052】制御装置801は入力値P(x,y,
z,)を入力してメモリ809に保存する。 Step 1:制御装置801は、乗算器802を用いてx
2 を、乗算器803を用いてz2 を、乗算器804を用
いてs=yzを、乗算器805を用いてxyを求め、メ
モリ809に保存する。 Step 2:制御装置801は、定数倍器806を用いて
3x2 を求め、更に加算器807を用いてw=3x2
az2 を求め、その後、乗算器802を用いてe=ys
を、乗算器803を用いてw2 を、乗算器804を用い
てs2 を乗算器805を用いてf=(xy)sを求め、
メモリ809に保存する。
【0053】ただし、az2 は定数倍器806で求め
る。 Step 3:制御装置801は、定数倍器806を用いて
4f,8f,2sをそれぞれ求め、減算器808を用い
てh=w2 −8fを求め、更に(4f−h)を求め、乗
算器802を用いてx3 =2shを、乗算器803を用
いてw(4f−h)を、乗算器804を用いてe2 を、
乗算器804を用いてs3 を求め、メモリ809に保存
する。
【0054】Step 4:制御装置801は、定数倍器8
06を用いて8e2 を求め、更に減算器808を用いて
3 =w(4f−h)−8e2 ,z3 =8s3を求め、
3,3,3 を出力部に出力する。 この装置はa倍を高速に行うことができる手段がある場
合のものである(例えば、a=±1の場合など)。a倍
を高速に行うことができない場合の装置は、Step 1と
Step 2の間にaz2 を求めるStep を挿入することに
よって構成できる。
【0055】また、この装置の動作の1つのStep を2
つに分割することによって、乗算器が2つの装置へと容
易に変更することができる。上述した各装置はコンピュ
ータにプログラムを解読実行させて機能させることもで
きる。
【0056】
【発明の効果】複数の乗算器を備える楕円曲線上の演算
を行う装置で、演算を高速化することができる。例え
ば、ヤコビ座標を用いる場合、楕円加算のために乗算と
自乗を合わせて16回必要としていた。この発明の方法
では、2つの乗算器を備えた装置で、同様の演算を8ス
テップで行うことができる。
【0057】全体の演算の中で、乗算がボトルネックと
なっている場合、演算速度は約2倍となる。
【図面の簡単な説明】
【図1】この発明を楕円加算装置(ヤコビ座標2並列の
場合)に適用した実施例を示す図。
【図2】この発明を楕円2倍演算装置(ヤコビ座標2並
列の場合)に適用した実施例を示す図。
【図3】この発明を楕円加算装置(変形ヤコビ座標4並
列の場合)に適用した実施例を示す図。
【図4】この発明を楕円2倍演算装置(変形ヤコビ座標
4並列の場合)に適用した実施例を示す図。
【図5】この発明を楕円加算装置(宮地ヤコビ座標4並
列の場合)に適用した実施例を示す図。
【図6】この発明を楕円2倍演算装置(宮地ヤコビ座標
3並列の場合)に適用した実施例を示す図。
【図7】この発明を楕円加算装置(射影座標4並列の場
合)に適用した実施例を示す図。
【図8】この発明を楕円2倍演算装置(射影座標4並列
の場合)に適用した実施例を示す図。
【図9】図1に示した実施例(楕円加算、ヤコビ座標2
並列)の処理手順を示す流れ図。
【図10】図2に示した実施例(楕円2倍演算、ヤコビ
座標2並列)の処理手順を示す流れ図。
【図11】図3に示した実施例(楕円加算、変形ヤコビ
座標4並列)の処理手順を示す流れ図。
【図12】図4に示した実施例(楕円2倍演算、変形ヤ
コビ座標4並列)の処理手順を示す流れ図。
【図13】図5に示した実施例(楕円加算、宮地ヤコビ
座標4並列)の処理手順を示す流れ図。
【図14】図6に示した実施例(楕円2倍演算、宮地ヤ
コビ座標3並列)の処理手順を示す流れ図。
【図15】図7に示した実施例(楕円加算、射影座標4
並列)の処理手順を示す流れ図。
【図16】図8に示した実施例(楕円2倍演算、射影座
標4並列)の処理手順を示す流れ図。

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 m個(mは2以上の整数)の乗算器を備
    えた、楕円曲線上の2つの点PとQの入力に対してP+
    Qを出力する、楕円曲線加算を行う装置において、 楕円曲線上の加算を行うのに必要な複数の乗算が上記m
    個の乗算器で並列に行われることを特徴とする並列楕円
    演算装置。
  2. 【請求項2】 m個(mは2以上の整数)の乗算器を備
    えた、楕円曲線上の点Pの入力に対して2Pを出力す
    る、楕円曲線2倍を行う装置において、 楕円曲線上の2倍を行うのに必要な複数の乗算が上記m
    個の乗算器で並列に行われることを特徴とする並列楕円
    演算装置。
  3. 【請求項3】 請求項1または2記載の装置において、 楕円曲線上の点をヤコビ座標(Y2 =X3 +aXZ4
    bZ6 を満たす(X,Y,Z)の3値を用いて点を表
    す)を用いて表現していることを特徴とする並列楕円演
    算装置。
  4. 【請求項4】 請求項1または2記載の装置において、 楕円曲線上の点をY2 =X3 +aXZ4 +bZ6 を満た
    す(X,Y,Z,Z2)の4値を用いて表現していること
    を特徴とする並列楕円演算装置。
  5. 【請求項5】 請求項1または2記載の装置において、 楕円曲線上の点をY2 =X3 +aXZ4 +bZ6 を満た
    す(X,Y,Z,aZ 4)の4値を用いて表現しているこ
    とを特徴とする並列楕円演算装置。
  6. 【請求項6】 請求項1または2記載の装置において、 楕円曲線上の点を射影座標(Y2 =X3 +aXZ2 +b
    3 を満たす(X,Y,Z)の3値を用いて点を表す)
    を用いて表現していることを特徴とする並列楕円演算装
    置。
  7. 【請求項7】 m個(mは2以上の整数)の乗算器を備
    えた楕円曲線上の2つの点PとQの入力に対してP+Q
    を出力する楕円曲線加算を行う装置のコンピュータに、 上記PとQを入力して記憶手段に記憶する処理と、 楕円曲線上の加算を行うのに必要な複数の乗算中の独立
    に行えるものについて、上記P,Q中の所要の要素を記
    憶手段から読み出して上記m個の乗算器で並列に行っ
    て、これらの乗算結果を記憶手段に記憶する処理と、 上記楕円曲線上の加算を行うのに必要な複数の乗算中の
    独立に行えるものでまだ行っていないものについて、記
    憶手段からP,Qの中の所要の要素及び所要の演算結果
    を読み出して、上記m個の乗算器で並列に行ってこれら
    演算結果を記憶手段に記憶する処理と、 最終的に得られたP+Qの加算結果を出力する処理と、
    を少なくとも実行させるプログラムを記録した記録媒
    体。
  8. 【請求項8】 m個(mは2以上の整数)の乗算器を備
    え、楕円曲線上の点Pの入力に対して2Pを出力する楕
    円曲線2倍を行う装置のコンピュータに、 上記Pを入力して記憶手段に記憶する処理と、 楕円曲線上の2倍を行うのに必要な複数の乗算中の独立
    に行えるものについて、上記P中の所要の要素を記憶手
    段から読み出して、上記m個の乗算器で並列に行って、
    これらの乗算結果を記憶手段に記憶する処理と、 上記楕円曲線上の2倍を行うのに必要な複数の乗算中の
    独立に行えるものでまだ行っていないものについて、記
    憶手段からP中の所要の要素及び所要の演算結果を読み
    出して、上記m個の乗算器で並列に行って、これら演算
    結果を記憶手段に記憶する処理と、 最終的に得られた楕円曲線2倍値を出力する処理とを少
    なくとも実行させるプログラムを記録した記録媒体。
  9. 【請求項9】 請求項7または8記載の記録媒体におい
    て、 楕円曲線上の点をヤコビ座標(Y2 =X3 +aXZ4
    bZ6 を満たす(X,Y,Z)の3値を用いて点を表
    す)を用いて表現していることを特徴とする記録媒体。
  10. 【請求項10】 請求項7または8記載の記録媒体にお
    いて、 楕円曲線上の点をY2 =X3 +aXZ4 +bZ6 を満た
    す(X,Y,Z,Z2)の4値を用いて表現していること
    を特徴とする記録媒体。
  11. 【請求項11】 請求項7または8記載の記録媒体にお
    いて、 楕円曲線上の点をY2 =X3 +aXZ4 +bZ6 を満た
    す(X,Y,Z,aZ 4)の4値を用いて表現しているこ
    とを特徴とする記録媒体。
  12. 【請求項12】 請求項7または8記載の記録媒体にお
    いて、 楕円曲線上の点を射影座標(Y2 =X3 +aXZ2 +b
    3 を満たす(X,Y,Z)の3値を用いて点を表す)
    を用いて表現していることを特徴とする記録媒体。
JP2000013245A 2000-01-21 2000-01-21 並列楕円演算装置及びそのプログラム記録媒体 Pending JP2001202019A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000013245A JP2001202019A (ja) 2000-01-21 2000-01-21 並列楕円演算装置及びそのプログラム記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000013245A JP2001202019A (ja) 2000-01-21 2000-01-21 並列楕円演算装置及びそのプログラム記録媒体

Publications (1)

Publication Number Publication Date
JP2001202019A true JP2001202019A (ja) 2001-07-27

Family

ID=18540860

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000013245A Pending JP2001202019A (ja) 2000-01-21 2000-01-21 並列楕円演算装置及びそのプログラム記録媒体

Country Status (1)

Country Link
JP (1) JP2001202019A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004177582A (ja) * 2002-11-26 2004-06-24 Fujitsu Ltd 楕円曲線暗号装置、楕円曲線暗号演算方法
JP2009008930A (ja) * 2007-06-28 2009-01-15 Renesas Technology Corp 楕円曲線演算装置および楕円曲線演算方法

Cited By (3)

* Cited by examiner, † Cited by third party
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 富士通株式会社 楕円曲線暗号装置、楕円曲線暗号演算方法
JP2009008930A (ja) * 2007-06-28 2009-01-15 Renesas Technology Corp 楕円曲線演算装置および楕円曲線演算方法

Similar Documents

Publication Publication Date Title
De Win et al. A fast software implementation for arithmetic operations in GF (2 n)
US6876745B1 (en) Method and apparatus for elliptic curve cryptography and recording medium therefore
TW550498B (en) Method and apparatus for modular multiplying and calculating unit for modular multiplying
US20110161390A1 (en) Modular multiplication processing apparatus
US8862651B2 (en) Method and apparatus for modulus reduction
JP2003177670A (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法
US8300810B2 (en) Method for securely encrypting or decrypting a message
US7809133B2 (en) Randomized modular reduction method and hardware therefor
Eberle et al. Architectural extensions for elliptic curve cryptography over gf (2/sup m/) on 8-bit microprocessors
US7558817B2 (en) Apparatus and method for calculating a result of a modular multiplication
JP4354609B2 (ja) 有限体上の連立方程式求解装置及び逆元演算装置
Koc et al. Fast software exponentiation in GF (2/sup k/)
US6609141B1 (en) Method of performing modular inversion
JP2001202019A (ja) 並列楕円演算装置及びそのプログラム記録媒体
KR20020094256A (ko) 타원곡선암호화의 유한체 역원과 승산 장치 및 그 방법
Anagreh et al. Accelerate Performance for Elliptic Curve Scalar Multiplication based on NAF by Parallel Computing.
CN113467752A (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
JP4543143B2 (ja) 楕円曲線暗号装置、楕円曲線暗号演算方法
KR100974624B1 (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체
Hodjat et al. A scalable and high performance elliptic curve processor with resistance to timing attacks
JP4550232B2 (ja) 演算装置及び演算方法及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP3863021B2 (ja) 楕円加減算装置及びそのプログラム
Antao et al. Compact and flexible microcoded elliptic curve processor for reconfigurable devices
JP3329440B2 (ja) 事前計算を用いた複数生成元に対する演算装置及びそのプログラム記録媒体
JP4479135B2 (ja) 演算装置及び演算方法及び演算プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040629

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040824

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050125