JP2004205870A - 超楕円曲線スカラー倍演算方法及び装置 - Google Patents

超楕円曲線スカラー倍演算方法及び装置 Download PDF

Info

Publication number
JP2004205870A
JP2004205870A JP2002375845A JP2002375845A JP2004205870A JP 2004205870 A JP2004205870 A JP 2004205870A JP 2002375845 A JP2002375845 A JP 2002375845A JP 2002375845 A JP2002375845 A JP 2002375845A JP 2004205870 A JP2004205870 A JP 2004205870A
Authority
JP
Japan
Prior art keywords
scalar multiplication
unit
hyperelliptic curve
hyperelliptic
calculation
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
JP2002375845A
Other languages
English (en)
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 JP2002375845A priority Critical patent/JP2004205870A/ja
Publication of JP2004205870A publication Critical patent/JP2004205870A/ja
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の超楕円曲線に最適なスカラー倍演算装置を構成する。
【選択図】図2

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】
以下、非特許文献3に基づき、最も一般的な因子の組合せに対する加算アルゴリズムの概略を示す。
【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】
上記アルゴリズムの演算コストは非特許文献1によると有限体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
(1) 符号付m(=2r)-ary Window 分割
入力: 整数k=k0+k12+…+kl2l,kj∈{0,1} (0≦j≦d-1),kl=0.
出力: {(b[i],e[i])}i=0 d-1.
ステップ1: d=0,j=0とおく。
【0054】
ステップ2: j≦lであればステップ3に進みそうでなければ、
ステップ10に進む
ステップ3: kj=0であればステップ4に進み、そうでなければ
ステップ5に進む。
【0055】
ステップ4: j=j+1を計算し、ステップ2に戻る。
【0056】
ステップ5: t=min{l,j+r-1}, h=(kt,kt-1,…kj)2とおく。
【0057】
ステップ6: h>2r-1であればステップ7に進み、そうでなければステップ8に進む。
【0058】
ステップ7: b[i]=h-2rおよび(kl,kl-1,…kt+1)2に1を加算し
ステップ8に進む。
【0059】
ステップ8: b[i]=hとおく。
【0060】
ステップ9: e[i]=j,d=d+1,j=t+1とおきステップ2に戻る。
【0061】
ステップ10: (b[0],e[0]),(b[1],e[1]),…,(b[d-1],e[d-1])を出力する。
【0062】
(2) Point Multiplication: Signed m-ary Windows.
入力:被約因子D0,整数k=b[0]2e[0]+b[1]2e[1]+…+b[d-1]2e[d-1]
出力: D1=[k]D0
ステップ1: 事前計算
ステップ1.1: D[1]=D0,D[2]=[2]D0とおく。
【0063】
ステップ1.2: iが1から2r-2-1までD[2i+1]=D[2i-1]+D[2]を計算する。
【0064】
ステップ1.3: i=d-2,D1=D[b[d-1]]とおく。
【0065】
ステップ2: メインループ
ステップ2.1: D1=[2e[i+1]-e[i]]D1を計算する。
【0066】
ステップ2.2: b[i]>0であればステップ2.3に進みそうでなければステップ2.4に進む。
【0067】
ステップ2.3: D1=D1+D[b[i]]を計算しステップ2.5に進む。
【0068】
ステップ2.4: D1=D1-D[-b[i]]を計算しステップ2.5に進む。
【0069】
ステップ2.5: i=i-1を計算する。
【0070】
ステップ2.6: i≠-1であればステップ2.1にもどり,-1であればステップ2.7に進む
ステップ2.7: D1=[2e[0]]D1を計算する。
【0071】
ステップ2.8: 演算結果としてD1を出力する。
【0072】
楕円曲線を用いた場合、上記アルゴリズムの事前計算ステップの高速計算法が以下に示す非特許文献6に示されている。
【0073】
このアルゴリズムは、楕円曲線上の加算及び2倍算にそれぞれ1回ずつ含まれる逆元計算の回数をモンゴメリートリックを用いて削減することにより高速化を図るものである。
【0074】
最初にモンゴメリトリックの説明を非特許文献7に基づき行う。
【0075】
モンゴメリートリック
入力: a1,a2,…,an
出力: a1,a2,…,anの逆元 a1 -1,a2 -1,…,an -1
ステップ1: c1=a1おく。
【0076】
ステップ2: iが2からnまでステップ2.1を繰り返す。
【0077】
ステップ2.1: ci=ci-1aiを計算する。
【0078】
ステップ3: u=cn -1を計算する。
【0079】
ステップ4: i=nとおきi<0となるまで以下のステップを繰り返す。
【0080】
ステップ4.1: ai -1=ci-1uを計算する。
【0081】
ステップ4.2: u=uaiを計算する。
【0082】
ステップ4.3: i=i-2を計算する。
【0083】
ステップ5: a1 -1=uを計算する。
【0084】
ステップ6: a1 -1,a2 -1,…,an -1を出力する。
【0085】
モンゴメリートリックの計算コストは1I+(3n-3)Mで、一般的に1Iは30M程度に相当することが知られているため、n回逆元計算することに比べて大幅な高速化が達成できる。
【0086】
次に、Affine座標を用いた楕円曲線上の加算及び2倍算にそれぞれ1回ずつ逆元計算が用いられることを利用した高速事前計算法を非特許文献6に基づき示す。
【0087】
従来例2: 高速事前計算法
入力: 楕円曲線上の点P,m=2r.
出力: P,[2]P,[3]P,[5]P,…,[m-3]P,[m-1]P.
ステップ1: [2]Pを計算する。
【0088】
ステップ2: i=1からi=r-2までステップ2.1および2.2を繰り返す。
【0089】
ステップ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ごとに同様の計算を繰り返す。
【0090】
ステップ2.2: i=i+1を計算する。
【0091】
ステップ3: ステップ2.1と同様の手法を用いて([2r-1+1]P,
[2r-1+3]P,…,[2r-1]P)を計算する。
【0092】
ステップ4: P,[2]P,[3]P,[5]P,…,[m-3]P,[m-1]Pを出力する。
【0093】
以上の高速事前計算法は超楕円曲線においても加算及び2倍算において逆元計算が1回含まれるため適用可能である。
【0094】
【非特許文献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
【0095】
【発明が解決しようとする課題】
超楕円曲線を用いた暗号方式では、スカラー倍演算を行う演算装置が必須である。特に任意点のスカラー倍演算は、暗号処理において負荷が大きいため、これを高速に行う必要がある。
【0096】
スカラー倍演算は加算と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倍算の間に処理時間の差がある場合、処理時間が短い演算が多く現れる計算方法を用いることによりスカラー倍演算を行うことができる。
【0097】
従来例1のスカラー倍演算法は主に楕円曲線上の点のスカラー倍演算の高速化を目的に作られている。楕円曲線暗号を構成する上で最も一般的に使われている射影座標上の加算及び2倍算は加算が16M(標数3以上)または20M(標数2),2倍算が10Mと加算に比べて2倍算が高速である。このためスカラー倍演算を行う場合、加算と2倍算の回数の総数が同じアルゴリズムを用いるとするならば、2倍算の回数が多いアルゴリズムを用いるほうがスカラー倍演算は高速に実現できる。
【0098】
しかし、種数2の超楕円曲線上の因子の加算および2倍算のように加算アルゴリズムの方が高速である場合は加算および2倍算の総数が同じであれば、より多く加算を用いるアルゴリズムを用いることが望ましい。
【0099】
また、従来例2で示した高速事前計算法についても、本来の事前計算では必要のない4倍,8倍,…,2r-1倍の計算が必要となるという問題がある。Affine座標を用いた楕円曲線の場合は加算が1I+3M,2倍算が1I+4Mと逆元計算以外の演算の比率が小さいため無駄な点を計算したとしても、逆元計算削減の効果の方が大きいが種数2の超楕円曲線の場合、逆元以外の計算の負荷も大きいため、そのまま適応するのでは高速化の効果を得ることはできない。
【0100】
【課題を解決するための手段】
本発明は上述の問題点を踏まえて行われたもので、種数2の超楕円曲線上の演算の場合等、加算が2倍算に比べて高速である場合において、できる限り2倍算の代わりに加算を用いることにより、スカラー倍算の処理時間の短縮を行う。具体的には整数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倍算演算回数の少ないスカラー倍演算装置を構成する。また、事前計算方法を改良し従来例に比べて無駄な点の計算回数の少ない、より高速な事前計算を行う。これらの改良により高速な暗号装置を提供する。
【0101】
より具体的には、本発明は、超楕円曲線スカラー倍演算装置であって、演算対象となる超楕円曲線および演算対象データを入力する入力部と、超楕円曲線の情報を保持する超楕円曲線情報保持部と、演算対象データを保持する演算対象データ保持部と、スカラー倍演算方法を行うスカラー倍演算部と、スカラー倍演算部において内部的に用いられる加算演算部および2倍算演算部と、演算結果を保持する演算結果保持部と、演算結果を出力する出力部を備えることを特徴とする。
【0102】
さらに、有限体上定義される種数2の超楕円曲線に付随するヤコビ多様体上のスカラー倍を高速に計算することを特徴とする。
【0103】
また、超楕円曲線に付随するヤコビ多様体の元Dに対して,
D,3[D],[5]D,[7]D,[9]D,[11]D,[13]D,[15]Dを事前計算することを特徴とする。
【0104】
また、事前計算において独立に計算できる2つの演算に対してモンゴメリートリックを適用することにより定義体上の逆元計算回数を削減することを特徴とする。
【0105】
また、入力に応じて事前計算結果の利用法を最適化することを特徴とする。
【0106】
また、スカラー倍を計算する際に加算、2倍算に加えて減算を用いることを特徴とする。
【0107】
また、超楕円曲線に付随するヤコビ多様体の元Dのスカラー倍を計算する際に、内部的に計算する必要のある整数
k(=2s+h(h,sは整数))倍を
[k]D=[2s-1]D+([2s-1]D+[h]D)を計算することにより求めることを特徴とする。
【0108】
また、超楕円曲線に付随するヤコビ多様体の元Dのスカラー倍を計算する際に、内部的に計算する必要のある整数k(=2s-h(h,sは整数))倍を
[k]D=[2s-1]D+([2s-1]D-[h]D)を計算することにより求めることを特徴とする。
【0109】
【発明の実施の形態】
図1は本発明を実現する超楕円曲線スカラー倍演算装置(以下演算装置)101の機能構成図である。演算装置101は、制御演算部102およびデータ保持部103から構成される。
【0110】
制御演算部102は、種数2の超楕円曲線のパラメータ、定義体情報、ヤコビ多様体上の点D0及び整数kを入力し、演算結果として[k]D0を出力する入出力部104、超楕円曲線スカラー倍演算装置101全体を制御する制御部105、スカラ倍演算を行うスカラー倍演算部106、スカラー倍演算部106を構成する整数kを16進展開する16進展開部107、ヤコビ多様体の元の演算を行う超楕円曲線演算部108から構成される。さらに超楕円曲線演算部は加算部109および2倍算部110から構成される。
【0111】
データ保持部103は入出力部104により入力された演算対象データであるヤコビ多様体の元D0および整数kを保持する演算対象データ保持部111、超楕円曲線のパラメータ、定義体情報を保持する超楕円曲線情報保持部112、スカラー倍演算を行う際の事前計算結果を保持する事前計算結果保持部113,スカラー倍演算部106で用いられる中間データを保持する中間データ保持部114、制御演算部102で計算された演算結果を保持する演算結果保持部115から構成される。次に各々の動作は制御部105により制御されているものとして動作の流れを説明する。
【0112】
入出力部104により入力された演算対象データ、超楕円曲線パラメータ、定義体情報は演算対象データ保持部111、超楕円曲線情報保持部112に保持される。
【0113】
次にスカラー倍演算部106において演算対象データ保持部111、超楕円曲線情報保持部112で保持されている情報を用いて、事前計算を行う、事前計算結果は事前計算結果保持部113において保持される。次に事前計算結果保持部113において保持されている事前計算結果を用いてスカラー倍演算部106においてスカラー倍を行う。事前計算およびスカラー倍演算における中間演算結果は必要に応じて中間データ保持部114において保持される。スカラー倍演算は図2に示すフローチャートに従って行われるものとする。
【0114】
最後に超楕円曲線スカラー倍演算装置101は入出力装置104により種数2の超楕円曲線パラメータy2+h(x)y=f(x),定義体情報,演算結果[k]D0を出力する。
【0115】
上記の演算装置は,CPUとメモリと、ハードディスク装置やその他の外部記憶装置と、キーボードなどの入力装置と、ディスプレイなどの出力装置と、外部記憶装置や入出力装置とのインターフェースを備えた、一般的な構成を有する情報処理装置上に構築することができる。
【0116】
演算部102の各処理部104〜110は、CPUがメモリにロードされたプログラム(コードまたはモジュールともいう)を実行することで、情報処理装置上に具現化されるプロセスとして実現される。また、メモリや外部記憶装置がデータ保持部103の各保持部111〜115として使用される。
【0117】
上述した各プログラムは、予め外部記憶装置に記憶され、必要に応じてメモリ上にロードされ、CPUにより実行される。上記プログラムは、可搬性の記憶媒体、例えばCD-ROMを扱う外部記憶装置を解して、必要に応じて、可搬性の記憶媒体からメモリにロードされても良いし、一旦、外部記憶装置を介して、可搬性の記憶媒体から外部記憶装置から外部記憶装置にインストールされた後、必要に応じて、外部記憶装置からメモリにロードされても良いし、さらには、図示していないネットワーク接続装置を介して、ネットワーク上の情報処理装置が読み取り可能な媒体の一種である伝送信号により、一旦外部記憶装置にダウンロードされてからメモリにロードされても良いし、あるいは、直接、ネットワーク経由でメモリにロードされても良い。
【0118】
次に図2〜4を用いて本発明の実施の形態及び動作を詳細に説明する。
【0119】
図2は図1において行われている処理を説明するフローチャートである。
【0120】
<ステップ201>
図2において定義体入力部201は超楕円曲線の情報として定義体となる有限体Fq及び種数2の超楕円曲線
y2+h(x)y=f(x)を入力として受け付ける。
【0121】
ここで有限体Fqの情報は、
(1)素体の場合有限体の位数として3以上の素数q
(2)拡大体の場合はq=pnを満たす素数p(標数と呼ぶ)および拡大次数n。
【0122】
<ステップ202>
演算対象データであるヤコビ多様体の元
D0=(a0,b0),整数kを入力する。
【0123】
ここでヤコビ多様体の元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)で表されるものとする。
【0124】
<ステップ202>
kD0を計算する。
【0125】
<ステップ203>
演算結果D3=(a3,b3)を出力する。
【0126】
上記ステップ202を、図3に示すスカラー倍演算部107の動作説明フローチャートを用いて詳細に説明を行う。なおヤコビ多様体の元の加算および2倍算は非特許文献1および2に従い計算を行う。
【0127】
(1)事前計算
<ステップ301>
従来例で示した符号付m-ary Window分割アルゴリズムを用いて整数kを
k=b[0]2e[0]+b[1]2e[1]+…+b[d-1]2e[d-1]の形で表現する。ただし、
m=32(=25)とする。
【0128】
<ステップ302>
D[1]=D0,D[2]=[2]D0とおく。
【0129】
<ステップ303>
(D[3],D[4])=([3]D,[4]D)を
[3]D=D+[2]D、
[4]D=[2]D[2]を計算することにより求める。ただしそれぞれの計算で1回ずつ計算の必要のある逆元計算はモンゴメリートリックを用いて2回必要な逆元計算を1回に削減する。
【0130】
<ステップ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回の逆元計算で計算を行う。
【0131】
<ステップ305>
D1=D[b[d-1]](=無限遠点),i=d-2とおく。
【0132】
(2) メインループ
<ステップ306>
D1=[2e[i+1]-e[i]-1]D1を計算する。
【0133】
<ステップ307>
b[i]>0であればステップ308に進みそうでなければステップ309に進む。
【0134】
<ステップ308>
D2=D1+D[b[i]]を計算する。
【0135】
<ステップ309>
D1= D1+D2を計算しステップ312に進む。
【0136】
<ステップ310>
D2=D1-D[-b[i]]を計算しステップ312に進む。
【0137】
<ステップ311>
D1= D1+D2を計算しステップ312に進む。
【0138】
<ステップ312>
i=i-1を計算する。
【0139】
<ステップ313>
i≠-1であればステップ306にもどり,-1であればステップ314に進む。
【0140】
<ステップ314>
D1=[2e[0]]D1を計算する。
【0141】
<ステップ315>
演算結果としてD1を出力する。
【0142】
次に本発明を用いた鍵生成装置について説明する。
【0143】
図4は鍵生成装置を示している。
【0144】
鍵生成装置401は、制御演算部402およびデータ保持部403から構成される。
【0145】
制御演算部402は、超楕円曲線
y2+h(x)y=f(x)、ベースポイントD0及びその位数n、定義体情報を入力し、生成された鍵情報を出力する入出力部404、鍵生成装置401全体を制御する制御部405、乱数を生成する乱数生成部406、ベースポイントの整数倍を計算する超楕円曲線スカラー倍演算部407から構成される。
【0146】
データ保持部403は入出力部により入力された超楕円曲線のパラメータ、ベースポイント及びその位数、定義体情報を保持する超楕円曲線情報保持部408、制御演算部で生成された鍵情報及び超楕円曲線の情報を保持する鍵情報保持部409から構成される。次に各々の動作は制御部405により制御されているものとして動作の流れを説明する。
【0147】
入出力部404により入力された超楕円曲線パラメータ、ベースポイントD0及びその位数n、定義体情報は超楕円曲線情報保持部408と鍵情報保持部409に保持される。
【0148】
次に乱数生成部406において
0<ds<n(nはベースポイントD<>0の位数)を満たす乱数dsを生成しこれを秘密鍵として鍵情報保持部409で保持する。
【0149】
次に超楕円曲線スカラー倍演算部407においてベースポイントD0のds
Dp=[ds]D0を超楕円曲線演算部を用いて計算し公開鍵とし鍵情報保持部409で保持する。
【0150】
最後に鍵発行装置401は入出力装置404により超楕円曲線
y2+h(x)y=f(x),ベースポイントD0,D0の位数n,定義体情報,秘密鍵ds及び公開鍵Dpを出力する。
【0151】
次に本発明を用いた暗号化装置について説明する。
【0152】
図5は暗号化装置を示している。
【0153】
暗号化装置501は、制御演算部502およびデータ保持部503から構成される。
【0154】
制御演算部502は、超楕円曲線情報を入力し、生成された暗号文を出力する入出力部504、暗号化装置501全体を制御する制御部505、暗号化処理を行う暗号処理部506、また暗号処理部は乱数を生成する乱数生成部507、ヤコビ多様体の元の整数倍を計算する超楕円曲線スカラー倍演算部508から構成される。
【0155】
データ保持部503は入出力部504により入力された暗号化の対象である平文情報を保持する平文情報保持部509、同様に入出力部により入力された種数2の超楕円曲線y2+h(x)y=f(x)、ベースポイントD0及びその位数n、定義体情報を保持する超楕円曲線情報保持部510、暗号化に用いる公開鍵を保持する鍵情報保持部511、制御演算部で生成された暗号文を保持する暗号文保持部512から構成される。次に各々の動作は制御部505により制御されているものとして動作の流れを説明する。
【0156】
入出力部504により入力された平文情報は平文情報保持部509に保持される。
【0157】
入出力部504により入力された超楕円曲線、ベースポイント及びその位数、定義体情報は超楕円曲線情報保持部510に保持される。
【0158】
入出力部504により入力された公開鍵情報は公開鍵情報保持部512に保持される。
【0159】
次に暗号化処理部506において平文情報保持部509、超楕円曲線情報保持部510、公開鍵情報保持部511で保持されている情報を用いて暗号化処理を行い暗号文を作成する。暗号化処理は図6に示すフローチャートに従って行われるものとする。
【0160】
最後に暗号化処理部506で作成された暗号文を暗号文情報保持部512に保持するとともに入出力部504より出力する。
【0161】
次の図6は図5の暗号処理部506で行われる暗号化処理のフローチャートを示す。以下公開鍵をDp,ヤコビ多様体のベースポイントを
D0,その位数をnとして説明を行う。
【0162】
<ステップ601>
0<r<nを満たす乱数rを選択する。
【0163】
<ステップ602>
暗号化対象の平文をmとして
C1=[r]D0及びC2=[r]Dp+mを計算する。
【0164】
<ステップ603>
(C1,C2)を暗号文として出力する。
【0165】
次に本発明を用いた復号化装置について説明する。
【0166】
図7は復号化装置を示している。
【0167】
復号化装置701は、制御演算部702およびデータ保持部703から構成される。
【0168】
制御演算部702は、超楕円曲線情報及び復号化対象の暗号文を入力し、復号された平文を出力する入出力部704、復号化装置701全体を制御する制御部705、復号化処理を行う復号処理部706、また復号処理部はヤコビ多様体の元の整数倍を計算する超楕円曲線スカラー倍演算部707から構成される。
【0169】
データ保持部703は入出力部704により入力された復号化の対象である暗号文情報を保持する暗号文情報保持部708、同様に入出力部704により入力された超楕円曲線y2+h(x)y=f(x)、ベースポイントD0及びその位数n、定義体情報を保持する超楕円曲線情報保持部709、復号化に用いる秘密鍵を保持する秘密鍵情報保持部710、復号化処理部706で復号された平文を保持する平文情報保持部711から構成される。次に各々の動作は制御部705により制御されているものとして動作の流れを説明する。
【0170】
入出力部704により入力された暗号文情報は暗号文情報保持部708に保持される。
【0171】
入出力部704により入力された超楕円曲線パラメータ、ベースポイント及びその位数、定義体情報は超楕円曲線情報保持部709に保持される。
【0172】
入出力部704により入力された秘密鍵情報は秘密鍵情報保持部710に保持される。
【0173】
次に復号化処理部において暗号文情報保持部708、超楕円曲線情報保持部709、秘密鍵情報保持部710で保持されている情報を用いて復号化処理を行い復号文を作成する。復号化処理は図8に示すフローチャートに従って行われるものとする。
【0174】
最後に復号化処理部706で復号された平文を平文情報保持部711に保持するとともに入出力部704より出力する。
【0175】
次の図8は図7の復号処理部706で行われる復号化処理のフローチャートを示す。以下秘密鍵をds,復号化対象の暗号文を(C1,C2)として説明を行う。
【0176】
<ステップ801>
暗号文(C1,C2)およびxから、
m=C2-[ds]C1を計算する。
【0177】
<ステップ802>
mを平文として出力する。
【0178】
以上、説明を行ったように本実施形態によれば、超楕円曲線に付随するヤコビ多様体の元Dのスカラー倍を計算する際に、
(2)事前計算において、独立に計算できる2つの計算を1組にして、それぞれの計算に1つ含まれる逆元計算をモンゴメリートリックを用いて削減する。
【0179】
(2)内部的に計算する必要のある整数
k(=2s+h(h,sは整数))倍を
[k]D=[2s]D+[h]Dを計算するのではなく
[k]D=[2s-1]D+([2s-1]D+[h]D)を計算することにより2倍算を加算に置き換える。
【0180】
の2つの改良を行うことにより定義体上の乗算及び逆元計算回数を削減を行った。
【0181】
次に、以上の工夫の具体的効果を示す。定義体上の乗算コストをM,逆元計算コストをIとした場合において、(1)を適用した事前計算の演算コストは、5I+239Mとなる。一般的には1Iは30M程度であるため、演算コストは389M程度となる。同様に従来例の事前計算部分の演算コストは442M,従来例2の高速事前計算法の演算法の演算コストは492Mとなり、従来例に比べて高速であることが示される。
【0182】
(2)の効果については、種数2の超楕円曲線に付随するヤコビ多様体の元Dのk倍を考えた場合、kがKビットとすれば従来例に比べて最大K/4-1回の2倍算を加算に置き換えることが可能になり、例えば種数2の超楕円曲線の場合、定義体上の乗算を最大K/2-2回削減できる。
【0183】
【発明の効果】
本発明により高速な暗号方式を可能にする超楕円曲線暗号装置を提供できる。
【図面の簡単な説明】
【図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:平文情報保持部。

Claims (8)

  1. 超楕円曲線スカラー倍演算装置であって、
    演算対象となる超楕円曲線および演算対象データの入力を受け付ける入力部と、
    超楕円曲線の情報を保持する超楕円曲線情報保持部と、
    演算対象データを保持する演算対象データ保持部と、
    加算演算部および2倍算演算部とを備え、スカラー倍演算方法を行うスカラー倍演算部と、
    演算結果を保持する演算結果保持部と、
    演算結果を出力する出力部を備える超楕円曲線スカラー倍演算装置。
  2. 請求項1記載の超楕円曲線スカラー倍演算装置であって、
    有限体上定義される種数2の超楕円曲線に付随するヤコビ多様体上のスカラー倍を高速に計算することを特徴とする超楕円曲線スカラー倍演算装置。
  3. 請求項1記載の超楕円曲線スカラー倍演算装置であって、
    超楕円曲線に付随するヤコビ多様体の元Dに対して,
    D,3[D],[5]D,[7]D,[9]D,[11]D,[13]D,[15]Dを事前計算することを特徴とする超楕円曲線スカラー倍演算装置。
  4. 請求項1記載の超楕円曲線スカラー倍演算装置であって、
    事前計算において独立に計算できる2つの演算に対してモンゴメリートリックを適用することにより定義体上の逆元計算回数を削減することを特徴とする超楕円曲線スカラー倍演算装置。
  5. 請求項1記載の超楕円曲線スカラー倍演算装置であって、
    入力に応じて事前計算結果の利用法を最適化することを特徴とする超楕円曲線スカラー倍演算装置。
  6. 請求項1記載の超楕円曲線スカラー倍演算装置であって、
    スカラー倍を計算する際に加算、2倍算に加えて減算を用いることを特徴とする超楕円曲線スカラー倍演算装置。
  7. 請求項1記載の超楕円曲線スカラー倍演算装置であって、
    超楕円曲線に付随するヤコビ多様体の元Dのスカラー倍を計算する際に、内部的に計算する必要のある整数
    k(=2s+h(h,sは整数))倍を
    [k]D=[2s-1]D+([2s-1]D+[h]D)を計算することにより求めることを特徴とする超楕円曲線スカラー倍演算装置。
  8. 請求項1記載の超楕円曲線スカラー倍演算装置であって、
    超楕円曲線に付随するヤコビ多様体の元Dのスカラー倍を計算する際に、内部的に計算する必要のある整数
    k(=2s-h(h,sは整数))倍を
    [k]D=[2s-1]D+([2s-1]D-[h]D)を計算することにより求めることを特徴とする超楕円曲線スカラー倍演算装置。
JP2002375845A 2002-12-26 2002-12-26 超楕円曲線スカラー倍演算方法及び装置 Pending JP2004205870A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002375845A JP2004205870A (ja) 2002-12-26 2002-12-26 超楕円曲線スカラー倍演算方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002375845A JP2004205870A (ja) 2002-12-26 2002-12-26 超楕円曲線スカラー倍演算方法及び装置

Publications (1)

Publication Number Publication Date
JP2004205870A true JP2004205870A (ja) 2004-07-22

Family

ID=32813455

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002375845A Pending JP2004205870A (ja) 2002-12-26 2002-12-26 超楕円曲線スカラー倍演算方法及び装置

Country Status (1)

Country Link
JP (1) JP2004205870A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006035732A1 (ja) * 2004-09-30 2006-04-06 Sony Corporation 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
JP2007187958A (ja) * 2006-01-16 2007-07-26 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2013517527A (ja) * 2010-01-13 2013-05-16 マイクロソフト コーポレーション 統合反転を使用する曲線上でのペアリングの決定
US9043377B2 (en) 2011-01-31 2015-05-26 Samsung Electronics Co., Ltd. Montgomery inverse calculation device and method of calculating montgomery inverse using the same

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006035732A1 (ja) * 2004-09-30 2006-04-06 Sony Corporation 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
JP2006227562A (ja) * 2004-09-30 2006-08-31 Sony Corp 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
US8014521B2 (en) 2004-09-30 2011-09-06 Sony Corporation Cryptographic computation method, cryptographic system, and computer program
JP2007187958A (ja) * 2006-01-16 2007-07-26 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4682852B2 (ja) * 2006-01-16 2011-05-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2013517527A (ja) * 2010-01-13 2013-05-16 マイクロソフト コーポレーション 統合反転を使用する曲線上でのペアリングの決定
US9043377B2 (en) 2011-01-31 2015-05-26 Samsung Electronics Co., Ltd. Montgomery inverse calculation device and method of calculating montgomery inverse using the same

Similar Documents

Publication Publication Date Title
Koc et al. Montgomery multiplication in GF (2k)
US6876745B1 (en) Method and apparatus for elliptic curve cryptography and recording medium therefore
US6038581A (en) Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
US20090136025A1 (en) Method for scalarly multiplying points on an elliptic curve
KR101233682B1 (ko) 타원곡선암호를 위한 연산 장치 및 방법
US6480606B1 (en) Elliptic curve encryption method and system
JP3542278B2 (ja) モンゴメリ・リダクション装置及び記録媒体
JP4351987B2 (ja) モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
JP2011512556A (ja) 楕円曲線上の多数の点を計算する装置及び方法
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
JP2004205870A (ja) 超楕円曲線スカラー倍演算方法及び装置
Morales-Sandoval et al. On the hardware design of an elliptic curve cryptosystem
Stogbauer Efficient Algorithms for pairing-based cryptosystems
JP3123820B2 (ja) 有限可換群における演算器
JP2005316267A (ja) 楕円曲線ペアリング演算装置
JP2004205868A (ja) 超楕円曲線スカラー倍演算方法及び装置
JP2004205869A (ja) 超楕円曲線スカラー倍演算方法及び装置
JPH1152854A (ja) 有限体上の四則演算装置及び楕円曲線上の群演算装置
KR20010000048A (ko) m진법 방식을 이용한 타원곡선상 다중 점의 상수고속연산 방법
JP2006178125A (ja) 楕円曲線テートペアリング演算方法及び装置
JP2005316038A (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびプログラム
KR20090090881A (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체
JP2007212768A (ja) 楕円曲線暗号における事前計算テーブル作成装置