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

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

Info

Publication number
JP2006145945A
JP2006145945A JP2004337186A JP2004337186A JP2006145945A JP 2006145945 A JP2006145945 A JP 2006145945A JP 2004337186 A JP2004337186 A JP 2004337186A JP 2004337186 A JP2004337186 A JP 2004337186A JP 2006145945 A JP2006145945 A JP 2006145945A
Authority
JP
Japan
Prior art keywords
processing
data
factor
expansion
degeneration
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.)
Abandoned
Application number
JP2004337186A
Other languages
English (en)
Inventor
Masanori Kataki
雅宣 堅木
Toru Akishita
徹 秋下
Izuru Kitamura
出 北村
Takeshi Takagi
剛 高木
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 JP2004337186A priority Critical patent/JP2006145945A/ja
Priority to KR1020077008858A priority patent/KR101154695B1/ko
Priority to US11/791,283 priority patent/US7957527B2/en
Priority to CN2005800399114A priority patent/CN101061526B/zh
Priority to EP05806900A priority patent/EP1816624A4/en
Priority to PCT/JP2005/020967 priority patent/WO2006054559A1/ja
Publication of JP2006145945A publication Critical patent/JP2006145945A/ja
Abandoned legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • G09C1/02Apparatus 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 by using a ciphering code in chart form
    • 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/10Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols with particular housing, physical features or manual controls
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile

Landscapes

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

Abstract

【課題】 超楕円暗号処理において安全でかつ高速な演算を実現する装置および方法を実現する。
【解決手段】 超楕円曲線暗号に基づくスカラー倍算処理におけるベースポイントDと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データを、超楕円曲線の種数g(genus)より小さいウェイトの因子である退化因子とし、ウィンドウ法を適用したスカラー倍算処理における加算処理を退化因子+非退化因子の加算処理によって実行する。本構成により高速演算が実現され、さらに、演算における鍵解析などの一体様態であるSPA解析などに対する耐性も損なわれない安全で高速な演算が実現される。
【選択図】 図9

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上で定義される楕円曲線上の点をPとし、スカラー倍算した点kP(k∈Z)をQとすると、Qからkを求める問題は離散対数問題に帰着できる。一方、超楕円曲線暗号では点の形式的和である因子(divisor)をDとし、スカラー倍算kDで定義される因子をDとすると、Dからkを求める問題は超楕円曲線におけるヤコビ多様体上の離散対数問題として公開鍵暗号として用いることができる。
超楕円曲線では曲線を特徴づける値は種数(genus)gである。pを素数、nを正の整数、q=pとする。このとき有限体Fq上で定義される種数gの超楕円曲線Cは以下の方程式、
+h(x)y=f(x)
で定義される。ここで、h(x),f(x)∈Fq[x],f(x)は、次数2g+1のmonic多項式である。
超楕円曲線C上の点P=(x、y)に対してoppositeな点−Pは(x、y+h(x))として定義される。P=−Pである点を分岐点(ramification point)と呼ぶ。
超楕円曲線暗号の定義体の演算サイズ(ビット長)は楕円曲線暗号と同等の安全性を仮定した場合、楕円曲線の定義体の演算サイズに比べて1/gに小さくなることが知られている。演算サイズが小さいことは実装上メリットがあり、超楕円曲線暗号の利点の一つして挙げられる。
次に、超楕円曲線暗号の基本事項について説明する。前述したように、超楕円曲線暗号では点の形式的和である因子(divisor)をDとし、スカラー倍算kDで定義される因子をDとすると、Dからkを求める問題は超楕円曲線におけるヤコビ多様体上の離散対数問題として公開鍵暗号として用いることができる。
ここで、因子(divisor)は以下の形式で表現することができる。
Figure 2006145945
但しP=(x、y)かつi≠jに対してP≠Pである。この形式の因子の表現を半被約因子(semi reduced divisor)とよぶ。
また、ΣmをDのウェイト(weight)と呼ぶ。さらにウェイト(weight)が種数g以下である半被約因子を被約因子(reduced divisor)と呼ぶ。
超楕円曲線のヤコビ(Jacobi)多様体上の任意の半被約因子Dは下記の多項式U、V∈Fq[x]を用いてD=(U、V)として表現できる。これをマンホード(Mumford)表現と呼ぶ。なお、マンホード(Mumford)表現については、例えば非特許文献3に記載されている。
Figure 2006145945
種数(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
として表現できる。
なお、以下、本明細書において、因子Dは、特に断りがない限り被約因子(reduced divisor)であるものとする。すなわち、ウェイト(weight)が種数g以下である半被約因子としての被約因子(reduced divisor)であるものとする。
さらに、被約因子(reduced divisor)のうち、ウェイト(weight)が種数gに等しいものを除いた因子、すなわち、被約因子(reduced divisor)のうち、ウェイト(weight)が種数gより小さい因子を退化因子(degenerate divisor)と呼ぶことにする。
例えば、
種数g=2の場合、退化因子はウェイト(weight)=1の因子、
種数g=3の場合、退化因子はウェイト(weight)=1,2の因子、
となる。
種数g=2の場合と、種数g=3の場合において、退化因子(degenerate divisor)をマンホード(Mumford)表現を用いて示すと、以下のように表される。
(ア)種数2の退化因子(Weight1):(U,V)=(x+u,v)
(イ)種数3の退化因子(Weight1):(U,V)=(x+u,v
(ウ)種数3の退化因子(Weight2):(U,V)=(x+ux+u,vx+v
次に、超楕円曲線暗号で用いられる因子のスカラー倍算について説明する.因子のスカラー倍算は加算アルゴリズムと呼ばれる因子の加算と2倍算組み合わせで計算することができる。以下では主要な加算アルゴリズムについて説明する。
最初に提案された実用的なアルゴリズムはCantorのアルゴリズムである。このアルゴリズムについては、例えば非特許文献1、非特許文献2に記載されている。このアルゴリズムはあらゆる種数の超楕円曲線上の因子に対して適用可能なアルゴリズムであるが、楕円曲線に比べてアルゴリズムが複雑で計算量が多いことが欠点である。
Harleyは種数2の超楕円曲線に限定し、因子のweightの場合分けをおこない、それぞれの場合で最適化を行うことでより計算量の少ないアルゴリズムを提案した。この研究を受けて超楕円曲線暗号(HECC)における演算アルゴリズムの改良、拡張の研究が近年盛んになっている。
Harleyのアルゴリズムは定義体を素体、種数2の曲線、因子の表現はMumford表現を用いている。このアルゴリズムの計算量の改善の研究例として、例えば、非特許文献4、非特許文献5、非特許文献6などが挙げられる。さらに、定義体を2の拡大体の場合について拡張した処理例について、非特許文献7、非特許文献8に報告されている。また、種数が3の場合のHarleyのアルゴリズムへの拡張処理については、非特許文献9、非特許文献10に報告されている。また、因子の表現に拡張Mumford表現、Weighted Coordinateを用いることで計算量を削減した研究として非特許文献11、非特許文献12、非特許文献6、非特許文献13がある。
Harleyアルゴリズムの処理について、図1および図2を参照して説明する。図1(A)は、種数2の場合の因子の加算D+Dの処理例を示した図である。なお、因子D、Dは、それぞれD=(U1、)、D=(U、V)とする。まず、因子のウェイト(weight)の値によって場合分けが行われる。すなわち、[D+D]の各ウェイト(weight)の値によって、
(1)weight2+weight2
(2)weight2+weight1
(3)例外処理1
の場合分けが行なわれる。
次にweight2同士の加算、すなわち(1)weight2+weight2の場合、因子D=(U1、)、D=(U、V)について、最大公約数gcd(U、U)=1であれば、2つの因子D=(U1、)、D=(U、V)は、互いに同一またはオポジット(opposite)な点を含まない。この場合、
(1a)HarleyADD、
すなわちハーレーアルゴリズムに従った加算処理を行う。(1a)HarleyADDの処理は例えば非特許文献7に示されているMost Frequent Caseと呼ばれる処理である。このMost Frequent Caseは、種数2の場合の因子の加算D+D処理において、高確率で発生するケースである。
種数2の加算処理におけるMost Frequent Caseで実行するHarleyADDの処理を、以下のテーブル1[Table1]に示す。
Figure 2006145945
この(1a)HarleyADDの処理は、非常に高い確率でおこる。その他の例外処理の起こる確率は非常に低い。Most Frequent Caseの条件を満たさない場合、すなわち、因子D=(U1、)、D=(U、V)について、最大公約数gcd(U、U)=1を満足しない場合は、
(1b)例外処理2を行う。
(2)weight2+weight1の場合についても同様に、gcd(U、U)=1かどうかをチェックし、gcd(U、U)=1を満足する場合には、
(2a)ExHarADD2+1→2を実行し、
gcd(U、U)=1を満足しない場合には、
(2b)例外処理3を行う。
(2a)ExHarADD2+1→2のアルゴリズムは非特許文献8に示されている。ExHarADD2+1→2の処理を、以下のテーブル3[Table3]に示す。
Figure 2006145945
(3)例外処理1は、weightの場合分けが上記(1),(2)以外の場合である。
種数2の場合の2倍算の流れを図1(B)に示す。2倍算は、D+D=2Dの処理である。加算の場合と同様に因子Dのweightが
(4)weight2、
(5)weight1、
(6)weight0、
によってそれぞれ異なる処理を行う。
(4)weight2の場合、因子が分岐点を含むかどうかをチェックし、含まなければ、(4a)HarleyDBLの処理を行う。因子が分岐点を含む場合は(4b)例外処理6を行う。
(4a)HarleyDBLの処理アルゴリズムは例えば非特許文献7にMost Frequent Caseとして示されている。HarleyDBLの処理アルゴリズムを、以下のテーブル2[Table2]に示す。
Figure 2006145945
次に、種数3の場合における加算、2倍算について、図2を参照して説明する。種数3においても、種数2の場合と基本的な考え方は同じであるが、種数3の場合、因子の最大のweightが3になるため、場合分けの数は種数2に比べて非常に多くなることが特徴である。
図2(A)加算において、因子D、Dは、それぞれD=(U1、)、D=(U、V)とする。まず、因子のウェイト(weight)の値によって場合分けが行われる。すなわち、[D+D]の各ウェイト(weight)の値によって、
(1)weight3+weight3
(2)weight3+weight2
(3)weight3+weight1
(4)例外処理7
の場合分けが行なわれる。
さらに、(1)weight3+weight3の場合において、因子D=(U1、)、D=(U、V)について、最大公約数gcd(U、U)=1を満足する場合は、
(1a)HarleyADD
を実行する。これが種数3の加算処理における最も高確率で発生するケース、すなわち、Most Frequent Caseである。
種数3の加算処理におけるMost Frequent CaseとしてのHarleyADDは例えば非特許文献9,10に示されている。種数3の加算処理におけるMost Frequent CaseとしてのHarleyADDのアルゴリズムを以下のテーブル[Table4]に示す。
Figure 2006145945
同様に、(2)weight3+weight2の場合において、因子D=(U1、)、D=(U、V)について、最大公約数gcd(U、U)=1を満足する場合は、
(2a)ExHarADD3+2→3
を実行する。
最大公約数gcd(U、U)=1を満足しない場合は、
(2b)例外処理9
を実行する。
同様に、(3)weight3+weight1の場合において、因子D=(U1、)、D=(U、V)について、最大公約数gcd(U、U)=1を満足する場合は、
(3a)ExHarADD3+1→3
を実行する。
最大公約数gcd(U、U)=1を満足しない場合は、
(3b)例外処理10
を実行する。
それぞれのアルゴリズムは文献等に明示的に示されていないので、定義体がF の場合の公式を導出した。その結果としてのExHarADD3+1→3、およびExHarADD3+2→3のアルゴリズムを、以下のテーブル[Table6]、[Table7]に示す。
Figure 2006145945
Figure 2006145945
種数3の場合の2倍算の流れを図2(B)に示す。2倍算は、D+D=2Dの処理である。加算の場合と同様に因子Dのweightが
(4)weight3、
(5)weight2、
(6)weight1、
(7)weight0、
によってそれぞれ異なる処理を行う。
(4)weight3の場合、因子が分岐点を含むかどうかをチェックし、含まなければ、(4a)HarleyDBLの処理を行う。因子が分岐点を含む場合は(4b)例外処理11を行う。
(4a)HarleyDBLの処理アルゴリズムは例えば非特許文献9,10にMost Frequent Caseとして示されている。HarleyDBLの処理アルゴリズムを、以下のテーブル5[Table5]に示す。
Figure 2006145945
種数2、3共にHarleyADD、HarleyDBLはmost frequent caseと呼ばれ、ランダムに因子を発生させて加算または2倍算を行うと、非常に高い確率でHarleyADD、HarleyDBLの処理になる。なお、このHarleyADD、HarleyDBLが、most frequent caseとなることの説明は、例えば非特許文献14に説明されている。
非特許文献14によると、このmost frequent caes以外の処理になる確率はO(1/q)である。ここでqは定義体の要素数であり、安全な暗号用途ではqgが160bit程度必要になる大きな数であるので現実的にはHarleyADD、HarleyDBLしか発生しない状況とみなすことができる。
従って超楕円曲線暗号(HECC)の加算アルゴリズムをHarleyアルゴリズムまたはその改良アルゴリズムを使って、例えばICカードなどの暗号処理演算手段として実装する場合、
HarleyADD、
HarleyDBL
だけを実装し、その他の確率的にほとんど起こらない複雑な例外処理についての演算を実行しない実装とする場合も多い。この場合、例外処理については、weightの場合分けが必要のないCantorのアルゴリズムを実行する構成とするなどの方法が適用される。種数が高くなるほど複雑な例外処理の負担は増すため、非特許文献9,10ではこの実装方法について説明している。
次に超楕円曲線暗号(HECC)アルゴリズムにおける因子のスカラー倍算について説明する。超楕円曲線暗号(HECC)アルゴリズムにおいて、因子のスカラー倍算は、超楕円加算と超楕円2倍算の組み合わせで計算することができる。スカラー倍算のアルゴリズムとして基本的なbinary法とdouble−and−add−always法を例に挙げて説明する。
前述したように、楕円曲線暗号では有限体Fq上で定義される楕円曲線上の点をPとし、スカラー倍算した点kP(k∈Z)をQとすると、Qからkを求める問題は離散対数問題に帰着できる。一方、超楕円曲線暗号では点の形式的和である因子(divisor)をDとし、スカラー倍算kDで定義される因子をDとすると、Dからkを求める問題は超楕円曲線におけるヤコビ多様体上の離散対数問題として公開鍵暗号として用いることができる。
因子Dに対して、スカラー倍算(D=dD)に適用する乗数としてのスカラー値:dの2進数表現を、
d=(dl−1、・・・・・、d)、
ただし、dl−1=1、dl−2,・・・,0=1or0とする。
スカラー倍算のアルゴリズムとして基本的なbinary法の演算アルゴリズム[アルゴリズム1]を以下に示す。
Figure 2006145945
次に、double−and−add−always法の演算アルゴリズムについて説明する。
暗号技術の実装方法の不具合を利用して秘密情報を知る方法をサイドチャネルアタック(Side Channel Atttack、 SCA)と呼ぶ。SCAには秘密情報と相関のある演算の処理時間を利用して攻撃を行なうタイミングアタック(TA:Timing Attack)や、秘密情報と電力消費量の相関を利用して攻撃を行なう単純電力解析(SPA:Simple Power Analysis)や、差分電力解析(DPA:Differential Power Analysis)といった電力攻撃などがある。タイミングアタック(TA)については非特許文献15、電力攻撃については、非特許文献16に説明がある。
単純電力解析(SPA)は秘密鍵のビット情報に依存した演算の消費電力の波形を直接観測することにより、秘密情報を明らかにする実装攻撃である。暗号処理アルゴリズムのSPAに対する耐性を高めるためには、例えば秘密鍵のビット情報と電力波形の相関を発生させないアルゴリズムに設定することが必要となる。また、タイミングアタック(TA)に対する耐性を高めるためには、例えば秘密鍵のビット情報と演算時間の相関を発生させないアルゴリズムに設定することが有効である。
楕円曲線暗号(ECC)、および超楕円曲線暗号(HECC)に対するタイミングアタック(TA)、および電力攻撃(SPA)に対する対策構成としてdouble−and−add−always法が有効であることが知られている。このdouble−and−add−always法についての詳細は、非特許文献17に説明されている。このアルゴリズムでは上記のbinary法の演算アルゴリズムと異なり、乗数としてのスカラー量dの構成bitの値によって演算時間や電力波形が異ならないようにダミー(Dummy)の加算を常に行なう構成としてある。
スカラー倍算のアルゴリズムとして基本的なdouble−and−add−always法の演算アルゴリズム[アルゴリズム2]を以下に示す。
Figure 2006145945
次に、ベースポイントの生成処理について説明する。スカラー倍算の計算を暗号技術で用いる場合、入力に必要な因子Dは、
(1)事前に決めた因子の場合、
(2)事前に決められないランダムに発生する因子の場合、
の2つのタイプに分けることができる。
ここで(1)事前に決めた因子の場合、の入力因子をベースポイントと呼ぶことにする。
一般的なベースポイントの生成アルゴリズムを以下に示す。
(a)
定義体F上の元をランダムにg個選び、g個の超楕円曲線上の点P(i=1、…、g)を生成する。
(a1) ランダムに選んだ各元をx座標x(i=1…g)とし、次に超楕円曲線上に乗るようにxに対応するy座標を求める。
(b)
ベースポイントの因子をD=(U(x)、V(x))とする。
(b1)U(x)=(x−x)(x−x)…(x−x
(b2)V(x)=vg−1g−1+vg−2g−2+…+vの係数vを決定する。例えば生成した点が全て異なる場合、V(x)=yよりvを求めることができる。
(c) 上記アルゴリズムにより生成される因子はweight gの因子となる。
スカラー倍算の計算を暗号技術で用いる場合、入力に必要な因子Dの生成、すなわちベースポイントの生成において、事前に決めた因子を適用する場合、上述の処理(a)〜(c)によってweight gのベースポイントに適用する因子を求めることができる。
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 「D. Mumford, Tata lectures on theta II, Progress in Mathematics, no. 43, Birkhauser, 1984.」 K.Matsuo, J.Chao, and S.Tsujii. Fast Genus two hyperelliptic curve cryptosystems. Technical Report ISEC2001-31, IEICE Japan, 2001. M.Takahashi. Improving Harley algorithms for Jacobians of genus 2 hyperelliptic curves. SCIS2002. (Japanese). T.Lange. Inversion-free arithmetic on genus 2 hyperelliptic curves. Cryptology ePrint Archive, 2002/147, IACR, 2002. T.Sugizaki, K.Matsuo, J.Chao, and S.Tsujii. An extension of Harley addition algtorithm for hyperelliptic curves over finite fields of characteristic two. ISEC2002-9, IEICE, 2001 T.Lange, Efficient arithmetic on genus 2 hyperelliptic curves over finite fields via explicit formulae. Cryptology ePrint Archive, 2002/121, IACR, 2002. J.Kuroki, M.Gonda, K.Masuo, J.Chao and S.Tsujii. Fast genus three hyperellipitc curve cryptosystems. SCIS2002 J.Pelzl, T.Wollinger, J. Guajardo, and C. Paar. Hyperelliptic curve Cryptosystems: Closing the Performance Gap to Elliptic Curves. Cryptology ePrint Archive, 2003/026, IACR, 2003. Y.Miyamoto, H.Doi, K.Matsuo, J.Chao and S.Tsujii. A fast addition algorithm of genus two hyperelliptic curves. SCIS2002. (Japanese). N.Takahashi, H.Morimoto and A.Miyaji. Efficient exponentiation on genus two hyperelliptic curves (II). ISEC2002-145, IEICE, 2003. (Japanese) T.Lange. Weighed coordinate on genus 2 hyperellipitc curve. Cryptology ePrint Archive, 2002/153, IACR, 2002. N. Nagao. Improving group law algorithms for Jacobians of hyperelliptic curves. ANTS-IV, LNCS 1838, pp.439-448, Springer-Verlag, 2000. 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
現在、実用フェーズに入りつつある楕円曲線暗号(ECC)アルゴリズムに対して、その拡張概念である超楕円曲線暗号(HECC)アルゴリズムは、現在、学会レベルで高速アルゴリズムや、その実装方法についての研究が進められている。超楕円曲線暗号(HECC)のスカラー倍算の演算時間は、楕円曲線暗号(ECC)に近づきつつある程度に過ぎず、さらなる高速化が望まれている。
本発明は、このような現状に鑑みてなされたものであり、超楕円曲線暗号(HECC)のスカラー倍算の演算時間を短縮し、高速処理可能な超楕円曲線暗号(HECC)演算処理を実現する暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラムを提供することを目的とする。
本発明は、種数gの超楕円曲線において、種数gより小さいウェイト(weight)の因子(退化因子)をベースポイントとして選択し、ウィンドウ法を適用したスカラー倍算を実行する構成としたものであり、ウィンドウ法において適用する事前算出データを退化因子によって表現し、スカラー倍算における加算演算処理をすべて退化因子+非退化因子の加算処理として実行可能としたことで、安全性の高い高速演算処理を実現する暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラムを提供することを目的とする。
さらに具体的には、本発明は、種数g=2の曲線において,ベースポイントDと5Dが、ウェイト(weight)=1である退化因子を効率的に探索し、これらを事前計算退化因子D,5Dとしたウィンドウ法によるスカラー倍算処理を行なうことで演算の高速化を実現する。また、種数3の曲線において,ベースポイントDと3Dがウェイト(weight)=2である退化因子を効率的に検出し、これらを事前計算退化因子D,3Dとしたウィンドウ法によるスカラー倍算処理を行なうことで演算の高速化を実現する暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラムを提供することを目的とする。
本発明の第1の側面は、
超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理演算方法であり、
超楕円曲線暗号に基づくスカラー倍算処理における入力因子としてのベースポイントと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データとが、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となるベースポイントを生成するベースポイント生成ステップと、
前記ベースポイント生成ステップにおいて生成したベースポイントに基づいて、ウィンドウ法における事前算出データを、退化因子のみからなるデータとして算出する事前算出退化因子データ生成ステップと、
前記事前算出退化因子データ生成ステップにおいて生成した事前算出退化因子データを適用してウィンドウ法を適用したスカラー倍算処理を実行するステップであり、スカラー倍算における加算処理を前記事前算出退化因子を含む加算処理として実行する演算処理ステップと、
を有することを特徴とする暗号処理演算方法にある。
さらに、本発明の暗号処理演算方法の一実施態様において、前記演算処理ステップは、因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を実行する展開処理ステップと、前記展開処理ステップにおいて生成されたwNAF展開処理データに、前記事前算出退化因子データを対応付けた演算を実行するステップと、を有することを特徴とする。
さらに、本発明の暗号処理演算方法の一実施態様において、前記演算処理ステップは、因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を実行する展開処理ステップと、前記展開処理ステップにおいて生成されたwNAF展開処理データに基づいて決定される事前算出データに前記事前算出退化因子データ以外のデータを含む場合、前記wNAF展開データを変換し、前記事前算出退化因子データのみによって構成される変換wNAF展開データを生成する展開処理データ変換ステップと、前記展開処理データ変換ステップにおいて生成された変換wNAF展開データに、前記事前算出退化因子データを対応付けた演算を実行するステップとを有することを特徴とする。
さらに、本発明の暗号処理演算方法の一実施態様において、前記ベースポイント生成ステップは、ベースポイントDと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データnD(ただしnは1以外の整数)とを、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となる設定としてベースポイントを生成するステップであることを特徴とする。
さらに、本発明の暗号処理演算方法の一実施態様において、前記暗号処理演算方法は、種数g(genus)=2の超楕円曲線におけるスカラー倍算処理を実行する方法であり、前記ベースポイント生成ステップは、ベースポイントDと、5Dとを、ウェイト(weight)1の退化因子となるようにベースポイントを生成するステップであり、前記演算処理ステップは、因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を、ウィンドウサイズ=3として実行する展開処理ステップと、前記展開処理ステップにおいて生成されたwNAF展開処理データに基づいて決定される事前算出データに前記退化因子D,5D以外のデータを含む場合、前記wNAF展開データを変換し、前記退化因子D,5Dのみによって構成される変換wNAF展開データを生成する展開処理データ変換ステップと、前記展開処理データ変換ステップにおいて生成された変換wNAF展開データに、前記退化因子D,5Dを対応付け、スカラー倍算処理中の加算処理を退化因子D,5Dを含む加算処理とした演算を実行するステップとを有することを特徴とする。
さらに、本発明の暗号処理演算方法の一実施態様において、前記暗号処理演算方法は、種数g(genus)=3の超楕円曲線におけるスカラー倍算処理を実行する方法であり、前記ベースポイント生成ステップは、ベースポイントDと、3Dとをウェイト(weight)2の退化因子となるようにベースポイントを生成するステップであり、前記演算処理ステップは、因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を、ウィンドウサイズ=2として実行する展開処理ステップと、前記展開処理ステップにおいて生成されたwNAF展開データに、前記退化因子D,3Dを対応付け、スカラー倍算処理中の加算処理を退化因子D,3Dを含む加算処理とした演算を実行するステップとを有することを特徴とする。
さらに、本発明の第2の側面は、
超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理装置であり、
超楕円曲線暗号に基づくスカラー倍算処理における入力因子としてのベースポイントと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データとが、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となるベースポイントを生成するベースポイント生成手段と、
前記ベースポイント生成手段において生成したベースポイントに基づいて、ウィンドウ法における事前算出データを、退化因子のみからなるデータとして算出する事前算出退化因子データ生成手段と、
前記事前算出退化因子データ生成手段において生成した事前算出退化因子データを適用してウィンドウ法を適用したスカラー倍算処理を実行するステップであり、スカラー倍算における加算処理を前記事前算出退化因子を含む加算処理として実行する演算処理手段と、
を有することを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、さらに、因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を実行する展開処理手段を含み、前記演算処理手段は、前記展開処理手段において生成されたwNAF展開処理データに、前記事前算出退化因子データを対応付けた演算を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、さらに、因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を実行する展開処理手段と、前記展開処理手段において生成されたwNAF展開処理データに基づいて決定される事前算出データに前記事前算出退化因子データ以外のデータを含む場合、前記wNAF展開データを変換し、前記事前算出退化因子データのみによって構成される変換wNAF展開データを生成する展開処理データ変換手段とを含み、前記演算処理手段は、前記展開処理データ変換手段において生成された変換wNAF展開データに、前記事前算出退化因子データを対応付けた演算を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記ベースポイント生成手段は、ベースポイントDと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データnD(ただしnは1以外の整数)とを、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となる設定としてベースポイントを生成する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、種数g(genus)=2の超楕円曲線におけるスカラー倍算処理を実行する構成であり、前記ベースポイント生成手段は、ベースポイントDと、5Dとを、ウェイト(weight)1の退化因子となるようにベースポイントを生成する構成であり、因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を、ウィンドウサイズ=3として実行する展開処理手段と、前記展開処理手段において生成されたwNAF展開処理データに基づいて決定される事前算出データに前記退化因子D,5D以外のデータを含む場合、前記wNAF展開データを変換し、前記退化因子D,5Dのみによって構成される変換wNAF展開データを生成する展開処理データ変換手段と、前記展開処理データ変換手段において生成された変換wNAF展開データに、前記退化因子D,5Dを対応付け、スカラー倍算処理中の加算処理を退化因子D,5Dを含む加算処理とした演算を実行する演算処理手段とを有することを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、種数g(genus)=3の超楕円曲線におけるスカラー倍算処理を実行する構成であり、前記ベースポイント生成手段は、ベースポイントDと、3Dとをウェイト(weight)2の退化因子となるようにベースポイントを生成する構成であり、因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を、ウィンドウサイズ=2として実行する展開処理手段と、前記展開処理手段において生成されたwNAF展開データに、前記退化因子D,3Dを対応付け、スカラー倍算処理中の加算処理を退化因子D,3Dを含む加算処理とした演算を実行する演算処理手段とを有することを特徴とする。
さらに、本発明の第3の側面は、
超楕円曲線暗号に基づく暗号処理演算をコンピュータにおいて実行させるコンピュータ・プログラムであり、
超楕円曲線暗号に基づくスカラー倍算処理における入力因子としてのベースポイントと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データとが、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となるベースポイントを生成するベースポイント生成ステップと、
前記ベースポイント生成ステップにおいて生成したベースポイントに基づいて、ウィンドウ法における事前算出データを、退化因子のみからなるデータとして算出する事前算出退化因子データ生成ステップと、
前記事前算出退化因子データ生成ステップにおいて生成した事前算出退化因子データを適用してウィンドウ法を適用したスカラー倍算処理を実行するステップであり、スカラー倍算における加算処理を前記事前算出退化因子を含む加算処理として実行する演算処理ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の構成によれば、超楕円曲線暗号に基づくスカラー倍算処理におけるベースポイントDと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データとを、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となる設定とし、ウィンドウ法を適用したスカラー倍算処理における加算処理を事前算出した退化因子を含む加算処理によって実行する構成としたので、高速演算が実現されるとともに、退化因子を含まない加算処理が混在しないので加算処理の演算処理時間や、演算処理に伴う消費電力の差異が発生せず、演算シーケンスの解析としてのSPA、TA解析に対する耐性も損なわれることのない安全で高速な演算が実現される。
さらに、本発明の構成によれば、因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を実行し、展開処理において生成されたwNAF展開処理データに基づいて決定される事前算出データに、退化因子データ以外のデータを含む場合、wNAF展開データを変換し、退化因子データのみによって構成される変換wNAF展開データを生成して、変換wNAF展開データに退化因子データを対応付け、スカラー倍算における加算処理を非退化因子+退化因子の加算処理として実行する構成としたので、演算シーケンスの解析としてのSPA、TA解析に対する耐性の損なわれない安全で高速な演算が実現する。
以下、本発明の暗号処理装置および暗号処理演算方法、並びにコンピュータ・プログラムの詳細について説明する。なお、説明は、以下の項目に従って行なう。
1.本発明の基礎技術としての超楕円曲線暗号アルゴリズムの高速化手法
(1A)退化因子をベースポイントとして適用した処理例
(1B)ウィンドウ(Window)法を適用した処理例
2.本発明の処理例としての退化因子をベースポイントとして設定し、かつウィンドウ(Window)法を適用した処理例
3.暗号処理装置の機能構成について
4.電子署名生成および検証アルゴリズムにおける本発明の適用例
5.暗号処理装置のハードウェア構成例
[1.本発明の基礎技術としての超楕円曲線暗号アルゴリズムの高速化手法]
まず、本発明の基礎技術としての超楕円曲線暗号アルゴリズムの高速化手法として、以下の2つの手法について説明する。
(1A)退化因子をベースポイントに適用した処理例
(1B)ウィンドウ(Window)法を適用した処理例
(1A)退化因子をベースポイントとして適用した処理例
まず、退化因子をベースポイントとして適用した処理例について説明する。なお、本手法は、本願特許出願人が先に出願した特許出願である特願2004−71757において開示した手法である。
本手法は、楕円曲線暗号を一般化した超楕円曲線暗号(HECC:Hyper Elliptic Curve Cryptography)についての高速化演算手法である。前述したように、超楕円曲線では曲線を特徴づける値は種数(genus)gである。pを素数、nを正の整数、q=pとする。このとき有限体Fq上で定義される種数gの超楕円曲線Cは以下の方程式、
+h(x)y=f(x)
で定義される。ここで、h(x),f(x)∈Fq[x],f(x)は、次数2g+1のmonic多項式である。
超楕円曲線C上の点P=(x、y)に対してoppositeな点−Pは(x、y+h(x))として定義される。P=−Pである点を分岐点(ramification point)と呼ぶ。
超楕円曲線暗号の定義体の演算サイズ(ビット長)は楕円曲線暗号と同等の安全性を仮定した場合、楕円曲線の定義体の演算サイズに比べて1/gに小さくなることが知られている。演算サイズが小さいことは実装上メリットがあり、超楕円曲線暗号の利点の一つして挙げられる。
前述したように、超楕円曲線暗号では点の形式的和である因子(divisor)をDとし、スカラー倍算kDで定義される因子をDとすると、Dからkを求める問題は超楕円曲線におけるヤコビ多様体上の離散対数問題として公開鍵暗号として用いることができる。
因子(divisor)は、前述したように、以下の形式で表現することができる。
Figure 2006145945
但しP=(x、y)かつi≠jに対してP≠Pである。この形式の因子を半被約因子(semi reduced divisor)とよぶ。また、ΣmをDのウェイト(weight)と呼ぶ。さらにウェイト(weight)が種数g以下である半被約因子を被約因子(reduced divisor)と呼ぶ。
超楕円曲線のヤコビ(Jacobi)多様体上の任意の半被約因子Dは下記の多項式U、V∈Fq[x]を用いてD=(U、V)として表現できる。これをマンホード(Mumford)表現と呼ぶ。
Figure 2006145945
種数(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表現、Weighted Coordinateがある。変形Mumford表現はECC(楕円曲線暗号)でいうプロジェクティブ(projective)座標に相当し、Mumford表現(U、V)に定数Z倍し、(U、V、Z)で表現するものである。
Weighted Coordinateも同様にMumford表現に複数の定数(Z1、Z2)をかけることで(U、V、Z1、Z2)で表現する方法である。いずれも下記に述べるHarleyのアルゴリズムの計算量を削減するための手法として用いられている。
前述したように、スカラー倍算の計算を暗号技術で用いる場合、入力に必要な因子Dは、
(1)事前に決めた因子の場合、
(2)事前に決められないランダムに発生する因子の場合、
の2つのタイプに分けることができる。
ここで(1)事前に決めた因子を適用する場合、この入力因子がベースポイントとなる。
なお、前述のように、本発明の説明において、因子Dは、ウェイト(weight)が種数g以下である半被約因子としての被約因子(reduced divisor)である。また、ウェイト(weight)が種数gに等しいものを除いた因子、すなわち、被約因子(reduced divisor)のうち、ウェイト(weight)が種数gより小さい因子を退化因子(degenerate divisor)と呼ぶ。
例えば、
種数g=2の場合、退化因子はウェイト(weight)=1の因子、
種数g=3の場合、退化因子はウェイト(weight)=1,2の因子、
となる。
種数g=2の場合と、種数g=3の場合において、退化因子(degenerate divisor)をマンホード(Mumford)表現を用いて示すと、以下のように表される。
(ア)種数2の退化因子:(U,V)=(x+u,v)
(イ)種数3の退化因子(Weight1):(U,V)=(x+u,v
(ウ)種数3の退化因子(Weight2):(U,V)=(x+ux+u,vx+v
前述したように、一般的なベースポイントの生成アルゴリズムは、以下の処理によって実行される。
(a) 定義体F上の元をランダムにg個選び、g個の超楕円曲線上の点P(i=1、…、g)を生成する。
(a1) ランダムに選んだ各元をx座標x(i=1…g)とし、次に超楕円曲線上に乗るようにxに対応するy座標を求める。
(b) ベースポイントの因子をD=(U(x)、V(x))とする。
(b1)U(x)=(x−x)(x−x)…(x−x
(b2)V(x)=vg−1g−1+vg−2g−2+…+vの係数vを決定する。例えば生成した点が全て異なる場合、V(x)=yよりvを求めることができる。
(c) 上記アルゴリズムにより生成される因子はweight gの因子となる。
このように、種数gの超楕円曲線においてベースポイントを生成する従来のアルゴリズム及び装置は通常、ウェイト(weight)=gの因子を生成する。
本願特許出願人の先願特許として出願済みの特願2004−71757において説明している退化因子をベースポイントに適用した処理例は、種数gの超楕円曲線において、gより小さいウェイト(weight)=gの因子、すなわち退化因子(degenarate divisor)を生成して、これをベースポイントとして設定して処理を行なう。
本処理例を適用して、スカラー倍算処理を実行する場合の全体シーケンスについて、図3を参照して説明する。退化因子(degenarate divisor)をベースポイントに適用したスカラー倍算処理例においては、まず、ステップS101において、種数gの超楕円曲線において、gより小さいウェイト(weight)=gの因子、すなわち退化因子(D)を生成する。すなわち、
種数g=2の場合、ウェイト(weight)=1の因子、
種数g=3の場合、ウェイト(weight)=1,2の因子、
を生成する。
次に、ステップS102において、スカラー倍算(D=dD)に適用する乗数としてのスカラー値:dを2進展開する。ステップS103において、2進展開したスカラー値:dと、ステップS101において生成した退化因子(D)を適用したスカラー倍算演算処理(D=dD)を実行する。スカラー倍算演算処理(D=dD)は、例えば前述したbinary法や、double−and−always法を適用して実行する。
ステップS101において実行する処理、すなわち、種数gの超楕円曲線において、gより小さいウェイト(weight)=gの退化因子(D)を生成する処理の詳細について説明する。
本処理例では、種数gの超楕円曲線におけるベースポイントを、
<g
が成立するウェイト(weight)=gの退化因子に設定する。この退化因子を適用したベースポイント設定により、超楕円曲線暗号におけるスカラー倍算を高速化させる。
種数gの超楕円曲線を適用した超楕円曲線暗号で適用する因子は、多くの場合、種数gと同じweightを持った因子である。つまり、退化因子ではない因子である。ランダムに因子を生成した場合,退化因子になる確率は、有限体の元の数をqとするとO(1/q)の確率である。例えば種数2の場合、qは暗号用途で使うことを考えると、280程度の大きな値になるため、ランダムに因子を選んだ場合、退化因子になる確率は非常に少ない。しかし固定点のベースポイントのスカラー倍算の場合、意図的に退化因子を作ることができる。退化因子を生成する方法について図4を参照して説明する。
種数gの超楕円曲線においてウェイト(weight)=gの因子をベースポイントとして生成する従来のアルゴリズムでは、超楕円曲線上の点をg個選ぶ処理を実行するのに対して、本処理例のベースポイント生成アルゴリズムでは、超楕円曲線上の点をg個、選択する処理を実行する。但しgは1≦g<gを満たす値である。本処理例に従ったベースポイント生成は、以下の処理手順で実行する。
(ステップS121)
定義体としての有限体F上の元をランダムにg個選び、g個の超楕円曲線上の点P(i=1、…、g)を生成する。
(1)ランダムに選んだ各元をx座標x(i=1…g)とし、次に超楕円曲線上に乗るようにxに対応するy座標を求める。
(ステップS122)
ベースポイントの因子をD=(U(x)、V(x))とする。
(1)U(x)=(x−x)(x−x)…(x−xg0
(2)V(x)=vg0−1g0−1+vg0−2g0−2+…+vの係数vを決定する。例えば生成した点が全て異なる場合、V(x)=y(i=1…g)よりvを求めることができる。
上述のステップの実行により、種数gの超楕円曲線において、ウェイト(weight)がgより小さいウェイト(weight)=gである因子をベースポイントとして生成する。
例えば種数g=3の超楕円曲線の場合、ベースポイントは、従来の手法によれば、通常weight 3の因子を用いるのに対して、本処理例に従ったベースポイント設定アルゴリズムを適用した場合、種数g=3より小さいウェイト、すなわちウェイト(weight)=1もしくはウェイト(weight)=2の因子をベースポイントとする。
また、例えば種数g=2の超楕円曲線の場合、ベースポイントは、従来の手法によれば、通常weight 2の因子を用いるのに対して、本処理例に従ったベースポイント設定アルゴリズムを適用した場合、種数g=2より小さいウェイト、すなわちウェイト(weight)=1の因子をベースポイントとする。
図4を参照して説明したアルゴリズムを適用して、種数gの超楕円曲線において、gより小さいウェイト(weight)=gである因子をベースポイントとして生成した場合、この因子を適用して実行するスカラー倍算では、スカラー倍算実行アルゴリズム中で用いる加算公式が、従来の種数gに等しいウェイトを持つベースポイントを適用した場合とは異なってくる。
すなわち、種数gより小さいウェイト(weight)の因子をベースポイントに選んだ場合、スカラー倍算中の加算は、HarleyADDではなくなり、「weight gの因子+gより小さいweightの因子の加算」になる。この「weight gの因子+gより小さいweightの因子の加算」にかかる計算コストは因子を表現する多項式の次数が下がるため、HarleyADDよりも計算量が少なくなり、スカラー倍算の処理時間を短くすることができる。
退化因子をベースポイントにセットした場合、単純電力解析(SPA)に対する耐性のあるスカラー倍算のアルゴリズムとして基本的なdouble−and−add−always法の演算アルゴリズム[アルゴリズム3]を以下に示す。
Figure 2006145945
本処理例では、上記アルゴリズムに従った演算が実行されることになる。通常、退化因子との加算は退化因子でないものどうしの加算よりも計算量が少なくなるため、意図的に退化因子を作らない場合に比べてスカラー倍算を高速に演算することができる。
(1B)ウィンドウ(Window)法を適用した処理例
次に、本発明の基礎技術としての超楕円曲線暗号アルゴリズムの高速化手法処理のもう1つの処理例であるウィンドウ(Window)法を適用した処理例について説明する。
ウィンドウ(Window)法を使った単純電力解析に耐性のある方法として、例えば、[K. Okeya and T. Takagi, The Width-w NAF Method Provides Small Memory and Fast Elliptic Scalar Multiplications Secure against Side Channel Attacks, CT-RSA 2003, LNCS 2612, pp328-343, Springer-Verlag, 2003]に記載されている。なお、超楕円曲線暗号は、楕円曲線暗号を一般化した方式であり、このウィンドウ法を適用した高速化手法がギャップなしに適用できる。
図5を参照して、ウィンドウ法を適用して、スカラー倍算処理を実行する場合の全体シーケンスについて説明する。
ウィンドウ法には、いくつかの種類がある。最も基本的なものは、因子Dに対するスカラー倍算[D=dD]において適用する乗数として設定されるスカラー値:dを2進表現に展開し、2進表現データの最上位ビット〜最下位ビットを所定の桁数で分割して分割ブロックを生成し、各分割ブロックに設定される乗数dの構成ビットと被乗数Dとの乗算データdDを事前に算出してテーブル化して保持し、実際のスカラー倍算処理に際しては、テーブルを参照して事前算出データを取得することで演算を省略して高速化を図るものである。
例えば、スカラー倍算[D=dD]において適用する乗数として設定されるスカラー値:d=2674・・・223(10進表現)であるとき、この2進展開は、例えば、
d=1110101001・・・00101110011
のように表現されたとする。
この場合、上位から、例えば3ビットずつのウィンドウ(ウィンドウサイズ:w=3)を設定する。
[111],[010],[100]・・・
これらの各構成ビットと因子Dとの乗算結果を、予め算出してテーブルに記憶しておけば、演算を実行することなくテーブルに記録された事前算出データを抽出するのみでよく、演算が簡略化され高速化処理が可能となる。なお、事前に算出しテーブル化するデータは、様々な組み合わせが提案されている。
テーブルに記録する事前算出データを削減した方式として、NAF展開方式がある。これは、乗数(d)をNAF(Non−Adjacent form)展開(=非隣接型符号付き2進数展開)する。NAF展開は、乗数(d)を0でないビット(1または−1)が連続しないような符号付き2進数表現とする展開処理であり、0でないビットの数が最小となる。
NAF展開では、乗数dの2進展開データについて、連続する[1]のデータ部を変換するため[−1]を適用して、0,1,−1のビットデータ、すなわち、非隣接型符号付き2進数展開を行なう。
さらに、事前に算出しテーブル化するデータを削減した方式として、wNAF(width−wNon−Adjacent Form)法が提案された。この詳細は、前述の[K. Okeya and T. Takagi, The Width-w NAF Method Provides Small Memory and Fast Elliptic Scalar Multiplications Secure against Side Channel Attacks, CT-RSA 2003, LNCS 2612, pp328-343, Springer-Verlag, 2003]に記載されている。
wNAF展開方式では、所定の桁数でなる数値ブロックのうち、被乗数(D)に乗算した値、例えば±D,±3D,±5D,・・・±(2−1)Dを事前計算してこれをテーブルに保持する形式とする。乗数dの2進展開データについてデータ変換を実行して、所定桁数(ウィンドウサイズ)からなる数値ブロックの各々を、
|00・・0x|00・・0x|00・・0x|・・
ただし、xは奇数(±1,±3・・)
となるように設定する。
このような設定とすることで、テーブルに保持する事前計算データを
±D,±3,±5D,・・・±(2−1)D
のような限定されたデータとすることができ、事前計算データを削減することができる。
図5に示すフローに従って、ウィンドウ法(wNAF法)を適用したスカラー倍算処理の全体シーケンスについて説明する。ステップS151において、種数gの超楕円曲線において、ランダムに因子を生成する。このときの生成因子は、退化因子を選択した因子生成処理としては実行されない。従って、多くの場合gに等しいウェイト(weight)の因子が生成される。この生成因子をベースポイントとする。
次に、ステップS152において、上述した事前算出データを算出する。ここでは、ウィンドウサイズ:wとして、符号付きの奇数1,3,・・・2−1を適用し、事前算出データとして、これらの符号付き奇数とベースポイント因子Dとの乗算値、すなわち、
±D,±3,±5D,・・・±(2−1)D
の各乗算値を事前算出データとして算出し、メモリに保持する。
次に、ステップS153において、スカラー倍算[D=dD]において適用する乗数として設定されるスカラー値:dをwNAF展開する。wNAF展開とは、上述したように、乗数として設定されるスカラー値:dを、
|00・・0x|00・・0x|00・・0x|・・
ただし、xは奇数(±1,±3・・)
となる分割ブロックに分割する処理であり、ここでは、スカラー値:dを±の符号付きの奇数によって構成される固定幅ウィンドウサイズ(所定桁数)からなるブロックに展開する。
スカラー値:dのwNAF展開のアルゴリズム[アルゴリズム4]を以下に示す。
Figure 2006145945
次に、ステップS154において、スカラー倍算[D=dD]の演算処理を実行する。この演算処理では、wNAF展開したスカラー値:dと、ステップS152において、事前算出済みの乗算値算出データ:±D,±3,±5D,・・・±(2−1)D、を適用した演算処理が実行される。
スカラー倍算[D=dD]の演算アルゴリズム[アルゴリズム5]を以下に示す。
Figure 2006145945
本処理例では、ステップS153のwNAF展開により、スカラー値:dが、符号付奇数1,3、・・・2−1と0によって示されるブロックデータとして展開される。スカラー値を2進展開した場合と同様にスカラー値に現れる非零の数が少ないほど,スカラー倍算の計算量を削減することができる.本処理例は、非零の頻度を最も少なくすることができる方法である.また,展開したパターンは常にDD・・DAD・・・DAのパターン(Dが因子の2倍算、Aが因子の加算)になるため、単純電力解析(SPA)に対して耐性のある方式となる。また、ステップS154で実行するスカラー倍算はパターン自体にSPA耐性があるので,2進展開した場合のDouble-and-Add-Always法のようにダミー演算を伴わないことが特徴である。
[2.本発明の処理例としての退化因子をベースポイントとして設定し、かつウィンドウ(Window)法を適用した処理例]
次に、本発明の処理例として、退化因子をベースポイントとして設定し、かつウィンドウ法(wNAF)を適用した処理例について説明する。上述した2つの超楕円曲線暗号アルゴリズムの高速化手法、すなわち、
(1A)退化因子をベースポイントに適用した処理例
(1B)ウィンドウ(Window)法を適用した処理例
は、それぞれ、異なる手法によって超楕円曲線暗号アルゴリズムの高速化を実現している。
上述のウィンドウ(Window)法は、固定因子として退化因子ではないベースポイントを適用して高速化を図っている。このウィンドウ(Window)法に、上述した処理例[(1A)退化因子をベースポイントに適用した処理例]で説明した退化因子をベースポイントとして使うことができれば、前述の[(1B)ウィンドウ(Window)法を適用した処理例]において説明した図5のステップS154の処理において実行する加算処理、具体的には、前述のスカラー倍算[D=dD]の演算アルゴリズム[アルゴリズム5]における加算演算処理(2.2)のステップにおいて実行する加算処理を退化因子を適用した加算演算として実行することができる。退化因子を含む加算は、退化因子を含まない加算に比べて高速に演算することができるため、ウィンドウ(Window)法を適用した処理のさらなる高速化が実現される。
しかし、[(1B)ウィンドウ(Window)法を適用した処理例]において、退化因子をベースポイントとして適用し、暗号解析に対して安全な処理構成とするためには、前述のウィンドウ法の適用例で説明した図5のステップS152の処理において算出する事前計算点:D〜(2−1)D(ただし、wはwindow size)の因子が全て退化因子である設定とすることが必要である。
ベースポイントD以外の因子、すなわち事前算出データを退化因子ではない因子に設定し、ウィンドウ(Window)法を適用することも可能ではあるが、このような処理構成は様々な攻撃に対する脆弱化を招き、好ましくない。すなわち、このようにベースポイントとしての退化因子を適用した加算処理と、退化因子以外の因子による加算処理を混在させた演算処理を実行する構成とした場合、スカラー倍算[dD]の計算中に行う因子の加算処理がベースポイントDを含む場合とそうでない場合とにおいて消費電力や計算時間が明らかに異なってしまい、単純電力解析(SPA)やタイミングアタック(TA)に対しての安全性が損なわれる可能性があるからである。
従って、攻撃に対する耐性を維持した構成とするためには、事前計算点は全て退化因子とする必要があるが、ベースポイントを退化因子Dとして設定したとき、事前計算点、例えば±D,±3,±5D,・・・±(2−1)Dのすべてが退化因子となるベースポイントを全数探索して見つけることは技術的に非常に困難である。なぜなら退化因子は全体の因子の中での存在確率が非常に低いため、複数の因子が同時に退化因子である確率はさらに低くなるからである。
例えば種数(genus)=2の曲線を考えるとヤコビ多様体の位数はHasseの定理から#J〜q程度存在する。種数g=2の曲線において、g=2未満のウェイト(weight)=1を持つ退化因子は高々q個しか存在しないから、ヤコビ多様体中からランダムに2つの因子を選んで両方とも退化因子である確率は1/qになる。qは暗号で使う場合、280程度の大きな数であるから、ランダムに因子を発生させて全数探索しても見つけることはきわめて困難である。種数(Genus)=3の場合も同様である。
従って、上述した[(1B)ウィンドウ(Window)法を適用した処理例]において、退化因子のベースポイントが使えるように拡張するためには事前点として持っておくべき、ベースポイントとベースポイントの奇数倍がすべて退化因子になるようなベースポイントを効率的に見つける方法を構築することが必要となる。
本発明では、上記課題を具体的に解決する以下の2つの処理例A,Bを提案する。
(処理例A)種数(g)2の曲線において、ベースポイントDと5Dとの双方がウェイト(weight)=1となる退化因子を効率よく探索し、探索した退化因子D,5Dのみを適用して、wNAF展開データを変換し、変換したwNAF展開データを適用してスカラー倍算を実行する処理。
(処理例B)種数(g)3の曲線において、ベースポイントDと3Dとの双方がウェイト(weight)=2となる退化因子を効率よく探索し、探索した退化因子D,3Dのみを適用して、wNAF展開データを変換し、変換したwNAF展開データを適用してスカラー倍算を実行する処理。
以下、これらの2つの処理例(処理例A),(処理例B)について、順次、説明する。
[(処理例A)種数(g)2の曲線において、ベースポイントDと5Dとの双方がウェイト(weight)=1となる退化因子を効率よく探索し、探索した退化因子D,5Dのみを適用して、wNAF展開データを変換し、変換したwNAF展開データを適用してスカラー倍算を実行する処理]
まず、種数(g)2の超楕円曲線において、ウィンドウ(Window)法を適用するとともに、退化因子Dをベースポイントとして設定し、ウィンドウ法における事前計算データを全て退化因子に基づいて算出可能に設定し、スカラー倍算における加算処理をすべて非退化因子+退化因子の加算処理として実行することを可能とした構成例について説明する。
本処理例では、種数(g)2の超楕円曲線において、ベースポイント[D]と、[5D]とが共に退化因子、すなわちウェイト=1の退化因子となるような因子を効率的に検出し、これらのD,5Dを適用して、wNAF展開データを変換し、退化因子のみからなる変換wNAF展開データを適用してスカラー倍算を実行する。
前述したように、種数g=2の曲線において、g=2未満のウェイト(weight)=1を持つ退化因子は高々q個しか存在しないから、ヤコビ多様体中からランダムに2つの因子を選んで両方とも退化因子である確率は1/qになり、ランダムな探索処理によって、ベースポイントD、5Dが同時に退化因子になるベースポイントDを探索することは確率的に不可能である。
本処理例では、D、5Dが共に退化因子となるベースポイントDの効率的探索を実現する。さらにスカラー倍算の処理においては、事前計算因子として、D、5Dしか用意できないため、これらのD,5Dを適用してウィンドウ法において必要とする事前計算因子のすべてを算出する。本処理例Aは以下の3つの処理から構成される。
(処理A1)ベースポイントDと5Dがweight1の退化因子であるDを効率よく見つける処理
(処理A2)退化因子D,5Dを適用して、wNAF展開データを変換し、退化因子のみからなる変換wNAF展開データを生成する処理
(処理A3)退化因子D、5Dのみによって表現された事前算出データを適用したスカラー倍算演算処理
以下、(処理A1)〜(処理A3)の順に、各処理の詳細について説明する。
(処理A1)ベースポイントDと5Dをweight 1である因子を効率よく見つける処理
ベースポイントDと5Dの双方が退化因子、すなわち共にウェイト(w)=1である因子の探索処理は、Dをベースポイントとして5Dを計算するまでのHarleyの公式を使ってw(D)=w(5D)=1となるDの条件を導く方法を適用した処理として実行される。なお、w(D)=w(5D)=1は、因子D,5Dが共にウェイト(w)=1であることを意味する。
前述したようにHarleyのアルゴリズムは定義体を素体、種数2の曲線、因子の表現はMumford表現を用いている。種数(genus)2の任意の被約因子Dはマンホード(Mumford)表現を用いると、有限体Fq上の元を係数に持つ2次以下の多項式の組、すなわち、
(U、V)=(x+ux+u、vx+v
として表現することができる。
Harleyの公式を使ってw(D)=w(5D)=1となるDの条件を導くためにDから5Dを計算する加算連鎖(addition chain)を考える。ここでD、2D、4Dの因子のMumford表現を、
D=(x+u,v)
2D=(x+ux+u,vx+v
4D=(x+wx+w,zx+z
とする。
このとき、D→2D、2D→4D、4D→5Dの算出処理に対応するHarley公式は、
D→2D:ExHarDBL1→2 (Table 8)
2D→4D:HarleyDBL (Table 2)
4D→5D:ExHarADD2+1→1
である。
上記の各Harley公式中、4D→5D:ExHarADD2+1→1は、因子D、4Dの加算処理として実行され、先に図1を参照して説明した種数g=2のHarleyアルゴリズムの処理における処理としては、weight1+weight2の加算処理に相当するので対応する公式は、図1に示されるExHarADD2+1→2もしくは例外処理3である。
上記の各Harley公式中、
D→2D:ExHarDBL1→2、および
2D→4D:HarleyDBL
の各アルゴリズムを、以下のテーブル[Table8]、[Table2]に示す。
Figure 2006145945
Figure 2006145945
ベースポイントDから、そのスカラー倍によって算出される5Dは、上記処理、すなわち、D→2D→4D→5Dによって算出可能であり、この算出処理過程において求められる関係式を適用して、D,5Dが退化因子、すなわちウェイト=1となるベースポイントDを検出する。ベースポイントDの探索処理の詳細について、図6を参照して説明する。
(ステップ1)
因子2DのMumford表現、すなわち、
2D=(x+ux+u0,vx+v
のMumford表現中のパラメータ:u、u、v、vをDのMumford表現[D=(x+u,v)]に適用されるu、vで表現する。
図6に示すステップ1(step1)に示すように、
=u(u,v)
=u(u,v)
=u(u,v)
=u(u,v)
とする。D→2Dの処理で適用する公式、すなわち、前に示したテーブル8に示す[ExHarDBL1→2]の公式から導かれた関係式を以下の(式1)に示す。
Figure 2006145945
・・・(式1)
(ステップ2)
因子4DのMumford表現、
4D=(x+wx+w0,zx+z
のw、w、z、zをDのMumford表現[D=(x+u,v)]に適用されるu、vで表現する。
図6に示すステップ2(step2)に示すように、
=w(u,v)
=w(u,v)
=z(u,v)
=z(u,v)
とする。2D→4Dの処理で適用する公式、すなわち、テーブル2に示す[HarleyDBL]の公式中、Table2に示すstep1のr、step3のt、tとu、u、v、vの関係式を導き、w、w、z、zをu、u、v、v、t、t、rで表現する。導かれた関係式を以下の(式2)に示す。
Figure 2006145945
・・・(式2)
さらに、上記(ステップ1)の結果を代入することでw、w、z、zをDのMumford表現に適用されるu、vだけで表現する。
(ステップ3)
5D=D+4Dがweight1になる条件を用いてuだけの1変数方程式を導く。
D+4Dを計算する方程式はExHarADD1+2→1である。これは、上述したように、先に説明した図1のHarleyの加算公式の分岐処理において、因子D、4Dの加算処理は、weight1+weight2の加算処理に相当するので対応する公式は、図1に示されるExHarADD2+1→2もしくは例外処理3である。
ExHarADD2+1→2のアルゴリズムを、以下のテーブル[Table3]に示す。
Figure 2006145945
上記テーブル3(Table3)から理解されるようにExHarADD2+1→2の出力が退化因子(ウェイト=1)になる分岐はないので、出力が退化因子になる条件を求めるには例外処理3を考える必要がある。例外処理3において、5Dが退化因子、すなわち、ウェイト=1である因子になる条件は、Dおよび4Dが以下の[条件]を満足する場合である。すなわち、
[条件]
D=P−P
4D=−P+Q−2P
を満足する場合である。
この場合、以下の2つの条件が導かれる。この2つの条件に対応してベースポイントDのu、vに関する2つの方程式を成立する。
(条件1)
(u、v)×u+w(u、v)=0
・・・(式3a)
(条件2)
(u、v)×u+z(u、v)=v+h(u)
・・・(式4a)
条件1、2に対応する方程式をそれぞれ(式3a)、(式4a)とする。この条件1,2が図6のステップ3(step3)に示す条件である。
上記式3a、式4aはそれぞれDのMumford表現としてのD=(x+u,v)に適用されるu、vに関する方程式である。しかし、以下に述べる方法によって上記式3、式4aは、ともにuに関する1変数方程式に変形することができる。
すなわち、超楕円曲線の定義式からvは、
=h(u)v+f(u)
である。
この式を使うと、vの2次以降の式は全てvの1次式に変形することができる。これを繰り返すことによってvの次数を下げていくことができる。これを用いて、式3aを形式的に表現すると、
(u、v)=a(u)+b(u)v=0
の形式に変形することができる。さらにGの共役な多項式を
(u、v)=a(u)+b(u)(v+h(u))
と定義すると、
=G×G'=a +ah+b fとなり、最終的にuだけの1変数方程式として下記の(式3b)、すなわち、 N(u)=0
・・・(式3b)
を導くことができる。
式4aについても同様の処理を行う。同様に導かれたuの1変数方程式を、
(u)=0
・・・(式4b)
とする。
上記式(式3b)、(式4b)中のN、Nは具体的に上述したステップに沿って計算していくと、それぞれ53次、72次のuの多項式となる。1変数の有限次数の多項式方程式は一般に多項式時間で解けることが知られている。これらの多項式それぞれについて、uの解を求める。
(ステップ4)
ステップ3で求めた2つの方程式の解が共通解を持つ場合、その共通解を因子のuとする。
算出したuに基づいて、超楕円曲線の式v+h(u)=f(u)に、uを代入して、vを求める。
算出したu、vに基づいて、ベースポイントDとしての退化因子:D=(x−u、v)を決定する。
このようにして算出されたベースポイント:Dは、ウェイトが1の退化因子であり、また、5Dについてもウェイト=1の退化因子であることが保証される。
図7に示すフローチャートを参照して、退化因子D、5Dを生成する処理手順について説明する。まず、ステップS201において、超楕円曲線のパラメータを入力する。前述したように、超楕円曲線では曲線を特徴づける値は種数(genus)gである。pを素数、nを正の整数、q=pとする。このとき有限体Fq上で定義される種数gの超楕円曲線Cは以下の方程式、
+h(x)y=f(x)
で定義される。ここで、h(x),f(x)∈Fq[x],f(x)は、次数2g+1のmonic多項式である。
ここでは超楕円曲線の方程式をy+h(x)=f(x)、
h(x)=x+hx+h
f(x)=x+f+fx+f
としている。
このように、種数g=2の超楕円曲線は、パラメータとしてh,h,f,f,fを設定することで定義される。
ステップS202において、5D=D+4Dがweight1になる条件を用いてuだけの1変数方程式、すなわち、上述した式、
(u)=0 ・・・(式3b)
(u)=0 ・・・(式4b)
から共通解(u)を求める。
これは、前述したように、因子D、4Dの加算処理として実行される5D=D+4Dの処理において、図1に示す例外処理3において、5Dが退化因子、すなわち、ウェイト=1である因子になる条件として設定される[条件]から導かれる式である。すなわち、
[条件]
D=P−P
4D=−P+Q−2P
から下記の条件式、すなわち、
(条件1)
(u、v)×u+w(u、v)=0
・・・(式3a)
(条件2)
(u、v)×u+z(u、v)=v+h(u)
・・・(式4a)
を導き、さらに、超楕円曲線の定義式
=h(u)v+f(u)
を適用して、式3a,式4aにおけるvの2次以降の式を全てvの1次式に変形する処理を行なうことによってvの次数を下げ、式3aを、
(u、v)=a(u)+b(u)v=0
の形式に変形し、さらにGの共役な多項式を
(u、v)=a(u)+b(u)(v+h(u))
と定義することで、
=G×G'=a +ah+b fとして、最終的にuだけの1変数方程式として、
(u)=0 ・・・(式3b)
を導き、同様の処理によって、
(u)=0 ・・・(式4b)
を導いたものである。
ステップS202では、これらの式、
(u)=0 ・・・(式3b)
(u)=0 ・・・(式4b)
から共通解(u)を求める。
これらの式に共通解が存在しない場合(ステップS203:No)は、ステップS201に戻り、パラメータ:h,h,f,f,fを再設定して、共通解(u)の算出を実行する。
共通解(u)が算出される(ステップS203:Yes)と、ステップS204に進み、超楕円曲線の式:v+h(u)=f(u)に代入してvを求める。さらに、ステップS205において、算出したu,vに基づいて、ベースポイントとしての退化因子D=(x−u、v)を決定する。
(処理A2)退化因子D,5Dを適用して、wNAF展開データを変換し、退化因子のみからなる変換wNAF展開データを生成する処理
上述した処理によって、種数(g)=2の超楕円曲線において、ウェイト(weight)=1となる退化因子としてのベースポイントD、5Dを検出することができる。次に、これらの因子D,5Dを適用して単純電力解析(SPA)などの解析攻撃に対する耐性を保持したwNAF(width−wNon-Adjacent form)展開データの生成を行なう処理について説明する。
wNAF展開とは、前述したウィンドウ法の処理において説明したように、スカラー倍演算処理[D=dD]において適用するスカラー値[d]を所定桁数からなる分割ブロックに分割する処理であり、乗数として設定されるスカラー値:dを、
|00・・0x|00・・0x|00・・0x|・・
ただし、xは奇数(±1,±3・・)
となる分割ブロックに分割する処理である。
上述した処理によって検出した退化因子D、5Dのみでは、SPA耐性のあるスカラー倍算を行うことができない。例えば前述したウィンドウ法(wNAF)において、スカラー値[d]の分割ブロックサイズ(桁数)を2とした場合、
|01|、|03|、|0(−1)|、|0(−3)|
に対応するブロック値に基づく算出データとして、±D,±3Dの各値を事前算出データとしてテーブルに保存することが必要となる。
また、スカラー値[d]の分割ブロックサイズ(桁数)を3とした場合、
|001|、|003|、|005|、|007|、
|00(−1)|、|00(−3)|、|00(−5)|、|00(−7)|、
に対応するブロック値に基づく算出データとして、±D、±3D、±5D、±7Dの各値を事前算出データとしてテーブルに保存することが必要となる。
しかし、本処理例においては、上述した処理によって生成される退化因子は、D、5Dのみであるので、例えば、スカラー値[d]の分割ブロックサイズ(桁数)を3とした場合、事前計算データとして必要となる±D、±3D、±5D、±7Dの一部が算出されておらず、このままでは、前述のウィンドウ法を実行することができない。例えばD、5D以外に必要となる3D、7D等を、別に算出して事前算出データとして適用することも可能ではあるが、この場合には、前述したようにこれらの値が退化因子以外の因子に設定される可能性が非常に高く、スカラー倍算において実行する加算演算において退化因子を含んだ加算処理と、非退化因子のみの加算処理が混在してしまうことになる。この場合、これらの演算による消費電力、時間などが明らかに異なることに起因して単純電力解析(SPA)などの各種攻撃に対する脆弱性が発生するという問題がある。
本処理例では、上述した処理によって検出した退化因子D,5Dを適用して単純電力解析(SPA)などの解析攻撃に対する耐性を有するウィンドウ法(widow法)によるスカラー倍算を実現する。
退化因子D,5Dを適用して単純電力解析(SPA)に対する耐性を有するウィンドウ法(widow法)によるスカラー倍算を実現するための改良されたwNAF展開をここではwNAF(1、5)と呼ぶことにする。wNAF(1、5)は、従来のwNAF展開データの変換処理を伴う処理として実行され、従来のwNAF展開データに対して変換テーブルを適用した変換処理を行う。wNAF展開データの変換処理は、図8に示す処理ステップによって実現される。
まず、ステップS231において、先の[(1B)ウィンドウ(Window)法を適用した処理例]において、図5を参照して説明したステップS153の処理と同様の処理によって通常のwNAF展開を行う。
すなわち、乗数として設定されるスカラー値:dをwNAF展開する。wNAF展開は、上述したように、乗数として設定されるスカラー値:dを、
|00・・0x|00・・0x|00・・0x|・・
ただし、xは奇数(±1,±3・・)
となる分割ブロックに分割する処理である。
ここでは、ウィンドウサイズ=3とした処理例について説明する。ウィンドウサイズ=3として乗数dをwNAF展開する。テーブルに保持すべき事前算出データ[dD]としては、±D,±3,±5D,±7Dが選択される。
次に、ステップS232において、テーブルに保持すべき事前算出データである、±D,±3,±5D,±7Dを、図8(b)に示す変換テーブルを使って算出されている退化因子D,5Dによって表現可能な±1、±5のみを適用した表現形式に変換する。
図8(b)に示す変換テーブルは以下の構成を持つ。
+D算出に適用する分割ブロック [001]→[001]に変換(変更なし)、
+3D算出に対応する分割ブロック [003]→[011]に変換、
+5D算出に対応する分割ブロック [005]→[005]に変換(変更なし)、
+7D算出に対応する分割ブロック [007]→[015]に変換、
−D算出に適用する分割ブロック [00(−1)]→[00(−1)]に変換(変更なし)、
−3D算出に対応する分割ブロック [00(−3)]→[0(−1)(−1)]に変換、
−5D算出に対応する分割ブロック [00(−5)]→[00(−5)]に変換(変更なし)、
−7D算出に対応する分割ブロック [00(−7)]→[0(−1)(−5)]に変換、
この変換テーブルによる変換により、テーブルに保持すべき事前算出データである[±D,±3,±5D,±7D]を、退化因子D,5Dによって表現可能な±1、±5のみを適用した表現形式に変換する。
上述の処理によって、テーブルに保持すべき事前算出データである[±D,±3,±5D,±7D]は、退化因子D,5Dによって表現可能な±1、±5のみを適用した表現形式に変換される。スカラー倍算D=dDは、この表現形式を適用して、退化因子D,5Dを適用した加算処理、すなわち、退化因子のみによる加算処理を含む演算処理によって実現される。
(処理A3)退化因子D、5Dのみによって表現された事前算出データを適用したスカラー倍算演算処理
次に、上述の処理によって、テーブルに保持すべき事前算出データである[±D,±3,±5D,±7D]を、退化因子D,5Dのみを適用した変換データとし、これらのデータを適用して実行するスカラー倍算処理[D=dD]のアルゴリズムについて説明する。
本処理例におけるスカラー倍算アルゴリズム[アルゴリズム7]を以下に示す。
Figure 2006145945
上記アルゴリズムにおいて、δはd[i]=0の時、0、それ以外のd[i]に対しては1になる関数である。[〜]はδのビット反転を表しており、δが1のとき0、δが0のとき1をとる。
上記アルゴリズムでは、±D,±3,±5D,±7Dを、予め検出済みの退化因子D,5Dのみによって表現し、スカラー倍算アルゴリズムにおいて発生する加算処理は、すべて退化因子+非退化因子の加算処理として実現されている。さらに変換後のテーブルにおいて2ndビットが0の場合、ダミーの演算を行なっている。従って、高速化演算が可能であり、また非退化因子による加算処理が混在しないので、退化因子と非退化因子の演算処理時間や、演算処理に伴う消費電力の差異が発生せず、演算シーケンスの解析としてのSPA、TA解析に対する耐性も損なわれることのない安全で高速な演算が実現される。
上述した種数(g)2の曲線において、ベースポイントDと5Dとの双方がウェイト(weight)=1となる退化因子を探索し、探索した退化因子D,5Dのみを適用して、wNAF展開データを変換し、変換したwNAF展開データを適用してスカラー倍算を実行する処理の全体シーケンスについて、図9に示すフローチャートを参照して説明する。
まず、図9のステップS251において、ベースポイント[D]と、[5D]とが共に退化因子、すなわちウェイト=1の退化因子となるような因子を検出する。この退化因子検出処理は、先に、図6、図7を参照して説明した処理によって求められる。すなわち、図1に示す例外処理3において、5Dが退化因子、すなわち、ウェイト=1である因子になる条件として設定される[条件]と、超楕円曲線の定義式:v=h(u)v+f(u)とに基づいて、前述した
(u)=0 ・・・(式3b)
(u)=0 ・・・(式4b)
から共通解(u)を求め、求めたuから、超楕円曲線の式:v+h(u)=f(u)に代入してvを求め、さらに、算出したu,vに基づいて、ベースポイントとしての退化因子D=(x−u、v)を決定する処理として実行する。
ステップS252では、ステップS251において算出したベースポイントDに基づいて、もう1つの退化因子5Dを事前算出する。算出処理は、
D→2D:ExHarDBL1→2 (Table 8)
2D→4D:HarleyDBL (Table 2)
4D→5D:ExHarADD2+1→1
上記算出処理工程によって実行できる。
ステップS253では、スカラー倍算d=dDにおける乗算データとしてのスカラー値dをwNAF展開し、さらに、wNAF展開データをステップS251,S252において算出した退化因子D,5Dを適用して変換した変換wNAF展開データを生成する。すなわち、ウィンドウサイズ=3の場合、通常のwNAF展開処理によって事前算出データとして必要とされる[±D,±3,±5D,±7D]を退化因子D,5Dのみによって表現した変換wNAF展開データを生成する。変換処理には、先に図8を参照して説明した変換テーブルを適用し、変換テーブルに従った変換処理が実行される。
最後に、ステップS254において、スカラー倍算D=dDを実行する。このスカラー倍算では、退化因子D、5Dのみによって表現された事前算出データを適用したスカラー倍算演算処理として実行され、先に説明したアルゴリズム[アルゴリズム7]に従った処理として実行される。このスカラー倍算では、通常のwNAF適用処理において、必要となる事前算出データである[±D,±3,±5D,±7D]を、退化因子D,5Dのみを適用した処理に変更しており、スカラー倍算アルゴリズムにおいて発生する加算処理は、すべて退化因子による加算処理として実現される。従って、高速化演算が可能であり、また非退化因子による加算処理が混在しないので、退化因子と非退化因子の演算処理時間や、演算処理に伴う消費電力の差異が発生せず、演算シーケンスの解析としてのSPA、TA解析に対する耐性も損なわれることのない安全で高速な演算が実現される。
[(処理例B)種数(g)3の曲線において、ベースポイントDと3Dとの双方がウェイト(weight)=2となる退化因子を効率よく検出し、検出した退化因子D,3Dのみを適用して、wNAF展開データを変換し、変換したwNAF展開データを適用してスカラー倍算を実行する処理]
次に、種数(g)3の曲線において、ベースポイントDと3Dとの双方がウェイト(weight)=2となる退化因子を効率よく検出し、検出した退化因子D,3Dのみを適用して、wNAF展開データを変換し、変換したwNAF展開データを適用してスカラー倍算を実行する処理について説明する。
本処理例では、種数(g)3の超楕円曲線において、ベースポイント[D]と、[3D]とが共に退化因子、すなわちウェイト=2の退化因子となるような因子を効率的に検出し、これらのD,3Dを適用して、wNAF展開データを変換し、退化因子のみからなる変換wNAF展開データを適用してスカラー倍算を実行する。
前述したように、ランダムな探索処理によって、ベースポイントD、3Dが同時に退化因子になるベースポイントDを全数探索することは確率的に不可能である。本処理例では、D、3Dが共に退化因子となるベースポイントDの効率的探索を実現する。さらにスカラー倍算の処理においては、事前計算因子として、D、3Dを用意し、これらのD,3Dを適用してウィンドウ法において必要とする事前計算因子のすべてを算出する。種数(g)3の場合、種数(g)2の場合のように変換が必要とならないのでD,3Dのみで十分である。本処理例Aは以下の3つの処理から構成される。
(処理B1)ベースポイントDと3Dがweight2の退化因子であるDを効率よく見つける処理
(処理B2)退化因子D、3Dのみによって表現された事前算出データを適用したスカラー倍算演算処理
以下、(処理B1)〜(処理B2)の順に、各処理の詳細について説明する。
(処理B1)ベースポイントDと3Dをweight 2である因子を効率よく見つける処理
ベースポイントDと3Dの双方が退化因子、すなわち共にウェイト(w)=2である因子の探索処理は、Dをベースポイントとして3Dを計算するまでのHarleyの公式を使ってw(D)=w(3D)=2となるDの条件を導く方法を適用した処理として実行される。なお、w(D)=w(3D)=3は、因子D,3Dが共にウェイト(w)=2であることを意味する。
w(D)=w(3D)=2となるDの条件を導くためにDから3Dを計算する加算連鎖(addition chain)を考える。ここでD、2Dの因子のMumford表現を、
D=(x+u21x+u20,v21x+v20
2D=(x+u12+u11x+u10,v12+v11x+v10
とする。
このとき、D→2D、2D→3Dの算出処理に対応するHarley公式は、
D→2D:ExHarDBL2→3 (Table 9)
2D→3D:ExHarADD2+3→2 (Table 7)
である。
上記の各Harley公式、
D→2D:ExHarDBL2→3 (Table 9)
2D→3D:ExHarADD2+3→2 (Table 7)
の各アルゴリズムを、以下のテーブル[Table9]、[Table7]に示す。
Figure 2006145945
Figure 2006145945
ベースポイントDから、そのスカラー倍によって算出される3Dは、上記処理、すなわち、D→2D→3によって算出可能であり、この算出処理過程において求められる関係式を適用して、D,3Dが退化因子、すなわちウェイト=2となるベースポイントDを検出する。ベースポイントDの検出処理の詳細について、図10を参照して説明する。
(ステップ1)
因子2DのMumford表現、
2D=(x+u12+u11x+u10,v12+v11x+v10
のu12、u11、u10、v12、v11、v10をDのMumford表現[D=(x+u21x+u20,v21x+v20)]に適用されるu21、u20、v21、v20で表現する。
図10に示すステップ1(step1)に示すように、
12=u12(u21、u20、v21、v20
11=u11(u21、u20、v21、v20
10=u10(u21、u20、v21、v20
12=v12(u21、u20、v21、v20
11=v11(u21、u20、v21、v20
10=v10(u21、u20、v21、v20
とする。D→2Dの処理で適用する公式、すなわち、前に示したテーブル9に示す[ExHarDBL2→3]の公式から導かれた関係式を以下の(式5)に示す。
Figure 2006145945
・・・(式5)
上記式(式5)中のs,s,rは、以下の式(式6)によって与えられる(u21、u20、v21、v20)の関数である。
Figure 2006145945
・・・(式6)
(ステップ2)
3D=D+2Dがweight2になる条件を用いて、探索する方程式[t=0]を求める。
3D=D+2Dがweight2になる条件を導くために、
2D→3D:ExHarADD3+2→3 (Table 7)のアルゴリズムについて考察する。上記したテーブル7(Table 7)のステップ3において、
=0
になった場合、ステップ6で求められる3DのMumford表現としてのuの多項式次数が2次、すなわちweight2となる。従って、
=0
が、3D=D+2Dがweight2になる条件である。
図10、ステップ2に示すように、
=t(u12、u11、u10、v12、v11、v10、u21、u20、v21、v20)として、D,2DのMumford表現、
D=(x+u21x+u20,v21x+v20
2D=(x+u12+u11x+u10,v12+v11x+v10
の係数による関数とする。
=t(u12、u11、u10、v12、v11、v10、u21、u20、v21、v20)は、以下の式(式7)として示される。
Figure 2006145945
・・・(式7)
さらに、上記式(式7)を整理して、DのMumford表現、
D=(x+u21x+u20,v21x+v20
の係数(u21、u20、v21、v20)のみの式に変換する。この式変換は、ステップ1で求めた関係式、すなわち、
12=u12(u21、u20、v21、v20
11=u11(u21、u20、v21、v20
10=u10(u21、u20、v21、v20
12=v12(u21、u20、v21、v20
11=v11(u21、u20、v21、v20
10=v10(u21、u20、v21、v20
を適用する。
このようにして求められた条件式
=t(u21、u20、v21、v20)=0
を求める。
(ステップ3)
次に、図10のステップ3に示すように、ステップ2で求めた条件式、
=t(u21、u20、v21、v20)=0
に含まれるパラメータ(u21、u20、v21、v20)を、超楕円曲線上の点:P(x,y)、Q(x,y)で表現する。
前述したように、種数(genus)3の任意の被約因子Dはマンホード(Mumford)表現を用いると有限体Fq上の元を係数に持つ3次以下の多項式の組、すなわち、
(U、V)=(x+u+ux+u、v+vx+v
として表現でき、種数gの超楕円曲線Cは以下の方程式、
+h(x)y=f(x)
で定義される。ここで、h(x),f(x)∈Fq[x],f(x)は、次数2g+1のmonic多項式である。これらマンホード(Mumford)表現の定義に基づいて、
=t(u21、u20、v21、v20)=0
に含まれるパラメータ(u21、u20、v21、v20)を、超楕円曲線上の点:P(x,y)、Q(x,y)で表現すると、図10のステップ3に示す関係式、すなわち、以下の式(式8)に示す関係式が設定される。
21=x+x
20=x
21=(y+y)/(x+x
20=v21+y
・・・(式8)
上記式(式8)に基づいて、条件式
=t(u21、u20、v21、v20)=0
から、下記式(式9)
=t(x、x、y、y)=0
・・・(式9)
を得る。
(ステップ4)
次に、図10のステップ4に示すように、ステップ2で求めた条件式、
=t(x、x、y、y)=0
において、x、yを定数とみなし、x、yに関する方程式として、さらに、yの次数を下げていく処理を行なう。これは、先に種数2の場合に説明した(式3b)の生成処理と同様の処理であり、超楕円曲線の定義式、
+h(x)y=f(x)
を使うことで、yの次数を下げていくことができる。これを用いて、式9を形式的に表現すると、
(x,y)=a(x)+b(x)y=0
の形式に変形することができる。さらにGの共役な多項式を
'=a(x)+b(x)(y+h(x))
と定義すると、
=G×G'=a+abh+bfとなり、最終的にxだけの方程式として下記の(式10)、すなわち、 N(x)=0
・・・(式10)
を導くことができる。
(ステップ5)
上記式
(x)=0(式10)
が解xを持つことができれば、前述の式(式8)、すなわち、
21=x+x
20=x
21=(y+y)/(x+x
20=v21+y
に基づいて、因子D=(x+u21x+u20,v21x+v20
を求めることができる。
具体的に、上記ステップに従ってxに関する1変数多項式を導くと、29次の多項式を得ることができる。先に説明した種数(g)=2の場合と同様、1変数の有限次数の多項式方程式は一般に多項式時間で解けることが知られている。これらの多項式に基づいてxの解を求める。
(ステップ6)
(x)=0
の解xが算出されたら、超楕円曲線の定義式、
+h(x)y=f(x)
にxを代入してy求める。
さらに、超楕円曲線上の点:P(x,y)、Q(x,y)からベースポイントD、すなわち、
D=(x+u21x+u20,v21x+v20
を求める。
このようにして算出されたベースポイント:Dは、ウェイトが2の退化因子であり、また、3Dについてもウェイト=2の退化因子であることが保証される。
図11に示すフローチャートを参照して、退化因子D、3Dを生成する処理手順について説明する。まず、ステップS301において、超楕円曲線のパラメータを入力する。前述したように、超楕円曲線では曲線を特徴づける値は種数(genus)gである。pを素数、nを正の整数、q=pとする。このとき有限体Fq上で定義される種数gの超楕円曲線Cは以下の方程式、
+h(x)y=f(x)
で定義される。ここで、h(x),f(x)∈Fq[x],f(x)は、次数2g+1のmonic多項式である。
ここでは超楕円曲線の方程式をy+h(x)=f(x)、
h(x)=x+h+hx+h
f(x)=x+f+f+f+f+fx+f
としている。
このように、種数g=3の超楕円曲線は、パラメータとしてh,h,h,f,f,f,f,f,fを設定することで定義される。
ステップS302において、ランダムに超楕円曲線上の点P(x,y)を生成し、方程式:N(x,x,y)=0に代入する。
(x,x,y)=0
は、前述したように、2D→3D:ExHarADD3+2→3 (Table 7)のアルゴリズム、すなわち上記したテーブル7(Table 7)のステップ3において、
=0
が、3D=D+2Dをweight2とする条件であることから、導かれる式であり、
マンホード(Mumford)表現の定義に基づいて、
=t(u21、u20、v21、v20)=0
に含まれるパラメータ(u21、u20、v21、v20)を、超楕円曲線上の点:P(x,y)、Q(x,y)で表現し、
21=x+x
20=x
21=(y+y)/(x+x
20=v21+y
条件式を、
=t(x、x、y、y)=0
として設定し、さらに、x、yを定数とみなし、x、yに関する方程式として、超楕円曲線の定義式、y+h(x)y=f(x)
を使い、yの次数を下げ、
=t(x、x、y、y)=0
を、
(x,y)=a(x)+b(x)y=0
の形式に変形し、さらにGの共役な多項式を
'=a(x)+b(x)(y+h(x))
と定義して、
=G×G'=a+abh+bfとして生成された式である。
さらに、ステップS303において、N=G×G'=a+abh+bfから、
最終的にxだけの方程式、すなわち、前述の式(式10) N(x)=0
に従って、解xを求める。
式: N(x)=0
に解が存在しない場合(ステップS304:No)は、ステップS302に戻り、パラメータ:h,h,h,f,f,f,f,f,fを再設定して、解(x)の算出を実行する。
解(x)が算出される(ステップS304:Yes)と、ステップS305に進み、超楕円曲線の式:y+h(x)=f(x)にxを代入してyを求める。さらに、ステップS306、ステップS307において、超楕円曲線上の点:P(x,y)、Q(x,y)からベースポイントD、すなわち、
D=(x+u21x+u20,v21x+v20
を求める。
このようにして算出されたベースポイント:Dは、ウェイトが2の退化因子であり、また、3Dについてもウェイト=2の退化因子であることが保証される。
(処理B2)退化因子D、3Dのみによって表現された事前算出データを適用したスカラー倍算演算処理
次に、退化因子D,3Dのみを適用し、事前算出データ[±D,±3]を用いたスカラー倍算処理[D=dD]のアルゴリズムについて説明する。なお、この処理例では、ウィンドウ法(wNAF)においてウィンドウサイズ=2とした処理例であり、wNAF法において必要となる事前算出データは、[±D,±3]であって、前述の処理において求めた退化因子D,3Dから直接算出可能な値となる。従って、前述の処理例、すなわち、種数2としてウィンドウサイズ=3とした場合のように、変換テーブルを適用した変換処理は不要となる。
本処理例におけるスカラー倍算アルゴリズム[アルゴリズム8]を以下に示す。
Figure 2006145945
上記アルゴリズムにおいて、前述の従来のウィンドウ法(wNAF)において説明したアルゴリズム(アルゴリズム6)との差異は、2つの退化因子D,3Dを入力(input)とすることと、ステップ2.2における加算処理が退化因子+非退化因子の加算処理として実行される点である。このように、スカラー倍算アルゴリズムにおいて発生する加算処理は、すべて退化因子を含む加算処理として実現される。従って、高速化演算が可能であり、また非退化因子のみの加算処理が混在しないので、退化因子と非退化因子の演算処理時間や、演算処理に伴う消費電力の差異が発生せず、演算シーケンスの解析としてのSPA、TA解析に対する耐性も損なわれることのない安全で高速な演算が実現される。
上述した種数(g)3の曲線において、ベースポイントDと3Dとの双方がウェイト(weight)=2となる退化因子を検出し、検出した退化因子D,3Dを入力値として、スカラー倍算を実行する処理の全体シーケンスについて、図12に示すフローチャートを参照して説明する。
まず、図12のステップS351において、ベースポイント[D]と、[3D]とが共に退化因子、すなわちウェイト=2の退化因子となるような因子を検出する。この退化因子検出処理は、先に、図10、図11を参照して説明した処理によって求められる。すなわち、2D→3D:ExHarADD3+2→3 (Table 7)のアルゴリズムのステップ3において、
=0
が、3D=D+2Dをweight2とする条件であることから、導かれる式、
(x)=0
を成立させる解(x)を求め、求めたxから、超楕円曲線の式:y+h(x)=f(x)に代入してyを求め、超楕円曲線上の点:P(x,y)、Q(x,y)からベースポイントD、すなわち、
D=(x+u21x+u20,v21x+v20
を求める処理として実行する。
ステップS352では、ステップS351において算出したベースポイントDに基づいて、もう1つの退化因子3Dを事前算出する。算出処理は、
D→2D:ExHarDBL1→2 (Table 8)
2D→3D:ExHarADD3+2→3 (Table 7)
上記算出処理工程によって実行できる。
ステップS353では、スカラー倍算d=dDにおける乗算データとしてのスカラー値dをwNAF展開する。
最後に、ステップS354において、スカラー倍算D=dDを実行する。このスカラー倍算では、退化因子D、3Dのみによって表現された事前算出データを適用したスカラー倍算演算処理として実行され、先に説明したアルゴリズム[アルゴリズム8]に従った処理として実行される。
従来のwNAF適用処理演算では、退化因子以外の因子、すなわちウェイト=3の因子を適用した加算が実行されるが、本処理例のスカラー倍算における加算処理は、退化因子D,3Dのみを適用した加算処理、すなわち、すべて退化因子+非退化因子の加算処理として実現される。従って、高速化演算が可能であり、また非退化因子による加算処理が混在しないので、退化因子と非退化因子の演算処理時間や、演算処理に伴う消費電力の差異が発生せず、演算シーケンスの解析としてのSPA、TA解析に対する耐性も損なわれることのない安全で高速な演算が実現される。
以上、本発明の処理例としての退化因子をベースポイントとして設定し、かつウィンドウ(Window)法を適用した処理例として、2つの処理例、
(処理例A)種数(g)2の曲線において、ベースポイントDと5Dとの双方がウェイト(weight)=1となる退化因子を効率よく検出し、検出した退化因子D,5Dのみを適用して、wNAF展開データを変換し、変換したwNAF展開データを適用してスカラー倍算を実行する処理。
(処理例B)種数(g)3の曲線において、ベースポイントDと3Dとの双方がウェイト(weight)=2となる退化因子を効率よく検出し、検出した退化因子D,3Dのみを適用して、wNAF展開データを適用してスカラー倍算を実行する処理。
の各処理について説明した
上述したように、本発明の処理により、超楕円曲線暗号におけるスカラー倍算において退化因子を使ったSPA耐性のあるwindow法を用いることができるようになった。この処理により既存の方法に比べてスカラー倍算の高速処理が可能となる。以下に、従来の処理と、本発明による処理との計算量の比較データを示す。
まず、種数2の場合の160bitのdのスカラー倍算を行う場合の計算量について、上述した
(本発明処理例A)
種数(g)2の曲線において、ベースポイントDと5Dとの双方がウェイト(weight)=1となる退化因子を効率よく検出し、検出した退化因子D,5Dのみを適用して、wNAF展開データを変換し、変換したwNAF展開データを適用してスカラー倍算を実行する処理と、
従来法A=(1A)退化因子をベースポイントに適用した処理例
従来法B=(1B)ウィンドウ法(wNAF)を適用した処理例(ウィンドウサイズ=2)
との計算コストの比較データを示す。
従来法A:318I+6028M
従来法B:239I+6293M
本発明処理例A:267I+5477M
上記中、Iは有限体の元の除算にかかるコストを表し、Mは有限体の元の乗算にかかるコストを示している。この数字が小さいほど計算量の少ない効率のよい方法であるといえる。これらの計算量の見積もりは、上述した説明で適用した計算アルゴリズム1〜9の因子の加算公式の計算量を基に算出した。各方式のスカラー倍算の公式は従来法Aがアルゴリズム3(Algorithm3)、従来法Bがアルゴリズム5(Algorithm5)、本発明処理例Aがアルゴリズム7(Algorithm7)に対応している。
例えば従来法Aの計算コストは、
(I+7M)+(I+27M)+158×{(I+27M)+(I+11M)}
=318I+6028M
と計算することができる。
IとMは実装した計算機によって異なってくるものであるが、ここではI=4Mとしてすると、本発明処理例A(計算コスト=267I+5477M)は、従来法A(計算コスト=318I+6028M)に比較して、10%程度の高速化が期待される。同様に従来法B(計算コスト=239I+6293M)と、本発明処理例A(計算コスト=267I+5477M)とを比較した場合も、約10%高速になる。なお、従来法Bと本発明処理例Aの比較では、保持すべき事前算出データ数を同じ設定とした処理同士の比較を行った。すなわち、従来法Bは、window size=2のアルゴリズム(事前算出データ=D,3D)、本発明処理例Aは、window size=3のアルゴリズム(事前算出データ=D,5D、ただし退化因子)とした比較データである。
次に種数3の場合の160bitのdのスカラー倍算を行う場合の計算量について、上述した
(本発明処理例B)
種数(g)3の曲線において、ベースポイントDと3Dとの双方がウェイト(weight)=2となる退化因子を効率よく検出し、検出した退化因子D,3Dのみを適用して、wNAF展開データを変換し、変換したwNAF展開データを適用してスカラー倍算を実行する処理と、
従来法A=(1A)退化因子(Weight2)をベースポイントに適用した処理例
従来法B=(1B)ウィンドウ法(wNAF)を適用した処理例(ウィンドウサイズ=2)
との計算コストの比較データを示す。
従来法A:318I+21111M
従来法B:239I+19119M
本発明処理例B:239I+17003M
これらの計算量の見積もりは上述した説明で適用した計算アルゴリズム1〜9の因子の加算公式の計算量をもとに算出した。各方式のスカラー倍算の公式は従来法Aがアルゴリズム3(Algorithm3)、従来法Bがアルゴリズム5(Algorithm5)、本発明処理例Bがアルゴリズム8(Algorithm8)に対応している。
種数2の場合と同様にI=4Mと換算すると、本発明処理例B(計算コスト=239I+17003M)は、従来法A(計算コスト=318I+21111M)に比較して、20%程度の高速化が期待される。同様に従来法B(計算コスト=239I+19119M)と、本発明処理例A(計算コスト=239I+17003M)とを比較した場合、約11%高速になる。なお、この両者の比較では、両者ともwindow size=2のアルゴリズム(事前算出データ=D,3D)とした比較データである。
以上、説明したように、本発明によれば、種数gの超楕円曲線において、gより小さいウェイト(weight)の因子をベースポイントとして使い、さらにウィンドウ法において適用する事前算出データを退化因子によって表現し、スカラー倍算における加算演算処理をすべて退化因子+非退化因子の加算処理によって実行する構成としたので、加算処理の高速化が実現され、また、加算処理を退化因子+非退化因子の演算のみとすることで、非退化因子の加算処理を混在させることがなくなり、演算処理における消費電力や処理時間のばらつきの検出による攻撃(SPA,TA)に対する耐性も損なうことなく、安全性の高い高速処理可能な構成が実現される。
超楕円曲線上の因子の演算を使う暗号処理演算において、処理の重い演算は因子のスカラー倍算である。上述した本発明の処理によりスカラー倍算を高速化することで超楕円曲線暗号の処理を大幅に改善することができる。
前述したように、超楕円曲線暗号(HECC)は楕円曲線暗号(ECC)を一般化した概念であり、現在、様々な分野で適用されている楕円曲線暗号(ECC)を使った暗号処理、具体的には署名処理、暗号データの生成、復号処理、暗号鍵共有処理、認証処理などに、本発明を適用することが可能である。楕円曲線暗号(ECC)における演算処理中のスカラー倍算の部分を、上述したスカラー倍算に置き換えることで、演算の高速化が可能となる。
[3.暗号処理装置の機能構成について]
図13に、本発明の暗号処理装置の機能構成を示すブロック図を示す。暗号処理装置100は、超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理装置100であり、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子、すなわち退化因子をベースポイントとして生成し、さらに、ウィンドウ法において適用する事前算出データを算出するために必要となるベースポイント以外の1つ以上の因子、例えば上述した処理例Aでは5D、処理例Bでは3Dも退化因子となるような設定とした因子Dをベースポイントとして生成するベースポイント生成部101を有する。
事前算出データ生成部102は、ベースポイント生成部101において生成したベースポイントDに基づいて、事前算出退化因子データ、例えば3D、5D等の退化因子を算出する事前算出退化因子データ生成手段として機能する。
暗号処理装置100は、さらに、因子Dに対するスカラー倍算[D=dD]において適用する乗数として設定されるスカラー値:dのwNAF展開処理を実行する展開処理部103と、展開処理部103の展開データに対して、さらに変換テーブルに基づく変換処理を実行し、退化因子のみの表現としたwNAF展開データを生成する展開処理データ変換部104と、ベースポイントとしての因子を含む因子のスカラー倍算処理を実行する演算処理部105とを有する。
ベースポイント生成部101は、定義体としての有限体F上の元をランダムにg個選び、g個の超楕円曲線上の点P(i=1、…、g)を生成し、
U(x)=(x−x)(x−x)…(x−xg0
V(x)=vg0−1g0−1+vg0−2g0−2+…+vの係数vを決定し、ベースポイントの因子:D=(U(x)、V(x))を決定する処理を実行する構成である。
ベースポイント生成部101は、例えば、超楕円曲線の種数g(genus)=2である場合には、ウェイト(weight)1となる退化因子をベースポイントとして生成する。超楕円曲線の種数g(genus)=3である場合には、ウェイト(weight)1または2となる退化因子をベースポイントとして生成する。ベースポイント生成部101は、ウィンドウ法において適用する事前算出データを算出するために必要となるベースポイント以外の1つ以上の因子、例えば上述した処理例Aでは5D、処理例Bでは3Dも退化因子となる因子Dをベースポイントとして生成する処理を実行する。
事前算出データ生成部102は、ベースポイント生成部101において生成したベースポイントDに基づいて、事前算出データ3D、5D等の、ウィンドウ法において適用する事前算出データを算出する。上述の処理例A(種数(g)=2)では、ウィンドウサイズ=3として、5Dを事前に算出した。5Dは退化因子である。また、処理例B(種数(g)=3)では、ウィンドウサイズ=2として、3Dを事前に算出した。3Dは退化因子である。
展開処理部103は、因子Dに対するスカラー倍算[D=dD]において適用する乗数として設定されるスカラー値:dのwNAF展開処理を実行する。すなわち、乗数dの2進展開データについてデータ変換を実行して、所定桁数(ウィンドウサイズ)からなる数値ブロックの各々を、
|00・・0x|00・・0x|00・・0x|・・
ただし、xは奇数(±1,±3・・)
となるように設定する。
展開処理データ変換部104は、展開処理部103の展開データに対して、さらに変換テーブルに基づく変換処理を実行し、退化因子のみの表現としたwNAF展開データを生成する。なお、この処理は、上述の処理例Aにおいては適用されるが、処理例Bにおいては不要となる。処理例Aでは、ウィンドウサイズ=3であり、従来のwNAF法では、±D、±3D、±5D、±7Dの各値を事前算出データとしてテーブルに保存することが必要となり、この場合、処理例Aでは、D,5Dのみを退化因子として事前算出しているのみであるので、その他の必要となる事前算出データをD,5Dで表現した形式に変換することを必要とするためである。一方、上述した処理例Bでは、ウィンドウサイズ=2であり、±D、±3Dを事前算出データとしてテーブルに保存することが必要となり、この場合、処理例Bでは、D,3Dを退化因子として事前算出しているので、その他の必要となる事前算出データがなく、wNAF展開データの変換が不要となる。
演算処理部105は、スカラー倍算処理を実行する。この処理は、たとえば先に説明したアルゴリズム7(処理例A)、またはアルゴリズム8(処理例B)に従った演算処理となる。従来のwNAF適用処理演算では、退化因子以外の因子、すなわち種数(g)に等しいウェイトの因子を適用した加算が実行されるが、本処理例のスカラー倍算における加算処理は、種数(g)より小さいウェイトを持つ因子、すなわち退化因子+非退化因子の加算処理が実行される。従って、高速化演算が可能であり、また非退化因子のみの加算処理が混在しないので、退化因子と非退化因子の演算処理時間や、演算処理に伴う消費電力の差異が発生せず、演算シーケンスの解析としてのSPA、TA解析に対する耐性も損なわれることのない安全で高速な演算が実現される。
[4.電子署名生成および検証アルゴリズムにおける本発明の適用例]
以下に本発明の処理を適用可能な具体的な暗号処理アルゴリズムの例として、楕円曲線暗号を適用した電子署名生成および検証アルゴリズムであるECDSA(EC−Digital Signature Algorithm)のスカラー倍算に本発明の演算手法を適用した場合について説明する。IEEE1363によるとECDSAによる署名生成、検証は以下のシーケンスによって実行される。
(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−1)0<c<r、0<d<rをチェック。該当しない場合invalidを出力
(4−2)h=d−1mod r、h=fh mod r、h=ch mod rを計算。
(4−3)P=(x、y)=hG+hWを計算。P=Oならばinvalidを出力
(4−4)xを整数に変換し、iとする。
(4−5)c'=i mod rを計算する。
(4−6)c'=cならばvalidを出力。そうでないならばinvalidを出力。
上記アルゴリズムにおいて下記の処理が超楕円曲線を用いた本提案法が適用できる箇所である。
(2−1)秘密鍵sに対してW=sGを公開鍵とする
(3−2)V=uG=(x、y)を計算
(4−3)P=(x、y)=hG+hWを計算。P=Oならばinvalidを出力
これらの各ステップ(2−1),(3−2),(4−3)における演算処理、W=sG、V=uG、P=(x、y)=hG+hWにおけるhGの演算処理は、因子のスカラー倍算処理であり、本発明の適用による高速化が可能となる。
[5.暗号処理装置のハードウェア構成例]
最後に、上述の暗号処理を実行するデバイスとしてのICモジュール200の構成例を図14に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図14に示すICモジュール200は、これら様々な機器に構成することが可能である。
図14に示す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と、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データとを、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となる設定とし、ウィンドウ法を適用したスカラー倍算処理における加算処理を事前算出した退化因子+非退化因子の加算処理によって実行する構成としたので、高速演算が実現されるとともに、また非退化因子のみの加算処理が混在しないので、退化因子と非退化因子の演算処理時間や、演算処理に伴う消費電力の差異が発生せず、演算シーケンスの解析としてのSPA、TA解析に対する耐性も損なわれることのない安全で高速な演算が実現され、ICカードなど高速性、安全性の要求される暗号処理演算を行う機器、デバイスなどにおいて本発明の適用が可能である。
さらに、本発明の構成によれば、因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を実行し、展開処理において生成されたwNAF展開処理データに基づいて決定される事前算出データに、退化因子データ以外のデータを含む場合、wNAF展開データを変換し、退化因子データのみによって構成される変換wNAF展開データを生成して、変換wNAF展開データに退化因子データを対応付け、スカラー倍算における加算処理を退化因子+非退化因子の加算処理として実行する構成としたので、演算シーケンスの解析としてのSPA、TA解析に対する耐性の損なわれない安全で高速な演算が実現され、ICカードなど高速性、安全性の要求される暗号処理演算を行う機器、デバイスなどにおいて本発明の適用が可能である。
種数2の超楕円曲線暗号のスカラー倍算における加算処理、2倍算処理のアルゴリズムについて説明する図である。 種数3の超楕円曲線暗号のスカラー倍算における加算処理、2倍算処理のアルゴリズムについて説明する図である。 退化因子の生成およびスカラー倍算処理を実行する場合の全体シーケンスについて説明するフローチャートを示す図である。 超楕円曲線暗号演算処理における退化因子としてのベースポイント設定処理の手順を説明するフローチャートである。 ウィンドウ法を適用して、スカラー倍算処理を実行する場合の全体シーケンスについて説明する図である。 種数(g)2の超楕円曲線においてD,5Dが退化因子、すなわちウェイト=1となるベースポイントDを検出する処理の詳細について説明する図である。 種数(g)2の超楕円曲線においてD,5Dが退化因子、すなわちウェイト=1となるベースポイントDを検出する処理手順を説明するフローチャートを示す図である。 退化因子D,5Dを適用して単純電力解析(SPA)に対する耐性を有するウィンドウ法(widow法)によるスカラー倍算を実現するための改良されたwNAF展開、wNAF(1、5)の処理を説明する図である。 種数(g)2の曲線において、ベースポイントDと5Dとの双方がウェイト(weight)=1となる退化因子を検出し、検出した退化因子D,5Dのみを適用して、wNAF展開データを変換し、変換したwNAF展開データを適用してスカラー倍算を実行する処理の全体シーケンスについて説明する図である。 種数(g)3の超楕円曲線においてD,3Dが退化因子、すなわちウェイト=2となるベースポイントDを検出する処理の詳細について説明する図である。 種数(g)3の超楕円曲線においてD,3Dが退化因子、すなわちウェイト=2となるベースポイントDを検出する処理手順を説明するフローチャートを示す図である。 種数(g)3の曲線において、ベースポイントDと3Dとの双方がウェイト(weight)=2となる退化因子を検出し、検出した退化因子D,3Dのみを適用して、wNAF展開データを生成し、スカラー倍算を実行する処理の全体シーケンスについて説明する図である。 本発明の暗号処理装置の機能構成を示すブロック図である。 本発明の暗号処理演算を実行する暗号処理実行デバイス例としてのICモジュールの構成例を示す図である。
符号の説明
100 暗号処理装置
101 ベースポイント生成部
102 事前算出データ生成部
103 展開処理部
104 展開処理データ変換部
105 演算処理部
200 ICモジュール
201 CPU(Central Processing Unit)
202 メモリ
203 暗号処理部
204 乱数発生器
205 送受信部

Claims (13)

  1. 超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理演算方法であり、
    超楕円曲線暗号に基づくスカラー倍算処理における入力因子としてのベースポイントと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データとが、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となるベースポイントを生成するベースポイント生成ステップと、
    前記ベースポイント生成ステップにおいて生成したベースポイントに基づいて、ウィンドウ法における事前算出データを、退化因子のみからなるデータとして算出する事前算出退化因子データ生成ステップと、
    前記事前算出退化因子データ生成ステップにおいて生成した事前算出退化因子データを適用してウィンドウ法を適用したスカラー倍算処理を実行するステップであり、スカラー倍算における加算処理を前記事前算出退化因子を含む加算処理として実行する演算処理ステップと、
    を有することを特徴とする暗号処理演算方法。
  2. 前記演算処理ステップは、
    因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を実行する展開処理ステップと、
    前記展開処理ステップにおいて生成されたwNAF展開処理データに、前記事前算出退化因子データを対応付けた演算を実行するステップと、
    を有することを特徴とする請求項1に記載の暗号処理演算方法。
  3. 前記演算処理ステップは、
    因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を実行する展開処理ステップと、
    前記展開処理ステップにおいて生成されたwNAF展開処理データに基づいて決定される事前算出データに前記事前算出退化因子データ以外のデータを含む場合、前記wNAF展開データを変換し、前記事前算出退化因子データのみによって構成される変換wNAF展開データを生成する展開処理データ変換ステップと、
    前記展開処理データ変換ステップにおいて生成された変換wNAF展開データに、前記事前算出退化因子データを対応付けた演算を実行するステップと、
    を有することを特徴とする請求項1に記載の暗号処理演算方法。
  4. 前記ベースポイント生成ステップは、
    ベースポイントDと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データnD(ただしnは1以外の整数)とを、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となる設定としてベースポイントを生成するステップであることを特徴とする請求項1に記載の暗号処理演算方法。
  5. 前記暗号処理演算方法は、種数g(genus)=2の超楕円曲線におけるスカラー倍算処理を実行する方法であり、
    前記ベースポイント生成ステップは、
    ベースポイントDと、5Dとを、ウェイト(weight)1の退化因子となるようにベースポイントを生成するステップであり、
    前記演算処理ステップは、
    因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を、ウィンドウサイズ=3として実行する展開処理ステップと、
    前記展開処理ステップにおいて生成されたwNAF展開処理データに基づいて決定される事前算出データに前記退化因子D,5D以外のデータを含む場合、前記wNAF展開データを変換し、前記退化因子D,5Dのみによって構成される変換wNAF展開データを生成する展開処理データ変換ステップと、
    前記展開処理データ変換ステップにおいて生成された変換wNAF展開データに、前記退化因子D,5Dを対応付け、スカラー倍算処理中の加算処理を退化因子D,5Dを含む加算処理とした演算を実行するステップと、
    を有することを特徴とする請求項1に記載の暗号処理演算方法。
  6. 前記暗号処理演算方法は、種数g(genus)=3の超楕円曲線におけるスカラー倍算処理を実行する方法であり、
    前記ベースポイント生成ステップは、
    ベースポイントDと、3Dとをウェイト(weight)2の退化因子となるようにベースポイントを生成するステップであり、
    前記演算処理ステップは、
    因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を、ウィンドウサイズ=2として実行する展開処理ステップと、
    前記展開処理ステップにおいて生成されたwNAF展開データに、前記退化因子D,3Dを対応付け、スカラー倍算処理中の加算処理を退化因子D,3Dを含む加算処理とした演算を実行するステップと、
    を有することを特徴とする請求項1に記載の暗号処理演算方法。
  7. 超楕円曲線暗号に基づく暗号処理演算を実行する暗号処理装置であり、
    超楕円曲線暗号に基づくスカラー倍算処理における入力因子としてのベースポイントと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データとが、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となるベースポイントを生成するベースポイント生成手段と、
    前記ベースポイント生成手段において生成したベースポイントに基づいて、ウィンドウ法における事前算出データを、退化因子のみからなるデータとして算出する事前算出退化因子データ生成手段と、
    前記事前算出退化因子データ生成手段において生成した事前算出退化因子データを適用してウィンドウ法を適用したスカラー倍算処理を実行するステップであり、スカラー倍算における加算処理を前記事前算出退化因子を含む加算処理として実行する演算処理手段と、
    を有することを特徴とする暗号処理装置。
  8. 前記暗号処理装置は、さらに、
    因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を実行する展開処理手段を含み、
    前記演算処理手段は、
    前記展開処理手段において生成されたwNAF展開処理データに、前記事前算出退化因子データを対応付けた演算を実行する構成であることを特徴とする請求項7に記載の暗号処理装置。
  9. 前記暗号処理装置は、さらに、
    因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を実行する展開処理手段と、
    前記展開処理手段において生成されたwNAF展開処理データに基づいて決定される事前算出データに前記事前算出退化因子データ以外のデータを含む場合、前記wNAF展開データを変換し、前記事前算出退化因子データのみによって構成される変換wNAF展開データを生成する展開処理データ変換手段とを含み、
    前記演算処理手段は、
    前記展開処理データ変換手段において生成された変換wNAF展開データに、前記事前算出退化因子データを対応付けた演算を実行する構成であることを特徴とする請求項7に記載の暗号処理装置。
  10. 前記ベースポイント生成手段は、
    ベースポイントDと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データnD(ただしnは1以外の整数)とを、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となる設定としてベースポイントを生成する構成であることを特徴とする請求項7に記載の暗号処理装置。
  11. 前記暗号処理装置は、種数g(genus)=2の超楕円曲線におけるスカラー倍算処理を実行する構成であり、
    前記ベースポイント生成手段は、
    ベースポイントDと、5Dとを、ウェイト(weight)1の退化因子となるようにベースポイントを生成する構成であり、
    因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を、ウィンドウサイズ=3として実行する展開処理手段と、
    前記展開処理手段において生成されたwNAF展開処理データに基づいて決定される事前算出データに前記退化因子D,5D以外のデータを含む場合、前記wNAF展開データを変換し、前記退化因子D,5Dのみによって構成される変換wNAF展開データを生成する展開処理データ変換手段と、
    前記展開処理データ変換手段において生成された変換wNAF展開データに、前記退化因子D,5Dを対応付け、スカラー倍算処理中の加算処理を退化因子D,5Dを含む加算処理とした演算を実行する演算処理手段と、
    を有することを特徴とする請求項7に記載の暗号処理装置。
  12. 前記暗号処理装置は、種数g(genus)=3の超楕円曲線におけるスカラー倍算処理を実行する構成であり、
    前記ベースポイント生成手段は、
    ベースポイントDと、3Dとをウェイト(weight)2の退化因子となるようにベースポイントを生成する構成であり、
    因子Dに対するスカラー倍算D=dDの乗数dについての展開処理として、前記ウィンドウ法に基づく展開処理であるwNAF(width−wNon−Adjacent Form)展開を、ウィンドウサイズ=2として実行する展開処理手段と、
    前記展開処理手段において生成されたwNAF展開データに、前記退化因子D,3Dを対応付け、スカラー倍算処理中の加算処理を退化因子D,3Dを含む加算処理とした演算を実行する演算処理手段と、
    を有することを特徴とする請求項7に記載の暗号処理装置。
  13. 超楕円曲線暗号に基づく暗号処理演算をコンピュータにおいて実行させるコンピュータ・プログラムであり、
    超楕円曲線暗号に基づくスカラー倍算処理における入力因子としてのベースポイントと、スカラー倍算の実行アルゴリズムとしてのウィンドウ法における事前算出データ中、ベースポイントを除く1つ以上の事前算出データとが、超楕円曲線の種数g(genus)より小さいウェイト(weight)g(ただし、1≦g<g)の因子である退化因子となるベースポイントを生成するベースポイント生成ステップと、
    前記ベースポイント生成ステップにおいて生成したベースポイントに基づいて、ウィンドウ法における事前算出データを、退化因子のみからなるデータとして算出する事前算出退化因子データ生成ステップと、
    前記事前算出退化因子データ生成ステップにおいて生成した事前算出退化因子データを適用してウィンドウ法を適用したスカラー倍算処理を実行するステップであり、スカラー倍算における加算処理を前記事前算出退化因子を含む加算処理として実行する演算処理ステップと、
    を有することを特徴とするコンピュータ・プログラム。
JP2004337186A 2004-11-22 2004-11-22 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム Abandoned JP2006145945A (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2004337186A JP2006145945A (ja) 2004-11-22 2004-11-22 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
KR1020077008858A KR101154695B1 (ko) 2004-11-22 2005-11-15 암호 처리 연산 장치
US11/791,283 US7957527B2 (en) 2004-11-22 2005-11-15 Cryptographic processing apparatus
CN2005800399114A CN101061526B (zh) 2004-11-22 2005-11-15 密码处理运算装置
EP05806900A EP1816624A4 (en) 2004-11-22 2005-11-15 DEVICE FOR CALCULATING ENCRYPTIONS
PCT/JP2005/020967 WO2006054559A1 (ja) 2004-11-22 2005-11-15 暗号処理演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004337186A JP2006145945A (ja) 2004-11-22 2004-11-22 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム

Publications (1)

Publication Number Publication Date
JP2006145945A true JP2006145945A (ja) 2006-06-08

Family

ID=36407102

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004337186A Abandoned JP2006145945A (ja) 2004-11-22 2004-11-22 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US7957527B2 (ja)
EP (1) EP1816624A4 (ja)
JP (1) JP2006145945A (ja)
KR (1) KR101154695B1 (ja)
CN (1) CN101061526B (ja)
WO (1) WO2006054559A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005258228A (ja) * 2004-03-12 2005-09-22 Sony Corp 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
WO2007080825A1 (ja) * 2006-01-16 2007-07-19 Sony Corporation 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
WO2012090288A1 (ja) * 2010-12-27 2012-07-05 富士通株式会社 暗号処理装置、暗号処理方法、およびプログラム

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4682852B2 (ja) * 2006-01-16 2011-05-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
FR2899702A1 (fr) * 2006-04-10 2007-10-12 France Telecom Procede et dispositif pour engendrer une suite pseudo-aleatoire
EP2119101B1 (en) * 2007-03-06 2011-10-05 Research In Motion Limited Elliptical scalar multiplication method for countering power-analysis attacks
US8391479B2 (en) 2007-03-07 2013-03-05 Research In Motion Limited Combining interleaving with fixed-sequence windowing in an elliptic curve scalar multiplication
US8160245B2 (en) 2007-03-07 2012-04-17 Research In Motion Limited Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting
US8050403B2 (en) 2007-03-06 2011-11-01 Research In Motion Limited Method and apparatus for generating a public key in a manner that counters power analysis attacks
CN101911582B (zh) * 2008-01-18 2012-09-05 三菱电机株式会社 密码参数设定装置、密钥生成装置、密码系统、密码参数设定方法和密钥生成方法
US7991154B2 (en) * 2008-05-14 2011-08-02 Univeristy of Castilla-La Mancha Exponentiation method using multibase number representation
US8369517B2 (en) * 2008-08-12 2013-02-05 Inside Secure Fast scalar multiplication for elliptic curve cryptosystems over prime fields
JP5225115B2 (ja) * 2009-01-15 2013-07-03 株式会社東芝 Naf変換装置
US8457305B2 (en) * 2009-11-13 2013-06-04 Microsoft Corporation Generating genus 2 curves from invariants
US9144756B2 (en) 2010-05-19 2015-09-29 Dionex Corporation Functionalized substrates with aromatic stacking properties
CN105289536B (zh) 2011-02-14 2019-07-09 迪奥内克斯公司 液相色谱柱
FR2997780B1 (fr) * 2012-11-07 2016-01-22 Inside Secure Procede de cryptographie comprenant une operation d'exponentiation modulaire
US20150033016A1 (en) * 2013-07-23 2015-01-29 Battelle Memorial Institute Systems and methods for securing real-time messages
US9645794B2 (en) * 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography
CN110199339B (zh) * 2017-01-20 2022-07-12 日本电信电话株式会社 秘密计算系统、秘密计算装置、秘密计算方法、记录介质
CN107204856B (zh) * 2017-08-01 2019-10-22 北京智慧云测科技有限公司 一种检测椭圆曲线算法漏洞的方法及装置
CN111756538B (zh) * 2020-06-28 2023-10-13 哈尔滨理工大学 一种基于素数预处理的ecc标量乘法器的实现方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212277B1 (en) * 1998-03-05 2001-04-03 Matsushita Electric Industrial Co., Ltd. Elliptic curve transformation device, utilization device and utilization system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005258228A (ja) * 2004-03-12 2005-09-22 Sony Corp 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
JP4599859B2 (ja) * 2004-03-12 2010-12-15 ソニー株式会社 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
WO2007080825A1 (ja) * 2006-01-16 2007-07-19 Sony Corporation 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
WO2012090288A1 (ja) * 2010-12-27 2012-07-05 富士通株式会社 暗号処理装置、暗号処理方法、およびプログラム
JP5488718B2 (ja) * 2010-12-27 2014-05-14 富士通株式会社 暗号処理装置、暗号処理方法、およびプログラム
US9401805B2 (en) 2010-12-27 2016-07-26 Fujitsu Limited Encrypting device, encrypting method, and recording medium
US9749135B2 (en) 2010-12-27 2017-08-29 Fujitsu Limited Encrypting device, encrypting method, and recording medium

Also Published As

Publication number Publication date
CN101061526A (zh) 2007-10-24
US7957527B2 (en) 2011-06-07
KR101154695B1 (ko) 2012-06-08
KR20070085269A (ko) 2007-08-27
EP1816624A4 (en) 2008-12-17
EP1816624A1 (en) 2007-08-08
US20070291937A1 (en) 2007-12-20
WO2006054559A1 (ja) 2006-05-26
CN101061526B (zh) 2012-07-18

Similar Documents

Publication Publication Date Title
KR101154695B1 (ko) 암호 처리 연산 장치
JP4752313B2 (ja) 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
JP4513752B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US7991154B2 (en) Exponentiation method using multibase number representation
US7835517B2 (en) Encryption processing apparatus, encryption processing method, and computer program
JP2004507789A (ja) 高速強化暗号の方法および装置
Chuengsatiansup et al. PandA: Pairings and arithmetic
EP1578054B1 (en) Cryptography-processing method, cryptography-processing apparatus and computer program
US7177422B2 (en) Elliptic curve encryption processing method, elliptic curve encryption processing apparatus, and program
Gayoso Martínez et al. Secure elliptic curves in cryptography
Gutub Efficient utilization of scalable multipliers in parallel to compute GF (p) elliptic curve cryptographic operations
JP2005020735A (ja) データ処理装置におけるサイドチャネル攻撃防止
JP2004163687A (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム
KR20170113268A (ko) 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치
Fan et al. Constructing hyperelliptic covers for elliptic curves over quadratic extension fields
CA2631276A1 (en) Exponentiation method using multibase number representation
Güneysu et al. Modular Integer Arithmetic for Public Key Cryptography
JP2008020757A (ja) 暗号処理装置、および暗号処理演算方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070801

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20090812