(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-10
(45)【発行日】2025-03-18
(54)【発明の名称】スカラー倍算システム、スカラー倍算装置、スカラー倍算方法及びプログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20250311BHJP
G06F 17/10 20060101ALI20250311BHJP
【FI】
G09C1/00 650A
G06F17/10 Z
(21)【出願番号】P 2022574883
(86)(22)【出願日】2021-01-12
(86)【国際出願番号】 JP2021000684
(87)【国際公開番号】W WO2022153363
(87)【国際公開日】2022-07-21
【審査請求日】2023-07-04
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110004381
【氏名又は名称】弁理士法人ITOH
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】川原 祐人
(72)【発明者】
【氏名】小林 鉄太郎
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2015-135363(JP,A)
【文献】FAY, Bjoern,Double-and-Add with Relative Jacobian Coordinates,Cryptology ePrint Archive [online],International Association for Cryptologic Research,2014年12月,Paper 2014/1014,pp. 1-9,[2024年10月24日検索], インターネット<URL: https://eprint.iacr.org/2014/1014>
【文献】小林 航也, 他,Twisted Edwards曲線への写像を用いた効率的な電子署名を実現する楕円スカラー倍算法の提案,第42回情報理論とその応用シンポジウム予稿集 [CD-ROM],2019年11月19日,5.3.4 (pp. 402-407)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
楕円曲線上の点に対するスカラー倍を計算するスカラー倍算システムであって、
前記楕円曲線上の点Pとd個の整数e
i(i∈[1,d])とに対して、Co-Z法による楕円曲線加算又は楕円曲線2倍算を利用してヤコビアン座標系のZ座標がすべての点で同一であるd個の点e
iP(ただし、e
1P=P)で構成される事前計算テーブルTを計算する事前計算部と、
スカラー値kを、k'=k
0'2
0+k
1'2
1+・・・+k
n-1'2
n-1(k
i'∈{0,±e
1,・・・,±e
d})と表現されるスカラー値k'に変換する変換部と、
前記事前計算テーブルTと前記スカラー値k'とを用いて、Co-Z法による楕円曲線加算を利用してスカラー倍算k'Pを計算する評価部と、
を有
し、
前記事前計算部は、
予め決められた自然数aに対して、A←aP、P[1]←P(ただし、P[1]のZ座標はAのZ座標と同一)、t
1
をA
Z
=t
1
P
Z
を満たす値(ただし、A
Z
はAのZ座標、P
Z
はPのZ座標)として、
楕円曲線加算を行う場合、i=2,・・・,dに対して、P[i-1]のZ座標がAのZ座標と異なるときはP[i-1]とZ座標が同一になる点にAを変換した上で、Co-Zによる楕円曲線加算により(P[i],A,t
i
)←A+P[i-1]を計算し、
楕円曲線2倍算を行う場合、i=2,・・・,dに対して、Co-Zによる楕円曲線2倍算により(P[i],A,t
i
)←2P[i-1]を計算し、
P[i]
X
、P[i]
Y
、P[i]
Z
をそれぞれP[i]のX座標、Y座標、Z座標として、s←t
d
とした後、i=d-1,・・・,1に対して、P[i]
X
←P[i]
X
・s
2
と、P[i]
Y
←P[i]
Y
・s
3
と、P[i]
Z
←P[i]
Z
・sと、s←s・t
i
とを行うことにより、
前記事前計算テーブルT={P[1],P[2],・・・,P[d]}={P,e
2
P,・・・,e
d
P}を計算する、スカラー倍算システム。
【請求項2】
マルチスカラー倍k
0P
0+・・・+k
m-1P
m-1を計算する場合、
前記事前計算部は、各点P
i(i∈[0,m-1])に対して事前計算テーブルT
iを計算し、
前記変換部は、各スカラー値k
i(i∈[0,m-1])をk
i'=k
i0'2
0+k
i1'2
1+・・・+k
in-1'2
n-1(k
ij'∈{0,±e
1,・・・,±e
d})に変換し、
前記評価部は、前記事前計算テーブルT
i(i∈[0,m-1])と変換後のスカラー値k
i'(i∈[0,m-1])とを用いて、マルチスカラー倍k
0'P
0+・・・+k
m-1'P
m-1を計算する、請求項1に記載のスカラー倍算システム。
【請求項3】
楕円曲線上の点に対するスカラー倍を計算するスカラー倍算装置であって、
前記楕円曲線上の点Pとd個の整数e
i(i∈[1,d])とに対して、Co-Z法による楕円曲線加算又は楕円曲線2倍算を利用してヤコビアン座標系のZ座標がすべての点で同一であるd個の点e
iP(ただし、e
1P=P)で構成される事前計算テーブルTを計算する事前計算部と、
スカラー値kを、k'=k
0'2
0+k
1'2
1+・・・+k
n-1'2
n-1(k
i'∈{0,±e
1,・・・,±e
d})と表現されるスカラー値k'に変換する変換部と、
前記事前計算テーブルTと前記スカラー値k'とを用いて、Co-Z法による楕円曲線加算を利用してスカラー倍算k'Pを計算する評価部と、
を有
し、
前記事前計算部は、
予め決められた自然数aに対して、A←aP、P[1]←P(ただし、P[1]のZ座標はAのZ座標と同一)、t
1
をA
Z
=t
1
P
Z
を満たす値(ただし、A
Z
はAのZ座標、P
Z
はPのZ座標)として、
楕円曲線加算を行う場合、i=2,・・・,dに対して、P[i-1]のZ座標がAのZ座標と異なるときはP[i-1]とZ座標が同一になる点にAを変換した上で、Co-Zによる楕円曲線加算により(P[i],A,t
i
)←A+P[i-1]を計算し、
楕円曲線2倍算を行う場合、i=2,・・・,dに対して、Co-Zによる楕円曲線2倍算により(P[i],A,t
i
)←2P[i-1]を計算し、
P[i]
X
、P[i]
Y
、P[i]
Z
をそれぞれP[i]のX座標、Y座標、Z座標として、s←t
d
とした後、i=d-1,・・・,1に対して、P[i]
X
←P[i]
X
・s
2
と、P[i]
Y
←P[i]
Y
・s
3
と、P[i]
Z
←P[i]
Z
・sと、s←s・t
i
とを行うことにより、
前記事前計算テーブルT={P[1],P[2],・・・,P[d]}={P,e
2
P,・・・,e
d
P}を計算する、スカラー倍算装置。
【請求項4】
楕円曲線上の点に対するスカラー倍を計算するコンピュータが、
前記楕円曲線上の点Pとd個の整数e
i(i∈[1,d])とに対して、Co-Z法による楕円曲線加算又は楕円曲線2倍算を利用してヤコビアン座標系のZ座標がすべての点で同一であるd個の点e
iP(ただし、e
1P=P)で構成される事前計算テーブルTを計算する事前計算手順と、
スカラー値kを、k'=k
0'2
0+k
1'2
1+・・・+k
n-1'2
n-1(k
i'∈{0,±e
1,・・・,±e
d})と表現されるスカラー値k'に変換する変換手順と、
前記事前計算テーブルTと前記スカラー値k'とを用いて、Co-Z法による楕円曲線加算を利用してスカラー倍算k'Pを計算する評価手順と、
を実行
し、
前記事前計算手順は、
予め決められた自然数aに対して、A←aP、P[1]←P(ただし、P[1]のZ座標はAのZ座標と同一)、t
1
をA
Z
=t
1
P
Z
を満たす値(ただし、A
Z
はAのZ座標、P
Z
はPのZ座標)として、
楕円曲線加算を行う場合、i=2,・・・,dに対して、P[i-1]のZ座標がAのZ座標と異なるときはP[i-1]とZ座標が同一になる点にAを変換した上で、Co-Zによる楕円曲線加算により(P[i],A,t
i
)←A+P[i-1]を計算し、
楕円曲線2倍算を行う場合、i=2,・・・,dに対して、Co-Zによる楕円曲線2倍算により(P[i],A,t
i
)←2P[i-1]を計算し、
P[i]
X
、P[i]
Y
、P[i]
Z
をそれぞれP[i]のX座標、Y座標、Z座標として、s←t
d
とした後、i=d-1,・・・,1に対して、P[i]
X
←P[i]
X
・s
2
と、P[i]
Y
←P[i]
Y
・s
3
と、P[i]
Z
←P[i]
Z
・sと、s←s・t
i
とを行うことにより、
前記事前計算テーブルT={P[1],P[2],・・・,P[d]}={P,e
2
P,・・・,e
d
P}を計算する、スカラー倍算方法。
【請求項5】
コンピュータを、請求項1
又は2に記載のスカラー倍算システムとして機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スカラー倍算システム、スカラー倍算装置、スカラー倍算方法及びプログラムに関する。
【背景技術】
【0002】
楕円曲線暗号やペアリング暗号を用いた暗号方式では、楕円曲線上のスカラー倍算/マルチスカラー倍算の計算コストが支配的である。このため、スカラー倍算/マルチスカラー倍算を効率的に実行する様々な手法が提案されている。
【0003】
スカラー倍算/マルチスカラー倍算を効率的に実行する手法は、事前計算テーブルを利用する手法と事前計算テーブルを利用しない手法に大別することができる。事前計算テーブルを利用する手法は事前計算付きスカラー倍算/マルチスカラー倍算(又はオンライン事前計算付きスカラー倍算/マルチスカラー倍算)と呼ばれ、w-NAF法やWindow法、Sliding Window法等が知られている。また、Co-Z法を利用して、事前計算付きスカラー倍算における事前計算処理を実行する手法も知られている(非特許文献1)。なお、Co-Z法とはヤコビアン座標系における楕円曲線加算を効率的に計算する手法のことである。
【先行技術文献】
【非特許文献】
【0004】
【文献】永井善孝, 白勢政明, 伊豆哲也, 酒見由美, "Co-Z 法を用いたスカラー倍算の高速化について," SCIS 2014, 2014.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、Co-Z法を利用した従来の事前計算付きスカラー倍算/マルチスカラー倍算では、例えば、一部の処理でCo-Z法を用いずにヤコビアン座標系における楕円曲線加算を行う必要があったり、ヤコビアン座標系からアフィン座標系への変換が必要であったりする。このため、一部の楕円曲線加算が非効率となったり、座標系の変換に余分な計算コストを要したりしている。
【0006】
本発明の一実施形態は、上記の点に鑑みてなされたもので、事前計算付きスカラー倍算/マルチスカラー倍算を効率的に実行することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するため、一実施形態に係るスカラー倍算装置は、楕円曲線上の点に対するスカラー倍を計算するスカラー倍算システムであって、前記楕円曲線上の点Pとd個の整数ei(i∈[1,d])とに対して、Co-Z法による楕円曲線加算又は楕円曲線2倍算を利用してヤコビアン座標系のZ座標が同一のd個の点eiPで構成される事前計算テーブルTを計算する事前計算部と、スカラー値kを、k'=k0'20+k1'21+・・・+kn-1'2n-1(ki'∈{0,±e1,・・・,±ed})と表現されるスカラー値k'に変換する変換部と、前記事前計算テーブルTと前記スカラー値k'とを用いて、Co-Z法による楕円曲線加算を利用してスカラー倍算k'Pを計算する評価部と、を有する。
【発明の効果】
【0008】
事前計算付きスカラー倍算/マルチスカラー倍算を効率的に実行することができる。
【図面の簡単な説明】
【0009】
【
図1】従来のBinary法を用いたマルチスカラー倍算のアルゴリズムの一例を示す図である。
【
図2】従来のw-NAF法による事前計算付きスカラー倍算のアルゴリズムの一例を示す図である。
【
図3】本実施形態に係る事前計算処理のアルゴリズムの一例を示す図である。
【
図4】本実施形態に係る評価処理のアルゴリズムの一例を示す図である。
【
図5】本実施形態に係るスカラー倍算装置のハードウェア構成の一例を示す図である。
【
図6】本実施形態に係るスカラー倍算装置の機能構成の一例を示す図である。
【
図7】本実施形態に係る事前計算付きスカラー倍算のフローチャートの一例を示す図である。
【
図8】実施例におけるw-NAF法による事前計算付きスカラー倍算の事前計算処理のアルゴリズムを示す図である。
【
図9】実施例におけるw-NAF法による事前計算付きスカラー倍算の評価処理のアルゴリズムを示す図である。
【発明を実施するための形態】
【0010】
以下、本発明の一実施形態について説明する。本実施形態では、Co-Z法を利用して、事前計算付きスカラー倍算/マルチスカラー倍算を効率的に実行することができるスカラー倍算装置10について説明する。なお、本実施形態に係るスカラー倍算装置10は、例えば、汎用サーバやPC(パーソナルコンピュータ)、スマートフォン、タブレット端末、組込み機器、ウェアラブルデバイス等の様々な機器で実現可能である。
【0011】
<準備>
まず、いくつかの用語や概念等を準備する。
【0012】
素数p、正の整数cに対して、q=pcとして有限体をFqとする。なお、Fは正確には中抜き文字(黒板太字)で表記されるが、明細書のテキスト中では「F」と表記する。
【0013】
有限体Fq上で定義された楕円曲線Eに対して、楕円曲線上のFq有理点の集合を以下で定義する。
【0014】
E(Fq)={(x,y)∈E|x,y∈Fq}∪O
ここで、Oは無限遠点である。
【0015】
このとき、E(Fq)は加法群をなすことが知られている。すなわち、E(Fq)では、任意のP,Q∈E(Fq)に対して、楕円曲線加算R=P+Q(ただし、P≠±Q)と楕円曲線2倍算R=2Pとが計算できる。また、無限遠点Oは加法群の零元となり、任意の点P∈E(Fq)に対してP+O=Pとなる。なお、以下では、楕円曲線加算及び楕円曲線2倍算をそれぞれ楕円加算及び楕円2倍算ともいう。
【0016】
≪座標系≫
アフィン座標系とは、楕円曲線上の点P∈E(Fq)をP=(x,y)(x,y∈Fq)と表現する座標系のことである。一方で、ヤコビアン座標系とは、楕円曲線上の点P∈E(Fq)をP=(X,Y,Z)(X,Y,Z∈Fq)と表現する座標系のことである。ヤコビアン座標系の点P=(X,Y,Z)(ただし、Z≠0)は、(X/Z2,Y/Z3)=(x,y)という計算によりアフィン座標系の点に変換できる。なお、以下、楕円曲線上の任意の点P∈E(Fq)のヤコビアン座標系におけるX座標、Y座標及びZ座標をそれぞれPX、PY及びPZと表す。
【0017】
≪Co-Z法≫
楕円曲線上の点P,Q∈E(Fq)のヤコビアン座標系における表現をP=(PX,PY,PZ),Q=(QX,QY,QZ)とする。このとき、Co-Z法とは、PZ=QZであれば、楕円曲線加算P+Qを効率的に計算することができる手法のことである。
【0018】
Co-Z法を用いることで、ヤコビアン座標系で以下の楕円曲線加算を効率的に計算することができる。
【0019】
(R,P',t)←P+Q
ここで、点RはP+Qの加算結果、点P'はPと等価でありP'Z=RZ(つまり、P'のZ座標とRのZ座標とが同一)を満たす点、tはRZ=tPZを満たす補助出力である。
【0020】
同様に、Co-Z法を用いることで、ヤコビアン座標系で以下の楕円曲線2倍算を効率的に計算することができる。
【0021】
(R,P',t)←2P
ここで、点Rは2Pの結果、点P'はPと等価でありP'Z=RZを満たす点、tはRZ=tPZを満たす補助出力である。
【0022】
なお、Co-Z法の詳細については、例えば、上記の非特許文献1や参考文献1「N. Meloni, "New Point Addition Formulae for ECC Applications," WAIFI 2007, LNCS 4547, pp. 189-201, 2007.」等を参照されたい。
【0023】
≪スカラー倍算/マルチスカラー倍算≫
楕円曲線上のスカラー倍算とは、楕円曲線上の点P∈E(Fq)と0以上の整数kに対して、
【0024】
【0025】
マルチスカラー倍算とはスカラー倍算の拡張であり、m個の楕円曲線上の点P0,・・・,Pm-1とm個の0以上の整数k0,・・・,km-1に対して、
【0026】
【0027】
スカラー値kiは、nビットの2進数
【0028】
【0029】
このとき、最も基本的なマルチスカラー倍算のアルゴリズムとしてBinary法を用いたものが知られている。このアルゴリズムは事前計算テーブルを利用しない手法である。Binary法を用いたマルチスカラー倍算のアルゴリズムの一例を
図1に示す。
図1に示すように、Binary法を用いたマルチスカラー倍算のアルゴリズムはm個の点P
0,・・・,P
m-1∈E(F
q)とm個のスカラー値k
0,・・・,k
m-1とを入力として、マルチスカラー倍算の結果Rを出力するものであり、R←Oと初期化した上で(1行目)、j=n-1からj=0までjを1ずつ減少させながら3行目~8行目の手続きを繰り返した後(2行目)、最後にRを出力する(10行目)。3行目~8行目の手続きでは、まずR←2Rとした後(3行目)、i=0からi=m-1までiを1ずつ増加させながら5行目~7行目の手続きを繰り返す(4行目)。5行目~7行目の手続きでは、k
i,j=1である場合(5行目)、R←R+P
iによりRを更新する(6行目)。
【0030】
≪事前計算付きスカラー倍算/マルチスカラー倍算≫
以下では、説明を簡単にするため、事前計算付きスカラー倍算について説明する。上述したように、マルチスカラー倍算はスカラー倍算の拡張であるため、以下の説明はマルチスカラー倍算にも容易に拡張可能である。
【0031】
事前計算付きスカラー倍算とは、点P∈E(Fq)とスカラー値kに対して、以下の3つの処理によりスカラー倍算の結果kPを計算するものである。
【0032】
事前計算処理:点P∈E(Fq)とd個の整数e1,・・・,edに対して点eiP(i∈[1,d])となる点を計算し、事前計算テーブルT={e1P,・・・,edP}とする。
【0033】
スカラー値変換処理:スカラー値kを、k0'20+k1'21+・・・+kn-1'2n-1と表現されるスカラー値k'に変換する。ただし、ki'∈{0,±e1,・・・,±ed}である。
【0034】
すなわち、スカラー値変換処理では、2を底、2i(ただし、i∈[0,n-1])に対応する仮数をki'として、kを(kn-1',・・・,k0')と記数法で表現した場合に、各桁が0又は±ei(i∈[1,d])となる値k'に変換する。
【0035】
評価処理:事前計算テーブルTとスカラー値k'を用いて、楕円曲線加算及び楕円曲線2倍算によりk'Pを計算する。
【0036】
事前計算付きスカラー倍算を高速に実行する手法の1つとして、w-NAF法が知られている。w-NAF法による事前計算付きスカラー倍算のアルゴリズムの一例を
図2に示す。
図2に示すように、w-NAF法による事前計算付きスカラー倍算のアルゴリズムは点P∈E(F
q)とスカラー値k∈N(ただし、Nは自然数全体の集合)とウインドウ幅w∈N(ただし、w>1)とを入力として、スカラー倍算の結果R=kPを出力するものであり、事前計算処理(1行目~4行目)とスカラー値変換処理(5行目)と評価処理(6行目~16行目)とを実行した後、最後にRを出力する(17行目)。
【0037】
事前計算処理では、i=1に対してP[i]←PとA←2Pと初期化した後(1行目)、i=1からi=2w-2-1までiを1ずつ増加させながらP[2i+1]←A+P[2i-1]とする(2行目~4行目)。これにより、事前計算テーブルT={P[1],P[3],・・・,P[2w-1-1]}={P,3P,・・・,(2w-1-1)P}が得られる。
【0038】
スカラー値変換処理では、スカラー値kを、k'=k0'20+k1'21+・・・+kn-1'2n-1(ただし、ki'∈{0,±1,±3,・・・,±(2w-1-1)})に変換する(5行目)。
【0039】
評価処理では、R←Oと初期化した上で(6行目)、i=n-1からi=0までiを1ずつ減少させながら8行目~15行目の手続きを繰り返す(7行目)。8行目~15行目の手続きでは、R←2Rとした後(8行目)、ki'≠0かつki'>0である場合はR←R+P[ki']によりRを更新し(11行目)、ki'≠0かつki'≦0である場合はR←R-P[-ki'] によりRを更新し(13行目)、それ以外の場合は何もしない。
【0040】
<本実施形態に係る事前計算付きスカラー倍算/マルチスカラー倍算>
次に、本実施形態に係る事前計算付きスカラー倍算/マルチスカラー倍算について説明する。以下では、説明を簡単にするため、主に、本実施形態に係る事前計算付きスカラー倍算について説明する。上述したように、マルチスカラー倍算はスカラー倍算の拡張であるため、以下の説明はマルチスカラー倍算にも容易に拡張可能である。
【0041】
本実施形態に係るスカラー倍算では、Co-Z法による楕円曲線加算及び楕円曲線2倍算を利用して、事前計算処理で計算する全ての点e1P,・・・,edPのZ座標が同じ値となるような事前計算テーブルTを作成する。これにより、評価処理においてもCo-Z法により楕円曲線加算を効率的に計算することが可能となる。なお、スカラー値変換処理は従来の事前計算付きスカラー倍算(例えば、従来のw-NAF法やSliding Window法等)と同様である。
【0042】
≪事前計算処理≫
点P∈E(Fq)、事前計算処理で計算するd個の点の集合を{P(=e1P),e2P,・・・,edP}とする。また、aをある自然数として、eiPが以下で計算できるとする。
【0043】
eiP←ei-1P+aP又はeiP←2ei-1P
なお、各eiPは、適宜、負の点としてもよい。
【0044】
このとき、全ての点のZ座標が同一である事前計算テーブルT={P,e
2P,・・・,e
dP}を作成する事前計算処理のアルゴリズムの一例を
図3に示す。
図3に示すように、本実施形態に係る事前計算付きスカラー倍算の事前計算処理は点P∈E(F
q)と自然数aを入力として、事前計算テーブルT={P,e
2P,・・・,e
dP}を出力するものである。なお、
図3では、表記を簡単にするため、P[e
i](ただし、i∈[1,d])をP[i]と表記する。
【0045】
図3に示す事前計算処理では、まず、1行目~3行目の手続きでA←aP、P[1]←P、t
1をA
Z=t
1P
Zを満たす値とする。ただし、2行目の手続きでは、A
Z=P[1]
Zとなる点(つまり、P[1]はZ座標がAのZ座標と同一となる点)に変換する。
【0046】
次に、i=2からi=dまでiを1ずつ増加させながら5行目~10行目の手続きを繰り返す(4行目)。5行目~10行目の手続きでは、楕円曲線加算を行う場合に、AZ≠P[i-1]Zの場合はP[i-1]とZ座標が同じとなる点にAを変換し(6行目)、(P[i],A,ti)←A+P[i-1]とする(7行目)。一方で、楕円曲線2倍算を行う場合は、(P[i],A,ti)←2P[i-1]とする(9行目)。なお、7行目ではCo-Z法による楕円曲線加算、9行目ではCo-Z法による楕円曲線2倍算を用いている。
【0047】
続いて、s←tdとした後(12行目)、i=d-1からi=1までiを1ずつ減少させながら14行目~17行目の手続きを繰り返す(13行目)。14行目~17行目の手続きでは、P[i]X←P[i]X・s2とP[i]Y←P[i]Y・s3とP[i]Z←P[i]Z・sとs←s・tiとを行う。これにより、各P[i]=(P[i]X,P[i]Y,P[i]Z)のZ座標は同一となる。
【0048】
そして、最後に事前計算テーブルT={P[1],P[e2],・・・,P[ed]}={P,e2P,・・・,edP}を出力する(19行目)。
【0049】
なお、Co-Z法による楕円曲線加算では、t
iの代わりにt
i
2,t
i
3を計算コストなしで計算することができる。そのため、
図3に示す事前計算処理の14行目~15行目でs
2及びs
3を逐次計算せずに直接計算することで効率化することもできる。
【0050】
また、
図3に示す事前計算処理をマルチスカラー倍算k
0P
0+・・・+k
m-1P
m-1に対して適用する場合、各P
iに対して
図3の1行目~11行目の手続きを実行した後、全てのP
iに対して
図3の12行目~19行目の手続きを実行する。このとき、i≧1のP
iに対して
図3の1行目~11行目の手続きを実行する前に、P
i-1[e
d]のZ座標に対してP
iZ=P
i-1[e
d]
Z(つまり、P
iのZ座標がP
i-1[e
d]のZ座標と同一)となるようにP
iを変換する。
【0051】
≪スカラー値変換処理≫
上述したように、本実施形態に係る事前計算付きスカラー倍算のスカラー値変換処理は、従来の事前計算付きスカラー倍算のスカラー値変換処理と同様である。なお、マルチスカラー倍算k0P0+・・・+km-1Pm-1に対して適用する場合、各ki(i∈[0,m-1])に対してスカラー値変換処理を行えばよい。
【0052】
≪評価処理≫
事前計算テーブルをT、スカラー値変換後のスカラー値をk'=k
0'2
0+k
1'2
1+・・・+k
n-1'2
n-1(ただし、k
i'∈{0,±e
1,・・・,±e
d})とする。このとき、本実施形態に係る事前計算付きスカラー倍算の評価処理のアルゴリズムを
図4に示す。
図4に示すように、本実施形態に係る事前計算付きスカラー倍算の評価処理は事前計算テーブルTとスカラー値変換後のスカラー値k'とを入力として、スカラー倍算の結果R=k'Pを出力するものである。
【0053】
図4に示す評価処理では、まずR←Oと初期化した後(1行目)、i=n-1からi=0までiを1ずつ減少させながら3行目~12行目の手続きを繰り返した後(2行目)、最後にRを出力する(14行目)。3行目~12行目の手続きでは、R←2Rとした後(3行目)、k
i'≠0かつk
i'>0である場合はA←P[k
i']とし(6行目)、k
i'≠0かつk
i'≦0である場合はA←-P[-k
i']として(8行目)、AをR
Z=A
Zを満たす点に変換(つまり、RとZ座標が同一の点に変換)した後(10行目)、R←R+AによりRを更新する(11行目)。一方で、k
i'=0の場合は何もしない。なお、11行目でCo-Z法による楕円曲線加算を用いており、これによりスカラー倍算の効率化が実現される。
【0054】
なお、
図4に示す評価処理はマルチスカラー倍算に対してそのまま適用可能である。
【0055】
<スカラー倍算装置10のハードウェア構成>
次に、本実施形態に係るスカラー倍算装置10のハードウェア構成について、
図5を参照しながら説明する。
図5は、本実施形態に係るスカラー倍算装置10のハードウェア構成の一例を示す図である。
【0056】
図5に示すように、本実施形態に係るスカラー倍算装置10は、入力装置101と、表示装置102と、外部I/F103と、通信I/F104と、プロセッサ105と、メモリ装置106とを有する。これら各ハードウェアは、それぞれがバス107を介して通信可能に接続されている。
【0057】
入力装置101は、例えば、キーボードやマウス、タッチパネル、各種ボタン等である。表示装置102は、例えば、ディスプレイや表示パネル等である。なお、スカラー倍算装置10は、入力装置101及び表示装置102のうちの少なくとも一方を有していなくてもよい。
【0058】
外部I/F103は、記録媒体103a等の外部装置とのインタフェースである。なお、記録媒体103aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
【0059】
通信I/F104は、スカラー倍算装置10を通信ネットワークに接続するためのインタフェースである。プロセッサ105は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の各種演算装置である。メモリ装置106は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ等の各種記憶装置である。
【0060】
本実施形態に係るスカラー倍算装置10は、
図5に示すハードウェア構成を有することにより、後述する事前計算付きスカラー倍算を実現することができる。ただし、
図5に示すハードウェア構成は一例であって、スカラー倍算装置10のハードウェア構成は、これに限定されるものではない。
【0061】
<スカラー倍算装置10の機能構成>
次に、本実施形態に係るスカラー倍算装置10の機能構成について、
図6を参照しながら説明する。
図6は、本実施形態に係るスカラー倍算装置10の機能構成の一例を示す図である。
【0062】
図6に示すように、本実施形態に係るスカラー倍算装置10は、事前計算処理部201と、スカラー値変換処理部202と、評価処理部203とを有する。これら各部は、スカラー倍算装置10にインストールされた1以上のプログラムがプロセッサ105に実行させる処理により実現される。
【0063】
事前計算処理部201は、
図3に示すアルゴリズムにより事前計算処理を実行する。なお、事前計算処理で作成された事前計算テーブルTはメモリ装置106に記憶される。
【0064】
スカラー値変換処理部202は、従来の事前計算付きスカラー倍算のスカラー値変換処理によりスカラー値kをスカラー値k'に変換する。
【0065】
評価処理部203は、
図4に示すアルゴリズムにより評価処理を実行する。これにより、スカラー倍算の結果(又は、
図3に示すアルゴリズムをマルチスカラー倍算に適用した場合はマルチスカラー倍算の結果)が得られる。
【0066】
<事前計算付きスカラー倍算の流れ>
次に、本実施形態に係る事前計算付きスカラー倍算の流れについて、
図7を参照しながら説明する。
図7は、本実施形態に係る事前計算付きスカラー倍算のフローチャートの一例を示す図である。
【0067】
まず、事前計算処理部201は、
図3に示すアルゴリズムにより事前計算処理を実行する(ステップS101)。次に、スカラー値変換処理部202は、従来の事前計算付きスカラー倍算のスカラー値変換処理によりスカラー値kをスカラー値k'に変換する(ステップS102)。そして、評価処理部203は、
図4に示すアルゴリズムにより評価処理を実行する(ステップS103)。ただし、ステップS101及びステップS102は順不同であり、ステップS102が実行された後にステップS101が実行されてもよい。
【0068】
<実施例>
次に、本実施形態に係る事前計算付きスカラー倍算の実施例として、w-NAF法に適用した場合について説明する。楕円曲線上の点P∈E(F
q)とスカラー値kとウインドウ幅wとがスカラー倍算装置10に与えられた場合における事前計算処理と評価処理のアルゴリズムをそれぞれ
図8及び
図9に示す。なお、事前計算処理は事前計算処理部201により実行され、評価処理は評価処理部203により実行される。また、スカラー値変換処理は従来のw-NAF法と同様であるためその説明を省略するが、スカラー値変換処理はスカラー値変換処理部202により実行される。
【0069】
≪事前計算処理≫
図8に示す事前計算処理では、まず、(A,P[1],t
1)←2Pとして(1行目)、i=1からi=2
w-2-1までiを1ずつ増加させながら(P[2i+1],A,t
i+1)←A+P[2i-1]とする(3行目)。なお、1行目の手続きはCo-Z法による楕円曲線2倍算、3行目の手続きはCo-Z法による楕円曲線加算である。
【0070】
次に、
【0071】
【数4】
及びZ←P[2
w-1-1]
Zとした後(5行目~6行目)、i=2
w-2-1からi=1までiを1ずつ減少させながら8行目~11行目の手続きを繰り返す(7行目)。8行目~11行目の手続きでは、P[2i-1]
X←P[2i-1]
X・s
2とP[2i-1]
Y←P[2i-1]
Y・s
3とP[2i-1]
Z←Zとs←s・t
iとを行う。
【0072】
そして、最後に事前計算テーブルT={P[1],P[3],・・・,P[2w-1-1]}={P,3P,・・・,(2w-1-1)P}を出力する(13行目)。
【0073】
≪評価処理≫
図9に示す評価処理では、まず、R←O及びZ←P[1]
Zと初期化した後(1行目~2行目)、i=n-1からi=0までiを1ずつ減少させながら4行目~17行目の手続きを繰り返した後(3行目)、R←(R
X,R
Y,R
Z・Z)としてRを出力する(19行目~20行目)。4行目~17行目の手続きでは、R←2Rとした後(4行目)、k
i'≠0かつk
i'>0である場合はA←P[k
i']とし(7行目)、k
i'≠0かつk
i'≦0である場合はA←-P[-k
i']とする(9行目)。また、k
i'≠0である場合に、R=OのときはR←(A
X,A
Y,1)とし(12行目)、R≠OのときはA←(R
Z
2A
X,R
Z
3A
Y,R
Z)及びR←R+Aとする(14行目~15行目)。一方で、k
i'=0の場合は何もしない。
【0074】
なお、
図9に示す評価処理では、15行目における楕円曲線加算でCo-Z法を用いるために、12行目におけるRの初期値代入の際にZ座標を1に設定している。これにより、RのZ座標が本来の値に対して1/Zされた値となるため、14行目においてR
Zの乗算のみで座標変換ができるようになる。また、19行目において、Z座標に対してZを乗じることで、Z座標を変化させた分の補正が行われ、正しい計算結果が得られる。
【0075】
<従来手法との比較>
ここで、非特許文献1に記載されているCo-Z法を利用した事前計算付きスカラー倍算と、本実施形態に係るスカラー倍算装置10が実行する事前計算付きスカラー倍算とを比較する。
【0076】
非特許文献1には、Co-Z法を利用して事前計算処理を行った後、この事前計算処理で作成された事前計算テーブルを利用して2種類の評価処理を行う手法が記載されている。1つ目は、事前計算テーブルをそのまま利用して、評価処理でヤコビアン座標系の楕円曲線加算と楕円曲線2倍算を用いてスカラー倍算の結果を計算する方法である。2つ目は、事前計算テーブルを構成する点をヤコビアン座標系からアフィン座標系に変換した後、評価処理で、ヤコビアン座標系の楕円2倍算と、ヤコビアン座標とアフィン座標を入力とした混合座標における楕円曲線加算とによってスカラー倍算の結果を計算する方法である。
【0077】
非特許文献1に記載されている1つ目の手法では、事前計算処理でCo-Z法を利用しているため高速である一方で、評価処理における楕円曲線加算はCo-Z法を利用しない通常のヤコビアン座標系における楕円曲線加算であるため低速となる。一方で、2つ目の手法では、同様に事前計算処理は高速であり、評価処理でも高速な混合座標における楕円曲線加算が利用できるが、事前計算テーブルを構成する点をアフィン座標系に変換する必要がある。ヤコビアン座標系からアフィン座標系への変換は、1個の点に対してFq上の乗算及び逆元算を行う必要があり、非効率である。
【0078】
これに対して、本実施形態に係るスカラー倍算装置10が実行する事前計算付きスカラー倍算では、Co-Z法の性質を利用して事前計算テーブルを構成する点のZ座標を同一の値に変換することで、1個の点に対してFq上の乗算を数回程度で行うことで座標変換を行うことができる。また、評価処理では、座標変換とCo-Z法による楕円曲線加算は、混合座標の計算と同等の計算コストで計算することができる。
【0079】
したがって、本実施形態に係るスカラー倍算装置10が実行する事前計算付きスカラー倍算は、非特許文献1に記載されている事前計算付きスカラー倍算のデメリットを解決し、より高速にスカラー倍算を計算することができる。
【0080】
<まとめ>
以上のように、本実施形態に係るスカラー倍算装置10は、従来手法と比較して事前計算付きスカラー倍算を効率的に計算することができる。また、マルチスカラー倍算はスカラー倍算の拡張であるため、本実施形態に係るスカラー倍算装置10は、マルチスカラー倍算についても同様に効率的に計算することができる。
【0081】
なお、楕円曲線暗号は、例えば、SSL/TLS等の安全な通信を行う際に利用されている。また、ペアリング暗号は、例えば、IDベース暗号や関数型暗号等の高機能な暗号方式を構築する際に利用されている。したがって、本実施形態に係るスカラー倍算装置10は、例えば、SSL/TLS等で通信を行う機器、装置又はシステムに適用したり、IDベース暗号や関数型暗号等で鍵生成、暗号化及び復号等を行う機器、装置又はシステム等に適用したりすることが可能である。
【0082】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
【符号の説明】
【0083】
10 スカラー倍算装置
101 入力装置
102 表示装置
103 外部I/F
103a 記録媒体
104 通信I/F
105 プロセッサ
106 メモリ装置
107 バス
201 事前計算処理部
202 スカラー値変換処理部
203 評価処理部