[go: up one dir, main page]

JP2004205868A - Hyperelliptic curve scalar multiplication method and apparatus - Google Patents

Hyperelliptic curve scalar multiplication method and apparatus Download PDF

Info

Publication number
JP2004205868A
JP2004205868A JP2002375843A JP2002375843A JP2004205868A JP 2004205868 A JP2004205868 A JP 2004205868A JP 2002375843 A JP2002375843 A JP 2002375843A JP 2002375843 A JP2002375843 A JP 2002375843A JP 2004205868 A JP2004205868 A JP 2004205868A
Authority
JP
Japan
Prior art keywords
scalar multiplication
unit
hyperelliptic curve
calculation
hyperelliptic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002375843A
Other languages
Japanese (ja)
Inventor
Masashi Takahashi
昌史 高橋
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2002375843A priority Critical patent/JP2004205868A/en
Publication of JP2004205868A publication Critical patent/JP2004205868A/en
Pending legal-status Critical Current

Links

Images

Abstract

【課題】高速な暗号方式における超楕円曲線のスカラー倍演算装置を提供する。
【解決手段】超楕円曲線に付随するヤコビ多様体の元Dのスカラー倍を計算する際に、事前計算において、独立に計算できる2つの計算を1組にして、それぞれの計算に1回ずつ含まれる逆元計算をモンゴメリートリックを用いて削減し、内部的に計算する必要のある整数k(=2s+h(h,sは整数))倍を[k]D=[2s]D+[h]Dを計算するのではなく[k]D=[2s-1]D+([2s-1]D+[h]D)を計算することにより2倍算を加算に置き換える、の2つの改良を行うことにより定義体上の乗算及び逆元計算回数を削減を行い、種数2の超楕円曲線に最適なスカラー倍演算装置を構成する。
【選択図】図3
A scalar multiplication device for a hyperelliptic curve in a high-speed encryption system is provided.
When calculating a scalar multiplication of an element D of a Jacobi variety associated with a hyperelliptic curve, in a pre-calculation, two sets of calculations that can be independently calculated are included in a set, and each calculation is included once in each calculation. Inverse element calculation is reduced using Montgomery trick and the integer k (= 2 s + h (h, s is an integer)) that needs to be calculated internally is multiplied by [k] D = [2 s ] D + [ Instead of calculating h] D, replace doubling with addition by calculating [k] D = [2 s-1 ] D + ([2 s-1 ] D + [h] D) By performing the improvement, the number of multiplications and inverse element calculations on the definition field is reduced, and a scalar multiplication device optimal for a genus 2 hyperelliptic curve is constructed.
[Selection diagram] FIG.

Description

【0001】
【発明の属する技術分野】
この発明は情報セキュリティ技術としての暗号技術に関するものであり、特に、有限体上の種数2の超楕円曲線を用いて実現する暗号及びデジタル署名技術において必要なスカラー倍演算装置に関するものである。
【0002】
【従来の技術】
非特許文献1には、より高い安全性が期待できる暗号化方法として超楕円曲線に付随するヤコビ多様体の離散対数問題に基づく暗号化及び復号化装置が提案されている。
【0003】
有限体Fq上の超楕円曲線とは、方程式y2+h(x)y=f(x)を満たす点(x,y)の集合として定義される。ただし、f(x)は有限体Fq上のモニックな2g+1次多項式、h(x)は有限体Fq上のg次以下の多項式、またgを超楕円曲線の種数と呼ぶ。
【0004】
超楕円曲線上の因子は超楕円曲線C上の点Piの形式和D=ΣnPPiを用いて表すことができる。ここでnPは整数でいくつかのnPは0であるとする。
【0005】
次に-P=(x,-y)をP=(x,y)の共役と呼ぶ。互いに共役となる点を含まない因子を半被約因子と呼び、
k=ΣnPを因子の重みと呼ぶ。半被約因子の内
k≦gであるものを被約因子と呼ぶ。超楕円曲線Cに付随するヤコビ多様体JC(Fq) とは、被約因子の集合で, 被約因子に対して後述する加算演算および単位元を定義することにより群構造を与えることができる。
【0006】
また、因子の表現方法として多項式のペアを用いる方法が知られている。非特許文献2によると、任意の因子D=ΣnPPは以下の条件を満たす2つの有限体Fq上の多項式a,bを用いて表すことができる。
【0007】
(1)a:モニック多項式
(2)deg(b)<deg(a)
(3)b2+hb≡f mod a
またDが被約因子である場合は条件(2)がdeg(b)<deg(a)≦gに置き換わる。これ以後、因子DをFq上の多項式の組(a,b)を用いて表す。このとき、ヤコビ多様体JC(Fq)の単位元Oは(1,0)と表される。
【0008】
超楕円曲線上の因子に対しては加算及び2倍算が定義できる。
【0009】
超楕円を種数2の曲線
y2=x5+Ax4+Bx3+Cx2+Dx+E
(A,B,C,D,E∈Fq(qは3以上の素数pの冪))に制限した場合の加算および2倍算アルゴリズムは以下の非特許文献3に詳しく述べられている。
【0010】
以下、非特許文献4に基づき、最も一般的な因子の組合せに対する加算アルゴリズムの概略を示す。
【0011】
入力: 重みが2の被約因子D1=(a1,b1),D2=(a2,b2)
出力: 被約因子D3=(a3,b3)=D1+D2
ただし、ai=x2+six+ti,bi=uix+vi,
(si,ti,ui,vi∈Fq),a1,a2は共通因子を持たず、
b1,≠-b2, b1≠0,b2≠0を満たしているとする。
【0012】
ステップ1: rを計算する。
【0013】
ステップ2: I≡r/a1 mod a2 を計算する。
【0014】
ステップ3: H≡(b2-b1)I mod a2を計算する。
【0015】
ステップ4: 中間データの計算
α1=1/rh12=rα,α3=h1 2α1 β=rα2,γ=β2をそれぞれ計算する。
【0016】
ステップ5: Hをモニック化する。
【0017】
ステップ6: J=Ha1を計算する。
【0018】
ステップ7:
a3=(H(J+2βb1))/a2-γ(f-b1 2)/a1a2を計算する。
【0019】
ステップ9:
b3≡-(α3J+b1) mod a3を計算する。
【0020】
上記アルゴリズムの演算コストは非特許文献3によると有限体Fq上の逆元計算のコストをI、乗算の計算コストをMとした場合1I+25Mとなる。
【0021】
次に非特許文献3による、2倍演算方法を示す。
【0022】
入力: 重みが2の被約因子D1=(a1,b1)、ただしgcd(a1,b1)=1.
出力: 被約因子D3=(a3,b3)=2D1
ステップ1: rを計算する。
【0023】
ステップ2: I≡2rb1 mod a1を計算する。
【0024】
ステップ3: H≡(f-b1 2)/a1 mod a1を計算する。
【0025】
ステップ4: J≡IH mod a1の計算
ステップ5: 演算法の選択する。
【0026】
Jの1次の係数j1が0であればステップ11に進み、そうでなければステップ6に進む。
【0027】
ステップ6: 中間データを計算する。
【0028】
α1=1/2(rj1),α2=2rα13=j1 2α1,
β=j1 2α1,γ=β2をそれぞれ計算する。
【0029】
ステップ7: Jをモニック化する。
【0030】
ステップ8: K=Ja1を計算する。
【0031】
ステップ9: a3=((Ja1+βb1)2-f)/a1 2を計算する。
【0032】
ステップ10: b3≡-(α3K+b1) mod a3を計算し、ステップ14に進む。
【0033】
ステップ11: K=J/(2r)を計算する。
【0034】
ステップ12: a3を計算する。
ステップ13: b3を計算し、ステップ14に進む。
【0035】
ステップ14: D3=(a3,b3)を出力する。
【0036】
2倍算アルゴリズムの計算コストは1I+29M,種数2の超楕円曲線をy2=x5+Bx3+Cx2+Dx+Eに制限した場合1I+27Mとなる。
【0037】
また、上記アルゴリズムは以下の非特許文献4において標数2の場合に拡張されている。
【0038】
この場合の最も一般的な因子の組に対する演算コストは、標数3以上の場合と同じく加算1I+25M,2倍算1I+27Mである。
【0039】
有限体Fq上で定義された超楕円曲線の離散対数問題とは、超楕円曲線に付随するヤコビ多様体JC(Fq)の位数が大きな素数で割り切れる場合にヤコビ多様体JC(Fq)に含まれる元D0をベースポイントとする。このとき、ヤコビ多様体JC(Fq)に含まれる元をD1に対して、
D1=[k]D0=D0+D0+…+Do(k回加算)
となる整数kが存在するならば、kを求めよという問題である。
【0040】
暗号の安全性は多くの元を有するヤコビ多様体に対して上記問題が非常に難しいことに依存する。
【0041】
次に上記超楕円曲線に付随するヤコビ多様体上の離散対数問題を応用した暗号化方式をまず述べる。
【0042】
(1)鍵生成
入力:超楕円曲線C,ベースポイントD0,D0の位数n
出力:鍵ペア(ds,Dp)
ステップ1: ランダムに1<d<nを満たすdsを選択し秘密鍵とする。
【0043】
ステップ2: Dp=[ds]D0を計算し公開鍵とする。
【0044】
ステップ3: 鍵ペア(ds,Dp)を出力する。
【0045】
(2)暗号化
入力: 超楕円曲線C,ベースポイントD,Dの位数n,公開鍵Dp,平文m
出力: 暗号文(C1,C2)
ステップ1: ランダムに1<r<nを満たすrを選択する。
【0046】
ステップ2: C1=[r]D0を計算する。
【0047】
ステップ3: C2=m+[r]Dpを計算する。
【0048】
ステップ4: 暗号文(C1,C2)を出力する。
【0049】
(3)復号化
入力: 超楕円曲線C,ベースポイントD,Dの位数n,秘密鍵ds,
暗号文(C1,C2)
出力: 復号文m
ステップ1: m=C2-[ds]C1を計算する。
【0050】
ステップ2: mを復号文として出力する。
【0051】
上記従来例でわかるように、超楕円曲線を用いた暗号化方式では、固定点および任意点のスカラー倍演算が必要である。
【0052】
上記k倍演算は加算演算、2倍演算を組み合わせることにより非特許文献5で示されている以下の方法で計算できる。
【0053】
従来例1: Sliding Window Method
入力: 被約因子D0, 整数
k=k0+k12+…+kd-12d-1,kj∈{0,1}
(0≦j≦d-1),正の整数r.
出力: D1=[k]D0
ステップ1: 事前計算
ステップ1.1: D[1]=D0,D[2]=[2]D0とおく。
【0054】
ステップ1.2: iが1から2r-1-1までD[2i+1]=D[2i-1]+D[2]を計算する。
【0055】
ステップ1.3: j=d-1,D1=(1,0)(=無限遠点)とおく。
【0056】
ステップ2: メインループ
ステップ2.2: kj=0であればステップ2.3に進み、そうでなければステップ2.5に進む。
【0057】
ステップ2.3: D1=[2]D1を計算する。
【0058】
ステップ2.4: j=j-1を計算しステップ2.8に進む。
ステップ2.5: tをj-t+1≦rかつkt=1を満たす最小の整数としh=(kjkj-1…kt)2とおく。
【0059】
ステップ2.6: D1=[2j-t+1]D1+D[h]を計算する。
【0060】
ステップ2.7: j=t-1を計算する。
【0061】
ステップ2.8: j≠-1であればステップ2.2に戻りj=-1であればステップ2.9に進む。
【0062】
ステップ2.9: 演算結果としてD1を出力する。
【0063】
楕円曲線を用いた場合、上記アルゴリズムの事前計算ステップの高速計算法が以下に示す非特許文献6に示されている。
【0064】
このアルゴリズムは、楕円曲線上の加算及び2倍算にそれぞれ1回ずつ含まれる逆元計算の回数をモンゴメリートリックを用いて削減することにより高速化を図るものである。
【0065】
最初にモンゴメリトリックの説明を非特許文献7に基づき行う。
【0066】
モンゴメリートリック
入力: a1,a2,…,an
出力: a1,a2,…,anの逆元 a1 -1,a2 -1,…,an -1
ステップ1: c1=a1おく。
【0067】
ステップ2: iが2からnまでステップ2.1を繰り返す。
【0068】
ステップ2.1: ci=ci-1aiを計算する。
【0069】
ステップ3: u=cn -1を計算する。
【0070】
ステップ4: i=nとおきi<0となるまで以下のステップを繰り返す。
【0071】
ステップ4.1: ai -1=ci-1uを計算する。
【0072】
ステップ4.2: u=uaiを計算する。
【0073】
ステップ4.3: i=i-2を計算する。
【0074】
ステップ5: a1 -1=uを計算する。
【0075】
ステップ6: a1 -1,a2 -1,…,an -1を出力する。
【0076】
モンゴメリートリックの計算コストは
1I+(3n-3)Mで、一般的に1Iは30M程度に相当することが知られているため、n回逆元計算することに比べて大幅な高速化が達成できる。
【0077】
次に、Affine座標を用いた楕円曲線上の加算及び2倍算にそれぞれ1回ずつ逆元計算が用いられることを利用した高速事前計算法を非特許文献6に基づき示す。
【0078】
従来例2: 高速事前計算法
入力: 楕円曲線上の点P,m=2r.
出力: P,[2]P,[3]P,[5]P,…,[m-3]P,[m-1]P.
ステップ1: [2]Pを計算する。
【0079】
ステップ2: i=1からi=r-2までステップ2.1および2.2を繰り返す。
【0080】
ステップ2.1:
([2i+1]P,[2i+3]P,…,([2i+1-1]P,([2i+1]P)をモンゴメリートリックを用いることにより1回の逆元計算で計算する。計算方法はまずi=1の場合に、P+[2]P,[2][2]Pの計算がそれぞれ独立に計算できることを利用して、それぞれに1回ずつ含まれる逆元計算をモンゴメリートリックを用いて1回にまとめることにより([3]P,[4]P)の計算を行う。i=2のステップでは、i=1の場合と同様に([5]P,[7]P,[8]P)をP+[4]P,[3]P+[4]P,[2][4]P)を計算することにより逆元計算1回で求める。以下、各Iごとに同様の計算を繰り返す。
【0081】
ステップ2.2: i=i+1を計算する。
【0082】
ステップ3: ステップ2.1と同様の手法を用いて([2r-1+1]P,
[2r-1+3]P,…,[2r-1]P)を計算する。
【0083】
ステップ4:
P,[2]P,[3]P,[5]P,…,[m-3]P,[m-1]Pを出力する。
【0084】
以上の高速事前計算法は超楕円曲線においても加算及び2倍算において逆元計算が1回含まれるため適用可能である。
【0085】
【非特許文献1】
Neal Koblitz, 「Neal Koblitz, Hyperelliptic Crypto Systems」,1989年, J.Crypto, 1989, p139-150
【非特許文献2】
D.Mumford, 「Tate lectures on theta II」,Birkhauser, 1984年, volume 43 of Progr.Math.
【非特許文献3】
高橋昌史, 「種数2の超楕円曲線の改良について」 2002年,Proc of SCIS2002 Vol1,p155-160
【非特許文献4】
杉崎大樹、松尾和人、趙晋輝、辻井重男、「標数2の有限体上の超楕円曲線に対するHarley加算アルゴリズムの拡張」、電子情報通信学会2002年 ISEC-2002-9, p49-56
【非特許文献5】
I. Blake G. Seroussi and N. Smart, 「Elliptic Curvesin Cryptography」, Canbridge U.P, 1998年London Mathematical Society Lecture Note Series, no.265
【非特許文献6】
H.Cohen, A.Miyaji and T.Ono, 「Efficient elliptic curve exponentiation using mixed coordinates」, Springer-Verlag, 1998年, Proceedings Asiacrypt'98, Lecture Notes in Computer Science 1514, p51-65
【非特許文献7】
H.Cohen, 「A course in computational algebraic number theory」, Springer-Verlag, 1993年, GTM 138
【0086】
【発明が解決しようとする課題】
超楕円曲線を用いた暗号方式では、スカラー倍演算を行う演算装置が必須である。特に任意点のスカラー倍演算は、暗号処理において負荷が大きいため、これを高速に行う必要がある。
【0087】
スカラー倍演算は加算と2倍算の組合せで構成される。加算と2倍算の組合せには自由度があり、例えばDの9倍を考えると
(1)[9]D=[8]D+D
(2)[9]D=[4]D+([4]D+D)
(3)[9]D=[3]D+[2]([3]D)
などの計算方法が考えられる。次に総演算回数を考えると(1)の場合[8(=23)]Dの計算は2倍算3回で行えるため加算1回と2倍算3回の計4回,(2)の場合は加算2回と2倍算2回の計4回、(3)の場合は加算2回と2倍算2回の計4回となり総演算数が同じでも、中で行われる加算及び2倍算の回数は異なる。このため、加算と2倍算の間に処理時間の差がある場合、処理時間が短い演算が多く現れる計算方法を用いることによりスカラー倍演算を行うことができる。
【0088】
従来例1のスカラー倍演算法は主に楕円曲線上の点のスカラー倍演算の高速化を目的に作られている。楕円曲線暗号を構成する上で最も一般的に使われている射影座標上の加算及び2倍算は加算が16M(標数3以上)または20M(標数2),2倍算が10Mと加算に比べて2倍算が高速である。このためスカラー倍演算を行う場合、加算と2倍算の回数の総数が同じアルゴリズムを用いるとするならば、2倍算の回数が多いアルゴリズムを用いるほうがスカラー倍演算は高速に実現できる。
【0089】
しかし、種数2の超楕円曲線上の因子の加算および2倍算のように加算アルゴリズムの方が高速である場合は加算および2倍算の総数が同じであれば、より多く加算を用いるアルゴリズムを用いることが望ましい。
【0090】
また、従来例2で示した高速事前計算法についても、本来の事前計算では必要のない4倍,8倍,…,2r-1倍の計算が必要となるという問題がある。Affine座標を用いた楕円曲線の場合は加算が1I+3M,2倍算が1I+4Mと逆元計算以外の演算の比率が小さいため無駄な点を計算したとしても、逆元計算削減の効果の方が大きいが種数2の超楕円曲線の場合、逆元以外の計算の負荷も大きいため、そのまま適応するのでは高速化の効果を得ることはできない。
【0091】
【課題を解決するための手段】
本発明は、種数2の超楕円曲線上の演算の場合等、加算が2倍算に比べて高速である場合において、できる限り2倍算の代わりに加算を用いることにより、スカラー倍算の処理時間の短縮を行う。
【0092】
具体的には整数kが2s+h(h,sは整数)と表されている場合、Dのk倍を従来例に基づき
[k]D=[2s]D+[h]Dを計算するのでなく
[k]D=[2s-1]D+([2s-1]D+[h]D)を計算することにより2倍算の回数を削減できることをうまく用いて、2倍算演算回数の少ないスカラー倍演算装置を構成する。また、事前計算方法を改良し従来例に比べて無駄な点の計算回数の少ない、より高速な事前計算を行う。これらの改良により高速な暗号装置を提供する。
【0093】
より具体的には、本発明は、超楕円曲線スカラー倍演算装置であって、演算対象となる超楕円曲線および演算対象データを入力する入力部と、超楕円曲線の情報を保持する超楕円曲線情報保持部と、演算対象データを保持する演算対象データ保持部と、スカラー倍演算方法を行うスカラー倍演算部と、スカラー倍演算部において内部的に用いられる加算演算部および2倍算演算部と、演算結果を保持する演算結果保持部と、演算結果を出力する出力部を備えることを特徴とする。
【0094】
さらに、本発明は、有限体上定義される種数2の超楕円曲線に付随するヤコビ多様体上のスカラー倍を高速に計算することを特徴とする。
【0095】
また、本発明は、超楕円曲線に付随するヤコビ多様体の元Dに対して,D,3[D],[5]D,[7]D,[9]D,[11]D,[13]D,[15]Dを事前計算することを特徴とする。
【0096】
また、本発明は、事前計算において独立に計算できる2つの演算に対してモンゴメリートリックを適用することにより定義体上の逆元計算回数を削減することを特徴とする。
【0097】
また、本発明は、入力に応じて事前計算結果の利用法を最適化することを特徴とする。
【0098】
また、本発明は、超楕円曲線に付随するヤコビ多様体の元Dのスカラー倍を計算する際に、内部的に計算する必要のある整数
k(=2s+h(h,sは整数))倍を
[k]D=[2s-1]D+([2s-1]D+[h]D)を計算することにより求めることを特徴とする。
【0099】
【発明の実施の形態】
図1は本実施形態を実現する超楕円曲線スカラー倍演算装置(以下演算装置)101の機能構成図である。演算装置101は、制御演算部102およびデータ保持部103から構成される。
【0100】
制御演算部102は、種数2の超楕円曲線のパラメータ、定義体情報、ヤコビ多様体上の点D0及び整数kを入力し、演算結果として[k]D0を出力する入出力部104、超楕円曲線スカラー倍演算装置101全体を制御する制御部105、スカラ倍演算を行うスカラー倍演算部106、スカラー倍演算部106を構成する整数kを16進展開する16進展開部107、ヤコビ多様体の元の演算を行う超楕円曲線演算部108から構成される。さらに超楕円曲線演算部は加算部109および2倍算部110から構成される。
【0101】
データ保持部103は入出力部104により入力された演算対象データであるヤコビ多様体の元D0および整数kを保持する演算対象データ保持部111、超楕円曲線のパラメータ、定義体情報を保持する超楕円曲線情報保持部112、スカラー倍演算を行う際の事前計算結果を保持する事前計算結果保持部113,スカラー倍演算部106で用いられる中間データを保持する中間データ保持部114、制御演算部102で計算された演算結果を保持する演算結果保持部115から構成される。次に各々の動作は制御部105により制御されているものとして動作の流れを説明する。
【0102】
入出力部104により入力された演算対象データ、超楕円曲線パラメータ、定義体情報は演算対象データ保持部111、超楕円曲線情報保持部112に保持される。
【0103】
次にスカラー倍演算部106において演算対象データ保持部111、超楕円曲線情報保持部112で保持されている情報を用いて、事前計算を行う、事前計算結果は事前計算結果保持部113において保持される。次に事前計算結果保持部113において保持されている事前計算結果を用いてスカラー倍演算部106においてスカラー倍を行う。事前計算およびスカラー倍演算における中間演算結果は必要に応じて中間データ保持部114において保持される。スカラー倍演算は図2に示すフローチャートに従って行われるものとする。
【0104】
最後に超楕円曲線スカラー倍演算装置101は入出力装置104により種数2の超楕円曲線パラメータy2+h(x)y=f(x),定義体情報,演算結果[k]D0を出力する。
【0105】
上記の演算装置は,CPUとメモリと、ハードディスク装置やその他の外部記憶装置と、キーボードなどの入力装置と、ディスプレイなどの出力装置と、外部記憶装置や入出力装置とのインターフェースを備えた、一般的な構成を有する情報処理装置上に構築することができる。
【0106】
演算部102の各処理部104〜110は、CPUがメモリにロードされたプログラム(コードまたはモジュールともいう)を実行することで、情報処理装置上に具現化されるプロセスとして実現される。また、メモリや外部記憶装置がデータ保持部103の各保持部111〜115として使用される。
【0107】
上述した各プログラムは、予め外部記憶装置に記憶され、必要に応じてメモリ上にロードされ、CPUにより実行される。上記プログラムは、可搬性の記憶媒体、例えばCD-ROMを扱う外部記憶装置を解して、必要に応じて、可搬性の記憶媒体からメモリにロードされても良いし、一旦、外部記憶装置を介して、可搬性の記憶媒体から外部記憶装置から外部記憶装置にインストールされた後、必要に応じて、外部記憶装置からメモリにロードされても良いし、さらには、図示していないネットワーク接続装置を介して、ネットワーク上の情報処理装置が読み取り可能な媒体の一種である伝送信号により、一旦外部記憶装置にダウンロードされてからメモリにロードされても良いし、あるいは、直接、ネットワーク経由でメモリにロードされても良い。
【0108】
次に図2〜4を用いて本実施形態の実施の形態及び動作を詳細に説明する。
【0109】
図2は図1において行われている処理を説明するフローチャートである。
【0110】
<ステップ201>
図2において定義体入力部201は超楕円曲線の情報として定義体となる有限体Fq及び種数2の超楕円曲線
y2+h(x)y=f(x)を入力として受け付ける。
【0111】
ここで有限体Fqの情報は、
(1)素体の場合有限体の位数として3以上の素数q
(2)拡大体の場合はq=pnを満たす素数p(標数と呼ぶ)および拡大次数n。
【0112】
<ステップ202>
演算対象データであるヤコビ多様体の元D0=(a0,b0),整数kを入力する。
【0113】
ここでヤコビ多様体の元D0は種数2の超楕円曲線を
y2+h(x)y=f(x) (deg(f)=5,deg(h)≦2)とおいた場合
deg(bi)<deg(ai)≦2 (ai,bi∈Fq[x]) および
bi 2+hbi≡f mod aiを満たす多項式の組(ai,bi)で表されるものとする。
【0114】
<ステップ202>
kD0を計算する。
【0115】
<ステップ203>
演算結果D3=(a3,b3)を出力する。
【0116】
上記ステップ202を、図3に示すスカラー倍演算部107の動作説明フローチャートを用いて詳細に説明を行う。なおヤコビ多様体の元の加算および2倍算は文献1および2に従い計算を行う。
【0117】
(1) 事前計算
<ステップ301>
整数kを
k0+k12+…+kd-12d-1,kj∈{0,1} (0≦j≦d-1)の形で表現する。
【0118】
<ステップ302>
D[1]=D0,D[2]=[2]D0とおく。
【0119】
<ステップ303>
(D[3],D[4])=([3]D,[4]D)を
[3]D=D+[2]D、[4]D=[2]D[2]を計算することにより求める。ただしそれぞれの計算で1回ずつ計算の必要のある逆元計算はモンゴメリートリックを用いて2回必要な逆元計算を1回に削減する。
【0120】
<ステップ304>
(D[5],D[7])=(D[3]+D[2],D[3]+D[4]),
(D[9],D[11])=(D[7]+D[2],D[7]+D[4]),
(D[13],D[15])=(D[11]+D[2],D[15]+D[4])
をそれぞれ計算する。なおそれぞれの組に対してステップ303で説明したモンゴメリートリックを利用した手法を適応することにより1組あたり1回の逆元計算で計算を行う。
【0121】
<ステップ305>
D1=(1,0)(=無限遠点),j=d-1とおく。
【0122】
(2) メインループ
<ステップ306>
kj=0であればステップ307に進み、そうでなければステップ309に進む。
【0123】
<ステップ307>
D1=[2]D1を計算する。
【0124】
<ステップ308>
j=j-1を計算しステップ313に進む。
【0125】
<ステップ309>
tをj-t+1≦4かつkt=1を満たす最小の整数とし
h=(kjkj-1…kt)2とおく。
【0126】
<ステップ310>
D1=[2j-t]D1を計算する。
【0127】
<ステップ311>
D2=D1+D[h]を計算する。
【0128】
<ステップ312>
D1=D1+D2を計算する。
【0129】
<ステップ313>
j=t-1を計算する。
【0130】
<ステップ314>
j≠-1であればステップ306に戻りj=-1であればステップ315に進む。
【0131】
<ステップ315>
演算結果としてD1を出力する。
【0132】
次に本実施形態を用いた鍵生成装置について説明する。
【0133】
図4は鍵生成装置を示している。
【0134】
鍵生成装置401は、制御演算部402およびデータ保持部403から構成される。
【0135】
制御演算部402は、超楕円曲線
y2+h(x)y=f(x)、ベースポイントD0及びその位数n、定義体情報を入力し、生成された鍵情報を出力する入出力部404、鍵生成装置401全体を制御する制御部405、乱数を生成する乱数生成部406、ベースポイントの整数倍を計算する超楕円曲線スカラー倍演算部407から構成される。
【0136】
データ保持部403は入出力部により入力された超楕円曲線のパラメータ、ベースポイント及びその位数、定義体情報を保持する超楕円曲線情報保持部408、制御演算部で生成された鍵情報及び超楕円曲線の情報を保持する鍵情報保持部409から構成される。次に各々の動作は制御部405により制御されているものとして動作の流れを説明する。
【0137】
入出力部404により入力された超楕円曲線パラメータ、ベースポイントD0及びその位数n、定義体情報は超楕円曲線情報保持部408と鍵情報保持部409に保持される。
【0138】
次に乱数生成部406において
0<ds<n(nはベースポイントD0の位数)を満たす乱数dsを生成しこれを秘密鍵として鍵情報保持部409で保持する。
【0139】
次に超楕円曲線スカラー倍演算部407においてベースポイントD0のds
Dp=[ds]D0を超楕円曲線演算部を用いて計算し公開鍵とし鍵情報保持部409で保持する。
【0140】
最後に鍵発行装置401は入出力装置404により超楕円曲線
y2+h(x)y=f(x),ベースポイントD0,D0の位数n,定義体情報,秘密鍵ds及び公開鍵Dpを出力する。
【0141】
次に本実施形態を用いた暗号化装置について説明する。
【0142】
図5は暗号化装置を示している。
【0143】
暗号化装置501は、制御演算部502およびデータ保持部503から構成される。
【0144】
制御演算部502は、超楕円曲線情報を入力し、生成された暗号文を出力する入出力部504、暗号化装置501全体を制御する制御部505、暗号化処理を行う暗号処理部506、また暗号処理部は乱数を生成する乱数生成部507、ヤコビ多様体の元の整数倍を計算する超楕円曲線スカラー倍演算部508から構成される。
【0145】
データ保持部503は入出力部504により入力された暗号化の対象である平文情報を保持する平文情報保持部509、同様に入出力部により入力された種数2の超楕円曲線
y2+h(x)y=f(x)、ベースポイントD0及びその位数n、定義体情報を保持する超楕円曲線情報保持部510、暗号化に用いる公開鍵を保持する鍵情報保持部511、制御演算部で生成された暗号文を保持する暗号文保持部512から構成される。次に各々の動作は制御部505により制御されているものとして動作の流れを説明する。
【0146】
入出力部504により入力された平文情報は平文情報保持部509に保持される。
【0147】
入出力部504により入力された超楕円曲線、ベースポイント及びその位数、定義体情報は超楕円曲線情報保持部510に保持される。
【0148】
入出力部504により入力された公開鍵情報は公開鍵情報保持部512に保持される。
【0149】
次に暗号化処理部506において平文情報保持部509、超楕円曲線情報保持部510、公開鍵情報保持部511で保持されている情報を用いて暗号化処理を行い暗号文を作成する。暗号化処理は図6に示すフローチャートに従って行われるものとする。
【0150】
最後に暗号化処理部506で作成された暗号文を暗号文情報保持部512に保持するとともに入出力部504より出力する。
【0151】
次の図6は図5の暗号処理部506で行われる暗号化処理のフローチャートを示す。以下公開鍵をDp,ヤコビ多様体のベースポイントを
D0,その位数をnとして説明を行う。
【0152】
<ステップ601>
0<r<nを満たす乱数rを選択する。
【0153】
<ステップ602>
暗号化対象の平文をmとして
C1=[r]D0及びC2=[r]Dp+mを計算する。
【0154】
<ステップ603>
(C1,C2)を暗号文として出力する。
【0155】
次に本実施形態を用いた復号化装置について説明する。
【0156】
図7は復号化装置を示している。
【0157】
復号化装置701は、制御演算部702およびデータ保持部703から構成される。
【0158】
制御演算部702は、超楕円曲線情報及び復号化対象の暗号文を入力し、復号された平文を出力する入出力部704、復号化装置701全体を制御する制御部705、復号化処理を行う復号処理部706、また復号処理部はヤコビ多様体の元の整数倍を計算する超楕円曲線スカラー倍演算部707から構成される。
【0159】
データ保持部703は入出力部704により入力された復号化の対象である暗号文情報を保持する暗号文情報保持部708、同様に入出力部704により入力された超楕円曲線
y2+h(x)y=f(x)、ベースポイントD0及びその位数n、定義体情報を保持する超楕円曲線情報保持部709、復号化に用いる秘密鍵を保持する秘密鍵情報保持部710、復号化処理部706で復号された平文を保持する平文情報保持部711から構成される。次に各々の動作は制御部705により制御されているものとして動作の流れを説明する。
【0160】
入出力部704により入力された暗号文情報は暗号文情報保持部708に保持される。
【0161】
入出力部704により入力された超楕円曲線パラメータ、ベースポイント及びその位数、定義体情報は超楕円曲線情報保持部709に保持される。
【0162】
入出力部704により入力された秘密鍵情報は秘密鍵情報保持部710に保持される。
【0163】
次に復号化処理部において暗号文情報保持部708、超楕円曲線情報保持部709、秘密鍵情報保持部710で保持されている情報を用いて復号化処理を行い復号文を作成する。復号化処理は図8に示すフローチャートに従って行われるものとする。
【0164】
最後に復号化処理部706で復号された平文を平文情報保持部711に保持するとともに入出力部704より出力する。
【0165】
次の図8は図7の復号処理部706で行われる復号化処理のフローチャートを示す。以下秘密鍵をds,復号化対象の暗号文を(C1,C2)として説明を行う。
【0166】
<ステップ801>
暗号文(C1,C2)およびxから、
m=C2-[ds]C1を計算する。
【0167】
<ステップ802>
mを平文として出力する。
【0168】
以上、説明を行ったように本実施形態は、超楕円曲線に付随するヤコビ多様体の元Dのスカラー倍を計算する際に、
(1)事前計算において、独立に計算できる2つの計算を1組にして、それぞれの計算に1つ含まれる逆元計算をモンゴメリートリックを用いて削減する。
【0169】
(2)内部的に計算する必要のある整数k(=2s+h(h,sは整数))倍を
[k]D=[2s]D+[h]Dを計算するのではなく
[k]D=[2s-1]D+([2s-1]D+[h]D)を計算することにより2倍算を加算に置き換える。
【0170】
の2つの改良を行うことにより定義体上の乗算及び逆元計算回数を削減を行った。
【0171】
次に、以上の工夫の具体的効果を示す。定義体上の乗算コストをM,逆元計算コストをIとした場合において、(1)を適用した事前計算の演算コストは、5I+239Mとなる。一般的には1Iは30M程度であるため、演算コストは389M程度となる。同様に従来例の事前計算部分の演算コストは442M,従来例2の高速事前計算法の演算法の演算コストは492Mとなり、従来例に比べて高速であることが示される。
【0172】
(2)の効果については、種数2の超楕円曲線に付随するヤコビ多様体の元Dのk倍を考えた場合、kがKビットとすれば従来例に比べて最大K/4-1回の2倍算を加算に置き換えることが可能になり、例えば種数2の超楕円曲線の場合、定義体上の乗算を最大K/2-2回削減できる。
【0173】
【発明の効果】
本発明により高速な暗号方式を可能にする超楕円曲線暗号装置を提供できる。
【図面の簡単な説明】
【図1】本実施形態のシステム機能構成図である。
【図2】本実施形態の動作説明フローチャートである。
【図3】本実施形態によるヤコビ多様体上のスカラー倍演算動作説明フローチャートである。
【図4】本実施形態を用いた鍵生成装置の構成図である。
【図5】本実施形態を用いた暗号化装置の構成図である。
【図6】本実施形態を用いた暗号化装置の動作説明フローチャートである。
【図7】本実施形態を用いた復号化装置の構成図である。
【図8】本実施形態を用いた復号化装置の動作説明フローチャートである。
【符号の説明】
101:超楕円曲線スカラー倍演算装置、102:制御演算部、103:データ保持部、104:入出力部、105:制御部、106:スカラー倍演算部、107:16進展開部、108:超楕円曲線演算部、109:加算演算部、110:2倍算演算部、111:演算対象データ保持部、112:超楕円曲線情報保持部、113:事前計算データ保持部、114:中間データ保持部、115:演算結果保持部、401:鍵生成装置、402:制御演算部、403:データ保持部、404:入出力部、405:制御部、406:乱数生成部、407:超楕円曲線スカラー倍演算部、408:超楕円曲線情報保持部、409:鍵情報保持部、501:暗号化装置、502:制御演算部、503:データ保持部、504:入出力部、505:制御部、506:暗号処理部、507:乱数処理部、508:超楕円曲線スカラー倍演算部、509:平文情報保持部、510:超楕円曲線情報保持部、512:公開鍵情報保持部、513:暗号文情報保持部、701:復号化装置、702:制御演算部、703:データ保持部、704:入出力部、705:制御部、706:復号処理部、707:超楕円曲線スカラー倍演算部、708:暗号文情報保持部、709:超楕円曲線情報保持部、710:公開鍵情報保持部、711:平文情報保持部。
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to an encryption technology as an information security technology, and more particularly to a scalar multiplication device required for encryption and digital signature technology realized using a genus 2 hyperelliptic curve on a finite field.
[0002]
[Prior art]
Non-Patent Document 1 proposes an encryption and decryption apparatus based on the discrete logarithm problem of a Jacobi manifold accompanying a hyperelliptic curve as an encryption method that can be expected to have higher security.
[0003]
Finite field FqThe hyperelliptic curve above is the equation yTwo+ h (x) y = f (x) is defined as a set of points (x, y). Where f (x) is a finite field FqThe above monic 2g + 1 order polynomial, h (x) is a finite field FqThe above polynomial of order g or less, and g is called the genus of the hyperelliptic curve.
[0004]
The factor on the hyperelliptic curve is the point P on the hyperelliptic curve CiForm sum D = DnPPiCan be represented by using Where nPIs an integer and some nPIs assumed to be 0.
[0005]
Next, -P = (x, -y) is called a conjugate of P = (x, y). Factors that do not include points that are conjugate to each other are called semi-reduced factors,
k = ΣnPIs called a factor weight. Of semi-reduced factors
Those for which k ≦ g are called reduced factors. Jacobi variety J associated with hyperelliptic curve CC(Fq) Is a set of irreducible factors, and a group structure can be given by defining an addition operation and an identity element described later for the irreducible factors.
[0006]
A method using a pair of polynomials is known as a factor expression method. According to Non-Patent Document 2, an arbitrary factor D = ΣnPP is two finite fields F satisfyingqIt can be expressed using the above polynomials a and b.
[0007]
(1) a: monic polynomial
(2) deg (b) <deg (a)
(3) bTwo+ hb≡f mod a
When D is a reduced factor, the condition (2) is replaced by deg (b) <deg (a) ≦ g. Thereafter, factor D is changed to FqIt is represented using the above set of polynomials (a, b). Then the Jacobi variety JC(Fq) Is represented by (1,0).
[0008]
Addition and doubling can be defined for factors on the hyperelliptic curve.
[0009]
Hyperelliptic curve of genus 2
yTwo= x5+AxFour+ BxThree+ CxTwo+ Dx + E
(A, B, C, D, E∈Fq(q is a power of a prime number p of 3 or more)) and the addition and doubling algorithms are described in detail in Non-Patent Document 3 below.
[0010]
Hereinafter, based on Non-Patent Document 4, an outline of an addition algorithm for the most common combination of factors will be described.
[0011]
Input: reduced factor D with weight 21= (a1, b1), DTwo= (aTwo, bTwo)
Output: reduced factor DThree= (aThree, bThree) = D1+ DTwo
Where ai= xTwo+ six + ti, bi= uix + vi,
(si, ti, ui, vi∈Fq), a1, aTwoHave no common factor,
b1, ≠ -bTwo, b1≠ 0, bTwoSuppose that ≠ 0 is satisfied.
[0012]
Step 1: Calculate r.
[0013]
Step 2: I≡r / a1 mod aTwo Is calculated.
[0014]
Step 3: H≡ (bTwo-b1) I mod aTwoIs calculated.
[0015]
Step 4: calculate intermediate data
α1= 1 / rh1, αTwo= rα, αThree= h1 Twoα1 β = rαTwo, γ = βTwoIs calculated respectively.
[0016]
Step 5: Monicize H
[0017]
Step 6: J = Ha1Is calculated.
[0018]
Step 7:
aThree= (H (J + 2βb1)) / aTwo-γ (f-b1 Two) / a1aTwoIs calculated.
[0019]
Step 9:
bThree≡- (αThreeJ + b1) mod aThreeIs calculated.
[0020]
According to Non-Patent Document 3, the operation cost of the above algorithm is a finite field FqIf the cost of the above inverse calculation is I and the calculation cost of the multiplication is M, then 1I + 25M.
[0021]
Next, a double calculation method according to Non-Patent Document 3 will be described.
[0022]
Input: reduced factor D with weight 21= (a1, b1), But gcd (a1, b1) = 1.
Output: reduced factor DThree= (aThree, bThree) = 2D1
Step 1: Calculate r.
[0023]
Step 2: I≡2rb1 mod a1Is calculated.
[0024]
Step 3: H≡ (f-b1 Two) / a1 mod a1Is calculated.
[0025]
Step 4: J≡IH mod a1Calculation
Step 5: Choose an arithmetic method.
[0026]
First order coefficient j of J1If is 0, proceed to step 11; otherwise, proceed to step 6.
[0027]
Step 6: Calculate intermediate data.
[0028]
α1= 1/2 (rj1), αTwo= 2rα1, αThree= j1 Twoα1,
β = j1 Twoα1, γ = βTwoIs calculated respectively.
[0029]
Step 7: Monicize J
[0030]
Step 8: K = Ja1Is calculated.
[0031]
Step 9: aThree= ((Ja1+ βb1)Two-f) / a1 TwoIs calculated.
[0032]
Step 10: bThree≡- (αThreeK + b1) mod aThreeAnd proceeds to step 14.
[0033]
Step 11: Calculate K = J / (2r).
[0034]
Step 12: aThreeIs calculated.
Step 13: bThreeAnd proceeds to step 14.
[0035]
Step 14: DThree= (aThree, bThree) Is output.
[0036]
The calculation cost of the doubling algorithm is 1I + 29M, the genus 2 hyperelliptic curve is yTwo= xFive+ BxThree+ CxTwoWhen it is limited to + Dx + E, it becomes 1I + 27M.
[0037]
Further, the above algorithm is extended to the characteristic 2 in Non-Patent Document 4 below.
[0038]
The operation cost for the most common set of factors in this case is 1I + 25M for addition and 1I + 27M for doubling as in the case of characteristic 3 or more.
[0039]
Finite field FqThe discrete logarithm problem of the hyperelliptic curve defined above is the Jacobi variety JC(FqJacobi variety J if the order of) is divisible by a large primeC(FqElement D included in)0Is the base point. Then the Jacobi variety JC(FqThe element included in) is D1Against
D1= [k] D0= D0+ D0+… + Do(add k times)
The problem is that if there is an integer k such that
[0040]
Cryptographic security depends on the fact that the above problem is very difficult for Jacobi varieties with many elements.
[0041]
Next, an encryption method applying the discrete logarithm problem on the Jacobi variety accompanying the hyperelliptic curve will be described first.
[0042]
(1) Key generation
Input: hyperelliptic curve C, base point D0, D0Order n
Output: key pair (ds, Dp)
Step 1: d satisfying 1 <d <n at randomsIs selected as the secret key.
[0043]
Step 2: Dp= [ds] D0Is calculated as a public key.
[0044]
Step 3: key pair (ds, Dp) Is output.
[0045]
(2) Encryption
Input: hyperelliptic curve C, base point D, order n of D, public key Dp, Plaintext m
Output: ciphertext (C1, CTwo)
Step 1: Randomly select r that satisfies 1 <r <n.
[0046]
Step 2: C1= [r] D0Is calculated.
[0047]
Step 3: CTwo= m + [r] DpIs calculated.
[0048]
Step 4: Ciphertext (C1, CTwo) Is output.
[0049]
(3) decryption
Input: hyperelliptic curve C, base point D, order n of D, secret key ds,
Ciphertext (C1, CTwo)
Output: decrypted text m
Step 1: m = CTwo-[ds] C1Is calculated.
[0050]
Step 2: Output m as a decrypted text.
[0051]
As can be seen from the above conventional example, the encryption method using a hyperelliptic curve requires a scalar multiplication operation of a fixed point and an arbitrary point.
[0052]
The k-times operation can be calculated by the following method shown in Non-Patent Document 5 by combining the addition operation and the doubling operation.
[0053]
Conventional example 1: Sliding window method
Input: reduced factor D0, Integer
k = k0+ k12 +… + kd-1Twod-1, kj∈ {0,1}
(0 ≦ j ≦ d-1), positive integer r.
Output: D1= [k] D0
Step 1: pre-calculation
Step 1.1: D [1] = D0, D [2] = [2] D0far.
[0054]
Step 1.2: i is 1 to 2r-1Calculate D [2i + 1] = D [2i-1] + D [2] up to -1.
[0055]
Step 1.3: j = d-1, D1= (1,0) (= infinity point).
[0056]
Step 2: main loop
Step 2.2: kjIf = 0, proceed to step 2.3; otherwise, proceed to step 2.5.
[0057]
Step 2.3: D1= [2] D1Is calculated.
[0058]
Step 2.4: Calculate j = j-1 and proceed to step 2.8.
Step 2.5: t is j-t + 1 ≦ r and ktH = (kjkj-1… Kt)Twofar.
[0059]
Step 2.6: D1= [2j-t + 1] D1Calculate + D [h].
[0060]
Step 2.7: Calculate j = t-1.
[0061]
Step 2.8: If j ≠ −1, return to step 2.2. If j = −1, proceed to step 2.9.
[0062]
Step 2.9: D as operation result1Is output.
[0063]
When an elliptic curve is used, Non-Patent Document 6 below shows a high-speed calculation method in a pre-calculation step of the above algorithm.
[0064]
This algorithm achieves high-speed processing by reducing the number of inverse calculations included in the addition and doubling operations on the elliptic curve once each using a Montgomery trick.
[0065]
First, the Montgomery trick will be described based on Non-Patent Document 7.
[0066]
Montgomery trick
Input: a1, aTwo,…, An
Output: a1, aTwo,…, AnThe inverse of a1 -1, aTwo -1,…, An -1
Step 1: c1= a1deep.
[0067]
Step 2: Repeat Step 2.1 from i to 2 to n.
[0068]
Step 2.1: ci= ci-1aiIs calculated.
[0069]
Step 3: u = cn -1Is calculated.
[0070]
Step 4: Set i = n and repeat the following steps until i <0.
[0071]
Step 4.1: ai -1= ci-1Calculate u.
[0072]
Step 4.2: u = uaiIs calculated.
[0073]
Step 4.3: Calculate i = i-2.
[0074]
Step 5: a1 -1= u is calculated.
[0075]
Step 6: a1 -1, aTwo -1,…, An -1Is output.
[0076]
The cost of Montgomery tricks is
Since it is known that 1I + (3n-3) M, and 1I is generally equivalent to about 30M, a significant speed-up can be achieved as compared with the case where the inverse calculation is performed n times.
[0077]
Next, based on Non-Patent Document 6, a high-speed pre-calculation method using the fact that inverse calculation is used once each for addition and doubling on an elliptic curve using Affine coordinates will be described.
[0078]
Conventional example 2: fast pre-calculation method
Input: Point P, m = 2 on elliptic curver.
Output: P, [2] P, [3] P, [5] P,…, [m-3] P, [m-1] P.
Step 1: [2] Calculate P.
[0079]
Step 2: Repeat steps 2.1 and 2.2 from i = 1 to i = r-2.
[0080]
Step 2.1:
([2i+1] P, [2i+3] P,…, ([2i + 1-1] P, ([2i + 1] P) is calculated in one inverse calculation by using the Montgomery trick. The calculation method is based on the fact that the calculation of P + [2] P and [2] [2] P can be performed independently in the case of i = 1. The calculation of ([3] P, [4] P) is performed by combining them once. In the step of i = 2, ([5] P, [7] P, [8] P) is converted to P + [4] P, [3] P + [4] P, [2] [4] By calculating P), the inverse element is calculated in one time. Hereinafter, the same calculation is repeated for each I.
[0081]
Step 2.2: Calculate i = i + 1.
[0082]
Step 3: Using the same method as in Step 2.1 ([2r-1+1] P,
[2r-1+3] P,…, [2r-1] Calculate P).
[0083]
Step 4:
P, [2] P, [3] P, [5] P, ..., [m-3] P, [m-1] P are output.
[0084]
The above-described high-speed pre-calculation method can be applied to a hyperelliptic curve because addition and doubling include one inverse calculation.
[0085]
[Non-patent document 1]
Neal Koblitz, `` Neal Koblitz, Hyperelliptic Crypto Systems '', 1989, J. Crypto, 1989, p139-150
[Non-patent document 2]
D. Mumford, `` Tate lectures on theta II '', Birkhauser, 1984, volume 43 of Progr.Math.
[Non-Patent Document 3]
Masafumi Takahashi, "Improvement of genus 2 hyperelliptic curve" 2002, Proc of SCIS2002 Vol1, p155-160
[Non-patent document 4]
Sugizaki Daiki, Matsuo Kazuto, Zhao Shinki, Tsujii Shigeo, "Extension of Harley Addition Algorithm for Hyperelliptic Curves on Characteristic 2 Finite Field", IEICE 2002 ISEC-2002-9, p49-56
[Non-Patent Document 5]
I. Blake G. Seroussi and N. Smart, `` Elliptic Curvesin Cryptography '', Canbridge U.P, 1998 London Mathematical Society Lecture Note Series, no.265
[Non-Patent Document 6]
H. Cohen, A. Miyaji and T. Ono, `` Efficient elliptic curve exponentiation using mixed coordinates '', Springer-Verlag, 1998, Proceedings Asiacrypt'98, Lecture Notes in Computer Science 1514, p51-65
[Non-Patent Document 7]
H. Cohen, `` A course in computational algebraic number theory '', Springer-Verlag, 1993, GTM 138
[0086]
[Problems to be solved by the invention]
In an encryption method using a hyperelliptic curve, an arithmetic device for performing a scalar multiplication operation is essential. In particular, a scalar multiplication operation at an arbitrary point has a large load in encryption processing, and therefore, it is necessary to perform the operation at high speed.
[0087]
Scalar multiplication is composed of a combination of addition and doubling. There is a degree of freedom in the combination of addition and doubling, for example, considering 9 times D
(1) [9] D = [8] D + D
(2) [9] D = [4] D + ([4] D + D)
(3) [9] D = [3] D + [2] ([3] D)
Calculation methods such as this are conceivable. Next, considering the total number of operations, in case of (1) [8 (= 2Three)] D can be calculated by doubling 3 times, so 1 addition and 3 doublings 4 times in total, in case of (2), 2 additions and 2 doublings 4 times in total, (3 In the case of), the addition and doubling are performed twice, for a total of four times, and the total number of operations is the same, but the number of additions and doublings performed therein are different. Therefore, when there is a difference in the processing time between the addition and the doubling, the scalar multiplication operation can be performed by using a calculation method in which many operations having a short processing time appear.
[0088]
The scalar multiplication method of Conventional Example 1 is mainly intended to speed up the scalar multiplication of a point on an elliptic curve. Addition and doubling on projective coordinates, which are the most commonly used in constructing elliptic curve cryptography, add 16M (characteristic 3 or more) or 20M (characteristic 2), and doubling adds 10M. The doubling is faster than. For this reason, when performing the scalar multiplication operation, if an algorithm having the same total number of times of addition and doubling is used, the scalar multiplication operation can be realized at a higher speed by using an algorithm having a larger number of doubling operations.
[0089]
However, if the addition algorithm is faster, such as the addition and doubling of factors on a genus 2 hyperelliptic curve, an algorithm that uses more additions if the total number of additions and doublings is the same It is desirable to use
[0090]
In addition, the high-speed pre-calculation method shown in the conventional example 2 is also 4 times, 8 times,.r-1There is a problem that double calculation is required. In the case of an elliptic curve using Affine coordinates, addition is 1I + 3M, doubling is 1I + 4M, and the ratio of operations other than the inverse calculation is small. Is larger, but in the case of a genus 2 hyperelliptic curve, the computational load other than the inverse is large, so that it is not possible to obtain the effect of speeding up by simply adapting it.
[0091]
[Means for Solving the Problems]
The present invention provides a method for scalar multiplication by using addition instead of doubling as much as possible in cases where addition is faster than doubling, such as in operations on genus 2 hyperelliptic curves. Reduce processing time.
[0092]
Specifically, the integer k is 2s+ h (h and s are integers), k times D based on the conventional example
[k] D = [2s] D + [h] D instead of calculating
[k] D = [2s-1] D + ([2s-1By taking advantage of the fact that the number of doubling operations can be reduced by calculating [D + [h] D), a scalar multiplication device with a small number of doubling operations is constructed. In addition, the pre-calculation method is improved, and the pre-calculation is performed at a higher speed with a smaller number of unnecessary point calculations than in the conventional example. These improvements provide a high-speed encryption device.
[0093]
More specifically, the present invention relates to a hyperelliptic curve scalar multiplication device, an input section for inputting a hyperelliptic curve to be operated on and data to be operated, and a hyperelliptic curve holding information of the hyperelliptic curve. An information holding unit, a calculation target data holding unit for holding calculation target data, a scalar multiplication unit performing a scalar multiplication operation method, an addition calculation unit and a doubling calculation unit used internally in the scalar multiplication unit , An operation result holding unit for holding the operation result, and an output unit for outputting the operation result.
[0094]
Furthermore, the present invention is characterized in that a scalar multiplication on a Jacobi manifold associated with a genus 2 hyperelliptic curve defined on a finite field is calculated at high speed.
[0095]
In addition, the present invention provides D, 3 [D], [5] D, [7] D, [9] D, [11] D, [11] D for the element D of the Jacobi variety accompanying the hyperelliptic curve. 13] D and [15] D are calculated in advance.
[0096]
Further, the present invention is characterized in that the number of inverse element calculations on a definition field is reduced by applying Montgomery trick to two operations that can be calculated independently in the pre-calculation.
[0097]
Further, the present invention is characterized in that the method of using the pre-computed result is optimized according to the input.
[0098]
In addition, the present invention provides a method for calculating a scalar multiple of the element D of a Jacobi variety associated with a hyperelliptic curve, the integers that need to be calculated internally.
k (= 2s+ h (h and s are integers) times
[k] D = [2s-1] D + ([2s-1] D + [h] D).
[0099]
BEST MODE FOR CARRYING OUT THE INVENTION
FIG. 1 is a functional configuration diagram of a super-elliptic curve scalar multiplication device (hereinafter, calculation device) 101 that realizes the present embodiment. The arithmetic device 101 includes a control arithmetic unit 102 and a data holding unit 103.
[0100]
The control calculation unit 102 calculates the parameters of the genus 2 hyperelliptic curve, the definition field information, and the point D on the Jacobi manifold.0And integer k, and [k] D0Input / output unit 104, a control unit 105 for controlling the entire hyperelliptic curve scalar multiplication device 101, a scalar multiplication unit 106 for performing scalar multiplication, and an integer k constituting the scalar multiplication unit 106 in hexadecimal expansion. The hexadecimal expansion unit 107 includes a hyperelliptic curve operation unit 108 that performs an original operation of the Jacobi variety. Further, the hyperelliptic curve operation unit includes an adding unit 109 and a doubling unit 110.
[0101]
The data holding unit 103 stores the element D of the Jacobi variety which is the operation target data input by the input / output unit 104.0And an operation target data holding unit 111 for holding an integer k, a hyperelliptic curve parameter and a hyperelliptic curve information holding unit 112 for holding definition field information, and a precalculation result holding for a precalculation result when performing a scalar multiplication operation The unit 113 includes an intermediate data holding unit 114 that holds intermediate data used in the scalar multiplication unit 106, and an operation result holding unit 115 that holds the operation result calculated by the control operation unit 102. Next, the flow of operations will be described assuming that each operation is controlled by the control unit 105.
[0102]
The calculation target data, the hyperelliptic curve parameters, and the definition information input by the input / output unit 104 are stored in the calculation target data storage unit 111 and the hyperelliptic curve information storage unit 112.
[0103]
Next, the scalar multiplication unit 106 performs a pre-calculation using the information held in the calculation target data holding unit 111 and the hyperelliptic curve information holding unit 112. The pre-calculation result is held in the pre-calculation result holding unit 113. You. Next, the scalar multiplication unit 106 performs scalar multiplication using the precalculation result held in the precalculation result holding unit 113. The intermediate calculation result in the pre-calculation and the scalar multiplication operation is held in the intermediate data holding unit 114 as necessary. The scalar multiplication operation is performed according to the flowchart shown in FIG.
[0104]
Finally, the hyperelliptic curve scalar multiplication unit 101 is operated by the input / output unit 104 to generate a genus 2 hyperelliptic curve parameter y.Two+ h (x) y = f (x), definition field information, operation result [k] D0Is output.
[0105]
The above-mentioned arithmetic unit has a general interface including a CPU, a memory, a hard disk device and other external storage devices, an input device such as a keyboard, an output device such as a display, and an external storage device and an input / output device. It can be constructed on an information processing apparatus having a general configuration.
[0106]
Each of the processing units 104 to 110 of the arithmetic unit 102 is realized as a process embodied on the information processing device when the CPU executes a program (also referred to as a code or a module) loaded into the memory. Further, a memory or an external storage device is used as each of the holding units 111 to 115 of the data holding unit 103.
[0107]
Each of the programs described above is stored in an external storage device in advance, loaded on a memory as needed, and executed by the CPU. The above-mentioned program may be loaded into a memory from a portable storage medium, if necessary, from a portable storage medium, for example, an external storage device that handles a CD-ROM. After being installed from the portable storage medium to the external storage device from the external storage device via the external storage device, the program may be loaded into the memory from the external storage device as necessary, or further, a network connection device (not shown). May be temporarily downloaded to an external storage device and then loaded into a memory by a transmission signal which is a type of a medium readable by an information processing device on a network, or may be directly loaded into a memory via a network. May be loaded.
[0108]
Next, an embodiment and operation of the present embodiment will be described in detail with reference to FIGS.
[0109]
FIG. 2 is a flowchart illustrating the processing performed in FIG.
[0110]
<Step 201>
In FIG. 2, a definition field input unit 201 is a finite field F which is a definition field as information of a hyperelliptic curve.qAnd genus 2 hyperelliptic curves
yTwo+ h (x) y = f (x) is accepted as input.
[0111]
Where the finite field FqThe information
(1) In the case of prime field Prime number q of 3 or more as the order of finite field
(2) q = p for extended fieldnA prime p (called characteristic) and an extended degree n satisfying.
[0112]
<Step 202>
The element D of the Jacobi variety that is the data to be operated on0= (a0, b0), Input the integer k.
[0113]
Where the element D of the Jacobi variety0Gives the genus 2 hyperelliptic curve
yTwo+ h (x) y = f (x) (deg (f) = 5, deg (h) ≦ 2)
deg (bi) <deg (ai) ≦ 2 (ai, bi∈Fq[x]) and
bi Two+ hbi≡f mod aiA set of polynomials (ai, bi).
[0114]
<Step 202>
kD0Is calculated.
[0115]
<Step 203>
Calculation result DThree= (aThree, bThree) Is output.
[0116]
Step 202 will be described in detail with reference to the flowchart for explaining the operation of the scalar multiplication unit 107 shown in FIG. The addition and doubling of the Jacobi variety are calculated according to References 1 and 2.
[0117]
(1) Pre-calculation
<Step 301>
Integer k
k0+ k12 +… + kd-1Twod-1, kj∈ {0,1} (0 ≦ j ≦ d-1).
[0118]
<Step 302>
D [1] = D0, D [2] = [2] D0far.
[0119]
<Step 303>
(D [3], D [4]) = ([3] D, [4] D)
[3] D = D + [2] D, [4] D = [2] D [2] However, for each inverse calculation that needs to be performed once for each calculation, the Montgomery trick is used to reduce the two required inverse calculations to one.
[0120]
<Step 304>
(D [5], D [7]) = (D [3] + D [2], D [3] + D [4]),
(D [9], D [11]) = (D [7] + D [2], D [7] + D [4]),
(D [13], D [15]) = (D [11] + D [2], D [15] + D [4])
Is calculated respectively. By applying the method using the Montgomery trick described in step 303 to each set, calculation is performed by one inverse calculation per set.
[0121]
<Step 305>
D1= (1,0) (= infinity point) and j = d-1.
[0122]
(2) Main loop
<Step 306>
kjIf = 0, proceed to step 307; otherwise, proceed to step 309.
[0123]
<Step 307>
D1= [2] D1Is calculated.
[0124]
<Step 308>
j = j-1 is calculated, and the routine proceeds to step 313.
[0125]
<Step 309>
t is j-t + 1 ≦ 4 and kt= 1 as the smallest integer that satisfies
h = (kjkj-1… Kt)Twofar.
[0126]
<Step 310>
D1= [2jt] D1Is calculated.
[0127]
<Step 311>
DTwo= D1Calculate + D [h].
[0128]
<Step 312>
D1= D1+ DTwoIs calculated.
[0129]
<Step 313>
Calculate j = t-1.
[0130]
<Step 314>
If j ≠ −1, the flow returns to step 306, and if j = −1, the flow proceeds to step 315.
[0131]
<Step 315>
D as the operation result1Is output.
[0132]
Next, a key generation device using this embodiment will be described.
[0133]
FIG. 4 shows a key generation device.
[0134]
The key generation device 401 includes a control operation unit 402 and a data holding unit 403.
[0135]
The control calculation unit 402 uses a hyperelliptic curve
yTwo+ h (x) y = f (x), base point D0The input / output unit 404 that inputs the order n and its definition body information and outputs the generated key information, the control unit 405 that controls the entire key generation device 401, the random number generation unit 406 that generates a random number, and the base point It comprises a hyperelliptic curve scalar multiplication unit 407 for calculating an integer multiple.
[0136]
The data storage unit 403 includes a hyperelliptic curve information storage unit 408 that stores the parameters of the hyperelliptic curve, the base point and its order, and the definition field information input by the input / output unit, the key information generated by the control operation unit, and the A key information holding unit 409 holds elliptic curve information. Next, the flow of operations will be described assuming that each operation is controlled by the control unit 405.
[0137]
Hyperelliptic curve parameters input by the input / output unit 404, base point D0The order n and the definition field information are stored in the hyperelliptic curve information storage unit 408 and the key information storage unit 409.
[0138]
Next, in the random number generation unit 406
0 <ds<n (n is the base point D0Random number d that satisfiessIs generated and held in the key information holding unit 409 as a secret key.
[0139]
Next, the base point D is calculated in the hyperelliptic curve scalar multiplication unit 407.0DsDouble
Dp= [ds] D0Is calculated using a hyperelliptic curve calculation unit, and held as a public key in a key information holding unit 409.
[0140]
Finally, the key issuing device 401 uses the input / output device 404 to
yTwo+ h (x) y = f (x), base point D0, D0Order n, definition field information, secret key dsAnd public key DpIs output.
[0141]
Next, an encryption device using the present embodiment will be described.
[0142]
FIG. 5 shows an encryption device.
[0143]
The encryption device 501 includes a control operation unit 502 and a data holding unit 503.
[0144]
The control operation unit 502 receives the hyperelliptic curve information and outputs the generated cipher text, an input / output unit 504, a control unit 505 that controls the entire encryption device 501, an encryption processing unit 506 that performs an encryption process, and The cryptographic processing unit includes a random number generation unit 507 for generating random numbers and a hyperelliptic curve scalar multiplication unit 508 for calculating an integer multiple of the original Jacobian variety.
[0145]
The data holding unit 503 is a plaintext information holding unit 509 for holding the plaintext information to be encrypted input by the input / output unit 504, and similarly, a genus 2 hyperelliptic curve input by the input / output unit
yTwo+ h (x) y = f (x), base point D0And an order n thereof, a hyperelliptic curve information holding unit 510 for holding definition field information, a key information holding unit 511 for holding a public key used for encryption, and a ciphertext holding for a ciphertext generated by the control operation unit. It comprises a unit 512. Next, the flow of operations will be described assuming that each operation is controlled by the control unit 505.
[0146]
The plaintext information input by the input / output unit 504 is stored in the plaintext information storage unit 509.
[0147]
The hyperelliptic curve, the base point, its order, and the definition information input by the input / output unit 504 are stored in the hyperelliptic curve information storage unit 510.
[0148]
The public key information input by the input / output unit 504 is held in the public key information holding unit 512.
[0149]
Next, the encryption processing unit 506 performs an encryption process using the information stored in the plaintext information storage unit 509, the hyperelliptic curve information storage unit 510, and the public key information storage unit 511 to create a ciphertext. The encryption process is performed according to the flowchart shown in FIG.
[0150]
Finally, the ciphertext created by the encryption processing unit 506 is held in the ciphertext information holding unit 512 and output from the input / output unit 504.
[0151]
FIG. 6 shows a flowchart of the encryption processing performed by the encryption processing unit 506 in FIG. The public key is Dp, The base point of the Jacobi variety
D0, The order is described as n.
[0152]
<Step 601>
Select a random number r that satisfies 0 <r <n.
[0153]
<Step 602>
Let m be the plaintext to be encrypted
C1= [r] D0And CTwo= [r] DpCalculate + m.
[0154]
<Step 603>
(C1, CTwo) Is output as ciphertext.
[0155]
Next, a decoding device using this embodiment will be described.
[0156]
FIG. 7 shows a decoding device.
[0157]
The decoding device 701 includes a control operation unit 702 and a data holding unit 703.
[0158]
The control operation unit 702 inputs the hyperelliptic curve information and the ciphertext to be decrypted, outputs and outputs a decrypted plaintext, a control unit 705 that controls the entire decryption device 701, and performs a decryption process. The decoding processing unit 706 and the decoding processing unit include a hyperelliptic curve scalar multiplication unit 707 that calculates an integer multiple of the original Jacobian variety.
[0159]
The data holding unit 703 is a ciphertext information holding unit 708 for holding the ciphertext information to be decrypted input by the input / output unit 704, and similarly the hyperelliptic curve input by the input / output unit 704.
yTwo+ h (x) y = f (x), base point D0And an order n thereof, a hyperelliptic curve information holding unit 709 holding definition field information, a secret key information holding unit 710 holding a secret key used for decryption, and a plaintext holding a plaintext decrypted by the decryption processing unit 706. It comprises an information holding unit 711. Next, the flow of operations will be described assuming that each operation is controlled by the control unit 705.
[0160]
The ciphertext information input by the input / output unit 704 is held in the ciphertext information holding unit 708.
[0161]
The hyperelliptic curve parameters, base points and their orders, and definition information input by the input / output unit 704 are stored in the hyperelliptic curve information storage unit 709.
[0162]
The secret key information input by the input / output unit 704 is held in the secret key information holding unit 710.
[0163]
Next, in the decryption processing unit, decryption processing is performed using the information stored in the ciphertext information storage unit 708, the hyperelliptic curve information storage unit 709, and the secret key information storage unit 710 to create a decrypted text. The decoding process is performed according to the flowchart shown in FIG.
[0164]
Finally, the plaintext decrypted by the decryption processing unit 706 is stored in the plaintext information storage unit 711 and output from the input / output unit 704.
[0165]
FIG. 8 shows a flowchart of the decoding process performed by the decoding processing unit 706 in FIG. The secret key is ds, The ciphertext to be decrypted is1, CTwo).
[0166]
<Step 801>
Ciphertext (C1, CTwo) And x,
m = CTwo-[ds] C1Is calculated.
[0167]
<Step 802>
Output m as plain text.
[0168]
As described above, in the present embodiment, when calculating the scalar multiplication of the element D of the Jacobi variety associated with the hyperelliptic curve,
(1) In the pre-calculation, two sets of calculations that can be calculated independently are combined into one set, and the inverse calculation included in each calculation is reduced using Montgomery trick.
[0169]
(2) The integer k (= 2s+ h (h and s are integers) times
[k] D = [2sInstead of calculating] D + [h] D
[k] D = [2s-1] D + ([2s-1] D + [h] D) replaces doubling with addition.
[0170]
The number of multiplications and inverse element calculations on the definition field was reduced by making two improvements.
[0171]
Next, the specific effects of the above-described device will be described. Assuming that the multiplication cost on the definition field is M and the inverse calculation cost is I, the calculation cost of the pre-calculation applying (1) is 5I + 239M. In general, since 1I is about 30M, the calculation cost is about 389M. Similarly, the operation cost of the pre-computation part of the conventional example is 442M, and the operation cost of the operation method of the high-speed pre-calculation method of the conventional example 2 is 492M, which indicates that the operation is faster than the conventional example.
[0172]
Regarding the effect of (2), when k times the element D of the Jacobi variety associated with the hyperelliptic curve of genus 2, if k is K bits, the maximum K / 4-1 It is possible to replace the doubling of the times with the addition. For example, in the case of a hyperelliptic curve of genus 2, the multiplication on the definition field can be reduced up to K / 2-2 times.
[0173]
【The invention's effect】
According to the present invention, it is possible to provide a hyperelliptic curve encryption device that enables a high-speed encryption method.
[Brief description of the drawings]
FIG. 1 is a system functional configuration diagram of the present embodiment.
FIG. 2 is a flowchart illustrating the operation of the present embodiment.
FIG. 3 is a flowchart illustrating a scalar multiplication operation on a Jacobi manifold according to the embodiment;
FIG. 4 is a configuration diagram of a key generation device using the present embodiment.
FIG. 5 is a configuration diagram of an encryption device using the present embodiment.
FIG. 6 is a flowchart illustrating the operation of an encryption device using the present embodiment.
FIG. 7 is a configuration diagram of a decoding device using the present embodiment.
FIG. 8 is a flowchart illustrating the operation of a decoding device using the present embodiment.
[Explanation of symbols]
101: super elliptic curve scalar multiplication device, 102: control operation unit, 103: data holding unit, 104: input / output unit, 105: control unit, 106: scalar multiplication unit, 107: hexadecimal expansion unit, 108: super Elliptic curve calculation unit, 109: addition calculation unit, 110: doubling calculation unit, 111: calculation target data storage unit, 112: hyperelliptic curve information storage unit, 113: pre-calculation data storage unit, 114: intermediate data storage unit , 115: calculation result holding unit, 401: key generation device, 402: control calculation unit, 403: data holding unit, 404: input / output unit, 405: control unit, 406: random number generation unit, 407: hyperelliptic curve scalar multiple Operation unit, 408: Hyperelliptic curve information storage unit, 409: Key information storage unit, 501: Encryption device, 502: Control operation unit, 503: Data storage unit, 504: Input / output unit, 505: Control unit, 506: Cryptographic processing unit, 507: random number processing unit, 508: superelliptic curve scalar multiplication unit, 509: plaintext information holding unit, 510: superelliptic curve information holding unit, 512: public key information holding unit, 513: ciphertext information holding Part, 701: decryption equipment 702: control operation unit, 703: data storage unit, 704: input / output unit, 705: control unit, 706: decryption processing unit, 707: hyperelliptic curve scalar multiplication unit, 708: ciphertext information storage unit, 709 : Super elliptic curve information storage unit, 710: public key information storage unit, 711: plaintext information storage unit.

Claims (6)

超楕円曲線スカラー倍演算装置であって、
演算対象となる超楕円曲線および演算対象データの入力を受け付ける入力部と、
超楕円曲線の情報を保持する超楕円曲線情報保持部と、
演算対象データを保持する演算対象データ保持部と、
加算演算部および2倍算演算部を備え、スカラー倍演算方法を行うスカラー倍演算部と、
演算結果を保持する演算結果保持部と、
演算結果を出力する出力部を備える超楕円曲線スカラー倍演算装置。
A hyperelliptic curve scalar multiplication device,
An input unit that receives input of a hyperelliptic curve to be operated on and data to be operated on,
A hyperelliptic curve information storage unit for storing information on the hyperelliptic curve,
A calculation target data holding unit for holding calculation target data;
A scalar multiplication unit that includes an addition operation unit and a doubling operation unit and performs a scalar multiplication operation method;
An operation result holding unit that holds an operation result;
A super-elliptic curve scalar multiplication device having an output section for outputting a calculation result.
請求項1記載の超楕円曲線スカラー倍演算装置であって、
有限体上定義される種数2の超楕円曲線に付随するヤコビ多様体上のスカラー倍を高速に計算することを特徴とする超楕円曲線スカラー倍演算装置。
A hyperelliptic curve scalar multiplication device according to claim 1,
A super-elliptic curve scalar multiplication device for quickly calculating a scalar multiplication on a Jacobi manifold associated with a genus 2 super-elliptic curve defined on a finite field.
請求項1記載の超楕円曲線スカラー倍演算装置であって、
超楕円曲線に付随するヤコビ多様体の元Dに対して,
D,3[D],[5]D,[7]D,[9]D,[11]D,[13]D,[15]Dを事前計算することを特徴とする超楕円曲線スカラー倍演算装置。
A hyperelliptic curve scalar multiplication device according to claim 1,
For the element D of the Jacobi variety associated with the hyperelliptic curve,
Hyperelliptic curve scalar multiplication characterized by precalculating D, 3 [D], [5] D, [7] D, [9] D, [11] D, [13] D, [15] D Arithmetic unit.
請求項1記載の超楕円曲線スカラー倍演算装置であって、
事前計算において独立に計算できる2つの演算に対してモンゴメリートリックを適用することにより定義体上の逆元計算回数を削減することを特徴とする超楕円曲線スカラー倍演算装置。
A hyperelliptic curve scalar multiplication device according to claim 1,
A super-elliptic curve scalar multiplication device that reduces the number of inverse element calculations on a definition field by applying a Montgomery trick to two operations that can be independently calculated in a pre-calculation.
請求項1記載の超楕円曲線スカラー倍演算装置であって、
入力に応じて事前計算結果の利用法を最適化することを特徴とする超楕円曲線スカラー倍演算装置。
A hyperelliptic curve scalar multiplication device according to claim 1,
A super-elliptic curve scalar multiplication device, which optimizes the use of a pre-computed result according to an input.
請求項1記載の超楕円曲線スカラー倍演算装置であって、
超楕円曲線に付随するヤコビ多様体の元Dのスカラー倍を計算する際に、内部的に計算する必要のある整数
k(=2s+h(h,sは整数))倍を
[k]D=[2s-1]D+([2s-1]D+[h]D)を計算することにより求めることを特徴とする超楕円曲線スカラー倍演算装置。
A hyperelliptic curve scalar multiplication device according to claim 1,
Integers that need to be computed internally when computing the scalar multiple of the element D of the Jacobi variety associated with the hyperelliptic curve
k (= 2 s + h (h and s are integers)) times
A super-elliptic curve scalar multiplication device, which is obtained by calculating [k] D = [2 s-1 ] D + ([2 s-1 ] D + [h] D).
JP2002375843A 2002-12-26 2002-12-26 Hyperelliptic curve scalar multiplication method and apparatus Pending JP2004205868A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002375843A JP2004205868A (en) 2002-12-26 2002-12-26 Hyperelliptic curve scalar multiplication method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002375843A JP2004205868A (en) 2002-12-26 2002-12-26 Hyperelliptic curve scalar multiplication method and apparatus

Publications (1)

Publication Number Publication Date
JP2004205868A true JP2004205868A (en) 2004-07-22

Family

ID=32813453

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002375843A Pending JP2004205868A (en) 2002-12-26 2002-12-26 Hyperelliptic curve scalar multiplication method and apparatus

Country Status (1)

Country Link
JP (1) JP2004205868A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006227562A (en) * 2004-09-30 2006-08-31 Sony Corp Cryptographic processing operation method, cryptographic processing apparatus, and computer program

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006227562A (en) * 2004-09-30 2006-08-31 Sony Corp Cryptographic processing operation method, cryptographic processing apparatus, and computer program
US8014521B2 (en) 2004-09-30 2011-09-06 Sony Corporation Cryptographic computation method, cryptographic system, and computer program

Similar Documents

Publication Publication Date Title
US6038581A (en) Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
US8111826B2 (en) Apparatus for generating elliptic curve cryptographic parameter, apparatus for processing elliptic curve cryptograph, program for generating elliptic curve cryptographic parameter, and program for processing elliptic cyptograph
JP2000187438A (en) Elliptic curve cryptography execution method and apparatus, and recording medium
Raju et al. Elliptic curve cryptosystem and its applications
JP3292107B2 (en) Double vector adder, double vector doubler and double vector integer multiplier
KR20070076440A (en) Password processing devices and password processing methods and computer programs
Oliveira et al. Fast point multiplication algorithms for binary elliptic curves with and without precomputation
KR20120028432A (en) Calculating apparatus and method for elliptic curve cryptography
EP0952697A2 (en) Elliptic curve encryption method and system
JP3542278B2 (en) Montgomery reduction device and recording medium
US20090136025A1 (en) Method for scalarly multiplying points on an elliptic curve
JP4423900B2 (en) Scalar multiplication calculation method, apparatus and program for elliptic curve cryptography
Morales-Sandoval et al. On the hardware design of an elliptic curve cryptosystem
JP2004205870A (en) Hyperelliptic curve scalar multiplication method and apparatus
JP4690819B2 (en) Scalar multiplication calculation method and scalar multiplication calculation apparatus in elliptic curve cryptography
Stogbauer Efficient algorithms for pairing-based cryptosystems
JP2005316267A (en) Elliptic curve pairing arithmetic unit
JP2004205868A (en) Hyperelliptic curve scalar multiplication method and apparatus
JP3123820B2 (en) Operators in finite commutative groups
JP2004205869A (en) Hyperelliptic curve scalar multiplication method and apparatus
JPH1152854A (en) Arithmetic unit on finite field and group operation unit on elliptic curve
KR100974624B1 (en) An Efficient Elliptic Curve Cryptography Algorithm, Sensor Apparatus, and Recording Media
JP2006178125A (en) Elliptic curve tate pairing calculation method and apparatus
KR20010000048A (en) Efficient and fast multiple points scalar multiplication method over elliptic curve using m-ary method
Téllez et al. Supersingular isogeny and ring learning with errors-based diffie-hellman cryptosystems: A performance and security comparison