JP4001751B2 - 超楕円曲線暗号のための演算装置 - Google Patents
超楕円曲線暗号のための演算装置 Download PDFInfo
- Publication number
- JP4001751B2 JP4001751B2 JP2002015320A JP2002015320A JP4001751B2 JP 4001751 B2 JP4001751 B2 JP 4001751B2 JP 2002015320 A JP2002015320 A JP 2002015320A JP 2002015320 A JP2002015320 A JP 2002015320A JP 4001751 B2 JP4001751 B2 JP 4001751B2
- Authority
- JP
- Japan
- Prior art keywords
- calculation
- calculated
- unit
- calculate
- doubling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、超楕円曲線暗号方式に係り、特に超楕円曲線暗号の情報処理装置への実装上必要となる、ヤコビ多様体上の任意の元のスカラー倍演算を高速に行なう装置に関する。
【0002】
【従来の技術】
高い安全性が期待できる暗号化方法として、超楕円曲線に付随するヤコビ多様体の離散対数問題に基づく暗号化および復号化装置が、例えば、「Neal Koblitz, Hyperelliptic Crypto Systems, Jornal of Cryptology, 1989, 139−150」において提案されている。
【0003】
有限体Fq上の超楕円曲線とは、方程式y2=f(x)を満たす点(x,y)の集合として定義される。ここで、f(x)は、有限体Fq上のモニック(最高次の係数が1)な(2g+1)次多項式であり、gを超楕円曲線の種数と呼ぶ。
【0004】
超楕円曲線上の因子Dは、超楕円曲線C上の点piの形式和D=ΣnPPiを用いて表すことができる。ここでnPは整数で、いくつかのnPは0であるとする。
【0005】
−P=(x,y)をP=(x,y)の共役と呼ぶ。互いに共役となる点を含まない因子を半被約因子と呼び、n=Σnpを因子の次数と呼ぶ。半被約因子の内n≦gであるものを被約因子と呼ぶ。
【0006】
超楕円曲線Cに付随するヤコビ多様体JC(Fq)とは、被約因子の集合で、被約因子に対して後述する加算演算および単位元を定義することにより群構造を与えることができる。
【0007】
因子の表現方法として多項式のペアを用いる方法が知られている。例えば、「D.Mumford, Tate lectures on theta II,volume 43 of Progr.Math.Birkhauser,1984」によると、任意の因子D=ΣnPPiは、以下の条件を満たすFq上の2つの多項式a、bを用いて表すことができる。
【0008】
(1)a:モニック多項式
(2)deg(b)<deg(a)
(3)b2≡f mod a
ここで、Dが被約因子である場合は、条件(2)がdeg(b)<deg(a)≦gに置き換わる。以下において、因子DをFq上の多項式の組(a,b)を用いて表す。このとき、ヤコビ多様体JC(Fq)の単位元Oは、(1,0)と表される。
【0009】
有限体Fq上で定義された超楕円曲線の離散対数問題とは、超楕円曲線に付随するヤコビ多様体JC(Fq)の位数が大きな素数で割り切れる場合に、ヤコビ多様体JC(Fq)に含まれる元D0をベースポイントとしたとき、ヤコビ多様体JC(Fq)に含まれる元D1に対して、
D1=kD0=D0+D0+…+D0(m回加算)
となる整数kが存在するならば、kを求めよという問題である。
【0010】
超楕円曲線を用いた暗号の安全性は、多くの元を有するヤコビ多様体に対して上記問題が非常に難しいことに依存する。
【0011】
次に、上記超楕円曲線に付随するヤコビ多様体上の離散対数問題を応用した暗号化方式について簡単に説明する。
【0012】
なお、超楕円曲線暗号方式では、システム共通のパラメータとして、有限体Fq上の超楕円曲線C(y2=f(x))、超楕円曲線C上のベースポイントD0、点D0の位数nがあらかじめ定められ、暗号生成者、復号者(鍵生成者)の双方が知っているものとする。また、鍵生成処理で作成した公開鍵Dpは、暗号生成者が入手可能となっている。
【0013】
(1)鍵生成処理
ステップ1:1<ds<nを満たすdsをランダムに選択し、秘密鍵とする。
ステップ2:Dp=dsD0を算出し、Dpを公開鍵とする。
ステップ3:鍵ペア(ds,Dp)を出力する。
【0014】
(2)暗号化処理
ステップ1:1<r<nを満たすrをランダムに選択する。
ステップ2:C1=rD0を計算する。
ステップ3:暗号化すべきメッセージをmとして、C2=m+rDpを計算する。
ステップ4:暗号文(C1,C2)を出力する。
【0015】
(3)復号化処理
ステップ1:m=C2−dsC1を計算する。
ステップ2:mを復号文として出力する。
【0016】
上記処理からわかるように、超楕円曲線を用いた暗号化方式では、固定点および任意点のスカラー倍(k倍)演算が必要となる。
【0017】
上記D0のk倍演算は、加算演算、2倍演算を組み合わせて以下の方法で求めることができる。なお、kは、2進数展開により
k=k0+k1×2+・・・+kl-1×2l-1
と、lビットで表されているものとする。
ステップ1:D1=0,j=l−1とする。
ステップ2:D1=2D1を計算する。
ステップ3:kj=1であれば、D1=D1+D0を計算する。
ステップ4:j=j−1を計算する。
ステップ5:j≠0であれば、ステップ2に戻る。
ステップ6:演算結果としてD1(=kD0)を出力する。
【0018】
このk倍演算例からわかるように、k倍演算では、被約因子の加算および2倍算が必要となる。
【0019】
ここで、因子の加算および2倍算の従来例について説明する。
(従来例1:Cantorのアルゴリズム)
「D.Cantor, Computing in the jacobian of a hyperelliptic curve, Math.Comp. 48, 95−101」においては、加算と2倍算とは、以下に示すように、同じ演算方法により計算される。次に従来技術による因子の加算演算を示す。
ここで、入力は、因子D1=(a1,b1)、D2=(a2,b2)であり、出力は、被約因子D3=(a3,b3)=D1+D2である。
【0020】
<ステップ1>
拡張ユークリッド互助法を用いて、d1=gcd(a1,a2)、および、d1=e1a1+e2a2を満たす多項式d1、e1、e2を求める。
【0021】
<ステップ2>
拡張ユークリッド互助法を用いてd=gcd(d1,b1+b2)、および、d=c1d1+c2(b1+b2)を満たす多項式c1、c2、dを求める。
【0022】
<ステップ3>
d=s1a1+s2a2+s2(b1+b2)となるように、s1=c1e1、s2=c1e2、s3=c2とおく。
【0023】
<ステップ4>
a3=a1a2/d2を計算する。
【0024】
<ステップ5>
b3=(s1a1b2+s2a2b1+s3(b1b2+f))/d (mod a3)を計算する。
【0025】
<ステップ6>
deg(a3)<gとなるまで、
a3=(f−b3 2)/a3
b3=b3 mod a3
を繰り返す。
【0026】
<ステップ7>
演算結果として被約因子D3=(a3,b3)を出力する。
【0027】
(従来例2)
種数2の超楕円曲線に特化した高速演算法については、「P.Gaudry,R.Harley Counting Points on Hyperelliptic curve over Finite Fields, ANTS−IV. LNCS1838, 313−332」に詳しく述べられている。この文献による加算演算法の一例として、次数を2としたときの因子の加算演算方法を説明する。
【0028】
ここでは、次数が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≠−b,b1≠0,b2≠0を満たしているとする。
【0029】
<ステップ1:rの計算>
w1=s1s2
w2=t1−w1+s2 2−t2
r=t1(w2−t2)+t2(s1 2−w1+t2)
をそれぞれ計算する。
【0030】
<ステップ2:I=i1x+i0≡1/a1 mod a2の計算>
r´=1/r
c1=(s2−s1)r´
i0=w2r´
をそれぞれ計算し、I=i1x+i0とおく。
【0031】
<ステップ3:C=c1x+c0≡(b2−b1)I mod a2の計算>
w1=v2−v1
w2=u2−u1
w3=i0w1
w4=i1w2
w5=(i0+i1)(w1+w2)−w3−w4
c1=w5−s2w4−t2
c0=w4+w3
をそれぞれ計算し、C=c1x+c0とおく。
【0032】
<ステップ4:K=x3+k2x2+k1x+k0=(f−b1 2)/a1を計算(ただし、ステップ6で必要なk2のみ)>
k2=A−s1を計算する。
【0033】
<ステップ5:J=j3x3+j2x2+j1x+j0=Ca1の計算>
j3=c1
w1=c1s1
j0=c0v1
j1=(c0+c1)(s1+t1)−w1−j0
j2=w1+c0
をそれぞれ計算し、J=j3x3+j2x2+j1x+j0とおく。
【0034】
<ステップ6:a3=a32x2+a31x+a30=(C(J+2b1)−K)/a2の計算>
a32=c1 2
w1=c1(c0+j2)−1
w2=c1(j1+2u1)+c0j2−k2
a31=w1−s2a32
a30=w2−t2a32−s2a31
をそれぞれ計算し、a3=a32x2+a31x+a30とおく。
【0035】
<ステップ7:a3のモニック化>
w1=1/a32
s3=w1a31
t3=w1a30
をそれぞれ計算し、a3=x2+s3x+t3とおく。
【0036】
<ステップ8:b3≡−(T1+b1) mod a3の計算>
w1=c1+u1
w2=c0+v1
w3=j3s3
w4=j2−w3
w5=w4−t3
w6=(s3+t3)(j3+w4)−w3−w5
u3=w6−w1
v3=w5−w2
をそれぞれ計算し、b3=u3x+v3とおく。
【0037】
<ステップ9>
演算結果として、D3=(a3,b3)を出力して、処理を終了する。
【0038】
次に、上記文献による、2倍演算方法について説明する。
【0039】
[Case1:b1=0の場合]
D3=(1,0)を出力する。
【0040】
[Case2:次数1の場合]
D=(u,v)=(x−xP,yP)とし、D3=2Dを以下のステップにしたがって計算する。
【0041】
<ステップ1>
a=f´(xP)/2yPを計算する。
【0042】
<ステップ2>
b=yP−axPを計算する。
【0043】
<ステップ3>
D3=2D1=((x−xP)2,ax+b)を計算結果として出力する。
【0044】
[Case3:その他の場合]
<ステップ1:rの計算>
w=u1 2
r=t1w−s1u1v1+v1 2
のそれぞれを計算する。
【0045】
{Case3.1:r=0の場合}
≪ステップ1≫
xP=−s1+v1/u1を計算する。
【0046】
≪ステップ2≫
yP=u1xP+v1を計算する。
【0047】
≪ステップ3≫
Case2のアルゴリズムを用いて(x−xP,yP)の2倍を計算し、演算結果として出力する。
【0048】
{Case3.2:r≠0の場合}
≪ステップ1:K=x3+k2x2+k1x+k0=(f−b1)/a1の計算≫
k2=A−s1
k1=B−t1−k2s1
k0=C−w−k2s1−k1t1
をそれぞれ計算し、K=x3+k2x2+k1x+k0とおく。
【0049】
≪ステップ2:I=i1x+i0=1/b1 mod a1の計算≫
q=1/r
i1=−qu1
i2=q(v1−s1u1)
をそれぞれ計算し、I=i1x+i0とおく。
【0050】
≪ステップ3:J=j1x+j0=K mod a1の計算≫
p=k3−s1
j1=k1−t1−ps1
j0=k0−pt1
をそれぞれ計算し、J=j1x+j0とおく。
【0051】
≪ステップ4:H=h2x2+h1x+h0=IJの計算≫
h2=i1j1
h0=i0j0
h1=(i1+i0)(j1+j0)−h2−h0
をそれぞれ計算し、H=h2x2+h1x+h0とおく。
【0052】
≪ステップ5:G=g1x−g0=H/2 mod a3の計算≫
g1=(h1−h2s1)/2
g0=(h0−h2t1)/2
をそれぞれ計算し、G=g1x−g0とおく。
【0053】
{Case3.2.1:g1=0の場合}
≪ステップ1:a3の計算≫
t3=k2g1−g0 2を計算し、a3=x+t3とおく。
【0054】
≪ステップ2:b3の計算≫
w1=g0
w2=g0s1+u1
w3=g0t1+v1
w2=w2−t3w1
v3=−w3+t3w2
をそれぞれ計算し、b3=v3とおく。
【0055】
≪ステップ3≫
計算結果として(a3,b3)を出力する。
【0056】
{Case3.2.2:g1≠0の場合}
≪ステップ1:L=x+l0=(K−2Gb3)/a3の計算≫
l0=k2−2g1s1−t1を計算し、L=x+l0とおく。
【0057】
≪ステップ2:a3の計算≫
a32=g1 2
a30=g0 2
a31=(g0+g1)2−a30−a32
a31=a31−1
a30=a30−l0
w2=1/a32
s3=w2a31
t3=w2a30
をそれぞれ計算し、a3=x2+s3x+t3とおく。
【0058】
≪ステップ3:W=w3x3+w2x2+w1x+w0=Ga1の計算≫
w3=g1
w2=g1s1
w0=g0t1
w2=(g0+g1)(s1+t1)−w2−w0
をそれぞれ計算し、W=w3x3+w2x2+w1x+w0とおく。
【0059】
≪ステップ4:W=w3x3+w2x2+w1x+w0=W+b1の計算≫
w1=w1+u1
w0=w0+v1
をそれぞれ計算し、W=w3x3+w2x2+w1x+w0とおく。
【0060】
≪ステップ5:b3=−W mod a3の計算≫
w4=s3w3
w2=w4−w2
w6=t3w2
w5=(s3+t3)(w3+w2)−w4−w6
u3=w5−w1
v3=w6−w0
をそれぞれ計算し、b3=u3x+t3とおく。
【0061】
≪ステップ6≫
計算結果として、(a3,b3)を出力する。
【0062】
【発明が解決しようとする課題】
上述のように、超楕円曲線を用いた暗号方式では、ヤコビ多様体の元の加算、2倍演算、また、それらを用いたスカラー倍の演算が必要である。特にヤコビ多様体上の任意の元のスカラー倍演算は、処理装置の負荷が大きいため、超楕円曲線暗号方式を用いた暗号装置の実用化のためには、これを高速に行うことが望ましい。
【0063】
従来例1に示した方法では、ヤコビ多様体Jc(Fq)の2つの要素D1、D2の和を求める際に、入力要素によらず同じ処理で計算するため、拡張ユークリッド互助法の計算等で無駄な処理が生じ、トータルの演算回数が増えて処理速度が遅くなるという問題がある。
【0064】
また、従来例2に示した方法は、演算対象に応じて最適なアルゴリズムが用いられるため、従来例1の方法を種数2の超楕円曲線に対して適応した場合に比べて高速である。
【0065】
しかし、従来例2に示した方法は、乗算に比べて負荷の大きい有限体Fq上の逆元演算を、加算演算方法では<ステップ2>および<ステップ7>においてそれぞれ1回ずつ行なう必要があり、また、2倍演算方法では{Case3.2}≪ステップ2≫、および、{Case3.2.2}≪ステップ2≫においてそれぞれ1回ずつ行なう必要があり、この処理に時間がかかるという問題がある。
【0066】
本発明は上述の問題点を踏まえて行われたもので、種数が2の超楕円曲線暗号方式において、ヤコビ多様体上の任意の元のスカラー倍演算の処理速度を向上させることを目的とする。
【0067】
【課題を解決するための手段】
上記課題を解決するため、本発明によれば、超楕円曲線の種数が2の場合に、足しあわせる被約因子の組に対して演算速度が高速となる演算方法を選択し、特に逆元演算の回数を1回に抑えることにより、加算および2倍演算処理時間の短縮を行なう超楕円曲線暗号のための演算装置が提供される。
【0068】
【発明の実施の形態】
本発明の実施の形態について図面を参照して説明する。
【0069】
図1は本発明を適用した超楕円曲線加算2倍算演算装置(以下演算装置)101の機能構成を説明するためのブロック図である。本図において、演算装置101は、演算部121とデータ保持部103とを備えて構成される。
【0070】
演算部102は、超楕円曲線情報および演算対象データの入力受付、および、演算結果の出力を行う入出力部104と、演算装置全体の制御を行う制御部105と、加算および2倍算のいずれかの選択を行う演算選択部106と、選択された演算法に基づき演算を行う加算演算部107および2倍算演算部108とを備えている。
【0071】
データ保持部103は、入出力部104に入力された超楕円曲線情報を保持する超楕円曲線情報保持部109と、入出力部104に入力された演算対象データを保持する演算対象データ保持部110と、演算結果を保持する演算結果保持部111とを備えている。
【0072】
次に、制御部105が制御する制御演算部102における動作の概要を説明する。
【0073】
(1)入出力部104が、演算対象となる超楕円曲線の情報および演算対象データの入力を受け付ける。入力された情報は、それぞれ超楕円曲線情報保持部109および演算対象データ保持部110において保持される。
【0074】
(2)演算選択部106において、加算を行うか2倍算を行うかの選択を行う。ここで、演算対象の因子が2つで、かつ、異なれば加算を選択し、演算対象データが1つ、または、2つの同じ因子であれば2倍算を選択する。
【0075】
(3)選択された演算が加算であれば加算演算部107を用いて加算を行い、2倍算であれば2倍算演算部108を用いて2倍算を行う。演算結果は、演算結果保持部111において保持される。
【0076】
(4)演算結果を入出力部104より出力する。
【0077】
なお、演算装置101は、例えば、中央処理装置(CPU)と、主記憶装置と、ハードディスク装置等の外部記憶装置と、CD−ROM、DVD−ROM等の可搬性を有する記憶媒体からデータを読み取る読取装置と、キーボード、マウス等の入力装置と、ディスプレイ等の表示装置と、上述した各構成要素間のデータ送受信をつかさどるインタフェース等とを備えた、一般的な構成を有するサーバコンピュータ、パーソナルコンピュータ等の一般的な情報処理装置を用いて構成することができる。もちろん、これに限られない。例えば、楕円曲線スカラ倍演算のための専用装置として構成することもできる。
【0078】
演算部102の各処理部104〜108は、CPUが、メモリにロードされたプログラム(コードモジュール)を実行することで、情報処理装置上に具現化されるプロセスとして実現することができる。また、メモリや外部記憶装置は、データ保持部103の各保持部109〜111として機能することができる。
【0079】
また、情報処理装置を演算装置101として機能させるためのプログラムは、例えば、ハードディスク等の外部記憶装置に格納することができる。また、これらのプログラムはCD−ROM、DVD−ROM等の可搬性を有する記憶媒体に記録されることで市場に流通することが可能である。記憶媒体に記録されたプログラムは、読取装置を介して読み込ませることにより、情報処理装置にインストールすることができる。また、通信回線を通じて情報処理装置に読み込ませるようにすることができる。
【0080】
後述する鍵生成装置1001等の各装置についても同様である。
【0081】
つぎに、図2〜図7を用いて演算装置101の動作をさらに詳細に説明する。
【0082】
図2は、制御演算部102における上述の処理を詳細に説明するためのフロー図である。
【0083】
<ステップ201>
入力部104が、超楕円曲線の情報として、定義体となる有限体Fq、および、種数が2である超楕円曲線y2=x5+Ax4+Bx3+Cx2+Dx+E(A,B,C,D,E∈Fq)の各係数を入力として受け付ける。以下、[A,B,C,D,E]を超楕円曲線のパラメータと呼ぶ。超楕円曲線の情報は、超楕円曲線情報保持部109が保持する。
【0084】
有限体Fqの情報は、以下のとおりである。
【0085】
(1)素体の場合:有限体の位数として3以上の素数q。
【0086】
(2)拡大体の場合:q=pnを満たす3以上の素数p(標数)、および、拡大次数n。
【0087】
<ステップ202>
入力部104が、演算対象データとして、ヤコビ多様体の元を入力として受け付ける。演算対象データは、演算対象データ保持部110が保持する。
【0088】
ヤコビ多様体の元は、以下のとおりである。
【0089】
(1)加算演算を行う場合:2つの元D1=(a1,b1)、D2=(a2,b2)
(2)2倍算を行う場合:D1=(a1,b2)
ここでヤコビ多様体の元Diは、超楕円曲線をy2=f(x)(=x5+Ax4+Bx3+Cx2+Dx+E)とおいた場合、
deg(bi)<deg(ai)≦2 (ai,bi∈Fq[x])、および、
f−bi 2≡0 mod ai
を満たす多項式の組(ai,bi)で表されるものとする。
【0090】
<ステップ203>
演算選択部106が、演算対象データとして入力されたヤコビ多様体の元に基づいて、演算の選択を行なう。すなわち、演算入力データが互いに異なる2つの元であれば加算を選択し、演算入力データが1つの元あるいは2つの同じ元であれば2倍算を選択する。
【0091】
<ステップ204(加算演算が選択された場合)>
加算演算部107が、D3=D1+D2を計算する(詳細は後述する図3を参照)。
【0092】
<ステップ205(2倍算演算が選択された場合)>
2倍算演算部108が、D3=2D1を計算する(詳細は後述する図5を参照)。
【0093】
<ステップ206>
入出力部104が、演算結果D3=(a3,b3)を出力して、処理を終了する。
【0094】
つぎに、上記ステップ204の加算演算部107による加算演算を、図3に示す動作説明フロー図を用いて詳細に説明する。
【0095】
<ステップ301:演算方法の選択>
D1,D2の組に対して最も効率の良い演算方法を選択する。この選択は、以下に示すように、(a1,b1)、(a2,b2)の多項式の形に基づいて、いずれかのCaseに区分けることによって行なう。
[Case1]
a1=x2+s1x+t1、b1=u1x+v1(u1≠0)、かつ、
a2=x2+s2x+t2、b2=u2x+v2(u2≠0)
b1≠b2、s1≠s2の場合
[Case2]
a1=a2=x2+sx+tの場合
〔Case2.1〕b1=−b2の場合
〔Case2.2〕b1=u1x+v1≠b2=u2x+v2の場合
[Case3]
a1=x+t1、b1=v1、かつ、a2=x+t2、b2=v2の場合
〔Case3.1〕b1=−b2の場合
〔Case3.2〕b1≠−b2の場合
[Case4]
その他の場合
【0096】
<ステップ302(Case1の場合)>
後述する図4のフロー図に示す演算法に基づき、D3=D1+D2の計算を行う。
【0097】
<ステップ303(Case2の場合)>
〔Case2.1:b1=−b2〕であれば、D3を単位元とおく。
【0098】
〔Case2.2:b1=u1x+v1≠b2=u2x+v2〕であれば、D=(x−(v2−v1)/(u2−u1),u1(v2−v1)/(u2−u1)+v1)とおき、後述の2倍演算を用いて、D3=2Dを計算する。
【0099】
<ステップ304(Case3の場合)>
〔Case3.1:b1=−b2〕であれば、D3を単位元とおく。
【0100】
〔Case3.2:b1≠−b2〕であれば、以下の手順に従い、D3=(a3,b3)を計算する。
【0101】
(1)u3=(v1−v2)/(t2−t1)を計算する。
【0102】
(2)v3=v1+u3t1を計算する。
【0103】
(3)a3(x)=(x+t1)(x+t2)を計算する。
【0104】
(4)b3(x)=u3x+v3を計算する。
【0105】
(5)D3=(a3,b3)とおく。
【0106】
<ステップ305(Case4の場合)>
従来例に基づきCantorのアルゴリズムを用いてD3=D1+D2の計算を行う。
【0107】
<ステップ306>
演算結果D3を出力して、処理を終了する。
【0108】
つぎに、上記ステップ302のCase1におけるD3=D1+D2の算出を、図4に示すフロー図を用いて詳細に説明する。
【0109】
<ステップ401:rの計算>
S=s1−s2
T=t1−t2
r1=T−s2S
r2=T−s1S
r=t1r1−t2r2
をそれぞれ計算する。
【0110】
<ステップ402:Hの計算>
(1)I≡r/a1 mod a2の計算
I=−Sx−r1とおく。
【0111】
(2) H≡(b2−b1)I mod a2の計算
h2=S(u1−u2)
h0=r1(v1−v2)
h1=(S+r1)((u1−u2)+(v1−v2))−h2−h0
h1=h1−s2h2
h0=h0−t2h2
をそれぞれ計算し、H=h1x+h0とおく。
【0112】
<ステップ403:演算法の選択>
h1=0であればステップ406に進み、そうでなければステップ404に進む。
【0113】
<ステップ404(h1≠0の場合):a3の計算>
(1)中間データの計算
α1=(rh1)-1
α2=rα 1
α3=h1 2α1
β=rα2
γ=β2
をそれぞれ計算する。
【0114】
(2)Hのモニック化
h0=α2h0を計算し、H=x+h0とおく。
【0115】
(3)J=Ha1の計算
j2=h0+s1
j1=s1h0+t1
j0=h0t1
をそれぞれ計算し、J=x3+j2x2+j1x+j0とおく。
【0116】
(4)a3=(H(J+2βb1))/a2−γ(f−b1 2)/a1a2の計算
s3=j2+h0−s2−γ
t3=(j2−s2)(h0−s2)+j1−t2+2βu1−(A−s1−s2)γ
をそれぞれ計算し、a3=x2+s3x+t3とおく。
【0117】
<ステップ405:b3≡−(α3J+b1) mod a3の計算>
w1=s3(j2−s3)−j1+t3
u3=α3w1−u1
w2=t3(j2−s3)−j0
v3=α3w2−v1
をそれぞれ計算し、b3=u3x+v3とおき、ステップ408に進む。
【0118】
<ステップ406(h1=0の場合):a3の計算>
(1)K=H/rの計算
k0=h0/rを計算し、K=k0とおく。
【0119】
(2)a3の計算
s3=1
t3=s1+s2−A−k0 2
を計算し、a3=s3x+t3とおく。
【0120】
<ステップ407:b3の計算>
w1=k0s1+u1
w2=k0t1+v1
w1=w1−t3k0
u3=0
v3=t3w1−w2
をそれぞれ計算し、b3=u3x+v3とおき、ステップ408に進む。
【0121】
<ステップ408>
ステップ404〜405またはステップ406〜407で求めた(a3,b3)を加算の結果として出力して処理を終了する。
【0122】
ここで、本加算処理が、従来例と比べて処理速度が速い理由について説明する。
【0123】
(1)従来例として説明した加算演算方法の<ステップ2>における1/r倍を行なわないことにより、逆元演算を1回削減した(本処理における<ステップ402>)。
【0124】
(2)従来例として説明した加算演算方法の<ステップ3>の計算終了後にモニック化を行なうようにした。これにより、以降の<ステップ4><ステップ6>の計算結果がモニック多項式となる(本処理における<ステップ404>)。
【0125】
(3)本加算処理においても1/r、1/h1の2回の逆元演算が必要となるが、これは、(rh1)-1を計算することにより削減する。これにより、例えば、1/rであれば、h1(rh1)-1の計算を行なうことにより、1/rの値を得ることができる(本処理における<ステップ404>)。
【0126】
つぎに、上記ステップ205およびステップ303の2倍算演算部108による2倍算演算を、図5に示すフロー図を用いて詳細に説明する。
【0127】
<ステップ501:演算方法の選択>
D1に対して最も効率の良い演算方法を選択する。この選択は、以下に示すように、(a1,b1)の多項式の形に基づいて、いずれかのCaseに区分けることによって行なう。
【0128】
[Case1]
a1=x+t1、b1=v1(≠0)の場合
[Case2]
a1=x2+s1x+t1、b1=u1x+v1(u1≠0)の場合
[Case3]
(a1,b1)=(x2+s1x+t1,0)または(x+t1,0)の場合
[Case4]
その他の場合
【0129】
<ステップ502(Case1の場合)>
後述する図6のフロー図に示す演算法に基づき、D3=2D1の計算を行う。
【0130】
<ステップ503(Case2の場合)>
後述する図7のフロー図に示す演算法に基づき、D3=2D1の計算を行う。
【0131】
<ステップ504(Case3の場合)>
D3を単位元Oとする。
【0132】
<ステップ505(Case4の場合)>
従来例に基づきCantorのアルゴリズムを用いてD3=2D1の計算を行う。
【0133】
<ステップ506>
演算結果D3を出力して、処理を終了する。
【0134】
つぎに、上記ステップ502(Case1の場合)の処理を、図6に示すフロー図を用いて詳細に説明する。
【0135】
<ステップ601>
T=t1 2の計算を行う。
【0136】
<ステップ602>
U=(T(5T−4t1A)+3TB−2t1C+D)/2v1を計算する。
【0137】
<ステップ603>
V=Ut1+v1を計算する。
【0138】
<ステップ604:a3の計算>
s3=2t1
t3=T
をそれぞれ計算し、a3=x2+s3x+t3とおく。
【0139】
<ステップ605:b3の計算>
u3=U、v3=Vとし、b3=u3x+v3とおく。
【0140】
<ステップ606>
D3=(a3,b3)を出力して、処理を終了する。
【0141】
つぎに、上記ステップ503(Case2の場合)の処理を、図7に示すフロー図を用いて詳細に説明する。
【0142】
<ステップ701:rの計算>
w1=u1 2
w2=s1u1
r=t1w1+v1(v1−w2)
をそれぞれ計算する。
【0143】
<ステップ702:演算法の選択>
rの値により場合分けを行う。
【0144】
[Case2.1]r=0の場合
[Case2.2]r≠0の場合
【0145】
<ステップ703(Case2.1の場合):中間データの計算>
u´=v1/u1を計算する。
【0146】
<ステップ704:a3の計算>
t=(u´−s1)
s3=−2t
t3=t2
をそれぞれ計算し、a3=x2+s3x+t3とおく。
【0147】
<ステップ705:b3の計算>
v=u1t+v1
u3=(t3(5t3−4tA)+3t3B−2tC+D)/2v
v3=v−u3t
をそれぞれ計算し、b3=u3x+v3とおく。
【0148】
<ステップ706(Case2.2の場合):Jの計算>
(1)I≡(2r)/b1 mod a1の計算
i1=−u1
i0=(v1−w2)
をそれぞれ計算し、I=i1x+i0とおく。
【0149】
(2)H≡(f−b1 2)/a1 mod a1の計算
z1=s1−A
z2=2t1
h0=s1(4t1−s1z1−B)−Az2+C−w1
h1=s1(2z1+s1)+B−z2
をそれぞれ計算し、H=h1x+h0とおく。
【0150】
(3)J≡IH mod a1の計算
w1=i0h0
w2=i1h1
w1=(i0+i1)(h0+h1)−w1−w2
j1=(w3−s1w2)
j0=−t1w2+w1
をそれぞれ計算する。
【0151】
<ステップ707:演算法の選択>
j1=0であればステップ710に進み、そうでなければステップ708に進む。
【0152】
<ステップ708(j1≠0の場合):a3の計算>
(1)中間データの計算
α1=(rj1)-1
α2=2rα1
α3=j1 2α1
β=2rα2
γ=β2
をそれぞれ計算する。
【0153】
(2)Jのモニック化
j0=α2j0を計算し、J=x+j0とおく。
【0154】
(3)K=Ja1の計算
k2=j0+s1
k1=s1j0+t1
k0=j0t1
をそれぞれ計算し、K=x3+k2x2+k1x+k0とおく。
【0155】
(4)a3=((Ja1+βb1)2−f)/a1 2の計算
s3=2j0−γ
t3=j0 2+2βu1−γ(A−2s1)
をそれぞれ計算し、a3=x2+s3x+t3とおく。
【0156】
<ステップ709:b3≡−(α3K+b1) mod a3の計算>
w1=s3(k2−s3)−k1+t3
u3=α3w1−u1
w2=t3(k2−s3)−k0
v3=α3w2−v1
をそれぞれ計算し、b3=u3x+v3とおき、ステップ712に進む。
【0157】
<ステップ710(j1=0の場合):a3の計算>
(1)K=J/(2r)の計算
w1=(2r)-1
k0=j0w1
をそれぞれ計算し、K=k0とおく。
【0158】
(2)a3の計算
s3=1
t3=A−2s1−k0 2
を計算し、a3=s3x+t3とおく。
【0159】
<ステップ711:b3の計算>
w1=k0s1+u1
w2=k0t1+v1
w1=w1−t3k0
u3=0
v3=t3w1−w2
をそれぞれ計算し、b3=u3x+v3とおき、ステップ712に進む。
【0160】
<ステップ712>
D3=(a3,b3)を出力して、処理を終了する。
【0161】
ここで、本2倍算処理が、従来例と比べて処理速度が速い理由について説明する。
【0162】
(1)従来例として説明した2倍演算方法の{Case3.2}≪ステップ2≫における1/r倍を行なわないことにより、逆元演算を1回削減した(本処理における<ステップ706>)。
【0163】
(2)従来例として説明した2倍演算方法の{Case3.2}≪ステップ5≫のGの計算終了後にモニック化を行なうようにした(逆元計算1回)。これにより、以降の{Case3.2.2}≪ステップ2≫において、a3のモニック多項式化が削減できる(本処理における<ステップ708>(2))。
【0164】
(3)本2倍算処理においても1/2r、1/h1の2回の逆元演算が必要となるが、これは、(2rh1)-1を計算することにより削減する。これにより、例えば、1/rであれば、2h1(2rh1)-1の計算を行なうことにより、1/rの値を得ることができる(本処理における<ステップ708>(2))。
【0165】
なお、2倍算において、種数が2である超楕円曲線y2=x5+Ax4+Bx3+Cx2+Dx+Eで、Aが0である超楕円曲線を用いた場合には、上述の<ステップ706(Case2.2の場合):Jの計算>の(2)を、以下の(2)’のように変更することにより乗算を2回削減することができる。
【0166】
(2)’H≡(f−b1 2)/a1 mod a1の計算
z1=s1 2
h0=s1(4t1−z1−B)+C−w1
をそれぞれ計算し、H=h1x+h0とおく。
【0167】
つぎに、本発明を適用した超楕円曲線スカラー倍演算装置について図8および図9を参照して説明する。
【0168】
図8は、超楕円曲線スカラー倍演算装置801の機能構成を説明するためのブロック図である。本図に示すように、超楕円スカラー倍演算装置801は、制御演算部802およびデータ保持部803を備えて構成される。
【0169】
制御演算部802は、超楕円曲線のパラメータ、定義体情報、ヤコビ多様体上の点D0および整数kの入力を受け付けるとともに、演算結果としてkD0を出力する入出力部804、超楕円曲線スカラー倍演算装置801を制御する制御部805、スカラ倍演算を行うスカラー倍演算部806、スカラー倍演算部806を構成する整数kを2進展開する2進展開部807、加算あるいは2倍算を行う超楕円曲線高速演算部808を備えている。
【0170】
超楕円曲線高速演算部808は、上述の超楕円曲線加算2倍算演算装置101を用いて構成することができる。
【0171】
データ保持部803は入出力部804により入力を受け付けた演算対象データであるヤコビ多様体の元D0および整数kを保持する演算対象データ保持部809、超楕円曲線のパラメータ[A,B,C,D,E]、定義体情報を保持する超楕円曲線情報保持部810、スカラー倍演算部806で用いられる中間データを保持する中間データ保持部811、制御演算部802で計算された演算結果を保持する演算結果保持部812を備えている。
【0172】
次に、各々の動作は制御部805により制御されているものとして、超楕円曲線スカラ倍演算装置801の動作の流れを説明する。
【0173】
入出力手段804により入力を受け付けた演算対象データは、演算対象データ保持部809に保持され、超楕円曲線パラメータ、定義体情報は、超楕円曲線情報保持部810に保持される。
【0174】
スカラー倍演算部806において、演算対象データ保持部809、超楕円曲線情報保持部810で保持されている情報を用いて、また、必要に応じて中間データ保持部811において中間データを保持することによりスカラー倍演算を行う。
【0175】
スカラー倍演算は、後述する図9に示すフロー図にしたがって行われるものとする。
【0176】
超楕円曲線スカラー倍演算装置801は、入出力装置804により、超楕円曲線パラメータ[A,B,C,D,E]、定義体情報、演算結果kD0を出力して動作を終了する。
【0177】
図9は、スカラー倍演算部806で行われる処理を説明するためのフロー図である。以下、ヤコビ多様体の元D0のk倍であるD1(=kD0)を計算するもとして説明を行う。
【0178】
<ステップ901>
kを2進数展開する。
【0179】
k=k0+k1×2+・・・+kl-1×2l-1
ただし、kiは、0または1である。
【0180】
<ステップ902>
D1=0、j=l−1とおく。
【0181】
<ステップ903>
D1=2D1を計算する。
【0182】
<ステップ904>
kj=1であれば、D1=D1+D0を計算する。
【0183】
<ステップ905>
j=j−1とおく。
【0184】
<ステップ906>
j≠0であればステップ903に戻り、そうでなければステップ907に進む。
【0185】
<ステップ907>
演算結果D1を出力し、処理を終了する。
【0186】
次に、本発明を適用した鍵生成装置について図10を参照して説明する。
【0187】
図10は鍵生成装置1001の機能構成を説明するためのブロック図である。
【0188】
本図に示すように、鍵生成装置1001は、制御演算部1002およびデータ保持部100を備えて構成される。
【0189】
制御演算部1002は、超楕円曲線のパラメータ、ベースポイントD0およびその位数n、定義体情報の入力を受け付けるとともに、生成された鍵情報を出力する入出力部1004、鍵生成装置1001を制御する制御部1005、乱数を生成する乱数生成部1006、ベースポイントの整数倍を計算する超楕円曲線スカラー倍演算部1007を備えている。
【0190】
超楕円曲線スカラー倍演算部1007は、上述の超楕円曲線スカラー倍演算装置801を用いて構成することができる。
【0191】
データ保持部1003は、入出力部1004により入力を受け付けた超楕円曲線のパラメータ、ベースポイントおよびその位数、定義体情報を保持する超楕円曲線情報保持部1008、制御演算部で生成された鍵情報および超楕円曲線の情報を保持する鍵情報保持部1009を備えている。
【0192】
次に、各々の動作は制御部1005により制御されているものとして、鍵生成装置1001の動作の流れを説明する。
【0193】
入出力手段1004により入力を受け付けた超楕円曲線パラメータ、ベースポイントD0およびその位数n、定義体情報は、超楕円曲線情報保持部1008に保持される。
【0194】
乱数生成部1006において、0<ds<nを満たす乱数dsを生成し、これを秘密鍵として鍵情報保持部1009で保持する。
【0195】
超楕円曲線スカラー倍演算部1007において、ベースポイントD0のds倍であるDp=dsD0を、超楕円曲線スカラー倍演算部1007を用いて計算し、公開鍵として鍵情報保持部1009で保持する。
【0196】
鍵発行装置1001は、入出力装置1004により、超楕円曲線パラメータ[A,B,C,D,E]、ベースポイントD0、D0の位数n、定義体情報、秘密鍵dsおよび公開鍵Dpを出力して、処理を終了する。
【0197】
次に、本発明を適用した暗号化装置について図11および図12を参照して説明する。
【0198】
図11は、暗号化装置1101の機能構成を説明するためのブロック図である。本図に示すように、暗号化装置1101は、制御演算部1102およびデータ保持部1103を備えて構成される。
【0199】
制御演算部1102は、超楕円曲線情報、平文、公開鍵の入力を受け付けるとともに、生成された暗号文を出力する入出力部1104、暗号化装置1101を制御する制御部1105、暗号化処理を行う暗号処理部1106を備えている。
【0200】
また、暗号処理部1106は、乱数を生成する乱数生成部1107、ヤコビ多様体の元の整数倍を計算する超楕円曲線スカラー倍演算部1108を備えている。
【0201】
超楕円曲線スカラー倍演算部1108は、上述の超楕円曲線スカラー倍演算装置801を用いて構成することができる。
【0202】
データ保持部1103は、入出力部1104により入力を受け付けた暗号化の対象である平文情報mを保持する平文情報保持部1109、入出力部1104により入力を受け付けた超楕円曲線のパラメータ[A,B,C,D,E]、ベースポイントD0およびその位数n、定義体情報を保持する超楕円曲線情報保持部1110、暗号化に用いる公開鍵を保持する公開鍵情報保持部1111、制御演算部で生成された暗号文を保持する暗号文保持部1112を備えている。
【0203】
次に、各々の動作は制御部1105により制御されているものとして、暗号化装置1101の動作の流れを説明する。
【0204】
入出力手段1104により入力を受け付けた平文情報mは、平文情報保持部1109に保持される。
【0205】
入出力手段1104により入力を受け付けた超楕円曲線パラメータ、ベースポイントおよびその位数、定義体情報は、超楕円曲線情報保持部1110に保持される。
【0206】
入出力手段1004により入力を受け付けた公開鍵情報は、公開鍵情報保持部1111に保持される。
【0207】
暗号処理部1106において、平文情報保持部1109、超楕円曲線情報保持部1110、公開鍵情報保持部1111で保持されている情報を用いて暗号化処理を行い、暗号文を作成する。
【0208】
暗号化処理は、後述する図12に示すフロー図にしたがって行われるものとする。
【0209】
暗号処理部1106で作成された暗号文を、暗号文情報保持部1112に保持するとともに入出力部1104より出力して、動作を終了する。
【0210】
図12は、暗号処理部1106で行われる暗号化処理を説明するためのフロー図である。以下、公開鍵をDp、ヤコビ多様体のベースポイントをD0、その位数をnとして説明を行う。
【0211】
<ステップ1201>
乱数生成部1107において、0<r<nを満たす乱数rを生成する。
【0212】
<ステップ1202>
暗号化対象の平文をmとして、C1=rD0およびC2=rDp+mを計算する。
【0213】
<ステップ1203>
(C1,C2)を暗号文として出力して、処理を終了する。
【0214】
次に、本発明を適用した復号化装置について図13および図14を参照して説明する。
【0215】
図13は復号化装置1301の機能構成を説明するためのブロック図である。本図に示すように、復号化装置1301は、制御演算部1302およびデータ保持部1303を備えて構成される。
【0216】
制御演算部1302は、超楕円曲線情報およぼ復号化対象の暗号文の入力を受け付けるとともに、復号された平文を出力する入出力部504、復号化装置1301を制御する制御部1305、復号化処理を行う復号処理部1306、また、復号処理部はヤコビ多様体の元の整数倍を計算する超楕円曲線スカラー倍演算部1307を備えている。
【0217】
超楕円曲線スカラー倍演算部13087は、上述の超楕円曲線スカラー倍演算装置801を用いて構成することができる。
【0218】
データ保持部1303は、入出力部1304により入力を受け付けた復号化の対象である暗号文情報を保持する暗号文情報保持部1308、超楕円曲線のパラメータ[A,B,C,D,E]、ベースポイントD0およびその位数n、定義体情報を保持する超楕円曲線情報保持部1309、復号化に用いる秘密鍵を保持する秘密鍵情報保持部1310、復号化処理部1306で復号された平文を保持する平文情報保持部1311を備えている。
【0219】
次に、各々の動作は制御部1305により制御されているものとして、複号化装置1301の動作の流れを説明する。
【0220】
入出力手段1304により入力を受け付けた暗号文情報は、暗号文情報保持部1308に保持される。
【0221】
入出力手段1304により入力を受け付けた超楕円曲線パラメータ、ベースポイントおよびその位数、定義体情報は、超楕円曲線情報保持部1309に保持される。
【0222】
入出力手段1304により入力を受け付けた秘密鍵情報は、秘密鍵情報保持部1310に保持される。
【0223】
復号化処理部1306において、暗号文情報保持部1308、超楕円曲線情報保持部1309、秘密鍵情報保持部1310で保持されている情報を用いて復号化処理を行い復号文を作成する。
【0224】
復号化処理は、後述する図14に示すフロー図にしたがって行われるものとする。
【0225】
復号化処理部1306で復号された平文を平文情報保持部1311に保持するとともに入出力部1304より出力して、動作を終了する。
【0226】
図14は、復号処理部1306で行われる復号化処理を説明するためのフロー図である。以下、秘密鍵をds、復号化対象の暗号文を(C1,C2)として説明を行う。
【0227】
<ステップ1401>
暗号文(C1,C2)およびdsから、m=C2−dsC1を計算する。
【0228】
<ステップ1402>
mを平文として出力して処理を終了する。
【0229】
【発明の効果】
上述のように、本発明によれば、元の加算演算および2倍演算の演算負荷が軽減するため、種数が2の超楕円曲線暗号方式において、ヤコビ多様体上の任意の元のスカラー倍演算の処理速度を向上させることができる。
【図面の簡単な説明】
【図1】は、本発明を適用した超楕円曲線加算2倍算演算装置の機能構成を示すブロック図である。
【図2】は、超楕円曲線加算2倍算演算装置の動作を説明するためのフロー図である。
【図3】は、超楕円曲線加算2倍算演算装置の加算処理を説明するためのフロー図である。
【図4】は、超楕円曲線加算2倍算演算装置の加算処理を説明するためのフロー図である。
【図5】は、超楕円曲線加算2倍算演算装置の2倍算処理を説明するためのフロー図である。
【図6】は、超楕円曲線加算2倍算演算装置の2倍算処理を説明するためのフロー図である。
【図7】は、超楕円曲線加算2倍算演算装置の2倍算処理を説明するためのフロー図である。
【図8】は、本発明を適用した楕円曲線スカラー倍演算装置の機能構成を示すブロック図である。
【図9】は、本発明を適用した超楕円曲線スカラー倍演算装置の動作を説明するためのフロー図である。
【図10】は、本発明を適用した鍵生成装置の機能構成を示すブロック図である。
【図11】は、本発明を適用した暗号化装置の機能構成を示すブロック図である。
【図12】は、本発明を適用した暗号化の動作を説明するためのフロー図である。
【図13】は、本発明を適用した復号化装置の機能構成を示すブロック図である。
【図14】は、本発明を適用した復号化装置の動作を説明するためのフロー図である。
【符号の説明】
101:超楕円曲線加算2倍算演算装置、102:制御演算部、103:データ保持部、104:入出力部、105:制御部、106:演算選択部、107:加算演算部、108:2倍算演算部、111:超楕円曲線情報保持部、110:演算対象データ保持部、111:演算結果保持部
801:超楕円曲線スカラー倍演算装置、802:制御演算部、803:データ保持部、804:入出力部、805:制御部、806:スカラー倍演算部、807:2進展開部、808:超楕円曲線高速演算部、809:演算対象データ保持部、810:超楕円曲線情報保持部、811:中間データ保持部、812:演算結果保持部
1001:鍵生成装置、1002:制御演算部、1003:データ保持部、1004:入出力部、1005:制御部、1006:乱数生成部、1007:超楕円曲線スカラー倍演算部、1008:超楕円曲線情報保持部、1009:鍵情報保持部
1101:暗号化装置、1102:制御演算部、1103:データ保持部、1104:入出力部、1105:制御部、1106:暗号処理部、1107:乱数処理部、1108:超楕円曲線スカラー倍演算部、1109:平文情報保持部、1110:超楕円曲線情報保持部、1112:公開鍵情報保持部、1113:暗号文情報保持部
1301:復号化装置、1302:制御演算部、1303:データ保持部、1304:入出力部、1305:制御部、1306:復号処理部、1307:超楕円曲線スカラー倍演算部、1308:暗号文情報保持部、1309:超楕円曲線情報保持部、1310:公開鍵情報保持部、1311:平文情報保持部
Claims (7)
- 種数2の超楕円曲線に付随するヤコビ多様体上の任意の2つの元(D1,D2)の加算演算(D3=D1+D2)を行なう加算演算装置であって、
有限体Fq上の超楕円曲線y2=x5+Ax4+Bx3+Cx2+Dx+Eに関する情報、および、演算対象の元を多項式の組で表した((a1,b1)、(a2,b2))の入力を受け付ける受付手段と、
受け付けた多項式が、
a1=x2+s1x+t1、b1=u1x+v1(u1≠0)、かつ、
a2=x2+s2x+t2、b2=u2x+v2(u2≠0)
b1≠b2、s1≠s2
を満たす場合に、以下のステップによりD3=(a3,b3)を算出する第1の演算手段と、を備えることを特徴とする加算演算装置:
<ステップ1:rの計算>
S=s1−s2、T=t1−t2、r1=T−s2S、r2=T−s1S、r=t1r1−t2r2をそれぞれ計算する。
<ステップ2:Hの計算>
(1)I≡r/a1 mod a2の計算
I=−Sx−r1とおく。
(2) H≡(b2−b1)I mod a2の計算
h2=S(u1−u2)、h0=r1(v1−v2)、h1=(S+r1)((u1−u2)+(v1−v2))−h2−h0、h1=h1−s2h2、h0=h0−t2h2をそれぞれ計算し、H=h1x+h0とおく。
<ステップ3:演算法の選択>
h1=0であればステップ6に進み、そうでなければステップ4に進む。
<ステップ4(h1≠0の場合):a3の計算>
(1)中間データの計算
α1=(rh1)-1、α2=rα 1 、α3=h1 2α1、β=rα2、γ=β2
をそれぞれ計算する。
(2)Hのモニック化
h0=α2h0を計算し、H=x+h0とおく。
(3)J=Ha1の計算
j2=h0+s1、j1=s1h0+t1、j0=h0t1をそれぞれ計算し、J=x3+j2x2+j1x+j0とおく。
(4)a3=(H(J+2βb1))/a2−γ(f−b1 2)/a1a2の計算
s3=j2+h0−s2−γ、t3=(j2−s2)(h0−s2)+j1−t2+2βu1−(A−s1−s2)γをそれぞれ計算し、a3=x2+s3x+t3とおく。
<ステップ5:b3≡−(α3J+b1) mod a3の計算>
w1=s3(j2−s3)−j1+t3、u3=α3w1−u1、w2=t3(j2−s3)−j0、v3=α3w2−v1をそれぞれ計算し、b3=u3x+v3とおき、ステップ8に進む。
<ステップ6(h1=0の場合):a3の計算>
(1)K=H/rの計算
k0=h0/rを計算し、K=k0とおく。
(2)a3の計算
s3=1
t3=s1+s2−A−k0 2を計算し、a3=s3x+t3とおく。
<ステップ7:b3の計算>
w1=k0s1+u1、w2=k0t1+v1、w1=w1−t3k0、u3=0、v3=t3w1−w2をそれぞれ計算し、b3=u3x+v3とおき、ステップ8に進む。
<ステップ8>
ステップ4〜5またはステップ6〜7で求めた(a3,b3)を加算の結果として処理を終了する。 - 種数2の超楕円曲線に付随するヤコビ多様体上の任意の元(D1)の2倍算演算(D3=2D1)を行なう2倍算演算装置であって、
有限体Fq上の超楕円曲線y2=x5+Ax4+Bx3+Cx2+Dx+Eに関する情報、および、演算対象の元を多項式の組で表した(a1,b1)の入力を受け付ける受付手段と、
受け付けた多項式が、
a1=x2+s1x+t1、b1=u1x+v1(u1≠0)
を満たす場合に、以下のステップによりD3=(a3,b3)を算出する第3の演算手段とを備えることを特徴とする2倍算演算装置:
<ステップ1:rの計算>
w1=u1 2、w2=s1u1、r=t1w1+v1(v1−w2)をそれぞれ計算する。
<ステップ2:演算法の選択>
r=0の場合:ステップ3に進む。
r≠0の場合:ステップ6に進む
<ステップ3:中間データの計算>
u´=v1/u1を計算する。
<ステップ4:a3の計算>
t=(u´−s1)、s3=−2t、t3=t2をそれぞれ計算し、a3=x2+s3x+t3とおく。
<ステップ5:b3の計算>
v=u1t+v1、u3=(t3(5t3−4tA)+3t3B−2tC+D)/2v、v3=v−u3tをそれぞれ計算し、b3=u3x+v3とおき、ステップ12に進む。
<ステップ6:Jの計算>
(1)I≡(2r)/b1 mod a1の計算
i1=−u1、i0=(v1−w2)をそれぞれ計算し、I=i1x+i0とおく。
(2)H≡(f−b1 2)/a1 mod a1の計算
z1=s1−A、z2=2t1、h0=s1(4t1−s1z1−B)−Az2+C−w1、h1=s1(2z1+s1)+B−z2をそれぞれ計算し、H=h1x+h0とおく。
(3)J≡IH mod a1の計算
w1=i0h0、w2=i1h1、w1=(i0+i1)(h0+h1)−w1−w2
j1=(w3−s1w2)、j0=−t1w2+w1をそれぞれ計算する。
<ステップ7:演算法の選択>
j1=0であればステップ10に進み、そうでなければステップ8に進む。
<ステップ8(j1≠0の場合):a3の計算>
(1)中間データの計算
α1=(rj1)-1、α2=2rα1、α3=j1 2α1、β=2rα2、γ=β2
をそれぞれ計算する。
(2)Jのモニック化
j0=α2j0を計算し、J=x+j0とおく。
(3)K=Ja1の計算
k2=j0+s1、k1=s1j0+t1、k0=j0t1をそれぞれ計算し、K=x3+k2x2+k1x+k0とおく。
(4)a3=((Ja1+βb1)2−f)/a1 2の計算
s3=2j0−γ、t3=j0 2+2βu1−γ(A−2s1)をそれぞれ計算し、a3=x2+s3x+t3とおく。
<ステップ9:b3≡−(α3K+b1) mod a3の計算>
w1=s3(k2−s3)−k1+t3、u3=α3w1−u1、w2=t3(k2−s3)−k0、v3=α3w2−v1をそれぞれ計算し、b3=u3x+v3とおき、ステップ12に進む。
<ステップ10(j1=0の場合):a3の計算>
(1)K=J/(2r)の計算
w1=(2r)-1、k0=j0w1をそれぞれ計算し、K=k0とおく。
(2)a3の計算
s3=1、t3=A−2s1−k0 2を計算し、a3=s3x+t3とおく。
<ステップ11:b3の計算>
w1=k0s1+u1、w2=k0t1+v1、w1=w1−t3k0、u3=0、v3=t3w1−w2をそれぞれ計算し、b3=u3x+v3とおき、ステップ12に進む。
<ステップ12>
D3=(a3,b3)を2倍算演算の結果として、処理を終了する。 - 種数2の超楕円曲線に付随するヤコビ多様体上の任意の2つの元(D1,D2)の加算演算(D3=D1+D2)、または、任意の元(D1)の2倍算演算(D3=2D1)を行なう加算2倍算演算装置であって、
請求項1に記載の第1の演算手段と、
第2の演算手段と、
請求項2に記載の第3の演算手段と、
有限体Fq上の超楕円曲線y2=x5+Ax4+Bx3+Cx2+Dx+Eに関する情報、および、演算対象の元を多項式の組で表した((a1,b1)、(a2,b2))の入力を受け付ける受付手段と、
受け付けた((a1,b1)、(a2,b2))により、処理すべき演算が加算演算かであるか2倍演算であるかを判定する演算選択手段と、
前記演算選択手段が加算演算であると判定した場合であって、受け付けた多項式が、
a1=x2+s1x+t1、b1=u1x+v1(u1≠0)、かつ、
a2=x2+s2x+t2、b2=u2x+v2(u2≠0)
b1≠b2、s1≠s2
を満たす場合には、第1の演算手段を用いて加算演算を行ない、
前記演算選択手段が2倍算演算であると判定した場合であって、受け付けた多項式が、
a1=x+t1、b1=v1(≠0)
を満たす場合には、第2の演算手段を用いて2倍算演算を行ない、
前記演算選択手段が2倍算演算であると判定した場合であって、受け付けた多項式が、
a1=x2+s1x+t1、b1=u1x+v1(u1≠0)
を満たす場合には、第3の演算手段を用いて2倍算演算を行なう最適演算方法実行手段と、を備え、
前記第2の演算手段は、
受け付けた多項式が、
a 1 = x + t 1 、b 1 = v 1 (≠0)
を満たす場合に、以下のステップによりD 3 =(a 3 ,b 3 )を算出すること、
を特徴とする加算2倍算演算装置:
<ステップ1>
T = t 1 2 の計算を行う。
<ステップ2>
U = (T(5T−4t 1 A) + 3TB−2t 1 C + D) / 2v 1 を計算する。
<ステップ3>
V=Ut 1 +v 1 を計算する。
<ステップ4:a 3 の計算>
s 3 =2t 1 、t 3 =Tをそれぞれ計算し、a 3 =x 2 +s 3 x+t 3 とおく。
<ステップ5:b 3 の計算>
u 3 =U、v 3 =Vとし、b 3 =u 3 x+v 3 とおく。
<ステップ6>
D 3 =(a 3 ,b 3 )を2倍算演算の結果として、処理を終了する。 - 種数2の超楕円曲線に付随するヤコビ多様体上の任意の元D0のスカラー倍演算(kD0)を行なう超楕円スカラー倍演算装置であって、
有限体Fq上の超楕円曲線y2=x5+Ax4+Bx3+Cx2+Dx+Eに関する情報、および、演算対象の元D0、整数kの入力を受け付ける受付手段と、
請求項1に記載の第1の演算手段と、
第2の演算手段と、
請求項2に記載の第3の演算手段と、
請求項3に記載の最適演算方法実行手段と、
以下のステップによりD1を算出する第4の演算手段と、を備え、
<ステップ1>
kを2進数展開して、
k=k0+k1×2+・・・+kl-1×2l-1
とする。
<ステップ2>
D1=0、j=l−1とおく。
<ステップ3>
前記第4の演算手段を用いて、D1=2D1を計算する。
<ステップ4>
kj=1であれば、前記第4の演算手段を用いて、D1=D1+D0を計算する。
<ステップ5>
j=j−1とおく。
<ステップ6>
j≠0であればステップ3に戻り、そうでなければステップ7に進む。
<ステップ7>
D1をスカラー倍演算の結果として処理を終了する。
前記第2の演算手段は、
前記受付手段において、演算対象の元を多項式の組で表した(a 1 ,b 1 )の入力を受け付け、
受け付けた多項式が、
a 1 = x + t 1 、b 1 = v 1 (≠0)
を満たす場合に、以下のステップによりD 3 =(a 3 ,b 3 )を算出すること、
を特徴とする超楕円スカラー倍演算装置:
<ステップ1>
T = t 1 2 の計算を行う。
<ステップ2>
U = (T(5T−4t 1 A) + 3TB−2t 1 C + D) / 2v 1 を計算する。
<ステップ3>
V=Ut 1 +v 1 を計算する。
<ステップ4:a 3 の計算>
s 3 =2t 1 、t 3 =Tをそれぞれ計算し、a 3 =x 2 +s 3 x+t 3 とおく。
<ステップ5:b 3 の計算>
u 3 =U、v 3 =Vとし、b 3 =u 3 x+v 3 とおく。
<ステップ6>
D 3 =(a 3 ,b 3 )を2倍算演算の結果として、処理を終了する。 - 超楕円曲線暗号を利用した鍵生成装置であって、
有限体Fq上の超楕円曲線y2=x5+Ax4+Bx3+Cx2+Dx+Eに関する情報、ベースポイントD0およびその位数nの入力を受け付ける受付手段と、
0<ds<nを満たすdsを秘密鍵として生成する秘密鍵生成手段と、
請求項1に記載の第1の演算手段と、
第2の演算手段と、
請求項2に記載の第3の演算手段と、
請求項3に記載の最適演算方法実行手段と、
請求項4に記載の第4の演算手段と、
第4の演算手段を用いて、Dp=dsD0を算出し、Dpを公開鍵とする公開鍵生成手段と、を備え、
前記第2の演算手段は、
前記受付手段において、演算対象の元を多項式の組で表した(a 1 ,b 1 )の入力を受け付け、
受け付けた多項式が、
a 1 = x + t 1 、b 1 = v 1 (≠0)
を満たす場合に、以下のステップによりD 3 =(a 3 ,b 3 )を算出すること、
を特徴とする鍵生成装置:
<ステップ1>
T = t 1 2 の計算を行う。
<ステップ2>
U = (T(5T−4t 1 A) + 3TB−2t 1 C + D) / 2v 1 を計算する。
<ステップ3>
V=Ut 1 +v 1 を計算する。
<ステップ4:a 3 の計算>
s 3 =2t 1 、t 3 =Tをそれぞれ計算し、a 3 =x 2 +s 3 x+t 3 とおく。
<ステップ5:b 3 の計算>
u 3 =U、v 3 =Vとし、b 3 =u 3 x+v 3 とおく。
<ステップ6>
D 3 =(a 3 ,b 3 )を2倍算演算の結果として、処理を終了する。 - 超楕円曲線暗号を利用した暗号化装置であって、
有限体Fq上の超楕円曲線y2=x5+Ax4+Bx3+Cx2+Dx+Eに関する情報、ベースポイントD0およびその位数n、公開鍵Dp、平文mの入力を受け付ける受付手段と、
0<r<nを満たす乱数rを生成する乱数生成手段と、
請求項1に記載の第1の演算手段と、
第2の演算手段と、
請求項2に記載の第3の演算手段と、
請求項3に記載の最適演算方法実行手段と、
請求項4に記載の第4の演算手段と、
第4の演算手段を用いて、C1=rD0およびC2=rDp+mを計算し、(C 1 ,C 2 )を暗号文とする暗号文生成手段と、を備え、
前記第2の演算手段は、
前記受付手段において、演算対象の元を多項式の組で表した(a 1 ,b 1 )の入力を受け付け、
受け付けた多項式が、
a 1 = x + t 1 、b 1 = v 1 (≠0)
を満たす場合に、以下のステップによりD 3 =(a 3 ,b 3 )を算出すること、
を特徴とする暗号化装置:
<ステップ1>
T = t 1 2 の計算を行う。
<ステップ2>
U = (T(5T−4t 1 A) + 3TB−2t 1 C + D) / 2v 1 を計算する。
<ステップ3>
V=Ut 1 +v 1 を計算する。
<ステップ4:a 3 の計算>
s 3 =2t 1 、t 3 =Tをそれぞれ計算し、a 3 =x 2 +s 3 x+t 3 とおく。
<ステップ5:b 3 の計算>
u 3 =U、v 3 =Vとし、b 3 =u 3 x+v 3 とおく。
<ステップ6>
D 3 =(a 3 ,b 3 )を2倍算演算の結果として、処理を終了する。 - 超楕円曲線暗号を利用した復号化装置であって、
有限体Fq上の超楕円曲線y2=x5+Ax4+Bx3+Cx2+Dx+Eに関する情報、ベースポイントD0およびその位数n、秘密鍵ds、暗号文(C1,C2 )の入力を受け付ける受付手段と、
請求項1に記載の第1の演算手段と、
第2の演算手段と、
請求項2に記載の第3の演算手段と、
請求項3に記載の最適演算方法実行手段と、
請求項4に記載の第4の演算手段と、
第4の演算手段を用いて、m=C2−dsC1を計算し、mを平文とする平文生成手段と、を備え、
前記第2の演算手段は、
前記受付手段において、演算対象の元を多項式の組で表した(a 1 ,b 1 )の入力を受け付け、
受け付けた多項式が、
a 1 = x + t 1 、b 1 = v 1 (≠0)
を満たす場合に、以下のステップによりD 3 =(a 3 ,b 3 )を算出すること、
を特徴とする復号化装置:
<ステップ1>
T = t 1 2 の計算を行う。
<ステップ2>
U = (T(5T−4t 1 A) + 3TB−2t 1 C + D) / 2v 1 を計算する。
<ステップ3>
V=Ut 1 +v 1 を計算する。
<ステップ4:a 3 の計算>
s 3 =2t 1 、t 3 =Tをそれぞれ計算し、a 3 =x 2 +s 3 x+t 3 とおく。
<ステップ5:b 3 の計算>
u 3 =U、v 3 =Vとし、b 3 =u 3 x+v 3 とおく。
<ステップ6>
D 3 =(a 3 ,b 3 )を2倍算演算の結果として、処理を終了する。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002015320A JP4001751B2 (ja) | 2002-01-24 | 2002-01-24 | 超楕円曲線暗号のための演算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002015320A JP4001751B2 (ja) | 2002-01-24 | 2002-01-24 | 超楕円曲線暗号のための演算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003216028A JP2003216028A (ja) | 2003-07-30 |
JP4001751B2 true JP4001751B2 (ja) | 2007-10-31 |
Family
ID=27651752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002015320A Expired - Fee Related JP4001751B2 (ja) | 2002-01-24 | 2002-01-24 | 超楕円曲線暗号のための演算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4001751B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4599859B2 (ja) * | 2004-03-12 | 2010-12-15 | ソニー株式会社 | 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム |
JP4752313B2 (ja) | 2004-09-30 | 2011-08-17 | ソニー株式会社 | 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム |
-
2002
- 2002-01-24 JP JP2002015320A patent/JP4001751B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003216028A (ja) | 2003-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Adleman et al. | Function field sieve method for discrete logarithms over finite fields | |
JP5001176B2 (ja) | 署名生成装置、署名生成方法及び署名生成プログラム | |
US6266688B1 (en) | Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed | |
KR101269737B1 (ko) | 암호 처리 장치 및 암호 처리 방법과 프로그램을 기록한 컴퓨터 판독 가능한 기록매체 | |
JPH08504962A (ja) | 暗号化方法 | |
US8102998B2 (en) | Method for elliptic curve scalar multiplication using parameterized projective coordinates | |
US20080273695A1 (en) | Method for elliptic curve scalar multiplication using parameterized projective coordinates | |
JP2003098962A (ja) | 楕円曲線スカラー倍計算方法及び装置並びに記録媒体 | |
US7050579B1 (en) | Cryptographic methods and apparatus using word-wise montgomery multiplication | |
US7177422B2 (en) | Elliptic curve encryption processing method, elliptic curve encryption processing apparatus, and program | |
KR101223498B1 (ko) | 타원 곡선 암호 방식에서 공개키를 생성하는 방법 및 상기방법을 수행하는 시스템 | |
JP4001751B2 (ja) | 超楕円曲線暗号のための演算装置 | |
US7092522B1 (en) | Apparatus for solving system of equations on finite field and apparatus for inverting element of extension field | |
JP4423900B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム | |
JP2004163687A (ja) | 楕円曲線暗号装置、楕円曲線暗号プログラム | |
JP2005316267A (ja) | 楕円曲線ペアリング演算装置 | |
JP4599859B2 (ja) | 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム | |
JP3145368B2 (ja) | 楕円曲線演算装置、演算方法及びその方法を実施するプログラムを記録した記録媒体 | |
KR100974624B1 (ko) | 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 | |
JP2006178125A (ja) | 楕円曲線テートペアリング演算方法及び装置 | |
JPH1152854A (ja) | 有限体上の四則演算装置及び楕円曲線上の群演算装置 | |
JP2002351313A (ja) | 超楕円曲線演算方法及び装置 | |
JP2004205870A (ja) | 超楕円曲線スカラー倍演算方法及び装置 | |
US20240223368A1 (en) | A system and a method for performing operations | |
JP2003228285A (ja) | 楕円曲線スカラ倍演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050124 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050124 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070619 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070725 |
|
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: 20070814 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070815 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100824 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100824 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100824 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110824 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120824 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120824 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130824 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |