JP3401196B2 - 事前計算を用いた複数生成元に対する演算装置、そのプログラム記録媒体、及び演算方法 - Google Patents
事前計算を用いた複数生成元に対する演算装置、そのプログラム記録媒体、及び演算方法Info
- Publication number
- JP3401196B2 JP3401196B2 JP25557298A JP25557298A JP3401196B2 JP 3401196 B2 JP3401196 B2 JP 3401196B2 JP 25557298 A JP25557298 A JP 25557298A JP 25557298 A JP25557298 A JP 25557298A JP 3401196 B2 JP3401196 B2 JP 3401196B2
- Authority
- JP
- Japan
- Prior art keywords
- sum
- variable
- value
- power
- register
- 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
Description
リティ技術に利用され、事前計算を用いて生成元が複数
存在するものを算出する装置およびそのプログラム記録
媒体に関するものである。
よる有限体上の1つの生成元に対する演算方式(藤崎,
太田,“べき乗剰余計算における累乗テーブル法の利用
についての考察,”暗号と情報セキュリティシンポジウ
ムSCIS93−4C,1993)の説明をする。この
方式は固定されたg(∈Z/qZ)と固定でないnに対
してgn を求める方式である。
乗、…、gのbt 乗を事前計算してメモリ手段に蓄積し
ておく。さらにat を以下のように2進展開する。 at =Σj=0 ktCj (t)2j (但しCj (t)∈
{0,1} ここで係数Cj (t)が1となる2j と、そのときのt
を組とした集合をSとする。すなわち集合S=
{(2j ,t)|Cj (it)=1,0<t<r}である。
よりなるx、つまりx=(x1 ,x 2 )∈Sに対して第
1項を取り出す関数をPr(x)=x1 とおき、 ma≡max(Pr (s)) (但し∀s ∈S) と定義する。即ち集合Sのすべての要素の各第1項を取
出す関数Pr (s)を最大値をmaとする。更にsum,
dと2つの変数を用意し、sum=1,d=maを初期
設定する。(★)集合S中の全2j 要素に対し、dと一
致するものを探索し、以下のような処理を施す。
(2j ,t)|Cj (t)=1のt)を用いてgのbt
乗をメモリから読出し、これにsumを乗算して新たな
sumとする。 ・上記以外…何もしない。 d>1ならばsum←sum×sumを行い、d←d/
2とし(★)の処理に戻り処理を続行する。d=1なら
ば処理を終了して、そのときのsumを演算結果として
出力する。これは事前計算を用いた櫛型演算方式であ
る。
を行う場合は個々の生成元に対して計算を行い、最後に
これら計算結果の積をとることで求める。この従来方式
の具体的な数値例を図10に挙げる。この例はg1 の3
52乗とg2 の406乗との積を求める場合である。図
10Aはg1 の352の計算過程を図10Bはg2 の4
06乗の計算過程をそれぞれ描いたものである。g1 の
352乗における352を10進展開し352とし、さ
らにこの各桁の値3,5,2を各々2進展開し、例えば
5=1×22 +0×21 +1×20 とし、係数C
i (t)が1となる2 j の値、5の場合は22 と20 を
グラフ上に×印にてプロットしてある。g2 の406乗
についても同様の処理が施してある。
を例に挙げて説明する。3,5,2の2進展開で100
の位の第1項は21 であり、10の位の第1項は22 で
あり、1の位の第1項は21 であるから、プロットの中
で最も値が大きいのは10の位にプロットのある22 =
4である。従ってma=4であり、変数dは4から処理
がスタートする。なお変数sumの初期値としてsum
=1を与える。
の位のみである。その係数Cj (t)=Cj (1)より
101 =10であってg1 10 をメモリより取り出しsu
m=sum×g1 10 =g1 10 とする。ここでd>1かd
=1かを判定し、d>1であるのでsum←sum×s
um=g1 10 ×g1 10 =g1 20 とする。このsum(=
g1 20 )がd=4のときの結果となる。次にd←d/2
を行いd=2=21 とする。
位と1の位である。従ってg1 100とg1 1をメモリより取
り出し、sum=sum×g1 101=g1 121とする。この
時はd>1であるのでsum←sum×sum=g1 121
×g1 121=g1 242とする。このsum(=g1 242)がd
=2のときの結果となる。次にd←d/2を行いd=1
となる。この時、プロットは100の位と10の位とで
あり、g1 100とg1 10がメモリより取り出されsum×
g1 110=g1 352となり、この時、d=1であるから、演
算結果としてsum=g1 352を得る。
行われてg2 406が得られる。この結果g2 406とg1 の結
果であるg1 352 との積をとり、最終的なg1 352 g2
406を得る。このように複数の生成元が存在する場合は
その生成元の数だけ上記方式を繰り返すことになる。
成元に対する演算方式(藤崎、太田、“べき乗剰余計算
における累乗テーブル法の利用についての考察”、暗号
と情報セキュリティシンポジウムSCIS93−4C,
1993)には次の方式も示されている。即ちこの方式
は固定されたg(∈Z/qZ)と固定でないnに対して
gn を求める方式である。
する。そのxビット単位のブロックを下位よりN (0) ,
N(1) ,N(2) ,…とする。今
る。そしてsumとdとの2つの変数を用意し、sum
=1,d=x−1を初期設定する。(★)各々のjに対
して次式を演算する。A[j]はAの第jビット目を表
わす。
1として(★)へ戻る。d=1ならば終了してそのとき
のsumを演算結果として出力する。この従来方式にて
複数生成元に対する演算を行う場合は個々の生成元に対
して計算を行い、最後にこれらから得られた結果の積を
とることで求める。
た後、その各桁を2進展開したが、前記10進展開の代
わりに2のべき乗で展開したならば、前記演算は、次の
ような手順で演算することもできる。この具体的な数値
例を図11に挙げる。図11ではg1 29 g2 27 を求める
ことを例とする。まずg1 29 についてであるが、29を
2進展開すると図11Aに示すように111012 であ
る。これをx=3ビットずつに分割する。すると図11
Bに示すように(011,101)2 である。なおここ
でg1 8とg1 はテーブルにその値を保持しており、分割
後の上位ブロックが(g1 8)3 、下位ブロックが
(g1 ) 5 に対応していることに注意されたい。
り、dの値が変化することによりステップを更新するこ
とになっている。初期値はsum=1,d=2である。 ステップ1:(d=2)分割された各ブロックの第dビ
ット目(ここでは最上位ビット、最下位ビットは0ビッ
ト目とする)に着目すると、上位N(1) [2]は0、下
位N(0) [2]は1であるのでj=1でg1 0=1,j=
0で(g1 2 ) 0 =g1 となりsum←sum×g1 を
演算してsum=g1 となる。d>0であるのでsum
←sum×sumを演算してsum=g1 2となる。d←
d−1としてステップ2へ(図11C)。
は1、下位N(0) [1]は0であるのでj=1で
(g1 2)3 =g1 8,j=0でg1 0=1となり、sum←
sum×g 1 8=g1 2×g1 8を演算して(sum=
g1 10 )となる。d>0であるのでsum←sum×s
umを演算して(sum=g1 20 )となる。d←d−1
としてステップ3へ(図11D)。
は1、下位N(0) [0]も1であるのでj=1でg1 8,
j=0でg1 となり、sum←sum×g1 8×g1 を演
算してsum=g1 29 となる。d=0であるのでこのs
um(=gg1 29 )が出力となる(図11E)。g2 27
についても図11Fに示すように同様の作業を行い、そ
の結果とg1 29との積をとり最終的なg1 29 g2 27 を得
る。
その生成元の数だけ上記方式を繰り返すことになる。
力の向上や各種解法アルゴリズムの発見により、暗号や
署名の安全性を向上させるためにより難しい問題を根拠
とする必要が生じている。これに対する解決法としてよ
り難しい問題である複数生成元を扱った離散対数問題や
楕円曲線上の群に対する離散対数問題を安全性の根拠と
する暗号方式や署名方式が提案されつつある。
元に対する演算方式では、こういった複数生成元をもつ
ものに対してはその生成元の数の分だけ方式自体を繰り
返すこととなり効率的な演算という点で十分な効果が得
られなかった。従来方式による具体的な数値例を図1
0、図11に挙げたが、従来方式ではg1 352とg2 406を
独立にまたg1 29 とg2 27 を独立に計算し最後に両者の
積をとるという処理が必要であった。
対して、より難しい問題点である複数生成元に対する離
散対数問題を安全性の根拠とした暗号方式や署名方式の
内部演算をより効率的に行うことを可能とする演算装置
とそのプログラム記録媒体を提供することにある。
ある群Gの要素g1 ,g2 ,…,gm と整数y1 ,y
2 ,…,ym が入力され、今この群G上に定義された演
算をoで表わし、gi ogi o…ogi のyj −1回の
演算をyj gi と、gi の逆元をgi -1と表わし、gi
0 =(群Gの単位元),gi 1 =gi として、今 y1 g1 oy2 g2 o…oym gm を求める装置であって、(b1 0g1 ,b1 1 g1 ,…,
b1 r1g1 ),(b2 0g2 ,b2 1 g2 ,…,b2 r2g
2 ),…,(bm 0 gm ,bm 1 gm ,…,b
m rmgm )を事前計算しメモリ手段に蓄積しておき、y
i を次のようにbi 進展開し、 yi =Σt=0 riaitbi t (但し1<i<m,0<a
it<bi ) このbi 進展開したときの係数aitをさらに以下のよう
に2進展開し、 ait=Σj=0 kit Cj (it)2j (但しCj (it)∈{0,
1}) 係数Cj (it)が1となる2j の集合S={(2i ,i,
t)|Cj (it)=1,1<i<m,0<t<ri }をレ
ジスタに格納し、集合Sの第1項を取り出す関数をPr
(s)=x1 とする時、全てのPr(s)中の最大の2j を
検出してmaとし、2つの変数sumとdに対し、su
m=(群Gの単位元),d=maを初期設定し、(★)
集合S中の全2j 要素に対し、dと一致するものを探索
し以下のような作業を施す。
tを用いてsum←sumobi tgi を演算する。 ・上記以外…何もしない。 d>1ならばsum←sumosumを演算し、d←d
/2とし(★)の作業に戻り処理を続行する。d=1な
らば終了してそのときのsumを演算結果として出力す
る。
素g1 ,g2 ,…,gm と整数y1,y2 ,…,ym が
入力され、(g1 のy1 乗)×(g2 のy2 乗)×…×
(g m のym 乗)の演算結果を出力する演算装置におい
て、g1 のb1 0 乗,g1 のb1 1 乗,…,g1 のb1
r1乗,g2 のb2 0 乗,g 2 のb2 1 乗,…,g2 のb
2 r2乗,…,gm のbm 0 乗,gm のbm 1 乗,…,g
m のbm rm乗の各値がメモリ手段に記憶され、上記各入
力値yi (i=1,2,…,m)をそれぞれbi 進展開
してgi =Σ t=0 riaitbi t なる関係の各係数a
it(0≦ait<bi ,t=0,1,…,ri)が展開手
段で求められてレジスタに格納され、上記各係数aitを
それぞれ2進展開してait=Σj=0 kit Cj (it)2j
(C j (it)∈{0,1})なる関係の各Cj (it)2
j を2進展開手段で求められ、上記係数Cj (it)が1
である2j の集合S=(2j,i,t)がレジスタに格納
され、上記集合Sの第1項を取り出す関数をPr(s)
とする時、すべてのPr(s)中の最大の2j がmaと
して検出手段で検出され、2つの変数sumとdに対し
初期値1とmaがそれぞれ設定され、上記Pr(s)中
の上記変数値dと一致するものが探索手段で探索され、
その探索したPr(s)が属する集合Sのiとtによ
り、上記メモリ手段を参照して、乗算手段でsum×
(gi のbi t 乗)が演算され、その結果が新たなsu
mとされ、自乗手段で上記変数sumが自乗されて新た
なsumとされ、上記変数dが1より大であるか1であ
るかが判定手段で判定され、その判定手段が1より大と
判定すると、上記変数dを2で割算して新たなdとし、
そのdに対し、上記探索手段、上記乗算手段、上記自乗
手段、上記判定手段を繰返し、上記判定手段が1と判定
すると上記変数値sumが演算結果として出力される。
要素G1 ,G2 ,…,Gm と、整数y1 ,y2 ,…,y
m が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する演算装置において、b1 0 G1 ,
b1 1 G1 ,…,b1 r1G1 ,b2 0 G2 ,b2 1 G
2 ,…,b 2 r2G2 ,…,bm 0 Gm ,bm 1 Gm ,
…,bm rmGm の各乗算値がメモリ手段に記憶され、上
記各入力値yi (i=1,2,…,m)がそれぞれ展開
手段により、bi 進展開されてyi =Σt=0 riaitbi
t なる関係の各係数ait(0≦ait<b,t=0,1,
…,ri)が求められ、これら各係数aitがレジスタに
格納され、上記各係数aitをそれぞれ2進展開してait
=Σj=0 kit Cj (it)2j (C j (it)∈{0,
1})なる関係の各Cj (it)2j が2進展開手段で求
められ、上記係数Cj (it)が1である2j の集合S=
(2j,i,t)がレジスタに格納され、上記集合Sの第
1項を取り出す関数をPr(s)とする時、すべてのP
r(s)中の最大の2j が検出手段でmaとして検出さ
れ、2つの変数sumとdに対し初期値無限遠点とma
がそれぞれ設定され、上記Pr(s)中の上記変数値d
と一致するものが探索手段で探索され、その探索したP
r(s)が属する集合Sのiとtにより、上記メモリ手
段を参照してsum+bi t Gi が加算手段で、上記楕
円曲線上で演算され、その結果が新たなsumとされ、
その変数sumが2倍手段により上記楕円曲線上で2倍
されて新たなsumとされ、上記変数dが1より大であ
るかd=1かが判定手段で判定され、上記判定手段が1
より大と判定すると、上記変数dを2で割算して、新た
なdとし、そのdに対し、上記探索手段、上記加算手
段、上記2倍手段、上記判定手段が繰返され、上記判定
手段が1と判定すると上記変数値sumが演算結果とし
て出力される。
g1 ,g2 ,…,gm と整数y1 ,y2 ,…,ym が入
力され、(g1 のy1 乗)×(g2 のy2 乗)×…×
(gmのym 乗)の演算結果を出力する演算装置におい
て、g1 の(−b1 r1)乗,g1 の(−b1 r1-1)乗,
…,g1 のb1 0 乗,g1のb1 1 乗,…,g1 のb1
r1乗,g2 の(−b2 r2)乗,g2 の(−b2 r2-1)
乗,…,g2 のb2 0 乗,…,g2 のb2 r2乗,…,g
m の(−bm rm)乗,…,gm のbm 0 乗,…,gm の
bm rm乗の各値がメモリ手段に記憶され、上記各入力値
yi (i=1,2,…,m)がそれぞれ符号付bi 進展
開されて、yi =Σt=0 riaitbi t なる関係の各係数
ait(−[(bi −1)/2]≦ait≦[(bi −1)
/2],t=0,1,…,ri,[a]はa以上で最小
の整数である)がb進展開手段により求められてレジス
タに格納され、上記各係数aitの絶対値がそれぞれ2進
展開手段により2進展開されて|ait|=Σj=0 ki t C
j (it)2j (Cj (it)∈{0,1})なる関係の各
Cj (it)2j が求められ、上記係数Cj (it)が1で
ある2j の集合S=(2j,i,t)がレジスタに格納さ
れ、上記集合Sの第1項を取り出す関数をPr(s)と
する時、すべてのPr(s)中の最大の2j がmaとし
て検出手段により検出され、2つの変数sumとdに対
し初期値1とmaがそれぞれ設定され、上記Pr(s)
中の上記変数値dと一致するものが探索手段で探索さ
れ、その探索したPr(s)が属する集合Sと対応する
係数aitの符号とiとtにより、上記メモリ手段を参照
してsum×(gi の(aitの符号)bi t 乗)が乗算
手段で演算され、その結果が新たなsumとされ、上記
変数sumの自乗が自乗手段でなされて新たなsumと
され、上記変数dが1より大であるか1であるかが判定
手段で判定され、上記判定手段が1より大と判定する
と、上記変数dを2で割算して新たなdとし、そのdに
対し上記探索手段、上記乗算手段、上記自乗手段、上記
判定手段が繰返され、上記判定手段が1と判定すると、
上記変数値sumが演算結果として出力される。
要素G1 ,G2 ,…,Gm と、整数y1 ,y2 ,…,y
m が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する演算装置において、b1 0 G1 ,
b1 1 G1 ,…,b1 r1G1 ,b2 0 G2 ,b2 1 G
2 ,…,b 2 r2G2 ,…,bm 0 Gm ,bm 1 Gm ,
…,bm rmGm の各乗算値がメモリ手段に記憶され、上
記各入力値yi (i=1,2,…,m)が展開手段で、
それぞれ符号付bi 進展開されてyi =Σt=0 riaitb
i t なる関係の各係数ait(−[(bi −1)/2]≦
ait≦[(bi −1)/2],t=0,1,…,ri,
[a]はa以上で最小の整数である)が求められてレジ
スタに格納され、上記各係数aitの絶対値がそれぞれ展
開手段で2進展開して|ait|=Σj=0 kit Cj (it)
2j (Cj (it)∈{0,1})なる関係の各Cj (i
t)2j が求められ、上記係数Cj (it)が1である2
j の集合S=(2j,i,t)がレジスタに格納され、上
記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j がmaとして検
出手段により検出され、2つの変数sumとdに対し初
期値無限遠点とmaがそれぞれ設定され、上記Pr
(s)中の上記変数値dと一致するものが探索手段で探
索され、その探索したPr(s)の属する集合Sのiと
tにより、上記メモリ手段を参照して、加算手段でsu
m+(aitの符号)bi t Gi が上記楕円曲線上で演算
され、その結果が新たなsumとされ、上記変数sum
が2倍手段で上記楕円曲線上で2倍にされて新たなsu
mとされ、上記変数dが1より大であるか1であるかが
判定手段で判定され、上記判定手段が1より大と判定す
ると、上記変数dを2で割算して新たなdとし、そのd
に対し、上記探索手段、上記加算手段、上記2倍手段、
上記判定手段が繰返され、上記判定手段が1と判定する
と、上記変数値sumが演算結果として出力される。
…,gm がある群Gの要素であり、y 1 ,y2 ,…,y
m が整数であり、この群G上に定義された演算をoで表
わし、以下ではg1 og1 o…og1 のy1 −1回の演
算をy1 g1 と、g1 の逆元をg1 -1と表わし、またg
1 0 =(群Gの単位元)、g1 1 =g1 とし、 y1 g1 oy2 g2 o…oym gm を求める装置であって、 (g1 -1,(2x1g1 )-1,(22x1 g1 )-1,…,
(2p1x1g1 )-1,g1,2x1g1 ,22x1 g1 ,…,
2p1x1g1 ) (g2 -1,(2x2g2 )-1,(22x2 g2 )-1,…,
(2p2x2g2 )-1,g2,2x2g2 ,22x2 g2 ,…,
2p2x2g2 ) ・ ・ ・ (gm -1,(2xmgm )-1,(22xm gm )-1,…,
(2pmxmgm )-1,gm,2xmgm ,22xm gm ,…,
2pmxmgm ) をメモリ手段に蓄積しておき、yi が次のような関係を
持ち、ai1〜aimの係数で表わされるとして、 yi =Σt=0 riait2t (但し1<i<m,ait∈
{−1,0,1}) 各yi をxi ビットずつに分割し、そのxi ビット単位
のブロックを下位よりY i (0) ,Yi (1) ,Yi (2) ,
…として保持し、Yi (j) のうち最大値を検出してma
とし、2つの変数sumとdに対し、sum=(群Gの
単位元)、d=ma−1を初期設定し、(★)各i,j
に対してメモリ手段を用いて、
[j]はAの第jビット目を表わすこととする。)d>
0ならばsum←sumosumを行い、d←d−1と
して(★)へ戻る。d=0ならば終了してそのときのs
umを演算結果として出力する。
要素g1 ,g2 ,…,gm と整数y 1 ,y2 ,…,ym
に対して、 g1 y1g2 y2・・・gm ym を求める方法であって、yi が次のような関係を持ち、
ai1〜aimの係数で表わされるとし、 yi =Σt=0 riait2t (但し1<i<m,ait∈
{−1,0,1}) 各yi をxi ビットずつに分割し、そのxi ビット単位
のブロックを下位よりY i (0) ,Yi (1) ,Yi (2) ,
…として保持し、
検出してmaとし、また以下では最下位ビットを第0ビ
ット目と約束し、A[j]はAの第jビット目を表わす
こととし、sumとdの2つの変数に対し、sum=
1,d=ma−1を初期設定し、(★)各i,jに対し
て
し、d←d−1として(★)へ戻る。d=0ならば終了
してそのときのsumを演算結果として出力する。請求
項19の発明ではある楕円曲線群の要素G1 ,G2 ,
…,Gm と整数y1,y2 ,…,ym に対して、 y1 G1 +y2 G2 +…+ym Gm を求める方法であって、請求項18において演算「×」
の代わりに演算「+」を用いる。また
sum=1の代わりにsum=0を初期設定に置き換え
て、上記の演算結果を出力する。以上の構成のようにこ
れまで別々に行っていた各生成元(ある群の要素)に対
するその群上に定義された演算を先にまとめて全体に施
すことにより、これまで複数回必要であった演算を1回
で完了可能とする。
例について詳しく説明する。第一実施例 ある乗法群の要素g1 ,g2 ,…,gm と整数y1 ,y
2 ,…,ym に対して、 g1 y1g2 y2…gm ym を求めて出力する。この処理を実行する第一実施例の原
理とアルゴリズムは以下の通りである。
て yi =Σt=0 riaitbi t (但し1<i<m,0<ait
<bi ) とbi 進展開する。この時、gi yiは次式で表わせる。
うに2進展開する。 ait=Σj=0 kit Cj (it)2j (但しCj (it)∈
{0,1}) 係数Cj (it)が1となる2j の集合を集合Sとする。
すなわち集合S={(2 j ,i,t)|Cj (it)=
1,1<i<m,0<t<ri }である。また集合Sの
すべての要素から第1項を取り出す関数Pr(s)の最
大値を求めて、その値を以下のようにmaとする。
1 y1g2 y2…gm ymを求める。まず2つの変数sum,
dの各初期値をそれぞれsum=1、d=maとする。 S1 dと等しいCj (it)2j を探し、そのi,tに
ついて、 S2 sum←sum×(gi のbi t 乗)を計算し、 S3 sum=sum×sumを計算し、 S4 d>1かd=1かを判定し、d>1なら S5 d←d÷2を計算し、 S6 d=1になるまでS1〜S4を繰り返す。
として出力する。 以上よりgi のbi t 乗を事前に計算し結果を保持し、
前記ステップS2の乗算に利用することによりg1 y1g
2 y2…gm ymを効率的に算出することができる。上記ア
ルゴリズムを実行するこの発明の演算装置の実施例を図
1に示す。ある乗法群の要素g1 ,g2 ,…,gm と整
数y1 ,y2 ,…,ym が入力手段(レジスタを含む)
11に入力される。g1 のb1 0 乗,g1 のb1 1 乗,
…,g1のb1 r1乗,g2 のb2 0 乗,g2 のb2 1
乗,…,g2 のb2 r2乗,…,gmのbm 0 乗,gm の
bm 1 乗,…,gm のbm rm乗の各値を記憶したメモリ
手段12が設けられている。各入力値yi (i=1,
2,…,m)は展開手段13でそれぞれbi 進展開され
てyi =Σt=0 riaitbi t なる関係の各係数ait(0
≦ait<bi ,t=0,1,…,ri)が求められ、こ
れら各係数ait、つまり(a10,a11,…,a1r1 ),
(a20,a21,…,a2r2 ),…,(am0,am1,…,
amrm )がレジスタ14に格納される。これら各係数a
itがそれぞれ2進展開され、つまりait=Σj=0 kit C
j (it)2j ,(Cj (it)∈{0,1})なるC
j (it)2j が2進展開手段15により求られる。
合S={(2j ,i,t)|Cj (it)=1,1≦i<
m,0≦t<ri }がレジスタ16に格納される。いま
集合Sの第1項2j を取り出す関数をPr(s)とする
とき、最大値検出手段内で、集合SのすべてのPr
(s)中の最大のものを検出して、それをmaとする。
つまり ma≡max(Pr(s))(但し∀S ∈S) と定義したことになる。
ぞれ変数sumおよびdの初期値として1およびmaが
設定される。その後、探索手段21によりPr(s)中
の、レジスタ19内の変数値dと一致するものが探索さ
れる。その探索したPr(s)、つまりその2j を第1
項とする集合S(2j,i,t)中のiとtによりメモリ
手段12から(gi のbi t 乗)の値が読出され、レジ
スタ18中のsumの値との乗算が乗算手段22で行わ
れ、その演算結果sum×(gi のbi t 乗)が新たな
sumとしてレジスタ18に格納される。
段23で自乗され、その結果が新たなsumとしてレジ
スタ18に格納される。この自乗算の後、レジスタ19
内の変数dがd>1であるかd=1であるかの判定が判
定手段24で行われる。この判定手段24がd>1と判
定すると、変数dは割算手段25で2分の1とされてレ
ジスタ19に新たなdとして格納され、そのdに対し、
探索手段21、乗算手段22、自乗手段23、判定手段
24の各動作が繰返される。この際に探索手段21で一
致するPr(s)=2j が見つからなかった場合は乗算
手段22は実行されないが、自乗手段23は実行され
る。
タ18内の変数値sumを演算結果として出力する。以
上の各手段13,15,17,21,22,23,24
の動作、入力手段11、メモリ手段12、レジスタ1
4,16,18,19に対する読出し、書込み、処理手
順などは制御手段26により制御される。
来技術と同様にg1 352 ・g2 406の演算について、図
10と同様な表現で図2を参照して説明する。図2では
g1 352 の352を10進展開して352になり、g2
406 の406を10進展開して406になり、つまりこ
の場合も図10のときと同様に(g1 100 ,g1 10,g
1 1 )と(g2 100 ,g2 10,g2 1 )が事前計算によ
って予め得られ、メモリ手段12に記憶されてある。
て示してあり、またプロットに関しては図10と同じく
各位の数{3,5,2,4,0,6}をそれぞれ2進展
開した値である。図2中のプロットのうち最大値は22
=4であるので、Pr(s)の最大値はma=4であり
d=4から処理がスタートする。sumの初期値として
sum=1を与える。
(2j ,i,t)は(22 ,1,1)と(22 ,2,
2)(20 ,2,0)に対するものであって、g1 の1
0の位およびg2 の100と1の位である。従ってg1
10 ,g2 100,g2 1をメモリ手段12より取り出し、乗
算手段22での乗算はsum←sum×g1 10 g2 100g
2 1=g1 10 g2 101となる。この時d>1であるので自乗
手段23でsum←sum×sum=g1 10 g2 101×g
1 10 g2 101=g1 20 g2 202が演算される。このsum
(=g1 20 g2 202)がd=22 =4のときの結果とな
る。次に割算手段25でd←d/2を行いd=2=21
とする。
21 と一致するPr(s)に対する集合Sは(21 ,
1,2)と(21 ,1,0)と(21 ,2,0)であっ
て、g 1 の100と1の各位およびg2 の1の位であ
る。従ってg1 100,g1 1,g2 1がメモリ手段12より取
り出され、乗算手段22でsum←sum×g1 100g1 1
g 2 1=g1 20 g2 202×g1 101g2 1=g1 121g2 203とな
る。この時d>1であるので自乗手段23でsum←s
um×sum=g1 121g2 203×g1 121g2 203=g1 242g
2 406とされる。このsum(=g1 242g2 406)がd=2
のときの結果である。次に割算手段25でd←d/2と
され、d=1となる。
242g2 406×g1 100g1 10 が演算され結果としてg1 352
g2 406を得る。このように複数生成元に対してはこれま
で複数回行っていた演算の適用をまとめ、その結果、乗
算回数を減らすことが可能である。第二実施例 pを素数とし、nを自然数として、要素数pn である有
限体F(pn )上で定義された楕円曲線EのF(pn )
有利点で構成される群をE(F(pn ))、E(F(p
n ))上の2項演算を記号+、E(F(pn ))の要素
Gの逆元を記号−G、E(F(pn ))の要素Gをx個
演算したG+G+…+G(x個)をxGと表わす。
部分群をGq として、部分群Gq の異なる要素G1 ,G
2 ,…,Gm ,および整数y1 ,y2 ,…,ym ∈Z/
qZを選び、楕円曲線E上の下記の加算を行う。 y1 G1 +y2 G2 +…+ym Gm この際のこの発明の装置の原理とアルゴリズムは以下の
通りである。
に示すようにb進展開する。 yi =Σt=0 riaitbi t (但し、1<i<m,0<a
it<bi ) この時、 yi Gi =Σt=0 riaitbi t Gi と表わすことができる。
らに以下のように2進展開する。 ait=Σj=0 kit Cj (it)2j (但しCj (it)∈
{0,1}) 係数Cj (it)が1となる2j の集合S={(2j ,
i,t)|Cj (it)=1,1<i<m,0<t<
ri }の第1項2j を全て取り出し、次式のように、そ
の最大値をmaとする。
初期値をそれぞれsum=O(無限遠点)、d=maと
し、 S1 Pr(s)=dを探し、そのPr(s)が属する
集合Sのi,tについて、 S2 sum←sum+bi t Gi を計算し、 S3 sum←sum+sumを計算し、 S4 d←d÷2として、d=1になるまでS1乃至S
4を繰返す。
算結果である。以上をbi t Gi を事前に計算し、その
結果を保持しておくことにより楕円曲線上の演算y1 G
1 +y2 G2 +…+ym Gm を効率良く算出することが
できる。次にこの第二実施例の装置を図3を参照して説
明する。入力手段11には楕円曲線上の要素G1 ,G
2 ,…,Gm と、整数y1 ,y2 ,…,ym が入力さ
れ、メモリ手段12にはb1 0 G1 ,b1 1 G1 ,…,
b1 r1G1 ,b2 0 G2 ,b 2 1 G2 ,…,b2 r2G
2 ,…,bm 0 Gm ,bm 1 Gm ,…,bm rmGm の各
乗算値が記憶されている。第一実施例と同様に各入力値
yi (i=1,2,…,m)は展開手段13でそれぞれ
bi 進展開され、yi =Σt=0 riaitbi t なる関係の
各係数ait(0≦ait<b,t=0,1,…,ri)が
求められて、レジスタ14に格納され、これら各係数a
itがそれぞれ2進展開され、つまりait=Σj=0 kit C
j (it)2j ,(Cj (it)∈{0,1})なるC
j (it)2j が2進展開手段15により求められる。
合S={(2j ,i,t)|Cj (it)=1,1≦i<
m,0≦t<ri }がレジスタ16に格納される。いま
集合Sの第1項2j を取り出す関数をPr(s)とする
とき、最大値検出手段内で、集合SのすべてのPr
(s)中の最大のものを検出して、それをmaとする。
つまり ma≡max(Pr(s))(但し∀S ∈S) と定義したことになる。
m,dの各初期値として無限遠点、maがそれぞれ設定
される。Pr(s)中の上記変数値dと一致するものが
探索手段21で探索され、その探索したPr(s)、つ
まりその2j を第1項とする集合S(2j,i,t)中の
iとtによりメモリ手段12からbi t Gi が読出さ
れ、加算手段31によりsum+bi t Gi が楕円曲線
E上で演算され、その結果が新たなsumとしてレジス
タ18に格納される。そのレジスタ18の変数sumが
2倍手段32により楕円曲線E上で2倍演算sum+s
um=2sumがなされて新たなsumとしてレジスタ
18に格納される。
d=1であるかの判定が判定手段24で行われ、d>1
と判定されると、割算手段25で変数dを2分の1し
て、新たなdとし、レジスタ19に格納され、そのdに
対し、探索手段21、加算手段31、2倍手段32、判
定手段24の各動作が繰返され、判定手段24がd=1
と判定するとレジスタ18内の変数値sumが演算結果
として出力される。制御手段26は第一実施例のそれと
同様な動作をするものである。
G2 を演算する過程を、図4に図2と同様な手法で示
す。この場合は、加算手段31が楕円曲線上での加算と
なり、また掛算手段22の代りに2倍手段32となって
いる点がこの図にも現われている。図2の場合と同様に
容易に理解できると思われるから説明は省略する。第三実施例 これは第一実施例と同一の入力に対し、同一の演算結果
を得るが、各入力値y i を符号付きbi 進展開する点で
異なる。以下にその原理とアルゴリズムを述べる。
整数y1 ,y2 ,…,ym に対して、 g1 y1g2 y2…gm ym を求める。各yi を yi =Σt=0 riaitbi t(但し1<i<m,−[bi
−1/2]<a it<[bi −1/2]) と符合付にてbi 進展開すると、
数aitの絶対値をさらに以下のように2進展開する。 |ait|=Σj=0 kit Cj (it)2j (但しCj (i
t)∈{0,1}) 係数Cj (it)が1となる2j の集合S={(2j ,
i,t)|Cj (it)=1,1<i<m,0<t<
ri }における全ての第1項2j の最大を次式のように
maとする。
dの初期値をそれぞれsum=1、d=maとし、 S1 Pr(s)=dを探し、そのPr(s)が属する
集合S中のi,tと、そのaitの符号(sign)につ
いて、 S2 sum←sum×(gi のsign(ait)bi
t 乗)を計算し、 S3 sum←sum×sumを計算し、 S4 d←d÷2としてd=1になるまでS1〜S4を
繰返す。
算結果である。以上を±gi のbi t 乗を事前に計算し
結果を保持しておくことにより有限体上の演算(g1 の
y1 乗)×(g2 のy2 乗)×…×(gm のym 乗)を
効率良く算出することができる。図5に第三実施例を示
し、図1と対応する部分に同一符号を付けてあり、第一
実施例と異なる点について説明する。メモリ手段12に
はg1 の(−b1 r1)乗,g1 の(−b1 r1-1)乗,
…,g1 のb1 0 乗,g1のb1 1 乗,…,g1 のb1
r1乗,g2 の(−b2 r2)乗,g2 の(−b2 r2-1)
乗,…,g2 のb2 0 乗,…,g2 のb2 r2乗,…,g
m の(−bm rm)乗,…,gm のbm 0 乗,…,gm の
bm rm乗の各値が記憶され、b進展開手段13では符号
付bi 進展開、つまり、yi =Σt=0 riaitbi t なる
関係の各係数a it(−[(bi −1)/2]≦ait≦
[(bi −1)/2],t=0,1,…,ri,[a]
はa以上で最小の整数である)が求められてレジスタ1
4に格納される。これら各係数aitの絶対値がそれぞれ
更に2進展開され、つまり|ait|=Σj=0 kit C
j (it)2j ,(Cj (it)∈{0,1})なるC
j (it)2jが2進展開手段15により求められる。
合S={(2j ,i,t)|Cj (it)=1,1≦i≦
m,0≦t≦ri }がレジスタ16に格納される。いま
集合Sの第1項2j を取り出す関数をPr(s)とする
とき、最大値検出手段17で、集合SのすべてのPr
(s)中の最大のものを検出して、それをmaとする。
つまり ma≡max(Pr(s))(但し∀S ∈S) と定義したことになる。探索手段21ではPr(s)中
の変数値dと一致するものが探索され、乗算手段22で
は探索したPr(s)が属する集合S(2j,i,t)と
対応するaitの符号とiとtにより、メモリ手段12が
読出され、その読み出された(gi の(aitの符号)b
i t 乗)とsumとの乗算がなされる。その他は第一実
施例と同様である。
2 406 について図2と同様な表現で図6に示す。第四実施例 これは第二実施例と同一の入力に対し、同一の演算結果
を得るが、第三実施例と同様にyi を符号付きbi 進展
開している点で異なる。以下にその原理とアルゴリズム
を述べる。
Gm 、および整数y1 ,y2 ,…,ym ∈Z/qZを選
び、 y1 G1 +y2 G2 +…+ym Gm を求める。yi を yi =Σt=0 riaitbi t(但し1<i<m,−[bi
−1/2]<a it<[bi −1/2]) と符合付にてbi 進展開する。この時yi Gi は次式で
表わせる。
以下のように2進展開する。 |ait|=Σj=0 kit Cj (it)2j (但しCj (i
t)∈{0,1}) 係数Cj (it)が1となる2j の集合S={(2j ,
i,t)|Cj (it)=1,1<i<m,0<t<
ri }の第1項2j の全ての中で最大値を次式に示すよ
うにmaと定義する。
dの初期値をそれぞれsum=O(無限遠点)、d=m
aとし、 S1 Pr(s)=dを探し、そのPr(s)が属する
集合Sとそのaitの符号と、i,tについて、 S2 sum←sum+sign(ait)bi t Gi を
計算し、 S3 sum←sum+sumを計算し、 S4 d←d÷2として、d=1になるまでS1〜S4
を繰返す。
算結果である。以上を±bi t Gi を事前に計算し、そ
の結果を保持しておくことにより楕円曲線上の演算y1
G1 +y2 G2 +…+ym Gm を効率良く算出すること
ができる。この第四実施例の演算装置を図3、図5と対
応する部分に同一符号を付けて図7に示す。メモリ手段
12の記憶内容は図3のそれと同一である。つまり楕円
曲線上の要素ではαGに対して−αGは容易に算出する
ことができるので、−αGは事前計算しておく必要はな
い。展開手段13では図5中のそれと同様に符号付bi
進展開が行われ、また係数ait中の絶対値|ait|が2
進展開され、その集合S中の第1項の最大値maが検出
され、レジスタ18,19の初期値は図3の場合と同様
とされ、探索手段21はPr(s)中の変数値dと一致
するものが探索され、その探索したPr(s)が属する
集合Sのiとtでメモリ手段12を読出し、加算手段3
1で、探索手段19の探索Pr(s)のi,tと対応す
るaitの符号を加味してsum+(aitの符号)bi t
Gi を演算する。その他は図3の実施例と同様である。
具体的数値例の352G1 +406G2 の演算過程を図
8に示す。
タによりプログラムを読出し解読実行させることによ
り、同様の演算を行う演算装置とすることもできる。ま
た上述においては判定手段でdがd>1かd=1かを判
定したが、例えば請求項1の発明でd≧1である間、s
um←sum×sum、各Pr(s)=dに対し、su
m←sum×(gi のbi t 乗)、d←d/2を実行
し、d<1になった時のsumを出力としてもよい。こ
のことは他の請求項2〜3のそれぞれについても同様で
ある。
2 ,…,ym に対して、 g1 y1g2 y2…gm ym を求めて出力する。yi が次のように表わされるとす
る。
<m,ait∈{−1,0,1}) 次に各yi をxi ビットずつに分割する。そのブロック
を下位よりYi (0) ,Yi (1) ,Yi (2) ,…とする。
のビット数をmaと定義する。また以下では最下位ビッ
トを第0ビット目と約束し、A[j]はAの第jビット
を表すこととする。実施の一例として以下のような手順
を踏むことによりg1 y1g2 y2…gm ymを求める。
に蓄積しておくことによりg1 y1g2 y2…gm ymを効率
良く算出することができる。
実施例を図12に示す。ある乗法群の要素g1 ,g2 ,
…,gm と整数y1 ,y2 ,…,ym が入力手段(レジ
スタを含む)11に入力される。g1 の±1乗、g1 の
±2x1乗、g1 の±22x1 乗、…,g1 の±2p1x1乗、
g2 の±1乗、g2 の±2x2乗,g2 の±22x2 乗,
…,g2 ±2p2x2乗,…,gm の±1乗,gm の±2xm
乗,gm の±22xm 乗…,,gm の±2pmxm乗の各値を
記憶したメモリ手段12が設けられている。各入力値y
i (i=1,2,…,m)は符号付2進展開手段15′
によりそれぞれ符号付2進展開され、 yi =Σt=0 ri ait2 t (1<i<m,ait∈{−1,0,1}) なる関係の各係数aitが求められ、y i の符号付2進数
としてait、つまり(a10,a11,…,a1r1 ),(a
20,a21,…,a2r2 ),…,(am0,am1,…,a
mrm )がaitレジスタ14に格納される。
i の符号付2進数をxi ビットずつに分割し、ブロック
Yi (0) ,Yi (1) ,…として保持される。これらブロ
ックYi (j) のうちの最大値のビット数maがma検出
手段17で求められ、dレジスタ19にd=ma−1と
して格納される。探索手段21で各Yi (j) のdビット
目と、2jxi との積が、gi のべき乗数とするものを記
憶手段12から検索し、その検索できたgi の±2jxi
乗の全てと、sumレジスタ18に格納されているsu
mとの積が乗算手段22で行われ、その乗算結果がレジ
スタ18に格納される。Y i (j) のdビット目が0の場
合は検索できず、g i (0) =1とする。判定手段24で
d>0であれば自乗手段23で、レジスタ18内のsu
mが2乗されて、sumレジスタ18に格納され、減算
手段25でd−1が演算されてdレジスタ19に格納さ
れ、その更新されたdについて検索手段21、乗算手段
22、判定手段24、必要に応じて自乗手段23がそれ
ぞれ動作される。判定手段24でd=0と判定される
と、ゲート42が開かれ、sumレジスタ18内のsu
mがゲート42を通じて外部へ演算結果として出力され
る。以上の各手段に対する制御、その動作、記憶手段1
2に対する読出し、などは制御手段26により行われ
る。
同じくg1 29g2 27を求める過程を挙げている。図13
Aに示すようにg1 29の29を2進展開し1110
12 、さらにこれを符号付2進展開すると100−10
12 となる(ビット数1増加)。また図13Bに示すよ
うにg2 27の27を2進展開し110112 となり、同
様に符号付2進展開すると100−10−12 となる
(ビット数1増加)。先の場合と同様にx=3ビットず
つに分割する。従ってma=3となる。すると図13
C,Dに示すように(100,−101)2 と(10
0,−10−1)2 である。なお(g1 8 ,g1 1 ,g
1 -8,g1 -1)と(g2 8 ,g2 1 ,g2 -8,g2 -1)
は記憶手段12にその値を保持していることに注意され
たい。初期値はsum=1,d=2である。
dビット目(ここでは最上位ビット)に着目すると(図
13EF)、(1,−1)と(1,−1)であるので乗
算手段22ではsum←sum×g1 8 ×g1 -1×g2
8 ×g2 -1を演算して(sum=g1 7 g2 7 )とな
る。d>0であるので自乗手段23ではsum←sum
×sumを演算して(sum=g1 14g2 14)となる。
減算手段25でd←d−1としてステップ2へ。
応するものは(0,0)と(0,0)である。乗算手段
22ではsum×1×1×1×1となり、d>0である
ので自乗手段23ではsum←sum×sumを演算
し、(sum=g1 28g2 28)となる。(図13G,
H)。 d←d−1としてステップ3へ。 ステップ3:(d=0)(0,1)と(0,1)である
ので乗算手段22でsum←sum×g1 ×g2 -1を演
算し、(sum=g1 29 g2 27)となる。d=0である
のでsumレジスタ18のこのsum(=g
1 29 g2 27)値が出力となる(図13I,J)。
複数回行っていた演算の適用をまとめ、結果乗算回数を
削減することが可能である。第六実施例 pを素数とし、nを自然数として、要素数pn である有
限体Fpn上定義された楕円曲線EのGF(pn )有理点
で構成される群をE(GF(pn )),E(GF
(pn ))上の2項演算を記号+,E(GF(pn ))
の要素Gの逆を記号−G,E(GF(pn ))の要素G
をx個演算したG+G+…+G(x個)をxGと書くと
する。
の部分群をGq として、部分群Gqの異なる要素G1 ,
G2 ,…,Gm ,およびy1 ,y2 ,…,ym ∈Z/q
Zを選ぶ。 y1 G1 +y2 G2 +…+ym Gm を求めて出力する。yi が次のように表わされるとす
る。
<m,ait∈{−1,0,1}) 次に各yi をxi ビットずつに分割する。そのブロック
を下位よりYi (0) ,Yi (1) ,Yi (2) ,…とする。
今 (G1 ,2x1G1 ,22x1 G1 ,…,2p1x1G1 ) (G2 ,2x2G2 ,22x2 G2 ,…,2p2x2G2 ) ・ ・ ・ (Gm ,2xmGm ,22xm Gm ,…,2pmxmGm ) がメモリ手段に蓄積されている。
定義する。また以下では最下位ビットを第0ビット目と
約束し、A[j]はAの第jビットを表すこととする。
実施の一例として以下のような手順を踏むことによりy
1 G1 +y2 G2 +…ym Gm を求める。 ステップ1 sum=O(無限遠点) ステップ2 d=ma−1 ステップ3 各i,jについてsum=sum+Yi
(j) [d]・2jxi Giを演算 ステップ4 d>0かd=0の判定 ステップ5 d>0でsum=sum+sum ステップ6 d=d−1、ステップ3に戻る。
によりy1 G1 +y2G2 +…+ym Gm を効率良く算
出することができる。以上のアルゴリズムを実行する演
算装置の実施例を図14に示す。楕円曲線上の要素
G1 ,G2 ,…,Gm と整数y1 ,y2 ,…,ym が入
力手段11に入力され、メモリ手段12にはG1 ,2x1
G1 ,22x1 G1 ,…,2p1x1G1 ,G2,2x2G2 ,
22x2 G2 ,…,2p2x2G2 ,…,Gm ,2xmGm ,2
2xm Gm ,…,2pmxmGm の各乗算値が記憶されてい
る。第五実施例と同様に各入力値yi(i=1,2,
…,m)は符号付2進展開手段15′でそれぞれ符号付
2進展開され、yi =Σt=0 ri ait2 t (ait∈
{−1,0,1})なる関係の係数aitが求められて、
y i の符号付2進数としてaitレジスタ14に格納され
る。
xi ビット分割保持手段41でxiビットずつに分割さ
れ、ブロックYi (0) ,Yi (1) ,…として保持され
る。これらブロックYi (j) のうちの最大値のビット数
maがma検出手段17で求められ、dレジスタ19に
d=ma−1として格納される。探索手段21で各Yi
(j) のdビット目と、2jxi との積をGi の乗数とする
ものをメモリ手段12から探索し、この探索できた2
jxi G i の全てとsumレジスタ18に格納されている
sumとの楕円曲線E上の和が加算手段31で演算さ
れ、その結果が新たなsumとしてレジスタ18に格納
される。Y i (j) のdビット目が0の場合は検索でき
ず、0×G i =0とする。d>0かd=0かが判定手段
24で判定され、d>0であれば、レジスタ18内のs
umが2倍手段32により楕円曲線E上で2倍演算さ
れ、その結果がsumレジスタ18に格納される。更に
減算手段25でd−1され、これがdレジスタ19に格
納され、dの値が更新される。
手段31、判定手段24、2倍手段32、減算手段25
がそれぞれ動作し、d=0となるまでこれらの動作が順
次繰返される。判定手段24でd=0と判定されると、
ゲート42が開けられ、sumレジスタ18内のsum
が演算結果として出力される。以上の各手段の順次制御
動作、記憶手段12の読出しなどは制御手段26により
行われる。
求める過程を挙げる。図15Aに示すように30G1 の
30を2進展開し111102 、さらにこれを符号付2
進展開すると1000−10となる(ビット数1増
加)。また図15Bに示すように7G2 の7を2進展開
し1112 となり、同様に符号付2進展開すると100
−1となる(ビット数1増加)。前者の1000−10
を3ビットずつに分割する。すると図15Cに示すよう
に(100,0−10)となる。後者の100−1を2
ビットずつに分割する。すると図15Dに示すように
(10,0−1)となる。なお(8G1 ,G1 )と(4
G2 ,G2 )は記憶手段12にその値を保持しているこ
とに注意されたい(楕円曲線上の点では、pGに対して
−pGは容易に求まるため、−pGはメモリ手段上にな
くとも良い)。初期値はsum=O(無限遠点),ma
=max{2,3}=3,d=2である。
dビット目に着目すると、30は(1,0)である、7
は2ビット分割であるためここでは(0,0)と扱う。
従って加算手段31でsum←sum+8G1 を演算し
てsum=8G1 となる(図15E,F)。d>0であ
るので2倍手段32でsum←sum+sumを演算し
てsum=16G1 となる。減算手段25でd←d−1
としてステップ2へ。
ぞれ(0,−1)と(1,0)であるので加算手段31
でsum←sum+(−G1 )+4G2 を演算してsu
m=15G1 +4G2 となる(図15G,H)。d>0
であるので2倍手段32でsum←sum+sumを演
算してsum=30G1 +8G2 となる。減算手段25
でd←d−1としてステップ3へ。
ぞれ(0,0)と(0,−1)であるので加算手段31
でsum←sum+(−G2 )を演算してsum=30
G1+7G2 となる(図15I,J)。d=0であるの
でsumレジスタ18のsum(=30G1 +7G2 )
が出力される。次にある値yを符号付2進表記した際
に、1が立つ個数を減らす手法を説明する。この例は2
ビットずつ分割する方式であって、まず次式で示すよう
にyを0と1のみで2進展開する。
目して図16に示す作業を行って次式の符号付2進表記
を得る。 y=Σt=0 r a′t 2 t (a′t ∈{−1,0,
1}) ではa2w=0,a2w-1=0であるから、a′2w+1=
0、つまりa′2w=0とし、ではa2w=0,a2w-1=
1であるからそのa2w-1=1をa′2wに加算し、a′2w
=1にし、1余計になるからa′2w-1=−1とする。
ではa2w=1であり、これにa2w-1=1を加算し、その
桁上げでa′2w+1=1となり、またa′2w=0 a′
2w-1=−1となる。ではa2w+1=1、a2w=0でa
2w+1=1がa2w +2に加算されるので、a′2w+1=−1と
なり、a2wはそのまま0である。ではa2w-1=1がa
2w=0に加算され、a′2w=1となり、a′2w-1=−1
とし、a 2w+1=1をa2w+2に加算するから、a′2w+1=
−1とする。その他も同様である。
元をもつ演算に対して事前計算によりその演算処理速度
の向上を図ることが可能となり、さらに楕円曲線上の演
算にも適用しその演算処理速度の向上を図ることが可能
となった。これは有名なディジタル署名であるDSA署
名や楕円DSA署名とも適用することが可能であり、そ
の他複数生成元を用いている多くの暗号やディジタル署
名に適用可能であると予想され、処理の高速化が見込ま
れる。また図9に従来方式と請求項2、請求項3の発明
装置の計算量比較として生成元が3つ存在する場合の乗
算回数および加算回数を比較したグラフを挙げる。なお
図9Aは符号無の場合、図9Bは符号付の場合である。
従来方式およびこの発明装置では群上に定義された演算
の回数は等しくなる。例えば(有限体上での乗算回数)
=(楕円曲線上での加算回数)となるため図9ではグラ
フの縦軸が「乗算/加算回数」となっている。
式(符号付)/提案方式(請求項16、17)の計算量
比較として生成元が3つ存在する場合の乗算回数および
加算回数を比較したグラフを挙げる。なお図17は乗数
が160ビットとしたものである。従来方式および提案
方式では群上に定義された演算の回数は等しくなる。例
えば(有限体上での乗算回数)=(楕円曲線上での加算
回数)となるため図17ではグラフの縦軸が「乗算/加
算回数」となっている。
施例の機能構成を示す図。
示す図。
実施例の機能構成を示す図。
示す図。
施例の機能構成を示す図。
示す図。
他の実施例の機能構成を示す図。
過程を示す図。
例を示す図。
演算過程を示す図。
いた演算過程を示す図。
ロック図。
示す図。
ロック図。
示す図。
図。
の比較を示す図。
Claims (21)
- 【請求項1】 ある群Gの要素g1 ,g2 ,…,gm と
整数y1 ,y2 ,…,ym を入力し、上記の群G上に定
義された演算をoで表わし、以下ではgi ogi o…o
gi のyi −1回の演算をyi gi とし、gi の逆元を
gi -1と表わし、gi 0 =(群Gの単位元),gi 1 =
gi として、 y1 g1 oy2 g2 o…oym gm を求める演算装置において、 (b1 0g1 ,b1 1 g1 ,…,b1 r1g1 ),(b2 0g
2 ,b2 1 g2 ,…,b2 r2g2 ),…,(b
m 0 gm ,bm 1 gm ,…,bm rmgm )の各値を記憶
したメモリ手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれb
i 進展開して、 yi =Σt=0 riaitbi t (但し1≦i≦m,0≦a
it<bi )なる関係のaitを求めるb進展開手段と、 上記各係数aitをそれぞれ2進展開して ait=Σj=0 kit Cj (it)2j (但しCj (it)∈{0,
1})なる関係の各Cj (it)2j を求める2進展開手段
と、 上記係数Cj (it)が1となる2j の集合S={(2j ,
i,t)|Cj (it)=1,1<i<m,0<t<ri }
を格納するレジスタと、 上記集合Sの第1項を取り出す関数をPr (s)とする
時、全てのPr(s)中の最大の2j を検出してmaとする
手段と、 2つの変数sumとdに対し群Gの単位元とmaをそれ
ぞれ初期設定する手段と、 上記集合S中の全2j 要素に対し、dと一致するものを
探索する探索手段と、 その探索した2j に対応するiとtにより上記メモリ手
段を参照してsumobi t gi を演算し、その結果を
新たなsumとする乗算手段と、 上記変数sumを自乗して新たなsumとする自乗手段
と、 上記変数dが1より大であるか1であるかを判定する判
定手段と、 その判定手段が1より大と判定すると、 上記変数dを2分の1にして新たなdとし、そのdに対
し、上記探索手段、上記乗算手段、上記自乗手段、上記
判定手段を動作させる手段と、 上記判定手段が1と判定すると、上記変数値sumを演
算結果として出力する手段と、 を具備する事前計算を用いた複数生成元に対する櫛型演
算装置。 - 【請求項2】 ある乗法群の要素g1 ,g2 ,…,gm
と整数y1 ,y2 ,…,ym が入力され、(g1 のy1
乗)×(g2 のy2 乗)×…×(gm のym乗)の演算
結果を出力する演算装置において、 g1 のb1 0 乗,g1 のb1 1 乗,…,g1 のb1
r1乗,g2 のb2 0 乗,g2 のb2 1 乗,…,g2 のb
2 r2乗,…,gm のbm 0 乗,gm のbm 1 乗,…,g
m のbm rm乗の各値を記憶したメモリ手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれb
i 進展開してyi =Σt=0 riaitbi t なる関係の各係
数ait(0≦ait<bi ,t=0,1,…,ri)を求
めるb進展開手段と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
kit Cj (it)2j ,(Cj (it)∈{0,1})なる
関係の各Cj (it)2j を求める2進展開手段と、 上
記係数Cj (it)が1である2j の集合S=(2j ,
i,t)を格納するレジスタと、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする手段と、 2つの変数sumとdに対し初期値1とmaをそれぞれ
設定する手段と、 上記Pr(s)中の上記変数値dと一致するものを探索
する探索手段と、 その探索したPr(s)が属する集合Sのiとtによ
り、上記メモリ手段を参照してsum×(gi のbi t
乗)を演算し、その結果を新たなsumとする乗算手段
と、 上記変数sumを自乗して新たなsumとする自乗手段
と、 上記変数dが1より大であるか1であるかを判定する判
定手段と、 上記判定手段が1より大と判定すると、上記変数dを2
分の1にして新たなdとし、そのdに対し、上記探索手
段、上記乗算手段、上記自乗手段、上記判定手段を動作
させる手段と、 上記判定手段が1と判定すると上記変数値sumを演算
結果として出力する手段と、 を具備する事前計算を用いた複数生成元に対する演算装
置。 - 【請求項3】 ある楕円曲線群の要素G1 ,G2 ,…,
Gm と、整数y1 ,y2 ,…,ym が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する演算装置において、 b1 0 G1 ,b1 1 G1 ,…,b1 r1G1 ,b2 0 G
2 ,b2 1 G2 ,…,b2 r2G2 ,…,bm 0 Gm ,b
m 1 Gm ,…,bm rmGm の各乗算値を記憶したメモリ
手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれb
i 進展開してyi =Σt=0 riaitbi t なる関係の各係
数ait(0≦ait<b,t=0,1,…,ri)を求め
る展開手段と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
kit Cj (it)2j (Cj (it)∈{0,1})なる関
係の各Cj (it)2j を求める2進展開手段と、 上記係数Cj (it)が1である2j の集合S=(2
j,i,t)を格納するレジスタと、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする手段と、 2つの変数sumとdに対し初期値無限遠点とmaをそ
れぞれ設定する手段と、 上記Pr(s)中の上記変数値dと一致するものを探索
する探索手段と、 その探索したPr(s)が属する集合Sのiとtによ
り、上記メモリ手段を参照してsum+bi t Gi を演
算し、その結果を新たなsumとする加算手段と、 上記変数sumと上記変数sumを加算して新たなsu
mとする2倍手段と、 上記変数dが1より大であるかd=1かを判定する判定
手段と、 上記判定手段が1より大と判定すると、上記変数dを2
分の1にして、新たなdとし、そのdに対し、上記探索
手段、上記加算手段と、上記2倍手段、上記判定手段を
動作させる手段と、 上記判定手段が1と判定すると上記変数値sumを演算
結果として出力する手段と、 を具備する事前計算を用いた複数生成元に対する演算装
置。 - 【請求項4】 ある乗法群の要素g1 ,g2 ,…,gm
と整数y1 ,y2 ,…,ym が入力され、(g1 のy1
乗)×(g2 のy2 乗)×…×(gm のym乗)の演算
結果を出力する演算装置において、 g1 の(−b1 r1)乗,g1 の(−b1 r1-1)乗,…,
g1 のb1 0 乗,g1のb1 1 乗,…,g1 のb1
r1乗,g2 の(−b2 r2)乗,g2 の(−b2 r2-1)
乗,…,g2 のb2 0 乗,…,g2 のb2 r2乗,…,g
m の(−bm rm)乗,…,gm のbm 0 乗,…,gm の
bm rm乗の各値を記憶したメモリ手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付bi 進展開して、yi =Σt=0 riaitbi t なる関
係の各係数ait(−[(bi −1)/2]≦ait≦
[(bi −1)/2],t=0,1,…,ri,[a]
はa以上で最小の整数である)を求める展開手段と、 上記各係数の|ait|をそれぞれ2進展開して|ait|
=Σj=0 kit Cj (it)2j (Cj (it)∈{0,
1})なる関係の各Cj (it)2j を求める2進展開手
段と、 上記係数Cj (it)が1である2j の集合S=(2
j,i,t)を格納するレジスタと、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする手段と、 2つの変数sumとdに対し初期値1とmaをそれぞれ
設定する手段と、 上記Pr(s)中の上記変数値dと一致するものを探索
する探索手段と、 その探索したPr(s)が属する集合Sと対応aitの符
号とiとtにより、上記メモリ手段を参照してsum×
(gi の(aitの符号)bi t 乗)を演算し、その結果
を新たなsumとする乗算手段と、 上記変数sumと上記変数sumとを掛算して新たなs
umとする自乗手段と、 上記変数dが1より大であるかd=1であるかを判定す
る判定手段と、 上記判定手段が1より大と判定すると、上記変数dを2
分の1にして新たなdとし、そのdに対し上記探索手
段、上記乗算手段、上記自乗手段、上記判定手段を動作
させる手段と、 上記判定手段がd=1と判定すると、上記変数値sum
を演算結果として出力する手段と、 を具備する事前計算を用いた複数生成元に対する演算装
置。 - 【請求項5】 ある楕円曲線群の要素G1 ,G2 ,…,
Gm と、整数y1 ,y2 ,…,ym が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する演算装置において、 b1 0 G1 ,b1 1 G1 ,…,b1 r1G1 ,b2 0 G
2 ,b2 1 G2 ,…,b2 r2G2 ,…,bm 0 Gm ,b
m 1 Gm ,…,bm rmGm の各乗算値を記憶したメモリ
手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付bi 進展開してy1 =Σt=0 riaitbi t なる関係
の各係数ait(−[(bi −1)/2]≦ait≦[(b
i −1)/2],t=0,1,…,ri,[a]はa以
上で最小の整数である)を求める展開手段と、 上記各係数の|ait|をそれぞれ2進展開して|ait|
=Σj=0 kit Cj (it)2j (Cj (it)∈{0,
1})なる関係の各Cj (it)2j を求める2進展開手
段と、 上記係数Cj (it)が1である2j の集合S=(2
j,i,t)を格納するレジスタと、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする手段と、 2つの変数sumとdに対し初期値無限遠点とmaをそ
れぞれ設定する手段と、 上記Pr(s)中の上記変数値dと一致するものを探索
する探索手段と、 その探索したPr(s)が属する集合Sのiとtによ
り、上記メモリ手段を参照し、かつ該集合Sと対応する
aitの符号とよりsum+(aitの符号)bi tGi を
演算してその結果を新たなsumとする加算手段と、 上記変数sumと上記変数sumとを加算して新たなs
umとする2倍手段と、 上記変数dが1より大であるか1であるかを判定する判
定手段と、 上記判定手段が1より大と判定すると、上記変数dを2
分の1して新たなdとし、そのdに対し、上記探索手
段、上記加算手段、上記2倍手段、上記判定手段を動作
させる手段と、 上記判定手段が1と判定すると、上記変数値sumを演
算結果として出力する手段と、 を具備する事前計算を用いた複数生成元に対する演算装
置。 - 【請求項6】 ある群Gの要素g1 ,g2 ,…,gm と
整数y1 ,y2 ,…,ym を入力し、上記の群G上に定
義された演算をoで表わし、以下ではgi ogi o…o
gi のyi −1回の演算をyi gi とし、gi の逆元を
gi -1と表わし、gi 0 =(群Gの単位元),gi 1 =
gi として、 y1 g1 oy2 g2 o…oym gm を求めて出力する装置であって、 (b 1 0 g 1 ,b 1 1 g 1 ,…,b 1 r1 g 1 ),(b 2 0 g
2 ,b 2 1 g 2 ,…,b 2 r2 g 2 ),…,(b
m 0 g m ,b m 1 g m ,…,b m rm g m )の各値を記憶
したメモリ手段と、 上記g1 ,g2 ,…,gm と上記y1 ,y2 ,…,ym
を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれb
i 進展開して、 yi =Σt=0 riaitbi t (但し1≦i≦m,0≦a
it<bi )なる関係のaitを求めるb進展開手段と、 上記各係数aitをそれぞれ2進展開して ait=Σj=0 kit Cj (it)2j (但しCj (it)∈{0,
1})なる関係の各Cj (it)2j を求める2進展開手段
と、 上記係数Cj (it)が1となる2j の集合S={(2i ,
i,t)|Cj (it)=1,1<i<m,0<t<ri }
をレジスタに格納する手段と、 上記集合Sの第1項を取り出す関数をPr (s)とする
時、全てのPr(s)中の最大の2j を検出してmaとする
手段と、 2つの変数sumとdに対し群Gの単位元とmaをそれ
ぞれ初期設定する手段と、 上記集合S中の全2j 要素に対し、dと一致するものを
探索する探索処理と、 その探索した2j に対応するiとtにより上記メモリ手
段を参照してsumobi t gi を演算し、その結果を
新たなsumとする乗算手段と、 上記変数sumを自乗して新たなsumとする自乗手段
と、 上記変数dが1より大であるか1であるかを判定する判
定手段と、 その判定手段が1より大と判定すると、 上記変数dを2分の1にして新たなdとし、そのdに対
し、上記探索手段、上記乗算手段、上記自乗手段、上記
判定手段を動作させる手段と、 上記判定手段が1と判定すると、上記変数値sumを演
算結果として出力する手段とを備える演算装置として、
コンピュータを機能させるためのプログラムを記録した
コンピュータ読み取り可能な記録媒体。 - 【請求項7】 ある乗法群の要素g1 ,g2 ,…,gm
と整数y1 ,y2 ,…,ym が入力され、(g1 のy1
乗)×(g2 のy2 乗)×…×(gm のym乗)の演算
結果を出力する装置であって、g 1 のb 1 0 乗,g 1 のb 1 1 乗,…,g 1 のb 1
r1 乗,g 2 のb 2 0 乗,g 2 のb 2 1 乗,…,g 2 のb
2 r2 乗,…,g m のb m 0 乗,g m のb m 1 乗,…,g
m のb m rm 乗の各値を記憶したメモリ手段と、 上記要素g1 ,g2 ,…,gm と上記整数y1 ,y2 ,
…,ym を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれb
i 進展開してyi =Σt=0 riaitbi t なる関係の各係
数ait(0≦ait<bi ,t=0,1,…,ri)を求
める手段と、 上記求めた各係数aitを第1レジスタに格納する手段
と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
kit Cj (it)2j (Cj (it)∈{0,1})なる関
係の各Cj (it)2j を求める手段と、 上記係数Cj (it)が1である2j の集合S=(2
j,i,t)を第2レジスタに格納する手段と、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする手段と、 2つの変数sumとdをその初期値として1とmaをそ
れぞれ第3、第4レジスタに設定する手段と、 上記第2レジスタ内のPr(s)中の上記第4レジスタ
内の変数値dと一致するものを探索する探索手段と、 その探索したPr(s)が属する集合Sのiとtによ
り、上記メモリ手段を読出して(gi のbi t 乗)を得
る手段と、 上記読出された(gi のbi t 乗)と上記第3レジスタ
内のsumを乗算し、その結果を上記第3レジスタに格
納する乗算手段と、 上記第3レジスタ内のsumを自乗し、その結果を上記
第3レジスタに格納する自乗手段と、 上記第4レジスタ内のdが1より大であるか1であるか
を判定する判定手段と、 上記判定手段が1より大と判定すると、上記第4レジス
タ内のdを2分の1にし、その結果を上記第4レジスタ
に格納する割算手段と、 上記割算処理された上記第4レジスタ内のdに対し、上
記探索手段、上記乗算手段、上記2倍手段、上記判定手
段を動作させる手段と、 上記判定手段が1と判定すると上記第3レジスタ内のs
umを演算結果として出力する手段とを備える演算装置
として、コンピュータを機能させるためのプログラムを
記録したコンピュータ読み取り可能な記録媒体。 - 【請求項8】 ある楕円曲線群の要素G1 ,G2 ,…,
Gm と、整数y1 ,y2 ,…,ym が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する装置であって、b 1 0 G 1 ,b 1 1 G 1 ,…,b 1 r1 G 1 ,b 2 0 G
2 ,b 2 1 G 2 ,…,b 2 r2 G 2 ,…,b m 0 G m ,b
m 1 G m ,…,b m rm G m の各乗算値を記憶した メモリ
手段と、 上記要素G1 ,G2 ,…,Gm 、上記整数y1 ,y2 ,
…,ym を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれb
i 進展開してyi =Σt=0 riaitbi t なる関係の各係
数ait(0≦ait<b,t=0,1,…,ri)を求め
る手段と、 上記求めた各係数aitを第1レジスタに格納する手段
と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
kit Cj (it)2j (Cj (it)∈{0,1})なる関
係の各Cj (it)2j を求める手段と、 上記係数Cj (it)が1である2j の集合S=(2
j,i,t)を第2レジスタに格納する手段と、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする手段と、 2つの変数sumとdの各初期値無限遠点とmaをそれ
ぞれ第3、第4レジスタに設定する手段と、 上記第2レジスタ内のPr(s)中の上記変数値dと一
致するものを探索する探索手段と、 その探索したPr(s)が属する集合Sのiとtによ
り、上記メモリ手段よりbi t Gi を読出す手段と、 上記第3レジスタ内のsumと上記読出されたbi t G
i を加算し、その結果を上記第3レジスタに格納する加
算手段と、 上記第3レジスタ内のsumを2倍し、その結果を上記
第3レジスタに格納する2倍手段と、 上記第4レジスタ内のdが1より大であるかd=1かを
判定する判定手段と、上記判定手段が1より大と判定す
ると、上記第4レジスタ内のdを2で割算して、その結
果を上記第4レジスタ内に格納する手段と、 上記第4レジスタ内の割算されたdに対し、上記探索手
段、上記加算手段、上記2倍手段、上記判定手段を動作
させる手段と、 上記判定手段が1と判定すると上記第3レジスタ内の変
数値sumを演算結果として出力する手段とを備える演
算装置として、コンピュータを機能させるためのプログ
ラムを記録したコンピュータ読み取り可能な記録媒体。 - 【請求項9】 ある乗法群の要素g1 ,g2 ,…,gm
と整数y1 ,y2 ,…,ym が入力され、(g1 のy1
乗)×(g2 のy2 乗)×…×(gm のym乗)の演算
結果を出力する装置であって、g 1 の(−b 1 r1 )乗,g 1 の(−b 1 r1-1 )乗,…,
g 1 のb 1 0 乗,g 1 のb 1 1 乗,…,g 1 のb 1
r1 乗,g 2 の(−b 2 r2 )乗,g 2 の(−b 2 r2-1 )
乗,…,g 2 のb 2 0 乗,…,g 2 のb 2 r2 乗,…,g
m の(−b m rm )乗,…,g m のb m 0 乗,…,g m の
b m rm 乗の各値を記憶したメモリ手段と、 上記要素g1 ,g2 ,…,gm と上記整数y1 ,y2 ,
…,ym を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付bi 進展開して、yi =Σt=0 riaitbi t なる関
係の各係数ait(−[(bi −1)/2]≦ait≦
[(bi −1)/2],t=0,1,…,ri、[a]
はa以上で最小の整数である)を求める展開手段と、 上記求めた各係数aitを第1レジスタに格納する手段
と、 上記各係数aitの絶対値をそれぞれ2進展開して|ait
|=Σj=0 kit Cj (it)2j (Cj (it)∈{0,
1})なる関係の各Cj (it)2j を求める手段と、 上記係数Cj (it)が1である2j の集合S=(2
j,i,t)を第2レジスタに格納する手段と、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする手段と、 2つの変数sumとdの各初期値1とmaをそれぞれ第
3、第4レジスタに設定する手段と、 上記第2レジスタ内のPr(s)中の絶対値が上記変数
値dと一致するものを探索する探索手段と、 その探索したPr(s)が属する集合Sと対応する上記
係数aitの符号とiとtにより上記メモリを読出して
(gi の(aitの符号)bi t 乗)を得る手段と、 上記第3レジスタ内のsumと上記読出した(gi の
(aitの符号)bi t 乗)を乗算し、その結果を上記第
3レジスタに格納する乗算手段と、 上記第3レジスタ内のsumを自乗してその結果を上記
第3レジスタに格納する自乗手段と、 上記第4レジスタ内のdが1より大であるか1であるか
を判定する判定手段と、 上記判定手段が1より大と判定すると、上記第4レジス
タ内のdを2で割算してその結果を第4レジスタに格納
する手段と、 その第4レジスタ内の割算されたdに対し上記探索手
段、上記乗算手段、上記自乗手段、上記判定手段を動作
させる手段と、 上記判定手段が1と判定すると、上記第3レジスタ内の
変数値sumを演算結果として出力する手段とを備える
演算装置として、コンピュータを機能させるためのプロ
グラムを記録したコンピュータ読み取り可能な記録媒
体。 - 【請求項10】 ある楕円曲線群の要素G1 ,G2 ,
…,Gm と、整数y1,y2 ,…,ym が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する装置であって、b 1 0 G 1 ,b 1 1 G 1 ,…,b 1 r1 G 1 ,b 2 0 G
2 ,b 2 1 G 2 ,…,b 2 r2 G 2 ,…,b m 0 G m ,b
m 1 G m ,…,b m rm G m の各乗算値を記憶したメモリ
手段と、 上記要素G1 ,G2 ,…,Gm と上記整数y1 ,y2 ,
…,ym を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付bi 進展開してy1 =Σt=0 riaitbi t なる関係
の各係数ait(−[(bi −1)/2]≦ait≦[(b
i −1)/2],t=0,1,…,ri,[a]はa以
上で最小の整数である)を求める手段と、 上記求めた各係数aitを第1レジスタに格納する手段
と、 上記各係数aitの絶対値をそれぞれ2進展開して|ait
|=Σj=0 kit Cj (it)2j (Cj (it)∈{0,
1})なる関係の各Cj (it)2j を求める手段と、 上記係数Cj (it)が1である2j の集合S=(2
j,i,t)を第2レジスタに格納する手段と、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする手段と、 2つの変数sumとdの各初期値無限遠点とmaをそれ
ぞれ第3、第4レジスタに設定する手段と、 上記第2レジスタ内のPr(s)中の上記変数値dと一
致するものを探索する探索手段と、 その探索したPr(s)が属する集合Sのiとtによ
り、上記メモリ手段を読出して、bi t Gt を得る手段
と、 上記第3レジスタ内のsumと上記読出したbi t Gi
を上記探索した集合Sと対応するaitの符号を加味して
加算し、その結果を上記第3レジスタ内に格納する加算
手段と、 上記第3レジスタ内のsumを2倍し、その結果を上記
第3レジスタに格納する2倍手段と、 上記第4レジスタ内のdが1より大であるか1であるか
を判定する判定手段と、 上記判定手段が1より大と判定すると、上記第4レジス
タ内のdを2で割算して第4レジスタに格納する手段
と、 その第4レジスタ内の割算されたdに対し、上記探索手
段、上記加算手段、上記2倍手段、上記判定手段を動作
させる手段と、 上記判定手段が1と判定すると、上記第3レジスタ内の
変数値sumを演算結果として出力する手段とを備える
演算装置として、コンピュータを機能させるためのプロ
グラムを記録したコンピュータ読み取り可能な記録媒
体。 - 【請求項11】 ある乗法群の要素g1 ,g2 ,…,g
m と整数y1 ,y2,…,ym が入力され、(g1 のy1
乗)×(g2 のy2 乗)×…×(gm のym 乗)の演
算結果を出力する演算方法において、 g1 のb1 0 乗,g1 のb1 1 乗,…,g1 のb1
r1乗,g2 のb2 0 乗,g2 のb2 1 乗,…,g2 のb
2 r2乗,…,gm のbm 0 乗,gm のbm 1 乗,…,g
m のbm rm乗の各値をメモリ手段に記憶しておき、 上記各入力値yi (i=1,2,…,m)をそれぞれb
i 進展開してyi =Σt=0 riaitbi t なる関係の各係
数ait(0≦ait<bi ,t=0,1,…,ri)を求
めるb進展開過程と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
kit Cj (it)2j ,(Cj (it)∈{0,1})なる
関係の各Cj (it)2j を求める2進展開過程と、 上記係数Cj (it)が1である2j の集合S=(2j ,
i,t)をレジスタに格納する過程と、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする過程と、 2つの変数sumとdに対し初期値1とmaをそれぞれ
設定する過程と、 上記Pr(s)中の上記変数値dと一致するものを探索
する探索過程と、 その探索したPr(s)が属する集合Sのiとtによ
り、上記メモリ手段を参照してsum×(gi のbi t
乗)を演算し、その結果を新たなsumとする乗算過程
と、 上記変数sumを自乗して新たなsumとする自乗過程
と、 上記変数dが1より大であるか1であるかを判定する判
定過程と、 上記判定手段が1より大と判定すると、上記変数dを2
分の1にして新たなdとし、そのdに対し、上記探索過
程、上記乗算過程、上記自乗過程、上記判定過程を実行
させる過程と、 上記判定過程が1と判定すると上記変数値sumを演算
結果として出力する過程と、 を有する事前計算を用いた複数生成元に対する演算方
法。 - 【請求項12】 ある楕円曲線群の要素G1 ,G2 ,
…,Gm と、整数y1,y2 ,…,ym が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する演算方法において、 b1 0 G1 ,b1 1 G1 ,…,b1 r1G1 ,b2 0 G
2 ,b2 1 G2 ,…,b2 r2G2 ,…,bm 0 Gm ,b
m 1 Gm ,…,bm rmGm の各乗算値をメモリに記憶し
ておき、 上記各入力値yi (i=1,2,…,m)をそれぞれb
i 進展開してyi =Σt=0 riaitbi t なる関係の各係
数ait(0≦ait<b,t=0,1,…,ri)を求め
る展開過程と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
kit Cj (it)2j (Cj (it)∈{0,1})なる関
係の各Cj (it)2j を求める2進展開手段と、 上記係数Cj (it)が1である2j の集合S=(2
j,i,t)をレジスタに格納する過程と、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする過程と、 2つの変数sumとdに対し初期値無限遠点とmaをそ
れぞれ設定する過程と、 上記Pr(s)中の上記変数値dと一致するものを探索
する探索過程と、 その探索したPr(s)が属する集合Sのiとtによ
り、上記メモリ手段を参照してsum+bi t Gi を演
算し、その結果を新たなsumとする加算過程と、 上記変数sumと上記変数sumを加算して新たなsu
mとする2倍過程と、 上記変数dが1より大であるかd=1かを判定する判定
過程と、 上記判定過程が1より大と判定すると、上記変数dを2
分の1にして、新たなdとし、そのdに対し、上記探索
過程、上記加算過程と、上記2倍過程、上記判定過程を
実行させる過程と、 上記判定過程が1と判定すると上記変数値sumを演算
結果として出力する過程と、 を有する事前計算を用いた複数生成元に対する演算方
法。 - 【請求項13】 ある乗法群の要素g1 ,g2 ,…,g
m と整数y1 ,y2,…,ym が入力され、(g1 のy1
乗)×(g2 のy2 乗)×…×(gm のym 乗)の演
算結果を出力する演算方法において、 g1 の(−b1 r1)乗,g1 の(−b1 r1-1)乗,…,
g1 のb1 0 乗,g1のb1 1 乗,…,g1 のb1
r1乗,g2 の(−b2 r2)乗,g2 の(−b2 r2-1)
乗,…,g2 のb2 0 乗,…,g2 のb2 r2乗,…,g
m の(−bm rm)乗,…,gm のbm 0 乗,…,gm の
bm rm乗の各値をメモリ手段に記憶しておき、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付bi 進展開して、yi =Σt=0 riaitbi t なる関
係の各係数ait(−[(bi −1)/2]≦ait≦
[(bi −1)/2],t=0,1,…,ri,[a]
はa以上で最小の整数である)を求める展開過程と、 上記各係数の|ait|をそれぞれ2進展開して|ait|
=Σj=0 kit Cj (it)2j (Cj (it)∈{0,
1})なる関係の各Cj (it)2j を求める2進展開過
程と、 上記係数Cj (it)が1である2j の集合S=(2
j,i,t)をレジスタに格納する過程と、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする過程と、 2つの変数sumとdに対し初期値1とmaをそれぞれ
設定する過程と、 上記Pr(s)中の上記変数値dと一致するものを探索
する探索過程と、 その探索したPr(s)が属する集合Sと対応aitの符
号とiとtにより、上記メモリ手段を参照してsum×
(gi の(aitの符号)bi t 乗)を演算し、その結果
を新たなsumとする乗算過程と、 上記変数sumと上記変数sumとを掛算して新たなs
umとする自乗過程と、 上記変数dが1より大であるかd=1であるかを判定す
る判定過程と、 上記判定過程が1より大と判定すると、上記変数dを2
分の1にして新たなdとし、そのdに対し上記探索過
程、上記乗算過程、上記自乗過程、上記判定過程を実行
させる過程と、 上記判定過程がd=1と判定すると、上記変数値sum
を演算結果として出力する過程と、 を有する事前計算を用いた複数生成元に対する演算方
法。 - 【請求項14】 ある楕円曲線群の要素G1 ,G2 ,
…,Gm と、整数y1,y2 ,…,ym が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する演算方法において、 b1 0 G1 ,b1 1 G1 ,…,b1 r1G1 ,b2 0 G
2 ,b2 1 G2 ,…,b2 r2G2 ,…,bm 0 Gm ,b
m 1 Gm ,…,bm rmGm の各乗算値をメモリ手段に記
憶しておき、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付bi 進展開してy1 =Σt=0 riaitbi t なる関係
の各係数ait(−[(bi −1)/2]≦ait≦[(b
i −1)/2],t=0,1,…,ri,[a]はa以
上で最小の整数である)を求める展開過程と、 上記各係数の|ait|をそれぞれ2進展開して|ait|
=Σj=0 kit Cj (it)2j (Cj (it)∈{0,
1})なる関係の各Cj (it)2j を求める2進展開過
程と、 上記係数Cj (it)が1である2j の集合S=(2
j,i,t)をレジスタに格納する過程と、 上記集合Sの第1項を取り出す関数をPr(s)とする
時、すべてのPr(s)中の最大の2j を検出してma
とする過程と、 2つの変数sumとdに対し初期値無限遠点とmaをそ
れぞれ設定する過程と、 上記Pr(s)中の上記変数値dと一致するものを探索
する探索過程と、 その探索したPr(s)が属する集合Sのiとtによ
り、上記メモリ手段を参照し、かつ該集合Sと対応する
aitの符号によりsum+(aitの符号)bi tGi を
演算してその結果を新たなsumとする加算過程と、 上記変数sumと上記変数sumとを加算して新たなs
umとする2倍過程と、 上記変数dが1より大であるか1であるかを判定する判
定過程と、 上記判定過程が1より大と判定すると、上記変数dを2
分の1して新たなdとし、そのdに対し、上記探索過
程、上記加算過程、上記2倍過程、上記判定過程を実行
させる過程と、 上記判定過程が1と判定すると、上記変数値sumを演
算結果として出力する過程と、 を有する事前計算を用いた複数生成元に対する演算方
法。 - 【請求項15】 ある群Gの要素g1 ,g2 ,…,gm
と、整数y1 ,y2,…,ym が入力され、群G上に定
義された演算をoで表わし、g1 og1 o…og1 のy
1 −1回演算をy1 g1 とし、g1 の逆元をg1 -1と
し、g1 0 =(群Gの単位元),g1 1 =g1 として、 y1 g1 oy2 g2 o…oym gm を求める演算装置において、 (g1 -1,(2x1g1 )-1,(22x1 g1 )-1,…,(2p1x1g1 )-1,g1 ,2x1g1 ,22x1 g1 ,…,2p1x1g1 ) (g2 -1,(2x2g2 )-1,(22x2 g2 )-1,…,(2p2x2g2 )-1,g2 ,2x2g2 ,22x2 g2 ,…,2p2x2g2 ) ・ ・ ・ (gm -1,(2xmgm )-1,(22xm gm )-1,…,(2pmxmgm )-1,gm ,2xmgm ,22xm gm ,…,2pmxmgm )の各値が記
憶されたメモリ手段と、上記各入力値yi を符号付2進
展開して yi =Σt=0 riait2t (但し1<i<m,ait∈
{−1,0,1})なる関係の各係数ai1〜aimをyi
の符号付2進数として求める符号付2進展開手段と、 上記各入力値yiの符号付2進数aitをxi ビットずつ
に分割し、そのxi ビット単位のブロックを下位よりY
i (0) ,Yi (1) ,Yi (2) ,…として保持する手段
と、 上記ブロックYi (j) のうち最大値のビット数をmaと
して検出する検出手段と、 2つの変数sumとdに対しsum=(群Gの単位
元),d=ma−1を初期設定する手段と、Y i (j) [d]が1又は−1の時は 【数1】 (A[j]はAの第jビット目を表わし、最下位ビット
を第0ビット目とする)なるすべての値を上記メモリ手
段から探索する探索手段と、 【数2】 その結果を新たなsumとするo演算手段と、 sumosumを演算してその結果を新たなsumとす
る倍演算手段と、 上記変数dがd>0であるかd=0であるかを判定する
判定手段と、 上記判定手段がd>0と判定すると、上記変数dを1減
算して新たなdとし、そのdに対し、上記探索手段、上
記o演算手段、上記倍演算手段、上記判定手段を動作さ
せる手段と、 上記判定手段がd=0と判定すると、そのdについての
上記の演算手段の演算結果を出力する手段とを具備する
事前計算を用いた複数生成元に対する演算装置。 - 【請求項16】 ある乗法群の要素g1 ,g2 ,…,g
m と整数y1 ,y2,…,ym が入力され、(g1 のy1
乗)×(g2 のy2 乗)×…×(gm のym 乗)の演
算結果を出力する演算装置において、 g1 の±1乗,g1 の±2x1乗,…,g1 の±2
p1x1乗,g2 の±1乗,g2の±2x2乗,…,g2 の±
2p2x2乗,…,gm の±1乗,gm の±2xm乗,…,g
m の2pmxm乗の各値を記憶したメモリ手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付2進展開してyi=Σt=0 riait2t なる関係の各
係数ait(0≦i≦m,t=0,1,…,ri,ait∈
{−1,0,1})をy i の符号付2進数として求める
符号付2進展開手段と、 上記各入力値yi の符号付2進数a it をそれぞれxi ビ
ットずつに分割して、xi ビット単位のブロックYi
(0) ,Yi (1) ,Yi (2) ,…を保持するxi ビット分
割保持手段と、 上記ブロックYi (j) 中の最大値のビット数maを検出
する手段と、 2つの変数sumとdに対し初期値1とma−1をそれ
ぞれ設定する手段と、 Yi (j) [d]・2jxi (A[j]はAの第jビット
目を表わし、最下位ビットを第0ビット目とする)をg
i に対するべき乗値とするすべてのgi の±2jxi 乗を
上記メモリ手段から探索し、Y i (j) [d]=0の場合は
探索結果を1とする探索手段と、 上記探索できたすべてのgi の±2jxi 乗と変数sum
とを乗算して新たなsumとする乗算手段と、 上記変数sumを自乗して新たなsumとする自乗手段
と、 上記変数dがd>0であるかd=0であるかを判定する
判定手段と、 上記判定手段がd>0と判定すると、上記変数dを1減
算して新たなdとし、そのdに対し、上記探索手段、上
記乗算手段、上記自乗手段、上記判定手段を動作させる
手段と、 上記判定手段がd=0と判定すると、そのdについての
上記乗算手段の演算結果を出力する手段と、 を具備する事前計算を用いた複数生成元に対する演算装
置。 - 【請求項17】 ある楕円曲線群の要素G1 ,G2 ,
…,Gm と、整数y1,y2 ,…,ym が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する演算装置において、 G1 ,2x1G1 ,22x1 G1 ,…,2p1x1G1 ,G2 ,
2x2G2 ,22x2 G2,…,2p2x2G2 ,…,Gm ,2
xmGm ,22xm Gm ,…,2pmxmGm の各乗算値を記憶
したメモリ手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付2進展開してyi=Σt=0 riait2t なる関係の各
係数ait(1<i<m,ait∈{−1,0,1})をy
iの符号付2進数として求める展開手段と、 上記各入力値yiの符号付2進数aitをxi ビットずつ
分割し、そのブロックを下位よりYi (0) ,Yi (1) ,
Yi (2) ,…として保持する手段と、 上記ブロックYi (j) 中の最大値のビット数を検出して
maとする手段と、 2つの変数sumとdに対し無限遠点とma−1をそれ
ぞれ初期設定する手段と、2 jxi Gi と一致するすべての値を上記メモリ手段から
探索する探索手段と、 上記探索できた値を用いてsum+Y i (j) [d]・2
jxi Gi を演算して、その結果を新たなsumとする加
算手段と、ここでA[j]はAの第jビット目を表わ
し、最下位ビットを第0ビット目とする、 sum+sumを演算してその結果を新たなsumとす
る2倍手段と、 変数dがd>0かd=0かを判定する判定手段と、 上記判定手段がd>0と判定すると、変数dを1減算し
て新たなdとし、そのdに対し、上記探索手段、上記加
算手段、上記2倍手段、上記判定手段を動作させる手段
と、 上記判定手段がd=0と判定すると、そのdについての
上記加算手段の演算結果を出力する手段と、 を具備する事前計算を用いた複数生成元に対する演算装
置。 - 【請求項18】 ある乗法群の要素g1 ,g2 ,…,g
m と整数y1 ,y2,…,ym が入力され、(g1 のy1
乗)×(g2 のy2 乗)×…×(gm のym 乗)の演
算結果を出力する装置であって、g 1 の±1乗,g 1 の±2 x1 乗,…,g 1 の±2
p1x1 乗,g 2 の±1乗,g 2 の±2 x2 乗,…,g 2 の±
2 p2x2 乗,…,g m の±1乗,g m の±2 xm 乗,…,g
m の2 pmxm 乗の各値を記憶したメモリ手段と、 上記要素g1 ,g2 ,…,gm と上記整数y1 ,y2 ,
…,ym を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付2進展開してyi=Σt=0 riait2t なる関係の各
係数ait(0≦i≦m,t=0,1,…,ri,ait∈
{−1,0,1})をy i の符号付2進数として求める
符号付2進展開手段と、 上記各入力値yi の符号付2進数a it をそれぞれxi ビ
ットずつに分割して、xi ビット単位のブロックYi
(0) ,Yi (1) ,Yi (2) ,…を保持するxi ビット分
割保持手段と、 上記ブロックのYi (j) 中の最大値のビット数maを検
出する手段と、 2つの変数sumとdに対し初期値1とma−1をそれ
ぞれ設定する手段と、 Yi (j) [d]・2jxi (A[j]はAの第jビット
目を表わし、最下位ビットを第0ビット目とする)をg
i に対するべき乗値とするすべてのgi の±2jxi 乗を
上記メモリ手段から探索し、Y i (j) [d]=0の場合は
探索結果を1とする探索手段と、 上記探索できたすべてのgi の±2jxi 乗と変数sum
とを乗算して新たなsumとする乗算手段と、 上記変数sumを自乗して新たなsumとする自乗手段
と、 上記変数dがd>0であるかd=0であるかを判定する
判定手段と、 上記判定手段がd>0と判定すると、上記変数dを1減
算して新たなdとし、そのdに対し、上記探索手段、上
記乗算手段、上記自乗手段、上記判定手段を動作させる
手段と、 上記判定手段がd=0と判定すると、そのdについての
上記乗算手段の演算結果を出力する手段とを備える演算
装置として、コンピュータを機能させるためのプログラ
ムを記録したコンピュータ読み取り可能な記録媒体。 - 【請求項19】 ある楕円曲線群の要素G1 ,G2 ,
…,Gm と、整数y1,y2 ,…,ym が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する装置であって、 G1 ,2x1G1 ,22x1 G1 ,…,2p1x1G1 ,G2 ,
2x2G2 ,22x2 G2,…,2p2x2G2 ,…,Gm ,2
xmGm ,22xm Gm ,…,2pmxmGm の各乗算値を記憶
したメモリ手段と、 上記要素G1 ,G2 ,…,Gm 、上記整数y1 ,y2 ,
…,ym を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付2進展開してyi=Σt=0 riait2t なる関係の各
係数ait(1<i<m,ait∈{−1,0,1})をy
iの符号付2進数として求める展開手段と、 上記各入力値yiの符号付2進数aitをxi ビットずつ
分割し、そのブロックを下位よりYi (0) ,Yi (1) ,
Yi (2) ,…として保持する手段と、 上記ブロックYi (j) 中の最大値のビット数を検出して
maとする手段と、 2つの変数sumとdに対し無限遠点とma−1をそれ
ぞれ初期設定する手段と、2 jxi Gi と一致するすべての値を上記メモリ手段から
探索する探索手段と、 上記探索できた値を用いてsum+Y i (j) [d]・2
jxi Gi を演算して、その結果を新たなsumとする加
算手段と、ここでA[j]はAの第jビット目を表わ
し、最下位ビットを第0ビット目とする、 sum+sumを演算してその結果を新たなsumとす
る2倍手段と、 変数dがd>0かd=0かを判定する判定手段と、 上記判定手段がd>0と判定すると、変数dを1減算し
て新たなdとし、そのdに対し、上記探索手段、上記加
算手段、上記2倍手段、上記判定手段を動作させる手段
と、 上記判定手段がd=0と判定すると、そのdについての
上記加算手段の演算結果を出力する手段とを備える演算
装置として、コンピュータを機能させるためのプログラ
ムを記録したコンピュータ読み取り可能な記録媒体。 - 【請求項20】 ある乗法群の要素g1 ,g2 ,…,g
m と整数y1 ,y2,…,ym が入力され、(g1 のy1
乗)×(g2 のy2 乗)×…×(gm のym 乗)の演
算結果を出力する演算方法において、 g1 の±1乗,g1 の±2x1乗,…,g1 の±2
p1x1乗,g2 の±1乗,g2の±2x2乗,…,g2 の±
2p2x2乗,…,gm の±1乗,gm の±2xm乗,…,g
m の2pmxm乗の各値をメモリ手段に記憶しておき、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付2進展開してyi=Σt=0 riait2t なる関係の各
係数ait(0≦i≦m,t=0,1,…,ri,ait∈
{−1,0,1})をy i の符号付2進数として求める
符号付2進展開過程と、 上記各入力値yi の符号付2進数a it をそれぞれxi ビ
ットずつに分割して、xi ビット単位のブロックYi
(0) ,Yi (1) ,Yi (2) ,…を保持するxi ビット分
割保持過程と、 上記ブロックYi (j) 中の最大値のビット数maを検出
する過程と、 2つの変数sumとdに対し初期値1とma−1をそれ
ぞれ設定する過程と、 Yi (j) [d]・2jxi (A[j]はAの第jビット
目を表わし、最下位ビットを第0ビット目とする)をg
i に対するべき乗値とするすべてのgi の±2jxi 乗を
上記メモリ手段から探索し、Y i (j) [d]=0の場合は
探索結果を1とする探索過程と、 上記探索できたすべてのgi の±2jxi 乗と変数sum
とを乗算して新たなsumとする乗算過程と、 上記変数sumを自乗して新たなsumとする自乗過程
と、 上記変数dがd>0であるかd=0であるかを判定する
判定過程と、 上記判定過程がd>0と判定すると、上記変数dを1減
算して新たなdとし、そのdに対し、上記探索過程、上
記乗算過程、上記自乗過程、上記判定過程を実行させる
過程と、 上記判定過程がd=0と判定すると、そのdについての
上記乗算過程の演算結果を出力する過程と、 を有する事前計算を用いた複数生成元に対する演算方
法。 - 【請求項21】 ある楕円曲線群の要素G1 ,G2 ,
…,Gm と、整数y1,y2 ,…,ym が入力され、 y1 G1 +y2 G2 +…+ym Gm の演算結果を出力する演算方法において、 G1 ,2x1G1 ,22x1 G1 ,…,2p1x1G1 ,G2 ,
2x2G2 ,22x2 G2,…,2p2x2G2 ,…,Gm ,2
xmGm ,22xm Gm ,…,2pmxmGm の各乗算値をメモ
リ手段に記憶しておき、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
号付2進展開してyi=Σt=0 riait2t なる関係の各
係数ait(1<i<m,,ait∈{−1,0,1})を
yiの符号付2進数として求める展開過程と、 上記各入力値yi の符号付2進数aitをxi ビットずつ
分割し、そのブロックを下位よりYi (0) ,Yi (1) ,
Yi (2) ,…として保持する過程と、 上記ブロックYi (j) 中の最大値を検出してmaとする
過程と、 2つの変数sumとdに対し無限遠点とma−1をそれ
ぞれ初期設定する過程と、2 jxi Gi と一致するすべての値を上記メモリ手段から
探索する探索過程と、 上記探索できた値を用いてsum+Y i (j) [d]・2
jxi Gi を演算して、その結果を新たなsumとする加
算過程と、ここでA[j]はAの第jビット目を表わ
し、最下位ビットを第0ビット目とする、 sum+sumを演算してその結果を新たなsumとす
る2倍手段と、 変数dがd>0かd=0かを判定する判定過程と、 上記判定過程がd>0と判定すると、変数dを1減算し
て新たなdとし、そのdに対し、上記探索過程、上記加
算過程、上記2倍過程、上記判定過程を実行させる過程
と、 上記判定過程がd=0と判定すると、そのdについての
上記加算過程の演算結果を出力する過程と、 を具備する事前計算を用いた複数生成元に対する演算方
法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25557298A JP3401196B2 (ja) | 1998-05-07 | 1998-09-09 | 事前計算を用いた複数生成元に対する演算装置、そのプログラム記録媒体、及び演算方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10-124570 | 1998-05-07 | ||
JP12457098 | 1998-05-07 | ||
JP25557298A JP3401196B2 (ja) | 1998-05-07 | 1998-09-09 | 事前計算を用いた複数生成元に対する演算装置、そのプログラム記録媒体、及び演算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000029385A JP2000029385A (ja) | 2000-01-28 |
JP3401196B2 true JP3401196B2 (ja) | 2003-04-28 |
Family
ID=26461242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25557298A Expired - Fee Related JP3401196B2 (ja) | 1998-05-07 | 1998-09-09 | 事前計算を用いた複数生成元に対する演算装置、そのプログラム記録媒体、及び演算方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3401196B2 (ja) |
-
1998
- 1998-09-09 JP JP25557298A patent/JP3401196B2/ja not_active Expired - Fee Related
Non-Patent Citations (3)
Title |
---|
HANDBOOK of APPLIED CRYPTOGRAHY,CRC Press,p.617−618 |
KNUTH The Art of Computer Programming=4,1986年 8月25日,p.384,471 |
効率的なn変数べき乗剰余演算法の提案とその一応用,電子通信学会技術研究報告,1991年11月29日,Vol.91 No.359,p.25−36 |
Also Published As
Publication number | Publication date |
---|---|
JP2000029385A (ja) | 2000-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Adleman et al. | On taking roots in finite fields | |
EP0917047B1 (en) | Apparatus for modular inversion for information security | |
US7486789B2 (en) | Device and method for calculation on elliptic curve | |
US20100146028A1 (en) | Method and apparatus for modulus reduction | |
US7080109B2 (en) | Methods and apparatus for incomplete modular arithmetic | |
JPH09204296A (ja) | べき乗剰余演算方法及び装置 | |
US6609141B1 (en) | Method of performing modular inversion | |
JP4354609B2 (ja) | 有限体上の連立方程式求解装置及び逆元演算装置 | |
JP3401196B2 (ja) | 事前計算を用いた複数生成元に対する演算装置、そのプログラム記録媒体、及び演算方法 | |
Chang et al. | Fast algorithms for common-multiplicand multiplication and exponentiation by performing complements | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
Arazi et al. | On calculating multiplicative inverses modulo $2^{m} $ | |
JP3434220B2 (ja) | 逆元演算装置、及びそのプログラム記録媒体 | |
JP3796867B2 (ja) | 素数判定方法および装置 | |
JP4203944B2 (ja) | 楕円曲線演算装置及び楕円曲線演算方法 | |
US20050175174A1 (en) | Calculating the modular inverses of a value | |
JP3292362B2 (ja) | 素数生成装置、素因数判定装置、および制限付き素数生成装置 | |
JPH11296077A (ja) | 事前計算を用いた複数生成元に対する演算装置及びそのプログラム記録媒体 | |
JP3332270B2 (ja) | べき乗演算装置 | |
JP3136709B2 (ja) | べき積演算装置 | |
JP3638493B2 (ja) | 楕円曲線自乗演算装置、およびこのプログラム記録媒体 | |
JP3390966B2 (ja) | 平方数を法とした剰余演算装置及びそのプログラム記録媒体 | |
JP4080754B2 (ja) | 剰余演算装置及び方法 | |
JP3992883B2 (ja) | 演算装置及び演算方法 | |
JP3460798B2 (ja) | 楕円積和演算計算方法、楕円積和演算計算装置及び楕円積和演算計算プログラムを記録した記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080221 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090221 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090221 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100221 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110221 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110221 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120221 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130221 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |