明 細 書
暗号処理演算方法、および暗号処理装置、並びにコンピュータ ·プロダラ ム
技術分野
[0001] 本発明は、暗号処理演算方法、および暗号処理装置、並びにコンピュータ'プログ ラムに関する。さらに詳細には、超楕円曲線暗号におけるスカラー倍算の高速ィ匕を 実現する暗号処理演算方法、および暗号処理装置、並びにコンピュータ 'プログラム に関する。
背景技術
[0002] 昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保 が重要な問題となっている。セキュリティ確保の 1つの方法が暗号技術であり、現在、 様々な暗号ィ匕手法を用いた通信が行なわれて 、る。
[0003] 例えば ICカード等の小型の装置中に暗号処理モジュールを埋め込み、 ICカードと 、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、 認証処理、あるいは送受信データの暗号化、復号化を行なうシステムが実用化され ている。
[0004] 暗号処理を実行する例えば ICカードは、例えば駅の改札などの様々なゲート、ある いはショッピングセンターなどで盛んに利用されるようになっており、小型化および処 理の迅速ィ匕の要求が厳しくなつてきて 、る。
[0005] 暗号化方式には、大別して共通鍵方式、公開鍵方式がある。共通鍵方式は、対称 暗号方式ともよばれ、発信者、受信者の双方で共通の鍵を保有する。共通鍵方式の 代表的な方法として、 DES (Data Encryption Standard)がある。 DESアルゴリズムの 特徴は、暗号化と復号化とをほぼ同じアルゴリズムで実行可能なことである。
[0006] この共通鍵暗号に対して、発信者と受信者の鍵を異なるものとした構成が公開鍵方 式または非対称暗号方式である。公開鍵暗号方式では、暗号化、復号化に共通の 鍵を用いる共通鍵暗号方式と異なり、秘密に保つ必要のある秘密鍵は、特定の 1人 が持てばよいため鍵の管理において有利である。ただし、公開鍵暗号方式は共通鍵
暗号方式に比較してデータ処理速度が遅ぐ一般には、秘密鍵の配送、デジタル署 名等のデータ量の少な 、対象に多く用いられて 、る。公開鍵暗号方式の代表的なも のには RSA (Rivest- Shamir- Adleman)暗号や、楕円曲線暗号(ECC: Elliptic Curve Cryptography)が知られて ヽる。
[0007] 楕円曲線暗号(Elliptic Curve Cryptography)は、素体上の楕円曲線 2 = 3 + & + b (4a3 + 27b2≠0)や、 2の拡大体上の楕円曲線 y2 + xy=x3 + ax2 + b (b≠0)などを 用いる。これらの曲線上の点に無限遠点(O)を加えた集合は、加法に関して有限群 をなし、無限遠点(O)はその単位元となる。以下、この有限群上の点の加法を +で 表す。この有限群上の異なる 2点 P, Qの加算 P + Qを「点の加算」、点 Pと点 Pの加算 P + P = 2Pを「点の 2倍算」と呼ぶ。また、点 Pを k回加算した点 P + P +〜 + P=kPを 求める演算を「点のスカラー倍算」と呼ぶ。
[0008] 点のスカラー倍算は、点の加算、および点の 2倍算を用いて構成できることが知ら れている。素体上の楕円曲線や 2の拡大体上の楕円曲線上のァフィン座標系(X, y) や射影座標 (X, Υ, Z)における点の加算法、点の 2倍算法、および点のスカラー倍 #法は、 IEEE P1363/D13 Standard specifications for Public Keyし ryptographyに 記されている。
[0009] 楕円曲線暗号を一般ィ匕した方式として、 Koblitz、 Cantorによって提案された超楕円 曲線暗号(HECC : Hyper Elliptic Curve Cryptography)方式がある。超楕円曲線喑 号方式については、例えば非特許文献 1、非特許文献 2に記載されている。
[0010] 楕円曲線暗号では有限体 Fq上で定義される楕円曲線上の点を Pとし、スカラー倍 算した点 kP (kEZ)を Qとすると、 Qから kを求める問題は離散対数問題に帰着できる 。一方、超楕円曲線暗号では点の形式的和である因子(divisor)を Dとし、スカラー 倍算 kDで定義される因子を Dとすると、 D力 kを求める問題は超楕円曲線にお
1 2 2
けるヤコビ多様体上の離散対数問題として公開鍵暗号として用いることができる。
[0011] 超楕円曲線では曲線を特徴づける値は種数 (genus) gである。 pを素数、 nを正の 整数、 q = pnとする。このとき有限体 Fq上で定義される種数 gの超楕円曲線 Cは以下 の方程式、
y2 + h (x)y=f (x)
で定義される。ここで、 h (x) , f (x) EFq[x] , f (x)は、次数 2g+ lの monic多項式で ある。
[0012] 超楕円曲線 C上の点 P= (x、 y)に対して共役点(opposite point)は、— P = (x、 y+h(x) )として定義される。また、 P=— Pである点を分岐点(ramification point) と呼ぶ。
[0013] 超楕円曲線暗号の定義体の演算サイズ (ビット長)は楕円曲線暗号と同等の安全 性を仮定した場合、楕円曲線の定義体の演算サイズに比べて lZgに小さくなること が知られている。演算サイズが小さいことは実装上メリットがあり、超楕円曲線暗号の 利点の一つして挙げられる。
[0014] 次に、超楕円曲線暗号の基本事項について説明する。前述したように、超楕円曲 線暗号では点の形式的和である因子(divisor)を Dとし、スカラー倍算 kDで定義さ れる因子を Dとすると、 D力 kを求める問題は超楕円曲線におけるヤコビ多様体上
2 2
の離散対数問題として公開鍵暗号として用いることができる。
[0015] ここで、因子(divisor)は有理点の形式和であり、以下の形式で表現することができ る。
[数 1]
D 二 mtP
[0016] また、半被約因子(semi reduced divisor)は、以下の形式で表現することがで きる。
[数 2]
= ) m,≥0
ただし、 P.= (x.、 y.)かつ i≠jに対して Ρ≠Ρである。
[0017] また、∑ mを Dのウェイト (weight)と呼ぶ。さらにウェイト (weight)が種数 g以下で ある半被約因子を被約因子(reduced divisor)と呼ぶ。
[0018] 超楕円曲線のヤコビ (Jacobi)多様体上の任意の半被約因子 Dは下記の多項式 U
、 VEFq[x]を用いて D= (U、 V)として表現できる。これをマンホード(Mumford) 表現と呼ぶ。なお、マンホード (Mumford)表現については、例えば非特許文献 3に 記載されている。
[数 3] υ = γ\ (χ - χ, Γ
V{xf + V(x)h{x)― f{x)≡ 0 mod U(x\ deg V < degひ
[0019] 種数(genus) 2の任意の被約因子 Dはマンホード(Mumford)表現を用いると、有 限体 Fq上の元を係数に持つ 2次以下の多項式の組、すなわち、
(U、 V) = (x2 + u x+u、 v x+v )、または、
1 0 1 0
(U、 V) = (x + x、 y )
0 0
として表現することができる。
また、零元は、
(U, V) = (l, o) =o
として表現される。
[0020] 次に、超楕円曲線暗号で用いられる因子のスカラー倍算について説明する.因子 のスカラー倍算は加算アルゴリズムと呼ばれる因子の加算と 2倍算組み合わせで計 算することができる。以下では主要な加算アルゴリズムについて説明する。
[0021] 最初に提案された実用的なアルゴリズムは Cantorのアルゴリズムである。このアル ゴリズムについては、例えば非特許文献 1、非特許文献 2に記載されている。このァ ルゴリズムはあらゆる種数の超楕円曲線上の因子に対して適用可能なアルゴリズム であるが、楕円曲線に比べてアルゴリズムが複雑で計算量が多いことが欠点である。
[0022] Harleyは種数 2の超楕円曲線に限定し、因子の weightの場合分けをおこない、そ れぞれの場合で最適化を行うことでより計算量の少な 、アルゴリズムを提案した。この 研究を受けて超楕円曲線暗号 (HECC)における演算アルゴリズムの改良、拡張の 研究が近年盛んになって 、る。
[0023] (ァ) Harleyのアルゴリズムは定義体を素体、種数 2の曲線、因子の表現は Mumfo rd表現を用いている。このアルゴリズムの計算量の改善の研究例として、例えば、非 特許文献 4、非特許文献 5、非特許文献 6などが挙げられる。
(ィ)さらに、定義体を 2の拡大体の場合について拡張した処理例について、非特許 文献 7、非特許文献 8に報告されている。
(ゥ)また、因子の表現に拡張 Mumford表現、 Weighted Coordinateを用いるこ とで計算量を削減した研究として非特許文献 11、非特許文献 12、非特許文献 6、非 特許文献 13がある。
[0024] Harleyアルゴリズムの処理について、図 1を参照して説明する。なお、本発明は、 標数 2の有限体上定義された種数 2の超楕円曲線に関するものであり、以下の説明 では、曲線の種数を 2、定義体の標数を 2とする。
[0025] 図 1 (A)は、種数 2の場合の因子の加算 D +Dの処理例を示した図である。なお、
1 2
因子 D、 Dは、それぞれ D = (U V )、 D = (U、 V )とする。まず、因子のウェイト
1 2 1 1、 1 2 2 2
(weight)の値によって場合分けが行われる。すなわち、 [D +D ]の各ウェイト (wei
1 2
ght)の値によって、
( 1 ) weight 2 + weight 2
( 2) weight 2 + weight 1
(3)例外処理 1
の場合分けが行なわれる。
[0026] 次に weight2同士の加算、すなわち(1) weight2+weight2の場合、因子 D = ( U V )、 D = (U、 V )について、最大公約数 gcd(U、 U ) =1であれば、 2つの
1、 1 2 2 2 1 2
因子 D = (U V )、 D = (U、 V )は、互いに同一または共役点(opposite point
1 1、 1 2 2 2
)を含まない。この場合、
(la)HarleyADD,
すなわちハーレ一アルゴリズムに従った加算処理を行う。(la)HarleyADDの処理 は例えば非特許文献 7に示されている Most Frequent Caseと呼ばれる処理であ る。この Most Frequent Caseは、種数 2の場合の因子の加算 D +D処理にお
1 2 いて、高確率で発生するケースである。
[0027] この(la)HarleyADDの処理は、非常に高い確率でおこる。その他の例外処理の 起こる確率は非常に低い。 Most Frequent Caseの条件を満たさない場合、すな わち、因子 D =(U V)、D =(U、 V )について、最大公約数 gcd(U、U )=1
1 1、 1 2 2 2 1 2 を満足しない場合は、
(lb)例外処理 2を行う。
[0028] (2)weight2+weightlの場合についても同様に、 gcd(U、 U ) =1かどうかをチ
1 2
エックし、 gcd(U、 U ) =1を満足する場合には、
1 2
(2a) ExHarADD2+1→2を実行し、
gcd(U、 U ) =1を満足しない場合には、
1 2
(2b)例外処理 3を行う。
(3)例外処理 1は、 weightの場合分けが上記(1) , (2)以外の場合である。
[0029] なお、上述した種数 2の加算処理のアルゴリズムの詳細については、非特許文献 8 に記載 (Table 1, 2)されている。
[0030] 次に、種数 2の場合の 2倍算の流れを図 1 (B)を参照して説明する。 2倍算は、 D +
D = 2Dの処理である。入力を D =(U , V )とし、出力を D =[2]Dとする。
加算の場合と同様に因子 Dの weightが
(4) weight2、
(5) weight 1、
(6) weightO、
によってそれぞれ異なる処理を行う。
(4)weight2の場合、因子が分岐点を含むかどうかをチェックし、含まなければ、(4 a) HarleyDBLの処理を行う。因子が分岐点を含む場合は (4b)例外処理 6を行う。 g cd(h, Ul)=lであれば、 Dは分岐点を含まない。この場合、(4a) HarleyDBLの 処理を行う。 HarleyDBLの処理アルゴリズムは例えば非特許文献 7に Most Freq uent Caseとして示されている。 HarleyDBLの処理アルゴリズム(Algorithml)を 、以下に示す。
[数 4]
Algorithm 1 HarleyDBL
Input :DX={U )
Output: I -(U2,V2)
Ul (x) = x2 + unx + ui{), V (x) vnx + 1ノ ,, gcd(/?,ひ , ) = 1
1. u; u
2. . ~ h ] (f + hV +V )I U, mod U,
3. v;^SUx+l
4. U:' f + hV;+V IU'
5. ひ 2 MakeMonic (ひ
6. V2 ^V;+hmodU2
7. return/ ひ 2, V2)
後述するように、この処理が非常に高い確率でおこる。その他の例外処理の起こる 確率は非常に低い。上述したように、 Most Frequent Caseの条件を満たさない
場合は例外処理 6を行う。
[0033] weightlの場合も同様に gcd (h, Ul) = lかどうかをチェックし, (5a)の処理、 Ex HarDBL1+1→2もしくは、(5b)の処理である例外処理 7を行う。 ExHarDBL1+1→2の アルゴリズムについては、非特許文献 8 [4. 12. (a) ]に示されている。
[0034] HarleyADD, HarleyDBLは、上述のように most frequent caseと呼ばれ、ラ ンダムに因子を発生させて加算または 2倍算を行うと、非常に高い確率で HarleyAD D、 HarleyDBLの処理になる。なお、この HarleyADD、 HarleyDBLが、 most fr equent caseとなることの説明は、例えば非特許文献 14に説明されている。
[0035] 非特許文献 14によると、この most frequent caes以外の処理になる確率は O (1 Zq)である。ここで qは定義体の要素数であり、安全な暗号用途では qgが 160bit程 度必要になる大きな数であるので現実的には HarleyADD、 HarleyDBLしか発生し な 、状況とみなすことができる。
[0036] 従って超楕円曲線暗号 (HECC)の加算アルゴリズムを Harleyアルゴリズムまたは その改良アルゴリズムを使って、例えば ICカードなどの暗号処理演算手段として実装 する場合、
HarleyADD,
HarleyDBL
だけを実装し、その他の確率的にほとんど起こらない複雑な例外処理についての 演算を実行しない実装とする場合も多い。この場合、例外処理については、 weight の場合分けが必要のない Cantorのアルゴリズムを実行する構成とするなどの方法が 適用される。種数が高くなるほど複雑な例外処理の負担は増すため、非特許文献 9, 10ではこの実装方法にっ 、て説明して 、る。
[0037] 次に超楕円曲線暗号 (HECC)アルゴリズムにおける因子のスカラー倍算について 説明する。超楕円曲線暗号 (HECC)アルゴリズムにおいて、因子のスカラー倍算は 、超楕円加算と超楕円 2倍算の組み合わせで計算することができる。スカラー倍算の アルゴリズムとして基本的な binary法と double - and— add— always法を例に挙げ て説明する。
[0038] 前述したように、楕円曲線暗号では有限体 Fq上で定義される楕円曲線上の点を P
とし、スカラー倍算した点 kP (kEZ)を Qとすると、 Q力 kを求める問題は離散対数 問題に帰着できる。一方、超楕円曲線暗号では点の形式的和である因子 (divisor) を Dとし、スカラー倍算 kDで定義される因子を Dとすると、 D力も kを求める問題は
1 1 2 2
超楕円曲線におけるヤコビ多様体上の離散対数問題として公開鍵暗号として用いる ことができる。
[0039] 因子 Dに対して、スカラー倍算(D = dD)に適用する乗数としてのスカラー値: dの 2 進数表現を、
d= (d 、 、d )、
1-1 0
ただし、 d = l、d = lorOとする。
1-1 1-2, · · ·, 0
[0040] スカラー倍算のアルゴリズムとして基本的な binary法の演算アルゴリズムには、 binary (right— to— left)法
binary (left— to— right)法
がある。
[0041] binary(right— to— left)法は、 dを下位ビットから見ていき、 d = lの場合に、 ] Dを加算することが特徴である。 binary (right -to -left)法のアルゴリズム (Algori thm2)を以下に示す。
[数 5]
Algorithm 2 binary (right-to-left)法
Input D0
Output D = dD
D O
if d
i = 1 then D D + T //加算 Hm'/eyADD
}
return D
一方、 binary (left— to— right)法は、 dを上位ビットから見ていき、毎ビット Dを 2 倍し、 d = lの場合に、ベースポイントを加算することが特徴である。 binary (left -to -right)法のアルゴリズム(Algorithm3)を以下に示す。
[数 6]
Algorithm 3 binary (left-to-right)法
Input Dt)
Output D = dD0
D D0
for i from 1-2 downio 0
{
D r~ [2]D II 2 \ -HarleyDBL
if -1 then D D + D(、 "加算 Haf'/eyADD
}
return D
[0043] 次に、ベースポイントの生成処理について説明する。スカラー倍算の計算を暗号技 術で用いる場合、入力に必要な因子 Dは、
0
(1)事前に決めた因子の場合、
(2)事前に決められないランダムに発生する因子の場合、
の 2つのタイプに分けることができる。
[0044] ここで(1)事前に決めた因子の場合、の入力因子をベースポイントと呼ぶことにする 一般的なベースポイントの生成アルゴリズムを以下に示す。
(a)
定義体 F上の元をランダムに g個選び、 g個の超楕円曲線上の点 P (i=l、 ···、 g)
q i
を生成する。
(al) ランダムに選んだ各元を X座標 X (i=l g)とし、次に超楕円曲線上に乗る ように Xに対応する y座標を求める。
(b)
ベースポイントの因子を D =(U(x)、 V(x))とする。
0
(bl)U(x) = (x— x ) (X— X )…(X— X )
(b2)V(x) =v χβ_ 1+ν xg_2 +〜+vの係数 vを決定する。例えば生成した
g- l g-2 0 i
点が全て異なる場合、 V(x ) =yより Vを求めることができる。
(c) 上記アルゴリズムにより生成される因子は weight gの因子となる。
[0045] スカラー倍算の計算を暗号技術で用いる場合、入力に必要な因子 Dの生成、すな
0
わちベースポイントの生成において、事前に決めた因子を適用する場合、上述の処 理(a)〜(c)によって weight gのベースポイントに適用する因子を求めることができ る。
[0046] さらに、楕円曲線暗号では、有理点の 1Z2倍算が提案されている。例えば、非特 許文献 15、特許文献 1、特許文献 2に楕円曲線暗号における有理点の 1Z2倍算が 示されている。有理点のスカラー倍算を計算する際に、加算と 2倍算を用いるのでは なくて、加算と 1Z2倍算を用いた処理を開示している。
[0047] 楕円曲線暗号の 1Z2倍算は,一般に 2倍算よりも高速であり、結果として 1Z2倍 算を用いたスカラー倍算は高速となる。非特許文献 16によると、プロセッサとして、ィ ンテル社製 [Intel Pentiumlll 800MHz]でソフトウェア実装を行った結果、 1Z2 倍算は、 2倍算に比べて、 Fq, q = 2163の定義体では、約 2. 1倍高速であり、 q = 2233 の定義体では、約 2. 6倍高速であると報告されている。超楕円曲線暗号は、楕円曲 線暗号の一般ィ匕であり、楕円曲線暗号で用いられている演算を超楕円曲線に拡張 できる場合がある。例えば、楕円曲線暗号で y座標を演算で用いないため、高速な計 算を行なうことの出来る Montgomery法力 非特許文献 17、 18において、超楕円 曲線暗号に拡張された例が示されている。超楕円曲線暗号でも、 2倍算よりも高速な 1Z2倍算が実現できれば、因子のスカラー倍算も、従来よりも高速に計算することが 期待できる。し力しながら、従来は、この 1Z2倍算が知られていな力つた。なお、 2倍 算を用いた高速演算手法として発表された文献として、非特許文献 19がある。
特許文献 l : E.Knudsen. COMPUTING METHOD FOR ELLIPTIC CURVE CRYPTO GRAPHY, WO 01/04742 Al, 18 Jan 2001
特許文献 2 : R.Schroeppel. Elliptic curve point ambiguity resolution apparatus and m ethod, WO 01/35573 Al, 17 May 2000
特許文献 1 :N.Koblitz. Hyperelliptic curve cryptosystems. J.Cryptology, vol.1, No.
3, pp.139— 150, 1989.
非特言午文献 2 : D.G. Cantor. Computing in the Jacobian of hyperelliptic curve. Math. Comp" Vol.48, No. 177, pp.95- 101, 1987
特言午文献 3 :「D. Mumford, Tata lectures on theta II, Progress in Mathematics, no. 43, Birkhauser, 1984.」
非特言午文献 4 : K.Matsuo, J.Chao, and S.Tsujn. Fast Genus two hyperelliptic curve c ryptosystems. Technical Report ISEC2001— 31, IEICE Japan, 2001.
非特言午文献 5 : M.Takahashi. Improving Harley algorithms for Jacobians of genus 2 hy perelliptic curves. SCIS2002. (Japanese).
非特言午文献 b : T丄 ange. Inversion-free arithmetic on genus 2 hyperelliptic curves. C ryptology ePrint Archive, 2002/147, IACR, 2002.
特言午文献 7 : T.Sugizaki, K.Matsuo, J.Chao, and S.Tsujn. An extension of Harley a ddition algtorithm for hyperelliptic curves over finite fields of characteristic two. ISE C2002-9, IEICE, 2001
非特言午文献 8 : T丄 ange, Efficient arithmetic on genus 2 hyperelliptic curves over fini te fields via explicit formulae. Cryptology ePrint Archive, 2002/121, IACR, 2002. 特言午文献 9 : J.Kuroki, M.Gonda, K.Masuo, J.Chao and S.Tsujn. Fast genus three hyperellipitc curve cryptosystems. Sし IS2002
特言午文献 10 : J.Pelzl, T.Wollinger, J. Guajardo, and C. Paar. Hyperelliptic curve C ryptosystems: Closing the Performance Gap to Elliptic Curves. Cryptology ePrint A rchive, 2003/026, IACR, 2003.
非特許文献 11 : Y.Miyamoto, H.Doi, K.Matsuo, J.Chao and S.Tsujii. A fast addition algorithm of genus two hyperelliptic curves. SCIS2002. (Japanese).
特言午文献 12 : N.Takahashi, H.Morimoto and A.Miyaji. Efficient exponentiation on genus two hyperelliptic curves (II). ISEC2002- 145, IEICE, 2003. (Japanese)
特言午文献 13 : T.Lange. Weighed coordinate on genus 2 hyperellipitc curve. Crypto logy ePrint Archive, 2002/153, IACR, 2002.
非特言午文献 14 : N. Nagao. Improving group law algorithms for Jacobians of hyperellip
tic curves. ANTS- IV, LNCS 1838, pp.439- 448, Springer- Verlag, 2000. 非特許文献 15 : E.Knudsen. Elliptic Scalar Multiplication Using Point Halving. ASIA CRYPTO '99, LNCS 1716, pp.135— 149, Springer- Verlag, 1999.
非特許文献 16 : K.Fong, D.Hankerson, J.Lopez, and A.Menezes. Field inversion and point halving revised. Technical Report CORR2003— 18, http://www.cacr.math.uwat erloo.ca/techreports/2003/corr2003-18.pdf
非特許文献 17 : S. Dquesne. Montgomery Scalar Multiplication for Genus 2 Curves. ANTS— VI, LNCS 3076, pp.153— 168, 2004.
非特許文献 18 : T. Lange. Montgomery Addition for Genus Two Curves. ANTS- VI, LNCS 3076, pp.309- 317, 2004.
非特許文献 19 : T. Lange. Efficient Doubling on Genus Two Curves over Binary Fiel ds, SAC 2004, pre— proceedings, pp.189— 202, 2004.
発明の開示
発明が解決しょうとする課題
[0048] 現在、実用フェーズに入りつつある楕円曲線暗号 (ECC)アルゴリズムに対して、そ の拡張概念である超楕円曲線暗号 (HECC)アルゴリズムは、現在、学会レベルで高 速アルゴリズムや、その実装方法についての研究が進められている。超楕円曲線暗 号 (HECC)のスカラー倍算の演算時間は、楕円曲線暗号 (ECC)に近づきつつある 程度に過ぎず、さらなる高速ィ匕が望まれている。
[0049] 本発明は、このような現状に鑑みてなされたものであり、超楕円曲線暗号 (HECC) のスカラー倍算の演算時間を短縮し、高速処理可能な超楕円曲線暗号 (HECC)演 算処理を実現する暗号処理演算方法、および暗号処理装置、並びにコンピュータ- プログラムを提供することを目的とする。
[0050] 本発明は、楕円曲線暗号の 1Z2倍算を、超楕円曲線暗号に拡張し高速に計算で きるアルゴリズム、曲線パラメータ、定義体を見つけ、超楕円曲線暗号において 1Z2 倍算を適用した演算処理により、高速演算処理を実現する暗号処理演算方法、およ び暗号処理装置、並びにコンピュータ 'プログラムを提供することを目的とする。
課題を解決するための手段
[0051] 本発明の第 1の側面は、
超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理演算方法であり、 超楕円曲線の因子 Dに対するスカラー倍算の演算において、演算処理として、 1/ 2倍算を含む演算を実行する演算ステップ、
を有することを特徴とする暗号処理演算方法にある。
[0052] さらに、本発明の暗号処理演算方法の一実施態様において、前記演算ステップは 、種数 2、標数 2のランダムパラメータを持つ超楕円曲線の因子 Dに対するスカラー倍 算において 1Z2倍算を含む演算を実行するステップであることを特徴とする。
[0053] さらに、本発明の暗号処理演算方法の一実施態様において、前記演算ステップは 、種数 2、標数 2の h (x) =x2+x+h , f
0 4 =0をパラメータに持つ超楕円曲線の因子
Dに対するスカラー倍算において 1/2倍算を含む演算を実行するステップであるこ とを特徴とする。
[0054] さらに、本発明の暗号処理演算方法の一実施態様において、前記演算ステップは 、種数 2、標数 2の h (x) =x2+h x+h , f =0をパラメータに持つ超楕円曲線の因
1 0 4
子 Dに対するスカラー倍算において 1Z2倍算を含む演算を実行するステップである ことを特徴とする。
[0055] さらに、本発明の暗号処理演算方法の一実施態様において、前記演算ステップは 、種数 2、標数 2の h (x) =xをパラメータに持つ超楕円曲線の因子 Dに対するスカラ 一倍算において 1Z2倍算を含む演算を実行するステップであることを特徴とする。
[0056] さらに、本発明の暗号処理演算方法の一実施態様において、前記暗号処理演算 方法は、予め固定された因子 Dについての [1/2 ]計算値に基づいて、 k , k ', ( k , k ')のいずれが正しいかを記録したテーブルを参照するテーブル参照ステップを
0 0
有し、前記演算ステップは、前記テーブルの参照に基づく判定処理によって、 1Z2 倍算の計算量を削減した演算処理として実行することを特徴とする。
[0057] さらに、本発明の暗号処理演算方法の一実施態様において、前記演算ステップは 入力: D = (U , V )ゝ
2 2 2
出力: D = (U , V ) = [1/2]D 、
ただし、 U (x) =x +u x+u , V (x) =v x+v , gcd (h, U ) = l, i= l, 2、 i il iO i il iO i とした 1Z2倍算の演算アルゴリズムに基づいて導出される以下の関係式、 1/k =h +k u
1 2 1 21
を適用し、逆元演算を行なうことなく乗算および加算処理によって逆元 ΐΖΐ^の値 を算出するステップを含むことを特徴とする。
[0058] さらに、本発明の暗号処理演算方法の一実施態様において、前記暗号処理演算 方法は、
入力: D = (U , V )ゝ
2 2 2
出力: D = (U , V ) = [1/2]D、
1 1 1 2
ただし、 U (x) =x2+u x+u , V (x) =v x+v , gcd (h, U ) = l, i= l, 2、
i il iO i il iO i とした 1Z2倍算演算アルゴリズムにおいて、 lZu を入力値として適用しない設定
21
を持つアルゴリズムに従った演算を実行することを特徴とする。
[0059] さらに、本発明の暗号処理演算方法の一実施態様において、前記暗号処理演算 方法は、種数 2、標数 2の h (x) =x2+ x+h , f =0をパラメータに持つ超楕円曲
1 0 4
線の因子 Dに対するスカラー倍算を実行する演算方法であり、前記演算ステップは、 算出済みの値として lZh 2を入力値として設定し、逆元 lZh 2を算出する処理を実 行することなぐ算出済みの入力値 lZh 2を適用するステップを含むことを特徴とす る。
[0060] さらに、本発明の第 2の側面は、
超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理装置であり、 超楕円曲線の因子 Dに対するスカラー倍算の演算において、演算処理として、 1/
2倍算を含む演算を実行する演算実行部を有することを特徴とする暗号処理装置に ある。
[0061] さらに、本発明の暗号処理装置の一実施態様において、前記演算実行部は、種数 2、標数 2のランダムパラメータを持つ超楕円曲線の因子 Dに対するスカラー倍算に おいて 1/2倍算を含む演算を実行する構成であることを特徴とする。
[0062] さらに、本発明の暗号処理装置の一実施態様において、前記演算実行部は、種数 2、標数 2の h (x) =x2+x+h , f =0をパラメータに持つ超楕円曲線の因子 Dに対
するスカラー倍算において 1Z2倍算を含む演算を実行する構成であることを特徴と する。
[0063] さらに、本発明の暗号処理装置の一実施態様において、前記演算実行部は、種数 2、標数 2の h(x) =x2+h x+h , f =0をパラメータに持つ超楕円曲線の因子 D
1 0 4
対するスカラー倍算において 1Z2倍算を含む演算を実行する構成であることを特徴 とする。
[0064] さらに、本発明の暗号処理装置の一実施態様において、前記演算実行部は、種数
2、標数 2の h(x) =xをパラメータに持つ超楕円曲線の因子 Dに対するスカラー倍算 において 1/2倍算を含む演算を実行する構成であることを特徴とする。
[0065] さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、予 め固定された因子 Dについての [lZ2t>]計算値に基づいて、 k , k ', (k , k ')の
1 1 0 0
V、ずれが正 、かを記録したテーブルを格納した記憶部を有し、前記演算実行部は 、前記テーブルの参照に基づく判定処理によって、 1Z2倍算の計算量を削減した演 算処理を実行する構成であることを特徴とする。
[0066] さらに、本発明の暗号処理装置の一実施態様において、前記演算実行部は、 入力: D =(U , V )ゝ
2 2 2
出力: D =(U , V) = [1/2]D、
1 1 1 2
ただし、 U (x) =x2+u x+u , V (x)=v x+v , gcd(h, U)=l, i=l,
i il iO i il iO i 2、 とした 1Z2倍算の演算アルゴリズムに基づいて導出される以下の関係式、 l/k =h +k u
1 2 1 21
を適用し、逆元演算を行なうことなく乗算および加算処理によって逆元 ΐΖΐ^の値 を算出する構成であることを特徴とする。
[0067] さらに、本発明の暗号処理装置の一実施態様において、前記演算実行部は、 入力: D =(U , V )ゝ
2 2 2
出力: D =(U , V) = [1/2]D、
1 1 1 2
ただし、 U (x) =x2+u x+u , V (x)=v x+v , gcd(h, U)=l, i=l,
il iO i il iO i 2、 i
とした 1Z2倍算演算アルゴリズムを実行する構成であり、 l/u を入力値として適
21
用しない設定を持つアルゴリズムに従った演算を実行する構成であることを特徴とす
る。
[0068] さらに、本発明の暗号処理装置の一実施態様において、前記演算実行部は、種数 2、標数 2の h (x) =x2+h x+h , f =0をパラメータに持つ超楕円曲線の因子 D
1 0 4
対するスカラー倍算を実行する構成を有し、算出済みの値として lZh 2を入力値とし 、逆元 lZh 2を算出する処理を実行することなぐ算出済みの入力値 lZh 2を適用 した演算を実行する構成であることを特徴とする。
[0069] さらに、本発明の第 3の側面は、
超楕円曲線暗号に基づく暗号処理演算をコンピュータ上で実行させるコンピュータ •プログラムであり、
超楕円曲線の因子 Dに対するスカラー倍算の演算において、演算処理として、 1/ 2倍算を含む演算を実行する演算ステップ、
を有することを特徴とするコンピュータ ·プログラムにある。
[0070] なお、本発明のコンピュータ 'プログラムは、例えば、様々なプログラム 'コードを実 行可能なコンピュータ ·システムに対して、コンピュータ可読な形式で提供する記憶 媒体、通信媒体、例えば、 CDや FD、 MOなどの記録媒体、あるいは、ネットワークな どの通信媒体によって提供可能なコンピュータ 'プログラムである。このようなプロダラ ムをコンピュータ可読な形式で提供することにより、コンピュータ 'システム上でプログ ラムに応じた処理が実現される。
[0071] 本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図 面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書において システムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内に あるものには限らない。
発明の効果
[0072] 本発明の構成によれば、楕円曲線暗号の 1Z2倍算を、超楕円曲線暗号に拡張し 、高速演算が実現される。超楕円曲線上の因子の演算を使う暗号処理演算におい て、処理の重い演算は因子のスカラー倍算であり、本発明の処理によりスカラー倍算 を高速ィ匕することで超楕円曲線暗号の処理を大幅に改善することができる。
[0073] 本発明の構成によれば、超楕円曲線暗号の因子 Dに対するスカラー倍算において
、演算処理として、 1Z2倍算を含む演算を実行することでスカラー倍算を高速ィ匕す ることができる。例えば、種数 2、標数 2の h (x) =x2+x+h , f =0をパラメータに持
0 4
つ超楕円曲線の因子 Dに対するスカラー倍算、あるいは、種数 2、標数 2の h (x) =x2 +h x+h , f =0をパラメータに持つ超楕円曲線の因子 Dに対するスカラー倍算、
1 0 4
あるいは、種数 2、標数 2の h (x) =xをパラメータに持つ超楕円曲線の因子 Dに対す るスカラー倍算において 1Z2倍算を含む演算を実行することで、高速演算が実現さ れる。
[0074] さらに、本発明の構成によれば、予め固定された因子 Dについての [lZ2t>]計算 値に基づいて、 k , k ', (k , k ')のいずれが正しいかを記録したテーブルを適用す
1 1 0 0
ることで、因子のスカラー倍算における計算量をさらに削減することが可能となり、さら なる高速ィ匕が実現される。
[0075] さらに、本発明の構成によれば、超楕円曲線暗号の因子 Dに対するスカラー倍算 において、演算処理として、 1Z2倍算を含む演算を実行する構成とするともに、 1/ 2倍算の演算処理において逆元演算の実行回数を減少させるアルゴリズムを適用し たので、因子のスカラー倍算における計算量をさらに削減することが可能となり、さら なる高速ィ匕が実現される。
図面の簡単な説明
[0076] [図 1]種数 2の超楕円曲線暗号のスカラー倍算における加算処理、 2倍算処理のアル ゴリズムについて説明する図である。
[図 2]種数 2の超楕円曲線暗号の 1Z2倍算の場合分け処理について説明する図で ある。
[図 3]HEC_HLVアルゴリズムについて説明するフローチャートを示す図である。
[図 4]HEC_HLV2→1+1アルゴリズムについて説明するフローチャートを示す図であ る。
[図 5]HEC_HLV2→2+2アルゴリズムについて説明するフローチャートを示す図であ る。
[図 6]HEC_HLV1→2+2アルゴリズムについて説明するフローチャートを示す図であ る。
[図 7]本発明の暗号処理演算を実行する暗号処理装置の機能構成を示すブロック図 である。
[図 8]本発明の暗号処理演算を実行する暗号処理実行デバイス例としての ICモジュ ールの構成例を示す図である。
発明を実施するための最良の形態
[0077] 以下、本発明の暗号処理装置および暗号処理演算方法、並びにコンピュータ'プ ログラムの詳細について説明する。
[0078] 本発明は、楕円曲線暗号を一般ィ匕した超楕円曲線暗号 (HECC : Hyper Elliptic C urve Cryptography)についての高速化演算手法である。前述したように、超楕円曲 線では曲線を特徴づける値は種数 (genus) gである。 pを素数、 nを正の整数、 q=pn とする。このとき有限体 Fq上で定義される種数 gの超楕円曲線 Cは以下の方程式、 y2 + h (x)y=f (x)
で定義される。ここで、 h (x) , f (x) EFq[x] , f (x)は、次数 2g+ lの monic多項式で ある。
[0079] 超楕円曲線 C上の点 P = (x、 y)に対する共役点(opposite point)は、— P = (x、 y+h(x) )として定義される。また、 P=— Pである点を分岐点(ramification point) と呼ぶ。
[0080] 超楕円曲線暗号の定義体の演算サイズ (ビット長)は楕円曲線暗号と同等の安全 性を仮定した場合、楕円曲線の定義体の演算サイズに比べて lZgに小さくなること が知られている。演算サイズが小さいことは実装上メリットがあり、超楕円曲線暗号の 利点の一つして挙げられる。
[0081] 前述したように、超楕円曲線暗号では点の形式的和である因子(divisor)を Dとし 、スカラー倍算 kDで定義される因子を Dとすると、 D力 kを求める問題は超楕円
1 2 2
曲線におけるヤコビ多様体上の離散対数問題として公開鍵暗号として用いることが できる。
[0082] ここで、因子(divisor)は有理点の形式和であり、以下の形式で表現することができ る。
[数 7]
D二 ηι,Ρ,
[0083] また、半被約因子(semi reduced divisor)は、以下の形式で表現することがで きる。
[数 8]
D=〉 , -(〉jW,) , >0
ただし、 P = (x.、 y.)かつ i≠jに対して Ρ≠Pである。
[0084] また、∑ mを Dのウェイト(weight)と呼ぶ。さらにウェイト(weight)が種数 g以下で ある半被約因子を被約因子(reduced divisor)と呼ぶ。
[0085] 超楕円曲線のヤコビ (Jacobi)多様体上の任意の半被約因子 Dは下記の多項式 U
、 VEFq[x]を用いて D= (U、 V)として表現できる。これをマンホード(Mumford) 表現と呼ぶ。
[数 9]
,)= ',
V{xf + V{x)h{x)― f(x)≡ 0 mod U(x\ deg Vく deg U
[0086] 種数(genus) 2の任意の被約因子 Dはマンホード(Mumford)表現を用いると、有 限体 Fq上の元を係数に持つ 2次以下の多項式の組、すなわち、
(U、 V) = (x2 + u x+u、 v x+v )、または、
1 0 1 0
(U、 V) = (x + x、 y )
0 0
として表現することができる。
また、零元は、
(U, V) = (l, o) =o
として表現される。
[0087] 本発明は、楕円曲線暗号の 1Z2倍算を、超楕円曲線暗号に拡張し、 2倍算よりも 高速に計算できるアルゴリズム、曲線パラメータ、定義体を見つけ、超楕円曲線暗号 において、 2倍算よりも高速な 1Z2倍算を適用した演算処理を実現するものである。 以下、本発明の実施例として、まず、前半において、以下に示す処理例 1〜6の手法 について説明する。
[0088] (処理例 1:提案法 A1)種数 2、標数 2のランダムパラメータを持つような超楕円曲線 において、因子 Dの 1Z2倍算を計算する方法。
(処理例 2 :提案法 F1)種数 2,標数 2の h (x) =x2+ x+h、 f =0をパラメータに
1 0 4
持つような超楕円曲線において因子 Dの 1Z2倍算を計算する方法。
(処理例 3 :提案法 B1)種数 2、標数 2の h (x) =x2+x+h、f =0をパラメータに持
0 4
つような超楕円曲線において、因子 Dの 1Z2倍算を計算する方法。
(処理例 4 :提案法 E1)種数 2、標数 2の h (x) =xをパラメータに持つような超楕円 曲線において、因子 Dの 1Z2倍算を計算する方法。
(処理例 5 :提案法 C1)種数 2、標数 2のランダムパラメータを持つような超楕円曲線
、 h(x) =x2+h x+h , f =0をパラメータに持つ超楕円曲線、および h(x) =x2+x
1 0 4
+ h、 f =0、または h (x) =xをパラメータに持つような超楕円曲線において、因子 D
0 4
の 1Z2倍算を計算する際に、 1Z2倍したものの候補が 2つ出てくる。 2つの候補のう ち、正しい値を選ぶ必要があるが、選ぶ際に、有限体のトレース、乗算、平方根を計 算する必要がある。どちらが正しいかは、因子 Dに依存する。そのため、因子 Dが固 定されている場合、事前に 2つの候補のうち、どちらが正しいかをテーブルに保持し、
正しい値を選ぶ際に、このテーブルを参照することにより、上記の余計な計算を省略 する方法。
(処理例 6 :提案法 D1)上記処理例 1〜5に示す因子の 1Z2倍算の計算方法を用 いて、因子のスカラー倍算を計算する方法。
[0089] さらに、後半において、上記処理例 1〜3処理例 5〜6をさらに改善した手法として、
(処理例 7 :提案法 A2)種数 2、標数 2のランダムパラメータを持つような超楕円曲線 において、因子 Dの 1Z2倍算を計算する方法。
(処理例 8 :提案法 F2)種数 2,標数 2の h (x) =x2+ x+h、 f =0をパラメータに
1 0 4
持つような超楕円曲線において因子 Dの 1Z2倍算を計算する方法。
(処理例 9 :提案法 B2)種数 2、標数 2の h (x) =x2+x+h、 f =0をパラメータに持
0 4
つような超楕円曲線において、因子 Dの 1Z2倍算を計算する方法。
(処理例 10:提案法 C2)種数 2、標数 2のランダムパラメータを持つような超楕円曲 線、 h(x) =x2+h x+h , f =0をパラメータに持つ超楕円曲線、および h(x) =x2 +
1 0 4
x+h、f =0をパラメータに持つような超楕円曲線において、因子 Dの 1Z2倍算を
0 4
計算する際に、 1Z2倍したものの候補が 2つ出てくる。 2つの候補のうち、正しい値を 選ぶ必要があるが、選ぶ際に、有限体のトレース、乗算、平方根を計算する必要があ る。どちらが正しいかは、因子 Dに依存する。そのため、因子 Dが固定されている場 合、事前に 2つの候補のうち、どちらが正しいかをテーブルに保持し、正しい値を選 ぶ際に、このテーブルを参照することにより、上記の余計な計算を省略する方法。
(処理例 11 :提案法 D2)上記処理例 7〜10に示す因子の 1Z2倍算の計算方法を 用いて、因子のスカラー倍算を計算する方法。
[0090] 以下、各処理例について、順次、その詳細を説明する。
[0091] [処理例 1 :提案法 A1]
処理例 1 (提案法 A1)は、種数 2、標数 2のランダムパラメータを持つような超楕円曲 線において、因子 Dの 1Z2倍算を計算する方法である。
[0092] また、これから扱う因子は位数カ^のものとする。つまり、扱う因子は分岐点を持たな い。入力因子を、
D = (U , V )ゝ
U =u x +u x + u ゝ
2 22 21 20
V =V X + V 、
2 21 20
ここで、 Dの weightが 2の場合は u = 1、
2 22
Dの weightが 1の場合は u =0、 u = l、v =0とする。
2 22 21 21
分岐点を持たないため、 1Z2倍算として、
ExHarDBL
1 +1→2、
ExHarDBL
2+2→2、および、 HarleyDBL の 4つの逆演算を考えればよ!、。 HarleyDBL以外は例外ケースである。
[0093] ここで ExHarDBL2+2→1は入力因子の weightが 2で、出力因子の weightが 1の場 合を計算する方法である。また、 ExHarDBL2+2→2 は入力因子の weightが 2で、か つ Uの 1次の項の係数が u =0を満たし、出力因子の weightが 2の場合を計算す
2 21
る方法である。ただし、 ExHarDBL2+2→2は HarleyDBLで計算できる力 これの逆 演算である 1/2倍算は、例外ケースとなるため、ここでは、 ExHarDBL2+2→2を例外 ケースとして扱う。
[0094] これら、 ExHarDBL
1+1→2、
ExHarDBL
2+2→2、および、 Harle yDBLに対応する 1/2倍算をそれぞれ、 ExHEC— HLV
2→1+1、 ExHEC— HLV
1→ 2+2、 ExHEC— HLV
2→2+2、および HEC— HLVとする。
[0095] 因子の 1Z2倍算を行なう場合、まず、入力因子により、図 2に示す通りに場合分け を行なう。入力因子の weightが 2で、かつ Uの 1次の項の係数が u ≠0を満たす場
2 21
合は、 HEC HLVで計算を行なう。また、入力因子の weightが 2で、かつ Uの項
― 2 の係数が u =0を満たす場合は、 ExHEC HLV2→2+2、もしくは、 ExHEC HLV
21 ― ―
2→1+1で計算を行なう。また、入力因子の weightが 1の場合は ExHEC— HLV1→2+2 で計算を行う。 HEC—HLVのアルゴリズムについて、図 3を参照して説明する。
[0096] 図 3は、 HEC—HLVのアルゴリズムを示すフローチャートである。
ステップ S101において、入力を、
D = (U , V )ゝ
2 2 2
U =x +u x + u ゝ
2 21 20
V =V X + V 、
2 21 20
とする。
[0097] ステップ S102において、 k h +k 2u +1 = 0の根、 k , k 'を求め、ステップ S103
1 2 1 21 1 1
において、 c f +hv +u + (f +u )u とおき、ステップ S104において、 k h
1 3 2 21 20 4 21 21 1 0
+k h +k 2u +c =0が根を持つか否かを判定し、根を持たない場合は、ステップ
0 1 0 21 1
S105において、 k k,とし、根を持つ場合は、ステップ S106に進み、 kh +kh
1 1 1 0 0 1
+ k 2u +c =0の根、 k, k,を求める。
0 21 1 0 0
[0098] 次にステップ S107に進み、 u を計算し、ステップ S108において、 xh +x2u +1
11 2 11
=0が根を持つ力否かを判定し、根を持たない場合は、ステップ S 109において、 k
0 k 'とし、根を持つ場合は、ステップ S110に進み、 u を計算する。さらに、ステップ
0 10
S111【こお!/ヽて、 V , V を計算し、ステップ S112【こお!/ヽて、
11 10
2
U X +u x + u
1 11 10
V V x+v
1 11 10
として、
ステップ S113において、出力、
D ^ (U , V )
を得る。
[0099] 因子の 1Z2倍算は、因子の 2倍算を行うアルゴリズム、すなわち、以下に示す [Alg orithm 1 HarleyDBLj
[数 10]
Algorithm 1 HarleyDBL
Input Ό
Output :D2 ={U2 2)
Ul (x) - x2 + iinx + uj0, Vt(x) = virY + v;0, gcd(?,ひ = 1
1. ひ; ひ,2
2. S <- {f + hV +V;)IU, mod U,
3. V;^SU +V}
4. U2' ^(f + hV;+v;2)IU'
5. ひ 2 MakeMonic ( ;)
6. V2 - l + h mod U2
7. return Z)2 =(f/2, V)
[0100] 上記アルゴリズム 1[ Algorithm 1 HarleyDBL]を逆から計算することにより実現 する。 Algorithm 1のステップ 6では、
V '+h=(k x+k )U +V
1 1 0 2 2
を満たすような多項式、
k(x)=k X + k
1 0
が唯一存在する。
[0101] これを、
V ' = h+(k x+k )U +V
1 1 0 2 2
と式変形し、ステップ 4に現れる式、
(f+hV '+V '2)
に代入すると、ステップ 4は、次のようになる。
U 'U ' = f+h(kU +V ) +k2U 2+ν 2· · '式(1)
2 1 2 2 2 2
上記式において、
(U , V )は分かっているので、式(1)から、 kと U 'との関係式が得られる。
U =k U
2 1 2
であることに注意する。
[0102] 上記式(1)を展開して整理すると、次のようになる
U X + ((k h +k u +l)/k )x + ((k h +k h +k u +k c )/k
1 1 2 1 21 1 1 1 0 2 1 20 0
)x2+((k h +k h +k 2u +c )/k 2)x+(k h +k 2u +c )/k 2
1 0 0 1 0 21 1 1 0 0 0 20 0 1
···式 (2)
ここで,
c =f +u
2 4 21
c =f +h v +u +c u
1 3 2 21 20 2 21
2
c =f +h v +h v +v +c u +c u
0 2 2 20 1 21 21 2 20 1 21
を満たす。
[0103] また、ステップ 1より、
U ' = U 2、
つまり、
τ τ , 4 , 2 2 , 2
U =χ十 u χ十 u
1 11 10
···式 (3)
が成り立つ。
[0104] 上記式 (2)、 (3)の各係数を比較することにより、関係式を導き、この関係式を解くこ とにより、 1/2倍算が計算できる。上記の処理手順を示すアルゴリズムを以下に、ァ ルゴリズム 4 [Algorithm 4 Sketch HEC_HLV]として示す。
[数 11]
Algorithm 4 Sketch HEC _HLV
Input: D2 = (ひ 2, K- )
Output: Ό = φχ ) = [1 / 2]D2
U^x) = x2 +/Λ,Χ + /0, Vi(x) = v x + vil1, gcd(?,ひ,) = 1, i-l,2
1. reconstruct k0,kx
1.1 V; - 2+A + kU2 , k{x) = k,x + k0
1.2ひ; (/ + hVt'+ V;2 ) /(ん,2ひ 2 )
1.3 derive k(、,k、 from coeff(i/, 3) = 0,coeff(i/;, I)二 0
2. compute nu by substituting 。,ん, in coeff (ひ, 2)
3. compute //,,, by substituting k,)7k in coeff (ひ】', 0)
5. ί ^F,+/7 + W/2 modi/,
6. return D, = (ひい )
具体的には,次の関係式が得られる。
[数 12]
U\0 = Λ Ο ) ^ ll20 ^co ん 1
これらの関係式から,正しい k , kを計算する必要がある力 これは、次の補題によ
つて計算でさる。
[補題 1]
h(x)を既約多項式であると仮定する。このとき、式 (4) , (5)を満たす 1^は唯一であ る。また、式(5)は、正しい kに対してのみ、根を持つ。また、 Algorithm4での 1Z2 倍された因子 Dを計算できる kは唯一存在する。また、以下に示す式、
1 0
xh +x2u + 1 = 0
2 11
は、正しい kに対してのみ根を持つ。
0
Algorithm4に対して上記補題 1を適用した。詳細な 1Z2倍算の計算方法を以下 のアルゴリズム 5 [Algorithm 5 HEC_HLV]として示す。
[数 13]
Algorithm 5 HEC— HLV
Input: D2 = (ひ 2 , V2 )
ひゆ" A = (ひい ίく) = [1/2]β:
こ/, (χ) -χ
2 + it x +
i0, 1' (x) = ν
ιΓτ + ν,。 , gcd(/?, ί , ) = 1, = 1, 2
?/
2] //? */
k、 - Η(γ) , k[ ~ + or
2. Select correct k、 by solving ん 。 + k0h} + 〃 21 +c = 0
Ct - f2 + 2 + ' 21 + V21 + 〃2。 +C1〃21
a <r- h、/'ii2、, γ <r- (c +ん 0)/("21ひ2)
if Tr(j) = l then kx r- k', γ < - (c, +klh„)l{iizxa2)
ん。 - U( )a, k[ ^kx+a
3. Select correct k0 by checking trace of χίιΊ +x~n +1 = 0
if Tr ( 二 1 then
k0 - k:、, uu <-」kfy + k0h2 +1(;Ίι2、十 ^ +c2 /ん,
4. Compute Ul
5. Compute \ - V2 +h + kU7 mod Ux
w — h2 + w21 +k" +krii
vn — v2l + ?, + 〃 2。 +k0i<,、 + //10 r, +iinw
6. U、 (x) - x2 +//nx + w10, \ (x) <— vnx + v|n
7. return Dx = (ひい
上記アルゴリズム 5[Algorithm5]では、 k 'が正しい値(言い換えると が 正しくない値)である場合、計算量は、
32M + 5S + 6I + 3SR+2H + 2T
となる。ここで M, S, I, SR, H, Tはそれぞれ有限体上の乗算、 2乗算、逆元演算、
平方根演算、ハーフトレース(二次方程式の根を求める演算)、トレース(二次方程式 の根がある力否かの判定)を意味する。この k ', k 'が正しい値である場合、計算量
1 0
は最も多くなる。
[0109] 次に k , kが正しい値 (言い換えると k ', k 'が正しくない値)である場合、計算量は
1 0 1 0
最も少なくなり、ステップ 2では 2Mの計算量が削減でき、ステップ 3では、 2M+ 1SR の計算量が削減できる。つまり、この場合の計算量は、
28M + 5S + 6I + 2SR+ 2H + 2Tとなり、計算量は最も少なくなる。
[0110] 次に k , k 'が正しい値(言い換えると k ', kが正しくない値)である場合,ステップ 3
1 0 1 0
では、 2M+ 1SRの計算量が削減できる。つまり、この場合の計算量は、
30M + 5S + 6I + 2SR+ 2H + 2Tとなる。
[0111] 最後に k ', kが正しい値 (言い換えると k , k 'が正しくない値)である場合、ステツ
1 0 1 0
プ 2では, 2Mの計算量が削減できる。つまり、この場合の計算量は、
30M + 5S + 6I + 3SR+ 2H + 2Tとなる。
[0112] 上記の 4つの場合が発生する確率を、計算機実験によって確認した結果、ほぼ同 じ割合で発生していることが確認された。これ以降は、上記 4つの場合が生じる確率 は等しいとする。上記 4つの場合の計算量の平均をとると、
30M + 5S + 6I + 2. 5SR+ 2H + 2T
となる。
[0113] 次に、例外ケースの、
ExHEC— HLV2→1+1、
ExHEC— HLV1→2+2、
ExHEC— HLV2→2+2、
について考える。これらが発生する確率は無視できる程度であるので、計算量の評 価は行なわない。
[0114] まず、 ExHEC— HLV2→1+1、のアルゴリズムを、図 4のフローを参照して説明する。
ExHEC— HLV2→1+1は、 ExHarDBL1 +1→2を逆カゝら計算することにより実現する。 ExHarDBL1+ 1→2の入力因子を、
D = (U、 V )、U =x + u 、V =v 、
とすると、出力因子、
D = (U、 V ) =2D、 U =x2 + u x、 V =v x+v 、
2 2 2 1 2 20 2 21 20
は、次のように計算できる。
U =x2 + u =(x + u )2、
2 20 10
v =(u 4 + f u 2 + f +h v )/h(u ),
12 10 3 10 1 1 10 10
V =V +V U
20 10 21 10
[0115] この関係式を用いて、 ExHEC_HLV2→1+1を計算する。
入力因子を、
D =(U、 V )、U =x2 + u x、V =v x+v 、
2 2 2 2 20 2 21 20
とする(図 4のフロー:ステップ S201)と、
出力因子、
D =(U、 V ) = [1Z2]D、U =x + u 、V =v 、
1 1 1 2 1 10 1 10
を求めるため、
ステップ S202において、 u =- u 、
10 20
ステップ S203において、 v =(v h(u )+u +f u +f )Zh、
10 21 10 10 3 10 1 1
とし、ステップ S204にお!/ヽて、
U =x+u 、 V =v 、
1 10 1 10
として、ステップ S205において、
出力因子、
D = (U、 V )
を得る。
[0116] 次に、 ExHEC— HLV2→2+2、の処理手順について、図 5のフローを参照して説明 する。ステップ S 301において、入力因子を、
D =(U、 V )、U =x2 + u 、V =v x+v 、
2 2 2 2 20 2 21 20
とする。
[0117] ステップ S302において、 k h +1 = 0を kに関して解き、 k lZhとする。
1 2 1 1 2
ステップ S303において、
c— f
c f +h v +u +u c
1 3 2 21 20 21 2
として、ステップ S304において、
k h +k h +c =0を kに関して解き、 k (k h +c ) Zhとする。
1 0 0 1 1 0 0 1 0 1 1
[0118] 次に、ステップ S305において、 u を計算し、ステップ S306において、
11
xh +x2u + 1 = 0
2 11
が根を持つ力否かを判定し、根を持たない場合は、ステップ S307において、 D HEC HLV2→1 (D )
1 ― 2
によって出力 Dを決定 (ステップ S308)する。
[0119] 一方、
xh +x2u + 1 = 0
2 11
が根を持つ場合は、ステップ S309に進み、 u を計算し、さらに、ステップ S310
10
お!/ヽて V , V を計算し、ステップ S311【こお!/ヽて、
11 10
2
U X +u x + u
1 11 10
V V x+v
1 11 10
として、ステップ S312において出力、
D ^ (U , V )
を得る。
[0120] この、 ExHEC— HLV2→2+2、の処理は、具体的には、以下の手順で行なわれる。
入力因子を、
D = (U、 V )、U =x2 + u 、V =v x+v 、
2 2 2 2 20 2 21 20
として、
U =x2 + u 、
2 20
の場合、つまり Uの 1次の項が 0の場合、出力因子の候補は 2つあり、それらを、
2
D = (x + u , V ( u ) )
1 20 2 20
D = (x +u x + u , ν x+v )
1 11 10 11 10
と表す。
[0121] Dが正しければ、 ExHEC_HLV2→1+1で計算する。
D 'が正しければ、 ExHEC HLV2→2+2を用いて計算する。
どちらのアルゴリズムを用いるかは、次の手順で判定する。
1. D 'が正しいと仮定する。
2. u を計算する。
11
3. xh +x2u + 1 = 0のトレース Tr (h /u 2)を計算する。もし Tr (h /u 0
2 11 2 11 2 11 ならば D 'が正しいので、 ExHEC_HLV2→2+2を用いて計算する。そうではなくて Tr (h Zu 2) = 1ならば、 Dが正しぐ ExHEC_HLV2→1+1を用いて計算する。
2 11 1 一
ExHEC_HLV2→2+2の計算アルゴリズムを、アルゴリズム 6 [Algorithm6]として 以下に示す。
[数 14]
Algorithm 6 ExHEC _HLV2→2+2
hip'ut: D 二 (ひ, ,V2)-{x^ +w?0, v21 + v20 )
Output: = (ひい )二 (JT +? , x + 0 ,、Ί ) Λ: + vI0 )二 [1 / 2] i¾
一 gcd(/?,ひ ,) = 1, z:l,2
1. Solveん〗/72+l = 0
k lh
2. Select correct k} by solving kxhb +k0hx +c} 二 0
2^f4, cx <- f3 +h2v2l +?/20 +c2 2l
c0 /2 +h2v20 +(h, +v21)v21 +c2w2(J +cxti2X
A+ h
3. Select correct algorithm by checking trace of xh
2 +x
2u
u +1 = 0
Dl ^ExHEC_HLV2→]+](D2), return Dx Compute ϋ
5. Compute V 二 2 +み +んひ2 modひ】
vii \ + iw 2。 + o + unw
V10 V20 + 。 + 。 。 +ΜΗ^
6. ΙΙλ{χ) - + uX + t(]0, l (χ) <- ν,,χ + ν10
7. return = (ひい )
次に、 ExHEC_HLV1→2+2、の処理手順について、図 6のフローを参照して説明 する。ステップ S401iこお ヽて、人力を、
D = (U , V )ゝ
2 2 2
U =x+u 、
2 20
V =v 、
とする。
[0123] ステップ S402において、 c f +u として、ステップ S403において、 k h +k 2u
3 4 20 1 2 1 2
+ c =0の根、 k , k 'を求め、ステップ S404において、
1 3 1 1
C f + C U 、
2 3 3 20
c f +h v +c u 、
1 2 2 20 2 20
とおき、ステップ S405において、 k h +k h +k 2+c =0が根を持つか否かを判
1 0 0 1 0 1
定し、根を持たない場合は、ステップ S406において、 k k 'とした後、ステップ S40 7に進み、根を持つ場合はそのままステップ S407に進む。
[0124] ステップ S407では、 k h +k h +k 2+c =0の根、 k , k 'を求め、次にステップ S
1 0 0 1 0 1 0 0
408に進み、 u を計算し、ステップ S409において、 xh +x2u + 1 = 0が根を持つ
11 2 11
か否かを判定し、根を持たない場合は、ステップ S410において k k 'とした後ステ
0 0
ップ S411に進む。根を持つ場合は、そのままステップ S411に進み、 u を計算する
10
。さらに、ステップ S412において、 V , V を計算し、ステップ S413において、
11 10
2
U X +u x + u
1 11 10
V V x+v
1 11 10
として、
ステップ S414において、出力、
D ^ (U , V )
を得る。
[0125] ExHEC— HLV1→2+2の計算手順は、 HEC— HLVと似て!/、るが、大きな違いは入 力因子の weightである。そのため、 ExHEC— HLV1→2+2の f+hV ' +V '2は、 5次 のモニック多項式となり、
U '^ (f+hV ' +V '2) /υ、
1 1 1 2
は HEC— HLVのように k 2で割ることはない。 ExHEC— HLV1→2+2の計算アルゴ リズムを、アルゴリズム 7 [Algorithm7]として以下に示す。
[数 15]
Algorithm 7 ExHEC― HL Vl→2 ' 2
1,": D2 = (ひ 2 ,V2)^(x + «20 , v20 )
Outp t : Z), = (ひい O (x2 + x + iiw, v„ c + vK,) = [1/2]Z¾
— gcd(/?,ひ,) =1, /' = 1, 2
c3 f4 +w20, <^h2, γ - ci /(u2la2)
k、 - H(x)or, k[ <r- kY +a
2. Select correct k、 by solving kh。 +k0 + + c, =0
c2 ブ3 +c3//20, c{ <r- f2 +h2v20 +c ½, n - f、 +hxv20 +c,u20 ar ~ ¾, γ <— (c, +kih0)l 2
if Tr( ) = 1 then ' <~ ', γ — (c, +kxh())l a2
k。 <r- ¥ί(χ)α, k[ ^kx+a
3. Select correct k
0 by checking trace of xh +x"//
n +1 = 0
4. Compute Ux
5. Compute = +Λ十 ひ 2 modひ ,
— 72 + k、
vu — +ん】 M,()十ん。
νι。 ^+^+^ί^+,/,^
6.ひ】 (χ) <— χ2 + Uj tx + w, V (x) <— v, xx + v10
7. return D, = U, )
[0126] [処理例 2:提案法 Fl]
処理例 2(提案法 F1)は、種数 2,標数 2の h(x) =x2+h x+h、 f =0をパラメータ
1 0 4
に持つような超楕円曲線において因子 Dの 1Z2倍算を計算する方法である。
[0127] Algorithm5を良く見ると、 h(x)の係数との乗算、 h(x)の係数の逆元演算が多くあ る。つまり、 h(x)の係数を工夫することにより、乗算および逆元演算の計算量を削減
することができる。なお、文献(非特許文献 19 : T. Lange. Efficient Doubling on Genu s Two Curves over Binary Fields, SAC 2004, pre- proceedings, pp.189- 202, 2004.) では、高速化のため、 h = 1、 f =0を用いている。このパラメータを用いた場合の Ha
2 4
rleyDBLの計算量は、 21M + 5S + IIである。
[0128] ここで説明する処理例 2 (提案法 F1)もこれに条件を合わせることにするが、補題 1 より、 h (x)は既約多項式を仮定しているため、
h(x) =x2+h x+h、
1 0
Tr(h /h 2) = 1[0]
0 1
とする(二次方程式 ax2 + bx + c = 0が既約多項式であるための必要十分条件は Tr (ac/b2) = 1である)。この場合の計算法をアルゴリズム 8 [Algorithm 8]HEC_H LV (h = 1、 f =0)に示す。
2 4
[0129] [数 16]
Algorithm8 HEC— HLV (h2二 f4二 Q、
hip t: D2二 (U2, V2 ), 画/ = 1///21, 1/ h
Output: D
} 二(ひい 二 [1/2]Z)
2,
U^x) = x2 +//7lx + w.0, Vf (x) = vrr + i0, gcd(z,ひ = 1,/. 二 1,2
1. Solved +k~^u2X +1 = 0
a ~ inv , k r- H(//2] )a, k[ ^ kx^-a
2. Select correct kA by solving k{h0 + hj +ん 0 2"21 +^ 二 0 c f2 + v20 + v21 (h, + v2l ) + u2 (u20 + c, )
^。 2\ Ζ^ί—, a ^~ a-> 7 ^ (C\ + Λ))Ή,
if Ύτ(γ) = 1 then k、 - k[, γ ~ (c +^ ?0)^{)
k0 ^r- H ( び, k0' ^k()-\-a
3. Select correct k() by checking trace of r + x2//u +1 = 0
Vt'
D 2,
r- IV
0/
20 +k l十〃
21
W2 kQ +-^W +k0, W3 r~ k0' + , W4 - M^W,
if Tr(x) - 1 then
k0 k0', u ^ww^ w2 ^
inv r- M„3
4. Compute U、
u ん 0//2n, w5 ん い H'6 (ん () + k{ )(w20 + //21 )
5. Compute 二 V2 +お + ひ2 mod !—
W4 r~W5 +k0 -\~], W5 + W5 + W6 + V2] + h、
W6 r- + 20 + h0, W7 r- + W4
M πν·/10, w3 {k +W7)(N] +//N)
6.ひ ) x2 + wnx + /10, V(x) vnx + v10
7. return D{ - (こ/い J^), invu
また、逆元演算の回数を削除するため、モンゴメリトリックと呼ばれる手法を用いてい る。これは、例えば 3個の有限体の元 a、 b、 cの逆元を求めたい場合、まず、 3つの元
の積を求め、これの逆元を w= lZ (a * b * c)などと求める。次に、 aの逆元を求める 場合は、 w * b * cを計算する。 b、 cの逆元も同様にして、 w* a * c、w* a * bとそれ ぞれ計算する。
[0131] 通常、逆元演算は、乗算の数倍程度 (後で示すが、ソフトウェア実装を行った結果、 逆元演算は乗算の 8倍程度)の計算量である。そのため、例えば 3つの元の逆元を求 める場合、素直に 3回逆元演算を行えば、 I = 8Mと仮定すると、 24Mの計算量となる 。逆に、前述のモンゴメリトリックを用いた場合は、 I + 8M= 16Mとなり、 3回逆元演算 を行うよりも高速である。
[0132] ここで説明している処理例 2 (提案法 F1)では、このモンゴメリトリックを用いて、 u
11 の逆元を求めている。 u の逆元は、次回の
11 1Z2倍算の入力として与える。そのため
、 Algorithm8は、 [l/^Dを計算することができ、因子 Dのスカラー倍算を行う場 合、 right— to— left法、つまり、 [lZ^Dを加算する方法に適用できる。 1Z2倍算 を用いたスカラー倍算については、後ほど述べる。また、この計算量は次の通りであ る。
(a) k , kが正しぃ値でぁる場合:24M + 2S + 1I + 3SR+ 2H + 2T
1 0
(b) k , k 'が正しい値である場合: 26M + 2S + 1I + 3SR+ 2H + 2T
1 0
(c) k ', kが正しぃ値でぁる場合:25M + 2S + 1I + 3SR+ 2H + 2T
1 0
(d) k ', k 'が正しい値である場合: 27M + 2S + 1I + 3SR+ 2H + 2T
1 0
上記(a)〜(d)のすべてについて平均すると、 25. 5M + 2S + 1I + 3SR+ 2H + 2 Tとなる。
[0133] HarleyDBLの計算量は、 21M + 5S + IIであった。ここで、文献 [ (非特許文献 15 ) E.Knudsen. Elliptic Scalar Multiplication Using Point Halving. ASIACRYPTO '99, LNCS 1716, pp.135- 149, Springer- Verlag, 1999.]によると、有限体が正規基底で定 義されている場合、 S (2乗算), SR (平方根演算), H (ハーフトレース (二次方程式 の根を求める演算)), T (トレース(二次方程式の根がある力否かの判定))の計算量 は無視することができ、 M (乗算), 1 (逆元演算)の計算量のみ考慮すればよいことが 知られている。そのため、正規基底を用いた場合、 Algorithm8は HarleyDBLよりも 4. 5M低速となる。
[0134] また、有限体が多項式基底で定義されている場合、文献 [ (非特許文献 16) K.Fo ng, D.Hankerson, J.Lopez, and A.Menezes. rield inversion and point halving revise d. Technical Report CORR2003— 18, http://www.cacr.math.uwaterloo.ca/techreport s/2003/ corr2003- 18.pdfl8]によると、通常 SR (平方根演算), H (ハーフトレース( 二次方程式の根を求める演算))の計算量は、 M (乗算)との対比において、 SR=H =0. 5M程度であることが知られている。また、 T (トレース(二次方程式の根があるか 否かの判定))の計算量は無視できる。さらに S (2乗算)の計算量は、 M (乗算)の数 分の 1程度であることが知られている。し力しながら、 SRの計算量は、多項式基底の 選び方によっては、 0. 5Mよりも少なくなることも、同時に知られている。なお、例外ケ ースは、前述の処理例 1 (提案法 A1)の例外ケースに基いて計算できる。
[0135] [処理例 3 (提案法 B1) ]
処理例 3 (提案法 B1)は、種数 2、標数 2の h (x) =x2+x+h、 f =0をパラメータに
0 4
持つような超楕円曲線において、因子 Dの 1Z2倍算を計算する方法である。
[0136] 前述の処理例 2 (提案法 F1)において説明したように、処理例 1 (提案法 A1)にお いて説明した 1Z2倍算の計算アルゴリズム、すなわち、アルゴリズム 5 [Algorithm 5 HEC— HLV]を良く見ると、 h (x)の係数との乗算、 h (x)の係数の逆元演算が多 くある。つまり、 h (x)の係数を工夫することにより、乗算および逆元演算の計算量を 削減することができる。文献 [J.Pelzl, T.Wollinger, and C.Paar. High Performance Ari thmetic for Hyperelliptic Curve Cryptosystems of Genus Two. Cryptology ePrint Ar chive, 2003/212, IACR, 2003]では、高速化のために、 , ≡{0, 1 } , f =0を用
2 1 4 いた例を示している。
[0137] このパラメータを用いた場合の [HarleyDBL]の計算量は、
18M + 7S + 1I
である。
[0138] 処理例 3 (提案法 B1)もこれに条件を合わせることにするが、前述した [補題 1]より、 h (X)は既約多項式を仮定して!、るため、
h (x) =x2+x+h ,
0
Tr (h ) = l
とする(二次方程式 ax2 + bx + c = 0が既約多項式であるための必要十分条件は Tr (acZb2)=lである)。
この場合の計算法示すアルゴリズムをアルゴリズム 10 [AlgorithmlO HEC— HL V(h =h =1, f =0)]として以下に示す。
2 1 4
[数 17]
Algorithm 10 HEC _HLV(h2 h = 1,ブ4二 0)
Input: D2 - (T人, V2 X imni二 1 /〃21
Output: 二(ひい 二 [1 / 2]D2 , i = l/ /n
Ul (x) = JT + uv + w.0 , V^ ) - v x + v.0, gcd( , 11 i )二 1, /二 1, 2
1. Solved, + k^u2 +1 = 0
a <- / /v7/, k - H(/Y21 )a, k[ ~- k^
2. Select correct kx by solving kh +k 十ん 0 2//21 + 二 0
^'ΰ /2 + ^20 +V21 + V'l + "21 (" Cl )
if Tr(x)二 1 then kx ~ k(, γ <- X + /?0
k Η(/) , k,0 ^k{)+a
3. Select correct k0 by checking trace of .v + 1 +1 0
H-'
n <—ん】
2,
< - n /.
70 +ん】 + u
2
4r~ kQ +sJW{ +Λ0, W + fw} + k( f ), W4 r- W2W,
WY r- 1 /(W4ん】), W4 r- 1W4, ^'2 W
k() ^r-ん (;, uu w,w4 つ w3
4. Compute Ux
"つ ^4 。 ^+¾) + ^
5. Compute V 二 +h + k.U mod U
W4 十ん 0 十 1, W5 + + W6 + V +1, W6 r- W{ +、' 。 + ?0
invu r- wQw3
^2 +W4, W3 ( 。 +^)(//Kl
VK) <r- ~\-W2 +W, +
6. U (x) <r- x2 +wux + //10, l\(x) 、ク 十 v10
7. return Dx (U I ), invu また、逆元演算の回数を削除するため、前述の処理例 2 (提案法 F1)と同様、モン ゴメリトリック手法を用いている。本処理例においてもモンゴメリトリックを用いて、 u の
11 逆元を求めている。 u の逆元は、次回の 1/2倍算の入力として与える。この処理例
における計算量は次の通りである。
(a) k , kが正しぃ値でぁる場合:19M + 3S + 1I + 3SR+ 2H + 2T
1 0
(b) k , k 'が正しい値である場合: 20M + 3S + 1I + 3SR+ 2H + 2T
1 0
(c) k ', kが正しぃ値でぁる場合:19M + 3S + 1I + 3SR+ 2H + 2T
1 0
(d) k ', k 'が正しい値である場合: 20M + 3S + 1I + 3SR+ 2H + 2T
1 0
[0141] 上記(a)〜(d)のすベての場合にっ 、て平均すると、
19. 5M + 3S + 1I + 3SR+ 2H + 2T
となる。 HarleyDBLの計算量は、 18M + 7S + IIであった。ここで、前述したように 、文献 [E.Knudsen. Elliptic Scalar Multiplication Using Point Halving. ASIACRYPTO '99, LNCS 1716, pp.135- 149, Springer- Verlag, 1999.]によると、有限体が正規基底 で定義されている場合、 S (2乗算), SR (平方根演算), H (ハーフトレース (二次方程 式の根を求める演算)), T (トレース(二次方程式の根がある力否かの判定))の計算 量は無視することができ、 M (乗算), 1 (逆元演算)の計算量のみ考慮すればよいこと が知られている。
[0142] そのため、正規基底を用いた場合、上述したアルゴリズム 10 [AlgorithmlO]は、 従来のアルゴリズム [HarleyDBL]よりも、 1. 5M低速となる。また、有限体が多項式 基底で定義されている場合、文献 [K.Fong, D.Hankerson, J丄 opez, and A.Menezes. Field inversion and point halving revised. Technical Report CORR2003— 18, http:// www.cacr.math.uwaterloo.ca/techreports/2003/corr2003-18.pdf]によると、通'吊' SR , Hの計算量は、 SR=H = 0. 5M程度であることが知られている。また、 Tの計算量 は無視できる。さらに Sの計算量は、 Mの数分の 1程度であることが知られている。し 力しながら、 SRの計算量は、多項式基底の選び方によっては、 0. 5Mよりも少なくな ることも同時に知られている。
[0143] さて、前述のアルゴリズム 10 [Algorithml0]の曲線にさらに、 h = 1の制約を設け
0
る。前述のアルゴリズム 10 [AlgorithmlO]は、 hの乗算が 1回あるので、 h = 1とす
0 0 ることにより、 1Mの削減ができ、上記(a)〜(d)のすベての場合についての平均の計 算量は、
18. 5M + 3S + 1I + 3SR+ 2H + 2T
となる。一方、 HarleyDBLは、計算量は、
15M + 7S + 1I
である。なお、例外ケースは、前述の処理例 1 (提案法 A1)の例外ケースに基いて 計算できる。
[0144] [処理例 4 (提案法 E1) ]
処理例 4 (提案法 E1)は、種数 2、標数 2の h (x) =xをパラメータに持つような超楕 円曲線において、因子 Dの 1Z2倍算を計算する方法である。
[0145] 処理例 3 (提案法 B1)と同様、アルゴリズム 5 (Algorithm5)にお!/、て、 h (x)を h (x)
=xとすることで,因子の 1Z2倍算に必要な有限体上の元の乗算および逆元演算の 計算量を削減することができる。具体例として f (X) =x5+f x+f
1 0の場合のァルゴリズ ムを、アルゴリズム 12 (Algorithmic)として、以下に示す。
[数 18]
Algorithm 12H£C― HLV(h(x)二 x,f(x) = x} + f]X + f0)
Inp t :D2 =(U2,V2)
Output :Dx ={Uxy,) = [112]D2
Ui (x) -x2 + ",., x + uM , Vt (x) = v;1 x + v,n , gcd(?, l].)^\ = 1,2
1. Solve 21 +1 = 0
2. Solve ^() +c, - 0
C <-//20+ , W, r- C,U2l
C0 ^ V21 +V21 +»21W20 +^
im'k、 - (― ι2λ , 1 <— H(Wj), w3 ~ iへ + 1
3. Compute U
〃 Φ 、 + K0 , ]0 <- if 丁 , 〃,。 + im'k、 +ん0)) = 1 then
k。 k'
0,w
2 -w
3,»
n 〃„+んい〃
10
4. Compute = + h + W2 mod ΙΙ
¾ (»21 + \ι ] ) + kQ
vii -ん 1("20 +"10)十 w2 +' +1+»„ ΐ·Ί
5. Ux (x) — -v2 +'〃nx + "10, Vx{x) vH + v10
6. return D} - (U^ , V )
前述の処理例 3 (提案法 Bl)と同様に、上記のアルゴリズム 12 (Algorithmic)に ついて計算量を評価する。処理例 3 (提案法 B1)と異なり、 h(x) =xのタイプの超楕 円曲線の場合、 kは step. 1において一意に決まるので、 kのみ選択するステップが
存在する(Step. 3)。計算量の少ない Best caseは step. 3の if文の Traceが 0の場 合であり、 Worst caseは Traceが 1の場合である。どちらも等確率で起こるため、平 均の計算量は、
11. 5M + 2S + 1I+4. 5SR+ 1H+ 1T
である。この計算量は前述の処理例 3よりも少なく高速に演算できる。なお、例外ケ ースは、前述の処理例 1 (提案法 A1)の例外ケースに基いて計算できる。
[0147] [処理例 5 (提案法 C1) ]
処理例 5 (提案法 C1)は、種数 2、標数 2のランダムパラメータを持つような超楕円曲 線、 h(x) =x2+h x+h , f =0をパラメータに持つ超楕円曲線、および h(x) =x2 +
1 0 4
x+h、f =0をパラメータに持つような超楕円曲線において、因子 Dの 1Z2倍算を
0 4
計算する際に、 1Z2倍したものの候補が 2つ出てくる。 2つの候補のうち、正しい値を 選ぶ必要があるが、選ぶ際に、有限体のトレース、乗算、平方根を計算する必要があ る。どちらが正しいかは、因子 Dに依存する。そのため、因子 Dが固定されている場 合、事前に 2つの候補のうち、どちらが正しいかをテーブルに保持し、正しい値を選 ぶ際に、このテーブルを参照することにより、上記の余計な計算を省略する方法であ る。
[0148] k , k ' (k , k ')のどちらが正しいかは、入力因子 Dに依存している。したがって、 D
1 1 0 0
が固定されている場合、例えば ECDH型鍵交換のフェーズ 1や、 ECDSA型署名生 成、検証など、ベースポイントがあら力じめ決まっている場合、事前に、 [lZ^Dを 計算し、 k , k ' (k , k ')のどちらが正しい値であるかを、テーブルに記録しておく。
1 1 0 0
[0149] 例えば、ベースポイントの位数と同じビットサイズのテーブルを T, Tと二つ用意し
1 0
、これらを 2進数表現したものを、
T = (t , t )
T = (t , t )
0 0, r-1 0, 0
とする。
[0150] [lZ2i]Dを求める際に、
kが正しければ、 t =0、そうではなくて、 k 'が正しければ t = 1
kが正しければ t =0、そうではなくて、 k 'が正しければ t = 1などとテーブルに
記録すれば、テーブルサイズは、わずかベースポイントの位数のサイズの 2倍程度の ビット列で済む。このテーブルを参照することにより、 1Z2倍算の計算量を削減する ことができる。
[0151] この方法をアルゴリズム 8 [Algorithm 8] HEC HLV(h = 1, f =0)に適用し
― 2 4
たものを、アルゴリズム 9 [Algorithm 9] HEC HLV (h = 1, f =0, with tabl
― 2 4
e— lookup)として示す。計算量は、 22M + 2S + 1I + 2SR+ 2Hとなる。
[0152] [数 19]
Algorithm 9 HEC _HLV{h2 = l,./4 = 0, table-lookup)
Input: D2 - (ひ 2 ,Γ2), invii -]/u2 , \/h , ί
Output: = (ひ】 ) = [1 / 2]D2, i"v" = 11 ιιΛ ]
_(/,(x) = .v2 +M„Jf + //!0, Vt{x) = v,】x + v'。, gcd( 7,ひ,) = 1,/ = 1,2
1. Solved, +k^u2] +1 = 0
if 二 0 then A, — Η(//21)/;ν// else ki r-H(u7 )mv + inv
2. Solve khn + -0
CI ~.Λ+Ν2】 +"20 + '4
co +、':。 +v21(/¾ +v21) + ?/21 (":0 + c )
a <— h}invu, γ - (c, + kh0 I
if ί [ 0 then ktl <— H(y) else k0 Η^ α· + a
3. Compute U]
νν。 k, w
l — w
07/
20 +kfy +u
2l, w
2 —ん
0
W] r~ 1/(W2A, ), Λνλ\ν2
ul l — w^w3, invii — w{)¾
M k0ll20, W, <r-ん,〃 2い W& - (ん 0 +^)(〃20 +"21)
w ^w^h0{wx +h0) + c0
4. Compute \ = V2 + h + kU2 modひ!
w4 <~ w5 +ん 0 + 1, w5 <- ¼'j + w5 +w6+ v2] + Η
w6 <— M'J + v20 + h0 , w7 ( + w4
w3 <- 、 +w7)(?/】。 + ,/„), wx - uy/
、'11 'l + W2 + W4 + W5 + W7
v10 w,+w6
6.ひ )— x" +uux + uw, V(x) - vnx + v10
7. return =(!い f ), invu
[0153] 具体的に,この方法を上述のアルゴリズム 10 [Algorithmic) HEC HLV (h
2
=h =1, f =0)]に適用したアルゴリズムをアルゴリズム 11 [Algorithmll HEC
1 4
HLV(h 二 h =1, f =0, with table— lookup)]として、以下に示す。
― 2 1 4
[0154] [数 20]
Algorithml 1 HEC— HLV つ =h, =\ 4 = 0, with table-lookup)
Input: D2 二 (ひ 2, V2 ), invu = 11 u2], t0 , ί
Output : Z, = (ひ】, ) = [1 / 2]D2, invu = 11 ιι x
U, (x) = x +unx + ul0, Vt(x) = v x + vin, gcd(?, U{ ) = 1
1. Solved, +^'n2] +1 = 0 and select correct kt via /,
— 7 /v7/, kx — W(ii )a
2.
0 and select correct k
L, via t
0
】 + +"2。+'4
c0 - f2十 v2。 +v21+ v,2, + 2l (»20 + c ) - H(x)a
it /, = 0 then k。 <^ k0 +
3. compute Ux
w, — 1 /(w, 】 ), w4 — w]w2 w0 <~ yv】, w} - i"2i, we (ん 0+ん iX' +"2】)
、( 、 +"。) + c0
5. Compute \ = K, + ? + kll mod f /,
w4 <- w5 + k。 + 1, w5 <r- M + +w6 +、'21 + 1, '6 - w + v20 + ]
invu <— wQ
W。 r- W2 十 W4, W] W0UW, W, r- ( ) +^)("10 +"„)
v10 <— w, + >v, + w3 + w5
v„ ^w, +w6
6. U、 (x) <- x2 + ux + 11 w, V] (x) — vnx + v10
7. return D、 - (U、 , l ) , invu = 11 u] ,
上記アルゴリズム 11 [Algorithml 1 HEC HLV(h =h =1, f =0, with ta
― 2 1 4
ble- lookup) ]における計算量は、
18M + 3S + 1I + 2SR+2Hとなり、さらに h = 1とすることにより、 1Mの削減ができ
、この場合の計算量は、
17M + 3S + 1I + 2SR+2Hとなる。
[0156] さらにこの方法を、前述のアルゴリズム 12[Algorithml2 HEC_HLV(h(x) =x , f (χ) =x5+f x+f ]に適用したアルゴリズムを、アルゴリズム 13[Algorithml3 H
1 0
EC HLV(h(x) =x, f (x) =x5+f x+f , with table— lookup)として、以下に
― 1 0
示す。
[0157] [数 21]
Algorithm 13 HEC _HLV(h(x) = x,f(x) = x5 + fxx十 f0, with table-lookup) Input: D2 =(ひ2 2), t0
U
t (x) - X
2 +u
nx + u
in, V^x) - v,-,x + v.
0, gcd( 7,ひ = 1
2. Solved,, +k^t +c, = 0
j — '"20 + ir2 , w — Cj? 21
C0 <- V21 +V21 + 'W21W20 +W,
invkx <r~ ι2λ , - H(w, )
if t{) = 0 then
k0 w0w2
else
ん W0W2 + W0, W, - + 1
3. Compute U、
"】 i <-
w
10 (k。+ c, )u
20 + c
t)u
2]
4. Compute \ - V, +h + kll2 modひ!
M — k(uつ +iiu) + kn
vi i ("20 + "〗 » ) + w2 + v21 + 1 + ux
V10 0"20 +V20+ l
5. , (x) - x" + uux + w10, \ (x) vnx + v10
6. return = (^i^)
[0158] 上記アルゴリズムにおける計算量は、
9.5M + 2S + 1I + 3.5SR+1H
であり、さらに高速化が実現される。
[0159] [処理例 6(提案法 D1)]
処理例 6(提案法 D1)は、上記処理例 1〜5に示す因子の 1Z2倍算の計算方法を 用いて、因子のスカラー倍算を計算する方法である。
[0160] 楕円曲線での有理点の 1Z2倍算を用いたスカラー倍算の計算方法は、文献 [E.K nudsen. Elliptic Scalar Multiplication Using Point Halving. ASIACRYPTO '99, LNCS 1716, pp.135- 149, Springer- Verlag, 1999.]にある。超楕円曲線の因子の 1Z2倍算 を用いたスカラー倍算の計算方法は,この文献にあるスカラー倍算に基づいて実行 される。ただし、 [lZ^Dを計算し、加算していく right— to— left法を用いる。この アルゴリズムを、アルゴリズム 14 [Algorithmic Scalar Multiplication]として以 下に示す。
[数 22]
Algorithm 14 Scalar Multiplication
Input :D G J(r„) such that 2D≠ O, t G Z, r '. order of D, m - los0 r | Output scalar multiplication dD
1. ?m 2' ^- d mod ,', d, G {0, 1}
2 ∑:。 2' ∑: 2' 0,1}
3. <2 0, R r~D, f - 11 //,
4. for / from 0 to m do :
if = \ then 0^-0 + R
(R, invu) HEC _HLV R mni)
5. return 0
上記アルゴリズム 14 [Algorithmic Scalar Multiplication]のステップ 4に出 てくる HEC— HLVは、ランダムカーブを用いた前述のアルゴリズム 5 [Algorithm5] の HEC HLVでも良いし、アルゴリズム 8 [Algorithm 8]の曲線パラメータに h =
1 , f = 0の制約を設けた HEC— HLVでも良!、し、アルゴリズム 8 [Algorithm 8]の
4 ―
曲線パラメータにテーブル参照法を適用した HEC— HLVでも良 ヽし、アルゴリズム 10 [Algorithm 10]の曲線パラメータに h =h = 1, f =0の制約を設けた HEC .
2 1 4 ―
HLVでも良いし、アルゴリズム 10 [Algorithm 10]の曲線パラメータに h =h =h
2 1 0
= 1, f =0の制約を設けた HEC HLVでも良いし、アルゴリズム 10 [Algorithm
4 ―
10]に対してテーブル参照法を適用した HEC— HLVでもよ!/、。またアルゴリズム 12 [Algorithm 12]の曲線パラメータの HEC— HLVでも良いし、アルゴリズム 12 [A1 gorithm 12]に対してテーブル参照法を適用した HEC— HLVでもよ!/、。
[0162] [演算高速化の検証]
次に、上述した処理例 1〜6を適用した演算における計算量を求め、演算の高速化 について検証する。
[0163] HEC HLV (h = 1, f =0)では、計算量は、平均で、
― 2 4
25. 5M + 2S + 1I + 3SR+ 2H + 2T
である。
[0164] まず、有限体が正規基底で定義されている場合について考える。前述のとおり、正 規基底を用いた場合、 M, Iのみの計算量を考慮すればよい。文献 [A.Menezes. Elli ptic し urve Public Key Cryptosystems. Kluwer Academic Publisners, 1993.」によると 、有限体を Fq, q = 2nとした場合、逆元計算一回は、下式によって算出される回数、 すなわち、
[数 23]
log2( — 1) \ + w(n-l)-\
[0165] 上記式によって算出される回数の乗算に匹敵する。ここで、 w(n— 1)は n— 1を 2進 数で表示した際の 1の個数を表す。例えば、 n=83, 89, 113の場合、 I = 8Mとなり 、 n= 103の場合、 I = 9Mとなる。
[0166] ここで、 I = 8Mを仮定すると、
HEC HLV(h =1, f =0)
― 2 4
の計算量は、
25.5M+ 11 = 33.5Mとなる。
[0167] 一方、 HarleyDBLでは、
21M + II = 29Mとなり、 HarleyDBLの方が HEC—HLVよりも 13%ほど高速とな る。また、テーブル参照法を用いた場合では、
22M+1I = 30M
となり、 HarleyDBLは、 HEC— HLVよりも 3%ほど高速となる。
[0168] また、 HEC HLV(h =h =1, f =0)
― 2 1 4
の計算量は、平均で、
19. 5M + 3S + 1I + 3SR+ 2H + 2T
となる。この場合は、
19. 5M+ 1I = 27. 5M
となる。
[0169] 一方、 HarleyDBLでは、
18M+ 1I = 26Mとなり、 HarleyDBLの方が HEC—HLVよりも 5%ほど高速とな る。また、テーブル参照法を用いた場合では、
18M+ 1I = 26M
となり、 HarleyDBLと HEC— HLVは同等の計算量となる。
[0170] また、 HEC HLV (h =h =h = 1, f =0)
― 2 1 0 4
の計算量は、平均で、
18. 5M + 3S + 1I + 3SR+ 2H + 2T
となる。この場合は、
18. 5M+ 1I = 26. 5M
となる。
[0171] 一方、 HarleyDBLでは、
15M + II = 23Mとなり、 HarleyDBLの方が HEC—HLVよりも 13%ほど高速とな る。また、テーブル参照法を用いた場合では、
17M+ 1I = 25M
となり、 HarleyDBLの方が HEC— HLVよりも 8%ほど高速となる。
[0172] また、多項式基底の場合をソフトウェア実装を行!ヽ、速度の比較を行った。
CPUは Pentiumll 300MHz、
OSは RedHat7. 3、
コンパイラは gcc2. 96
の環境でソフトウェア実装を行った。
[0173] M (乗算)、 S (2乗算)は、文献 [D.Hankerson, J.Hernandez, and A.Menezes. Softw are Implementation of Elliptic Curve Cryptography over Binary Fields. CHES 2000, LNCS 1965, pp.1-24, 2000., Algorithm4. 6, 4. 7]、 I (逆元演算)は、文献 [S.Sha
ntz. From Euclid's GCD to Montgomery Multiplication to the Great Divide. TR-200 1-95, Sun Microsystems, Inc., 2001.]、 SR (平方根演算)、 T (トレース(二次方程式 の根があるか否かの判定))は、文献 [K.Fong, D.Hankerson, J丄 opez, and A.Meneze s. Field inversion and point halving revised. Technical Report CORR2003- 18, http:/ / www.cacr.math.uwaterloo.ca/techreports/2003/corr2003-18.pdf]、 H (ノヽ ~~フトレ ~~ ス(二次方程式の根を求める演算))は、文献 [K.Fong, D.Hankerson, J丄 opez, and A .Menezes. Field inversion ana point halving revised. Technical Report CORR2003— 1 8, http://www.cacr.math.uwaterloo.ca/techreports/2003/corr2003-18.pdf Algorit hm 4. 7] に従った。
[0174] n=83, 89, 113の 3つの有限体に対して, M, S, I, SR, H, Tを実装し、 Mとの 比を求めた。ここで、
n= 83の既約多項式は、
ζ83 + ζ7 + ζ4 + ζ2+ 1 = 0
n= 89の既約多項式は、
89 , 38
z 十 z 十 1—0
n= 113の既約多項式は、
113丄 9 , 1 — n
z 十 z十 1—0
を用いた。
計算量は次の通りとなった。
n=83 : S/M = 0. 12, Ι/Μ = 7. 96, SR/M = 0. 57, H/M = 0. 58 n=89 : S/M = 0. 05, l/M = 8. 74, SR/M = 0. 14, H/M = 0. 61 n= 113 : S/M = 0. 06, l/M = 8. 56, SR/M = 0. 10, H/M = 0. 50
[0175] これらを、 HarleyDBLの計算量 21M + 5S + 1Iに適用すると次のようになる。
n=83 :HarleyDBL29. 56M
n=89 :HarleyDBL29. 99M
n= 113 :HarleyDBL29. 86M
[0176] これらを、 HEC HLV(h = 1, f =0)の計算量、 25. 5M + 2S + 1I + 3SR+ 2H
― 2 4
+ 2Tに適用すると次のようになる。
n=83:HEC_HLV(h =1, f =0)36.57M
― 2 4
n=89:HEC HLV(h =1, f =0)35.98M
― 2 4
n=113:HEC HLV(h =1, f =0)35.48M
― 2 4
[0177] この場合、 n=83, 89, 113で、それぞれ HarleyDBLの方が HEC— HLVよりも 2
0%、 17%、 16%程度、高速である。
[0178] さらに、 HEC_HLV(h =1, f =0)にテーブル参照法を適用した場合の計算量
― 2 4
、 22M + 2S + 1I + 2SR+ 2Hに適用すると次のようになる。
n=83:HEC HLV(h =1, f =0 with table -lookup) 32.5M
― 2 4
n=89:HEC HLV(h =1, f =0 with table -lookup) 32.34M
― 2 4
n=113:HEC HLV(h =1, f =0 with table- lookup) 31.88M
― 2 4
[0179] この場合、 n=83, 89, 113で、それぞれ HarleyDBLの方が HEC— HLVよりも 9
%、 7%、 6%程度、高速である。
[0180] また、 h =h =1, f =0の場合は、次の通りとなる。
2 1 4
HarleyDBLの計算量 18M + 7S + IIに適用すると次のようになる。
n=83:HarleyDBL27.4M
n=89:HarleyDBL27.09M
n=113:HarleyDBL26.98M
[0181] 次に、 HEC HLV(h =h =1, f =0)の計算量、 19.5M + 3S + 1I + 3SR+2 一 2 1 4
H + 2Tに適用すると次のようになる。
n=83:HEC HLV(h =h =1, f =0)30.69M
― 2 1 4
n=89:HEC HLV(h =h =1, f =0)30.03M
― 2 1 4
n=113:HEC HLV(h =h =1, f =0)29.54M
― 2 1 4
[0182] この場合、 n=83, 89, 113で、それぞれ HarleyDBLの方が HEC— HLVよりも 1
3%、 12%、 9%程度、高速である。
[0183] さらに、 HEC HLV(h =h =1, f =0)にテーブル参照法を適用した場合の計
― 2 1 4
算量、 18M + 3S + 1I + 2SR+ 2Hに適用すると次のようになる。
n=83:HEC HLV(h =h =1, f =0 with table -lookup) 28.62M
― 2 1 4
n=89:HEC HLV(h =h =1, f =0 with table -lookup) 28.39M
n = 113 : HEC_HL V (h =h =1, f =0 with table-lookup) 27.94M
― 2 1 4
[0184] この場合、 n=83, 89, 113で、それぞれ HarleyDBLの方が HEC— HLVよりも 4
%、 5%、 3%程度、高速である。
[0185] また、 h =h =h =1, f =0の場合は、次の通りとなる。
2 1 0 4
HarleyDBLの計算量 15M + 7S + IIに適用すると次のようになる。
n=83:HarleyDBL23.8M
n=89:HarleyDBL24.09M
n=113:HarleyDBL23.98M
[0186] 次に、 HEC HLV(h =h =h =1, f =0)の計算量、 18.5M + 3S + 1I + 3SR
― 2 1 0 4
+ 2H + 2Tに適用すると次のようになる。
n=83:HEC HLV(h =h =h =1, f =0)29.69M
― 2 1 0 4
n=89:HEC HLV(h =h =h =1, f =0)29.03M
― 2 1 0 4
n=113:HEC HLV(h =h =h =1, f =0)28.54M
― 2 1 0 4
[0187] この場合、 n=83, 89, 113で、それぞれ HarleyDBLの方が HEC— HLVよりも 2
0%、 17%、 16%程度、高速である。
[0188] さらに、 HEC HLV(h =h =h =1, f =0)にテーブル参照法を適用した場合
― 2 1 0 4
の計算量、 17M + 3S + 1I + 2SR+ 2Hに適用すると次のようになる。
n=83:HEC HLV(h =h =h =1, f =0 with table -lookup) 27.62M
― 2 1 0 4
n=89:HEC HLV(h =h =h =1, f =0 with table -lookup) 27.39M
― 2 1 0 4
n=113:HEC HLV(h =h =h =1, f =0 with table -lookup) 26.94
― 2 1 0 4
M
[0189] この場合、 n=83, 89, 113で、それぞれ HarleyDBLの方が HEC— HLVよりも 1
4%、 12%、 11%程度、高速である。
[0190] 次に、上述のアルゴリズム 12[Algorithml2]、すなわち、 [Algorithmic HEC
HLV(h(x) =x, f (x) =x5+f x+f )]と、テーブル参照法を用いたアルゴリズム 1
― 1 0
3[Algorithml3]、すなわち、 [Algorithml3 HEC_HLV(h(x) =x, f(x) =χ5 + f x + f , with table— lookup)]について、 HarleyDBLとの比較を行う。
1 0
[0191] [Algorithm 12 HEC HLV(h(x) =x, f(x) =x5+f x+f )]の計算量は、 11.
5M + 2S + 1I+4.5SR+1H+1T、
[Algorithm 13 HEC_HLV(h(x) =x, f(x)=x5+f x+f , with table -loo
― 1 0
kup)]の計算量は、 9.5M + 2S + 1I + 3.5SR+1Hである。 HarleyDBLの計算量 ίま、文献 [( 特 §午文献 19 :T. Lange. Efficient Doubling on Genus Two Curves over
Binary Fields, SAC 2004, pre— proceedings, pp.189— 202, 2004.)]によると、 6M + 5S
+11である。前述のように、有限体が正規基底で定義されている場合、 S(2乗算), S
R (平方根演算), H (ハーフトレース(二次方程式の根を求める演算)), T (トレース( 二次方程式の根がある力否かの判定))の計算量は無視することができ、 M (乗算), I
(逆元演算)の計算量のみ考慮すればょ 、。
[0192] 従って、アルゴリズム 12 [Algorithmic HEC_HLV(h(x) =x, f(x) =x5+f x
+f )]の計算量は、
o
11.5M + 2S + 1I+4.5SR+1H+1T、
= 11.5M+1I
となり、
アルゴリズム 13[Algorithml3 HEC HLV(h(x) =x, f(x)=x5+f x+f , wit
― 1 0 h table— lookup)]の計算量は、
9.5M + 2S + 1I + 3.5SR+1H
=9.5M+1I
となる。
[0193] HarleyDBLの計算量は、
6M+1I
となる。従って、 HarleyDBLの方が HEC—HLVよりも高速となる。
[0194] 以上、説明したように、曲線パラメータ h =h =1、 f =0の場合の HEC HLVに
2 1 4 ― テーブル参照法を適用した場合の計算量 18M + 3S + 1I + 2SR + 2Hが、 Harley DBLの計算量 18M + 7S + IIにほぼ等しぐ同等の条件で HEC— HLVと HarleyD BLとで比較した場合、最も高速なアルゴリズムである。
[0195] 次に、アルゴリズム 14 [Algorithm 14 scalar multiplication]を用いたスカラ 一倍算の計算量を考える。曲線パラメータは、同等な条件で HarleyDBLと比較して
、最も高速な h =h =1、 f
4 =0を用い、さらに、 HEC— HVLにはテーブル参照法を
2 1 一
用いた方法でスカラー倍算の計算量を考える。
[0196] アルゴリズム 14におけるステップ 1、 2がスカラー倍算全体に占める割合は非常に 小さいため、これらの計算量は無視する。ここで、正規基底および多項式基底ともに n=83、 89、 113の場合で計算量を考えてみる。また、ベースポイントの位数は、 n= 83、 89、 113に対してそれぞれ 165ビット、 177ビット、 225ビットと仮定する。また、 ステップ 4の繰り返し部分では、ベースポイントの位数のビット数だけ繰り返す。因子 のカロ算は文献 [T.Lange, Efficient arithmetic on genus 2 hyperelliptic curves over fin ite fields via explicit formulae. Cryptology ePrint Archive, 2002/121, IACR, 2002]を 用いる。ただし、曲線パラメータは h =h =1、 f =0とする。この場合の因子の加算
2 1 4
に必要な計算量は 21M + 3S + 1Iである。スカラー値は 2進数で表現した場合、 0、 1 が同程度の割合で現れると仮定する。計算量は、((加算の計算量) Z2+(1Z2倍 算 or2倍残の計算量 ))x(ベースポイントの位数のビット数)で計算する。まずは、正 規基底の場合力 見てみる。 I = 8Mと仮定する。
[0197] h =h =1, f =0の場合、
2 1 4
n= 83:カロ算 · 2倍算: 6682.5M
n=89:加算 ·2倍算: 7168.5Μ
η=113:カロ算 ·2倍算: 9112.5Μ
[0198] h =h =1, f =0の場合、
2 1 4
n=83:加算 ·1/2倍算: 6930M
η= 89:加算 · 1Z2倍算: 7434Μ
η= 113:加算 · 1Z2倍算: 9450Μ
[0199] h =h =1, f =0+テーブル参照法の場合 (加算 ·2倍算の場合と等しい計算量)
2 1 4
η= 83:カロ算 · 2倍算: 6682.5Μ
η=89:加算 ·2倍算: 7168.5Μ
η=113:カロ算 ·2倍算: 9112.5Μ
[0200] 次に、多項式の場合を考える。
h =h =1, f =0の場合、
n=83:加算 ·2倍算: 6913.5Μ
η=89:カロ算 ·2倍算: 7361.3Μ
η=113:加算 ·2倍算: 9333Μ
[0201] h =h =1, f =0の場合、
2 1 4
n=83:カロ算 ·1Ζ2倍算: 7456.35Μ
η=89:加算 ·1/2倍算: 7881.8Μ
η= 113:加算 · 1Z2倍算: 9909Μ
[0202] h =h =1, f =0+テーブル参照法の場合 (加算 ·2倍算の場合と等しい計算量)
2 1 4
η=83:加算 ·2倍算: 7114.8Μ
η=89:カロ算 ·2倍算: 7591.53Μ
η= 113:加算 · 2倍算: 9540Μ
[0203] 以上、説明したように、上述した本発明の処理例によれば、楕円曲線暗号の 1Z2 倍算を、超楕円曲線暗号に拡張し、高速演算が実現される。超楕円曲線上の因子の 演算を使う暗号処理演算にお 、て、処理の重 、演算は因子のスカラー倍算である。 上述した本発明の処理によりスカラー倍算を従来と同程度の速度で演算することが でき、その結果、 1Z2倍算を用いても超楕円曲線暗号の処理を従来と同程度の速 度で処理することがきる。
[0204] 次に、上述した各種処理例、すなわち、
(処理例 1:提案法 A1)
(処理例 2:提案法 F1)
(処理例 3:提案法 B1)
(処理例 5:提案法 C1)
(処理例 6:提案法 D1)
をさらに高速化した処理例 7〜11、すなわち、以下の処理例について説明する。 (処理例 7:提案法 Α2):上記処理例 (処理例 1:提案法 A1)のさらなる高速化手法 であり、種数 2、標数 2のランダムパラメータを持つような超楕円曲線において、因子
Dの 1Z2倍算を計算する方法。
(処理例 8:提案法 F2):上記処理例 (処理例 2:提案法 F1)のさらなる高速化手法
であり、種数 2,標数 2の h(x) =x'+h x+h、 f
1 0 4 =0をパラメータに持つような超楕 円曲線において因子 Dの 1Z2倍算を計算する方法。
(処理例 9:提案法 B2):上記処理例 (処理例 3:提案法 B1)のさらなる高速化手法 であり、種数 2、標数 2の h(x) =x2+x+h、 f =0をパラメータに持つような超楕円
0 4
曲線において、因子 Dの 1Z2倍算を計算する方法。
(処理例 10 :提案法 C2) :上記処理例 (処理例 5 :提案法 C1)のさらなる高速化手法 であり、種数 2、標数 2のランダムパラメータを持つような超楕円曲線、 h (x) =x2+ x+h , f =0をパラメータに持つ超楕円曲線、および h (x) =x2+x+h、 f =0をパ
0 4 0 4 ラメータに持つような超楕円曲線において、因子 Dの 1Z2倍算を計算する際に、 1/ 2倍したものの候補が 2つ出てくる。 2つの候補のうち、正しい値を選ぶ必要があるが 、選ぶ際に、有限体のトレース、乗算、平方根を計算する必要がある。どちらが正しい かは、因子 Dに依存する。そのため、因子 Dが固定されている場合、事前に 2つの候 補のうち、どちらが正しいかをテーブルに保持し、正しい値を選ぶ際に、このテープ ルを参照することにより、上記の余計な計算を省略する方法。
(処理例 11 :提案法 D2) :上記処理例 (処理例 6 :提案法 D1)のさらなる高速化手 法であり、上記処理例 7〜10に示す因子の 1Z2倍算の計算方法を用いて、因子の スカラー倍算を計算する方法。
[0205] 以下、各処理例について、順次、その詳細を説明する。
[0206] [処理例 7 :提案法 A2]
処理例 7 (提案法 A2)は、前述した処理例 (処理例 1:提案法 A1)のさらなる高速化 手法であり、種数 2、標数 2のランダムパラメータを持つような超楕円曲線において、 因子 Dの 1Z2倍算を計算する方法である。
[0207] 以下の各処理例においても、扱う因子は位数カ^のものとする。つまり、扱う因子は 分岐点を持たない。入力因子を、
D = (U , V )ゝ
2 2 2
2
U = U X + U X + U ゝ
2 22 21 20
V =V X + V 、
2 21 20
ここで、 Dの weightが 2の場合は u = 1、
Dの weightが 1の場合は u =0、 u = l、v =0とする。
2 22 21 21
分岐点を持たないため、 1Z2倍算として、
ExHarDBL
1 +1→2、
ExHarDBL
2+2→2、および、 HarleyDBL の 4つの逆演算を考えればよ!、。 HarleyDBL以外は例外ケースである。
[0208] ここで ExHarDBL2+2→1は入力因子の weightが 2で、出力因子の weightが 1の場 合を計算する方法である。また、 ExHarDBL2+2→2 は入力因子の weightが 2で、か つ Uの 1次の項の係数が u =0を満たし、出力因子の weightが 2の場合を計算す
2 21
る方法である。ただし、 ExHarDBL2+2→2は HarleyDBLで計算できる力 これの逆 演算である 1/2倍算は、例外ケースとなるため、ここでは、 ExHarDBL2+2→2を例外 ケースとして扱う。
[0209] これら、 ExHarDBL
1+1→2、
ExHarDBL
2+2→2、および、 Harle yDBLに対応する 1/2倍算をそれぞれ、 ExHEC— HLV
2→1+1、 ExHEC— HLV
1→ 2+2、 ExHEC— HLV
2→2+2、および HEC— HLVとする。
[0210] 因子の 1Z2倍算を行なう場合、先に (処理例 1 :提案法 Al)において説明したよう に、まず、入力因子により、図 2に示す通りに場合分けを行なう。入力因子の weight 力^で、かつ Uの 1次の項の係数が u ≠0を満たす場合は、 HEC HLVで計算を
2 21 ―
行なう。また、入力因子の weightが 2で、かつ Uの項の係数が u =0を満たす場合
2 21
は、 ExHEC— HLV2→2+2、もしくは、 ExHEC— HLV2→1+1で計算を行なう。また、入 力因子の weightが 1の場合は ExHEC— HLV1→2+2で計算を行う。 HEC— HLVの アルゴリズムについては、先に図 3を参照して説明した通りである。
[0211] 因子の 1Z2倍算は、因子の 2倍算を行うアルゴリズム、すなわち、以下に示す [Alg orithm 1 HarleyDBLj
[数 24]
Algorithm 1 HarleyDBL
Inp i " .. D U
Output :D2^(U2,V2)
ひ, (x) = r + nx + ul0, ίζ(χ) = νηχ + ν(0, gcd(i, ) = 1
1. U[ - U{
2. S ΗΛ {f + hV,+V;) I U, mod Ux
3. V;^SUA +VX
4. U2' ^(f + hV;+V2)/U'
5. U2 <- MakeMonicii/I)
7. return A = (ひ 2, V2)
[0212] 上記アルゴリズム 1[ Algorithm 1 HarleyDBL]を逆から計算することにより実現 する。 Algorithm 1のステップ 6では、
V '+h=(k x+k )U +V
1 1 0 2 2
を満たすような多項式、
k(x)=k X + k
1 0
が唯一存在する。
[0213] これを、
V ' = h+(k x+k )U +V
1 1 0 2 2
と式変形し、ステップ 4に現れる式、
(f+hV '+V '2)
に代入すると、ステップ 4は、次のようになる。
U 'U ' = f+h(kU +V ) +k2U 2+ν 2· · '式(1)
2 1 2 2 2 2
上記式において、
(U , V )は分かっているので、式(1)から、 kと U 'との関係式が得られる。
2 2 1
ここで、
U =k U
2 1 2
であることに注意する。
[0214] 上記式(1)を展開して整理すると、次のようになる
U X + ((k h +k u +l)/k )x + ((k h +k h +k u +k c )/k
1 1 2 1 21 1 1 1 0 2 1 20 0
)x2+((k h +k h +k 2u +c )/k 2)x+(k h +k 2u +c )/k 2
1 0 0 1 0 21 1 1 0 0 0 20 0 1
···式 (2)
ここで,
c =f +u
2 4 21
c =f +h v +u +c u
1 3 2 21 20 2 21
2
c =f +h v +h v +v +c u +c u
0 2 2 20 1 21 21 2 20 1 21
を満たす。
[0215] また、ステップ 1より、
U '=U 2、
つまり、
τ τ , 4 , 2 2 , 2
U =χ十 u χ十 u
1 11 10
···式 (3)
が成り立つ。
[0216] 上記式 (2)、(3)の各係数を比較することにより、関係式を導き、この関係式を解くこ とにより、 1/2倍算が計算できる。上記の処理手順を示すアルゴリズムを以下に、ァ ルゴリズム 4 [Algorithm 4 Sketch HEC_HLV]として示す。
[数 25]
Algorithm 4 Sketch HEC HLV
Input: : (ひ 2, V2 )
Output :D, = (ひい 0[1/2]D2
U^x) = x' +unx + ui0, V^x) = ^ + ^, gcd(?,ひ,) =1, i-l,2
1. reconstruct k。,k、
1.1 l ~ V2 + h + ki/2 , k(x) = k、x + k0
1.2 U; -(f + h '+ V;2 ) l{k U2 )
1.3 derive k、 from coeff(f/,', 3) = 0, coeff(i/, 1) = 0
2. compute ?/,, by substituting kt) , k in coeff(f/】', 2)
3. compute ■",(, by substituting kQ,kt in coeff (ひ, 0)
4. U] <— X2 +uux + iiw
5. V -V2+h + kU2 modi/,
6. return D, =(U V,)
[0217] 具体的には,次の関係式が得られる。
[数 26]
ん 7 + w21 + 1 = 0 2l +c, = 0 n = ん Λ + kjiつ + k^u2t) +ん o- + c.
[0218] これらの関係式から,正しい k , kを計算する必要がある力 これは、次の補題によ
0 1
つて計算でさる。
[補題 1]
h(x)を既約多項式であると仮定する。このとき、式 (4) , (5)を満たす 1^は唯一であ る。また、式(5)は、正しい kに対してのみ、根を持つ。また、 Algorithm4での 1Z2 倍された因子 Dを計算できる kは唯一存在する。また、以下に示す式、
1 0
xh +x2u + 1 = 0
2 11
は、正しい kに対してのみ根を持つ。
0
Algorithm4に対して上記補題 1を適用した。詳細な 1Z2倍算の計算方法を以下 のアルゴリズム 5a [Algorithm 5a HEC_HLV]として示す。
[数 27]
Algorithm SaHEC HLV
Inp t: D2 = (U2,V2)
Output :D] =(U],V) = [\/2]D2
_ひ, (x) = x: + " x土 w,0 , Vt (x) = vnx土 v.(), gcd( 7,ひ,) = 1,/' =1, 2一
1. Solve 2 + 21 +1 = 0
invu <- 1/M,!, invh <- Mh , a r- h nvu, γ u linvh
2. Select correct k by solving kh0 +k0 +ん 0 :½ + = 0
c2 <- _/4 +'"21, , <- /3 + h2v2] + w20 +c2u2]
c0 ~ f2十ん—、' 2U + 21 + +c2n20 +c,w21
<— h nvii, w <— '",】 I h γ — (c, + k、h0 )w
if Tr(^) = 1 then 】 - k;, γ r~ (c, +k^h())w
。 r- Η(γ)α, k、 k0 +a
3. Select correct k0 by checking trace of xh2 + χ2ιιλ , +1 = 0
if Ύν γ) = 1 then
o ~ k:" u — M, , +invk^a(h2+a)
4. Compute U、
»,o <- im'k (h'、 + k0u20 ) + c0
5. Compute V = V-, +h + kU2 mod ^
w ^ + k、 (/j! +?<21) + k。
V, , V21 + Λ, + (//, o + W20 ) + 。' /2 ) + 7/j , w
V10 ~1/2。十/7。+ 。"2。+^
6.こ (x) <- x2 +//Hx + w10, — vnx + v10
7. return DL = (Ui , \ )
上記アルゴリズム 5a[Algorithm5a]では、 k ', k 'が正しい値(言い換えると k , k
1 0 1 0 が正しくない値)である場合、計算量は、
29M+1S+4I + 3SR+2H + 2T
となる。ここで M, S, I, SR, H, Tはそれぞれ有限体上の乗算、 2乗算、逆元演算、 平方根演算、ハーフトレース(二次方程式の根を求める演算)、トレース(二次方程式
の根がある力否かの判定)を意味する。この k ', k 'が正しい値である場合、計算量
1 0
は最も多くなる。
[0221] 次に k , kが正しい値 (言い換えると k ', k 'が正しくない値)である場合、計算量は
1 0 1 0
最も少なくなり、ステップ 2では 2Mの計算量が削減でき、ステップ 3では、 2M+ 1SR の計算量が削減できる。つまり、この場合の計算量は、
25M+ 1S+4I + 2SR+ 2H + 2Tとなり、計算量は最も少なくなる。
[0222] 次に k , k 'が正しい値 (言い換えると k ', kが正しくない値)である場合,ステップ 3
1 0 1 0
では、 2M+ 1SRの計算量が削減できる。つまり、この場合の計算量は、
27M+ 1S+4I + 2SR+ 2H + 2Tとなる。
[0223] 最後に k ', kが正しい値 (言い換えると k , k 'が正しくない値)である場合、ステツ
1 0 1 0
プ 2では, 2Mの計算量が削減できる。つまり、この場合の計算量は、
27M+ 1S+4I + 3SR+ 2H + 2Tとなる。
[0224] 上記の 4つの場合が発生する確率を、計算機実験によって確認した結果、ほぼ同 じ割合で発生していることが確認された。これ以降は、上記 4つの場合が生じる確率 は等しいとする。上記 4つの場合の計算量の平均をとると、
27M+ 1S+4I + 2. 5SR+ 2H + 2T
となる。
[0225] 次に、例外ケースの、
ExHEC— HLV2→1+1、
ExHEC— HLV1→2+2、
ExHEC— HLV2→2+2、
について考える。これらが発生する確率は無視できる程度であるので、計算量の評 価は行なわない。
[0226] なお、これらの例外ケースの計算アルゴリズムについては、先の(処理例 1:提案法 A1)の項目において説明した図 4〜図 6に示すフローチャート、すなわち、
ExHEC_HLV2→1+1のアルゴリズムについては図 4に示すフローチャート、 ExHEC_HLV1→2+2のアルゴリズムについては図 5に示すフローチャート、 ExHEC HLV2→2+2のアルゴリズムについては図 6に示すフローチャート、
それぞれにおいて説明した処理と同様の処理となる。
[0227] また、 ExHEC— HLV2→2+2、の計算手順についても、先に説明した (処理例 1:提 案法 A1)の項目にお!/、て説明したアルゴリズム 6 [Algorithm6]と同様の処理であり 、 ExHEC— HLV1→2+2の計算手順についても、先に説明した (処理例 1 :提案法 A1 )の項目にお 、て説明したアルゴリズム 7 [Algorithm7]と同様の処理となる。
[0228] [処理例 8 :提案法 F2]
処理例 8 (提案法 F2)は、前述した処理例 (処理例 2 :提案法 F1)のさらなる高速ィ匕 手法であり、種数 2,標数 2の h(x) =x2+h x+h、 f =0をパラメータに持つような
1 0 4
超楕円曲線において因子 Dの 1Z2倍算を計算する方法である。
[0229] 前述の処理例(処理例 7 :提案法 A2)において適用した Algorithm5aを良く見ると 、 h(x)の係数との乗算、 h (x)の係数の逆元演算が多くある。つまり、 h(x)の係数を 工夫することにより、乗算および逆元演算の計算量を削減することができる。なお、文 献 (非特許文献 19 : T. Lange. Efficient Doubling on Genus Two し urves over Binary Fields, SAC 2004, pre— proceedings, pp.189— 202, 2004.)では、高速ィ匕のため、 h =
2
1、 f =0を用いている。このパラメータを用いた場合の HarleyDBLの計算量は、 21
4
M + 5S + 1Iである。
[0230] ここで説明する処理例 8 (提案法 F2)もこれに条件を合わせることにするが、補題 1 より、 h (x)は既約多項式を仮定しているため、
h(x) =x2+h x+h、
1 0
Tr(h /h 2) = 1[0]
0 1
とする(二次方程式 ax2 + bx + c = 0が既約多項式であるための必要十分条件は Tr (acZb2) = lである)。この場合の計算法をアルゴリズム 8a [Algorithm 8a]HEC HLV (h = 1、 f =0)に示す。
― 2 4
[0231] [数 28]
Algorithm MiEC _ EL V(h2 = l,/4 = 0)
Input :D2=(U2,V2), \/h;
Ouipia:Dl ^{Ul,V) = [\ll\D
Ut (x) = x2 +unx + i0, Vt(x) = v;1x + vi0, gcd ( ,ひ,) = 1,7 = 1,2
1. Solveん, + u2l十 1 = 0
o; <~l/〃2い k <— H(u^ )a7 k[ ^ん ] +
2. Select correct ] by solving k i0 + 。1 + 0 2w2】 +Cj = 0
ci /3+½ + "20+'4
c0 ^f2+ v20 + v21 {h, + v21 ) + u21 ("20 + c, )
wn <— 2] / hf, a <r- hxa, γ (c, +^Η0)Μ>0
if Ίχ(γ) = 1 then k、 <- k;, γ <- (c, +A1 70)w'0
k。 — Η(γ) , k{}' ~ 。 +a
3. Select correct k。 by checKing trace of x + x"ux 1 +1 = 0
w0 <— k wl <— ¼'0'/2。 +kfy + w2】
it Tr(w, ,) = 1 then
4. Compute ΙΙλ
wx — k0u20 , w — w4 + 1, w6 — (k0 + k )(w20 + u2])
M10 <-w4^0(w, +h0) + c0
5. Compute VX=V2 +h + kU2 modUl
w + k(, +1, <r-w +w5+ w6 + v21 + h
w6^wx+ v20 + h0 , w7 - w2 + w4
Wj — W7«]0, W, r- (ん】 +¼'7)(W10 + Hn)
vn <— w +w +w3 + w5
v,() +w6
6. U(x) <— 2 +uux + u]{), V(x) <— vux + v10
7. return D =
ここで、逆元演算の回数を削減する方法を考える。前述したアルゴリズム 5a [Algori thm 5a]では、 1/u , 1/h 2, 1/h 2, 1/kの 4回の逆元演算が必要であるが、
ここで、
h = 1
2
と設定することにより、逆元演算は 3回とすることができる。さらに、 は曲線パラメ一 タであるため、事前に lZh 2を計算しておき、入力として与えることにより、逆元演算 は lZu と lZkの 2回に削減することができる。また、 lZkに関しては,前述の [処
21 1 1
理例 7 :提案法 A2]において説明した式 (4) ,すなわち、
1/k =h +k u
1 2 1 21
より,乗算 1回と加算 1回で求めることができる。これらの演算により、上記のアルゴリ ズム 8a [Algorithm 8a]HEC HLV (h = 1 =0)で必要となる逆元演算は
― 2 、 f 4 lZ u の 1回のみとなる。
21
[0233] 結果として、上記のアルゴリズム 8a [Algorithm 8a] HEC HLV (h = l
― 2 、f =0)
4 における計算量は次の通りとなる。
(a) k , kが正しぃ値でぁる場合:18M + 2S + 1I + 2SR+ 2H + 2T
1 0
(b) k , k 'が正しい値である場合: 19M + 2S + 1I + 3SR+ 2H + 2T
1 0
(c) k ', kが正しぃ値でぁる場合:20M + 2S + 1I + 2SR+ 2H + 2T
1 0
(d) k ', k 'が正しい値である場合: 21M + 2S + 1I + 3SR+ 2H + 2T
1 0
上記(a)〜(d)のすべてについて平均すると、 19. 5M + 2S + 1I + 2. 5SR+ 2H + 2Tとなる。
[0234] HarleyDBLの計算量は、 21M + 5S + IIであった。ここで、文献 [ (非特許文献 15 ) E.Knudsen. Elliptic Scalar Multiplication Using Point Halving. ASIACRYPTO '99, LNCS 1716, pp.135- 149, Springer- Verlag, 1999.]によると、有限体が正規基底で定 義されている場合、 S (2乗算), SR (平方根演算), H (ハーフトレース (二次方程式 の根を求める演算)), T (トレース(二次方程式の根がある力否かの判定))の計算量 は無視することができ、 M (乗算), 1 (逆元演算)の計算量のみ考慮すればよいことが 知られている。そのため、正規基底を用いた場合、 Algorithm8aは HarleyDBLより も 1. 5M高速となる。
[0235] また、有限体が多項式基底で定義されて!ヽる場合、
文献 [ (非特許文献 16) K.Fong, D.Hankerson, J.Lopez, and A.Menezes. Field in
version and point halving revised. Technical Report CORR2003— 18, http://www.cac r.math.uwaterloo.ca/techreports/2003/ corr2003— 18.pdfl8]によると、通常 SR (平 方根演算), H (ノヽーフトレース(二次方程式の根を求める演算))の計算量は、 M (乗 算)との対比において、 SR=H = 0. 5M程度であることが知られている。また、 T (トレ ース(二次方程式の根がある力否かの判定))の計算量は無視できる。さらに S (2乗 算)の計算量は、 M (乗算)の数分の 1程度であることが知られている。しかしながら、 SRの計算量は、多項式基底の選び方によっては、 0. 5Mよりも少なくなることも、同 時に知られている。なお、例外ケースは、前述の処理例 7 (提案法 A2)の例外ケース に基いて計算できる。
[0236] [処理例 9 (提案法 B2) ]
処理例 9 (提案法 B2)は、前述した処理例 (処理例 3:提案法 B1)のさらなる高速ィ匕 手法であり、種数 2、標数 2の h (x) =x2+x+h、 f =0をパラメータに持つような超
0 4
楕円曲線において、因子 Dの 1Z2倍算を計算する方法である。
[0237] 前述の処理例 8 (提案法 F2)にお 、て説明したように、処理例 7 (提案法 A2)にお いて説明した 1Z2倍算の計算アルゴリズム、すなわち、アルゴリズム 5a [Algorithm 5a HEC— HLV]を良く見ると、 h (x)の係数との乗算、 h (x)の係数の逆元演算が 多くある。つまり、 h (x)の係数を工夫することにより、乗算および逆元演算の計算量 を削減することができる。文献 [J.Pelzl, T.Wollinger, and C.Paar. High Performance Arithmetic for Hyperelliptic Curve Cryptosystems of Genus Two. Cryptology e Print Archive, 2003/212, IACR, 2003]では、高速化のために、 , ≡{0, 1 } , f =0を
2 1 4 用いた例を示している。
[0238] このパラメータを用いた場合の [HarleyDBL]の計算量は、
18M + 7S + 1I
である。
[0239] 処理例 9 (提案法 B2)もこれに条件を合わせることにするが、前述した [補題 1]より、 h (X)は既約多項式を仮定して!、るため、
h (x) =x2+x+h ,
0
Tr (h ) = l
とする(二次方程式 ax2 + bx + c = 0が既約多項式であるための必要十分条件は Tr (acZb2)=lである)。
この場合の計算法示すアルゴリズムをアルゴリズム 10a [Algorithm 10a HEC— HLV(h =h =1, f =0)]として以下に示す。
2 1 4
[数 29]
Algorithml¾H£C_H (/?2 =hx=\ 4 = 0)
Input :D2^(U2,V2)
Output .D^iU. ,)^ 12}D2
IJ1 (x) - X2 + unx + M'.0, Vt x) = vnx + viXl , gcd(?,ひ,. ) = 1,/ = 1, 2
1. Solved + ku2X +1 = 0
o; <— 1/M21, kx <— H(M2] )a, k; - ^+a
2. Select correct k、 by solving k、h
0 +k
0 +k^u
2] +c -0
V20 +
V2】十 21 + «21 ("20十
CX )
+k、hQ)u2、
if Tr(f) = 1 then kx k <~ , + h()
k0 — H(,)or, k0' - k0+
3. Select correct k0 by checking trace of x + x'uu +1 = 0
w0 — k wl — w0u20 +u2i
w2 — k0 + ^/w,十 k0 ' H'4 <— k、u7、 + 1, //n <— w2w4
it i'r(?/, j) = 1 then
4. Compute Ul
wi <- 20, w5 ^ + 1, ^ (k0 + ) ("20 + "21)
"10 <~1 4^。(¼^ + 0) + c0
5. Compute Υ = V2+h + kU2 mod U、
M'4 — w5 +k0+ 1, w} — \vx + w'5 + wfi + v21 + 1
w \ν + v20 + 0, w7 <r- w2 + w4
<- w7?10, w3 (ん。 +w7 )(?/】。 +uu)
V, , <r~ W] + W2 + + W5
6. ί/, (X) +Hnx + M]0, Vx{x) — vux + v10
7. return D] = (ひ】, ;)
上記のアルゴリズム 10a [Algorithm 10a HEC HLV(h =h =1, f =0)]に
― 2 1 4 おける計算量は次の通りである。
(a) k , kが正しい値である場合: 14M + 3S + 1I + 2SR+2H + 2T
1 0
(b) k , k 'が正しい値である場合: 15M + 3S + 1I + 3SR+2H + 2T
(c) k ', kが正しぃ値でぁる場合:14M + 3S + 1I + 2SR+ 2H + 2T
1 0
(d) k ', k 'が正しい値である場合: 15M + 3S + 1I + 3SR+ 2H + 2T
1 0
[0242] 上記(a)〜(d)のすベての場合にっ 、て平均すると、
14. 5M + 3S + 1I + 2. 5SR+ 2H+ 2T
となる。 HarleyDBLの計算量は、 18M + 7S + IIであった。ここで、前述したように 、文献 [E.Knudsen. Elliptic Scalar Multiplication Using Point Halving. ASIACRYPTO '99, LNCS 1716, pp.135- 149, Springer- Verlag, 1999.]によると、有限体が正規基底 で定義されている場合、 S (2乗算), SR (平方根演算), H (ハーフトレース (二次方程 式の根を求める演算)), T (トレース(二次方程式の根がある力否かの判定))の計算 量は無視することができ、 M (乗算), 1 (逆元演算)の計算量のみ考慮すればよいこと が知られている。
[0243] そのため、正規基底を用いた場合、上述したアルゴリズム 10a [Algorithm 10a]は 、従来のアルゴリズム [HarleyDBL]よりも、 3. 5M高速となる。また、有限体が多項 式基底で定義されて!ゝる場合、
文献 [K.Fong, D.Hankerson, J.Lopez, ana A.Menezes. Field inversion and point h alving revised. Technical Report CORR2003— 18, http://www.cacr.math. uwaterloo.c a/techreports/2003/corr2003- 18.pdf]によると、通常 SR, Hの計算量は、 SR=H = 0. 5M程度であることが知られている。また、 Tの計算量は無視できる。さらに Sの計 算量は、 Mの数分の 1程度であることが知られている。し力しながら、 SRの計算量は 、多項式基底の選び方によっては、 0. 5Mよりも少なくなることも同時に知られている
[0244] さて、前述のアルゴリズム 10a[Algorithml0a]の曲線にさらに、 h = 1の制約を設
0
ける。前述のアルゴリズム 10a [AlgorithmlOa]は、 hの乗算が 1回あるので、 h = 1
0 0 とすることにより、 1Mの削減ができ、上記(a)〜(d)のすベての場合についての平均 の計算量は、
13. 5M + 3S + 1I + 2. 5SR+ 2H+ 2T
となる。一方、 HarleyDBLは、計算量は、
15M + 7S + 1I
である。有限体が正規規定で定義されている場合、 S, SR, H, Tの計算量は無視 することができ、正規規定を用いた場合、アルゴリズム 10a [Algorithm 10a]は、従 来のアルゴリズム [HarleyDBL]よりも、 1. 5M高速となる。なお、例外ケースは、前 述の処理例 7 (提案法 A2)の例外ケースに基 、て計算できる。
[0245] [処理例 10 (提案法 C2) ]
処理例 10 (提案法 C2)は、前述した処理例(処理例 5:提案法 C1)のさらなる高速 化手法であり、種数 2、標数 2のランダムパラメータを持つような超楕円曲線、 h (x) = x2+h x+h , f =0をパラメータに持つ超楕円曲線、および h (x) =x2+x+h、 f
1 0 4 0 4
=0をパラメータに持つような超楕円曲線において、因子 Dの 1Z2倍算を計算する 際に、 1Z2倍したものの候補が 2つ出てくる。 2つの候補のうち、正しい値を選ぶ必 要があるが、選ぶ際に、有限体のトレース、乗算、平方根を計算する必要がある。ど ちらが正しいかは、因子 Dに依存する。そのため、因子 Dが固定されている場合、事 前に 2つの候補のうち、どちらが正しいかをテーブルに保持し、正しい値を選ぶ際に 、このテーブルを参照することにより、上記の余計な計算を省略する方法である。
[0246] k , k ' (k , k ')のどちらが正しいかは、入力因子 Dに依存している。したがって、 D
1 1 0 0
が固定されている場合、例えば ECDH型鍵交換のフェーズ 1や、 ECDSA型署名生 成、検証など、ベースポイントがあら力じめ決まっている場合、事前に、 [lZ^Dを 計算し、 k , k ' (k , k ')のどちらが正しい値であるかを、テーブルに記録しておく。
1 1 0 0
[0247] 例えば、ベースポイントの位数と同じビットサイズのテーブルを T, Tと二つ用意し
1 0
、これらを 2進数表現したものを、
T = (t , t )
T = (t , t )
0 0, r-1 0, 0
とする。
[0248] [lZ2i]Dを求める際に、
kが正しければ、 t =0、そうではなくて、 k 'が正しければ t = 1
kが正しければ t =0、そうではなくて、 k 'が正しければ t = 1などとテーブルに
1 0, i 0 0, i
記録すれば、テーブルサイズは、わずかベースポイントの位数のサイズの 2倍程度の ビット列で済む。このテーブルを参照することにより、 1Z2倍算の計算量を削減する
ことができる。
[0249] この方法を前述のアルゴリズム 8a [Algorithm 8a] HEC_HLV(h =1, f =0
― 2 4
)に適用したものを、アルゴリズム 9a [Algorithm 9a] HEC HLV(h =1, f =0
― 2 4
, with table— lookup)として示す。計算量は、 18M + 2S + 1I + 2SR+2Hとなる
[0250] [数 30]
Algorithm 9aHEC HL V{ =l,/4 =0, table-lookup)
Input :D2 ^{U2 2), 1/ , /。, f、
Output: 1 = (U, ,VX) = [\I 2] 2
U(x) = ' + i x + u , Vt(x) = v x + vj0, gcd( 7, Ui ) = 1,/二 1,2
1. Solve + 2'/21 +1 = 0
α — 1/ 2]
if = 0 then kx -- Η(ί/21 )α else kx ~ (H(i/21 ) + Χ)α
2. Solve Ι 0 + k。hx + w21 +c'〗 =0
C0 <- 2 + V20 +、'21 ( + V2l ) + "21 («20 + C\ )
w0 — u2] I h , a r- hfic, f <— (c, + k^hXj)w0
if t0 =0 then k{) <- Η( )α else 。 (H(,) + l)
3. Computeひ】
w0 k{, wx <— w0u20 + kfy + //21 , w2 <— k。 + νλ + k0
w4 - kxu^x + 1, u <— wnw
wi ()"2ϋ, W5 ~ w4 +1, w6 (ん。 +ん!)("2。 + "21)
",o <"w4 'o(wi +/7o) + co
4. Compute V} ^V2 +h + k(J2 modUl
w4 — +ws+ w6 +v2] + h、
¼'
6 r-
+ V
20 +/?
0, W
7 <- W
2 +W
4
Wj W7710, W3 <— (ん】 +W7)("】。
V, , — + w, + +
v10 ^wt+w6
6. U1 (x) <— x2 +?/nx + '/10 , V] (x) — vnx + v1(l
7. return = (ひい
[0251] 具体的に,この方法を上述のアルゴリズム 10a[AlgorithmlOa HEC— HLV (h =h =1, f =0)]に適用したアルゴリズムをアルゴリズム lla[Algorithmlla HE
2 1 4
C HLV(h =h =1, f =0, with table— lookup)]として、以下に示す。
― 2 1 4
[0252] [数 31]
Algorithm 1 HEC _ HLV(h2 ^ 二 l,/4 = 0, with table-lookup)
Input :D2 =(V2 2),t0,tx
Output: = (ひい ) = [1 / 2]
Ui (x) = x2 +unx + u- V^x) - vax + vi0, cd(h, Ul ) = 1
1. Solved +/f //21 +1 = 0 and select correct kx via t,
a —l/u 2]
if t, = 0 then kx <- H(;/2] )a else kx <- (\ ιι2 ) + \)α
2. Solve +k + ',, +c -0 and select correct k0 via t0
C0 <- /2 + V20 + V21 + V21 + "21 ("2。 + A ) H(r)«
if t0 = 0 then ktl - ΐί(γ)α else k0 - (Η( ) + 1)α
3. Compute ひ】
w0 <— Wj — w。w2。 +ん, +u2l
W4 — / 21 + 1, Mn — ¾ W4
0"20, 4 + 1, w6 (ん。 + kx )(//20 + '/21 )
5. Compute Vx = V2+h + kU-, mod U]
w4 <^ w5 +k0+ 1, w5 W[ + ws + w6 + v21 + 1
w6 — Wj + v20 + h0 , w7 — w2 + w4
W7"io, W3 (ん o +W7)("10 +W„)
y, , — iv, + + + w5
6.ひ, (x) - 2 + wnx + ?10, ^ ( ) <~ νπχ + v10
7. return Dx = (U„V,)
[0253] 上記アルゴリズム 11a [Algorithml la HEC_HLV(h =h = 1, f =0, with t
― 2 1 4
able— lookup) ]における十算量は、
14M + 3S + 1I + 2SR+ 2Hとなり、さらに h = 1とすることにより、 1Mの削減ができ
0
、この場合の計算量は、
13M + 3S + 1I + 2SR+ 2Hとなる。
[0254] [処理例 11 (提案法 D2) ]
処理例 11 (提案法 D2)は、上記処理例 7〜10に示す因子の 1Z2倍算の計算方法 を用いて、因子のスカラー倍算を計算する方法である。
[0255] 楕円曲線での有理点の 1Z2倍算を用いたスカラー倍算の計算方法は、文献 [E.K nudsen. Elliptic Scalar Multiplication Using Point Halving. ASIACRYPTO '99, LNCS 1716, pp.135- 149, Springer- Verlag, 1999.」、 [K.Fong, D.Hankerson, J.Lopez, and A.Menezes. Field inversion and point halving revised. Technical Report CORR2003— 18, http://www.cacr.math.uwaterloo.ca/techreports/2003/corr2003— 18 .pdf]にめ o 。超楕円曲線の因子の 1Z2倍算を用いたスカラー倍算の計算方法は、この文献に あるスカラー倍算に基づいて実行される。ここで、スカラー倍の対象となる因子 Dは、 位数が大きな素数 rであるとする。また,スカラー値を整数 0< d<rとする。 1Z2倍算 を用いたスカラー倍算を行なうには、まず、 2進数で表現されているスカラー値 dを 1 Z2進数で表現しなおす必要がある。
[0256] ここで、
[数 32]
m - log, r _
とする。また、 dを 2m倍し rで割った余り、すなわち、
[数 33]
2" (mod r)
を求める。次にこれを 2mで割ると、
となる。上記式の、
[数 35]
^i=0 1 1
で表現されたスカラー値を、 1Z2倍算を用 、たスカラー倍算 [halve— and -add binary]法で用 、る。ここで、
[数 36]
d1 , dJ e (0,1}
である。
[0257] 以下に、アルゴリズム 12a[Algorithm 12a]として、 halve— and— add binary 法(right— to— left)、アルゴリズム 13a [Algorithm 13a]として、 halve— and— a dd binary法(left— to— right)をそれぞれ示す。
[数 37]
Algonthm l¾ /ve― and― add binary Method (right to— left)
Input: D G J(Fつ" ) such that 2D≠ O, G Z, r: order of D, m = [ion-, /'」
Output: scalar multiplication dD
1. m d,2! 2md mod r, , e{0,l}
2.∑: /2' ;: 2 {0,1}
Q ~0, R D
4. for i from 0 to m do;
if =1 then ρ ρ +
R ^HEC _HLV{R)
5. return 0
[0258] [数 38]
Algorithm 13aHalve - and - add binary Method (left— to— right)
Input: D e J(F2„ ) such that 2D≠ O, d 7., r .. order of D, m = [log2 r
Output: scalar multiplication dD
1. d,2' 2md mod /% , e{0,l}
3.0^0
4. for i from m downto 0 do:
O^HEC HLViO)
5. return O
[0259] 上記アルゴリズム 12a [Algorithm 12a]と、アルゴリズム 13a [Algorithm 13a] のステップ 4に出てくる HEC— HLVは、ランダムカーブを用いた前述のアルゴリズム 5a [Algorithm 5a]の HEC— HLVでも良いし、アルゴリズム 8a [Algorithm 8a] の曲線パラメータに、 h =1, f =0の制約を設けた HEC HLVでも良いし、ァルゴ
2 4 ―
リズム 10a [Algorithm 10a]の曲線パラメータに h =h =1, f =0の制約を設けた
2 1 4
HEC— HLVでも良いし、アルゴリズム 10a [Algorithm 10a]の曲線パラメータに h =h =h =1, f =0の制約を設けた HEC HLVでも良い。
2 1 0 4 ―
[0260] 前段の処理例 1 6において説明した 1Z2倍算において、例えば前述の [処理例 3 (提案法 B1) ]に示すアルゴリズム 10や、 [処理例 5 (提案法 C1) ]に示すアルゴリズ ム 11では、入力に lZu 力 出力に lZu が必要であった。これにより、ベースポィ
21 11
ント Dの 1/2;倍算、すなわち、
(1/2) D (1/22)D (1/23)D (Ι/^ϋ···
を、前の 1Z2倍算の出力の lZu を次の 1Z2倍算の入力として与えることができ
11
るので、効率よく計算することができる。そのため、スカラー倍を halve— and— add binary法 (right— to— left)で行なう場合には、ベースポイント Dの 1 倍を適宜 加えていけばよいので、 right— to— leftの場合には、効率よくスカラー倍算を行なう
ことができた。
[0261] 一方、 left— to— rightの場合には、前の 1/2倍算の出力を次の 1/2倍算の入力 とすることができな 、場合がある。前述のアルゴリズム 13a [Algorithml 3a]の Step 4では、まず途中の結果 Qを 1Z2倍し(Q HEC_HLV(Q) )、スカラー値のあるビ ットが 1の場合は、ベースポイントを途中結果に加える(if di= lthenQ Q + D)。こ のため、ビットが 1の場合の、次のビットでは、前の 1Z2倍算の出力の lZu を次の
11 1
Z2倍算の入力として与えることができないので、新たに入力値 lZu を計算する必
21
要がある。有限体の逆元演算は乗算に比べて非常に計算量がかかる。そのため、先 の処理例 1〜6において説明した 1Z2倍算法では、 left— to— rightを適用した場 合、 1Z2倍算の入力値を生成するための余計な逆元演算を必要とするため、計算 の効率が悪くなる。しかしながら、処理例 7以降において説明した提案法では、入力 に lZu を必要としない設定としているため、 left— to— rightでも right— to— left
21
と同等の計算量で計算することができる。
[0262] また、前述のアルゴリズム 12a [Algorithm 12a]の halve— and— add binary法
(right -to -left)のステップ 4の HEC— HLVは、ランダムカーブを用いたアルゴリ ズム 5a [Algorithm 5a]にテーブル参照法を適用した HEC— HLVでも良!、し、ァ ルゴリズム 8a [Algorithm 8a]の曲線パラメータに h = 1, f =0の制約を設け、テ
2 4
一ブル参照法を適用した HEC— HLVでも良いし、アルゴリズム 10a [Algorithm 1 Oa]の曲線パラメータに h =h = 1, f =0の制約を設け、テーブル参照法を適用し
2 1 4
た HEC— HLVでも良いし、アルゴリズム 10a[Algorithm 10a]の曲線パラメータに h =h =h = 1, f =0の制約を設け,テーブル参照法を適用した HEC HLVでも
2 1 0 4 一 良い。
[0263] また, binary法のほ力に、 window法も適用することができる。入力因子を Dとし wi ndow幅^ wとする。途中結果を代入する因子を Q^Oとする。
整数 i= (i , i · · ·! ) ≡{0, 1, · · · , 2W- 1 }
w- 1 w- 2 0 2
に対して事前計算、すなわち、
[数 39]
を行い 2W個の因子からなるテーブルを計算しておく。
また、スカラー値 dを、 1Z2W進数展開する。
[数 40]
はじめに Qに 1/2倍算を w回適用し、
Q— (1Z2W) Q
とする。次に dの上位ビットから window幅 wで、スカラー値 cを走査し、対応するテ 一ブルの因子の値を参照し、結果に足し込む。
Q^Q + D
cl
これを Cまで繰り返す。
0
この計算手法 [halve— and— add window method]を、アルゴリズム 14a [Algo rithm 14a]として以下に示す。
[数 41]
Algorithm l½Ha/ve - and - add Window Method
Input: D e J(F2„ such that 2D≠ O, eZ, r: order of D, m - [Jogつ '」
Output scalar multiplication dD
1. "' άΊ2' ^2md mod r, άΊ G {0, 1}
2. m d./2' 2'-m, e{0,l}
4. ^ ^ + .·. +き for, = (,w— , ...,。)2 e {0,1,… — 1}
5. Q^O
6. for i from / downto 0 do:
for j from 1 tow do: O^HEC HLV(0)
7. return 0
[0266] また、
因子 D二(U, V),
U = x2 + u x + u ,
1 0
V=v x+v ,
1 0
の逆元は、
-D= (U, V+hmodU) = (U, (v +h u +h )x+ (v +h u +h ))
1 2 1 1 0 2 0 0
で表すことが出来る。特に h =1の場合は、有限体の乗算は必要なぐ 4回の有限
2
体の加算で Dから—Dを求めることが出来る。因子 Dの減算は因子—Dの加算により 計算できる。つまり、因子の加算と減算は同等の計算量で求めることができる。
[0267] そこで、スカラー値を負の値も使って表現し、それを用いてスカラー倍算を行なうこ とが出来る。まず、非隣接形式 NAF(Non— Adjacent Form)を使い、ある整数 sを
{-1, 0, 1}で表現する。 NAFでは 2進数表現されたスカラー値 sを下位のビットから 見ていく。 1が隣接するところがあれば、例えば、
(II)であれば、 (10—1)、つまり 3 = 22-1,
(III)であれば、(100— 1)、つまり 7 = 23— 1
などと表現する。
NAFの計算手法を、アルゴリズム 15a [Algorithm 15a]として以下に示す。
Input :s = ^']=^ G Z , SJ G {0,\}
Output: NAF(s) = sj'.2' e {- 1,0,1}
1. ca <- 0, s; - 0
2. For ; = 0 to I do:
し + ) 2」
3. return NAF(S) = (s;sに广 )
NAFは,非零のビットの数が最も少ない表現法である。非零のビットの箇所では、 因子の加算もしくは減算を行なうため、非零のビットの数が少ない方が、スカラー倍算 を高速に計算することが出来る。 NAFを用いたスカラー値表現を、 halve -and -ad d binary法, halve― and― add window法に適用す こと 出来る。 halve— and -add binary法, halve— and— add window法で用いる HEC— HLV はラン ダムカーブを用いたアルゴリズム 5a [Algorithm 5a]の HEC— HLVでも良いし、ァ ルゴリズム 8a [Algorithm 8a]の曲線パラメータに h =1, f =0の制約を設けた HE
2 4
C HLVでも良いし、アルゴリズム 10a [Algorithm 10a]の曲線パラメータに h =
― 2 h =1, f = 0の制約を設けた HEC HLVでも良!、し、アルゴリズム 10a [Algorith
1 4 ―
m 10a]の曲線パラメータに h =h =h =1, f =0の制約を設けた HEC HLVで
2 1 0 4 ― も良い。 NAFを用いた halve— and— add binary方を アルゴリズム 16a [Algorith
m 16a]として以下に示す。
[数 43]
Algorithm 16di lve - and― add NAF Binary Methoa
Input: D J(Fつ„ ) such that 2D≠0, d≡ΖΊ r order of D, m = log2 r」
Output scalar mu I ii plication dD
1. m d i ^-NAF{Td mod r e {-1,0,1}
2. m /2'Wm -" e{- 1,0,1}
4. for i from m downto 0 do:
O^HEC_HLV(0)
if > 0 then Q^O + D
5. return O
[0270] [演算高速化の検証]
次に、上述した処理例 7〜11を適用した演算における計算量を求め、演算の高速 化について検証する。
[0271] HEC HLV(h =1, f =0)では、計算量は、平均で、
― 2 4
19. 5M + 2S + 1I + 2. 5SR+2H+2T
である。
[0272] まず、有限体が正規基底で定義されている場合について考える。前述のとおり、正 規基底を用いた場合、 M, Iのみの計算量を考慮すればよい。文献 [A.Menezes. Elli pticし urve Public Key Cryptosystems. Kluwer Academic Publisners, 1993.」によると 、有限体を Fq, q = 2nとした場合、逆元計算一回は、下式によって算出される回数、 すなわち、
[数 44]
log20 _ 1)」 + w(w - 1) - 1
[0273] 上記式によって算出される回数の乗算に匹敵する。ここで、 w(n— 1)は n— 1を 2進 数で表示した際の 1の個数を表す。例えば、 n=83, 89, 113の場合、 I = 8Mとなり 、 n= 103の場合、 I = 9Mとなる。
[0274] ここで、 I = 8Mを仮定すると、
HEC HLV (h = 1, f =0)
― 2 4
の計算量は、
19. 5M+ 11 = 27. 5Mとなる。
[0275] 一方、 HarleyDBLでは、
21M+ 1I = 29Mとなり、 HEC—HLVの方が HarleyDBLよりも 5%ほど高速とな る。また、テーブル参照法を用いた場合では、
18M+ 1I = 26M
となり、 HEC— HLVは、 HarleyDBLよりも 10%ほど高速となる。
[0276] また、 HEC HLV (h =h = 1, f =0)
― 2 1 4
の計算量は、平均で、
14. 5M + 3S + 1I + 2. 5SR+ 2H+ 2T
となる。この場合は、
14. 5M+ 1I = 22. 5M
となる。
[0277] 一方、 HarleyDBLでは、
18M+ 1I = 26Mとなり、 HEC HLVの方が HarleyDBLよりも 13%ほど高速とな
る。また、テーブル参照法を用いた場合では、
14M+1I = 22M
となり、 HEC— HLVの方が HarleyDBLよりも 15%ほど高速となる。
[0278] また、 HEC HLV(h =h =h =1, f =0)
― 2 1 0 4
の計算量は、平均で、
13.5M + 3S + 1I + 2.5SR+2H+2T
となる。この場合は、
13.5M+1I = 21.5M
となる。
[0279] 一方、 HarleyDBLでは、
15M + II = 23Mとなり、 HEC—HLVの方が HarleyDBLよりも 6%ほど高速とな る。また、テーブル参照法を用いた場合では、
17M+1I = 25M
となり、 HEC— HLVの方が HarleyDBLよりも 14%ほど高速となる。
[0280] 次に、多項式基底の場合の計算量を評価する。 S, I, SR, H, Tの計算量をそれぞ れ S = 0.1M, I = 8M, SR=0.5M, H = 0.5M, T=OMと仮定する。 HEC— HL V(h =1, f =0)では、計算量は平均で、
2 4
19.5M + 2S + 1I + 2.5SR+2H+2T=29.95M
となる。
一方、 HarleyDBLでは、
21M + 5S + 1I = 29.5M
となり、 HarleyDBLの方が HEC— HLVよりも 1%程度高速となる。
[0281] また、テーブル参照法を用いた場合は、
18M + 2S + 1I + 2SR+2H = 28.2M
となり、 HEC— HLVは HarleyDBLよりも 4%程度高速となる。
また、 HEC HLV(h =h =1, f =0)では、計算量は平均で、
― 2 1 4
14.5M + 3S + 1I + 2.5SR+2H+2T=25.05M
となる。一方、 HarleyDBLでは、
18M + 7S + 1I = 26. 7M
となり、 HEC— HLVの方が HarleyDBLよりも 6%程度高速となる。
[0282] また、テーブル参照法を用いた場合は、
14M + 3S + 1I + 2SR+ 2H = 24. 3M
となり、 HEC— HLVの方が HarleyDBLよりも 9%程度高速となる。
[0283] また、 HEC HLV (h =h =h = 1, f =0)の計算量は、
― 2 1 0 4
13. 5M + 3S + 1I + 2. 5SR+ 2H+ 2T= 24. 05M
となる。一方、 HarleyDBLでは、
15M + 7S + 1I = 23. 7M
となり、 HarleyDBLの方が HEC—HLVよりも 1%程度高速となる。また、テーブル 参照法を用いた場合は、
13M + 3S + 1I + 2SR+ 2H = 23. 3M
となり、 HEC— HLVの方が HarleyDBLよりも 2%程度高速となる。
[0284] また、多項式基底の場合をソフトウェア実装を行!ヽ、速度の比較を行った。
CPUは Pentiumll 300MHz、
OSは RedHat7. 3、
コンパイラは gcc2. 96
の環境でソフトウェア実装を行った。
[0285] M (乗算)、 S (2乗算)は、文献 [D.Hankerson, J.Hernandez, and A.Menezes. Softw are Implementation of Elliptic Curve Cryptography over Binary Fields. CHES 2000, LNCS 1965, pp.1-24, 2000., Algorithm4. 6, 4. 7]、 I (逆元演算)は、文献 [S.Sha ntz. From Euclid s Gし D to Montgomery Multiplication to the Great Divide. TR-200 1-95, Sun Microsystems, Inc., 2001.]、 SR (平方根演算)、 T (トレース(二次方程式 の根があるか否かの判定))は、文献 [K.Fong, D.Hankerson, J丄 opez, and A.Meneze s. Field inversion and point halving revised. Technical Report CORR2003- 18, http:/ / www.cacr.math.uwaterloo.ca/techreports/2003/corr2003-18.pdf]、 H (ノヽ ~~フトレ ~~ ス(二次方程式の根を求める演算))は、文献 [K.Fong, D.Hankerson, J丄 opez, and A .Menezes. Field inversion ana point halving revised. Technical Report CORR2003— 1
8, http://www.cacr.math.uwaterloo.ca/techreports/2003/corr2003-18.pdf Algorit hm 4.7]に従った。
[0286] n=83, 89, 113の 3つの有限体に対して, M, S, I, SR, H, Tを実装し、 Mとの 比を求めた。ここで、
n= 83の既約多項式は、
n= 89の既約多項式は、
89 , 38
z 十 z 十 1—0
n= 113の既約多項式は、
113 9 , 1 — n
z 十 z十 1—0
を用いた。
計算量は次の通りとなった。
n=83:S/M = 0.12, Ι/Μ = 7.96, SR/M = 0.57, H/M = 0.58 n=89:S/M = 0.05, l/M = 8.74, SR/M = 0.14, H/M = 0.61 n=113:S/M = 0.06, l/M = 8.56, SR/M = 0.10, H/M = 0.50
[0287] これらを、 HarleyDBLの計算量 21M + 5S + IIに適用すると次のようになる。
n=83:HarleyDBL29.56M
n=89:HarleyDBL29.99M
n=113:HarleyDBL29.86M
[0288] これらを、 HEC HLV(h =1, f =0)の計算量、 19.5M + 2S + 1I + 2.5SR+
― 2 4
2H + 2Tに適用すると次のようになる。
n=83:HEC HLV(h =1, f =0)30.285M
― 2 4
n=89:HEC HLV(h =1, f =0)29.91M
― 2 4
n=113:HEC HLV(h =1, f =0)29.43M
― 2 4
[0289] この場合、 n= 83で HarleyDBLの方が HEC— HLVよりも 2%程度高速である。ま た、 n=89, 113で,それぞれ HEC—HLVの方が HarleyDBLよりもそれぞれ、 0.3 %, 1.5%程度高速である。
[0290] さらに、 HEC_HLV(h = 1, f =0)にテーブル参照法を適用した場合の計算量
、 18M + 2S + 1I + 2SR+ 2Hに適用すると次のようになる。
n=83:HEC HLV(h =1, f =0, withtable- lookup) 28.5M
― 2 4
n=89:HEC HLV(h =1, f =0, withtable -lookup) 28.34M
― 2 4
n=113:HEC HLV(h =1, f =0, withtable -lookup) 27.88M
― 2 4
[0291] この場合、 n=83, 89, 113で,それぞれ HEC—HLVの方が HarleyDBLよりも,
4%, 5%, 6%程度高速である。
[0292] また、 h =h =1, f =0の場合は次の通りとなる。
2 1 4
HarleyDBLの計算量 18M + 7S + IIに適用すると次のようになる。
n=83:HarleyDBL27.4M
n=89:HarleyDBL27.09M
n=113:HarleyDBL26.98M
[0293] 次に、 HEC HLV(h =h =1, f =0)の計算量、 14.5M + 3S + 1I + 2.5SR 一 2 1 4
+ 2H + 2Tに適用すると次のようになる。
n=83:HEC HLV(h =1, f =0)25.405M
― 2 4
n=89:HEC HLV(h =1, f =0) 24.96M
― 2 4
n=113:HEC HLV(h =1, f =0)24.49M
― 2 4
この場合、 n=83, 89, 113で、それぞれ HEC— HLVの方が HarleyDBLよりも、 7%, 8%, 10%程度高速である。
[0294] さらに、 HEC HLV(h =h =1, f =0)にテーブル参照法を適用した場合の計 一 2 1 4
算量、 14M + 3S + 1I + 2SR+ 2Hに適用すると次のようになる。
n=83:HEC HLV(h =h =1, f =0, withtable -lookup) 24.62M
― 2 1 4
n=89:HEC HLV(h =h =1, f =0, withtable -lookup) 24.39M
― 2 1 4
n=113:HEC HLV(h =h =1, f =0, withtable -lookup) 23.94M
― 2 1 4
この場合、 n=83, 89, 113で、それぞれ HEC— HVLの方が HarleyDBLよりも, 10%, 8%, 11%程度高速である。
[0295] また、 h =h =h =1, f =0の場合は次の通りとなる。
2 1 0 4
HarleyDBLの計算量 15M + 7S + IIに適用すると次のようになる。
n=83:HarleyDBL23.8M
n=89:HarleyDBL24.09M
n=113:HarleyDBL23.98M
[0296] 次に、 HEC— HLV(h =h =h =1, f =0)の計算量 13.5M + 3S + 1I + 2.5S
― 2 1 0 4
R + 2H + 2Tに適用すると次のようになる。
n=83:HEC HLV(h =h =h =1, f =0)24.405M
― 2 1 0 4
n=89:HEC HLV(h =h =h =1, f =0)23.96M
― 2 1 0 4
n=113:HEC HLV(h =h =h =1, f =0)23.49M
― 2 1 0 4
この場合、 n = 83で HarleyDBLの方が HEC— HLVよりも、 2%程度高速である。 また、 n=89, 113では、それぞれ HEC— HLVの方が HarleyDBLよりも 0.5%, 2
%程度高速である。
[0297] さらに、 HEC HLV(h =h =h =1, f =0)にテーブル参照法を適用した場合
― 2 1 0 4
の計算量 13M + 3S + 1I + 2SR+ 2Hに適用すると次のようになる。
n=83:HEC HLV(h =h =h =1, f =0, withtable- lookup) 23.62M
― 2 1 0 4
n=89:HEC HLV(h =h =h =1, f =0, withtable -lookup) 23.39M
― 2 1 0 4
n=113:HEC HLV(h =h =h =1, f =0, withtable -lookup) 22.94M
― 2 1 0 4
この場合、 n=83, 89, 113で,それぞれ HEC— HLVの方が HarleyDBLよりも、 1%, 3%, 4%程度高速である。
[0298] 以上より、ほとんどの場合で、 HEC—HLVの方が HarleyDBLよりも高速であること が言える。特に、曲線パラメータ力 h =h =1, f =0の場合は、全ての場合におい
2 1 4
て HEC—HLVの方が HarleyDBLよりも高速である。
[0299] 次に、スカラー倍算における計算量を考える。上記の例で、 HEC—HLVの方が H arleyDBLよりも高速な場合は、加算と 1Z2倍算の組み合わせによるスカラー倍算 の方が、加算と 2倍算の組み合わせによるスカラー倍算よりも高速である。次に具体 的にスカラー倍算の計算量を比較してみる。曲線は, h =h =1, f =0を用いる。ま
2 1 4
た、スカラー倍算アルゴリズムは、前述の NAF+ binary法(アルゴリズム 16a [Algori thml6a])を用いる。このアルゴリズムにおいて、ステップ 1, 2がスカラー倍算全体に 占める割合は非常に小さいため、これらの計算量は無視する。ここで、正規基底およ び多項式基底ともに n=83, 89, 113の場合で計算量を考えてみる。また、ベースポ
イン卜の位数は、 n=83, 89, 113に対してそれぞれ 165ビッ K 177ビット、 225ビッ トと仮定する。また、ステップ 4の繰り返し部分では、ベースポイントの位数のビット数 だけ繰り返す。因子の加算は文献 [T丄 ange, Efficient arithmetic on genus 2 hyperell iptic curves over nnite fields via explicit formulae. Cryptology e Print Archive, 2002/ 121, IACR, 2002.]を用いる。ただし、曲線パラメータは h =h =1, f =0とする。
2 1 4
[0300] この場合の因子の加算に必要な計算量は 21M + 3S + IIである。スカラー値は N AFを使い {ー1, 0, 1}で表現する。スカラー値を mとした場合、非零のビットは、おお よそ mZ3個ある。よって NAF+binary法の計算量は、((加算.減算の計算量) Z3 + ( 1Z2倍算 or2倍算の計算量) ) X (ベースポイントの位数のビット数)で計算する。
[0301] まずは、正規基底の場合力 見てみる。 I = 8Mと仮定する。
h =h =1, f =0の場合、
2 1 4
11=83:加算'2倍算 5885M
11=89:加算'2倍算 6313M
n= 113:カロ算 · 2倍算 8025M
[0302] h =h =1, f =0の場合、
2 1 4
n=83:カロ算 ·1Ζ2倍算 5307.5Μ
η=89: カロ算 ·1Ζ2倍算 5693.5Μ
η=113: 加算 ·1Ζ2倍算 7237.5Μ
[0303] h =h =1, f =0+テーブル参照法の場合、
2 1 4
n=83:加算 ·1/2倍算 5225Μ
η= 89:加算 · 1/2倍算 5605Μ
η=113:加算 ·1Ζ2倍算 7125M
[0304] 次に、多項式基底の場合を考える。
h =h =1, f =0の場合、
2 1 4
n=83:加算 ·2倍算 6116M
η=89:カロ算 ·2倍算 6505.93Μ
η=113:カロ算 ·2倍算 8245.5Μ
[0305] h =h =1, f =0の場合、
n=83 :カロ算 · 1Ζ2倍算 5786. 82Μ
η=89 :カロ算 · 1Ζ2倍算 6128. 92Μ
η= 113 :カロ算 · 1Ζ2倍算 7685. 25Μ
[0306] h =h = 1, f =0+テーブル参照法の場合、
2 1 4
n=83 :カロ算 · 1Ζ2倍算 5657. 3Μ
η=89 :カロ算 · 1Ζ2倍算 6028. 03Μ
η= 113 :加算 · 1Ζ2倍算 7561. 5Μ
[0307] 正規基底の場合は 10〜 11%程度、多項式基底の場合は 5〜8%程度 (加算 · 1Ζ
2倍算のスカラー倍)の方が (加算 · 2倍算のスカラー倍)よりも高速であることが言える
[0308] 以上、説明したように、本発明の処理によれば、楕円曲線暗号の 1Z2倍算を、超 楕円曲線暗号に拡張し、高速演算が実現される。
[0309] 超楕円曲線上の因子の演算を使う暗号処理演算において、処理の重い演算は因 子のスカラー倍算である。上述した本発明の処理によりスカラー倍算を高速ィ匕するこ とで超楕円曲線暗号の処理を大幅に改善することができる。
[0310] 前述したように、超楕円曲線暗号 (HECC)は楕円曲線暗号 (ECC)を一般ィ匕した 概念であり、現在、様々な分野で適用されている楕円曲線暗号 (ECC)を使った暗号 処理、具体的には署名処理、暗号データの生成、復号処理、暗号鍵共有処理、認 証処理などに、本発明を適用することが可能である。楕円曲線暗号 (ECC)における 演算処理中のスカラー倍算の部分を、上述したスカラー倍算に置き換えることで、演 算の高速ィ匕が可能となる。
[0311] [暗号処理装置の機能構成について]
図 7に、本発明の暗号処理装置の機能構成を示すブロック図を示す。暗号処理装 置 100は、超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理装置 100で あり、因子 Dをベースポイントとして生成するベースポイント生成部 101、前述の処理 例 5において説明したテーブル、すなわち、予め固定された因子 Dについての [1Z2 'D]計算値に基づいて、 k , k ', (k , k ')のいずれが正しいかを記録したテーブル
1 1 0 0
を格納した記憶部 102と、演算実行部 103を有する。
[0312] 演算実行部 103は、超楕円曲線の因子 Dに対するスカラー倍算の演算において、 演算処理として、 1Z2倍算を含む演算を実行する。具体的には、種数 2、標数 2のラ ンダムパラメータを持つ超楕円曲線の因子 Dに対するスカラー倍算にお 、て 1Z2倍 算を含む演算を実行する。例えば、種数 2、標数 2の h(x) =x2+x+h , f =0をパラ
0 4 メータに持つ超楕円曲線の因子 Dに対するスカラー倍算、あるいは、種数 2、標数 2 の h (X) = Xをパラメータに持つ超楕円曲線の因子 Dに対するスカラー倍算にお 、て 1Z2倍算を含む演算を実行する。
[0313] [電子署名生成および検証アルゴリズムにおける本発明の適用例]
以下に本発明の処理を適用可能な具体的な暗号処理アルゴリズムの例として、楕 円曲線暗号を適用した電子署名生成および検証アルゴリズムである ECDSA (EC Digital Signature Algorithm)のスカラー倍算に本発明の演算手法を適用した場 合について説明する。 IEEE1363によると ECDSAによる署名生成、検証は以下の シーケンスによって実行される。
[0314] (1)入力
(1 - 1)楕円曲線のドメインパラメータ及びベースポイント G (位数 r)
(1 2)署名者の秘密鍵 s
(1 3)平文 M
(2)鍵生成
(2—1)秘密鍵 sに対して W=sGを公開鍵とする
(3)署名生成
(3- 1)ランダムな整数 0 < u < rを生成
(3— 2)V=uG= (x、y )を計算
(3- 3) xを整数に変換し、 iとする
(3-4) c=i mod rを計算。 c = 0なら step3— 1へ
(3— 5) f=h (M)、 hは hash関数
(3-6) d=u_1 (f+sc) mod rを計算。 d=0なら step3— 1へ
(3- 7) (c、 d)を平文 Mに対する署名にする。
(4)署名検証
(4—l) 0< c<r、 0< d<rをチェック。該当しない場合 invalidを出力 (4— 2) h=d mod r、 h =fh mod r、 h =ch mod r 十算。
1 2
(4— 3) P= (x、 y ) =h G+h Wを計算。 P=0ならば invalidを出力
P P 1 2
(4-4) xを整数に変換し、 iとする。
P
(4 5) c' =i mod rを計算する。
(4 6) c' = cならば validを出力。そうでないならば invalidを出力。
[0315] 上記アルゴリズムにお 、て下記の処理が超楕円曲線を用いた本提案法が適用でき る箇所である。
(2—1)秘密鍵 sに対して W=sGを公開鍵とする
(3— 2)V=uG= (x、y )を計算
(4— 3) P= (X、 y ) =h G+h Wを計算。 P=0ならば invalidを出力
P P 1 2
[0316] これらの各ステップ(2—1) , (3- 2) , (4— 3)における演算処理、 W=sG、 V=u G、 P= (x、 y ) =h G+h Wで、 sG、 uG、 h G、 h Wの演算処理は、因子のスカラ p p 1 2 1 2
一倍算処理であり、本発明の適用による高速ィ匕が可能となる。さらに sG、 uG、 h Gの 演算処理は、固定因子のスカラー倍算処理であり、本発明のテーブル参照法の適用 による高速ィ匕が可能となる。
[0317] [暗号処理装置のハードウェア構成例]
最後に、上述の暗号処理を実行するデバイスとしての ICモジュール 200の構成例 を図 8に示す。上述の処理は、例えば PC、 ICカード、リーダライタ、その他、様々な 情報処理装置において実行可能であり、図 8に示す ICモジュール 200は、これら様 々な機器に構成することが可能である。
[0318] 図 8に示す CPU(Central processing Unit)201は、暗号処理の開始や、終了、デー タの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行 するプロセッサである。メモリ 202は、 CPU201が実行するプログラム、あるいは演算 パラメータとしての固定データを格納する ROM (Read-Only-Memory)、 CPU201の 処理にお 、て実行されるプログラム、およびプログラム処理にぉ 、て適宜変化するパ ラメータの格納エリア、ワーク領域として使用される RAM (Random Access Memory) 等からなる。
[0319] なお、メモリ 202に格納する演算実行プログラムは、上述したベースポイントの設定 処理、スカラー倍算としての加算、 2倍算の実行シーケンスを含むプログラムとして設 定される。また、メモリ 202は暗号処理に必要な鍵データ等の格納領域として使用可 能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが 好ましい。
[0320] 暗号処理手部 203は、上述したスカラー倍算処理を含む暗号処理、復号処理等を 実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示した力 この ような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムを ROMに 格納し、 CPU201が ROM格納プログラムを読み出して実行するように構成してもよ い。
[0321] 乱数発生器 204は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数 の発生処理を実行する。
[0322] 送受信部 205は、外部とのデータ通信を実行するデータ通信処理部であり、例え ばリーダライタ等、 ICモジュールとのデータ通信を実行し、 ICモジュール内で生成し た暗号文の出力、あるいは外部のリーダライタ等の機器力ものデータ入力などを実行 する。
[0323] 以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、 本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ること は自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的 に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の 欄を参酌すべきである。
[0324] なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、 あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理 を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに 組み込まれたコンピュータ内のメモリにインストールして実行させる力、あるいは、各 種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させること が可能である。
[0325] 例えば、プログラムは記録媒体としてのハードディスクや ROM (Read Only Memory
)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、 CD -ROM(Compact Disc Read Only Memory), MO(Magneto optical)ディスク, DVD( Digital Versatile Disc),磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、 一時的あるいは永続的に格納 (記録)しておくことができる。このようなリムーバブル記 録媒体は、 V、わゆるパッケージソフトウェアとして提供することができる。
[0326] なお、プログラムは、上述したようなリムーバブル記録媒体力 コンピュータにインス トールする他、ダウンロードサイトから、コンピュータに無線転送したり、 LAN(Local A rea Network),インターネットといったネットワークを介して、コンピュータに有線で転 送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵する ハードディスク等の記録媒体にインストールすることができる。
[0327] なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみ ならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個 別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的 集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
産業上の利用可能性
[0328] 本発明の構成によれば、楕円曲線暗号の 1Z2倍算を、超楕円曲線暗号に拡張し 、高速演算が実現される。超楕円曲線上の因子の演算を使う暗号処理演算におい て、処理の重い演算は因子のスカラー倍算であり、本発明の処理によりスカラー倍算 を高速ィ匕することで超楕円曲線暗号の処理を大幅に改善することができ、 ICカード など高速性、安全性の要求される暗号処理演算を行う機器、デバイスなどにおいて 本発明の適用が可能である。
[0329] 本発明の構成によれば、超楕円曲線暗号の因子 Dに対するスカラー倍算において 、演算処理として、 1Z2倍算を含む演算を実行することでスカラー倍算を高速ィ匕す ることができる。例えば、種数 2、標数 2の h (x) =x2+x+h , f
0 4 =0をパラメータに持 つ超楕円曲線の因子 Dに対するスカラー倍算、あるいは、種数 2、標数 2の h (x) =x2 +h x+h , f =0をパラメータに持つ超楕円曲線の因子 Dに対するスカラー倍算、
1 0 4
あるいは、種数 2、標数 2の h (x) =xをパラメータに持つ超楕円曲線の因子 Dに対す るスカラー倍算において 1Z2倍算を含む演算を実行することで、高速演算が実現さ
れ、 ICカードなど高速性、安全性の要求される暗号処理演算を行う機器、デバイスな どにおいて本発明の適用が可能である。
る。
[0330] さらに、本発明の構成によれば、予め固定された因子 Dについての [1Ζ2Ϊ>]計算 値に基づいて、 k , k ', (k , k ')のいずれが正しいかを記録したテーブルを適用す
1 1 0 0
ることで、因子のスカラー倍算における計算量をさらに削減することが可能となり、さら なる高速化が実現され、 ICカードなど高速性、安全性の要求される暗号処理演算を 行う機器、デバイスなどにおいて本発明の適用が可能である。
[0331] さらに、本発明の構成によれば、超楕円曲線暗号の因子 Dに対するスカラー倍算 において、演算処理として、 1Z2倍算を含む演算を実行する構成とするともに、 1/ 2倍算の演算処理において逆元演算の実行回数を減少させるアルゴリズムを適用し たので、因子のスカラー倍算における計算量をさらに削減することが可能となり、さら なる高速ィ匕が実現される。