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
Application number
JP25557298A
Other languages
English (en)
Other versions
JP2000029385A (ja
Inventor
邦生 小林
光 森田
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 JP25557298A priority Critical patent/JP3401196B2/ja
Publication of JP2000029385A publication Critical patent/JP2000029385A/ja
Application granted granted Critical
Publication of JP3401196B2 publication Critical patent/JP3401196B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は例えば情報セキュ
リティ技術に利用され、事前計算を用いて生成元が複数
存在するものを算出する装置およびそのプログラム記録
媒体に関するものである。
【0002】
【従来の技術】従来技術として提案されている藤崎らに
よる有限体上の1つの生成元に対する演算方式(藤崎,
太田,“べき乗剰余計算における累乗テーブル法の利用
についての考察,”暗号と情報セキュリティシンポジウ
ムSCIS93−4C,1993)の説明をする。この
方式は固定されたg(∈Z/qZ)と固定でないnに対
してgn を求める方式である。
【0003】 n=Σt=0 r t t (但し0t <b) としてnをb進展開する。今、gのb0 乗、gのb1
乗、…、gのbt 乗を事前計算してメモリ手段に蓄積し
ておく。さらにat を以下のように2進展開する。 at =Σj=0 ktj (t)2j (但しCj (t)∈
{0,1} ここで係数Cj (t)が1となる2j と、そのときのt
を組とした集合をSとする。すなわち集合S=
{(2j ,t)|Cj (it)=1,0r}である。
【0004】ここで一般に集合Sの各要素がx1 ,x2
よりなる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と一
致するものを探索し、以下のような処理を施す。
【0005】・一致するもの…その2j に対応するt
(2j ,t)|Cj (t)=1のt)を用いてgのbt
乗をメモリから読出し、これにsumを乗算して新たな
sumとする。 ・上記以外…何もしない。 d>1ならばsum←sum×sumを行い、d←d/
2とし(★)の処理に戻り処理を続行する。d=1なら
ば処理を終了して、そのときのsumを演算結果として
出力する。これは事前計算を用いた櫛型演算方式であ
る。
【0006】この従来方式にて複数生成元に対する演算
を行う場合は個々の生成元に対して計算を行い、最後に
これら計算結果の積をとることで求める。この従来方式
の具体的な数値例を図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乗
についても同様の処理が施してある。
【0007】ここでは図10Aのg1 の352乗の計算
を例に挙げて説明する。3,5,2の2進展開で100
の位の第1項は21 であり、10の位の第1項は22
あり、1の位の第1項は21 であるから、プロットの中
で最も値が大きいのは10の位にプロットのある22
4である。従ってma=4であり、変数dは4から処理
がスタートする。なお変数sumの初期値としてsum
=1を与える。
【0008】d=4=22 上にプロットがあるのは10
の位のみである。その係数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(=
1 20 )がd=4のときの結果となる。次にd←d/2
を行いd=2=21 とする。
【0009】d=21 上にプロットがあるのは100の
位と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×
1 110=g1 352となり、この時、d=1であるから、演
算結果としてsum=g1 352を得る。
【0010】図10Bに示すg2 に関する処理も同様に
行われてg2 406が得られる。この結果g2 406とg1 の結
果であるg1 352 との積をとり、最終的なg1 3522
406を得る。このように複数の生成元が存在する場合は
その生成元の数だけ上記方式を繰り返すことになる。
【0011】また前記藤崎らによる有限体上の1つの生
成元に対する演算方式(藤崎、太田、“べき乗剰余計算
における累乗テーブル法の利用についての考察”、暗号
と情報セキュリティシンポジウムSCIS93−4C,
1993)には次の方式も示されている。即ちこの方式
は固定されたg(∈Z/qZ)と固定でないnに対して
n を求める方式である。
【0012】 n=Σt=0 r t t (但しat ∈{0,1}) としてnを2進展開する。次にnをxビットずつに分割
する。そのxビット単位のブロックを下位よりN (0)
(1) ,N(2) ,…とする。今
【0013】
【数2】 を事前計算し、メモリ手段に蓄積されているものとす
る。そしてsumとdとの2つの変数を用意し、sum
=1,d=x−1を初期設定する。(★)各々のjに対
して次式を演算する。A[j]はAの第jビット目を表
わす。
【0014】
【数3】 d>1ならばsum←sum×sumを行い、d←d−
1として(★)へ戻る。d=1ならば終了してそのとき
のsumを演算結果として出力する。この従来方式にて
複数生成元に対する演算を行う場合は個々の生成元に対
して計算を行い、最後にこれらから得られた結果の積を
とることで求める。
【0015】この従来方式の説明ではyを10進展開し
た後、その各桁を2進展開したが、前記10進展開の代
わりに2のべき乗で展開したならば、前記演算は、次の
ような手順で演算することもできる。この具体的な数値
例を図11に挙げる。図11ではg1 29 2 27 を求める
ことを例とする。まずg1 29 についてであるが、29を
2進展開すると図11Aに示すように111012 であ
る。これをx=3ビットずつに分割する。すると図11
Bに示すように(011,101)2 である。なおここ
でg1 8とg1 はテーブルにその値を保持しており、分割
後の上位ブロックが(g1 83 、下位ブロックが
(g1 5 に対応していることに注意されたい。
【0016】図11ではステップ1〜3に分かれてお
り、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)。
【0017】ステップ2:(d=1)上位N(1) [1]
は1、下位N(0) [1]は0であるのでj=1で
(g1 23 =g1 8,j=0でg1 0=1となり、sum←
sum×g 1 8=g1 2×g1 8を演算して(sum=
1 10 )となる。d>0であるのでsum←sum×s
umを演算して(sum=g1 20 )となる。d←d−1
としてステップ3へ(図11D)。
【0018】ステップ3:(d=0)上位N(1) [0]
は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 2 27 を得
る。
【0019】このように複数の生成元が存在する場合は
その生成元の数だけ上記方式を繰り返すことになる。
【0020】
【発明が解決しようとする課題】コンピュータの計算能
力の向上や各種解法アルゴリズムの発見により、暗号や
署名の安全性を向上させるためにより難しい問題を根拠
とする必要が生じている。これに対する解決法としてよ
り難しい問題である複数生成元を扱った離散対数問題や
楕円曲線上の群に対する離散対数問題を安全性の根拠と
する暗号方式や署名方式が提案されつつある。
【0021】従来の藤崎らによる有限体上の1つの生成
元に対する演算方式では、こういった複数生成元をもつ
ものに対してはその生成元の数の分だけ方式自体を繰り
返すこととなり効率的な演算という点で十分な効果が得
られなかった。従来方式による具体的な数値例を図1
0、図11に挙げたが、従来方式ではg1 352とg2 406
独立にまたg1 29 とg2 27 を独立に計算し最後に両者の
積をとるという処理が必要であった。
【0022】この発明の目的は上記従来方式の問題点に
対して、より難しい問題点である複数生成元に対する離
散対数問題を安全性の根拠とした暗号方式や署名方式の
内部演算をより効率的に行うことを可能とする演算装置
とそのプログラム記録媒体を提供することにある。
【0023】
【課題を解決するための手段】請求項1の発明によれば
ある群Gの要素g1 ,g2 ,…,gm と整数y1 ,y
2 ,…,ym が入力され、今この群G上に定義された演
算をoで表わし、gi ogi o…ogi のyj −1回の
演算をyj i と、gi の逆元をgi -1と表わし、gi
0 =(群Gの単位元),gi 1 =gi として、今 y1 1 oy2 2 o…oym m を求める装置であって、(b1 01 ,b1 1 1 ,…,
1 r11 ),(b2 02 ,b2 1 2 ,…,b2 r2
2 ),…,(bm 0 m ,bm 1 m ,…,b
m rmm )を事前計算しメモリ手段に蓄積しておき、y
i を次のようにbi 進展開し、 yi =Σt=0 riiti t (但し1m,0
it<bi ) このbi 進展開したときの係数aitをさらに以下のよう
に2進展開し、 ait=Σj=0 kit j (it)2j (但しCj (it)∈{0,
1}) 係数Cj (it)が1となる2j の集合S={(2i ,i,
t)|Cj (it)=1,1m,0i }をレ
ジスタに格納し、集合Sの第1項を取り出す関数をPr
(s)=x1 とする時、全てのPr(s)中の最大の2j
検出してmaとし、2つの変数sumとdに対し、su
m=(群Gの単位元),d=maを初期設定し、(★)
集合S中の全2j 要素に対し、dと一致するものを探索
し以下のような作業を施す。
【0024】・一致するもの…その2j に対応するiと
tを用いてsum←sumobi ti を演算する。 ・上記以外…何もしない。 d>1ならばsum←sumosumを演算し、d←d
/2とし(★)の作業に戻り処理を続行する。d=1な
らば終了してそのときのsumを演算結果として出力す
る。
【0025】請求項2の発明によれば、ある乗法群の要
素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 riiti t なる関係の各係数a
it(0≦ait<bi ,t=0,1,…,ri)が展開手
段で求められてレジスタに格納され、上記各係数ait
それぞれ2進展開してait=Σj=0 kit j (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が演算結果として出力される。
【0026】請求項3の発明によればある楕円曲線群の
要素G1 ,G2 ,…,Gm と、整数y1 ,y2 ,…,y
m が入力され、 y11 +y22 +…+ym m の演算結果を出力する演算装置において、b1 01
1 11 ,…,b1 r11 ,b2 02 ,b2 1
2 ,…,b 2 r22 ,…,bm 0m ,bm 1m
…,bm rmm の各乗算値がメモリ手段に記憶され、上
記各入力値yi (i=1,2,…,m)がそれぞれ展開
手段により、bi 進展開されてyi =Σt=0 riiti
t なる関係の各係数ait(0≦ait<b,t=0,1,
…,ri)が求められ、これら各係数aitがレジスタに
格納され、上記各係数aitをそれぞれ2進展開してait
=Σj=0 kit j (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 i が加算手段で、上記楕
円曲線上で演算され、その結果が新たなsumとされ、
その変数sumが2倍手段により上記楕円曲線上で2倍
されて新たなsumとされ、上記変数dが1より大であ
るかd=1かが判定手段で判定され、上記判定手段が1
より大と判定すると、上記変数dを2で割算して、新た
なdとし、そのdに対し、上記探索手段、上記加算手
段、上記2倍手段、上記判定手段が繰返され、上記判定
手段が1と判定すると上記変数値sumが演算結果とし
て出力される。
【0027】請求項4の発明によればある乗法群の要素
1 ,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
m rm乗の各値がメモリ手段に記憶され、上記各入力値
i (i=1,2,…,m)がそれぞれ符号付bi 進展
開されて、yi =Σt=0 riiti t なる関係の各係数
it(−[(bi −1)/2]≦ait≦[(bi −1)
/2],t=0,1,…,ri,[a]はa以上で最小
の整数である)がb進展開手段により求められてレジス
タに格納され、上記各係数aitの絶対値がそれぞれ2進
展開手段により2進展開されて|ait|=Σj=0 ki t
j (it)2j (Cj (it)∈{0,1})なる関係の各
j (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が演算結果として出力される。
【0028】請求項5の発明によればある楕円曲線群の
要素G1 ,G2 ,…,Gm と、整数y1 ,y2 ,…,y
m が入力され、 y11 +y22 +…+ym m の演算結果を出力する演算装置において、b1 01
1 11 ,…,b1 r11 ,b2 02 ,b2 1
2 ,…,b 2 r22 ,…,bm 0m ,bm 1m
…,bm rmm の各乗算値がメモリ手段に記憶され、上
記各入力値yi (i=1,2,…,m)が展開手段で、
それぞれ符号付bi 進展開されてyi =Σt=0 riit
i t なる関係の各係数ait(−[(bi −1)/2]≦
it≦[(bi −1)/2],t=0,1,…,ri,
[a]はa以上で最小の整数である)が求められてレジ
スタに格納され、上記各係数aitの絶対値がそれぞれ展
開手段で2進展開して|ait|=Σj=0 kit j (it)
j (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 i が上記楕円曲線上で演算
され、その結果が新たなsumとされ、上記変数sum
が2倍手段で上記楕円曲線上で2倍にされて新たなsu
mとされ、上記変数dが1より大であるか1であるかが
判定手段で判定され、上記判定手段が1より大と判定す
ると、上記変数dを2で割算して新たなdとし、そのd
に対し、上記探索手段、上記加算手段、上記2倍手段、
上記判定手段が繰返され、上記判定手段が1と判定する
と、上記変数値sumが演算結果として出力される。
【0029】請求項15の発明によればg1 ,g2
…,gm がある群Gの要素であり、y 1 ,y2 ,…,y
m が整数であり、この群G上に定義された演算をoで表
わし、以下ではg1 og1 o…og1 のy1 −1回の演
算をy1 1 と、g1 の逆元をg1 -1と表わし、またg
1 0 =(群Gの単位元)、g1 1 =g1 とし、 y1 1 oy2 2 o…oym m を求める装置であって、 (g1 -1,(2x11 -1,(22x1 1 -1,…,
(2p1x11 -1,g1,2x11 ,22x1 1 ,…,
p1x11 ) (g2 -1,(2x22 -1,(22x2 2 -1,…,
(2p2x22 -1,g2,2x22 ,22x2 2 ,…,
p2x22 ) ・ ・ ・ (gm -1,(2xmm -1,(22xm m -1,…,
(2pmxmm -1,gm,2xmm ,22xm m ,…,
pmxmm ) をメモリ手段に蓄積しておき、yi が次のような関係を
持ち、ai1〜aimの係数で表わされるとして、 yi =Σt=0 riitt (但し1m,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
に対してメモリ手段を用いて、
【0030】
【数4】 を演算し、(最下位ビットを第0ビット目と約束し、A
[j]はAの第jビット目を表わすこととする。)d>
0ならばsum←sumosumを行い、d←d−1と
して(★)へ戻る。d=0ならば終了してそのときのs
umを演算結果として出力する。
【0031】請求項18の発明によれば、ある乗法群の
要素g1 ,g2 ,…,gm と整数y 1 ,y2 ,…,ym
に対して、 g1 y12 y2・・・gm ym を求める方法であって、yi が次のような関係を持ち、
i1〜aimの係数で表わされるとし、 yi =Σt=0 riitt (但し1m,ait
{−1,0,1}) 各yi をxi ビットずつに分割し、そのxi ビット単位
のブロックを下位よりY i (0) ,Yi (1) ,Yi (2)
…として保持し、
【0032】
【数5】 をメモリ手段に蓄積しておき、Yi (j) のうち最大値を
検出してmaとし、また以下では最下位ビットを第0ビ
ット目と約束し、A[j]はAの第jビット目を表わす
こととし、sumとdの2つの変数に対し、sum=
1,d=ma−1を初期設定し、(★)各i,jに対し
【0033】
【数6】 を演算し、d>0ならばsum←sum×sumを演算
し、d←d−1として(★)へ戻る。d=0ならば終了
してそのときのsumを演算結果として出力する。請求
項19の発明ではある楕円曲線群の要素G1 ,G2
…,Gm と整数y1,y2 ,…,ym に対して、 y1 1 +y2 2 +…+ym m を求める方法であって、請求項18において演算「×」
の代わりに演算「+」を用いる。また
【0034】
【数7】 の代わりにYi (j) [d]・2jxi i を使い初期設定
sum=1の代わりにsum=0を初期設定に置き換え
て、上記の演算結果を出力する。以上の構成のようにこ
れまで別々に行っていた各生成元(ある群の要素)に対
するその群上に定義された演算を先にまとめて全体に施
すことにより、これまで複数回必要であった演算を1回
で完了可能とする。
【発明の実施の形態】以下図面を用いてこの発明の実施
例について詳しく説明する。第一実施例 ある乗法群の要素g1 ,g2 ,…,gm と整数y1 ,y
2 ,…,ym に対して、 g1 y12 y2…gm ym を求めて出力する。この処理を実行する第一実施例の原
理とアルゴリズムは以下の通りである。
【0035】各整数yi (i=1,2,…,m)につい
て yi =Σt=0 riiti t (但し1m,0it
<bi ) とbi 進展開する。この時、gi yiは次式で表わせる。
【0036】
【数8】 i をbi 進展開したときの係数aitをさらに以下のよ
うに2進展開する。 ait=Σj=0 kit j (it)2j (但しCj (it)∈
{0,1}) 係数Cj (it)が1となる2j の集合を集合Sとする。
すなわち集合S={(2 j ,i,t)|Cj (it)=
1,1m,0i }である。また集合Sの
すべての要素から第1項を取り出す関数Pr(s)の最
大値を求めて、その値を以下のようにmaとする。
【0037】 ma≡max(Pr (s))(但し∀s ∈S) 実施の一例として以下のような手順を踏むことによりg
1 y12 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を繰り返す。
【0038】S7 d=1の時のsumの値を演算結果
として出力する。 以上よりgi のbi t 乗を事前に計算し結果を保持し、
前記ステップS2の乗算に利用することによりg1 y1
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
m 1 乗,…,gm のbm rm乗の各値を記憶したメモリ
手段12が設けられている。各入力値yi (i=1,
2,…,m)は展開手段13でそれぞれbi 進展開され
てyi =Σt=0 riiti t なる関係の各係数ait(0
≦ait<bi ,t=0,1,…,ri)が求められ、こ
れら各係数ait、つまり(a10,a11,…,a1r1 ),
(a20,a21,…,a2r2 ),…,(am0,am1,…,
mrm )がレジスタ14に格納される。これら各係数a
itがそれぞれ2進展開され、つまりait=Σj=0 kit
j (it)2j ,(Cj (it)∈{0,1})なるC
j (it)2j が2進展開手段15により求られる。
【0039】これらからCj (it)=1である2j の集
合S={(2j ,i,t)|Cj (it)=1,1
m,0≦ti }がレジスタ16に格納される。いま
集合Sの第1項2j を取り出す関数をPr(s)とする
とき、最大値検出手段内で、集合SのすべてのPr
(s)中の最大のものを検出して、それをmaとする。
つまり ma≡max(Pr(s))(但し∀S ∈S) と定義したことになる。
【0040】一方変数レジスタ18および19に、それ
ぞれ変数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に格納される。
【0041】そのレジスタ18の変数sum値が自乗手
段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は実行され
る。
【0042】判定手段24がd=1と判定するとレジス
タ18内の変数値sumを演算結果として出力する。以
上の各手段13,15,17,21,22,23,24
の動作、入力手段11、メモリ手段12、レジスタ1
4,16,18,19に対する読出し、書込み、処理手
順などは制御手段26により制御される。
【0043】この発明による処理の数値的具体例を、従
来技術と同様にg1 352 ・g2 406の演算について、図
10と同様な表現で図2を参照して説明する。図2では
1 352 の352を10進展開して352になり、g2
406 の406を10進展開して406になり、つまりこ
の場合も図10のときと同様に(g1 100 ,g1 10,g
1 1 )と(g2 100 ,g2 10,g2 1 )が事前計算によ
って予め得られ、メモリ手段12に記憶されてある。
【0044】図2では各位の値が図10のAとBを重ね
て示してあり、またプロットに関しては図10と同じく
各位の数{3,5,2,4,0,6}をそれぞれ2進展
開した値である。図2中のプロットのうち最大値は22
=4であるので、Pr(s)の最大値はma=4であり
d=4から処理がスタートする。sumの初期値として
sum=1を与える。
【0045】d=4上にプロットがあるのは集合S=
(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 102 100
2 1=g1 102 101となる。この時d>1であるので自乗
手段23でsum←sum×sum=g1 102 101×g
1 102 101=g1 202 202が演算される。このsum
(=g1 202 202)がd=22 =4のときの結果とな
る。次に割算手段25でd←d/2を行いd=2=21
とする。
【0046】d=2=21 上にプロットがあり、つまり
1 と一致する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 1001 1
2 1=g1 202 202×g1 1012 1=g1 1212 203とな
る。この時d>1であるので自乗手段23でsum←s
um×sum=g1 1212 203×g1 1212 203=g1 242
2 406とされる。このsum(=g1 2422 406)がd=2
のときの結果である。次に割算手段25でd←d/2と
され、d=1となる。
【0047】d=1に関しても同様の処理を行い、g1
2422 406×g1 1001 10 が演算され結果としてg1 352
2 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と表わす。
【0048】要素数が素数qであるE(F(pn ))の
部分群をGq として、部分群Gq の異なる要素G1 ,G
2 ,…,Gm ,および整数y1 ,y2 ,…,ym ∈Z/
qZを選び、楕円曲線E上の下記の加算を行う。 y11 +y22 +…+ym m この際のこの発明の装置の原理とアルゴリズムは以下の
通りである。
【0049】各整数yi (i=1,2,…,m)を次式
に示すようにb進展開する。 yi =Σt=0 riiti t (但し、1m,0
it<bi ) この時、 yi i =Σt=0 riiti t i と表わすことができる。
【0050】yi をbi 進展開したときの係数aitをさ
らに以下のように2進展開する。 ait=Σj=0 kit j (it)2j (但しCj (it)∈
{0,1}) 係数Cj (it)が1となる2j の集合S={(2j
i,t)|Cj (it)=1,1m,0
i }の第1項2j を全て取り出し、次式のように、そ
の最大値をmaとする。
【0051】 ma≡max(Pr(s)) (但し∀s ∈S) 次に以下のようにすればよい。2つの変数sum,dの
初期値をそれぞれsum=O(無限遠点)、d=maと
し、 S1 Pr(s)=dを探し、そのPr(s)が属する
集合Sのi,tについて、 S2 sum←sum+bi t i を計算し、 S3 sum←sum+sumを計算し、 S4 d←d÷2として、d=1になるまでS1乃至S
4を繰返す。
【0052】d=1となった時のsumの値が求める演
算結果である。以上をbi t i を事前に計算し、その
結果を保持しておくことにより楕円曲線上の演算y1
1 +y22 +…+ym m を効率良く算出することが
できる。次にこの第二実施例の装置を図3を参照して説
明する。入力手段11には楕円曲線上の要素G1 ,G
2 ,…,Gm と、整数y1 ,y2 ,…,ym が入力さ
れ、メモリ手段12にはb1 01 ,b1 11 ,…,
1 r11 ,b2 02 ,b 2 12 ,…,b2 r2
2 ,…,bm 0m ,bm 1m ,…,bm rmm の各
乗算値が記憶されている。第一実施例と同様に各入力値
i (i=1,2,…,m)は展開手段13でそれぞれ
i 進展開され、yi =Σt=0 riiti t なる関係の
各係数ait(0≦ait<b,t=0,1,…,ri)が
求められて、レジスタ14に格納され、これら各係数a
itがそれぞれ2進展開され、つまりait=Σj=0 kit
j (it)2j ,(Cj (it)∈{0,1})なるC
j (it)2j が2進展開手段15により求められる。
【0053】これらからCj (it)=1である2j の集
合S={(2j ,i,t)|Cj (it)=1,1
m,0≦ti }がレジスタ16に格納される。いま
集合Sの第1項2j を取り出す関数をPr(s)とする
とき、最大値検出手段内で、集合SのすべてのPr
(s)中の最大のものを検出して、それをmaとする。
つまり ma≡max(Pr(s))(但し∀S ∈S) と定義したことになる。
【0054】レジスタ18,19にはそれぞれ変数su
m,dの各初期値として無限遠点、maがそれぞれ設定
される。Pr(s)中の上記変数値dと一致するものが
探索手段21で探索され、その探索したPr(s)、つ
まりその2j を第1項とする集合S(2j,i,t)中の
iとtによりメモリ手段12からbi t i が読出さ
れ、加算手段31によりsum+bi t i が楕円曲線
E上で演算され、その結果が新たなsumとしてレジス
タ18に格納される。そのレジスタ18の変数sumが
2倍手段32により楕円曲線E上で2倍演算sum+s
um=2sumがなされて新たなsumとしてレジスタ
18に格納される。
【0055】レジスタ19中の変数dがd>1であるか
d=1であるかの判定が判定手段24で行われ、d>1
と判定されると、割算手段25で変数dを2分の1し
て、新たなdとし、レジスタ19に格納され、そのdに
対し、探索手段21、加算手段31、2倍手段32、判
定手段24の各動作が繰返され、判定手段24がd=1
と判定するとレジスタ18内の変数値sumが演算結果
として出力される。制御手段26は第一実施例のそれと
同様な動作をするものである。
【0056】具体的な数値例として352G1 +406
2 を演算する過程を、図4に図2と同様な手法で示
す。この場合は、加算手段31が楕円曲線上での加算と
なり、また掛算手段22の代りに2倍手段32となって
いる点がこの図にも現われている。図2の場合と同様に
容易に理解できると思われるから説明は省略する。第三実施例 これは第一実施例と同一の入力に対し、同一の演算結果
を得るが、各入力値y i を符号付きbi 進展開する点で
異なる。以下にその原理とアルゴリズムを述べる。
【0057】ある乗法群の要素g1 ,g2 ,…,gm
整数y1 ,y2 ,…,ym に対して、 g1 y12 y2…gm ym を求める。各yi を yi =Σt=0 riiti t(但し1m,−[bi
−1/2] it[bi −1/2]) と符合付にてbi 進展開すると、
【0058】
【数9】 と表わすことができる。yi をbi 進展開したときの係
数aitの絶対値をさらに以下のように2進展開する。 |ait|=Σj=0 kit j (it)2j (但しCj (i
t)∈{0,1}) 係数Cj (it)が1となる2j の集合S={(2j
i,t)|Cj (it)=1,1m,0
i }における全ての第1項2j の最大を次式のように
maとする。
【0059】 ma≡max(Pr(s)) (但し∀s ∈S) 次に以下の演算手順をすればよい。2つの変数sum,
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を
繰返す。
【0060】d=1になった時のsumの値が求める演
算結果である。以上を±gi のbi t 乗を事前に計算し
結果を保持しておくことにより有限体上の演算(g1
1 乗)×(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
m rm乗の各値が記憶され、b進展開手段13では符号
付bi 進展開、つまり、yi =Σt=0 riiti t なる
関係の各係数a it(−[(bi −1)/2]≦ait
[(bi −1)/2],t=0,1,…,ri,[a]
はa以上で最小の整数である)が求められてレジスタ1
4に格納される。これら各係数aitの絶対値がそれぞれ
更に2進展開され、つまり|ait|=Σj=0 kit
j (it)2j ,(Cj (it)∈{0,1})なるC
j (it)2jが2進展開手段15により求められる。
【0061】これらからCj (it)=1である2j の集
合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との乗算がなされる。その他は第一実
施例と同様である。
【0062】具体的数値例の演算過程を、g1 352 ・g
2 406 について図2と同様な表現で図6に示す。第四実施例 これは第二実施例と同一の入力に対し、同一の演算結果
を得るが、第三実施例と同様にyi を符号付きbi 進展
開している点で異なる。以下にその原理とアルゴリズム
を述べる。
【0063】部分群Gq の異なる要素G1 ,G2 ,…,
m 、および整数y1 ,y2 ,…,ym ∈Z/qZを選
び、 y11 +y22 +…+ym m を求める。yi を yi =Σt=0 riiti t(但し1m,−[bi
−1/2] it[bi −1/2]) と符合付にてbi 進展開する。この時yi i は次式で
表わせる。
【0064】yi i =Σt=0 riiti t ii をbi 進展開したときの係数aitの絶対値をさらに
以下のように2進展開する。 |ait|=Σj=0 kit j (it)2j (但しCj (i
t)∈{0,1}) 係数Cj (it)が1となる2j の集合S={(2j
i,t)|Cj (it)=1,1m,0
i }の第1項2j の全ての中で最大値を次式に示すよ
うにmaと定義する。
【0065】 ma≡max(Pr(s)) (但し∀s ∈S) 次に以下の演算手順をすればよい。2つの変数sum,
dの初期値をそれぞれsum=O(無限遠点)、d=m
aとし、 S1 Pr(s)=dを探し、そのPr(s)が属する
集合Sとそのaitの符号と、i,tについて、 S2 sum←sum+sign(ait)bi t i
計算し、 S3 sum←sum+sumを計算し、 S4 d←d÷2として、d=1になるまでS1〜S4
を繰返す。
【0066】d=1になった時のsumの値が求める演
算結果である。以上を±bi t i を事前に計算し、そ
の結果を保持しておくことにより楕円曲線上の演算y1
1 +y22 +…+ym m を効率良く算出すること
ができる。この第四実施例の演算装置を図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
i を演算する。その他は図3の実施例と同様である。
具体的数値例の352G1 +406G2 の演算過程を図
8に示す。
【0067】以上何れの実施例においても、コンピュー
タによりプログラムを読出し解読実行させることによ
り、同様の演算を行う演算装置とすることもできる。ま
た上述においては判定手段で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のそれぞれについても同様で
ある。
【0068】第五実施例 ある乗法群の要素g1 ,g2 ,…,gm と整数y1 ,y
2 ,…,ym に対して、 g1 y12 y2…gm ym を求めて出力する。yi が次のように表わされるとす
る。
【0069】yi =Σt=0 riit2 t (但し1
m,ait∈{−1,0,1}) 次に各yi をxi ビットずつに分割する。そのブロック
を下位よりYi (0) ,Yi (1) ,Yi (2) ,…とする。
【0070】
【数10】 がメモリ手段に蓄積されている。Yi (j) のうち最大値
のビット数をmaと定義する。また以下では最下位ビッ
トを第0ビット目と約束し、A[j]はAの第jビット
を表すこととする。実施の一例として以下のような手順
を踏むことによりg1 y12 y2…gm ymを求める。
【0071】 ステップ1 sum=1 ステップ2 d=ma−1 ステップ3 各i,jについて
【0072】
【数11】 を演算 ステップ4 d>0か ステップ5 d>0でsum=sum×sumを演算 ステップ6 d=d−1、ステップ3に戻る ステップ7 d=0でsum出力 以上のようにgi の2jx乗やgi の−2jx乗を記憶手段
に蓄積しておくことによりg1 y12 y2…gm ymを効率
良く算出することができる。
【0073】以上のアルゴリズムを実行する演算装置の
実施例を図12に示す。ある乗法群の要素g1 ,g2
…,gm と整数y1 ,y2 ,…,ym が入力手段(レジ
スタを含む)11に入力される。g1 の±1乗、g1
±2x1乗、g1 の±22x1 乗、…,g1 の±2p1x1乗、
2 の±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 riit2 t (1m,ait∈{−1,0,1}) なる関係の各係数aitが求められ、 i の符号付2進数
としてit、つまり(a10,a11,…,a1r1 ),(a
20,a21,…,a2r2 ),…,(am0,am1,…,a
mrm )がaitレジスタ14に格納される。
【0074】一方、xi ビット分割保持手段41で各y
i の符号付2進数をxi ビットずつに分割し、ブロック
i (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に格納される。 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により行われ
る。
【0075】この具体的計画例として図13に先ほどと
同じくg1 292 27を求める過程を挙げている。図13
Aに示すようにg1 29の29を2進展開し1110
2 、さらにこれを符号付2進展開すると100−10
2 となる(ビット数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である。
【0076】ステップ1:2分割された各ブロックの第
dビット目(ここでは最上位ビット)に着目すると(図
13EF)、(1,−1)と(1,−1)であるので乗
算手段22ではsum←sum×g1 8 ×g1 -1×g2
8 ×g2 -1を演算して(sum=g1 7 2 7 )とな
る。d>0であるので自乗手段23ではsum←sum
×sumを演算して(sum=g1 142 14)となる。
減算手段25でd←d−1としてステップ2へ。
【0077】ステップ2:(d=1)29,27の各対
応するものは(0,0)と(0,0)である。乗算手段
22ではsum×1×1×1×1となり、d>0である
ので自乗手段23ではsum←sum×sumを演算
し、(sum=g1 282 28)となる。(図13G,
H)。 d←d−1としてステップ3へ。 ステップ3:(d=0)(0,1)と(0,1)である
ので乗算手段22でsum←sum×g1 ×g2 -1を演
算し、(sum=g1 29 2 27)となる。d=0である
のでsumレジスタ18のこのsum(=g
1 29 2 27)値が出力となる(図13I,J)。
【0078】このように複数生成元に対してはこれまで
複数回行っていた演算の適用をまとめ、結果乗算回数を
削減することが可能である。第六実施例 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と書くと
する。
【0079】要素数が素数qであるE(GF(pn ))
の部分群をGq として、部分群Gqの異なる要素G1
2 ,…,Gm ,およびy1 ,y2 ,…,ym ∈Z/q
Zを選ぶ。 y1 1 +y2 2 +…+ym m を求めて出力する。yi が次のように表わされるとす
る。
【0080】yi =Σt=0 riitt (但し1
m,ait∈{−1,0,1}) 次に各yi をxi ビットずつに分割する。そのブロック
を下位よりYi (0) ,Yi (1) ,Yi (2) ,…とする。
今 (G1 ,2x11 ,22x1 1 ,…,2p1x11 ) (G2 ,2x22 ,22x2 2 ,…,2p2x22 ) ・ ・ ・ (Gm ,2xmm ,22xm m ,…,2pmxmm ) がメモリ手段に蓄積されている。
【0081】Yi (j) のうち最大値のビット数をmaと
定義する。また以下では最下位ビットを第0ビット目と
約束し、A[j]はAの第jビットを表すこととする。
実施の一例として以下のような手順を踏むことによりy
1 1 +y2 2 +…ym m を求める。 ステップ1 sum=O(無限遠点) ステップ2 d=ma−1 ステップ3 各i,jについてsum=sum+Yi
(j) [d]・2jxi iを演算 ステップ4 d>0かd=0の判定 ステップ5 d>0でsum=sum+sum ステップ6 d=d−1、ステップ3に戻る。
【0082】ステップ7 d=0でsum出力 以上のように2jx i メモリ手段に蓄積しておくこと
によりy1 1 +y22 +…+ym m を効率良く算
出することができる。以上のアルゴリズムを実行する演
算装置の実施例を図14に示す。楕円曲線上の要素
1 ,G2 ,…,Gm と整数y1 ,y2 ,…,ym が入
力手段11に入力され、メモリ手段12にはG1 ,2x1
1 ,22x1 1 ,…,2p1x11 ,G2,2x22
2x2 2 ,…,2p2x22 ,…,Gm ,2xmm ,2
2xm m ,…,2pmxmm の各乗算値が記憶されてい
る。第五実施例と同様に各入力値yi(i=1,2,
…,m)は符号付2進展開手段15′でそれぞれ符号付
2進展開され、yi =Σt=0 riit2 t (ait
{−1,0,1})なる関係の係数aitが求められて、
i の符号付2進数としてitレジスタ14に格納され
る。
【0083】一方、各入力値yi の符号付2進数a it
i ビット分割保持手段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 i の全てとsumレジスタ18に格納されている
sumとの楕円曲線E上の和が加算手段31で演算さ
れ、その結果が新たなsumとしてレジスタ18に格納
される。 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の値が更新される。
【0084】この新たなdについて探索手段21、加算
手段31、判定手段24、2倍手段32、減算手段25
がそれぞれ動作し、d=0となるまでこれらの動作が順
次繰返される。判定手段24でd=0と判定されると、
ゲート42が開けられ、sumレジスタ18内のsum
が演算結果として出力される。以上の各手段の順次制御
動作、記憶手段12の読出しなどは制御手段26により
行われる。
【0085】具体例として図15に30G1 +7G2
求める過程を挙げる。図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
2 ,G2 )は記憶手段12にその値を保持しているこ
とに注意されたい(楕円曲線上の点では、pGに対して
−pGは容易に求まるため、−pGはメモリ手段上にな
くとも良い)。初期値はsum=O(無限遠点),ma
=max{2,3}=3,d=2である。
【0086】ステップ1: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へ。
【0087】ステップ2:(d=1)の30と7はそれ
ぞれ(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へ。
【0088】ステップ3:(d=0)の30と7はそれ
ぞれ(0,0)と(0,−1)であるので加算手段31
でsum←sum+(−G2 )を演算してsum=30
1+7G2 となる(図15I,J)。d=0であるの
でsumレジスタ18のsum(=30G1 +7G2
が出力される。次にある値yを符号付2進表記した際
に、1が立つ個数を減らす手法を説明する。この例は2
ビットずつ分割する方式であって、まず次式で示すよう
にyを0と1のみで2進展開する。
【0089】 y=Σt=0 r t 2 t (at ∈{0,1}) このat の隣接した3ビットa2w+1,a2w,a2w-1に着
目して図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とする。その他も同様である。
【0090】
【発明の効果】以上説明したようにこの発明は複数生成
元をもつ演算に対して事前計算によりその演算処理速度
の向上を図ることが可能となり、さらに楕円曲線上の演
算にも適用しその演算処理速度の向上を図ることが可能
となった。これは有名なディジタル署名であるDSA署
名や楕円DSA署名とも適用することが可能であり、そ
の他複数生成元を用いている多くの暗号やディジタル署
名に適用可能であると予想され、処理の高速化が見込ま
れる。また図9に従来方式と請求項2、請求項3の発明
装置の計算量比較として生成元が3つ存在する場合の乗
算回数および加算回数を比較したグラフを挙げる。なお
図9Aは符号無の場合、図9Bは符号付の場合である。
従来方式およびこの発明装置では群上に定義された演算
の回数は等しくなる。例えば(有限体上での乗算回数)
=(楕円曲線上での加算回数)となるため図9ではグラ
フの縦軸が「乗算/加算回数」となっている。
【0091】更に図17に従来方式(符号無)/従来方
式(符号付)/提案方式(請求項16、17)の計算量
比較として生成元が3つ存在する場合の乗算回数および
加算回数を比較したグラフを挙げる。なお図17は乗数
が160ビットとしたものである。従来方式および提案
方式では群上に定義された演算の回数は等しくなる。例
えば(有限体上での乗算回数)=(楕円曲線上での加算
回数)となるため図17ではグラフの縦軸が「乗算/加
算回数」となっている。
【図面の簡単な説明】
【図1】この発明による有限体上における演算装置の実
施例の機能構成を示す図。
【図2】図1の実施例の具体的数値例による演算過程を
示す図。
【図3】この発明による楕円曲線上における演算装置の
実施例の機能構成を示す図。
【図4】図3の実施例の具体的数値例による演算過程を
示す図。
【図5】この発明の有限体上における演算装置の他の実
施例の機能構成を示す図。
【図6】図5の実施例の具体的数値例による演算過程を
示す図。
【図7】この発明による楕円曲線上における演算装置の
他の実施例の機能構成を示す図。
【図8】図1に示した実施例の具体的数値例による演算
過程を示す図。
【図9】従来装置とこの発明装置における演算数の比較
例を示す図。
【図10】従来の演算装置における具体的数値を用いた
演算過程を示す図。
【図11】従来の別の演算方式における具体的数値を用
いた演算過程を示す図。
【図12】この発明の第五実施例の機能的構成を示すブ
ロック図。
【図13】第五実施例の具体的数値を用いた演算過程を
示す図。
【図14】この発明の第六実施例の機能的構成を示すブ
ロック図。
【図15】第六実施例の具体的数値を用いた演算過程を
示す図。
【図16】1が立つ個数を減した符号付2進展開の説明
図。
【図17】請求項15の発明装置と従来装置との計算量
の比較を示す図。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平5−150722(JP,A) 特開 平6−118873(JP,A) HANDBOOK of APPLI ED CRYPTOGRAHY,CRC Press,p.617−618 KNUTH The Art of Computer Programmi ng=4,1986年 8月25日,p.384, 471 効率的なn変数べき乗剰余演算法の提 案とその一応用,電子通信学会技術研究 報告,1991年11月29日,Vol.91 N o.359,p.25−36 (58)調査した分野(Int.Cl.7,DB名) G09C 1/00 650 G06F 7/552 G06F 7/72 JICSTファイル(JOIS)

Claims (21)

    (57)【特許請求の範囲】
  1. 【請求項1】 ある群Gの要素g1 ,g2 ,…,gm
    整数y1 ,y2 ,…,ym を入力し、上記の群G上に定
    義された演算をoで表わし、以下ではgi ogi o…o
    i のyi −1回の演算をyi i とし、gi の逆元を
    i -1と表わし、gi 0 =(群Gの単位元),gi 1
    i として、 y1 1 oy2 2 o…oym m を求める演算装置において、 (b1 01 ,b1 1 1 ,…,b1 r11 ),(b2 0
    2 ,b2 1 2 ,…,b2 r22 ),…,(b
    m 0 m ,bm 1 m ,…,bm rmm )の各値を記憶
    したメモリ手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれb
    i 進展開して、 yi =Σt=0 riiti t (但し1≦i≦m,0≦a
    it<bi )なる関係のaitを求めるb進展開手段と、 上記各係数aitをそれぞれ2進展開して ait=Σj=0 kit j (it)2j (但しCj (it)∈{0,
    1})なる関係の各Cj (it)2j を求める2進展開手段
    と、 上記係数Cj (it)が1となる2j の集合S={(2j
    i,t)|Cj (it)=1,1m,0i
    を格納するレジスタと、 上記集合Sの第1項を取り出す関数をPr (s)とする
    時、全てのPr(s)中の最大の2j を検出してmaとする
    手段と、 2つの変数sumとdに対し群Gの単位元とmaをそれ
    ぞれ初期設定する手段と、 上記集合S中の全2j 要素に対し、dと一致するものを
    探索する探索手段と、 その探索した2j に対応するiとtにより上記メモリ手
    段を参照してsumobi t i を演算し、その結果を
    新たなsumとする乗算手段と、 上記変数sumを自乗して新たなsumとする自乗手段
    と、 上記変数dが1より大であるか1であるかを判定する判
    定手段と、 その判定手段が1より大と判定すると、 上記変数dを2分の1にして新たなdとし、そのdに対
    し、上記探索手段、上記乗算手段、上記自乗手段、上記
    判定手段を動作させる手段と、 上記判定手段が1と判定すると、上記変数値sumを演
    算結果として出力する手段と、 を具備する事前計算を用いた複数生成元に対する櫛型演
    算装置。
  2. 【請求項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 riiti t なる関係の各係
    数ait(0≦ait<bi ,t=0,1,…,ri)を求
    めるb進展開手段と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
    kit j (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. 【請求項3】 ある楕円曲線群の要素G1 ,G2 ,…,
    m と、整数y1 ,y2 ,…,ym が入力され、 y11 +y22 +…+ym m の演算結果を出力する演算装置において、 b1 01 ,b1 11 ,…,b1 r11 ,b2 0
    2 ,b2 12 ,…,b2 r22 ,…,bm 0m ,b
    m 1m ,…,bm rmm の各乗算値を記憶したメモリ
    手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれb
    i 進展開してyi =Σt=0 riiti t なる関係の各係
    数ait(0≦ait<b,t=0,1,…,ri)を求め
    る展開手段と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
    kit j (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 i を演
    算し、その結果を新たなsumとする加算手段と、 上記変数sumと上記変数sumを加算して新たなsu
    mとする2倍手段と、 上記変数dが1より大であるかd=1かを判定する判定
    手段と、 上記判定手段が1より大と判定すると、上記変数dを2
    分の1にして、新たなdとし、そのdに対し、上記探索
    手段、上記加算手段と、上記2倍手段、上記判定手段を
    動作させる手段と、 上記判定手段が1と判定すると上記変数値sumを演算
    結果として出力する手段と、 を具備する事前計算を用いた複数生成元に対する演算装
    置。
  4. 【請求項4】 ある乗法群の要素g1 ,g2 ,…,gm
    と整数y1 ,y2 ,…,ym が入力され、(g1 のy1
    乗)×(g2 のy2 乗)×…×(gm のym乗)の演算
    結果を出力する演算装置において、 g1 の(−b1 r1)乗,g1 の(−b1 r1-1)乗,…,
    1 の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
    m rm乗の各値を記憶したメモリ手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付bi 進展開して、yi =Σt=0 riiti t なる関
    係の各係数ait(−[(bi −1)/2]≦ait
    [(bi −1)/2],t=0,1,…,ri,[a]
    はa以上で最小の整数である)を求める展開手段と、 上記各係数の|ait|をそれぞれ2進展開して|ait
    =Σj=0 kit j (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. 【請求項5】 ある楕円曲線群の要素G1 ,G2 ,…,
    m と、整数y1 ,y2 ,…,ym が入力され、 y11 +y22 +…+ym m の演算結果を出力する演算装置において、 b1 01 ,b1 11 ,…,b1 r11 ,b2 0
    2 ,b2 12 ,…,b2 r22 ,…,bm 0m ,b
    m 1m ,…,bm rmm の各乗算値を記憶したメモリ
    手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付bi 進展開してy1 =Σt=0 riiti t なる関係
    の各係数ait(−[(bi −1)/2]≦ait≦[(b
    i −1)/2],t=0,1,…,ri,[a]はa以
    上で最小の整数である)を求める展開手段と、 上記各係数の|ait|をそれぞれ2進展開して|ait
    =Σj=0 kit j (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と対応する
    itの符号とよりsum+(aitの符号)bi ti
    演算してその結果を新たなsumとする加算手段と、 上記変数sumと上記変数sumとを加算して新たなs
    umとする2倍手段と、 上記変数dが1より大であるか1であるかを判定する判
    定手段と、 上記判定手段が1より大と判定すると、上記変数dを2
    分の1して新たなdとし、そのdに対し、上記探索手
    段、上記加算手段、上記2倍手段、上記判定手段を動作
    させる手段と、 上記判定手段が1と判定すると、上記変数値sumを演
    算結果として出力する手段と、 を具備する事前計算を用いた複数生成元に対する演算装
    置。
  6. 【請求項6】 ある群Gの要素g1 ,g2 ,…,gm
    整数y1 ,y2 ,…,ym を入力し、上記の群G上に定
    義された演算をoで表わし、以下ではgi ogi o…o
    i のyi −1回の演算をyi i とし、gi の逆元を
    i -1と表わし、gi 0 =(群Gの単位元),gi 1
    i として、 y1 1 oy2 2 o…oym m を求めて出力する装置であって、 ( 1 0 1 ,b 1 1 1 ,…,b 1 r1 1 ),(b 2 0
    2 ,b 2 1 2 ,…,b 2 r2 2 ),…,(b
    m 0 m ,b m 1 m ,…,b m rm m )の各値を記憶
    したメモリ手段と、 上記g1 ,g2 ,…,gm と上記y1 ,y2 ,…,ym
    を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれb
    i 進展開して、 yi =Σt=0 riiti t (但し1≦i≦m,0≦a
    it<bi )なる関係のaitを求めるb進展開手段と、 上記各係数aitをそれぞれ2進展開して ait=Σj=0 kit j (it)2j (但しCj (it)∈{0,
    1})なる関係の各Cj (it)2j を求める2進展開手段
    と、 上記係数Cj (it)が1となる2j の集合S={(2i
    i,t)|Cj (it)=1,1m,0i
    をレジスタに格納する手段と、 上記集合Sの第1項を取り出す関数をPr (s)とする
    時、全てのPr(s)中の最大の2j を検出してmaとする
    手段と、 2つの変数sumとdに対し群Gの単位元とmaをそれ
    ぞれ初期設定する手段と、 上記集合S中の全2j 要素に対し、dと一致するものを
    探索する探索処理と、 その探索した2j に対応するiとtにより上記メモリ手
    段を参照してsumobi t i を演算し、その結果を
    新たなsumとする乗算手段と、 上記変数sumを自乗して新たなsumとする自乗手段
    と、 上記変数dが1より大であるか1であるかを判定する判
    手段と、 その判定手段が1より大と判定すると、 上記変数dを2分の1にして新たなdとし、そのdに対
    し、上記探索手段、上記乗算手段、上記自乗手段、上記
    判定手段動作させる手段と、 上記判定手段が1と判定すると、上記変数値sumを演
    算結果として出力する手段を備える演算装置として、
    コンピュータを機能させるためのプログラム記録した
    コンピュータ読み取り可能な記録媒体。
  7. 【請求項7】 ある乗法群の要素g1 ,g2 ,…,gm
    と整数y1 ,y2 ,…,ym が入力され、(g1 のy1
    乗)×(g2 のy2 乗)×…×(gm のym乗)の演算
    結果を出力する装置であって、 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 riiti t なる関係の各係
    数ait(0≦ait<bi ,t=0,1,…,ri)を求
    める手段と、 上記求めた各係数aitを第1レジスタに格納する手段
    と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
    kit j (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. 【請求項8】 ある楕円曲線群の要素G1 ,G2 ,…,
    m と、整数y1 ,y2 ,…,ym が入力され、 y11 +y22 +…+ym m の演算結果を出力する装置であって、 1 0 1 ,b 1 1 1 ,…,b 1 r1 1 ,b 2 0
    2 ,b 2 1 2 ,…,b 2 r2 2 ,…,b m 0 m ,b
    m 1 m ,…,b m rm m の各乗算値を記憶した メモリ
    手段と、 上記要素G1 ,G2 ,…,Gm 、上記整数y1 ,y2
    …,ym を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれb
    i 進展開してyi =Σt=0 riiti t なる関係の各係
    数ait(0≦ait<b,t=0,1,…,ri)を求め
    手段と、 上記求めた各係数aitを第1レジスタに格納する手段
    と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
    kit j (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 i を読出す手段と、 上記第3レジスタ内のsumと上記読出されたbi t
    i を加算し、その結果を上記第3レジスタに格納する加
    手段と、 上記第3レジスタ内のsumを2倍し、その結果を上記
    第3レジスタに格納する2倍手段と、 上記第4レジスタ内のdが1より大であるかd=1かを
    判定する判定手段と、上記判定手段が1より大と判定す
    ると、上記第4レジスタ内のdを2で割算して、その結
    果を上記第4レジスタ内に格納する手段と、 上記第4レジスタ内の割算されたdに対し、上記探索
    、上記加算手段、上記2倍手段、上記判定手段動作
    させる手段と、 上記判定手段が1と判定すると上記第3レジスタ内の変
    数値sumを演算結果として出力する手段を備える演
    算装置として、コンピュータを機能させるためのプログ
    ラム記録したコンピュータ読み取り可能な記録媒体。
  9. 【請求項9】 ある乗法群の要素g1 ,g2 ,…,gm
    と整数y1 ,y2 ,…,ym が入力され、(g1 のy1
    乗)×(g2 のy2 乗)×…×(gm のym乗)の演算
    結果を出力する装置であって、 1 の(−b 1 r1 )乗,g 1 の(−b 1 r1-1 )乗,…,
    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
    m rm 乗の各値を記憶したメモリ手段と、 上記要素g1 ,g2 ,…,gm と上記整数y1 ,y2
    …,ym を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付bi 進展開して、yi =Σt=0 riiti t なる関
    係の各係数ait(−[(bi −1)/2]≦ait
    [(bi −1)/2],t=0,1,…,ri、[a]
    はa以上で最小の整数である)を求める展開手段と、 上記求めた各係数aitを第1レジスタに格納する手段
    と、 上記各係数aitの絶対値をそれぞれ2進展開して|ait
    |=Σj=0 kit j (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. 【請求項10】 ある楕円曲線群の要素G1 ,G2
    …,Gm と、整数y1,y2 ,…,ym が入力され、 y11 +y22 +…+ym m の演算結果を出力する装置であって、 1 0 1 ,b 1 1 1 ,…,b 1 r1 1 ,b 2 0
    2 ,b 2 1 2 ,…,b 2 r2 2 ,…,b m 0 m ,b
    m 1 m ,…,b m rm m の各乗算値を記憶したメモリ
    手段と、 上記要素G1 ,G2 ,…,Gm と上記整数y1 ,y2
    …,ym を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付bi 進展開してy1 =Σt=0 riiti t なる関係
    の各係数ait(−[(bi −1)/2]≦ait≦[(b
    i −1)/2],t=0,1,…,ri,[a]はa以
    上で最小の整数である)を求める手段と、 上記求めた各係数aitを第1レジスタに格納する手段
    と、 上記各係数aitの絶対値をそれぞれ2進展開して|ait
    |=Σj=0 kit j (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 t を得る手段
    と、 上記第3レジスタ内のsumと上記読出したbi t i
    を上記探索した集合Sと対応するaitの符号を加味して
    加算し、その結果を上記第3レジスタ内に格納する加算
    手段と、 上記第3レジスタ内のsumを2倍し、その結果を上記
    第3レジスタに格納する2倍手段と、 上記第4レジスタ内のdが1より大であるか1であるか
    を判定する判定手段と、 上記判定手段が1より大と判定すると、上記第4レジス
    タ内のdを2で割算して第4レジスタに格納する手段
    と、 その第4レジスタ内の割算されたdに対し、上記探索
    、上記加算手段、上記2倍手段、上記判定手段動作
    させる手段と、 上記判定手段が1と判定すると、上記第3レジスタ内の
    変数値sumを演算結果として出力する手段を備える
    演算装置として、コンピュータを機能させるためのプロ
    グラム記録したコンピュータ読み取り可能な記録媒
    体。
  11. 【請求項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 riiti t なる関係の各係
    数ait(0≦ait<bi ,t=0,1,…,ri)を求
    めるb進展開過程と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
    kit j (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. 【請求項12】 ある楕円曲線群の要素G1 ,G2
    …,Gm と、整数y1,y2 ,…,ym が入力され、 y11 +y22 +…+ym m の演算結果を出力する演算方法において、 b1 01 ,b1 11 ,…,b1 r11 ,b2 0
    2 ,b2 12 ,…,b2 r22 ,…,bm 0m ,b
    m 1m ,…,bm rmm の各乗算値をメモリに記憶し
    ておき、 上記各入力値yi (i=1,2,…,m)をそれぞれb
    i 進展開してyi =Σt=0 riiti t なる関係の各係
    数ait(0≦ait<b,t=0,1,…,ri)を求め
    る展開過程と、 上記各係数aitをそれぞれ2進展開してait=Σj=0
    kit j (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 i を演
    算し、その結果を新たなsumとする加算過程と、 上記変数sumと上記変数sumを加算して新たなsu
    mとする2倍過程と、 上記変数dが1より大であるかd=1かを判定する判定
    過程と、 上記判定過程が1より大と判定すると、上記変数dを2
    分の1にして、新たなdとし、そのdに対し、上記探索
    過程、上記加算過程と、上記2倍過程、上記判定過程
    実行させる過程と、 上記判定過程が1と判定すると上記変数値sumを演算
    結果として出力する過程と、 を有する事前計算を用いた複数生成元に対する演算方
    法。
  13. 【請求項13】 ある乗法群の要素g1 ,g2 ,…,g
    m と整数y1 ,y2,…,ym が入力され、(g1 のy1
    乗)×(g2 のy2 乗)×…×(gm のym 乗)の演
    算結果を出力する演算方法において、 g1 の(−b1 r1)乗,g1 の(−b1 r1-1)乗,…,
    1 の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
    m rm乗の各値をメモリ手段に記憶しておき、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付bi 進展開して、yi =Σt=0 riiti t なる関
    係の各係数ait(−[(bi −1)/2]≦ait
    [(bi −1)/2],t=0,1,…,ri,[a]
    はa以上で最小の整数である)を求める展開過程と、 上記各係数の|ait|をそれぞれ2進展開して|ait
    =Σj=0 kit j (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. 【請求項14】 ある楕円曲線群の要素G1 ,G2
    …,Gm と、整数y1,y2 ,…,ym が入力され、 y11 +y22 +…+ym m の演算結果を出力する演算方法において、 b1 01 ,b1 11 ,…,b1 r11 ,b2 0
    2 ,b2 12 ,…,b2 r22 ,…,bm 0m ,b
    m 1m ,…,bm rmm の各乗算値をメモリ手段に記
    憶しておき、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付bi 進展開してy1 =Σt=0 riiti t なる関係
    の各係数ait(−[(bi −1)/2]≦ait≦[(b
    i −1)/2],t=0,1,…,ri,[a]はa以
    上で最小の整数である)を求める展開過程と、 上記各係数の|ait|をそれぞれ2進展開して|ait
    =Σj=0 kit j (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と対応する
    itの符号によりsum+(aitの符号)bi ti
    演算してその結果を新たなsumとする加算過程と、 上記変数sumと上記変数sumとを加算して新たなs
    umとする2倍過程と、 上記変数dが1より大であるか1であるかを判定する判
    定過程と、 上記判定過程が1より大と判定すると、上記変数dを2
    分の1して新たなdとし、そのdに対し、上記探索過
    程、上記加算過程、上記2倍過程、上記判定過程を実行
    させる過程と、 上記判定過程が1と判定すると、上記変数値sumを演
    算結果として出力する過程と、 を有する事前計算を用いた複数生成元に対する演算方
    法。
  15. 【請求項15】 ある群Gの要素g1 ,g2 ,…,gm
    と、整数y1 ,y2,…,ym が入力され、群G上に定
    義された演算をoで表わし、g1 og1 o…og1 のy
    1 −1回演算をy1 1 とし、g1 の逆元をg1 -1
    し、g1 0 =(群Gの単位元),g1 1 =g1 として、 y1 1 oy2 2 o…oym m を求める演算装置において、 (g1 -1,(2x11 -1,(22x1 1 -1,…,(2p1x11 -1,g1 ,2x11 ,22x1 1 ,…,2p1x11 ) (g2 -1,(2x22 -1,(22x2 2 -1,…,(2p2x22 -1,g2 ,2x22 ,22x2 2 ,…,2p2x22 ) ・ ・ ・ (gm -1,(2xmm -1,(22xm m -1,…,(2pmxmm -1,gm ,2xmm ,22xm m ,…,2pmxmm )の各値が記
    憶されたメモリ手段と、上記各入力値yi を符号付2進
    展開して yi =Σt=0 riitt (但し1m,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を初期設定する手段と、 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. 【請求項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 の±
    p2x2乗,…,gm の±1乗,gm の±2xm乗,…,g
    m の2pmxm乗の各値を記憶したメモリ手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付2進展開してyi=Σt=0 riitt なる関係の各
    係数ait(0≦i≦m,t=0,1,…,ri,ait
    {−1,0,1})を 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. 【請求項17】 ある楕円曲線群の要素G1 ,G2
    …,Gm と、整数y1,y2 ,…,ym が入力され、 y11 +y22 +…+ym m の演算結果を出力する演算装置において、 G1 ,2x11 ,22x1 1 ,…,2p1x11 2
    x22 ,22x2 2,…,2p2x22 ,…,Gm ,2
    xmm ,22xm m ,…,2pmxmm の各乗算値を記憶
    したメモリ手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付2進展開してyi=Σt=0 riitt なる関係の各
    係数ait(1m,ait∈{−1,0,1})をy
    iの符号付2進数として求める展開手段と、 上記各入力値yiの符号付2進数aitをxi ビットずつ
    分割し、そのブロックを下位よりYi (0) ,Yi (1)
    i (2) ,…として保持する手段と、 上記ブロックYi (j) 中の最大値のビット数を検出して
    maとする手段と、 2つの変数sumとdに対し無限遠点とma−1をそれ
    ぞれ初期設定する手段と、 jxi i と一致するすべての値を上記メモリ手段から
    索する探索手段と、 上記探索できた値を用いてsum+ i (j) [d]・
    jxi i を演算して、その結果を新たな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. 【請求項18】 ある乗法群の要素g1 ,g2 ,…,g
    m と整数y1 ,y2,…,ym が入力され、(g1 のy1
    乗)×(g2 のy2 乗)×…×(gm のym 乗)の演
    算結果を出力する装置であって、 1 の±1乗,g 1 の±2 x1 乗,…,g 1 の±2
    p1x1 乗,g 2 の±1乗,g 2 の±2 x2 乗,…,g 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 riitt なる関係の各
    係数ait(0≦i≦m,t=0,1,…,ri,ait
    {−1,0,1})を 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. 【請求項19】 ある楕円曲線群の要素G1 ,G2
    …,Gm と、整数y1,y2 ,…,ym が入力され、 y11 +y22 +…+ym m の演算結果を出力する装置であって、 G1 ,2x11 ,22x1 1 ,…,2p1x11 2
    x22 ,22x2 2,…,2p2x22 ,…,Gm ,2
    xmm ,22xm m ,…,2pmxmm の各乗算値を記憶
    したメモリ手段と、 上記要素G1 ,G2 ,…,Gm 、上記整数y1 ,y2
    …,ym を入力する手段と、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付2進展開してyi=Σt=0 riitt なる関係の各
    係数ait(1m,ait∈{−1,0,1})をy
    iの符号付2進数として求める展開手段と、 上記各入力値yiの符号付2進数aitをxi ビットずつ
    分割し、そのブロックを下位よりYi (0) ,Yi (1)
    i (2) ,…として保持する手段と、 上記ブロックYi (j) 中の最大値のビット数を検出して
    maとする手段と、 2つの変数sumとdに対し無限遠点とma−1をそれ
    ぞれ初期設定する手段と、 jxi i と一致するすべての値を上記メモリ手段から
    索する探索手段と、 上記探索できた値を用いてsum+ i (j) [d]・
    jxi i を演算して、その結果を新たな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. 【請求項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 の±
    p2x2乗,…,gm の±1乗,gm の±2xm乗,…,g
    m の2pmxm乗の各値をメモリ手段に記憶しておき、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付2進展開してyi=Σt=0 riitt なる関係の各
    係数ait(0≦i≦m,t=0,1,…,ri,ait
    {−1,0,1})を 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. 【請求項21】 ある楕円曲線群の要素G1 ,G2
    …,Gm と、整数y1,y2 ,…,ym が入力され、 y11 +y22 +…+ym m の演算結果を出力する演算方法において、 G1 ,2x11 ,22x1 1 ,…,2p1x11 2
    x22 ,22x2 2,…,2p2x22 ,…,Gm ,2
    xmm ,22xm m ,…,2pmxmm の各乗算値をメモ
    リ手段に記憶しておき、 上記各入力値yi (i=1,2,…,m)をそれぞれ符
    号付2進展開してyi=Σt=0 riitt なる関係の各
    係数ait(1m,,ait∈{−1,0,1})を
    iの符号付2進数として求める展開過程と、 上記各入力値yi の符号付2進数aitをxi ビットずつ
    分割し、そのブロックを下位よりYi (0) ,Yi (1)
    i (2) ,…として保持する過程と、 上記ブロックYi (j) 中の最大値を検出してmaとする
    過程と、 2つの変数sumとdに対し無限遠点とma−1をそれ
    ぞれ初期設定する過程と、 jxi i と一致するすべての値を上記メモリ手段から
    索する探索過程と、 上記探索できた値を用いてsum+ i (j) [d]・
    jxi i を演算して、その結果を新たな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についての
    上記加算過程の演算結果を出力する過程と、 を具備する事前計算を用いた複数生成元に対する演算方
    法。
JP25557298A 1998-05-07 1998-09-09 事前計算を用いた複数生成元に対する演算装置、そのプログラム記録媒体、及び演算方法 Expired - Fee Related JP3401196B2 (ja)

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)

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
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