JP3639153B2 - 逐次拡大を用いた楕円曲線演算装置及びプログラム記録媒体 - Google Patents
逐次拡大を用いた楕円曲線演算装置及びプログラム記録媒体 Download PDFInfo
- Publication number
- JP3639153B2 JP3639153B2 JP23012399A JP23012399A JP3639153B2 JP 3639153 B2 JP3639153 B2 JP 3639153B2 JP 23012399 A JP23012399 A JP 23012399A JP 23012399 A JP23012399 A JP 23012399A JP 3639153 B2 JP3639153 B2 JP 3639153B2
- Authority
- JP
- Japan
- Prior art keywords
- operation result
- multiplier
- input
- output
- entered
- 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 - Lifetime
Links
Images
Landscapes
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
この発明は、楕円曲線上の演算に関わり、特に、情報セキュリティ技術(楕円曲線暗号/署名、素因数分解)を実現するために用いられる装置及びプログラム記録媒体に関する。
【0002】
【従来の技術】
楕円曲線上で公開鍵暗号やデジタル署名を実現する場合、その処理時間のほとんどは楕円曲線上のk倍演算に費やされる。
一般に、暗号や署名には有減体GF(q)上で定義される楕円曲線を使う。これをE/GF(q)と表記する。qは素数または素数のべき乗である。従来の実装法ではqに素数または2m を用いることが多かったが、この発明は一般の有限体の場合を考える。
【0003】
楕円曲線上の点Pに対する加算を定義できる。通常の加算と区別するためにこれを、「楕円加算」「楕円2倍演算」と呼ぶ。いずれも、有限体GF(q)上の加減乗除算を組み合わせることで行うことが出来る。
通常、k倍演算を構成するために、「楕円加算」「楕円2倍演算」を組み合わせて行なう方法が用いられている。
【0004】
したがって、楕円曲線上の演算は、有限体GF(q)上の加減乗除算に帰着することが出来、これらを高速化することが、楕円曲線上の演算の高速化につながる。
この発明は、有限体GF(q)上の演算の高速化に関する発明である。
pを素数または素数のべき乗として、q=pm とし、上記有限体GF(q)=GF(pm )の元を部分体GF(p)を用いて表す場合、GF(pm )は、GF(p)上のベクトル空間であるので、m対のGF(p)の元と基底との線形結合で表す。
【0005】
従来、よく用いられてきた基底には、「多項式基底」および「正規基底」があり、それぞれ一長一短がある。
多項式基底を用いる方法は、GF(p)上のm次既約多項式f(x)の根αを用いて、{1,α,α2 ,…,αm-1 }なる基底を用い、GF(p)(=GF(p)[α])の元aをあらわす際に、
a=a0 +a1 α+a2 α2 +…+am-1 αm-1
を満たすGF(q)の元の組(a0 ,a1 ,…,am-1 )によってあらわす。
【0006】
正規基底を用いる方法は、GF(pm )上の正規基底の生成元αを用いて、{α,αp ,(αp )2 ,…,(αp )m-1 }なる基底を用い、GF(p)(=GF(p)[α])の元aをあらわす際に、
【0007】
【数11】
を満たすGF(pi-1 )の元の組(a0 ,a1 ,…,am-1 )によってあらわす。
なお、多項式基底と正規基底の生成元αの満たすべき条件は異なるので、必ずしも同じ値を取れるとは限らない。詳細は、平松豊一著、応用代数学、掌華房の3.3と3.6節を参照のこと。
【0008】
楕円曲線上で定義される要素同士の2項演算である加法を実行する場合、Stinson 著、櫻井監訳、暗号理論の基礎、共立出版のp.198によれば、標数が5以上の楕円曲線
E:y2 =x3 +ax+b (a,b∈GF(pm ))
上の2点(x1 ,y1 )と(x2 ,y2 )の和(x3 ,y3 )を求める場合
x3 =λ2 −x1 −x2
y3 =λ(x1 −x3 )−y1
の演算を行なう。但し、λはx1 =x2 かつy1 =y2 ならば(3x1 2 +a)/(2y1 )であり、それ以外は、(y2 −y1 )/(x2 −x1 )で求められる。
【0009】
以上の様な演算が繰り返されるので、有限体GF(pm )上での加減剰余算が繰り返し使われる。
【0010】
【発明が解決しようとする課題】
上記表現のどちらの場合でも、GF(pm )の元の乗算を行なう場合には、GF(p)の上でm2 回に比例する回数の乗算を行なわなくてはならなかった。また、楕円曲線上でk倍演算を行なう場合、logkに比例する回数、GF(pm )上の乗算を行なう必要がある。
【0011】
一般に加算に比べて乗算の方が演算時間がかかるが、演算回数の多いためボトルネックとなっていた。
【0012】
【課題を解決するための手段】
・3/4法
乗算を効率化するため、以下のような方法が考えられる。例として、a,b∈GF(p4 )とする。通常の多項式基底を用いて、GF(p)の元a0 ,a1 ,a2 ,a3 とb0 ,b1 ,b2 ,b3 によってaとbを、それぞれ
a=a0 +a1 α+a2 α2 +a3 α3
b=b0 +b1 α+b2 α2 +b3 α3
と表し、aとbの乗算を行なう場合を考える。また、αを根に持つGF(p)上の最小多項式をf(x)とする。
【0013】
通常の乗算では、
なる演算を行なう。この場合、GF(p)上の乗算が16回必要である。ところで、この演算を
という手順で行なえば、GF(p)上の乗算12回でabを求めることができる。
【0014】
上記手順は一般化することが出来、乗算を3/4に減らすことが出来る。この方法を、この明細書では「3/4法」と呼ぶ。
・逐次拡大を用いる方法
ところで、mが合成数の場合、逐次拡大によって有限体GF(pm )の元を表現することができる。
【0015】
例えばm=4の場合、逐次拡大では有限体GF(p2 )の元をGF(p)によってあらわし、有限体GF(p4 )の元をGF(p2 )によってあらわせる。この表現方法によって、乗算を高速化することが出来る。例として、a,b∈GF((p2 )2 )とし、通常の多項式基底を用いて、GF(p2 )の元A0 ,A1 とB0 ,B1 によってaとbをそれぞれ表し、GF(p)の元a00,a01、a10,a11、b00,b01、b10,b11によってA0 、A1 、B0 、B1 をそれぞれ表すこととする。
【0016】
a=A0 +A1 α
b=B0 +B1 α
A0 =a00+a01α′
A1 =a10+a11α′
B0 =b00+b01α′
B1 =b10+b11α′
と表し、aとbの乗算を行なう場合を考える。また、αを根に持つGF(p2 )上の最小多項式をf(x)とし、α′を根に持つGF(p)上の最小多項式をg(x)とする。
【0017】
aとbとの乗算を行う場合、
ab=A0 B0 +(A1 B0 +A0 B1 )α+A1 B1 α2 (modf(α))なる演算を行なう。この場合、GF(p2 )上の乗算を4回行なうことになる。
この演算は「3/4法」で述べたものと同様な方法を適用することにより、
と置き換えることが出来る。この場合、GF(p2 )上の乗算を3回行なうことになり、乗算の回数を3/4にすることが出来る。
【0018】
逐次拡大を用いる場合、さらにA0 B0 のようなGF(p2 )上の演算にも上記の方法を適用することが出来る。すなわち、GF(p2 )上の乗算1回に必要なGF(p)上の乗算の回数を4回から3回に減らすことができる。このため、GF(p4 )上の乗算1回に必要なGF(p)上の乗算回数は9回となる。
この例では、簡単のため逐次拡大を2回行なった場合を説明したが、実際には逐次拡大の回数が多いほど乗算回数削減の効果が高く、mが十分に大きければ、乗算の回数を約mのlog2 3 、つまり約m1.585 に減らすことができる(従来法ではm2 回であり、3/4法は3/4m2 回である)。
また、乗算を行う際に必要となる、mod f(α)によって多項式の次数を下げる処理に関しても、逐次拡大を用いることによって演算の効率化を行うことができる。これは、3/4法では、f(x)の次数がm次であるのに対して逐次拡大法では、mの任意の約数とすることができるためである。ここでは乗算について説明したが、逆元に関しても同様にして演算量を減らすことができる。
【0019】
【発明の実施の形態】
この発明では高速演算に適した特別な逐次拡大を用いる事によって高速に演算可能な拡大体演算装置を構成する。楕円曲線の有理点群の定義体として、高速に演算可能な逐次拡大体を用いる事によって、楕円曲線の有理点のなす群上の演算の高速化を行なう。
【0020】
有限体の拡大はGF(q0 )⊆GF(q1 )⊆…⊆GF(qn )と逐次的に行われる。例えば、この拡大を全て2次で行う場合(逐次2次拡大の場合)、拡大次数はqi =(q0 2 )i のように2の冪で大きくなる。
この発明では通常、逐次拡大体GF(qi )上の効率的な演算装置をGF(qi-1 ),GF(qi-2 ),…,GF(q0 )上の演算装置を用いて構成する。
【0021】
GF(q0 )上の演算装置があれば、上記の様に構成されたGF(qi )演算装置を、図18に示すようにGF(qn )演算器18AによりGF(qn-1 )上の演算を行い、その結果を用いてGF(qn-1 )演算器18BによりGF(qn-2 )上の演算を行い、以下順次、拡大演算を行って最後にGF(q0 )演算器18DによりGF(qn )上の演算を行うというようにi=1の場合から次々と用いて効率的なGF(qn )上の演算装置を構成する事ができる。
【0022】
GF(q0 )としては例えば素体GF(p)(pは素数)を用いてよい。また素数pとしてMersenne素数p=2p'−1(p′はpが素数となるような素数)あるいは擬Mersenne素数p=2p'±C(p′はpが素数となるような整数、Cは2p'/2以下の整数)を選んでも良い。そのような場合は素体上の演算は高速化できる。
【0023】
またp′として演算装置の語長に近い数(例えば語長が32の時はp′=32,31等、語長が16の時はp′=16,15等、語長が8の時はp′=8,7等)を選ぶことができるので、効率的な装置を構成できる。
実施例
この発明の実施例で説明を簡単にするため拡大体の表現を多項式基底または正規基底に限定する事もあるが、他の基底でも同様の方法を実現可能である。さらにGF(q0 )⊆GF(q1 )⊆…⊆GF(qn )と有限体を逐次的に拡大する際に、一貫して同種の基底を使わなくても良い。即ち、装置や速度などの都合と照らし併せて適切な基底を拡大の度に選んで良い。しかし、一つの装置内でのGF(q0 )⊆GF(q1 )⊆…⊆GF(qn )の拡大に対応する基底およびその種類の列は一貫して全て同じか、あるいは入出力の際に適切な基底に変換されるとする。
【0024】
この発明の実装ではGF(q0 )としては例えば素体GF(p)(pは素数)を選んでも良い。その際、素数pとしてMersenne素数p=2p'−1(p′はpが素数となるような素数)あるいは擬Mersenne素数p=2p'±C(Cは小さな整数)を選んで良い。そのような場合は素体上の演算は高速化できる。多項式基底の場合、逐次的に拡大する時、拡大ごとに高速演算に適した既約多項式を定義して既約多項式の列を作る。Mersenne素数p=2p'−1による素体GF(p)から拡大する場合は次のような事が云える。
【0025】
・GF(p)上でx2 +1は既約、つまりx2 +1を用いて拡大できる。
・GF(p)上でx2 −x+1は可約、つまりx2 −x+1を用いて拡大できない。
・p′=2またはp′が奇素数でp′≡3(mod 4)の時GF(p)上でx2 −x−1は既約、つまりx2 −x−1を用いて拡大できる。
【0026】
p′が奇素数でp′≡1(mod 4)の時GF(p)上でx2 −x−1は可約。
・p′=2またはp′が奇素数でp′≡±3(mod 8)の時GF(p)[α]/(α2 +1)上でx2 −x±αは既約、つまりx2 +1を用いて拡大でき、更にx2 −x±αを用いて拡大できる。
p′が奇素数でp′≡±1(mod 8)の時GF(p)[α]/(α2 +1)上でx2 −x±αは可約。つまりx2 +1を用いて拡大したものを、x2 −x±αを用いて更に拡大することはできない。(但しαはx2 +1=0の解。)
例えばGF(q0 )⊆GF(q1 )⊆GF(q2 )と拡大を行う場合p=2p'−1,p′≡±3(mod 8)またはp′=2として
(但しqi =p2i,αはx2 +1=0のGF(q1 )上での解。)とすることが出来る。
【0027】
正規基底の場合、逐次的に拡大する時、拡大ごとに高速演算に適した正規基底の生成元が定義されることによって、全ての基底を解に持つ既約多項式を定義して既約多項式の列を作る。従って、既約多項式を作る際、その解が正規基底になるものでなくてはならないという制限がある。たとえ既約でも例えばx2 +C(Cは定数項)の様な多項式は拡大には使えるが、その解は正規基底の基底とはならない。Mersenne素数p=2p'−1による素体GF(p)から拡大する場合は次のような事が云える。
【0028】
・GF(p)上でx2 ±x+1は可約。
・GF(p)上でx2 ±x−2は可約。
・GF(p)上でx2 ±2x+2は既約。
・p′≠2の時GF(p)上でx2 ±2x−2は可約。
・p′=2またはp′が奇素数でp′≡3(mod 4)の時GF(p)上でx2 ±x−1は既約。
【0029】
p′が奇素数でp′≡1(mod 4)の時GF(p)上でx2 ±x−1は可約。
・p′=3またはp′≡2(mod 3)の時GF(p)上でx2 ±x+2は既約。
p′≡1(mod 3)の時GF(p)上でx2 ±x+2は可約。
以下に先ず一般的な楕円曲線上の演算について説明し、かつその際にこの発明をどのように適用するかを示す。
【0030】
楕円曲線上のk倍演算装置1A
図1の「楕円曲線上のk倍演算装置」に従って説明する。
装置1Aは楕円曲線E上の有理点P及び整数kの入力に対して楕円曲線E上の有理点kPを出力する装置の構成の一例を表している。
【0031】
この実施例では簡単のため、二進加算法によるk倍演算を説明するが、符号付二進加算法やウインドウ法のような他の冪乗テーブル演算法でもこの発明の効果を享受出来る。
装置1Aは
・メモリ1B
・制御装置1C
・楕円加算装置1D
・楕円倍算装置1E
からなる。
【0032】
楕円加算装置1Dは図2に示すように構成され、楕円倍算装置1Eは図3に示すように構成される。k倍演算装置1Aの構成と応用によっては、入力や出力、計算途中結果に無限遠点や二等分点が現れない事が保証される場合がある。そのような場合は楕円加算装置1Dや楕円倍算装置1Eの代わりに、より装置の構成が単純な楕円加算器(図12,14,16)や楕円倍算器(図13,15,17)を使う事も出来る。この実施例では説明を簡単にするため、入力や出力、計算途中結果に無限遠点や二等分点を仮定しても良いとする。
【0033】
この装置の動作をプログラムで実現する場合は、図36に示すフロー図に従って実行する。
楕円曲線の無限遠点をΟと表記する。
この装置では、以下のように演算が実行される。
Step1:制御装置1Cは、入力k,Pに対してk=Σ i=0 n-1 ki 2i を満たす最小の整数nと数列ki ∈{0,1}を求め、メモリ1Bに渡す。nは必ずしも最小でなくても良く装置を構成する際kの想定され得る最大値から事前に算出しておいても良い。
【0034】
Step2:制御装置1Cは、楕円曲線上の有理点RをR=Οとしてメモリ1Bに渡す。
Step3:制御装置1Cは、カウンター値iをi=nとしてメモリ1Bに渡す。
Step4:制御装置1Cは、メモリ1Bよりカウンター値iを受け取りi=0かどうかを調べる。もしi=0ならStep11へ制御転送する。
【0035】
Step5:制御装置1Cは、メモリ1BよりRを受け取り、それを楕円倍算装置1Eに渡し、受け取った倍算結果の値を新たなRとする。
Step6:制御装置1Cは、i−1を新たなカウンター値iとする。
Step7:制御装置1Cは、カウンター値iに基づき、メモリ1Bより数ki を受け取りki =0かどうかを調べる。もしki =0ならStep9へ制御転送する。
【0036】
Step8:制御装置1Cは、RとPを楕円加算装置1Dに渡し受け取った、その加算結果の値を新たなRとする。
Step9:制御装置1Cは、Rとiをメモリ1Bに渡す。
Step10:制御装置1Cは、Step4へ制御転送する。
Step11:制御装置1Cは、メモリ1BよりRを受け取り、それをkPとして出力する。
楕円曲線上の加算装置2A
図2に「楕円曲線上の加算装置」を示す。
【0037】
装置2Aは楕円曲線E上の有理点P,Qの入力に対して楕円曲線E上の有理点P+Qを出力する装置の構成の一例を表している。
装置2Aは
・メモリ2B
・制御装置2C
・楕円加算器2D
・楕円倍算器2E
・楕円比較装置2F
・楕円逆元器2G
からなる。
【0038】
楕円加算器2Dは図12または図14または図16に示すように構成され、楕円倍算器2Eは図13または図15または図17に示すように構成され、楕円比較装置2Fは図8に示すように構成され、楕円逆元器2Gは図6または図7に示すように構成される。
この装置の動作をプログラムで実現する場合は、図37に示すフロー図に従って実行する。
【0039】
楕円曲線の無限遠点をΟと表記する。
この装置では、以下のように演算が実行される。
Step1:制御装置2Cは、入力のPとOを楕円比較装置2Fに渡し、楕円比較装置2Fから論理式P=Oの真偽を受け取りもし真ならR=QとしてStep6へ制御転送する。
【0040】
Step2:制御装置2Cは、入力のQとOを楕円比較装置2Fに渡し、楕円比較装置2Fから論理式Q=Oの真偽を受け取りもし真ならR=PとしてStep6へ制御転送する。
Step3:制御装置2Cは、入力のPとQを楕円比較装置2Fに渡し、楕円比較装置2Fから論理式P=Qの真偽を受け取りもし真なら、楕円倍算器2EにPを渡しその出力2Pを用いてR=2PとしてStep6へ制御転送する。
【0041】
Step4:制御装置2Cは、入力のQを楕円逆元器2Gに渡しその出力−Qと入力のPとを楕円比較装置2Fに渡し、楕円比較装置2Fから論理式P=−Qの真偽を受け取りもし真なら、R=OとしてStep6へ制御転送する。
Step5:制御装置2Cは、楕円加算器2DにP,Qを渡しその出力P+Qを用いてR=P+Qとする。
【0042】
Step6:制御装置2Cは、RをP+Qとして出力する。
楕円曲線上の倍算装置3A
図3に「楕円曲線上の倍算装置」を示す。
装置3Aは楕円曲線E上の有理点Pの入力に対して楕円曲線E上の有理点2Pを出力する装置の構成の一例を表している。
【0043】
装置3Aは
・メモリ3B
・制御装置3C
・楕円二等分点判定器3D
・楕円倍算器3E
・楕円比較装置3F
からなる。
【0044】
楕円二等分点判定器3Dは図4または図5に示すように構成され、楕円倍算器3Eは図13または図15または図17に示すように構成され、楕円比較装置3Fは図8に示すように構成される。
この装置の動作をプログラムで実現する場合は、図38に示すフロー図に従って実行する。
【0045】
楕円曲線の無限遠点をΟと表記する。楕円曲線の二等分点の集合(2P=ΟかつP≠Οを満たすPの集合)をUと表記する。
この装置では、以下のように演算が実行される。
Step1:制御装置3Cは、入力のPとOを楕円比較装置3Fに渡し、楕円比較装置3Fから論理式P=Oの真偽を受け取り、もし真ならR=OとしてStep4へ制御転送する。
【0046】
Step2:制御装置3Cは、入力のPを楕円二等分点判定器3Dに渡し、楕円二等分点判定器3Dから、論理式P∈Uの真偽を受け取り、もし真ならR=OとしてStep4へ制御転送する。
Step3:制御装置3Cは、楕円倍算器3EにPを渡しその出力2Pを用いてR=2Pとする。
【0047】
Step4:制御装置3Cは、Rを2Pとして出力する。
楕円二等分点判定器4A
図4に「楕円二等分点判定器」を示す。
楕円曲線の無限遠点をΟと表記する。楕円曲線の二等分点の集合(2P=ΟかつP≠Οを満たすPの集合)をBと表記する。
【0048】
装置4Aは二値座標で表現された楕円曲線E上の有理点P=(x,y)の入力に対して論理式P∈Uの真偽を出力する装置の構成の一例を表している。
装置4Aは
・メモリ4B
・制御装置4C
からなる。
【0049】
この装置の動作をプログラムで実現する場合は、図39に示すフロー図に従って実行する。
この装置では、以下のように演算が実行される。
Step1:制御装置4Cは、入力のyを調べy=0ならばf=真とする。y≠0ならばf=偽とする。
【0050】
Step2:制御装置4Cは、fを論理式P∈Uの値として出力する。
楕円二等分点判定器5A
図5に「楕円二等分点判定器」の他の例を示す。
楕円曲線の無限遠点をΟと表記する。楕円曲線の二等分点の集合(2P=ΟかつP≠Οを満たすPの集合)をUと表記する。
【0051】
装置5Aは三値座標で表現された楕円曲線E上の有理点P=(X,Y,Z)の入力に対して論理式P∈Uの真偽を出力する装置の構成の一例を表している。
装置5Aは
・メモリ5B
・制御装置5C
からなる。
【0052】
この装置の動作をプログラムで実現する場合は、図40に示すフロー図に従って実行する。
この装置では、以下のように演算が実行される。
Step1:制御装置5Cは、入力のyを調べY=0ならばf=真とする。Y≠0ならばf=偽とする。
【0053】
Step2:制御装置5Cは、fを論理式P∈Uの値として出力する。
楕円逆元器6A
図6に「楕円逆元器」を示す。
装置6Aは二値座標で表現された楕円曲線E上の有理点P=(x,y)の入力に対してPの加法逆元−Pを出力する装置の構成の一例を表している。
【0054】
装置6Aは
・メモリ6B
・制御装置6C
からなる。
この装置の動作をプログラムで実現する場合は、図41に示すフロー図に従って実行する。
【0055】
この装置では、以下のように演算が実行される。
Step1:制御装置6Cは、入力のP=(x,y)に対してR=(x,−y)とする。
Step2:制御装置6Cは、RをPの加法逆元−Pとして出力する。
楕円逆元器7A
図7に「楕円逆元器」の他の例を示す。
【0056】
装置7Aは三値座標で表現された楕円曲線E上の有理点P=(X,Y,Z)の入力に対してPの加法逆元−Pを出力する装置の構成の一例を表している。
装置7Aは
・メモリ7B
・制御装置7C
からなる。
【0057】
この装置の動作をプログラムで実現する場合は、図42に示すフロー図に従って実行する。
この装置では、以下のように演算が実行される。
Step1:制御装置7Cは、入力のP=(X,Y,Z)に対してR=(X,−Y,Z)とする。
【0058】
Step2:制御装置7Cは、RをPの加法逆元−Pとして出力する。
楕円比較装置8A
図8に「楕円比較装置」を示す。
装置8Aは楕円曲線E上の有理点P,Qの入力に対して論理式P=Qの真偽を出力する装置の構成の一例を表している。
【0059】
装置8Aは
・メモリ8B
・制御装置8C
・楕円比較器8D
からなる。
【0060】
楕円比較器8Dは図9または図10または図11に示すように構成される。
この装置の動作をプログラムで実現する場合は、図43に示すフロー図に従って実行する。
楕円曲線の無限遠点をΟと表記する。
この装置では、以下のように演算が実行される。
【0061】
Step1:制御装置8Cは、入力のPに対してPがΟと等しいかどうか調べる。
Step2:制御装置8Cは、入力のQに対してQがΟと等しいかどうか調べる。
Step3:制御装置8Cは、もしP=ΟかつQ=Οならf=真としてStep7へ制御転送する。
【0062】
Step4:制御装置8Cは、もしP=ΟかつQ≠Οならf=偽としてStep7へ制御転送する。
Step5:制御装置8Cは、もしP≠ΟかつQ=Οならf=偽としてStep7へ制御転送する。
Step6:制御装置8Cは、P,Qを楕円比較器8Dへ渡しその結果Cmp(P,Q)を用いてf=Cmp(P,Q)とする。つまりP=Qでf=真、P≠Qでf=偽とする。
【0063】
Step7:制御装置8Cは、fを論理式P=Qの値として出力する。
楕円比較器9A
図9に「楕円比較器」を示す。
装置9Aは二値座標における楕円曲線E上の有理点P=(x1 ,y1 )およびQ=(x2 ,y2 )の入力に対して論理式P=Qの真偽を出力する装置の構成の一例を表している。
【0064】
装置9Aは
・メモリ9B
・制御装置9C
からなる。
この装置の動作をプログラムで実現する場合は、図44に示すフロー図に従って実行する。
【0065】
この装置では、以下のように演算が実行される。
Step1:制御装置9Cは、入力P=(x1 ,y1 )およびQ=(x2 ,y2 )に対してx1 がx2 と等しいかどうか調べる。
Step2:制御装置9Cは、x1 =x2 であれば、入力P=(x1 ,y1 )およびQ=(x2 ,y2 )に対してy1 がy2 と等しいかどうか調べる。
【0066】
Step3:制御装置9Cは、もしx1 =x2 かつy1 =y2 ならf=真としてStep5へ制御転送する。
Step4:制御装置9Cは、x1 ≠x2 又はy1 ≠y2 であればf=偽とする。
Step5:制御装置9Cは、fを論理式P=Qの値として出力する。
楕円比較器10A
図10に「楕円比較器」の他の例を示す。
【0067】
装置10Aは三値座標(projective座標)における楕円曲線E上の有理点P=(X1 ,Y1 ,Z1 )およびQ=(X2 ,Y2 ,Z2 )の入力に対して論理式P=Qの真偽を出力する装置の構成の一例を表している。
装置10Aは
・メモリ10B
・制御装置10C
からなる。
【0068】
この装置の動作をプログラムで実現する場合は、図45のフロー図に従って実行する。
この装置では、以下のように演算が実行される。
Step1:制御装置10Cは、入力P=(X1 ,Y1 ,Z1 )およびQ=(X2 ,Y2 ,Z2 )に対してX1 Z2 がX2 Z1 と等しいかどうか調べる。
【0069】
Step2:制御装置10Cは、X1 Z2 =X2 Z1 であれば、入力P=(X1 ,Y1 ,Z1 )およびQ=(X2 ,Y2 ,Z2 )に対してY1 Z2 がY2 Z1 と等しいかどうか調べる。
Step3:制御装置10Cは、もしX1 Z2 =X2 Z1 かつY1 Z2 =Y2 Z1 ならf=真としてStep5へ制御転送する。
【0070】
Step4:制御装置10Cは、X1 Z2 =X2 Z1 かつY1 Z2 =Y2 Z1 でなければf=偽とする。
Step5:制御装置10Cは、fを論理式P=Qの値として出力する。
楕円比較器11A
図11に「楕円比較器」の更に他の例を示す。
【0071】
装置11Aは三値座標(Jacobian座標)における楕円曲線E上の有理点P=(X1 ,Y1 ,Z1 )およびQ=(X2 ,Y2 ,Z2 )の入力に対して論理式P=Qの真偽を出力する装置の構成の一例を表している。
装置11Aは
・メモリ11B
・制御装置11C
からなる。
【0072】
この装置の動作をプログラムで実現する場合は、図46に示すフロー図に従って実行する。
この装置では、以下のように演算が実行される。
Step1:制御装置11Cは、入力P=(X1 ,Y1 ,Z1 )およびQ=(X2 ,Y2 ,Z2 )に対してX1 Z2 2がX2 Z1 2と等しいかどうか調べる。
【0073】
Step2:制御装置11Cは、X1 Z2 2=X2 Z1 2であれば、入力P=(X1 ,Y1 ,Z1 )およびQ=(X2 ,Y2 ,Z2 )に対してY1 Z2 3がY2 Z1 3と等しいかどうか調べる。
Step3:制御装置11Cは、もしX1 Z2 2=X2 Z1 2かつY1 Z2 3=Y2 Z1 3ならf=真としてStep5へ制御転送する。
【0074】
Step4:制御装置11Cは、X1 Z2 2=X2 Z1 2でなければ、あるいはY1 Z2 3=Y2 Z1 3でなければf=偽とする。
Step5:制御装置11Cは、fを論理式P=Qの値として出力する。
楕円加算器12A
図12に「楕円加算器」の例を示す。
【0075】
装置12Aは二値座標における楕円曲線E:y2 =x3 +ax+b,a,b∈GF(qn ),4a3 +27b2 ≠0)上の有理点P=(x1 ,y1 )およびQ=(x2 ,y2 )(但しP≠±Q)の入力に対して楕円曲線E上の有理点P+Qを出力する装置の構成の一例を表している。
装置12Aは
・メモリ12B
・制御装置12C
・GF(qn )自乗器12D
・GF(qn )減算器12E
・GF(qn )乗算器12F
・GF(qn )逆元器12G
からなる。
【0076】
GF(qn )自乗器12Dはこの発明を適用して図24または図25または図26または図27に示すように構成され、GF(qn )減算器12Eは図21に示すように構成され、GF(qn )乗算器12Fも同様に図22または図23に示すように構成され、GF(qn )逆元器12Gは図28または図29に示すように構成される。
【0077】
つまりGF(qn )自乗器12DおよびGF(qn )減算器12EおよびGF(qn )乗算器12FおよびGF(qn )逆元器12Gは図19に示すGF(qi )演算器(i=nの場合)や図18に示す逐次拡大演算装置の様な集積装置によって実現される。
この装置の動作をプログラムで実現する場合は、図47に示すフロー図に従って実行する。
【0078】
この装置では、以下のように演算が実行される。
Step1:制御装置12Cは、入力P=(x1 ,y1 )およびQ=(x2 ,y2 )に対してGF(qn )減算器12EおよびGF(qn )逆元器12Gを用いてλ=(y2 −y1 )/(x2 −x1 )を計算する。
Step2:制御装置12Cは、GF(qn )減算器12EおよびGF(qn )自乗器12Dを用いてx3 =λ2 −x1 −x2 を計算する。
【0079】
Step3:制御装置12Cは、GF(qn )減算器12EおよびGF(qn )乗算器12Fを用いてy3 =λ(x1 −x3 )−y1 を計算する。
Step4:制御装置12Cは、(x3 ,y3 )をP+Qとして出力する。
楕円倍算器13A
図13に「楕円倍算器」の例を示す。
【0080】
装置13Aは二値座標における楕円曲線E:y2 =x3 +ax+b(a,b∈GF(qn ),4a3 +27b2 ≠0)上の有理点P=(x1 ,y1 )の入力に対して楕円曲線E上の有理点2Pを出力する装置の構成の一例を表している。
装置13Aは
・メモリ13B
・制御装置13C
・GF(qn )加算器13D
・GF(qn )減算器13E
・GF(qn )乗算器13F
・GF(qn )逆元器13G
・GF(qn )自乗器13H
からなる。
【0081】
GF(qn )加算器13Dはこの発明を適用して図20に示すように構成され、GF(qn )減算器13Eは図21に示すように構成され、GF(qn )乗算器13Fも同様に図22または図23に示すように構成され、GF(qn )逆元器13Gも同様に図28または図29に示すように構成され、GF(qn )自乗器13Hも同様に図24または図25または図26または図27に示すように構成される。
【0082】
つまりGF(qn )加算器13DおよびGF(qn )減算器13EおよびGF(qn )乗算器13FおよびGF(qn )逆元器13GおよびGF(qn )自乗器13Hは図19に示すGF(qi )演算器(i=nの場合)や図18に示す逐次拡大演算装置の様な集積装置によって実現される。
この装置の動作をプログラムで実現する場合は、図48に示すフロー図に従って実行する。
【0083】
この装置では、以下のように演算が実行される。
Step1:制御装置13Cは、入力P=(x1 ,y1 )に対してGF(qn )加算器13DおよびGF(qn )逆元器13GおよびGF(qn )自乗器13Hを用いてλ=(3x1 2+a)/(2y1 )を計算する。
Step2:制御装置13Cは、GF(qn )減算器13EおよびGF(qn )自乗器13Dを用いてx3 =λ2 −2x1 を計算する。
【0084】
Step3:制御装置13Cは、GF(qn )減算器13EおよびGF(qn )乗算器13Dを用いてy3 =λ(x1 −x3 )−y1 を計算する。
Step4:制御装置13Cは、(x3 ,y3 )を2Pとして出力する。
楕円加算器14A
図14に「楕円加算器」の他の例を示す。
【0085】
装置14Aは三値座標(projective座標)における楕円曲線E(:y2 Z=x3 +axZ2 +bZ3 ,a,b∈GF(qn ),4a3 +27b2 ≠0)上の有理点P=(X1 ,Y1 ,Z1 )およびQ=(X2 ,Y2 ,Z2 )(但しX1 Z2 ≠X2 Z1 )の入力に対して楕円曲線E上の有理点P+Qを出力する装置の構成の一例を表している。
【0086】
装置14Aは
・メモリ14B
・制御装置14C
・GF(qn )自乗器14D
・GF(qn )減算器14E
・GF(qn )乗算器14F
からなる。
【0087】
GF(qn )自乗器14Dはこの発明を適用して図24または図25または図26または図27に示すように構成され、GF(qn )減算器14Eも同様に図21に示すように構成され、GF(qn )乗算器14Fも同様に図22または図23に示すように構成される。
つまりGF(qn )自乗器14DおよびGF(qn )減算器14EおよびGF(qn )乗算器14Fは図19に示すGF(qi )演算器(i=nの場合)や図18に示す逐次拡大演算装置の様な集積装置によって実現される。
【0088】
この装置の動作をプログラムで実現する場合は、図49に示すフロー図に従って実行する。
この装置では、以下のように演算が実行される。
Step1:制御装置14Cは、入力P=(X1 ,Y1 ,Z1 )およびQ=(X2 ,Y2 ,Z2 )に対してGF(qn )減算器14EおよびGF(qn )乗算器14Fを用いてu=Y2 Z1 −Y1 Z2 を計算する。
【0089】
Step2:制御装置14Cは、GF(qn )減算器14EおよびGF(qn )乗算器14Fを用いてv=X2 Z1 −X1 Z2 を計算する。
Step3:制御装置14Cは、GF(qn )自乗器14DおよびGF(qn )減算器14EおよびGF(qn )乗算器14Fを用いてA=u2 Z1 Z2 −v3 −2v2 X1 Z2 を計算する。
【0090】
Step4:制御装置14Cは、GF(qn )乗算器14Fを用いてX3 =vAを計算する。
Step5:制御装置14Cは、GF(qn )自乗器14DおよびGF(qn )減算器14EおよびGF(qn )乗算器14Fを用いてY3 =u(v2 X1 Z2 −A)−v3 Y1 Z2 を計算する。
【0091】
Step6:制御装置14Cは、GF(qn )自乗器14DおよびGF(qn )乗算器14Fを用いてZ3 =v3 Z1 Z2 を計算する。
Step7:制御装置14Cは、(X3 ,Y3 ,Z3 )をP+Qとして出力する。
楕円倍算器15A
図15に「楕円倍算器」の他の例を示す。
【0092】
装置15Aは三値座標(projective座標)における楕円曲線E(:Y2 Z=x3 +axZ2 +bZ3 ,a,b∈GF(qn ),4a3 +27b2 ≠0)上の有理点P=(X1 ,Y1 ,Z1 )の入力に対して楕円曲線E上の有理点2Pを出力する装置の構成の一例を表している。
装置15Aは
・メモリ15B
・制御装置15C
・GF(qn )加算器15D
・GF(qn )減算器15E
・GF(qn )乗算器15F
・GF(qn )自乗器15G
からなる。
【0093】
GF(qn )加算器15Dはこの発明を適用して図20に示すように構成され、GF(qn )減算器15Eは図21に示すように構成され、GF(qn )乗算器15Fも同様に図22または図23に示すように構成され、GF(qn )自乗器15Gも同様に図24または図25または図26または図27に示すように構成される。
【0094】
つまりGF(qn )加算器15DおよびGF(qn )減算器15EおよびGF(qn )乗算器15FおよびGF(qn )自乗器15Gは図19に示すGF(qi )演算器(i=nの場合)や図18に示す逐次拡大演算装置の様な集積装置によって実現される。
この装置の動作をプログラムで実現する場合は、図50に示すフロー図に従って実行する。
【0095】
この装置では、以下のように演算が実行される。
Step1:制御装置15Cは、入力P=(X1 ,Y1 ,Z1 )に対してGF(qn )加算器15DおよびGF(qn )自乗器15Gを用いてw=3X1 2+aZ1 2を計算する。
Step2:制御装置15Cは、GF(qn )乗算器15Fを用いてs=Y1 Z1 を計算する。
【0096】
Step3:制御装置15Cは、GF(qn )乗算器15Fを用いてB=X1 Y1 sを計算する。
Step4:制御装置15Cは、GF(qn )減算器15EおよびGF(qn )乗算器15FおよびGF(qn )自乗器15Gを用いてh=w2 −8Bを計算する。
【0097】
Step5:制御装置15Cは、GF(qn )乗算器15Fを用いてX3 =2hsを計算する。
Step6:制御装置15Cは、GF(qn )減算器15EおよびGF(qn )乗算器15FおよびGF(qn )自乗器15Gを用いてY3 =w(4B−h)−8Y1 2s2 を計算する。
【0098】
Step7:制御装置15Cは、GF(qn )乗算器15FおよびGF(qn )自乗器15Gを用いてZ3 =8s3 を計算する。
Step8:制御装置15Cは、(X3 ,Y3 ,Z3 )を2Pとして出力する。
楕円加算器16A
図16に「楕円加算器」の他の例を示す。
【0099】
装置16Aは三値座標(Jacobian座標)における楕円曲線E(:Y2 =x3 +axZ4 +bZ6 ,a,b∈GF(qn ),4a3 +27b2 ≠0)上の有理点P=(X1 ,Y1 ,Z1 )およびQ=(X2 ,Y2 ,Z2 )(但し、X1 Z2 ≠X2 Z1 )の入力に対して楕円曲線E上の有理点P+Qを出力する装置の構成の一例を表している。
【0100】
装置16Aは
・メモリ16B
・制御装置16C
・GF(qn )自乗器16D
・GF(qn )減算器16E
・GF(qn )乗算器16F
からなる。
【0101】
GF(qn )自乗器16Dはこの発明を適用して図24または図25または図26または図27に示すように構成され、GF(qn )減算器16Eも同様に図21に示すように構成され、GF(qn )乗算器16Fも同様に図22または図23に示すように構成される。
つまりGF(qn )自乗器16DおよびGF(qn )減算器16EおよびGF(qn )乗算器16Fは図19に示すGF(qi )演算器(i=nの場合)や図18に示す逐次拡大演算装置の様な集積装置によって実現される。
【0102】
この装置の動作をプログラムで実現する場合は、図51に示すフロー図に従って実行する。
この装置では、以下のように演算が実行される。
Step1:制御装置16Cは、入力P=(X1 ,Y1 ,Z1 )およびQ=(X2 ,Y2 ,Z2 )に対してGF(qn )乗算器16FおよびGF(qn )自乗器16Gを用いてU1 =X1 Z2 2を計算する。
【0103】
Step2:制御装置16Cは、GF(qn )自乗器16DおよびGF(qn )乗算器16Fを用いてU2 =X2 Z1 2を計算する。
Step3:制御装置16Cは、GF(qn )自乗器16DおよびGF(qn )乗算器16Fを用いてS1 =Y1 Z2 3を計算する。
Step4:制御装置16Cは、GF(qn )自乗器16DおよびGF(qn )乗算器16Fを用いてS2 =Y2 Z1 3を計算する。
【0104】
Step5:制御装置16Cは、GF(qn )減算器16Eを用いてH=U2 −U1 を計算する。
Step6:制御装置16Cは、GF(qn )減算器16Eを用いてr=S2 −S1 を計算する。
Step7:制御装置16Cは、GF(qn )自乗器16DおよびGF(qn )減算器16EおよびGF(qn )乗算器16Fを用いてX3 =r2 −H3 −2U1 H2 を計算する。
【0105】
Step8:制御装置16Cは、GF(qn )自乗器16DおよびGF(qn )減算器16EおよびGF(qn )乗算器16Fを用いてY3 =r(U1 H2 −X3 )−S1 H3 を計算する。
Step9:制御装置16Cは、GF(qn )乗算器16Fを用いてZ3 =Z1 Z2 Hを計算する。
【0106】
Step10:制御装置16Cは、(X3 ,Y3 ,Z3 )をP+Qとして出力する。
楕円倍算器17A
図17に「楕円倍算器」の他の例を示す。
装置17Aは三値座標(Jacobian座標)における楕円曲線E(:Y2 =x3 +axZ4 +bZ6 ,a,b∈GF(qn ),4a3 +27b2 ≠0)上の有理点P=(X1 ,Y1 ,Z1 )の入力に対して楕円曲線E上の有理点2Pを出力する装置の構成の一例を表している。
【0107】
装置17Aは
・メモリ17B
・制御装置17C
・GF(qn )加算器17D
・GF(qn )減算器17E
・GF(qn )乗算器17F
・GF(qn )自乗器17G
からなる。
【0108】
GF(qn )加算器17Dはこの発明を適用して図20に示すように構成され、GF(qn )減算器17Eも同様に図21に示すように構成され、GF(qn )乗算器17Fも同様に図22または図23に示すように構成され、GF(qn )自乗器17Gも同様に図24または図25または図26または図27に示すように構成される。
【0109】
つまりGF(qn )加算器17DおよびGF(qn )減算器17EおよびGF(qn )乗算器17FおよびGF(qn )自乗器17Gは図19に示すGF(qi )演算器(i=nの場合)や図18に示す逐次拡大演算装置の様な集積装置によって実現される。
この装置の動作をプログラムで実現する場合は、図52に示すフロー図に従って実行する。
【0110】
この装置では、以下のように演算が実行される。
Step1:制御装置17Cは、入力P=(X1 ,Y1 ,Z1 )に対してGF(qn )加算器17DおよびGF(qn )乗算器17FおよびGF(qn )自乗器17Gを用いてM=3X1 2+aZ4 を計算する。
Step2:制御装置17Cは、GF(qn )乗算器17FおよびGF(qn )自乗器17Gを用いてS=4X1 Y1 2を計算する。
【0111】
Step3:制御装置17Cは、GF(qn )減算器17EおよびGF(qn )乗算器17FおよびGF(qn )自乗器17Gを用いてX3 =M2 −2Sを計算する。
Step4:制御装置17Cは、GF(qn )減算器17EおよびGF(qn )乗算器17FおよびGF(qn )自乗器17Gを用いてY3 =M(S−X3 )−8Y1 4を計算する。
【0112】
Step5:制御装置17Cは、GF(qn )乗算器17Fを用いてZ3 =2Y1 Z1 を計算する。
Step6:制御装置17Cは、(X3 ,Y3 ,Z3 )を2Pとして出力する。
逐次拡大装置18A
図18にこの発明の要部である「逐次拡大装置」を示す。
【0113】
装置18AはGF(qn )上の有理式の列R(x0 ,x1 ,…)及びx0 ,x1 ,…の値、またはその値の格納場所を入力として、R(x0 ,x1 ,…)の値の列を出力する装置の構成の一例を表している。
装置実装を簡単にするため計算可能な有理式の型に制限を設けても良い。
GF(qn-1 )演算器18Bは図19(i=n−1の場合)に示すように構成され、GF(qn-2 )演算器18Cは図19(i=n−2の場合)に示すように構成され、以下順次同様に構成される。
【0114】
GF(qi )演算器においては一度にGF(qi )上演算の列を全部GF(qi-1 )上演算の列に帰着させてからGF(qi-1 )演算器に渡す必要は無く、部分的に帰着させながら何度もGF(qi-1 )演算器に渡すように装置を構成し、また、部分的に帰着させながら得たGF(qi-1 )演算器の出力結果をGF(qi-1 )演算器の入力として利用できるよう装置を構成する。
【0115】
この装置の動作をプログラムで実現する場合は、図53に示すフロー図に従って実行する。
この装置では、以下のように演算が実行される。
Step1:GF(qn )演算器18Aは、入力R(x0 ,x1 ,…)及びx0 ,x1 ,…の値に対して、この演算の列とデータをGF(qn-1 )上の演算の列とデータに帰着させ、GF(qn-1 )演算器18Bに渡す。
【0116】
Step2:GF(qn-1 )演算器18Bは、入力をGF(qn-2 )上の演算の列とデータに帰着させ、GF(qn-2 )演算器18Cに渡す。
Step3:同様にしてGF(qo )まで演算の列とデータを帰着させGF(qo )演算器18Dがこれを計算する。
Step4:計算されたR(x0 ,x1 ,…)の値の列を出力する。
一般的にはq0 =p,q1 =ps1,q2 =(ps1)s2,…,qz =(…((ps1)s2)…)sz=pm を満すようにm=s1 s2 …sz と分解し、つまりGF(pm )をGF((((ps1)s2)…)szとみなし、GF(q0 )上のs1 個の元によってGF(q1 )上の元をあらわす演算GF(q1 )を行い、GF(q1 )上のs2 個の元によってGF(q2 )上の元をあらわす演算GF(q2 )を行い、以下同様にして、最終的にGF(qz-1 )=GF(pm )上の元をあらわす。ここで、使用される楕円曲線演算においてGF(q)のqに要求される数、例えば暗号では160ビット程度が要求されるが、pm が160ビット以上になるように、s1 ,s2 ,…,sz を適度に決めればよい。
GF(qi )演算器19A
図19に「GF(qi )演算器」を示す。
【0117】
装置19AはGF(qi )上の有理式の列R(x0 ,x1 ,…)及びx0 ,x1 ,…の値、またはその値の格納場所を入力として、R(x0 ,x1 ,…)の値の列を出力する装置の構成の一例を表している。
装置実装の簡単のため計算可能な有理式の型に制限を設けても良い。
GF(qi )演算器においては一度にGF(qi )上演算の列を全部GF(qi-1 )上演算の列に帰着させてからGF(qi-1 )演算器に渡す必要は無く、部分的に帰着させながら何度もGF(qi-1 )演算器に渡すよう装置を構成し、また、部分的に帰着させながら得たGF(qi-1 )演算器の出力結果をGF(qi-1 )演算器の入力として利用できるよう装置を構成する。
【0118】
装置19Aは
・メモリ19B
・制御装置19C
・GF(qi )定数倍器19D
・GF(qi )加算器19E
・GF(qi )減算器19F
・GF(qi )乗算器19G
・GF(qi )自乗器19H
・GF(qi )逆元器19I
の全部又はメモリ19B、制御装置19Cを除く他の一部からなる。
【0119】
GF(qi )定数倍器19Dは図30または図31または図32または図33または図34または図35に示すように構成され、GF(qi )加算器19Eは図20(n=iの場合)に示すように構成され、GF(qi )減算器19Fは図21(n=iの場合)に示すように構成され、GF(qi )乗算器19Gは図22(n=iの場合)または図23(n=iの場合)に示すように構成され、GF(qi )自乗器19Hは図24(n=iの場合)または図25(n=iの場合)または図26(n=iの場合)または図27(n=iの場合)に示すように構成され、GF(qi )逆元器19Iは図28(n=iの場合)または図29(n=iの場合)に示すように構成される。
【0120】
この装置の動作をプログラムで実現する場合は、図54に示すフロー図に従って実行する。
この装置では、以下のように演算が実行される。
Step1:制御装置19Cは、入力R(x0 ,x1 ,…)及びx0 ,x1 ,…の値に対して、この演算の列とデータをGF(qi-1 )上の加算、減算、乗算、自乗、逆元、定数倍演算の列とデータに帰着させる。
【0121】
Step2:制御装置19Cは、メモリ19BおよびGF(qi )定数倍器19DおよびGF(qi )加算器19EおよびGF(qi )減算器19FおよびGF(qi )乗算器19GおよびGF(qi )自乗器19HおよびGF(qi )逆元器19Iを用いて帰着の結果得られたGF(qi-1 )上演算の列を実行する。
Step3:制御装置19Cは、計算されたR(x0 ,x1 ,…)の値の列を出力する。
GF(qn )加算器20A
図20に「GF(qn )加算器」を示す。
【0122】
この装置はGF(qn-1 )のm次拡大GF(qn )=GF(qn-1 m )上の加算器のGF(qn-1 )上演算装置による一構成例である。この説明では簡単のためm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
この説明および、図20におけるA=(A0 ,A1 )およびB=(B0 ,B1 )およびA+B=(C0 ,C1 )等の記述はGF(qn )=GF(qn-1 m )上の元、A,B,A+B等のGF(qn-1 )上の元A0 ,A1 ,B0 ,B1 ,C0 ,C1 等による表現である。
【0123】
装置20AはGF(qn )上の元A=(A0 ,A1 )およびB=(B0 ,B1 )の入力に対してGF(qn )上の元A+Bを出力する装置の構成の一例を表している。
装置20Aは
・GF(qn-1 )加算器20B
・GF(qn-1 )加算器20C
からなる。
【0124】
この装置の動作をプログラムで実現する場合は、図55に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0125】
Step1:GF(qn-1 )加算器20Bは、入力のA0 およびB0 に対してC0 ←A0 +B0 を計算してC0 を出力する。
Step2:GF(qn-1 )加算器20Cは、入力のA1 およびB1 に対してC1 ←A1 +B1 を計算してC1 を出力する。
Step3:(C0 ,C1 )をA+Bとして出力する。
【0126】
一般にsi 個のGF(qi-1 )の元の組であらわされたGF(qi )の元a=(a0 ,a1 ,…,asi-1)およびb=(b0 ,b1 ,…,bsi-1)が入力されると、a+b=(a0 +b0 ,a1 +b1 ,…,asi-1+bsi-1)を演算して出力する。
GF(qn )減算器21A
図21に「GF(qn )減算器」を示す。
【0127】
この装置はGF(qn-1 )のm次拡大GF(qn )=GF(qn-1 m )上の減算器のGF(qn-1 )上演算装置による一構成例である。この説明では簡単のためm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
この説明および、図21におけるA=(A0 ,A1 )およびB=(B0 ,B1 )およびA−B=(C0 ,C1 )等の記述はGF(qn )=GF(qn-1 m )上の元、A,B,A−B等のGF(qn-1 )上の元A0 ,A1 ,B0 ,B1 ,C0 ,C1 等による表現である。
【0128】
装置21AはGF(qn )上の元A=(A0 ,A1 )およびB=(B0 ,B1 )の入力に対してGF(qn )上の元A−Bを出力する装置の構成の一例を表している。
装置21Aは
・GF(qn-1 )減算器21B
・GF(qn-1 )減算器21C
からなる。
【0129】
この装置の動作をプログラムで実現する場合は、図56に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0130】
Step1:GF(qn-1 )減算器21Bは、入力のA0 およびB0 に対してC0 ←A0 −B0 を計算してC0 を出力する。
Step2:GF(qn-1 )減算器21Cは、入力のA1 およびB1 に対してC1 ←A1 −B1 を計算してC1 を出力する。
Step3:(C0 ,C1 )をA−Bとして出力する。
【0131】
一般にsi 個のGF(qi-1 )の元の組であらわされたGF(qi )の元a=(a0 ,a1 ,…,asi-1)およびb=(b0 ,b1 ,…,bsi-1)が入力されると、a−b=(a0 −b0 ,a1 −b1 ,…,asi-1−bsi-1)を演算して出力する。
GF(qn )乗算器22A
図22に「GF(qn )乗算器」を示す。
【0132】
この装置はGF(qn-1 )のm次既約多項式f(x)による拡大GF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の乗算器のGF(qn-1 )上演算装置による一構成例である。この説明では簡単のためm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
この説明および、図22においてA=(A0 ,A1 )およびB=(B0 ,B1 )およびA×B=(C0 ,C1 )は多項式基底によるGF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の元のGF(qn-1 )上の元による表現であり、1およびα(但しf(α)=0)を基底とするとそれぞれA=A0 +A1 αおよびB=B0 +B1 αおよびA×B=C0 +C1 αを意味している。
【0133】
装置22AはGF(qn )=GF(qn-1 )〔x〕/(x2 −sn x−tn )(f(x)=x2 −sn x−tn )上の元A=(A0 ,A1 )およびB=(B0 ,B1 )の入力に対してGF(qn )上の元A×Bを出力する装置の構成の一例を表している。
A×B=(A0 +A1 )(B0 +B1 α)=C0 +C1 αに対し3/4法を適用すると、
A×B=A0 B0 +((A0 +A1 )(B0 +B1 )−A0 B0 −A1 B1 )α+A1 B1 α2 となり、f(α)=0、つまりα2 −sn α−tn =0であるからα2 =sn α+tn を3/4法を適用したA×Bのα2 の項に代入すると、つまりf(α)の剰余をとることにより、
A×B=A0 B0 +A1 B1 tn +((A0 +A1 )(B0 +B1 )−A0 B0 +(sn −1)A1 B1 )α
となり、
C0 =A0 B0 +A1 B1 tn
C1 =(A0 +A1 )(B0 +B1 )−A0 B0 +(sn −1)A1 B1
を演算すればよい。この演算を行う装置22Aは
・GF(qn-1 )乗算器22B
・GF(qn-1 )乗算器22C
・GF(qn-1 )加算器22D
・GF(qn-1 )加算器22E
・GF(qn-1 )乗算器22F
・GF(qn-1 )定数倍器22G
・GF(qn-1 )減算器22H
・GF(qn-1 )定数倍器22I
・GF(qn-1 )加算器22J
・GF(qn-1 )加算器22K
からなる。
【0134】
GF(qn-1 )定数倍器22Gは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成されGF(qn-1 )上のtn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0135】
GF(qn-1 )定数倍器22Iは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上の(sn −1)倍を加減算程度の速度か、それよりも高速に計算できる。
【0136】
この装置の動作をプログラムで実現する場合は、図57に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0137】
Step1:GF(qn-1 )乗算器22Bは入力のA0 およびB0 に対してL0 ←A0 ×B0 を計算してL0 を出力する。
Step2:GF(qn-1 )加算器22Dは入力のA0 およびA1 に対してL1 ←A0 +A1 を計算してL1 を出力する。
Step3:GF(qn-1 )加算器22Eは入力のB0 およびB1 に対してL2 ←B0 +B1 を計算してL2 を出力する。
【0138】
Step4:GF(qn-1 )乗算器22Cは入力のA1 およびB1 に対してL3 ←A1 ×B1 を計算してL3 を出力する。
Step5:GF(qn-1 )乗算器22Fは入力のL1 およびL2 に対してL4 ←L1 ×L2 を計算してL4 を出力する。
Step6:GF(qn-1 )定数倍器22Gは入力のL3 に対してL5 ←tn L3 を計算してL5 を出力する。
【0139】
Step7:GF(qn-1 )減算器22Hは入力のL0 およびL4 に対してL6 ←L4 −L0 を計算してL6 を出力する。
Step8:GF(qn-1 )定数倍器22Iは入力のL3 に対してL7 ←(sn −1)L3 を計算してL7 を出力する。
Step9:GF(qn-1 )加算器22Jは入力のL0 およびL5 に対してC0 ←L0 +L5 を計算してC0 を出力する。
【0140】
Step10:GF(qn-1 )加算器22Kは入力のL6 およびL7 に対してC1 ←L6 +L7 を計算してC1 を出力する。
Step11:(C0 ,C1 )をA×Bとして出力する。
なお、一般的にa=(a0 ,a1 ,…,as-1 )、b=(b0 ,b1 ,…,bs-1 )が入力され、a(α)=a0 +a1 α+a2 α2 +…+as-1 αsi-1=A0 (α)+A1 (α)αs'
b(α)=b0 +b1 α+b2 α2 +…+bs-1 αsi-1=B0 (α)+B1 (α)αs'
c(α)=c0 +c1 α+c2 α2 +…+csi-1αsi-1
とし、ただしs1 はsi /2に近い整数でAi ,Bi はs+1次以下の多項式である。この時、
)を演算する。
【0141】
この際3/4法を適用し、かつmod f(α)をとることによりα2s' の項はαs'の項となり、f(x)が2次式の場合と同様にGF(qi-1 )上の乗算回数を約3/4にすることができる。
GF(qn )乗算器23A
図23に「GF(qn )乗算器」(正規基底)の例を示す。
【0142】
この装置はGF(qn-1 )のm次拡大GF(qn )=GF(qn-1 m )上の乗算器のGF(qn-1 )上演算装置による一構成例である。
この説明では特にm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
この説明および、図23においてA=(A0 ,A1 )およびB=(B0 ,B1 )およびA×B=(C0 ,C1 )は正規基底によるGF(qn )=GF(qn-1 m )上の元のGF(qn-1 )上の元による表現であり、基底をα0 およびα1 とするとそれぞれA=A0 α0 +A1 α1 およびB=B0 α0 +B1 α1 およびA×B=C0 α0 +C1 α1 を意味している。
【0143】
全ての基底を解にもつGF(qn-1 )上m次既約多項式をf(x)=x2 −sn x−tn とする。
装置23AはGF(qn )=GF(qn-1 m )上の元A=(A0 ,A1 )およびB=(B0 ,B1 )の入力に対してGF(qn )上の元A×Bを出力する装置の構成の一例を表している。
【0144】
装置23Aは
・GF(qn-1 )乗算器23B
・GF(qn-1 )乗算器23C
・GF(qn-1 )減算器23D
・GF(qn-1 )減算器23E
・GF(qn-1 )定数倍器23F
・GF(qn-1 )乗算器23G
・GF(qn-1 )定数倍器23H
・GF(qn-1 )定数倍器23I
・GF(qn-1 )加算器23J
・GF(qn-1 )加算器23K
からなる。
【0145】
GF(qn-1 )定数倍器23FおよびGF(qn-1 )定数倍器23Hは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のsn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0146】
GF(qn-1 )定数倍器23Iは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上の(sn -1tn )倍を加減算程度の速度か、それよりも高速に計算できる。
【0147】
この装置の動作をプログラムで実現する場合は、図58に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0148】
Step1:GF(qn-1 )乗算器23Bは入力のA0 およびB0 に対してL0 ←A0 ×B0 を計算してL0 を出力する。
Step2:GF(qn-1 )減算器23Dは入力のA0 およびA1 に対してL1 ←A0 −A1 を計算してL1 を出力する。
Step3:GF(qn-1 )減算器23Eは入力のB0 およびB1 に対してL2 ←B0 −B1 を計算してL2 を出力する。
【0149】
Step4:GF(qn-1 )乗算器23Cは入力のA1 およびB1 に対してL3 ←A1 ×B1 を計算してL3 を出力する。
Step5:GF(qn-1 )定数倍器23Fは入力のL0 に対してL4 ←sn L0 を計算してL4 を出力する。
Step6:GF(qn-1 )乗算器23Gは入力のL1 およびL2 に対してL5 ←L1 ×L2 を計算してL5 を出力する。
【0150】
Step7:GF(qn-1 )定数倍器23Hは入力のL3 に対してL6 ←sn L3 を計算してL6 を出力する。
Step8:GF(qn-1 )定数倍器23Iは入力のL5 に対してL7 ←(sn -1tn )L5 を計算してL7 を出力する。
Step9:GF(qn-1 )加算器23Jは入力のL4 およびL7 に対してC0 ←L4 +L7 を計算してC0 を出力する。
【0151】
Step10:GF(qn-1 )加算器23Kは入力のL6 およびL7 に対してC1 ←L6 +L7 を計算してC1 を出力する。
Step11:(C0 ,C1 )をA×Bとして出力する。
一般にa=(a0 ,a1 ,…,asi-1)、b=(b0 ,b1 ,…,bsi-1)が入力された場合は、
【0152】
【数12】
とし、ただしs’はqsi/2に近い整数、Ai ,Bi はs’次以下の多項式とし、
を演算する。
【0153】
この場合もこの式にf(α)の剰余をとり、α2s'-1 の項をαs'の項として乗算回数を減らすことができる。
GF(qn )自乗器24A
図24に「GF(qn )自乗器」の例を示す。
この装置はGF(qn-1 )上のm次既約多項式f(x)による拡大GF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の自乗器のGF(qn-1 )上演算装置による一構成例である。この説明では簡単のためm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
【0154】
この説明および、図24においてA=(A0 ,A1 )およびA2 =(C0 ,C1 )は多項式基底によるGF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の元のGF(qn-1 )上の元による表現であり、1およびα(但しf(α)=0)を基底とするとそれぞれA=A0 +A1 αおよびA2 =C0 +C1 αを意味している。
【0155】
装置24AはGF(qn )=GF(qn-1 )〔x〕/(x2 −sn x−tn )(f(x)=x2 −sn x−tn )上の元A=(A0 ,A1 )の入力に対してGF(qn )上の元A2 を出力する装置の構成の一例を表している。A2 =C0 +C1 α=A0 2+A1 2α2 +2A0 A1 α(mod f(α))に対しα2 =sn α+tn の関係を代入するとA2 =(A0 2+tn A1 2)+(2A0 A1 +sn A1 2)αとなり、GF(qn-1 )の元でA2 を演算することができる。
【0156】
装置24Aは
・GF(qn-1 )自乗器24B
・GF(qn-1 )乗算器24C
・GF(qn-1 )自乗器24D
・GF(qn-1 )定数倍器24E
・GF(qn-1 )定数倍器24F
・GF(qn-1 )定数倍器24G
・GF(qn-1 )加算器24H
・GF(qn-1 )加算器24I
からなる。
【0157】
GF(qn-1 )定数倍器24Eは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のtn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0158】
GF(qn-1 )定数倍器24Fは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上の2倍を加減算程度の速度か、それよりも高速に計算できる。
【0159】
GF(qn-1 )定数倍器24Gは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のsn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0160】
この装置の動作をプログラムで実現する場合は、図59に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0161】
Step1:GF(qn-1 )自乗器24Bは入力のA0 に対してL0 ←A0 2を計算してL0 を出力する。
Step2:GF(qn-1 )乗算器24Cは入力のA0 およびA1 に対してL1 ←A0 ×A1 を計算してL1 を出力する。
Step3:GF(qn-1 )自乗器24Dは入力のA1 に対してL2 ←A1 2を計算してL2 を出力する。
【0162】
Step4:GF(qn-1 )定数倍器24Eは入力のL2 に対してL3 ←tn L2 を計算してL3 を出力する。
Step5:GF(qn-1 )定数倍器24Fは入力のL1 に対してL4 ←2L1 を計算してL4 を出力する。
Step6:GF(qn-1 )定数倍器24Gは入力のL2 に対してL5 ←sn L2 を計算してL5 を出力する。
【0163】
Step7:GF(qn-1 )加算器24Hは入力のL0 およびL3 に対してC0 ←L0 +L3 を計算してC0 を出力する。
Step8:GF(qn-1 )加算器24Iは入力のL4 およびL5 に対してC1 ←L4 +L5 を計算してC1 を出力する。
Step9:(C0 ,C1 )をA2 として出力する。
【0164】
一般的にはa=(a0 ,a1 ,…,asi-1)が入力され、
【0165】
【数13】
の演算を行ない、f(α)により剰余をとることによりcを求め、乗算装置で自乗を行なう場合にくらべて少ない回数のGF(qi-1 )上の乗算で自乗を演算することができる。
GF(qn )自乗器25A
図25に「GF(qn )自乗器」(多項式規定)の例を示す。
【0166】
この装置はGF(qn-1 )上のm次既約多項式f(x)による拡大GF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の自乗器のGF(qn-1 )上演算装置による一構成例である。この説明では簡単のためm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
この説明および、図25においてA=(A0 ,A1 )およびA2 =(C0 ,C1 )は多項式基底によるGF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の元のGF(qn-1 )上の元による表現であり、1およびα(但しf(α)=0)を基底とするとそれぞれA=A0 +A1 αおよびA2 =C0 +C1 αを意味している。
【0167】
装置25AはGF(qn )=GF(qn-1 )〔x〕/(x2 −sn x−tn )(f(x)=x2 −sn x−tn )上の元A=(A0 ,A1 )の入力に対してGF(qn )上の元A2 を出力する装置の構成の一例を表している。つまりA=A0 +A1 αとしてA2 =C0 +C1 αなる自乗に対し3/4法を適用し、かつα2 =sn α+tn の関係を用い、つまりf(α)の剰余演算を用いることによりこのGF(qn )自乗算器はGF(qn-1 )定数倍器およびGF(qn-1 )加算器およびGF(qn-1 )減算器およびGF(qn-1 )自乗器のみで構成されGF(qn-1 )乗算器を必要としない。
【0168】
装置25Aは
・GF(qn-1 )自乗器25B
・GF(qn-1 )加算器25C
・GF(qn-1 )自乗器25D
・GF(qn-1 )自乗器25E
・GF(qn-1 )定数倍器25F
・GF(qn-1 )減算器25G
・GF(qn-1 )定数倍器25H
・GF(qn-1 )加算器25I
・GF(qn-1 )加算器25J
からなる。
【0169】
GF(qn-1 )定数倍器25Fは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のtn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0170】
GF(qn-1 )定数倍器25Hは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上の(sn −1)倍を加減算程度の速度か、それよりも高速に計算できる。
【0171】
この装置の動作をプログラムで実現する場合は、図60に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0172】
Step1:GF(qn-1 )自乗器25Bは入力のA0 に対してL0 ←A0 2を計算してL0 を出力する。
Step2:GF(qn-1 )加算器25Cは入力のA0 およびA1 に対してL1 ←A0 +A1 を計算してL1 を出力する。
Step3:GF(qn-1 )自乗器25Dは入力のA1 に対してL2 ←A1 2を計算してL2 を出力する。
【0173】
Step4:GF(qn-1 )自乗器25Eは入力のL1 に対してL3 ←L1 2を計算してL3 を出力する。
Step5:GF(qn-1 )定数倍器25Fは入力のL2 に対してL4 ←tn L2 を計算してL4 を出力する。
Step6:GF(qn-1 )減算器25Gは入力のL0 およびL3 に対してL5 ←L3 −L0 を計算してL5 を出力する。
【0174】
Step7:GF(qn-1 )定数倍器25Hは入力のL2 に対してL6 ←(sn −1)L2 を計算してL6 を出力する。
Step8:GF(qn-1 )加算器25Iは入力のL0 およびL4 に対してC0 ←L0 +L4 を計算してC0 を出力する。
Step9:GF(qn-1 )加算器25Jは入力のL5 およびL6 に対してC1 ←L5 +L6 を計算してC1 を出力する。
【0175】
Step10:(C0 ,C1 )をA2 として出力する。
一般的にはa=(a0 ,a1 ,…,asi-1)が入力される場合は、
とし、ただしs’はsi /2に近い整数で、Ai はs’+1次以下の多項式とし、
の演算を行い、f(α)により剰余をとることによりGF(qi-1 )上の乗算の自乗におきかえ、かつ、3/4法を適用して演算回数を減少することができる。GF(qn )自乗器26A
図26に「GF(qn )自乗器」(多項式基底)の他の例を示す。
【0176】
この装置はGF(qn-1 )上のm次既約多項式f(x)による拡大GF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の自乗器のGF(qn-1 )上演算装置による一構成例である。この説明ではm=2の場合を記述する。
この説明および、図26においてA=(A0 ,A1 )およびA2 =(C0 ,C1 )は多項式基底によるGF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の元のGF(qn-1 )上の元による表現であり、1およびα(但しf(α)=0)を基底とするとそれぞれA=A0 +A1 αおよびA2 =C0 +C1 αを意味している。
【0177】
装置26AはGF(qn )=GF(qn-1 )〔x〕/(x2 −sn x−tn )(f(x)=x2 −sn x−tn )上の元A=(A0 ,A1 )の入力に対してGF(qn )上の元A2 を出力する装置の構成の一例を表している。この説明ではsn =0,tn =−u2 の場合を記述する。つまりA2 =A0 2+2A1 A0 α+A1 2α2 (mod f(α))にα2 =sn α+tn ,sn =0,tn =−u2 の関係を代入するとA2 =A0 2−u2 A1 2+2A0 A1 α=(A0 −uA1 )(A0 +uA1 )+2A0 A1 αとなり、これを演算すればよい。
【0178】
装置26Aは
・GF(qn-1 )定数倍器26B
・GF(qn-1 )加算器26C
・GF(qn-1 )減算器26D
・GF(qn-1 )乗算器26E
・GF(qn-1 )乗算器26F
・GF(qn-1 )定数倍器26G
からなる。
【0179】
GF(qn-1 )定数倍器26Bは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のtn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0180】
GF(qn-1 )定数倍器26Gは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上の(sn −1)倍を加減算程度の速度か、それよりも高速に計算できる。
【0181】
この装置の動作をプログラムで実現する場合は、図61に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0182】
Step1:GF(qn-1 )定数倍器26Bは入力のA1 に対してL0 ←uA1 を計算してL0 を出力する。
Step2:GF(qn-1 )加算器26Cは入力のA0 およびL0 に対してL1 ←A0 +L0 を計算してL1 を出力する。
Step3:GF(qn-1 )減算器26Dは入力のA0 およびL0 に対してL2 ←A0 −L0 を計算してL2 を出力する。
【0183】
Step4:GF(qn-1 )乗算器26Eは入力のA0 およびA1 に対してL3 ←A0 ×A1 を計算してL3 を出力する。
Step5:GF(qn-1 )乗算器26Fは入力のL1 およびL2 に対してC0 ←L1 ×L2 を計算してC0 を出力する。
Step6:GF(qn-1 )定数倍器26Gは入力のL3 に対してC1 ←2L3 を計算してC1 を出力する。
【0184】
Step7:(C0 ,C1 )をA2 として出力する。
GF(qn )自乗器27A
図27に「GF(qn )自乗器」(正規基底)の他の例を示す。
この装置はGF(qn-1 )のm次拡大GF(qn )=GF(qn-1 m )上の自乗器のGF(qn-1 )上演算装置による一構成例である。
【0185】
この説明では特にm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
この説明および、図27においてA=(A0 ,A1 )およびA2 =(C0 ,C1 )は正規基底によるGF(qn )=GF(qn-1 m )上の元のGF(qn-1 )上の元による表現であり、基底をα0 およびα1 とするとそれぞれA=A0 α0 +A1 α1 およびA2 =C0 α0 +C1 α1 を意味している。
【0186】
全ての基底を解にもつGF(qn-1 )上m次既約多項式をf(x)=x2 −sn x−tn とする。
装置27AはGF(qn )=GF(qn-1 m )上の元A=(A0 ,A1 )の入力に対してGF(qn )上の元A2 を出力する装置の構成の一例を表している。この装置は(A0 2sn +(A0 −A1 )2 tn /sn )α0 +(A1 2sn +(A0 −A1 )2 tn /sn )α1 を演算し、GF(qn )自乗算器はGF(qn-1 )定数倍器およびGF(qn-1 )加算器およびGF(qn-1 )減算器およびGF(qn-1 )自乗器のみで構成されGF(qn-1 )乗算器を必要としない。
【0187】
装置27Aは
・GF(qn-1 )自乗器27B
・GF(qn-1 )減算器27C
・GF(qn-1 )自乗器27D
・GF(qn-1 )自乗器27E
・GF(qn-1 )定数倍器27F
・GF(qn-1 )定数倍器27G
・GF(qn-1 )定数倍器27H
・GF(qn-1 )加算器27I
・GF(qn-1 )加算器27J
からなる。
【0188】
GF(qn-1 )定数倍器27FおよびGF(qn-1 )定数倍器27Hは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のsn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0189】
GF(qn-1 )定数倍器27Gは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上の(sn -1tn )倍を加減算程度の速度か、それよりも高速に計算できる。
【0190】
この装置の動作をプログラムで実現する場合は、図62に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0191】
Step1:GF(qn-1 )自乗器27Bは入力のA0 に対してL0 ←A0 2を計算してL0 を出力する。
Step2:GF(qn-1 )減算器27Cは入力のA0 およびA1 に対してL1 ←A0 −A1 を計算してL1 を出力する。
Step3:GF(qn-1 )自乗器27Dは入力のA1 に対してL2 ←A1 2を計算してL2 を出力する。
【0192】
Step4:GF(qn-1 )自乗器27Eは入力のL1 に対してL3 ←L1 2を計算してL3 を出力する。
Step5:GF(qn-1 )定数倍器27Fは入力のL0 に対してL4 ←sn L0 を計算してL4 を出力する。
Step6:GF(qn-1 )定数倍器27Gは入力のL3 に対してL5 ←(sn -1tn )L3 を計算してL5 を出力する。
【0193】
Step7:GF(qn-1 )定数倍器27Hは入力のL2 に対してL6 ←sn L2 を計算してL6 を出力する。
Step8:GF(qn-1 )加算器27Iは入力のL4 およびL5 に対してC0 ←L4 +L5 を計算してC0 を出力する。
Step9:GF(qn-1 )加算器27Jは入力のL5 およびL6 に対してC1 ←L5 +L6 を計算してC1 を出力する。
【0194】
Step10:(C0 ,C1 )をA2 として出力する。
このようにGF(qi-1 )上の自乗3回と定数倍(tn /sn 倍およびsn 倍)によってA2 を求めることができる。
なお一般的にa=(a0 ,a1 ,…,asi-1)が入力された場合、
【0195】
【数14】
とし、ただしs’=qsi/2に近い整数で、Ai はs’次以下の多項式とし、
を演算して、つまりGF(qi-1 )上の乗算を自乗で置きかえることができる。
【0196】
GF(qn )逆元器28A
図28に「GF(qn )逆元器」(多項式基底)の例を示す。
この装置はGF(qn-1 )上のm次既約多項式f(x)による拡大GF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の逆元器のGF(qn-1 )上演算装置による一構成例である。本説明では簡単のためm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
【0197】
この説明および、図28においてA=(A0 ,A1 )およびA-1=(C0 ,C1 )は多項式基底によるGF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の元のGF(qn-1 )上の元による表現であり、1およびα(但しf(α)=0)を基底とするとそれぞれA=A0 +A1 αおよびA-1=C0 +C1 αを意味している。
【0198】
装置28AはGF(qn )=GF(qn-1 )〔x〕/(x2 −sn x−tn )(f(x)=x2 −sn x−tn )上の元A=(A0 ,A1 )の入力に対してGF(qn )上の元A-1を出力する装置の構成の一例を表している。いま多項式基底でGF(qi )の任意の元B=(B0 ,B1 )=B0 +B1 αとし、A×B=C=A0 B0 +(A0 B1 +A1 B0 )α+A1 B1 α2 となり、f(α)の剰余をとり、つまりα2 =sn α+tn を代入すると、
A×B=(A0 B0 +tn A1 B1 )+(A0 B1 +A1 B0 +sn A1 B1 )α
となり、
C0 =A0 B0 +tn A1 B1
C1 =A0 B1 +A1 B0 +sn A1 B1
となる。これを行列で表わすと、
即ち
となり、
とすると、
【0199】
【数15】
となり、
を計算することによりA-1を求めることができる。
【0200】
装置28Aは
・GF(qn-1 )定数倍器28B
・GF(qn-1 )自乗器28C
・GF(qn-1 )加算器28D
・GF(qn-1 )乗算器28E
・GF(qn-1 )定数倍器28F
・GF(qn-1 )減算器28G
・GF(qn-1 )逆元器28H
・GF(qn-1 )乗算器28I
・GF(qn-1 )乗算器28J
・GF(qn-1 )定数倍器28K
からなる。
【0201】
GF(qn-1 )定数倍器28Bは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のsn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0202】
GF(qn-1 )定数倍器28Fは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のtn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0203】
GF(qn-1 )定数倍器28Kは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上の−1倍を加減算程度の速度か、それよりも高速に計算できる。
【0204】
この装置の動作をプログラムで実現する場合は、図63に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0205】
Step1:GF(qn-1 )定数倍器28Bは入力のA1 に対してL0 ←sn A1 を計算してL0 を出力する。
Step2:GF(qn-1 )自乗器28Cは入力のA1 に対してL1 ←A1 2を計算してL1 を出力する。
Step3:GF(qn-1 )加算器28Dは入力のA0 およびL0 に対してL2 ←A0 +L0 を計算してL2 を出力する。
【0206】
Step4:GF(qn-1 )乗算器28Eは入力のA0 およびL2 に対してL3 ←A0 L2 を計算してL3 を出力する。
Step5:GF(qn-1 )定数倍器28Fは入力のL1 に対してL4 ←tn L1 を計算してL4 を出力する。
Step6:GF(qn-1 )減算器28Gは入力のL3 およびL4 に対してL5 ←L3 −L4 を計算してL5 を出力する。
【0207】
Step7:GF(qn-1 )逆元器28Hは入力のL5 に対してL6 ←L5 -1を計算してL6 を出力する。
Step8:GF(qn-1 )乗算器28Iは入力のL2 およびL6 に対してC0 ←L2 ×L6 を計算してC0 を出力する。
Step9:GF(qn-1 )乗算器28Jは入力のL6 およびA1 に対してL7 ←L6 ×A1 を計算してL7 を出力する。
【0208】
Step10:GF(qn-1 )定数倍器28Jは入力のL7 に対してC1 ←−L7 を計算してC1 を出力する。
Step11:(C0 ,C1 )をA-1として出力する。
一般的にA=(A1 ,A2 ,…,Asi-1)が入力された場合は、任意のGF(qi )の元B=(B0 ,B1 ,…,Bsi-1)に対しC=AB=(C0 ,C1 ,…,Csi-1)として
意のbに対してなりたつような行列GをAおよび最小多項式f(x)を用いて構成し、
を演算してA-1を求める。
GF(qn )逆元器29A
図29に「GF(qn )逆元器」(正規基底)を示す。
【0209】
この装置はGF(qn-1 )のm次拡大GF(qn )=GF(qn-1 m )上の逆元器のGF(qn-1 )上演算装置による一構成例である。
この説明では特にm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
この説明および、図29においてA=(A0 ,A1 )およびA-1=(C0 ,C1 )は正規基底によるGF(qn )=GF(qn-1 m )上の元のGF(qn-1 )上の元による表現であり、基底をα0 およびα1 とするとそれぞれA=A0 α0 +A1 α1 およびA-1=C0 α0 +C1 α1 を意味している。
【0210】
全ての基底を解にもつGF(qn-1 )上m次既約多項式をf(x)=x2 −sn x−tn とする。
装置29AはGF(qn )=GF(qn-1 m )上の元A=(A0 ,A1 )の入力に対してGF(qn )上の元A-1を出力する装置の構成の一例を表している。またAの共役元A′=A1 α0 +A0 α1 とAの積、つまりノルムN=A×A′を求めるとN=A0 A1 α0 2+(A1 2+A0 2)α0 α1 +A0 A1 α1 2α0 、α1 はf(x)=x2 −sn x−tn の根であるから、α0 2=sn α0 +tn 、α1 2=sn α1 +tn の関係をNの式に代入すると、
N=A0 A1 (sn α0 +sn α1 +2tn )+(A1 2+A0 2)α1 α2
f(x)=(x−α1 )(x−α0 )の関係からtn =α1 α0 であり、これをNの式に代入すると
N=A0 A1 sn 2 −(A0 −A1 )2 tn
となる。A×A′=NであるからA-1=A′/Nであり、N=((A0 A1 sn 2 +(A0 −A1 )2 tn )-1を求め、A-1=(A1 N,A0 N)を求めればよい。
【0211】
装置29Aは
・GF(qn-1 )乗算器29B
・GF(qn-1 )減算器29C
・GF(qn-1 )定数倍器29D
・GF(qn-1 )自乗器29E
・GF(qn-1 )定数倍器29F
・GF(qn-1 )減算器29G
・GF(qn-1 )逆元器29H
・GF(qn-1 )乗算器29I
・GF(qn-1 )乗算器29J
からなる。
【0212】
GF(qn-1 )定数倍器29Dは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のsn 2 倍を加減算程度の速度か、それよりも高速に計算できる。
【0213】
GF(qn-1 )定数倍器29Fは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のtn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0214】
この装置の動作をプログラムで実現する場合は、図64を示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0215】
Step1:GF(qn-1 )乗算器29Bは入力のA0 およびA1 に対してL0 ←A0 ×A1 を計算してL0 を出力する。
Step2:GF(qn-1 )減算器29Cは入力のA0 およびA1 に対してL1 ←A0 −A1 を計算してL1 を出力する。
Step3:GF(qn-1 )定数倍器29Dは入力のL0 に対してL2 ←sn 2 L0 を計算してL2 を出力する。
【0216】
Step4:GF(qn-1 )自乗器29Eは入力のL1 に対してL3 ←L1 2を計算してL3 を出力する。
Step5:GF(qn-1 )定数倍器29Fは入力のL3 に対してL4 ←tn L3 を計算してL4 を出力する。
Step6:GF(qn-1 )減算器29Gは入力のL2 およびL4 に対してL5 ←L2 −L4 を計算してL5 を出力する。
【0217】
Step7:GF(qn-1 )逆元器29Hは入力のL5 に対してL6 ←L5 -1を計算してL6 を出力する。
Step8:GF(qn-1 )乗算器29Iは入力のA0 およびL6 に対してC1 ←A0 ×L6 を計算してC1 を出力する。
Step9:GF(qn-1 )乗算器29Jは入力のL6 およびA1 に対してC0 ←L6 ×A1 を計算してC0 を出力する。
【0218】
Step10:(C0 ,C1 )をA-1として出力する。
一般にa=(a0 ,a1 ,…,asi-1)が入力された場合はaのノルムN(a)を求めその逆数N(a)-1にaの共役元
【0219】
【数16】
を乗算すればaの逆元a -1が求まる。
GF(qi )定数倍器30A
図30に「GF(qi )定数倍器」を示す。
この装置はGF(qi-1 )のm次拡大GF(qi )=GF(qi-1 m )上の定数倍器のGF(qi-1 )上演算装置による一構成例である。
【0220】
BをGF(qi )上の定数とする。
この説明では簡単のためm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
この説明および、図30におけるA=(A0 ,A1 )およびB×A=(C0 ,C1 )等の記述はGF(qi )=GF(qi-1 m )上の元AおよびB×A等のGF(qi-1 )上の元A0 ,A1 ,C0 ,C1 等による表現である。
【0221】
装置30AはGF(qi )上の元A=(A0 ,A1 )の入力に対してGF(qi )上の元B×A(但しB∈GF(qi-1 ))を出力する装置の構成の一例を表している。
装置30Aは
・GF(qi-1 )定数倍器30B
・GF(qi-1 )定数倍器30C
からなる。
【0222】
GF(qi-1 )上のB倍はGF(qi-1 )定数倍器30BおよびGF(qi-1 )定数倍器30Cによって高速に実行可能であるとする。
この装置の動作をプログラムで実現する場合は、図65に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0223】
Step1:GF(qi-1 )定数倍器30Bは、入力のA0 に対してC0 ←B×A0 を計算してC0 を出力する。
Step2:GF(qi-1 )定数倍器30Cは、入力のA1 に対してC1 ←B×A1 を計算してC1 を出力する。
Step3:(C0 ,C1 )をB×Aとして出力する。
GF(qi )定数倍器31A
図31に「GF(qi )定数倍器」(多項式基底)を示す。
【0224】
この装置はGF(qi-1 )上のm次既約多項式f(x)による拡大GF(qi )=GF(qi-1 m )=GF(qi-1 )〔x〕/(f(x))上の定数倍器のGF(qi-1 )上演算装置による一構成例である。
BをGF(qi )上の定数とする。
この説明では簡単のためm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
【0225】
この説明および、図31においてA=(A0 ,A1 )およびB×A=(C0 ,C1 )は多項式基底によるGF(qi )=GF(qi-1 m )=GF(qi-1 )〔x〕/(f(x))上の元のGF(qi-1 )上の元による表現であり、1およびα(但しf(α)=0)を基底とするとそれぞれA=A0 +A1 αおよびB×A=C0 +C1 αを意味している。
【0226】
装置31AはGF(qi )=GF(qi-1 )〔x〕/(x2 −si x−ti )上の元A=(A0 ,A1 )の入力に対してGF(qi )上の元B×A(但しB=α)を出力する装置の構成の一例を表している。
装置31Aは
・GF(qi-1 )定数倍器31B
・GF(qi-1 )定数倍器31C
・GF(qi-1 )加算器31D
からなる。
【0227】
この装置の動作をプログラムで実現する場合は、図66に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0228】
Step1:GF(qi-1 )定数倍器31Bは入力のA1 に対してL0 ←si A1 を計算してL0 を出力する。
Step2:GF(qi-1 )定数倍器31Cは入力のA1 に対してC0 ←ti A1 を計算してC0 を出力する。
Step3:GF(qi-1 )加算器31Dは入力のA0 およびL0 に対してC1 ←A0 +L0 を計算してC1 を出力する。
【0229】
Step4:(C0 ,C1 )をB×Aとして出力する。
GF(qi )定数倍器32A
図32に「GF(qi )定数倍器」(多項式基底)の他の例を示す。
この装置はGF(qi-1 )上のm次既約多項式f(x)による拡大GF(qi )=GF(qi-1 m )=GF(qi-1 )〔x〕/(f(x))上の定数倍器のGF(qi-1 )上演算装置による一構成例である。
【0230】
BをGF(qi )上の定数とする。
この説明では簡単のためm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
この説明および、図32においてA=(A0 ,A1 )およびB×A=(C0 ,C1 )は多項式基底によるGF(qi )=GF(qi-1 m )=GF(qi-1 )〔x〕/(f(x))上の元のGF(qi-1 )上の元による表現であり、1およびα(但しf(α)=0)を基底とするとそれぞれA=A0 +A1 αおよびB×A=C0 +C1 αを意味している。
【0231】
装置32AはGF(qi )=GF(qi-1 )〔x〕/(x2 −si x−ti )上の元A=(A0 ,A1 )の入力に対してGF(qi )上の元B×A(但しB=α* ;α* はαの共役元)を出力する装置の構成の一例を表している。
装置32Aは
・GF(qi-1 )定数倍器32B
・GF(qi-1 )定数倍器32C
・GF(qi-1 )定数倍器32D
・GF(qi-1 )減算器32E
からなる。
【0232】
この装置の動作をプログラムで実現する場合は、図67に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0233】
Step1:GF(qi-1 )定数倍器32Bは入力のA0 に対してC1 ←−A0 を計算してC1 を出力する。
Step2:GF(qi-1 )定数倍器32Cは入力のA0 に対してL0 ←si A0 を計算してL0 を出力する。
Step3:GF(qi-1 )定数倍器32Dは入力のA1 に対してL1 ←ti A1 を計算してL1 を出力する。
【0234】
Step4:GF(qi-1 )減算器32Dは入力のL0 およびL1 に対してC0 ←L0 −L1 を計算してC0 を出力する。
Step5:(C0 ,C1 )をB×Aとして出力する。
GF(qi )定数倍器33A
図33に「GF(qi )定数倍器」(正規基底)を示す。
【0235】
この装置はGF(qi-1 )のm次拡大GF(qi )=GF(qi-1 m )上の定数倍器のGF(qi-1 )上演算装置による一構成例である。
BをGF(qi )上の定数とする。
この説明では特にm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
【0236】
この説明および、図33においてA=(A0 ,A1 )およびB×A=(C0 ,C1 )は正規基底によるGF(qi )=GF(qi-1 m )上の元のGF(qi-1 )上の元による表現であり、基底をα0 およびα1 とするとそれぞれA=A0 α0 +A1 α1 およびB×A=C0 α0 +C1 α1 を意味している。
全ての基底を解にもつGF(qi-1 )上m次既約多項式をf(x)=x2 −si x−ti とする。
【0237】
装置33AはGF(qi )=GF(qi-1 m )上の元A=(A0 ,A1 )の入力に対してGF(qi )上の元B×A(但しB=α0 )を出力する装置の構成の一例を表している。
装置33Aは
・GF(qi-1 )定数倍器33B
・GF(qi-1 )減算器33C
・GF(qi-1 )定数倍器33D
・GF(qi-1 )加算器33E
からなる。
【0238】
この装置の動作をプログラムで実現する場合は、図68に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0239】
Step1:GF(qi-1 )定数倍器33Bは入力のA0 に対してL0 ←si A0 を計算してL0 を出力する。
Step2:GF(qi-1 )減算器33Cは入力のA0 およびA1 に対してL1 ←A0 −A1 を計算してL1 を出力する。
Step3:GF(qi-1 )定数倍器33Dは入力のL1 に対してC1 ←(si -1ti )L1 を計算してC1 を出力する。
【0240】
Step4:GF(qi-1 )加算器33Eは入力のL0 およびC1 に対してC0 ←L0 +C1 を計算してC0 を出力する。
Step5:(C0 ,C1 )をB×Aとして出力する。
GF(qi )定数倍器34A
図34に「GF(qi )定数倍器」の他の例を示す。
【0241】
この装置はGF(qi-1 )のm次拡大GF(qi )=GF(qi-1 m )上の定数倍器の一構成例である。
BをGF(qi )上の定数とする。
装置34AはGF(qi )上の元Aの入力に対してGF(qi )上の元B×A(但しB=B0 ×B1 )を出力する装置の構成の一例を表している。
【0242】
装置34Aは
・GF(qi-1 )定数倍器34B
・GF(qi-1 )定数倍器34C
からなる。
GF(qi )定数倍器34BおよびGF(qi )定数倍器34Cは図30または図31または図32または図33または図34または図35に示すように構成されており、GF(qi )上のB0 倍およびB1 倍は高速に計算できるとする。(但し、GF(qi )定数倍器34BおよびGF(qi )定数倍器34Cの基底は全て同じか、あるいは入出力の際に適切な基底に変換されるとする。)
この装置の動作をプログラムで実現する場合は、図69に示すフロー図に従って実行する。
【0243】
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
Step1:GF(qi )定数倍器34Bは、入力のAに対してL0 ←B0 ×Aを計算してL0 を出力する。
【0244】
Step2:GF(qi )定数倍器34Cは、入力のL0 に対してC←B1 ×L0 を計算してCを出力する。
Step3:CをB×Aとして出力する。
GF(qi )定数倍器35A
図35に「GF(qi )定数倍器」の更に他の例を示す。
【0245】
この装置はGF(qi-1 )のm次拡大GF(qi )=GF(qi-1 m )上の定数倍器の一構成例である。
BをGF(qi )上の定数とする。
装置35AはGF(qi )上の元Aの入力に対してGF(qi )上の元B×A(但しB=B0 +B1 )を出力する装置の構成の一例を表している。
【0246】
装置35Aは
・GF(qi-1 )定数倍器35B
・GF(qi-1 )定数倍器35C
・GF(qi-1 )加算器35D
からなる。
【0247】
GF(qi-1 )加算器35Dは図20に示すように構成されており、GF(qi )定数倍器35BおよびGF(qi )定数倍器35Cは図30または図31または図32または図33または図34または図35に示すように構成されており、GF(qi )上のB0 倍およびB1 倍は高速に計算出来るとする。(但し、GF(qi )定数倍器35BおよびGF(qi )定数倍器35C、GF(qi )加算器35Dの各基底は全て同じか、あるいは入出力の際に適切な基底に変換されるとする。)
この装置の動作をプログラムで実現する場合は、図70に示すフロー図に従って実行する。
【0248】
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
Step1:GF(qi )定数倍器35Bは、入力のAに対してL0 ←B0 ×Aを計算してL0 を出力する。
【0249】
Step2:GF(qi )定数倍器35Cは、入力のAに対してL1 ←B1 ×Aを計算してL1 を出力する。
Step3:GF(qi )加算器35DがC←L0 +L1 を計算してCを出力する。
Step4:CをB×Aとして出力する。
GF(qn )乗算器71A
図71に「GF(qn )乗算器」(多項式基底)の他の例を示す。
【0250】
この装置はGF(qn-1 )上のm次既約多項式f(x)による拡大GF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の乗算器のGF(qn-1 )上演算装置による一構成例である。この説明では簡単のためm=2の場合を記述するが、同様の方法を一般のmでも実現できる。
この説明および、図71においてA=(A0 ,A1 )およびB=(B0 ,B1 )およびA×B=(C0 ,C1 )は多項式基底によるGF(qn )=GF(qn-1 m )=GF(qn-1 )〔x〕/(f(x))上の元のGF(qn-1 )上の元による表現であり、1およびα(但しf(α)=0)を基底とするとそれぞれA=A0 +A1 αおよびB=B0 +B1 αおよびA×B=C0 +C1 αを意味している。
【0251】
装置71AはGF(qn )=GF(qn-1 )〔x〕/(x2 −sn x−tn )上の元A=(A0 ,A1 )およびB=(B0 ,B1 )の入力に対してGF(qn )上の元A×Bを出力する装置の構成の一例を表している。
装置71Aは特にsn =1の場合を記述している。
装置71Aは
・GF(qn-1 )乗算器71B
・GF(qn-1 )乗算器71C
・GF(qn-1 )加算器71D
・GF(qn-1 )加算器71E
・GF(qn-1 )乗算器71F
・GF(qn-1 )定数倍器71G
・GF(qn-1 )減算器71H
・GF(qn-1 )加算器71J
からなる。
【0252】
GF(qn-1 )定数倍器71Gは図30(i=n−1の場合)または図31(i=n−1の場合)または図32(i=n−1の場合)または図33(i=n−1の場合)または図34(i=n−1の場合)または図35(i=n−1の場合)に示すように構成され、GF(qn-1 )上のtn 倍を加減算程度の速度か、それよりも高速に計算できる。
【0253】
この装置の動作をプログラムで実現する場合は、図72に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
【0254】
Step1:GF(qn-1 )乗算器71Bは入力のA0 およびB0 に対してL0 ←A0 ×B0 を計算してL0 を出力する。
Step2:GF(qn-1 )加算器71Dは入力のA0 およびA1 に対してL1 ←A0 +A1 を計算してL1 を出力する。
Step3:GF(qn-1 )加算器71Eは入力のB0 およびB1 に対してL2 ←B0 +B1 を計算してL2 を出力する。
【0255】
Step4:GF(qn-1 )乗算器71Cは入力のA1 およびB1 に対してL3 ←A1 ×B1 を計算してL2 を出力する。
Step5:GF(qn-1 )乗算器71Fは入力のL1 およびL2 に対してL1 ←L1 ×L2 を計算してL4 を出力する。
Step6:GF(qn-1 )定数倍器71Gは入力のL3 に対してL5 ←tn L3 を計算してL5 を出力する。
【0256】
Step7:GF(qn-1 )減算器71Hは入力のL0 およびL4 に対してC1 ←L4 −L0 を計算してC1 を出力する。
Step8:GF(qn-1 )加算器71Jは入力のL0 およびL5 に対してC0 ←L0 +L5 を計算してC0 を出力する。
Step9:(C0 ,C1 )をA×Bとして出力する。
GF(qn )除算器73A
図73に「GF(qn )除算器」の例を示す。
【0257】
この装置はGF(qn )上の除算器の一構成例である。
GF(qn )上の元A,Bの入力に対してGF(qn )上の元A/Bを出力する装置の構成の一例を表している。
装置73Aは
・GF(qn )逆元器73B
・GF(qn )乗算器73C
からなる。
【0258】
この装置の動作をプログラムで実現する場合は、図74に示すフロー図に従って実行する。
この装置では、以下のように演算が実行されるが、同時実行可能なステップは、並列に実行しても良い。また実行順序が交換可能なステップは実行順序を交換して良い。また同じ機能を持つ複数の装置による複数の演算は、装置を一元化して、順次演算を実行しても良い。
Step1:GF(qn )逆元器73Bは、入力のBに対してL0 ←B-1を計算してL0 を出力する。
【0259】
Step2:GF(qn )乗算器73Cは、入力のAおよびL0 に対してC←A×L0 を計算してCを出力する。
Step3:CをA/Bとして出力する。
上述の各実施例において、各機能をコンピュータによりプログラムを解読実行させて作用させることができる。
【0260】
【発明の効果】
GF(q0 )上の加減算および定数倍演算が乗算に比べて無視できる場合は、m次拡大体上の乗算を演算する場合、従来m2 回のGF(q0 )上乗算が必要であったのに対して、この発明(逐次2次拡大の場合)によりmのlog23乗、つまり約m1.585 回に減らす事ができた。従ってm=4の場合43.75%、m=8の場合57.81%、m=16の場合68.36%のGF(q0 )上乗算を削減する効果がある。また、m次拡大体上の逆元を演算する場合、従来、GF(q0 )上多項式に対する拡張Euclid互除法により約2(m2 −1)回のGF(q0 )上乗算が必要であったのに対してこの発明(逐次2次拡大の場合)によりm2 回に減らす事ができた。従って約50%のGF(q0 )上乗算を削減する効果がある。
【0261】
GF(q0 )上の逆元演算が高速には実行できない場合でも、必要なGF(q0 )上の逆元演算の回数が1回で済むため、GF(q0 )上の逆元演算の回数が約m回必要なGF(q0 )上多項式に対する拡張Euclid互除法と比較して約m倍速である。
これらを楕円曲線上の演算に適用すれば、m=4〜16の場合全体で約50%のGF(q0 )上乗算の削減を見込める。
【図面の簡単な説明】
【図1】楕円曲線上のk倍演算装置を示す図。
【図2】楕円曲線上の加算装置を示す図。
【図3】楕円曲線上の倍算装置を示す図。
【図4】楕円二等分点判定器(2値座標)を示す図。
【図5】楕円二等分点判定器(3値座標)を示す図。
【図6】楕円逆元器(2値座標)を示す図。
【図7】楕円逆元器(3値座標)を示す図。
【図8】楕円比較装置を示す図。
【図9】楕円比較器(affine座標)を示す図。
【図10】楕円比較器(projective座標)を示す図。
【図11】楕円比較器(jacobian座標)を示す図。
【図12】楕円加算器(affine座標)を示す図。
【図13】楕円倍算器(affine座標)を示す図。
【図14】楕円加算器(projective座標)を示す図。
【図15】楕円倍算器(projective座標)を示す図。
【図16】楕円加算器(jacobian座標)を示す図。
【図17】楕円倍算器(jacobian座標)を示す図。
【図18】この発明の要部である逐次拡大装置を示す図。
【図19】GF(qi )演算器の一般構成を示す図。
【図20】GF(qn )加算器示す図。
【図21】GF(qn )減算器示す図。
【図22】GF(qn )乗算器(多項式基底)を示す図。
【図23】GF(qn )乗算器(正規基底)を示す図。
【図24】GF(qn )自乗器(多項式基底)を示す図。
【図25】GF(qn )自乗器(多項式基底)の他の例を示す図。
【図26】GF(qn )自乗器(多項式基底)の更に他の例を示す図。
【図27】GF(qn )自乗器(正規基底)を示す図。
【図28】GF(qn )逆元器(多項式基底)を示す図。
【図29】GF(qn )逆元器(正規基底)を示す図。
【図30】GF(qi )定数倍器を示す図。
【図31】GF(qi )定数倍器(多項式基底)を示す図。
【図32】GF(qi )定数倍器(多項式基底)の他の例を示す図。
【図33】GF(qi )定数倍器(正規基底)の例を示す図。
【図34】GF(qi )定数倍器(直列)の例を示す図。
【図35】GF(qi )定数倍器(並列)の例を示す図。
【図36】楕円曲線上のk倍演算処理の流れ図。
【図37】楕円曲線上の加算処理の流れ図。
【図38】楕円曲線上の倍算処理の流れ図。
【図39】楕円二等分点判定処理(2値座標)の流れ図。
【図40】楕円二等分点判定処理(3値座標)の流れ図。
【図41】楕円逆元処理(2値座標)の流れ図。
【図42】楕円逆元処理(3値座標)の流れ図。
【図43】楕円比較処理の流れ図。
【図44】楕円比較処理(affine座標)の流れ図。
【図45】楕円比較処理(projective座標)の流れ図。
【図46】楕円比較処理(jacobian座標)の流れ図。
【図47】楕円加算処理(affine座標)の流れ図。
【図48】楕円倍算処理(affine座標)の流れ図。
【図49】楕円加算処理(projective座標)の流れ図。
【図50】楕円倍算処理(projective座標)の流れ図。
【図51】楕円加算処理(jacobian座標)の流れ図。
【図52】楕円倍算処理(jacobian座標)の流れ図。
【図53】逐次拡大処理の流れ図。
【図54】GF(qi )演算処理の流れ図。
【図55】GF(qn )加算処理の流れ図。
【図56】GF(qn )減算処理の流れ図。
【図57】GF(qn )乗算処理(多項式基底)の流れ図。
【図58】GF(qn )乗算処理(正規基底)の流れ図。
【図59】GF(qn )自乗処理(多項式基底)の流れ図。
【図60】GF(qn )自乗処理(多項式基底)の流れ図。
【図61】GF(qn )自乗処理(多項式基底)の流れ図。
【図62】GF(qn )自乗処理(正規基底)の流れ図。
【図63】GF(qn )逆元処理(多項式基底)の流れ図。
【図64】GF(qn )逆元処理(正規基底)の流れ図。
【図65】GF(qi )定数倍処理の流れ図。
【図66】GF(qi )定数倍処理(多項式基底)の流れ図。
【図67】GF(qi )定数倍処理(多項式基底)の流れ図。
【図68】GF(qi )定数倍処理(正規基底)の流れ図。
【図69】GF(qi )定数倍処理(直列)の流れ図。
【図70】GF(qi )定数倍処理(並列)の流れ図。
【図71】GF(qn )乗算器(sn =1)の構成を示す図。
【図72】GF(qn )乗算器(sn =1)の処理の流れ図。
【図73】GF(qn )除算器の構成を示す図。
【図74】GF(qn )除算器の処理の流れを示す図。
Claims (9)
- pを奇素数または奇素数のべき乗とし、mを素数でない整数とした場合における、拡大体GF(pm )上の元が入力され、拡大体GF(pm )上の元を出力する拡大体上の演算装置であって、
q0 =p,q1 =ps1,q2 =(ps1)s2,…,qz =(((ps1)s2)…)sz=p m とし、s1,s2, …,sz をm=s 1 s 2 …s z を満たす値とし、n=1,2,...,zとした場合における、GF(q n−1 )上の元によって表されたGF(q n )上の元の乗算又は自乗を3/4法を用いて行うGF(q n )演算手段を有し、
上記GF(q j )演算手段(j=2,3,...,z)における乗算又は自乗結果がGF(q j−1 )上の元の乗算又は自乗を含む場合に、この乗算又は自乗をさらに上記GF(q j−1 )演算手段が3/4法を用いて行う処理を繰り返す、
ことを特徴とする逐次拡大を用いた楕円曲線演算装置。 - 請求項1記載の演算装置であって、
上記GF(q n )演算手段は、
既約多項式x 2 −v1 n ・x−v0 n =0(v1 n 及びv0 n はGF(q n−1 )上の元)の根αに対する多項式基底{1,α}を用い、GF(q n )上の元A,B及びA×Bを、GF(q n−1 )上の元によって表現したものを、それぞれ(A 0 ,A 1 ),(B 0 ,B 1 )及び(C 0 ,C 1 )とした場合における、
入力されたA 0 およびB 0 に対してA 0 ×B 0 を計算してその演算結果L 0 を出力する第1のGF(q n−1 )乗算器と、
入力されたA 0 およびA 1 に対してA 0 +A 1 を計算してその演算結果L 1 を出力する第1のGF(q n−1 )加算器と、
入力されたB 0 およびB 1 に対してB 0 +B 1 を計算してその演算結果L 2 を出力する第2のGF(q n−1 )加算器と、
入力されたA 1 およびB 1 に対してA 1 ×B 1 を計算してその演算結果L 3 を出力する第2のGF(q n−1 )乗算器と、
入力されたL 1 およびL 2 に対してL 1 ×L 2 を計算してその演算結果L 4 を出力する第3のGF(q n−1 )乗算器と、
入力されたL 3 に対してt n ・L 3 を計算してその演算結果L 5 を出力する第1のGF(q n−1 )定数倍器と、
入力されたL 0 およびL 4 に対してL 4 −L 0 を計算してその演算結果L 6 を出力するGF(q n−1 )減算器と、
入力されたL 3 に対して(s n −1)・L 3 を計算してその演算結果L 7 を出力する第2のGF(q n−1 )定数倍器と、
入力されたL 0 およびL 5 に対してL 0 +L 5 を計算してその演算結果C 0 を出力する第3のGF(q n−1 )加算器と、
入力されたL 6 およびL 7 に対してL 6 +L 7 を計算してその演算結果C 1 を出力する第4のGF(q n−1 )加算器と、
を有するGF(q n )乗算器であることを特徴とする逐次拡大を用いた楕円曲線演算装置。 - 請求項1記載の演算装置であって、
上記GF(q n )演算手段は、
既約多項式x 2 −v1 n ・x−v0 n =0(v1 n 及びv0 n はGF(q n−1 )上の元)の根αに対する正規基底{α,α p }を用い、GF(q n )上の元A,B及びA×Bを、GF(q n−1 )上の元によって表現したものを、それぞれ(A 0 ,A 1 ),(B 0 ,B 1 )及び(C 0 ,C 1 )とした場合における、
入力されたA 0 およびB 0 に対してA 0 ×B 0 を計算してその演算結果L 0 を出力する第1のGF(q n−1 )乗算器と、
入力されたA 0 およびA 1 に対してA 0 −A 1 を計算してその演算結果L 1 を出力する第1のGF(q n−1 )減算器と、
入力されたB 0 およびB 1 に対してB 0 −B 1 を計算してその演算結果L 2 を出力する第2のGF(q n−1 )減算器と、
入力されたA 1 およびB 1 に対してA 1 ×B 1 を計算してその演算結果L 3 を出力する第2のGF(q n−1 )乗算器と、
入力されたL 0 に対してs n ・L 0 を計算してその演算結果L 4 を出力する第1のGF(q n−1 )定数倍器と、
入力されたL 1 およびL 2 に対してL 1 ×L 2 を計算してその演算結果L 5 を出力する第3のGF(q n−1 )乗算器と、
入力されたL 3 に対してs n ・L 3 を計算してその演算結果L 6 を出力する第2のGF(q n−1 )定数倍器と、
入力されたL 5 に対して(s n −1 ・t n )・L 5 を計算してその演算結果L 7 を出力する第3のGF(q n−1 )定数倍器と、
入力されたL 4 およびL 7 に対してL 4 +L 7 を計算してその演算結果C 0 を出力する第1のGF(q n−1 )加算器と、
入力されたL 6 およびL 7 に対してL 6 +L 7 を計算してその演算結果C 1 を出力する第2のGF(q n−1 )加算器と、
を有するGF(q n )乗算器であることを特徴とする逐次拡大を用いた楕円曲線演算装置。 - 請求項1記載の演算装置であって、
上記GF(q n )演算手段は、
既約多項式x 2 −v1 n ・x−v0 n =0(v1 n 及びv0 n はGF(q n−1 )上の元)の根αに対する正規基底{α,α p }を用い、GF(q n )上の元A及びA 2 を、GF(q n−1 )上の元によって表現したものを、それぞれ(A 0 ,A 1 )及び(C 0 ,C 1 )とした場合における、
入力されたA 0 に対してA 0 2 を計算してその演算結果L 0 を出力する第1のGF(q n−1 )自乗器と、
入力されたA 0 およびA 1 に対してA 0 +A 1 を計算してその演算結果L 1 を出力する第1のGF(q n−1 )加算器と、
入力されたA 1 に対してA 1 2 を計算してその演算結果L 2 を出力する第2のGF(q n−1 )自乗器と、
入力されたL 1 に対してL 1 2 を計算してその演算結果L 3 を出力する第3のGF(q n−1 )自乗器と、
入力されたL 2 に対してt n ・L 2 を計算してその演算結果L 4 を出力する第1のGF(q n−1 )定数倍器と、
入力されたL 0 およびL 3 に対してL 3 −L 0 を計算してその演算結果L 5 を出力するGF(q n−1 )減算器と、
入力されたL 2 に対して(s n −1)・L 2 を計算してその演算結果L 6 を出力する第2のGF(q n−1 )定数倍器と、
入力されたL 0 およびL 4 に対してL 0 +L 4 を計算してその演算結果C 0 を出力する第2のGF(q n−1 )加算器と、
入力されたL 5 およびL 6 に対してL 5 +L 6 を計算してその演算結果C 1 を出力する第3のGF(q n−1 )加算器と、
を有するGF(q n )自乗器であることを特徴とする逐次拡大を用いた楕円曲線演算装置。 - 請求項1記載の演算装置であって、
上記GF(q n )演算手段は、
既約多項式x 2 −v1 n ・x−v0 n =0(v1 n 及びv0 n はGF(q n−1 )上の元)の根αに対する正規基底{α,α p }を用い、GF(q n )上の元A及びA 2 を、GF(q n−1 )上の元によって表現したものを、それぞれ(A 0 ,A 1 )及び(C 0 ,C 1 )とした場合における、
入力されたA 1 に対してu・A 1 を計算してその演算結果L 0 を出力する第1のGF(q n−1 )定数倍器と、
入力されたA 0 およびL 0 に対してA 0 +L 0 を計算してその演算結果L 1 を出力するGF(q n−1 )加算器と、
入力されたA 0 およびL 0 に対してA 0 −L 0 を計算してその演算結果L 2 を出力するGF(q n−1 )減算器と、
入力されたA 0 およびA 1 に対してA 0 ×A 1 を計算してその演算結果L 3 を出力する第1のGF(q n−1 )乗算器と、
入力されたL 1 およびL 2 に対してL 1 ×L 2 を計算してその演算結果C 0 を出力する第2のGF(q n−1 )乗算器と、
入力されたL 3 に対して2・L 3 を計算してその演算結果C 1 を出力する第2のGF(q n−1 )定数倍器と、
を有するGF(q n )自乗器であることを特徴とする逐次拡大を用いた楕円曲線演算装置。 - 請求項1記載の演算装置であって、
上記GF(q n )演算手段は、
既約多項式x 2 −v1 n ・x−v0 n =0(v1 n 及びv0 n はGF(q n−1 )上の元)の根αに対する多項式基底{1,α}を用い、GF(q n )上の元A及びA 2 を、GF(q n−1 )上の元によって表現したものを、それぞれ(A 0 ,A 1 )及び(C 0 ,C 1 )とした場合における、
入力されたA 0 に対してA 0 2 を計算してその演算結果L 0 を出力する第1のGF(q n−1 )自乗器と、
入力されたA 0 およびA 1 に対してA 0 −A 1 を計算してその演算結果L 1 を出力するGF(q n−1 )減算器と、
入力されたA 1 に対してA 1 2 を計算してその演算結果L 2 を出力する第2のGF(q n−1 )自乗器と、
入力されたL 1 に対してL 1 2 を計算してその演算結果L 3 を出力する第3のGF(q n−1 )自乗器と、
入力されたL 0 に対してs n ・L 0 を計算してその演算結果L 4 を出力する第1のGF(q n−1 )定数倍器と、
入力されたL 3 に対して(s n −1 ・t n )・L 3 を計算してその演算結果L 5 を出力する第2のGF(q n−1 )定数倍器と、
入力されたL 2 に対してs n ・ L 2 を計算してその演算結果L 6 を出力する第3のGF(q n−1 )定数倍器と、
入力されたL 4 およびL 5 に対してL 4 +L 5 を計算してその演算結果C 0 を出力する第1のGF(q n−1 )加算器と、
入力されたL 5 およびL 6 に対してL 5 +L 6 を計算してその演算結果C 1 を出力する第2のGF(q n−1 )加算器と、
を有するGF(q n )自乗器であることを特徴とする逐次拡大を用いた楕円曲線演算装置。 - 請求項1から6の何れかに記載の演算装置であって、
i=n+1(n≠z)とし、既約多項式x 2 −v1 i ・x−v0 i =0(v1 i 及びv0 i はGF(q i−1 )上の元)の根αに対する正規基底{α,α p }を用い、GF(q i )上の元A及びA −1 を、GF(q i−1 )上の元によって表現したものを、それぞれ(A 0 ,A 1 )及び(C 0 ,C 1 )とした場合における、
入力されたA 1 に対してs i ・A 1 を計算してその演算結果L 0 を出力する第5のGF(q i−1 )定数倍器と、
入力されたA 1 に対してA 1 2 を計算してその演算結果L 1 を出力する第5のGF(q i−1 )自乗器と、
入力されたA 0 およびL 0 に対してA 0 +L 0 を計算してその演算結果L 2 を出力する第5のGF(q i−1 )加算器と、
入力されたA 0 およびL 2 に対してA 0 ・L 2 を計算してその演算結果L 3 を出力する第5のGF(q i−1 )乗算器と、
入力されたL 1 に対してt i ・L 1 を計算してL 4 を出力する第6のGF(q i−1 )定数倍器と、
入力されたL 3 およびL 4 に対してL 3 −L 4 を計算してその演算結果L 5 を出力する第5のGF(q i−1 )減算器と、
入力されたL 5 に対してL 5 −1 を計算してその演算結果L 6 を出力する第5のGF(q i−1 )逆元器と、
入力されたL 2 およびL 6 に対してL 2 ×L 6 を計算してその演算結果C 0 を出力する第6のGF(q i−1 )乗算器と、
入力されたL 6 およびA 1 に対してL 6 ×A 1 を計算してその演算結果L 7 を出力する第7のGF(q i−1 )乗算器と、
入力されたL 7 に対して−L 7 を計算してその演算結果C 1 を出力する第7のGF(q i−1 )定数倍器と、
を有するGF(q i )逆元器をさらに有し、
上記GF(q n )演算手段は、
上記第5のGF(q i−1 )自乗器或いは上記第5から7のGF(q i−1 )乗算器の何れかである、
ことを特徴とする逐次拡大を用いた楕円曲線演算装置。 - 請求項1から6の何れかに記載の演算装置であって、
i=n+1(n≠z)とし、既約多項式x 2 −v1 i ・x−v0 i =0(v1 i 及びv0 i はGF(q i−1 )上の元)の根αに対する正規基底{α,α p }を用い、GF(q i )上の元A及びA −1 を、GF(q i−1 )上の元によって表現したものを、それぞれ(A 0 ,A 1 )及び(C 0 ,C 1 )とした場合における、
入力されたA 0 およびA 1 に対してA 0 ×A 1 を計算してその演算結果L 0 を出力する第5のGF(q i−1 )乗算器と、
入力されたA 0 およびA 1 に対してA 0 −A 1 を計算してその演算結果L 1 を出力する第5のGF(q i−1 )減算器と、
入力されたL 0 に対してs i 2 L 0 を計算してその演算結果L 2 を出力する第5のGF(q i−1 )定数倍器と、
入力されたL 1 に対してL 1 2 を計算してその演算結果L 3 を出力する第5のGF(q i−1 )自乗器と、
入力されたL 3 に対してt i ・L 3 を計算してその演算結果L 4 を出力する第6のGF(q i−1 )定数倍器と、
入力されたL 2 およびL 4 に対してL 2 −L 4 を計算してその演算結果L 5 を出力する第6のGF(q i−1 )減算器と、
入力されたL 5 に対してL 5 −1 を計算してその演算結果L 6 を出力する第5のGF(q i−1 )逆元器と、
入力されたA 0 およびL 6 に対してA 0 ×L 6 を計算してその演算結果C 1 を出力する第6のGF(q i−1 )乗算器と、
入力されたL 6 およびA 1 に対してL 6 ×A 1 を計算してその演算結果C 0 を出力する第7のGF(q i−1 )乗算器と、
を有するGF(q i )逆元器をさらに有し、
上記GF(q n )演算手段は、
上記第5のGF(q i−1 )自乗器或いは上記第5から7のGF(q i−1 )乗算器の何れかである、
ことを特徴とする逐次拡大を用いた楕円曲線演算装置。 - 請求項1から8の何れかに記載の演算装置としてコンピュータを機能させ るためのプログラムを格納したコンピュータ読取り可能なプログラム記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP23012399A JP3639153B2 (ja) | 1999-08-16 | 1999-08-16 | 逐次拡大を用いた楕円曲線演算装置及びプログラム記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP23012399A JP3639153B2 (ja) | 1999-08-16 | 1999-08-16 | 逐次拡大を用いた楕円曲線演算装置及びプログラム記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001051598A JP2001051598A (ja) | 2001-02-23 |
JP3639153B2 true JP3639153B2 (ja) | 2005-04-20 |
Family
ID=16902937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP23012399A Expired - Lifetime JP3639153B2 (ja) | 1999-08-16 | 1999-08-16 | 逐次拡大を用いた楕円曲線演算装置及びプログラム記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3639153B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2796177B1 (fr) * | 1999-07-09 | 2001-10-12 | Oberthur Card Systems Sas | Procede de cryptographie mis en oeuvre entre deux entites echangeant des informations |
JP2002304120A (ja) * | 2001-04-06 | 2002-10-18 | Japan Science & Technology Corp | 楕円曲線暗号の処理方法および装置 |
JP4724200B2 (ja) * | 2008-04-17 | 2011-07-13 | 株式会社東芝 | べき乗計算装置及びプログラム |
-
1999
- 1999-08-16 JP JP23012399A patent/JP3639153B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2001051598A (ja) | 2001-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Latorre et al. | A canonical duality approach for the solution of affine quasi-variational inequalities | |
JP4351987B2 (ja) | モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム | |
JP3639153B2 (ja) | 逐次拡大を用いた楕円曲線演算装置及びプログラム記録媒体 | |
Azarderakhsh et al. | EdSIDH: supersingular isogeny Diffie-Hellman key exchange on Edwards curves | |
JP3551853B2 (ja) | αYa+βXb+1=0という形の定義方程式をもつ代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体 | |
Guo et al. | Efficient scalar multiplication of ECC using SMBR and fast septuple formula for IoT | |
CN113467752B (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
Anagreh et al. | Accelerate Performance for Elliptic Curve Scalar Multiplication based on NAF by Parallel Computing. | |
Gopal et al. | Fast and constant-time implementation of modular exponentiation | |
Al-Haija et al. | Cost-effective design for binary Edwards elliptic curves crypto-processor over GF (2N) using parallel multipliers and architectures | |
JP2022160985A (ja) | 同型暗号文に対する非多項式演算を行う装置及び方法 | |
Wu | An efficient common-multiplicand-multiplication method to the Montgomery algorithm for speeding up exponentiation | |
JP4543143B2 (ja) | 楕円曲線暗号装置、楕円曲線暗号演算方法 | |
JP4223819B2 (ja) | べき乗剰余演算装置及びそのプログラム | |
JP3145368B2 (ja) | 楕円曲線演算装置、演算方法及びその方法を実施するプログラムを記録した記録媒体 | |
Realpe-Muñoz et al. | High-performance elliptic curve cryptoprocessors over GF (2^ m) GF (2 m) on Koblitz curves | |
JP4850884B2 (ja) | べき乗剰余演算器 | |
KR100257124B1 (ko) | 공통 피승수 모듈라 곱셈을 이용한 고속 멱승 방법 | |
JP4629972B2 (ja) | ベクトル演算装置及び分割値演算装置及び楕円曲線スカラー倍演算装置及び楕円暗号演算装置及びベクトル演算方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
Pillutla et al. | High-throughput area-delay-efficient systolic multiplier over GF (2m) for a class of trinomials | |
Schramm et al. | A Vendor‐Neutral Unified Core for Cryptographic Operations in GF (p) and GF (2m) Based on Montgomery Arithmetic | |
JP4752176B2 (ja) | 一方向性関数演算方法及び装置及びプログラム | |
Lou et al. | An efficient Montgomery exponentiation algorithm by using signed-digit-recoding and folding techniques | |
US11431499B2 (en) | Finite-field division operator, elliptic curve cryptosystem having finite-field division operator and method for operating elliptic curve cryptosystem | |
JP5179933B2 (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041012 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041201 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041221 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050113 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 3639153 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080121 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090121 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090121 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100121 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110121 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110121 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120121 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130121 Year of fee payment: 8 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |