JP2007187957A - 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム - Google Patents

暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Download PDF

Info

Publication number
JP2007187957A
JP2007187957A JP2006007104A JP2006007104A JP2007187957A JP 2007187957 A JP2007187957 A JP 2007187957A JP 2006007104 A JP2006007104 A JP 2006007104A JP 2006007104 A JP2006007104 A JP 2006007104A JP 2007187957 A JP2007187957 A JP 2007187957A
Authority
JP
Japan
Prior art keywords
factor
scalar multiplication
factors
normal
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006007104A
Other languages
English (en)
Other versions
JP4513752B2 (ja
Inventor
Masanori Kataki
雅宣 堅木
Izuru Kitamura
出 北村
Toru Akishita
徹 秋下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2006007104A priority Critical patent/JP4513752B2/ja
Priority to PCT/JP2007/050008 priority patent/WO2007080825A1/ja
Priority to EP07706355A priority patent/EP1975907A1/en
Priority to CN200780002463XA priority patent/CN101371285B/zh
Priority to KR1020087015731A priority patent/KR20080086476A/ko
Priority to US12/087,811 priority patent/US20100183142A1/en
Publication of JP2007187957A publication Critical patent/JP2007187957A/ja
Application granted granted Critical
Publication of JP4513752B2 publication Critical patent/JP4513752B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】超楕円曲線暗号処理において高速な演算を実現する装置および方法を実現する。
【解決手段】種数gの超楕円曲線暗号において、種数gに等しいウェイト(Weight)を持つ通常因子が、スカラー倍算の対象因子である場合、該通常因子を種数g未満のウェイト(Weight)を持つ因子として定義されるテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を生成して、このテータ因子を適用したスカラー倍算をスカラー倍算実行部において実行させる。本構成により、演算量を削減した高速なスカラー倍算を実行させることが可能となり、高速な暗号処理演算が実現される。
【選択図】図2

Description

本発明は、暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、超楕円曲線暗号におけるスカラー倍算の高速化を実現する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が行なわれている。
例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号化を行なうシステムが実用化されている。
暗号処理を実行する例えばICカードは、例えば駅の改札などの様々なゲート、あるいはショッピングセンターなどで盛んに利用されるようになっており、小型化および処理の迅速化の要求が厳しくなってきている。
暗号化方式には、大別して共通鍵方式、公開鍵方式がある。共通鍵方式は、対称暗号方式ともよばれ、発信者、受信者の双方で共通の鍵を保有する。共通鍵方式の代表的な方法として、DES(Data Encryption Standard)がある。DESアルゴリズムの特徴は、暗号化と復号化とをほぼ同じアルゴリズムで実行可能なことである。
この共通鍵暗号に対して、発信者と受信者の鍵を異なるものとした構成が公開鍵方式または非対称暗号方式である。公開鍵暗号方式では、暗号化、復号化に共通の鍵を用いる共通鍵暗号方式と異なり、秘密に保つ必要のある秘密鍵は、特定の1人が持てばよいため鍵の管理において有利である。ただし、公開鍵暗号方式は共通鍵暗号方式に比較してデータ処理速度が遅く、一般には、秘密鍵の配送、デジタル署名等のデータ量の少ない対象に多く用いられている。公開鍵暗号方式の代表的なものにはRSA(Rivest-Shamir-Adleman)暗号や、楕円曲線暗号(ECC:Elliptic Curve Cryptography)が知られている。
楕円曲線暗号(Elliptic Curve Cryptography)は、素体上の楕円曲線y=x+ax+b(4a+27b≠0)や、2の拡大体上の楕円曲線y+xy=x+ax+b(b≠0)などを用いる。これらの曲線上の点に無限遠点(O)を加えた集合は、加法に関して有限群をなし、無限遠点(O)はその単位元となる。以下、この有限群上の点の加法を+で表す。この有限群上の異なる2点P,Qの加算P+Qを「点の加算」、点Pと点Pの加算P+P=2Pを「点の2倍算」と呼ぶ。また、点Pをk回加算した点P+P+…+P=kPを求める演算を「点のスカラー倍算」と呼ぶ。
点のスカラー倍算は、点の加算、および点の2倍算を用いて構成できることが知られている。素体上の楕円曲線や2の拡大体上の楕円曲線上のアフィン座標系(x,y)や射影座標(X,Y,Z)における点の加算法、点の2倍算法、および点のスカラー倍算法は、IEEE P1363/D13 Standard Specifications for Public Key Cryptographyに記されている。
楕円曲線暗号を一般化した方式として、Koblitz、Cantorによって提案された超楕円曲線暗号(HECC:Hyper Elliptic Curve Cryptography)方式がある。超楕円曲線暗号方式については、例えば非特許文献1、非特許文献2に記載されている。
有限体をFq、ただしq=p,pは素数とする。楕円曲線暗号(ECC)では有限体Fq上で定義される楕円曲線上の点をPとし、スカラー倍算した点kP(k∈Z)をQとすると、Qからkを求める問題は離散対数問題に帰着できる。一方、超楕円曲線暗号(HECC)では点の形式的和である因子(divisor)をDとし、スカラー倍算kDで定義される因子をDとすると、Dからkを求める問題は超楕円曲線におけるヤコビ多様体上の離散対数問題となり、その数学的解法の困難性が存在する。このように超楕円曲線暗号(HECC)は、数学的な解読困難性の存在が確認されており公開鍵暗号の有効な暗号方式として期待されている。
超楕円曲線では曲線を特徴づける値は種数(genus)gである。このとき有限体Fq上で定義される種数gの超楕円曲線Cは以下の方程式、
+h(x)y=f(x)
で定義される。ここで、h(x),f(x)∈Fq[x],f(x)は、高々、次数gの多項式(pが奇素数の場合はh=0)、f(x)は、次数2g+1のmonic多項式である。
超楕円曲線暗号の定義体の演算サイズ(ビット長)は楕円曲線暗号と同等の安全性を仮定した場合、Hasseの定理より、楕円曲線の定義体の演算サイズに比べて1/gに小さくなることが導かれる。演算サイズが小さいことは実装上メリットがあり、超楕円曲線暗号の利点の一つして挙げられる。
次に、超楕円曲線暗号の基本事項について説明する。前述したように、超楕円曲線暗号では点の形式的和である因子(divisor)をDとし、スカラー倍算kDで定義される因子をDとすると、Dからkを求める問題は超楕円曲線におけるヤコビ多様体上の離散対数問題として公開鍵暗号として用いることができる。
ここで、因子(divisor)は有理点の形式和であり、以下の形式で表現することができる。
Figure 2007187957
また、半被約因子(semi reduced divisor)は、以下の形式で表現することができる。
Figure 2007187957
ただし、P=(x、y)かつi≠jに対してP≠Pである。
また、ΣmをDのウェイト(weight)と呼ぶ。さらにウェイト(weight)が種数g以下である半被約因子を被約因子(reduced divisor)と呼ぶ。
超楕円曲線の任意の半被約因子Dは下記の多項式U、V∈Fq[x]を用いてD=(U、V)として表現できる。これをマンホード(Mumford)表現と呼ぶ。
Figure 2007187957
種数(genus)2の任意の被約因子Dはマンホード(Mumford)表現を用いると、有限体Fq上の元を係数に持つ2次以下の多項式の組、すなわち、
(U、V)=(x+ux+u、vx+v
と表現できる。
また、種数(genus)3の任意の被約因子Dはマンホード(Mumford)表現を用いると、有限体Fq上の元を係数に持つ3次以下の多項式の組、すなわち、
(U、V)=(x+u+ux+u、v+vx+v
と表現できる。
なお、以下では、「因子」は、特に断りがない限り、被約因子(reduced divisor)を意味するものとする。
種数gの超楕円曲線暗号において、因子のウェイト(weight)は種数(g)以下である。以下、本明細書においては、ウェイト(weight)が、種数(g)に等しい因子を通常因子(standard因子)と呼び、ウェイト(weight)が、種数(g)より小さい因子をテータ因子(theta因子)と呼ぶ。
例えば、
種数2の場合、
テータ因子はウェイト(weight)1の因子、
種数3の場合、
テータ因子はウェイト(weight)1,2の因子
のことを指す。
具体的なマンフォード(Mumford)表現は以下のようになる。
(1)種数2のテータ因子:(U,V)=(x+u,v)
(2)種数3のテータ因子(weight 1):(U,V)=(x+u,v
(3)種数3のテータ因子(weight 2):(U,V)=(x+ux+u,vx+v
次に、超楕円曲線暗号で用いられる因子のスカラー倍算について説明する.因子のスカラー倍算は加算アルゴリズムと呼ばれる因子の加算と2倍算組み合わせで計算することができる。以下では主要な加算アルゴリズムについて説明する。
最初に提案された実用的なアルゴリズムはCantorのアルゴリズムである。このアルゴリズムについては、例えば非特許文献1、非特許文献2に記載されている。このアルゴリズムはあらゆる種数の超楕円曲線上の因子に対して適用可能なアルゴリズムであるが、楕円曲線に比べてアルゴリズムが複雑で計算量が多いことが欠点である。
このCantorのアルゴリズムを、Harleyは種数2、素体の超楕円曲線に限定し、因子のweightの場合分けを行い、それぞれの場合で最適化を行うことでより計算量の少ないアルゴリズムを提案した(非特許文献3、非特許文献4)。このアルゴリズムをHarleyアルゴリズムもしくはExplicit Formulaeと呼び、近年このアルゴリズムの拡張(種数3の曲線,定義体,座標系)の研究が盛んになっている(非特許文献5)。
このようにHarleyアルゴリズムは入力因子のウェイト(weight)によって場合わけを行う構成であるために、入力が通常因子かテータ因子かによって有限体上の演算コストが異なる。上述したように、テータ因子は通常因子に比べてウェイト(weight)が小さい。つまり因子のMumford表現における多項式の次数、つまりウェイト(weight)が低いので、加算や2倍算の計算コストは少なくなる(非特許文献8)。
ここで、
通常因子どうしの加算を[MFCADD]、
通常因子とテータ因子の加算を[TADD]、
と定義すると、
例えば種数2の超楕円曲線暗号では定義体がF(2)の場合、
通常因子どうしの加算[MFCADD]の計算コストは、I+25M、
通常因子とテータ因子の加算[TADD]の計算コストは、I+11M、
となり、TADDが14M高速となるである(非特許文献8)。なお、I、Mは有限体F(2)上での逆元演算、乗算を意味し、I+25Mは、1回の逆元演算と、25回の乗算が必要であることを意味し、I+11Mは、1回の逆元演算と、11回の乗算が必要であることを意味する。
さらに、楕円曲線暗号では、有理点の1/2倍算(halving)が提案されている。有理点のスカラー倍算を計算する際に、加算と2倍算を用いるのではなくて、加算と1/2倍算を用いた処理を開示している。楕円曲線暗号の1/2倍算は,一般に2倍算よりも高速であり、結果として1/2倍算を用いたスカラー倍算は高速となる。
これと同様に、超楕円曲線暗号においても,因子のスカラー倍算の計算において2倍算を使わずに1/2倍算(halving)アルゴリズムを用いて計算することができる。1/2倍算(halving)アルゴリズムは、もともと定義体がF(2)の楕円曲線暗号で提案されたものであるが(非特許文献7)、近年、種数2、有限体F(2)の超楕円曲線暗号にもこの1/2倍算(halving)アルゴリズムを適用する構成が提案されている(非特許文献10)。
超楕円曲線暗号における因子のスカラー倍算について説明する。
(ア)binary法
まず、スカラー倍算のアルゴリズムとして基本的なbinary法の演算アルゴリズムについて説明する。
(1)因子のスカラー倍算は超楕円加算と超楕円2倍算の組み合わせで計算することができる。因子Dに対して、スカラー倍算(D=dD)に適用する乗数としてのスカラー値:dの2進数表現を、
d=(dn−1、・・・・・、d)、
ただし、dn−1=1、dn−2,・・・,0=1or0とする。
(2)dを上位ビットから見ていき、毎ビットDを2倍し、d=1の場合に、ベースポイントを加算することが特徴である。binary(left−to−right)法のアルゴリズム(Algorithm1)を以下に示す。
Figure 2007187957
(イ)Side Channel Attackとdouble−and−always法
暗号技術の実装方法の不具合を利用して秘密情報を知る方法をサイドチャネルアタック(Side Channel Atttack, SCA)と呼ぶ。SCAには秘密情報と相関のある演算の処理時間を利用して攻撃を行うTiming Attack(TA)(非特許文献11)や秘密情報と電力消費量の相関を利用して攻撃を行うSimple Power Analysis(SPA)やDifferential Power Analysis (DPA)といった電力攻撃(非特許文献12)が知られている。
SPAは秘密鍵のビット情報に依存した演算の消費電力の波形を直接観測することにより、秘密情報を明らかにする実装攻撃である。アルゴリズムにSPAをもたせるためには秘密鍵のビット情報と電力波形の相関がないアルゴリズムにする必要がある(TA耐性は演算時間)。これまで提案されている楕円曲線暗号(ECC)、超楕円曲線暗号(HECC)におけるTA、SPAに対する対策の一つとして下記に示すdouble−and−add−always法がある(非特許文献13)。このアルゴリズムでは上記のbinary法と異なり、bitの値dによって演算時間や電力波形が異ならないようにDummyの加算を常に行っている。
Figure 2007187957
(ウ) 同時計算法
2つのスカラー倍算kP+lQの計算において,kP,lQを独立に計算するのではなく、下記に示す同時計算法を用いて効率よく計算できることが知られている(非特許文献14)。k,lの2進展開を(kn−1,.....,k),(ln−1,.....,l)とすると、同時計算法は以下になる。
Figure 2007187957
テータ因子によるスカラー倍算の高速化について、
先に説明したテータ因子、すなわち、ウェイト(weight)が、種数(g)より小さい因子であるテータ因子を使った因子のスカラー倍算の計算手法を提示している従来技術を図1に示す。
このテータ因子を使った因子のスカラー倍算の計算手法は、2つのステップから構成される。まず、テータ因子をベースポイントとして生成するステップ(S11)、次に、テータ因子を使ったスカラー倍算の実行ステップ(S12)とによって構成される。
超楕円曲線暗号で用いられる因子は殆ど種数gと同じweight,gを持った通常因子である(非特許文献6)。従って、ランダムに因子を生成した場合、テータ因子になる確率は、有限体の元の数をqとするとO(1/q)の確率である。例えば種数2の場合、qは暗号用途で使うことを考えると、280程度の大きな値になるため、ランダムに因子を選んだ場合、テータ因子になる確率は非常に少ない。しかし固定点のベースポイントのスカラー倍算の場合、意図的にテータ因子を作ることができる。テータ因子を生成する方法を以下にアルゴリズム4(Algorithm4)として示す。
[Algorithm4]
1.定義体F上の元をランダムにg(1≦g<g)個選び、g個の超楕円曲線上の点P(i=1,…,g)を生成する。ランダムに選んだ各元をx座標x(i=1…g)とし、次に超楕円曲線上に乗るようにxに対応するy座標を求める。
2.ベースポイントの因子をD=(U(x),V(x))とする。
(ア)U(x)=(x−x)(x−x)…(x−xg0
(イ)V(x)=vg0−1g0−1+vg0−2g0−2+…+vの係数vを決定する。例えばPが全て異なる場合、連立方程式V(x)=y(i=1…g)よりvを求めることができる。
例えば上記のアルゴリズム4(Algorithm4)によって生成したテータ因子をベースポイントに設定することで、SPA耐性のあるスカラー倍算としてのdouble−and−always法、以下のアルゴリズム5(Algorithm5)によって実行される。
Figure 2007187957
先に、説明したように、テータ因子との通常因子との加算は通常因子どうしの加算よりも計算量が少なくなるため、スカラー倍算を高速に演算することができる(特許文献1,非特許文献8)。
このように、スカラー倍算を高速に演算するためには、テータ因子を選択することが有効となる。しかし、超楕円曲線暗号におけるスカラー倍算は用途によって、固定の因子のスカラー倍算を用いる場合とランダムな因子のスカラー倍算を用いる場合がある。テータ因子による高速化は通常因子のスカラー倍算に比べて非常に高速であるものの、予め、因子を選択して準備可能な固定点のスカラー倍算においては、選択因子をテータ因子として高速化を図ることが可能であるが、任意の因子を選択することが必要となる場合には、通常因子が適用される可能性が高くなり、高速化が図れないという問題が存在する。なお、メモリに制約がない環境でのソフトウェア実装を考えた場合、通常因子をベースポイントに使った方式では、window法による高速化手法が適用できる。一方、テータ因子をベースポイントに使った方式の場合、windowサイズが小さい場合にしかwindow法を適用することができない(非特許文献9)。メモリが十分ある環境では通常因子を使った方式の方がテータ因子を用いた方式に比べて有利になる。
特開2005−258228号公報 N.Koblitz. Hyperelliptic curve cryptosystems. J.Cryptology, vol.1,No.3, pp.139-150, 1989. D.G.Cantor. Computing in the Jacobian of hyperelliptic curve. Math. Comp., Vol.48, No. 177, pp.95-101, 1987. R. Harley. Adding.text. http:// cristal.inria.fr/ ~harley/ hyper/, 2000. R. Harley. Doubling.c. http:// cristal.inria.fr/ ~harley/ hyper/. 2000. H. Cohen and G. Frey. Handbook of Elliptic and Hyperelliptic Curve Cryptography. Chapman & Hall/CRC, 2005. N. Nagao. Improving group law algorithms for Jacobians of hyperelliptic curves. ANTS-IV, LNCS 1838, pp.439-448, Springer-Verlag, 2000. E.Knudsen. Elliptic Scalar Multiplication Using Point Halving. ASIACRYPTO '99, LNCS 1716, pp.135-149, Springer-Verlag, 1999. M.Katagi, I.Kitamura, T.Akishita, and T.Takagi, "Novel Efficient Implementations of Hyperelliptic Curve Cryptosystems Using Degenerate Divisors", WISA 2004, LNCS 3325, pp.345-359, Springer-Verlag 2004. M.Katagi, T.Akishita, I.Kitamura, and T.Takagi, "Some Improved Algorithms for Hyperelliptic Curve Cryptosystems Using Degenerate Divisors", ICISC 2004, LNCS 3506, pp.296-312, Springer-Verlag 2004. I. Kitamura, M. Katagi, and T. Takagi, A Complete Divisor Class Halving Algorithm for Hyperelliptic Curve Cryptosystems of Genus Two. ACISP 2005, LNCS 3574, pp.146-157, 2005. C. Kocher, Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems, CRYPTO'96, LNCS 1109, pp.104-113, 1996. C. Kocher, J. Jaffe, and B. Jun, Differential Power Analysis, CRYPTO '99, LNCS 1666, pp.388-397, Springer-Verlag, 1999. J.-S. Coron, Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems, CHES'99, LNCS 1717, pp.292-302, Springer-Verlag, 1999. D. Hankerson, J.L.Hernandez, and A.Menezes, "Software Implementation of Elliptic Curve Cryptography over Binary Fields", CHES 2000, LNCS 1965, pp.1-24, Springer-Verlag, 2000.
現在、実用フェーズに入りつつある楕円曲線暗号(ECC)アルゴリズムに対して、その拡張概念である超楕円曲線暗号(HECC)アルゴリズムは、現在、学会レベルで高速アルゴリズムや、その実装方法についての研究が進められている。超楕円曲線暗号(HECC)のスカラー倍算の演算時間は、楕円曲線暗号(ECC)に近づきつつある程度に過ぎず、さらなる高速化が望まれている。
本発明は、このような現状に鑑みてなされたものであり、超楕円曲線暗号(HECC)のスカラー倍算の演算時間を短縮し、高速処理可能な超楕円曲線暗号(HECC)演算処理を実現する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
具体的には、本発明は通常因子をテータ因子に分割してスカラー倍算することにより、任意の因子を選択したスカラー倍算を高速に実行することを可能とした暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。本発明の方法により、入力が固定な因子の場合にしか適用できなかったテータ因子を用いた高速化手法をランダムな入力の因子に対して適用できることができ、超楕円曲線暗号のスカラー倍算を高速化することができる。さらに、ベースポイントとして通常因子を採用することができるため、暗号処理装置におけるメモリに制約がない環境では、通常因子を使った既存のスカラー倍算高速化手法も適用することができ、柔軟性が高くなる。
本発明の第1の側面は、
超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理装置であり、
スカラー倍算の対象となる因子の制御を実行する因子制御部と、
前記因子制御部の制御に基づいて決定された因子を適用したスカラー倍算を実行するスカラー倍算実行部とを有し、
前記因子制御部は、
種数gの超楕円曲線暗号において、種数gに等しいウェイト(Weight)を持つ通常因子が、スカラー倍算の対象因子である場合、該通常因子を種数g未満のウェイト(Weight)を持つ因子として定義されるテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行う構成であることを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記因子制御部は、ベースポイント生成部として機能し、テータ因子への分割可能な通常因子をベースポイントとして生成する処理を実行し、前記スカラー倍算実行部は、前記ベースポイントとしての通常因子を分割して設定されるテータ因子を適用したスカラー倍算処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記因子制御部は、スカラー倍算の処理対象として入力するランダムな因子についてのテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させ、分割不可能である場合は、通常因子によるスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行う構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記因子制御部は、スカラー倍算の処理対象として入力するランダムな因子についてのテータ因子への分割可能性を判定し、入力因子が分割不可能である場合、入力因子の2倍算、および2倍算の演算結果因子のテータ因子への分割可能性の判定処理を繰り返し実行し、テータ因子への分割可能な演算結果因子が検出された場合、該演算結果因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行う構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記スカラー倍算実行部は、前記2倍算の演算結果因子を分割して設定したテータ因子を適用したスカラー倍算の実行の後、2倍算処理の回数に相当する回数の1/2倍算を実行して、入力因子のスカラー倍算結果を算出する処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記因子制御部は、鍵生成部として機能し、テータ因子への分割可能な通常因子を鍵データとして生成する処理を実行し、該生成鍵データをメモリに格納し、前記スカラー倍算実行部は、前記鍵データとしての通常因子を分割して設定されるテータ因子を適用したスカラー倍算処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記因子制御部は、前記メモリに通常因子としての鍵データを分割して設定されるテータ因子を格納する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記スカラー倍算実行部は、種数2の超楕円曲線暗号において、2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、kD=kP+kP、とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記スカラー倍算実行部は、種数2の超楕円曲線暗号において,2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、奇数,偶数の整数k,kを適用し、
kD=k+k−(k−k)P−(k−k)P
とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記スカラー倍算実行部は、種数2の超楕円曲線暗号において,2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
kP+(k+1)P−P、または、
kP+(k−1)P+P
とする変換を行い、テータ因子P,Pを適用したスカラー倍算を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記スカラー倍算実行部は、種数3の超楕円曲線暗号において、2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
kP+(k+1)P−P、または、
kP+(k−1)P+P
とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記スカラー倍算実行部は、種数4の超楕円曲線暗号において、2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
kP+(k+1)P−P、または、
kP+(k−1)P+P
とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記スカラー倍算実行部は、種数gの超楕円曲線暗号において、通常因子を3個のテータ因子に分けて同時計算法を使ってスカラー倍算を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記スカラー倍算実行部は、種数3の超楕円曲線暗号において、3つのウェイト(weight)1のテータ因子P,P,Pを適用して、通常因子Dのスカラー倍算kDを、
kP+(k+1)P−P、または、kP+(k−1)P+P
と、kP
とに分割して、同時計算法およびdouble−and−add−always法を用いてテータ因子P,Pを適用したスカラー倍算を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記スカラー倍算実行部は、種数gの超楕円曲線暗号において通常因子を2個以上の複数のテータ因子に分けて同時計算法を使ってスカラー倍算を実行する構成であることを特徴とする。
さらに、本発明の第2の側面は、
暗号処理装置において、超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理方法であり、
因子制御部において、スカラー倍算の対象となる因子の制御を実行する因子制御ステップと、
スカラー倍算実行部において、前記因子制御部の制御に基づいて決定された因子を適用したスカラー倍算を実行するスカラー倍算実行ステップとを有し、
前記因子制御ステップは、
種数gの超楕円曲線暗号において、種数gに等しいウェイト(Weight)を持つ通常因子が、スカラー倍算の対象因子である場合、該通常因子を種数g未満のウェイト(Weight)を持つ因子として定義されるテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行うステップを有することを特徴とする暗号処理方法にある。
さらに、本発明の暗号処理方法の一実施態様において、前記因子制御ステップは、ベースポイント生成処理を実行し、テータ因子への分割可能な通常因子をベースポイントとして生成する処理を実行し、前記スカラー倍算実行ステップは、前記ベースポイントとしての通常因子を分割して設定されるテータ因子を適用したスカラー倍算処理を実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記因子制御ステップは、スカラー倍算の処理対象として入力するランダムな因子についてのテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させ、分割不可能である場合は、通常因子によるスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行うことを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、記因子制御ステップは、スカラー倍算の処理対象として入力するランダムな因子についてのテータ因子への分割可能性を判定し、入力因子が分割不可能である場合、入力因子の2倍算、および2倍算の演算結果因子のテータ因子への分割可能性の判定処理を繰り返し実行し、テータ因子への分割可能な演算結果因子が検出された場合、該演算結果因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行うことを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記スカラー倍算実行ステップは、前記2倍算の演算結果因子を分割して設定したテータ因子を適用したスカラー倍算の実行の後、2倍算処理の回数に相当する回数の1/2倍算を実行して、入力因子のスカラー倍算結果を算出する処理を実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記因子制御ステップは、テータ因子への分割可能な通常因子を鍵データとして生成する処理を実行し、該生成鍵データをメモリに格納し、前記スカラー倍算実行ステップは、前記鍵データとしての通常因子を分割して設定されるテータ因子を適用したスカラー倍算処理を実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記因子制御ステップは、前記メモリに通常因子としての鍵データを分割して設定されるテータ因子を格納することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記スカラー倍算実行ステップは、種数2の超楕円曲線暗号において、2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、kD=kP+kP、とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記スカラー倍算実行ステップは、種数2の超楕円曲線暗号において,2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、奇数,偶数の整数k,kを適用し、
kD=k+k−(k−k)P−(k−k)P
とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記スカラー倍算実行ステップは、種数2の超楕円曲線暗号において,2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
kP+(k+1)P−P、または、
kP+(k−1)P+P
とする変換を行い、テータ因子P,Pを適用したスカラー倍算を実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記スカラー倍算実行ステップは、種数3の超楕円曲線暗号において、2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
kP+(k+1)P−P、または、
kP+(k−1)P+P
とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記スカラー倍算実行ステップは、種数4の超楕円曲線暗号において、2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
kP+(k+1)P−P、または、
kP+(k−1)P+P
とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記スカラー倍算実行ステップは、種数gの超楕円曲線暗号において、通常因子を3個のテータ因子に分けて同時計算法を使ってスカラー倍算を実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記スカラー倍算実行ステップは、種数3の超楕円曲線暗号において、3つのウェイト(weight)1のテータ因子P,P,Pを適用して、通常因子Dのスカラー倍算kDを、
kP+(k+1)P−P、または、kP+(k−1)P+P
と、kP
とに分割して、同時計算法およびdouble−and−add−always法を用いてテータ因子P,Pを適用したスカラー倍算を実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記スカラー倍算実行ステップは、種数gの超楕円曲線暗号において通常因子を2個以上の複数のテータ因子に分けて同時計算法を使ってスカラー倍算を実行することを特徴とする。
さらに、本発明の第3の側面は、
暗号処理装置において、超楕円曲線暗号に基づく暗号処理演算を実行させるコンピュータ・プログラムであり、
因子制御部において、スカラー倍算の対象となる因子の制御を実行させる因子制御ステップと、
スカラー倍算実行部において、前記因子制御部の制御に基づいて決定された因子を適用したスカラー倍算を実行させるスカラー倍算実行ステップとを有し、
前記因子制御ステップは、
種数gの超楕円曲線暗号において、種数gに等しいウェイト(Weight)を持つ通常因子が、スカラー倍算の対象因子である場合、該通常因子を種数g未満のウェイト(Weight)を持つ因子として定義されるテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行うステップとして設定されていることを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の構成によれば、超楕円曲線暗号の因子Dに対するスカラー倍算において、スカラー倍算の対象となる因子の制御を実行し、高速なスカラー倍算を実現することができる。具体的には、種数gの超楕円曲線暗号において、種数gに等しいウェイト(Weight)を持つ通常因子が、スカラー倍算の対象因子である場合、該通常因子を種数g未満のウェイト(Weight)を持つ因子として定義されるテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を生成して、このテータ因子を適用したスカラー倍算をスカラー倍算実行部において実行させる構成とすることで、演算量を削減した高速なスカラー倍算を実行させることが可能となり、高速な暗号処理演算が実現される。
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
(1)本発明の暗号処理の概要
(2)本発明の暗号処理装置の具体的構成および処理例
(2−1)通常因子Dをテータ因子P1,P2,…,Pi(i≦g)で表現する処理
(2−2)テータ因子P1,P2,…,Piを使ってスカラー倍算kDを計算する処理
(3)本発明の暗号処理における高速化の検証
(4)暗号処理装置の構成例
[(1)本発明の暗号処理の概要]
本発明は、楕円曲線暗号を一般化した超楕円曲線暗号(HECC:Hyper Elliptic Curve Cryptography)についての高速化演算手法である。前述したように、超楕円曲線では曲線を特徴づける値は種数(genus)gである。有限体Fq上(ただしq=p,pは素数)で定義される種数gの超楕円曲線Cは以下の方程式、
+h(x)y=f(x)
で定義される。ここで、h(x),f(x)∈Fq[x],f(x)は、高々、次数gの多項式(pが奇素数の場合はh=0)、f(x)は、次数2g+1のmonic多項式である。
前述したように、超楕円曲線暗号では点の形式的和を因子(divisor)と呼び、種数gの超楕円曲線暗号において、因子のウェイト(weight)は種数(g)以下となる。ウェイト(weight)が、種数(g)に等しい因子を通常因子と呼び、ウェイト(weight)が、種数(g)より小さい因子をテータ因子と呼ぶ。
本発明は、通常因子をテータ因子に分割してスカラー倍算することにより、任意の因子を選択したスカラー倍算を高速に実行可能とするものである。
図2を参照して、本発明の暗号処理装置における因子のスカラー倍算の実行構成について説明する。図2に示すように、本発明の暗号処理装置において因子のスカラー倍算を実行する暗号処理部100は、因子制御部101と、スカラー倍算実行部102を有する。
因子制御部101は、通常因子Dをテータ因子P,P,…,P(i≦g)で表現する処理を実行する。
スカラー倍算実行部102は、因子制御部101において、通常因子Dに対応する変換データとしてのテータ因子P,P,…,Pを使ってスカラー倍算kDを計算する処理を実行する。
前述したように、テータ因子との通常因子との加算は通常因子どうしの加算よりも計算量が少なくなるため、このスカラー倍算を適用することで、結果として、スカラー倍算を高速に演算することができる。以下、本発明を適用したスカラー倍算の処理の詳細について説明する。
[(2)本発明の暗号処理装置の具体的構成および処理例]
以下、図2に示す因子制御部101の処理と、スカラー倍算実行部102の処理、すなわち、以下の2つの処理、
(2−1)通常因子Dをテータ因子P1,P2,…,Pi(i≦g)で表現する処理
(2−2)テータ因子P1,P2,…,Piを使ってスカラー倍算kDを計算する処理
これらの各処理について、順次、説明する。
[(2−1)通常因子Dをテータ因子P1,P2,…,Pi(i≦g)で表現する処理]
まず、図2に示す因子制御部101の処理、すなわち、任意に選択される因子をテータ因子P1,P2,…,Pi(i≦g)で表現する処理について説明する。
まず、通常因子とテータ因子の関係について、図3を参照して説明する。一般に種数gの超楕円曲線暗号において、通常因子Dはg個以下のテータ因子に分割できる場合がある。
先に説明したように、種数(genus)2の任意の被約因子Dはマンホード(Mumford)表現を用いると、有限体Fq上の元を係数に持つ2次以下の多項式の組、すなわち、
(U、V)=(x+ux+u、vx+v
と表現できる。
また、種数(genus)3の任意の被約因子Dはマンホード(Mumford)表現を用いると、有限体Fq上の元を係数に持つ3次以下の多項式の組、すなわち、
(U、V)=(x+u+ux+u、v+vx+v
と表現できる。
このように、因子のマンホード(Mumford)表現、
D=(U,V)において、Uは、ウェイト(weight)g、つまりg次の1変数多項式である。
もし、通常因子D=(U,V)において、Uが曲線を定義している有限体Fq上で解を持つ場合、因子Dは、2個以上のテータ因子に分割できる場合がある。一方、Uが有限体Fq上で解を持たない場合、すなわち既約である場合、通常因子をテータ因子に分解することはできない。
また、複数個のランダムなテータ因子を生成し、それらを加算することで生成した因子が、種数(g)に等しいウェイト(weight)gであれば、それは通常因子となる。このように、種数gに等しいウェイト(weight)を持つ通常因子と、種数g未満のウェイト(weight)を持つテータ因子は、相互に他方の因子を適用して表現することが可能となる場合がある。
種数(g)=2,3、いずれにおいても、ウェイト(weight)1の因子は、テータ因子となるが、ランダムなウェイト(weight)1のテータ因子を生成することと超楕円曲線上の点を探すことと等価であるため、このようなテータ因子を生成するのは簡単である。またウェイト(weight)が、種数(g)より小さい因子はこのウェイト(weight)1のテータ因子を複数個加算すことで生成することができる。
この関係を使い、通常因子をテータ因子で表現する処理方法について説明する。処理方法はスカラー倍算kDの因子(D)を固定とする場合と、任意(ランダム)とした場合とによって処理方法が分かれる。楕円曲線暗号(ECC)及びそれを一般化した超楕円曲線暗号(HECC)において、点もしくは因子のスカラー倍算の入力となる因子を固定とするか任意とするかは、実行する暗号のアプリケーションによって異なってくる。
例えば、
(a)入力因子を固定としたスカラー倍算を実行するアルゴリズムとしては、
鍵生成アルゴリズムや、DSAの署名生成アルゴリズムなどがある。
(b)入力因子をランダムとしたスカラー倍算を実行するアルゴリズムとしては、
DH(Diffie-Hellman)鍵交換アルゴリズムや、ElGamal型暗号化アルゴリズムなどがある。
なお、DSAの署名生成アルゴリズムについては、非特許文献[ECSVDP-DH in IEEE1363 /D13 Main Document.]に記載されている。また、DH鍵交換アルゴリズムについては、非特許文献[ECSP-DSA and ECVP-DSA in IEEE1363 /D13 Main Document.]に記載されている。
図2を参照して説明した本発明の暗号処理装置における暗号処理部100の具体的な構成例について、図4以下を参照して説明する。スカラー倍算を実行する入力因子として、固定の通常因子が入力される場合の暗号処理部の構成および処理について、図4、図5を参照して説明し、スカラー倍算を実行する入力因子として、ランダムな通常因子が入力される場合の暗号処理部の構成および処理について、図6、図7を参照して説明する。
まず、図4、図5を参照して、スカラー倍算を実行する入力因子として、固定の通常因子が入力される場合の暗号処理部の構成および処理について説明する。スカラー倍算を実行する入力因子として、固定の通常因子が入力される場合、図4に示すように暗号処理部110において、因子制御部111は、ベースポイント生成部として機能することになる。スカラー倍算実行部112は、ベースポイント生成部としての因子制御部111において生成されたベースポイントとしての因子を入力してスカラー倍算を実行する。図では、スカラー量を[k]、スカラー倍算結果をkDとして示している。
ここで、ベースポイント生成部としての因子制御部111において生成されるベースポイントとしての因子は、テータ因子に分解可能な通常因子である。因子制御部111において実行されるベースポイント生成処理の具体的な処理について、図5に示すフローチャートを参照して説明する。
因子制御部111において実行されるベースポイント生成処理は、図5に示すフローに従って実行され、テータ因子に分解可能な通常因子としてのベースポイントが生成される。まず、ステップS101において超楕円曲線C上のランダムな点をg(g≦g)個生成する。次に、ステップS102において、ステップS101において選択した点に基づいてウェイト(weight)i(ただし、i<種数g、例えばi=1)のテータ因子を生成し、ステップS103において、生成したウェイト(weight)iのテータ因子の加算処理を実行して通常因子Dを生成する。通常因子Dは、ウェイト(weight)が種数(g)に等しい通常因子である。
次に、ステップS104において、生成した通常因子Dの評価を実行する。すなわち、生成した通常因子Dのオーダが暗号で使える程度の大きな素数rを位数に持つか否かを判定する。判定がYesならば、ステップS103において、テータ因子の加算処理によって生成した通常因子Dをベースポイントとして決定し、ベースポイント生成処理を終了する。
一方、ステップS104における通常因子Dの評価処理において、通常因子Dのオーダが暗号で使える程度の大きな素数rを位数に持たないと判定された場合は、ステップS101に戻り、ランダムな曲線上の点の選択処理を、再度、実行する。ここで選択される点は、前回と異なるものとする。以下、ステップS101〜S104を繰り返し実行し、ステップS104における通常因子Dの評価処理において、通常因子Dのオーダが暗号で使える程度の大きな素数rを位数に持つ因子Dが取得されるまで処理を繰り返す。
ステップS104における通常因子Dの評価において、通常因子Dのオーダが暗号で使える程度の大きな素数rを位数に持つと判定された場合、その通常因子Dをベースポイントとして決定し、ベースポイント生成処理を終了する。この処理によって、生成された通常因子は、テータ因子の加算処理によって生成された通常因子となる。
例えば種数2の超楕円曲線の場合、生成した通常因子D=(U,V)において、
Uは2次の多項式x+ux+u,u∈Fqであるので、
もしUが因数分解でき、U=(x−p)(x−p)と表現できるのであれば、2つのウェイト(weight)1のテータ因子
=(x−p,V(p)),
=(x−p,V(p))
によって、通常因子Dを表現することができる。
また種数3の超楕円曲線において、ウェイト(weight)2の因子Q,Qを生成し、その加算D=Q+Qがウェイト(weight)3であるなら、そのDをベースポイントとして採用する。
図4に示すスカラー倍算実行部112は、ベースポイント生成部としての因子制御部111が、図5を参照して説明した処理に従って生成したベースポイントを入力し、スカラー量kを適用しスカラー倍算を実行する。この結果、スカラー倍算の結果出力[kD]が出力される。なお、このスカラー倍算は、テータ因子に分解してテータ因子を適用した高速演算として実行されることになる。なお、この処理については、後段で詳細に説明する。
次に、図6、図7を参照して、スカラー倍算を実行する入力因子として、ランダムな通常因子が入力される場合の暗号処理部の構成および処理について説明する。スカラー倍算を実行する入力因子として、ランダムな通常因子が入力される場合、図6に示すように暗号処理部120において、因子制御部121は、通常因子分割判定処理部として機能することになる。スカラー倍算実行部122は、通常因子分割判定処理部としての因子制御部121において生成された因子を入力してスカラー倍算を実行する。図では、スカラー量を[k]、スカラー倍算結果をkDとして示している。
通常因子分割判定処理部としての因子制御部121は、入力因子が特定の因子でないランダムな因子であるため、入力因子がテータ因子に分解できるか否かを判定し、その判定に基づいて、スカラー倍算実行部122における演算処理を変更させる制御を行うことになる。
先に、図3を参照して説明したように、通常因子D=(U,V)において、Uが曲線を定義している有限体Fq上で解を持つ場合、因子Dは、2個以上のテータ因子に分割できる場合がある。一方、Uが有限体Fq上で解を持たない場合、すなわち既約である場合、通常因子をテータ因子に分解することはできない。通常因子分割判定処理部としての因子制御部121は、入力因子がテータ因子に分解できるか否かを判定し、その判定に基づいて、スカラー倍算実行部122における演算処理を変更させる制御を行うことになる。
通常因子分割判定処理部としての因子制御部121の処理について、図7に示すフローチャートを参照して説明する。ステップS201において、ランダムな入力因子[D=(U,V)]を入力し、ステップS202において入力したランダムな因子が、テータ因子に分割できるか否かをチェックをする。なお因子の分割には一般のg次多項式の因数分解アルゴリズムを使う(因数分解アルゴリズムについては例えば文献[H.Cohen, "A course in Computational Algebraic Number Theory",Graduate Texts in Mathematics 138, Spring]を参照。
ステップS202における処理、すなわち、入力した因子がテータ因子に分割可能かのチェックは例えば、曲線を定義する有限体がF(2)の場合、F(2)を係数にもつ2次の多項式Uが因数分解できるかと等価である。因数分解できるかできないかの判別にはU=x+ux+uとするとTr(u/u )の値が0かどうかを調べればよい。ここでTr()はTrace計算を指す.Traceの計算量Tは有限体F(2)の場合,非常に少ない計算量で計算することができることが知られており、計算量は無視できる。さらに(u/u )は1回の有限体の逆元演算、2回の乗算で実現できるため、簡単に計算可能な値である。なお、Traceの値は定義より0or1しかとらないため、確率的には1/2の確率でテータ因子に分解することができることを意味している。
ステップS202において、入力した因子がテータ因子に分割できないと判定されると、ステップS203に進み、スカラー倍算実行部122において、通常因子のスカラー倍算を行うように制御を行なう。
一方、ステップS202において、入力した因子がテータ因子に分割できると判定されると、ステップS204に進み、スカラー倍算実行部122において、通常因子を分割して生成されるテータ因子を適用した高速なスカラー倍算を行うように制御を行なう。
図6に示すスカラー倍算実行部122は、通常因子分割判定処理部としての因子制御部121の判定結果に基づいて、通常因子のスカラー倍算、または、通常因子を分割して生成されるテータ因子を適用した高速なスカラー倍算を行う。なお、この処理については、後段で詳細に説明する。
図6、図7を参照して説明したランダムな因子を入力してスカラー倍算を実行する構成では、2つの問題点が存在する。一つは,因子はかならずしも分割できる因子だけではないので、図7に示すステップS203の例外処理ケースも頻繁に起こることである。通常因子のスカラー倍算はテータ因子のスカラー倍算に比べて処理時間が遅いため、処理のボトルネックとなりうる。図7に示すステップS202の因子がテータ因子に分割可能か否かを判定する処理ステップが定義体や曲線の種数によって非常に時間がかかる重い処理である場合があるということである。
本発明の構成では、以下に説明する方式を適用することにより、この2つの問題点を回避する。以下、この問題を解決する以下の2つの手法(a),(b)について説明する。
(a)因子の2倍算を適用する処理
(b)公開鍵となる因子をテータ因子に分割可能な因子とする処理
(a)因子の2倍算を適用する処理
第一の方式は、種数2,定義体F(2)の設定において、ランダムな入力因子をテータ因子に分割することができないと判定された場合、その入力通常因子を2分割できるまで2倍する方法である。この処理の詳細シーケンスについて、図8に示すフローチャートを参照して説明する。
種数2、定義体F(2)の因子の場合に限ると、通常因子D=(U,V)が分割できるかできないかは、非常に少ない計算量で計算することができる。まずステップS221において、因子D=(U,V)を入力し、ステップS222において、テータ因子への分割可能性を判定する。
もし、入力因子がテータ因子に分割できないと判定されたならば、ステップS231に進み、入力因子を2倍する。このとき、処理回数を示す変数iを1つインクリメントして、i=i+1とする。ステップS232において、iが予め規定した許容最大処理回数imax未満である場合、2倍した入力因子D=2Dについて、ステップS222において、テータ因子への分割可能性を判定する。
なお、ステップS222における因子が分割可能かのチェックは、先に説明したように、有限体F(2)を係数にもつ2次の多項式Uが因数分解できるかと等価である。因数分解できるかできないかの判別にはU=x+ux+uとするとTr(u/u )の値が0かどうかを調べればよい。このTraceの値は定義より0or1しかとらないため、確率的には1/2の確率でテータ因子に分解することができる。従って複数回の2倍算を行えば、因子はかなり高い確率で分割できることが期待できることになる。
ステップS231の入力因子を2倍する処理、およびステップS222のテータ因子への分割可能性の判定処理は、繰り返し実行される。ステップS232おいて、設定した2倍算の許容回数(imax)に至ったと判定された場合は、ステップS233に進み、図6に示すスカラー倍算実行部122において、通常因子のスカラー倍算を行うように制御を行なう。
この入力因子Dの2倍算処理によって生成された因子が、ステップS222においてテータ因子に分割可能と判定されると、ステップS223において、テータ因子への分割がなされた後、ステップS224において、スカラー倍算実行部122において、テータ因子を適用したスカラー倍算が実行される。
しかし、ここでのスカラー倍算の結果は、オリジナルの入力因子に対するスカラー倍算でない場合がある。すなわち、ステップS231において、複数回2倍算して生成された因子のスカラー倍算であるので、その値を、オリジナルの入力因子のスカラー倍算結果に戻す処理が必要となる。この処理が、ステップS225、ステップS234の処理である。
まず、ステップS225において、入力因子の2倍算の処理回数(i)が0であるか否かを判定する。i=0であれば、スカラー倍算の結果は、オリジナルの入力因子Dのスカラー倍算結果であると判定されるので、ステップS226に進み、その結果をスカラー倍算結果として出力する。
ステップS225において、入力因子の2倍算の処理回数(i)が0でないと判定されると、その時点で得られているスカラー倍算の結果は、オリジナルの入力因子Dのスカラー倍算結果でないと判定されるので、ステップS234に進み、その結果を1/2倍する。このとき、2倍算の処理回数を示す変数(i)を1つデクリメント、すなわちi=i−1とする。さらに、ステップS225に戻り、2倍算の処理回数(i)が0となったか否かを判定する。
ステップS225とステップS234の処理を、i=0となるまで、繰り返して実行し、i=0となった場合に、その時点のスカラー倍算結果が、オリジナルの入力因子Dのスカラー倍算結果であると判定され、ステップS226に進み、その結果をスカラー倍算結果として出力する。
この処理によれば、入力因子がランダムな因子である場合でも、ほとんどテータ因子によって表現可能な因子への変換を行って、高速なスカラー倍算を実行させることが可能となる。
(b)公開鍵となる因子をテータ因子に分割可能な因子とする処理
次に、公開鍵となる因子をテータ因子に分割可能な因子とする処理について説明する。この処理は、秘密鍵と公開鍵を生成する鍵生成アルゴリズムにおいて、公開鍵となる因子Wを、テータ因子に分割できる因子とする制約を設けるものである。鍵生成処理はリアルタイムに処理する必要がない場合が多い。
そこで時間を要する因子のテータ因子への分割可否判定処理を鍵生成処理において、予め実行させる構成とすることで、その後、実行される公開鍵を適用した暗号処理におけるスカラー倍算処理では、予めテータ因子に分割可能な公開鍵であることを認識した上で、処理を行なうことを可能として処理の高速化をはかるものである。
本構成に対応する暗号処理装置の暗号処理部構成について、図9を参照して説明する。図9に示すように暗号処理部130において、因子制御部131は、鍵生成処理部として機能し、例えば公開鍵Wを生成する。ここで生成する公開鍵は、通常因子に相当するが、テータ因子に分割可能な通常因子からなる公開鍵であり、生成された公開鍵は、メモリ133に格納される。
スカラー倍算実行部132は、異なるユーザもしくは装置における鍵生成処理部としての因子制御部131において生成された因子、すなわち公開鍵W'を入力してスカラー倍算を実行する。図では、スカラー量を[k]、スカラー倍算結果をkW'として示している。
なお、鍵生成処理部としての因子制御部131において生成された因子、すなわち公開鍵Wは、テータ因子Piの集合としてメモリ133に保持する。この処理を実行することで、任意のユーザもしくは装置が生成した公開鍵W'は既にテータ因子に分割されており,公開鍵W'を適用したスカラー倍算処理の実行時に、公開鍵W'に対応する通常因子をテータ因子に分割する処理が省略可能となり、より高速なスカラー倍算処理が可能となる。
このように、時間を要する因子のテータ因子への分割可否判定処理を鍵生成処理において、予め実行させる構成とすることで、その後、実行される公開鍵を適用した暗号処理におけるスカラー倍算処理では、予めテータ因子に分割可能な公開鍵であることを認識した上で、処理を行なうことを可能として処理の高速化をはかるものである。これによって、リアルタイムに分割可能か判定できなかった種数2,定義体F(2)の以外の場合に、テータ因子に分割してスカラー倍算を計算する処理が適用できる。公開鍵となる因子をテータ因子に分割可能な因子として設定する鍵生成処理シーケンスの詳細について、図10を参照して説明する。
ステップS251において、所定のベースポイントの位数rに属する乱数sを生成し、ステップS252において、公開鍵W=sGを生成する。Gはベースポイントである。なお、ここで生成する公開鍵は、超楕円曲線暗号(HECC)における点の形式的和である因子(divisor)Dに対応する。次に、ステップS253において、生成した因子としての公開鍵Wが、テータ因子に分割可能であるか否かの判定処理を行なう。この処理は、先に説明した図7に示すフローにおけるステップS202の処理と同様の処理であり、有限体F(2)を係数にもつ2次の多項式Uが因数分解できるかを検証することで実行される。
ステップS253において、生成した因子としての公開鍵Wが、テータ因子に分割可能であると判定された場合は、ステップS254において、公開鍵Wに対応する因子をテータ因子に分割する処理を実行し、ステップS255において、公開鍵Wを、テータ因子Piの集合として保持する。
ステップS253において、生成した因子としての公開鍵Wが、テータ因子に分割可能でないと判定された場合は、ステップS251に戻り、乱数生成処理から処理をやりなおす。結果として、テータ因子に分割可能な因子のみを公開鍵Wに設定する。
なお、ステップS255において、公開鍵Wを、テータ因子Piの集合として保持する処理を実行することで、公開鍵Wを適用したスカラー倍算処理の実行時に、公開鍵Wに対応する通常因子をテータ因子に分割する処理が省略可能となり、より高速なスカラー倍算処理が可能となる。
ここで、従来のDH(Diffie-Hellman)鍵共有アルゴリズムと、上述した鍵生成処理によってテータ因子に分割可能な因子を公開鍵として適用した場合のDH(Diffie-Hellman)鍵共有アルゴリズムを対比して説明する。
まず、従来のDH(Diffie-Hellman)鍵共有アルゴリズムについて、図11を参照して説明する。図11は、通信可能なAとB間において実行される従来のDH(Diffie-Hellman)鍵共有アルゴリズムのシーケンスを示す。なお、公開情報として、以下の情報、すなわち、
超楕円曲線:C
ベースポイント:G
ベースポイントの位数:r
が公開されている。
まず、ステップS301において、Aは乱数を使って秘密情報aを生成し、ベースポイントGのスカラー倍算aGを計算し、ステップS302において、Aの公開鍵Wを生成し、ステップS303において生成した公開鍵WをBに送る。
同様に、Bは、ステップS304において、乱数を使った秘密情報bを生成、ステップS305において、ベースポイントGのスカラー倍算bGを計算し、Bの公開鍵Wを生成し、ステップS306において、生成した公開鍵WをAに送る。
ステップS307において、AはBの公開鍵Wを用いて共有する秘密情報Z=aWを計算し、BもAの公開鍵Wを用いて共有する秘密情報Z=bWを計算する。なお、Zの計算は因子(公開鍵)のスカラー倍算に相当する。
一方、先に図10を参照して説明した鍵生成処理によってテータ因子に分割可能な因子を公開鍵として予め生成しておく処理構成とした場合の、DH(Diffie-Hellman)鍵共有アルゴリズムについて、図12を参照して説明する。図12も、図11と同様、通信可能なAとB間において実行されるDH(Diffie-Hellman)鍵共有アルゴリズムのシーケンスを示す。なお、公開情報として、以下の情報、すなわち、
超楕円曲線:C
ベースポイント:G
ベースポイントの位数:r
が公開されている。
図12に示すAにおけるステップS35aと、BのステップS35bの処理ステップは、先に図10を参照して説明した鍵生成処理に従った公開鍵生成処理であり、テータ因子に分割可能な因子としての公開鍵を予め生成しておく処理である。
Aは、Aの公開鍵W=P+P
Bは、Bの公開鍵W=Q+Q
をそれぞれメモリに保持しているものとする。P,P,Q,Qはテータ因子である。
まず、ステップS351において、Aはメモリから、予め生成済みのAの公開鍵W=P+Pを取得し、ステップS352において公開鍵W=P+PをBに送る。
同様に、Bは、ステップS353において、メモリから、予め生成済みのBの公開鍵W=Q+Qを取得し、ステップS354において公開鍵W=Q+QをA送る。
ステップS355において、AはBの公開鍵W=Q+Qを用いて共有する秘密情報Z=aWを計算し、BもAの公開鍵W=P+Pを用いて共有する秘密情報Z=bWを計算する。このときの、Zの計算は因子(公開鍵)のスカラー倍算に相当し、このスカラー倍算をテータ因子としてのP,P,Q,Qを適用して実行することが可能となり、高速な処理が実現されることになる。
[(2−2)テータ因子P1,P2,…,Piを使ってスカラー倍算kDを計算する処理]
次に、図2に示す暗号処理部のスカラー倍算実行部102の実行する処理の詳細について説明する。
上述したように、本発明の暗号処理装置では、因子Dのスカラー倍算kDの演算を、テータ因子を適用した処理とすることで高速化した構成を持つものである。テータ因子を適用したスカラー倍算処理にも、複数の処理態様がある。以下では、以下に示す(処理例A)〜(処理例D)の4つの手法について順次説明する。
(処理例A)種数(g)2の超楕円曲線暗号において、通常因子Dのスカラー倍算kDを2つのテータ因子P,Pに分解し、kP+kPを同時計算法を用いて計算する方法
(処理例B)種数(g)2の超楕円曲線暗号において、通常因子DをP,Pに分解し、通常因子Dのスカラー倍kDを、k+k−(k−k)P−(k−k)Pとして、同時計算法を用いて計算する方法
(処理例C)種数(g)3の超楕円曲線暗号において、通常因子Dのスカラー倍算kDを3つのweight1のテータ因子P,P,Pに分解し、同時計算法を用いてkP+(k+1)P−PもしくはkP+(k−1)P+Pを,double−and−add−always法を用いてkPを並列に計算する方法
(処理例D)種数(g)4の超楕円曲線暗号において、通常因子Dのスカラー倍算kDを4つのweight1のテータ因子P,P,P,Pに分解し、kP+(k+1)P−Pと,kP+(k+1)P−Pに変形して、(処理例B)で説明する方式を並列に実行する演算方法
(処理例A)種数(g)2の超楕円曲線暗号において、通常因子Dのスカラー倍算kDを2つのテータ因子P,Pに分解し、kP+kPを同時計算法を用いて計算する方法
まず、種数(g)2の超楕円曲線暗号において、通常因子Dのスカラー倍算kDを2つのテータ因子P,Pに分解し、分解したデータ因子についてのスカラー倍算として、kP+kPを、同時計算法を用いて計算する方法について説明するフローチャートを図13に示す。図13に示すフローは、図2に示す暗号処理部100におけるスカラー倍算実行部102において実行される処理である。なお、実行する暗号アルゴリズムに応じて、図4に示す暗号処理部110のスカラー倍算実行部112、または図6に示す暗号処理部120のスカラー倍算実行部122、または図9に示す暗号処理部130のスカラー倍算実行部132において実行される。
まず、スカラー倍算実行部は、ステップS501において、スカラー値[k]を入力し、さらに、因子制御部またはメモリからテータ因子P,Pを入力する。なお、因子制御部またはメモリからテータ因子に分割可能な通常因子を入力して、通常因子をテータ因子に分割する処理を実行してもよい。通常因子をテータ因子に分割する処理は、因子制御部において実行してもよいし、スカラー倍算実行部において実行してもよい。
次に、ステップS502において、SPA(Simple Power Analysis)耐性が必要であるか否かを判定する。なお、SPA耐性の要否については、例えば、実行する暗号処理アルゴリズムに対応する設定情報として、予めメモリに格納し、実行アルゴリズムの識別情報に基づいて、メモリに格納された設定情報を読み出して判定する処理を実行する。あるいはSPA耐性が必要、または不要として予め固定情報として設定してもよい。この場合には、この判定ステップは省略可能である。
ステップS502において、SPA耐性が必要ないと判定された場合は、ステップS503に進み、テータ因子を適用したスカラー倍算処理アルゴリズムとしてのアルゴリズム6(Algorithm6)を処理する。もし、SPA耐性が必要と判定された場合は、ステップS504に進み、テータ因子を適用したスカラー倍算処理アルゴリズムとしてのアルゴリズム7(Algorithm7)を実行する。これらのいずれかのアルゴリズムの実行結果として、ステップS505において、通常因子のスカラー倍算結果、
kD=kP+kP
を出力する。
アルゴリズム6(Algorithm6)、およびアルゴリズム7(Algorithm7)を以下に示す。
Figure 2007187957
Figure 2007187957
上記のアルゴリズム6(Algorithm6)、およびアルゴリズム7(Algorithm7)は、いずれも、種数(g)未満のウェイト(Weight)を持つテータ因子を適用したスカラー倍算、kP+kPを実行するものであり、結果として、通常因子のスカラー倍算結果を出力するものである。すなわち、
kD=kP+kP
上記式によって、通常因子Dのスカラー倍算結果を算出する。このテータ因子を適用した処理は、前述したように、通常因子をそのまま適用したスカラー倍算を実行するより計算コストが低く、高速に結果を得ることができる。
すなわち、前述したように、
通常因子どうしの加算を[MFCADD]、
通常因子とテータ因子の加算を[TADD]、
と定義すると、
例えば種数2の超楕円曲線暗号では定義体がF(2)の場合、
通常因子どうしの加算[MFCADD]の計算コストは、I+25M、
通常因子とテータ因子の加算[TADD]の計算コストは、I+11M、
となり、TADDが14M高速となるである。なお、I、Mは有限体F(2)上での逆元演算、乗算を意味し、I+25Mは、1回の逆元演算と、25回の乗算が必要であることを意味し、I+11Mは、1回の逆元演算と、11回の乗算が必要であることを意味する。
このように、テータ因子を適用することで、高速なスカラー倍算が実行可能となり、暗号処理結果を迅速に得ることが可能となる。
(処理例B)種数(g)2の超楕円曲線暗号において、通常因子DをP,Pに分解し、通常因子Dのスカラー倍kDを、k+k−(k−k)P−(k−k)Pとして、同時計算法を用いて計算する方法
次に、種数(g)2の超楕円曲線暗号において、通常因子DをP,Pに分解し、通常因子Dのスカラー倍kDを、
+k−(k−k)P−(k−k)P
として、同時計算法を用いて計算する方法について説明する。
本処理例のフローチャートを図14に示す。図14に示すフローは、図2に示す暗号処理部100におけるスカラー倍算実行部102において実行される処理である。なお、実行する暗号アルゴリズムに応じて、図4に示す暗号処理部110のスカラー倍算実行部112、または図6に示す暗号処理部120のスカラー倍算実行部122、または図9に示す暗号処理部130のスカラー倍算実行部132において実行される。
まず、スカラー倍算実行部は、ステップS601において、スカラー値[k]を入力し、さらに、因子制御部またはメモリからテータ因子P,Pを入力する。なお、因子制御部またはメモリからテータ因子に分割可能な通常因子を入力して、通常因子をテータ因子に分割する処理を実行してもよい。通常因子をテータ因子に分割する処理は、因子制御部において実行してもよいし、スカラー倍算実行部において実行してもよい。
次に、ステップS602において、算出予定の通常因子Dのスカラー倍kDを、
kD=kP+kP
=k+k−(k−k)P−(k−k)P
の式に変換する。
ステップS602では、スカラー倍算実行部は、kP+kPを大きさがk程度の任意の偶数、奇数のスカラー量としてのペアk,kを用いて、k+k−(k−k)P−(k−k)Pの形式に変換する。次にステップS603において、k,kを符号付2進展開(binary展開)を行い、
=(k1,n−1,.....,k1,0
=(k2,n−1,.....,k2,0
として、iビット目のペア(k1,i,k2,i)の一方が0、もう一方が1もしくは−1になるように展開する。つまり(0,1),(0,−1),(1,0),(−1,0)のいずれかの組み合わせである。
さらにステップS604において、ステップS603で展開したk,kを用いてk+kを同時計算法を使って計算を行う。最後にステップS605において、計算しなかった項、
(k−k)P+(k−k)P
を算出して、加算する補正を実行して、最終的にステップS606において、正しい結果、すなわち、
kD=kP+kP
=k+k−(k−k)P−(k−k)P
を出力する。
(スカラー倍算方法Bの改良B1)
次に、図14を参照して説明したテータ因子を適用したスカラー倍算処理における改良手法について説明する。
もし、k,kが、
=k,k=k+1、もしくはk=k−1、
つまり、
=k,|k−k|=1
の関係にある場合、
図14におけるステップS605の補正計算量が少なくなり、このスカラー倍算を高速に効率よく計算することができる。この計算手法について、その方法について、図15に示すフローチャートを参照して説明する。
この図15に示す処理フローは、図14のフローにおいて説明したスカラー量、すなわち、大きさがk程度の任意の偶数、奇数のスカラー量としてのペアk,kが、
=k,k=k+1の場合においてスカラー倍算実行部の実行する演算処理シーケンスを示したものである。なお、k=k−1の場合も同様の処理となる。
まず、スカラー倍算実行部は、ステップS621において、スカラー値[k]を入力し、さらに、因子制御部またはメモリからテータ因子P,Pを入力する。なお、因子制御部またはメモリからテータ因子に分割可能な通常因子を入力して、通常因子をテータ因子に分割する処理を実行してもよい。通常因子をテータ因子に分割する処理は、因子制御部において実行してもよいし、スカラー倍算実行部において実行してもよい。
次に、ステップS602において、算出予定の通常因子Dのスカラー倍kDを、
kD=kP+kP
=kP+(k+1)P−P
の式に変換する。
なお、この式変換は、k,kを、
=k,k=k+1のペアとして設定したものであり、
先の図14を参照して説明した変換式、すなわち、
=k+k−(k−k)P−(k−k)P
と等価である。上記式において、k,kは、
=k,k=k+1のペアとすることで、
+k−(k−k)P−(k−k)P
=kP+(k+1)P−P
となる。
次に、ステップS623において、
=k,k=k+1の2進展開を実行する。すなわち、
k,k+1を符号付2進展開し,任意のibitのビットのペアが(0,1)もしくは(0,−1)になるように展開する。この展開アルゴリズムについては図16を参照して、後段で説明する。
次にステップS624において、2進展開したk,k+1を用いてkP+(k+1)Pを同時計算法にて計算する。このアルゴリズムをアルゴリズム8(Algorithm8)として、以下に示す。
Figure 2007187957
上記アルゴリズム8(Algorithm8)は、テータ因子を適用した同時計算法によるスカラー倍算の演算アルゴリズムである。さらにステップS625において、計算しなかった項、
−P
を算出するして、加算する補正を実行して、最終的にステップS626において、正しい結果、すなわち、
kD=kP+kP
=kP+(k+1)P−P
を出力する。
図15の処理フローにおけるステップS623のk,k+1の符号付2進展開の具体的処理シーケンスを図16を参照して説明する。まずステップS651において、kを0,1の2進(binary)展開する。
次にステップS652において、スカラー量kの変換処理として、
k→k+1
の変換処理を行う。この変換処理はbinary展開されたkの各ビットの0を1,1を0に反転させる処理である。次に反転した値が1であれば−1に置き換え,最上位ビットに1を立てる。この処理を行うと、ステップS653において、k+1の符号付binary展開を得ることができる。
例えば,k=53の場合,binary展開は(110101)であり、ビットを反転した値は(001010)となる。さらに1を−1に置き換えると100(−1)0(−1)0となり,この値はk+1の54となっている。この変換処理はk+1=2−((2−1)−k)の関係から明らかである。
このように、図15の処理フローに従ったテータ因子に基づくスカラー倍算では、
kD=kP+kP
=kP+(k+1)P−P
として、先に図14を参照して説明した変換式、すなわち、
kD=kP+kP
=k+k−(k−k)P−(k−k)P
上記式をより簡易な式に変換してスカラー倍算を実行することが可能となり、より効率的で高速な演算が可能となる。
なお、この手法は、種数3の超楕円曲線暗号においてweight2の因子をQ,Qとして、通常因子Dを、
D=Q+Q
として表現可能であれば、種数3の超楕円曲線暗号においても同様に適用することができる。さらに一般に種数gの通常因子Dを2つのテータ因子に分割することができる場合にも適用可能である。
(処理例C)種数(g)3の超楕円曲線暗号において、通常因子Dのスカラー倍算kDを3つのweight1のテータ因子P,P,Pに分解し、同時計算法を用いてkP+(k+1)P−PもしくはkP+(k−1)P+Pを,double−and−add−always法を用いてkPを並列に計算する方法
次に、種数(g)3の超楕円曲線暗号において、通常因子Dのスカラー倍算kDを3つのウェイト(weight)1のテータ因子P,P,Pに分解し、同時計算法を用いて、
kD=kP+kP+kP
として、さらに、
kP+(k+1)P−P
もしくは、
kP+(k−1)P+P
と、kPをdouble−and−add−always法を用いて並列に計算する方法について説明する。
一般に、kを、先に説明した方法Bのように異なる3つの値k,k,kに変更し、符号付2進(binary)展開を行い、
=(k1,n−1,.....,k1,0),
=(k2,n−1,.....,k2,0),
=(k3,n−1,.....,k3,0),
として、各展開データのiビット目のペア
(k1,i,k2,I,k3,i)のうち、
一つが1または−1、残りが0になるように展開することは難しい。そこで、効率的に、先に説明した(スカラー倍算方法Bの改良B1)とdouble−and−add−always法(Algorithm5)を組み合わせることで、3つのテータ因子を効率的にスカラー倍算することが可能となる。このスカラー倍算アルゴリズムをアルゴリズム9(Alogorithm9)として以下にを示す。
Figure 2007187957
上記アルゴリズムは、先に説明した(スカラー倍算方法Bの改良B1)とdouble−and−add−always法(Algorithm5)を組み合わせることで、3つのテータ因子を効率的にスカラー倍算するアルゴリズムであり、やはりテータ因子に基づく演算によって、高速化が実現される。
(処理例D)種数(g)4の超楕円曲線暗号において、通常因子Dのスカラー倍算kDを4つのweight1のテータ因子P,P,P,Pに分解し、kP+(k+1)P−Pと,kP+(k+1)P−Pに変形して、(B2)で説明する方式を並列に実行する演算方法
次に、種数(g)4の超楕円曲線暗号において、通常因子Dのスカラー倍算kDを4つのウェイト(weight)1のテータ因子P,P,P,Pに分解し、
kD=kP+kP+kP+kP
として、さらに、
kP+(k+1)P−Pと、
kP+(k+1)P−P
に分解する変形を実行して、先に説明した(スカラー倍算方法Bの改良B1)を適用して並列にスカラー倍算を実行する演算アルゴリズムについて、以下に、アルゴリズム10(Algorithm10)として示す。
Figure 2007187957
上記アルゴリズム10(Algorithm10)は、
kD=kP+kP+kP+kP
として、さらに、
kP+(k+1)P−Pと、
kP+(k+1)P−P
に分解し、先に説明した(スカラー倍算方法Bの改良B1)を適用して並列にスカラー倍算を実行する演算アルゴリズムであり、このアルゴリズムにおいてもテータ因子を適用することで、通常因子相互の演算に比較して、計算量が現象し、高速に演算結果を算出することができる。
[(3)本発明の暗号処理における高速化の検証]
本発明の構成によれば、まず、固定因子のスカラー倍算を実行する構成の場合においては、分解されたテータ因子のベースポイントをドメインパラメータとしてメモリに保持し、テータ因子を用いたスカラー倍算の同時計算をスカラー倍算実行部において、実行することが可能となる。
本構成によれば、例えば、上述した各種のテータ因子を利用したスカラー倍算処理例A〜Dの適用により、より時間のかかる通常因子相互の演算を削減し高速な処理の可能なテータ因子を適用した演算に置き換えることが可能となり、処理の高速化が図られる。特に、先に説明した(スカラー倍算方法Bの改良B1)を適用して並列にスカラー倍算を実行することで、より高速な処理が可能となる。スカラー倍算の演算パターンが常に一定の場合、演算処理時間や、演算処理に伴う消費電力の差異が発生せず、演算シーケンスの解析としてのSPA、TA解析に対する耐性を伴った安全で高速な演算が実現することができる。
例えば、通常因子を分割せずにスカラー倍算を行う方式として、先に説明したアルゴリズム2(Algorithm2)を従来法とし、本発明を適用した一方式としての先に説明した(スカラー倍算方法Bの改良B1)において示したアルゴリズム8(Algorithm8)における計算量を比較する。
通常因子どうしの加算を[MFCADD]、
通常因子の2倍算を[MFCDBL]、
通常因子とテータ因子の加算を[TADD]、
テータ因子の2倍算を[TDBL]、
として、超楕円曲線の種数(g)を2、定義体をF(2)とした場合、従来法としてのアルゴリズム2(Algorithm2)と、本発明を適用した一方式としてのアルゴリズム8(Algorithm8)における計算量は、以下のようになる。
アルゴリズム2:(n−1)*(MFCDBL+MFCADD),
アルゴリズム8:(n−1)*(MFCDBL+TADD)+TDBL+TADD
となる。
n=160bitとして、MFCDBL,MFCADD,TADD,TDBLの計算量をそれぞれ、
MFCDBL=I+27M,
MFCADD=I+25M,
TADD=I+11M,
TDBL=I+7M、
として、I=6Mとする。なお、I、Mは有限体F(2)上での逆元演算、乗算を意味する。この場合、
アルゴリズム2:(n−1)*(MFCDBL+MFCADD),
=(160−1)*((I+27M)+(I+25M))
アルゴリズム8:(n−1)*(MFCDBL+TADD)+TDBL+TADD
=(160−1)*((I+27M)+(I+11M))+(I+7M)+(I+11M)
となり、アルゴリズム8は、アルゴリズム2に比較して、約22%、計算量が削減され高速に演算処理することができる。
SPA耐性のある固定因子のスカラー倍算は、例えば、楕円曲線暗号の鍵生成処理や楕円曲線暗号版DSAの署名生成アルゴリズムを超楕円曲線暗号に置き換えた方式として、本発明の構成の適用が可能である。
同様に今回の発明の構成によれば,任意の(ランダムな)因子のスカラー倍算の場合、先に、図6、図7を参照して説明したように、入力される通常因子のテータ因子への分割可能性を判定し、分割可能なものはテータ因子に分割してスカラー倍算を実行させることが可能であり、高速な演算が実現される。本構成を用いた場合、スカラー倍算実行部は高速演算が実現されるとともに、またスカラー倍算の演算パターンが常に一定となり、さらに因子の加算処理はテータ因子の加算を含む演算になる。従って演算処理時間や、演算処理に伴う消費電力の差異が発生せず、演算シーケンスの解析としてのSPA、TA解析に対する耐性も伴った安全で高速な演算が実現される。
一方、入力された通常因子をテータ因子に分解する処理は、定義されている超楕円曲線の種数gや定義体によって計算量が異なることになる。
しかし、先に、図9、図10を参照して説明した「因子に分割できる公開鍵のみ生成する方法」を適用した場合、通常因子を分割する処理ステップのボトルネックを回避することができ、固定因子のスカラー倍と同等の処理速度を実現することができる。
また、先に、図8を参照して説明したように、「種数2,定義体F(2)の場合,分割できない場合,その因子を2分割できるまで2倍する方法」を適用して、入力する通常因子Dを2倍して、テータ因子への分割可能性を判定する処理を繰り返すことで、任意の入力通常因子Dを複数回2倍して、その後、テータ因子に分割してスカラー倍算を実行することで、因子を分割しないスカラー倍算法に比べて高速に演算することができる。
この通常因子の2倍算処理と、テータ因子への分割処理を実行してスカラー倍算を実行する手法と、通常因子のままスカラー倍算を実行する従来手法との計算量について検証する。
通常因子のままスカラー倍算を実行する従来手法であるアルゴリズム2(Algorithm2)は先に示したように、計算量は、
n*(MFCDBL+MFCADD)
である。
一方、通常因子の2倍算処理と、テータ因子への分割処理を実行してスカラー倍算を実行する本発明のシーケンス(図8のフローに示す処理シーケンス)に従った計算量は、以下のようになる。ただし、因子が分割されるか否かは確率1/2で起こるため、図8のステップS222,S231の処理は平均値として計算量を見積もっている。なお、有限体F(2)上でのトレース演算をTr,ハーフトレース演算をHf, 1/2倍算をMFCHLVと定義している。図8に示す各処理ステップでの計算利用は以下のようになる。
ステップS222,S231:2I+4M+2Tr+MFCDBL
ステップS223:3M+Hf
ステップS224:TDBL+TADD+(n−1)(MFCDBL+TADD)
ステップS234:MFCHLV
固定因子の計算量見積りと同様に、I=6Mとし、さらにHf=0.5M,Tr=0M,MFCHLV=28Mとした場合、図8の処理フローに従った処理を実行することで、従来法(アルゴリズム2)に比べて、約20%の高速化が期待できる。
なお、SPA耐性のある任意の因子のスカラー倍算については、鍵交換アルゴリズムECDHを超楕円曲線暗号に置き換えた方式が適用できる。
さらにSPA耐性かつDPA耐性が要求される任意の因子のスカラー倍算としてはElGamal方式の復号処理が挙げられる。例えば、文献[J.-S. Coron, Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems, CHES'99, LNCS 1717, pp.292-302, Springer-Verlag, 1999.]において示されるECCで知られているDPA対策法では任意因子のスカラー倍kDを乱数Rとヤコビ多様体の位数#Jを用いて,(#J)D=Oであることをから、任意因子のスカラー倍kDを、
kD=(k+R#J)D
と変形し、秘密情報kに乱数をマスクしてスカラー倍算を行うことでDPA対策法としている。この対策法は、上述の本発明に従った因子のスカラー倍算を用いてより高速に計算することが可能となる。
具体的には因子のスカラー倍算kDを、テータ因子Pnを用いて、
kD=(k+R#J)P+(k+1+R#J)P−P
と変換し、上述した処理例A〜Dのいずれかのテータ因子による高速化スカラー倍算手法を使いスカラー倍算を演算する。また、異なる乱数R,Rを用いて
kD=(k+R#J)P+(k+1+R#J)P−P
と変換して、処理例A〜Dのいずれかのテータ因子による高速化スカラー倍算手法を使いスカラー倍算を演算する処理を行なってもよい。
本発明の方法を適用することで、通常因子を入力としてスカラー倍算を行なう場合でも、テータ因子に分割して、テータ因子を用いた高速化演算が実現され、ランダムな入力因子に対してテータ因子を適用したスカラー倍算を行なうことが可能となり、超楕円曲線暗号のスカラー倍算を高速化することができる。さらに、ベースポイントとして通常因子を採用することができるため、暗号処理装置におけるメモリに制約がない環境では、通常因子を使った既存のスカラー倍算高速化手法も適用することができ、柔軟性が高くなる。
[4.暗号処理装置の構成例]
最後に、上述の暗号処理を実行するデバイスとしてのICモジュール200の構成例を図17に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図17に示すICモジュール200は、これら様々な機器に構成することが可能である。
図17に示すCPU(Central processing Unit)201は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ202は、CPU201が実行するプログラム、あるいは演算パラメータとしての固定データを格納するROM(Read-Only-Memory)、CPU201の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。
なお、メモリ202に格納する演算実行プログラムには、上述したベースポイントの設定処理、スカラー倍算としての加算、2倍算の実行シーケンスを含むプログラムなどが含まれる。また、メモリ202は暗号処理に必要な鍵データ等の格納領域として使用可能である。例えば、テータ因子に分割可能な公開鍵データの格納領域としても利用される。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部203は、上述したスカラー倍算処理を含む暗号処理、復号処理等を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU201がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器204は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部205は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の構成によれば、超楕円曲線暗号の因子Dに対するスカラー倍算において、スカラー倍算の対象となる因子の制御を実行し、高速なスカラー倍算を実現することができる。具体的には、種数gの超楕円曲線暗号において、種数gに等しいウェイト(Weight)を持つ通常因子が、スカラー倍算の対象因子である場合、該通常因子を種数g未満のウェイト(Weight)を持つ因子として定義されるテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を生成して、このテータ因子を適用したスカラー倍算をスカラー倍算実行部において実行させる構成とすることで、演算量を削減した高速なスカラー倍算を実行させることが可能となり、高速な暗号処理演算が実現される。
テータ因子を使った因子のスカラー倍算の計算シーケンスについて説明する図である。 本発明の暗号処理装置における因子のスカラー倍算を実行する暗号処理部構成例について説明する図である。 通常因子とテータ因子の関係について説明する図である。 固定の通常因子が入力される場合の暗号処理部の構成および処理について説明する図である。 因子制御部において実行されるベースポイント生成処理の具体的な処理について説明するフローチャートを示す図である。 スカラー倍算を実行する入力因子として、ランダムな通常因子が入力される場合の暗号処理部の構成および処理について説明する図である。 通常因子分割判定処理部としての因子制御部の処理について説明するフローチャートを示す図である。 ランダムな入力因子をテータ因子に分割することができないと判定された場合、その入力通常因子を2分割できるまで2倍してスカラー倍算を実行する処理について説明するフローチャートを示す図である。 公開鍵となる因子をテータ因子に分割可能な因子として設定する処理を実行する暗号処理部の構成を示す図である。 公開鍵となる因子をテータ因子に分割可能な因子として設定する鍵生成処理シーケンスの詳細について説明するフローチャートを示す図である。 従来のDH(Diffie-Hellman)鍵共有アルゴリズムについて説明する図である。 テータ因子に分割可能な因子を公開鍵として予め生成しておく処理構成とした場合の、DH(Diffie-Hellman)鍵共有アルゴリズムについて説明する図である。 通常因子Dのスカラー倍算kDを2つのテータ因子P,Pに分解し、分解したデータ因子についてのスカラー倍算として、kP+kPを、同時計算法を用いて計算する方法について説明するフローチャートを示す図である。 種数(g)2の超楕円曲線暗号において、通常因子DをP,Pに分解し、通常因子Dのスカラー倍kDを、k+k−(k−k)P−(k−k)Pとして、同時計算法を用いて計算する方法について説明する説明するフローチャートを示す図である。 偶数、奇数のスカラー量としてのペアk,kが、k=k,k=k+1の場合においてスカラー倍算実行部の実行する計算する方法について説明する説明するフローチャートを示す図である。 図15の処理フローにおけるステップS623のk,k+1の符号付2進展開の具体的処理シーケンスを説明するフローチャートを示す図である。 本発明の暗号処理演算を実行する暗号処理実行デバイス例としてのICモジュールの構成例を示す図である。
符号の説明
100 暗号処理部
101 因子制御部
102 スカラー倍算実行部
110 暗号処理部
111 因子制御部(ベースポイント生成部)
112 スカラー倍算実行部
120 暗号処理部(通常因子分割判定処理部)
121 因子制御部
122 スカラー倍算実行部
130 暗号処理部
131 因子制御部(鍵生成処理部)
132 スカラー倍算実行部
133 メモリ
200 ICモジュール
201 CPU(Central Processing Unit)
202 メモリ
203 暗号処理部
204 乱数発生器
205 送受信部

Claims (31)

  1. 超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理装置であり、
    スカラー倍算の対象となる因子の制御を実行する因子制御部と、
    前記因子制御部の制御に基づいて決定された因子を適用したスカラー倍算を実行するスカラー倍算実行部とを有し、
    前記因子制御部は、
    種数gの超楕円曲線暗号において、種数gに等しいウェイト(Weight)を持つ通常因子が、スカラー倍算の対象因子である場合、該通常因子を種数g未満のウェイト(Weight)を持つ因子として定義されるテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行う構成であることを特徴とする暗号処理装置。
  2. 前記因子制御部は、
    ベースポイント生成部として機能し、テータ因子への分割可能な通常因子をベースポイントとして生成する処理を実行し、
    前記スカラー倍算実行部は、
    前記ベースポイントとしての通常因子を分割して設定されるテータ因子を適用したスカラー倍算処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  3. 前記因子制御部は、
    スカラー倍算の処理対象として入力するランダムな因子についてのテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させ、分割不可能である場合は、通常因子によるスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行う構成であることを特徴とする請求項1に記載の暗号処理装置。
  4. 前記因子制御部は、
    スカラー倍算の処理対象として入力するランダムな因子についてのテータ因子への分割可能性を判定し、入力因子が分割不可能である場合、
    入力因子の2倍算、および2倍算の演算結果因子のテータ因子への分割可能性の判定処理を繰り返し実行し、
    テータ因子への分割可能な演算結果因子が検出された場合、該演算結果因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行う構成であることを特徴とする請求項1に記載の暗号処理装置。
  5. 前記スカラー倍算実行部は、
    前記2倍算の演算結果因子を分割して設定したテータ因子を適用したスカラー倍算の実行の後、2倍算処理の回数に相当する回数の1/2倍算を実行して、入力因子のスカラー倍算結果を算出する処理を実行する構成であることを特徴とする請求項4に記載の暗号処理装置。
  6. 前記因子制御部は、
    鍵生成部として機能し、テータ因子への分割可能な通常因子を鍵データとして生成する処理を実行し、該生成鍵データをメモリに格納し、
    前記スカラー倍算実行部は、
    前記鍵データとしての通常因子を分割して設定されるテータ因子を適用したスカラー倍算処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  7. 前記因子制御部は、
    前記メモリに通常因子としての鍵データを分割して設定されるテータ因子を格納する構成であることを特徴とする請求項6に記載の暗号処理装置。
  8. 前記スカラー倍算実行部は、
    種数2の超楕円曲線暗号において、
    2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
    kD=kP+kP
    とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  9. 前記スカラー倍算実行部は、
    種数2の超楕円曲線暗号において,
    2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、奇数,偶数の整数k,kを適用し、
    kD=k+k−(k−k)P−(k−k)P
    とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  10. 前記スカラー倍算実行部は、
    種数2の超楕円曲線暗号において,
    2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
    kP+(k+1)P−P、または、
    kP+(k−1)P+P
    とする変換を行い、テータ因子P,Pを適用したスカラー倍算を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  11. 前記スカラー倍算実行部は、
    種数3の超楕円曲線暗号において、
    2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
    kP+(k+1)P−P、または、
    kP+(k−1)P+P
    とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  12. 前記スカラー倍算実行部は、
    種数4の超楕円曲線暗号において、
    2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
    kP+(k+1)P−P、または、
    kP+(k−1)P+P
    とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  13. 前記スカラー倍算実行部は、
    種数gの超楕円曲線暗号において、通常因子を3個のテータ因子に分けて同時計算法を使ってスカラー倍算を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  14. 前記スカラー倍算実行部は、
    種数3の超楕円曲線暗号において、
    3つのウェイト(weight)1のテータ因子P,P,Pを適用して、通常因子Dのスカラー倍算kDを、
    kP+(k+1)P−P、または、kP+(k−1)P+P
    と、kP
    とに分割して、同時計算法およびdouble−and−add−always法を用いてテータ因子P,Pを適用したスカラー倍算を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  15. 前記スカラー倍算実行部は、
    種数gの超楕円曲線暗号において通常因子を2個以上の複数のテータ因子に分けて同時計算法を使ってスカラー倍算を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  16. 暗号処理装置において、超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理方法であり、
    因子制御部において、スカラー倍算の対象となる因子の制御を実行する因子制御ステップと、
    スカラー倍算実行部において、前記因子制御部の制御に基づいて決定された因子を適用したスカラー倍算を実行するスカラー倍算実行ステップとを有し、
    前記因子制御ステップは、
    種数gの超楕円曲線暗号において、種数gに等しいウェイト(Weight)を持つ通常因子が、スカラー倍算の対象因子である場合、該通常因子を種数g未満のウェイト(Weight)を持つ因子として定義されるテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行うステップを有することを特徴とする暗号処理方法。
  17. 前記因子制御ステップは、
    ベースポイント生成処理を実行し、テータ因子への分割可能な通常因子をベースポイントとして生成する処理を実行し、
    前記スカラー倍算実行ステップは、
    前記ベースポイントとしての通常因子を分割して設定されるテータ因子を適用したスカラー倍算処理を実行することを特徴とする請求項16に記載の暗号処理方法。
  18. 前記因子制御ステップは、
    スカラー倍算の処理対象として入力するランダムな因子についてのテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させ、分割不可能である場合は、通常因子によるスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行うことを特徴とする請求項16に記載の暗号処理方法。
  19. 前記因子制御ステップは、
    スカラー倍算の処理対象として入力するランダムな因子についてのテータ因子への分割可能性を判定し、入力因子が分割不可能である場合、
    入力因子の2倍算、および2倍算の演算結果因子のテータ因子への分割可能性の判定処理を繰り返し実行し、
    テータ因子への分割可能な演算結果因子が検出された場合、該演算結果因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行うことを特徴とする請求項16に記載の暗号処理方法。
  20. 前記スカラー倍算実行ステップは、
    前記2倍算の演算結果因子を分割して設定したテータ因子を適用したスカラー倍算の実行の後、2倍算処理の回数に相当する回数の1/2倍算を実行して、入力因子のスカラー倍算結果を算出する処理を実行することを特徴とする請求項19に記載の暗号処理方法。
  21. 前記因子制御ステップは、
    テータ因子への分割可能な通常因子を鍵データとして生成する処理を実行し、該生成鍵データをメモリに格納し、
    前記スカラー倍算実行ステップは、
    前記鍵データとしての通常因子を分割して設定されるテータ因子を適用したスカラー倍算処理を実行することを特徴とする請求項16に記載の暗号処理方法。
  22. 前記因子制御ステップは、
    前記メモリに通常因子としての鍵データを分割して設定されるテータ因子を格納することを特徴とする請求項21に記載の暗号処理方法。
  23. 前記スカラー倍算実行ステップは、
    種数2の超楕円曲線暗号において、
    2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
    kD=kP+kP
    とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行することを特徴とする請求項16に記載の暗号処理方法。
  24. 前記スカラー倍算実行ステップは、
    種数2の超楕円曲線暗号において,
    2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、奇数,偶数の整数k,kを適用し、
    kD=k+k−(k−k)P−(k−k)P
    とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行することを特徴とする請求項16に記載の暗号処理方法。
  25. 前記スカラー倍算実行ステップは、
    種数2の超楕円曲線暗号において,
    2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
    kP+(k+1)P−P、または、
    kP+(k−1)P+P
    とする変換を行い、テータ因子P,Pを適用したスカラー倍算を実行することを特徴とする請求項16に記載の暗号処理方法。
  26. 前記スカラー倍算実行ステップは、
    種数3の超楕円曲線暗号において、
    2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
    kP+(k+1)P−P、または、
    kP+(k−1)P+P
    とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行することを特徴とする請求項16に記載の暗号処理方法。
  27. 前記スカラー倍算実行ステップは、
    種数4の超楕円曲線暗号において、
    2つのテータ因子P,Pを適用して、通常因子Dのスカラー倍算kDを、
    kP+(k+1)P−P、または、
    kP+(k−1)P+P
    とする変換を行い、テータ因子P,Pを適用したスカラー倍算を同時計算法を用いて実行することを特徴とする請求項16に記載の暗号処理方法。
  28. 前記スカラー倍算実行ステップは、
    種数gの超楕円曲線暗号において、通常因子を3個のテータ因子に分けて同時計算法を使ってスカラー倍算を実行することを特徴とする請求項16に記載の暗号処理方法。
  29. 前記スカラー倍算実行ステップは、
    種数3の超楕円曲線暗号において、
    3つのウェイト(weight)1のテータ因子P,P,Pを適用して、通常因子Dのスカラー倍算kDを、
    kP+(k+1)P−P、または、kP+(k−1)P+P
    と、kP
    とに分割して、同時計算法およびdouble−and−add−always法を用いてテータ因子P,Pを適用したスカラー倍算を実行することを特徴とする請求項16に記載の暗号処理方法。
  30. 前記スカラー倍算実行ステップは、
    種数gの超楕円曲線暗号において通常因子を2個以上の複数のテータ因子に分けて同時計算法を使ってスカラー倍算を実行することを特徴とする請求項16に記載の暗号処理方法。
  31. 暗号処理装置において、超楕円曲線暗号に基づく暗号処理演算を実行させるコンピュータ・プログラムであり、
    因子制御部において、スカラー倍算の対象となる因子の制御を実行させる因子制御ステップと、
    スカラー倍算実行部において、前記因子制御部の制御に基づいて決定された因子を適用したスカラー倍算を実行させるスカラー倍算実行ステップとを有し、
    前記因子制御ステップは、
    種数gの超楕円曲線暗号において、種数gに等しいウェイト(Weight)を持つ通常因子が、スカラー倍算の対象因子である場合、該通常因子を種数g未満のウェイト(Weight)を持つ因子として定義されるテータ因子への分割可能性を判定し、分割可能である場合は、通常因子を分割して生成したテータ因子を適用したスカラー倍算を、前記スカラー倍算実行部において実行させる制御を行うステップとして設定されていることを特徴とするコンピュータ・プログラム。
JP2006007104A 2006-01-16 2006-01-16 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Expired - Fee Related JP4513752B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2006007104A JP4513752B2 (ja) 2006-01-16 2006-01-16 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
PCT/JP2007/050008 WO2007080825A1 (ja) 2006-01-16 2007-01-04 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
EP07706355A EP1975907A1 (en) 2006-01-16 2007-01-04 Encryption processing device, encryption processing method, and computer program
CN200780002463XA CN101371285B (zh) 2006-01-16 2007-01-04 加密处理装置、加密处理方法
KR1020087015731A KR20080086476A (ko) 2006-01-16 2007-01-04 암호 처리 장치, 및 암호 처리 방법, 및 컴퓨터 프로그램
US12/087,811 US20100183142A1 (en) 2006-01-16 2007-01-04 Encryption Processing Apparatus, Encryption Processing Method, and Computer Program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006007104A JP4513752B2 (ja) 2006-01-16 2006-01-16 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Publications (2)

Publication Number Publication Date
JP2007187957A true JP2007187957A (ja) 2007-07-26
JP4513752B2 JP4513752B2 (ja) 2010-07-28

Family

ID=38256231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006007104A Expired - Fee Related JP4513752B2 (ja) 2006-01-16 2006-01-16 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US20100183142A1 (ja)
EP (1) EP1975907A1 (ja)
JP (1) JP4513752B2 (ja)
KR (1) KR20080086476A (ja)
CN (1) CN101371285B (ja)
WO (1) WO2007080825A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8243919B2 (en) * 2007-03-07 2012-08-14 Research In Motion Limited Method and apparatus for performing elliptic curve scalar multiplication in a manner that counters power analysis attacks
US7991162B2 (en) * 2007-09-14 2011-08-02 University Of Ottawa Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields
WO2009090750A1 (ja) * 2008-01-18 2009-07-23 Mitsubishi Electric Corporation 暗号パラメータ設定装置及び鍵生成装置及び暗号システム及びプログラム及び暗号パラメータ設定方法及び鍵生成方法
FR2935503A1 (fr) * 2008-08-28 2010-03-05 St Microelectronics Rousset Protection d'un algorithme de chiffrement
US8542820B2 (en) * 2009-02-05 2013-09-24 Infineon Technologies Ag Apparatus for calculating a result of a scalar multiplication
JP5446678B2 (ja) * 2009-09-29 2014-03-19 富士通株式会社 楕円曲線暗号演算装置及び方法
KR101297966B1 (ko) * 2011-12-14 2013-08-19 (주)엠씨씨 이.씨.씨. 알고리즘을 이용한 암호화 방법
CN103684763A (zh) * 2012-09-19 2014-03-26 北京握奇数据系统有限公司 基于rsa算法的数据加密方法、装置及智能卡
US9590805B1 (en) * 2014-12-23 2017-03-07 EMC IP Holding Company LLC Ladder-based cryptographic techniques using pre-computed points
EP4024755B1 (en) * 2021-08-26 2024-03-20 Irdeto B.V. Secured performance of an elliptic curve cryptographic process

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002540484A (ja) * 1999-03-26 2002-11-26 ジェムプリュス 楕円曲線型の公開鍵暗号化アルゴリズムを用いる電子構成部品における対抗措置方法
JP2005258228A (ja) * 2004-03-12 2005-09-22 Sony Corp 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2791497B1 (fr) * 1999-03-26 2001-05-18 Gemplus Card Int Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique
US7149693B2 (en) * 2003-07-31 2006-12-12 Sony Corporation Automated digital voice recorder to personal information manager synchronization
JP4752313B2 (ja) * 2004-09-30 2011-08-17 ソニー株式会社 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
JP2006145945A (ja) * 2004-11-22 2006-06-08 Sony Corp 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002540484A (ja) * 1999-03-26 2002-11-26 ジェムプリュス 楕円曲線型の公開鍵暗号化アルゴリズムを用いる電子構成部品における対抗措置方法
JP2005258228A (ja) * 2004-03-12 2005-09-22 Sony Corp 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム

Also Published As

Publication number Publication date
CN101371285B (zh) 2010-09-08
WO2007080825A1 (ja) 2007-07-19
CN101371285A (zh) 2009-02-18
EP1975907A1 (en) 2008-10-01
JP4513752B2 (ja) 2010-07-28
US20100183142A1 (en) 2010-07-22
KR20080086476A (ko) 2008-09-25

Similar Documents

Publication Publication Date Title
JP4513752B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
KR101154695B1 (ko) 암호 처리 연산 장치
CN107040362B (zh) 模乘设备和方法
JP4752313B2 (ja) 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
US7835517B2 (en) Encryption processing apparatus, encryption processing method, and computer program
Koziel et al. Low-resource and fast binary edwards curves cryptography
US8300810B2 (en) Method for securely encrypting or decrypting a message
JP5182364B2 (ja) サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
US7177422B2 (en) Elliptic curve encryption processing method, elliptic curve encryption processing apparatus, and program
EP1578054B1 (en) Cryptography-processing method, cryptography-processing apparatus and computer program
JP2004163687A (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム
US8861721B2 (en) System and method for securing scalar multiplication against simple power attacks
KR101990861B1 (ko) 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치
Chavan et al. A review on solving ECDLP over large finite field using parallel Pollard’s rho (ρ) method
Realpe-Muñoz et al. High-performance elliptic curve cryptoprocessors over GF (2^ m) GF (2 m) on Koblitz curves
CA2631276A1 (en) Exponentiation method using multibase number representation
JP2004053814A (ja) 楕円曲線暗号装置及び楕円曲線暗号演算方法
Güneysu et al. Modular Integer Arithmetic for Public Key Cryptography
WO2015199672A1 (en) System and method for securing scalar multiplication against simple power attacks
JP2008020757A (ja) 暗号処理装置、および暗号処理演算方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100420

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100503

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130521

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees