JP4688886B2 - 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号システム及び楕円曲線暗号パラメータ生成プログラム - Google Patents

楕円曲線暗号パラメータ生成装置及び楕円曲線暗号システム及び楕円曲線暗号パラメータ生成プログラム Download PDF

Info

Publication number
JP4688886B2
JP4688886B2 JP2007553794A JP2007553794A JP4688886B2 JP 4688886 B2 JP4688886 B2 JP 4688886B2 JP 2007553794 A JP2007553794 A JP 2007553794A JP 2007553794 A JP2007553794 A JP 2007553794A JP 4688886 B2 JP4688886 B2 JP 4688886B2
Authority
JP
Japan
Prior art keywords
elliptic curve
unit
pairing
integer
prime
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.)
Active
Application number
JP2007553794A
Other languages
English (en)
Other versions
JPWO2007080633A1 (ja
Inventor
克幸 高島
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2007080633A1 publication Critical patent/JPWO2007080633A1/ja
Application granted granted Critical
Publication of JP4688886B2 publication Critical patent/JP4688886B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • 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
    • H04L9/3073Public 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 involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • 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/7204Prime number generation or prime number testing

Landscapes

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

Description

この発明は、楕円曲線ペアリング演算を用いた暗号演算装置及び楕円曲線ペアリング演算を用いた暗号演算装置に設定する楕円曲線暗号パラメータを生成する装置に関する。特に、楕円暗号ペアリング演算を高速化し、かつ、楕円曲線ペアリング演算を用いた暗号の安全性レベルを容易に変更できる楕円曲線暗号パラメータを生成する装置に関する。
近年、楕円曲線上のペアリング演算を利用した暗号方式(例えば、非特許文献3)が注目されている。この暗号方式によれば、ID(Identifier)情報などに基づいて、利用者の公開鍵を生成することができるため、公開鍵の正当性を保証する必要がない。
一方、楕円曲線上のペアリング演算を、コンピュータなどの演算装置を用いて行う場合、その計算量が多く、演算能力の低い演算装置を用いて、いかに速くペアリング演算を行うかが課題となっている。この課題を解決する方法として、非特許文献1や非特許文献2が提案されている。
また、これらの暗号技術の安全性は、現存するコンピュータなどの演算装置の演算能力によれば、暗号を解読するのに膨大な時間がかかることに基づいている。
M.Scott、"Faster pairings using an elliptic curve endomorphism"、to appear in Indocrypt 2005、Springer Verlag、(2005). M.Scott、"Scaling security in pairing−based protocols"、available at http://eprint.iacr.org、2005. 境、大岸、笠原、"楕円曲線上のペアリングを用いた暗号方式"、2001年 暗号と情報セキュリティシンポジウム(SCIS 2001).
従来、楕円曲線上の点からなる加法群の群位数として、特殊な形式を有する群位数を用いることにより、楕円曲線上のペアリング演算を高速化している。
群位数のビット数は、楕円曲線ペアリング暗号の安全性を決める要素の一つである。
しかし、コンピュータなどの演算装置の演算能力は日々向上しており、暗号の安全性が脅かされる可能性がある。
したがって、群位数の形式または群位数を固定して楕円曲線上のペアリング演算を高速化した場合であっても、暗号の安全性レベルを容易に変更できるようにしておかなければならないという課題がある。
この発明にかかる楕円曲線暗号パラメータ生成装置は、
情報を記憶する記憶装置と、
情報を出力する出力装置と、
演算を行う演算装置と、
上記演算装置を用いて、素数rを生成し、上記記憶装置を用いて、生成した上記素数rを記憶する素数生成部と、
上記素数生成部が生成した素数rを上記記憶装置から読み出し、上記演算装置を用いて、楕円曲線暗号演算における有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数として上記素数rが適切であるか否かを判断する群位数適性判断部と、
楕円曲線暗号演算における有限体K上の楕円曲線E上の点からなる加法群E(K)の群位数として上記素数rが適切であると、上記群位数適性判断部が判断した場合に、
上記素数生成部が生成した素数rを上記記憶装置から読み出し、上記出力装置を用いて、上記素数rを群位数候補として出力する群位数候補出力部と、
を有することを特徴とする。
上記群位数適性判断部は、
上記素数生成部が生成した素数rを上記記憶装置から読み出し、上記演算装置を用いて、上記素数rから1を減じて、自然数r−1を求め、上記記憶装置を用いて、求めた上記自然数r−1を記憶し、
上記演算装置を用いて、所定の範囲内の自然数kを生成し、上記記憶装置を用いて、生成した上記自然数kを記憶し、
求めた上記自然数r−1と、生成した上記自然数kとを上記記憶装置から読み出し、上記演算装置を用いて、上記自然数kが上記自然数r−1の約数であるか否かを判断し、
上記所定の範囲内のすべての上記自然数kが上記自然数r−1の約数であると判断した場合に、
上記演算装置を用いて、楕円曲線暗号演算における有限体K上の楕円曲線E上の点からなる加法群E(K)の群位数として上記素数rが適切であると判断する
ことを特徴とする。
上記群位数適性判断部は、
上記演算装置を用いて、2以上、所定の閾値2kmax以下の偶数の範囲内で上記自然数kを生成し、上記記憶装置を用いて、生成した上記自然数kを記憶する
ことを特徴とする。
上記素数生成部は、
上記演算装置を用いて、上記素数rのハミング重みが所定の値以下である素数rを生成し、上記記憶装置を用いて、生成した上記素数rを記憶する
ことを特徴とする。
上記素数生成部は、
上記演算装置を用いて、自然数λを生成し、上記記憶装置を用いて、生成した上記自然数λを記憶し、
生成した上記自然数λを上記記憶装置から読み出し、上記演算装置を用いて、所定の2次多項式f(x)=ax+bx+c(ただし、a、b、cは整数、xは変数)に、上記自然数λを代入して、整数f(λ)=aλ+bλ+cを求め、上記記憶装置を用いて、求めた上記整数f(λ)を記憶し、
求めた上記整数f(λ)を上記記憶装置から読み出し、上記演算装置を用いて、上記整数f(λ)の素因数rを求め、上記記憶装置を用いて、求めた上記素因数rを記憶し、
求めた上記素因数rを上記記憶装置から読み出し、上記出力装置を用いて、上記素因数rを素数rとして出力する
ことを特徴とする。
上記素数生成部は、
求めた上記整数f(λ)と、求めた上記素因数rとを上記記憶装置から読み出し、上記演算装置を用いて、上記整数f(λ)を上記素因数rで除して、商n=f(λ)/rを求め、上記記憶装置を用いて、求めた上記商nを記憶し、
求めた上記商nを上記記憶装置から読み出し、上記演算装置を用いて、上記商nが所定の整数以下であるか否かを判断し、
上記商nが所定の整数以下であると判断した場合に、
求めた上記素因数rを上記記憶装置から読み出し、上記出力装置を用いて、上記素因数rを素数rとして出力する
ことを特徴とする。
上記素数生成部は、
上記所定の2次多項式f(x)として、x+x+1またはx+1を用い、上記演算装置を用いて、上記整数f(λ)を求め、上記記憶装置を用いて、求めた上記整数f(λ)を記憶する
ことを特徴とする。
上記素数生成部は、
上記演算装置を用いて、上記自然数λのハミング重みが所定の値以下である自然数λを生成し、上記記憶装置を用いて、生成した上記自然数λを記憶する
ことを特徴とする。
上記素数生成部は、
特定の形式を有する群位数に特化することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定することができる素数rを、上記演算装置を用いて生成し、上記記憶装置を用いて、生成した上記素数rを記憶する
ことを特徴とする。
上記素数生成部は、
有限体K上の楕円曲線E上の自己準同型写像φを利用することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定することができる素数rを、上記演算装置を用いて生成し、上記記憶装置を用いて、生成した上記素数rを記憶する
ことを特徴とする。
上記素数生成部は、
上記自己準同型写像φとして、効率的に演算可能な自己準同型写像を利用することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定することができる素数rを、上記演算装置を用いて生成し、上記記憶装置を用いて、生成した上記素数rを記憶する
ことを特徴とする。
上記素数生成部は、
上記自己準同型写像φとして、上記自己準同型写像φがなす環の判別式Dの絶対値が所定の値よりも小さい自己準同型写像を利用することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定することができる素数rを、上記演算装置を用いて生成し、上記記憶装置を用いて、生成した上記素数rを記憶する
ことを特徴とする。
上記素数生成部は、
上記楕円曲線Eとして、Y=X+bを用い、上記自己準同型写像φとして、(x,y)→(βx,y)(ただし、βは有限体K上における1の原始3乗根)を利用することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定することができる素数rを、上記演算装置を用いて生成し、上記記憶装置を用いて、生成した上記素数rを記憶する
ことを特徴とする。
上記素数生成部は、
上記楕円曲線Eとして、Y=X+aXを用い、上記自己準同型写像φとして、(x,y)→(−x,iy)(ただし、iは有限体K上における1の原始4乗根)を利用することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定することができる素数rを、上記演算装置を用いて生成し、上記記憶装置を用いて、生成した上記素数rを記憶する
ことを特徴とする。
上記群位数候補出力部は、
楕円曲線ペアリング演算における有限体Kの拡大体K’=GF(q)の拡大次数kを所定の範囲内で変化させた場合に、上記楕円曲線暗号演算装置が特化した群位数の形式と、同一の形式を有する素数rを、上記出力装置を用いて、上記群位数候補として出力する
ことを特徴とする。
上記群位数候補出力部は、
楕円曲線ペアリング演算における有限体Kの拡大体K’=GF(q)の拡大次数kを所定の範囲内で変化させた場合に、同一の群位数として設定することができる素数rを、上記出力装置を用いて、上記群位数候補として出力する
ことを特徴とする。
上記群位数候補出力部は、
楕円曲線ペアリング演算における有限体Kの拡大体K’=GF(q)の拡大次数kを2以上、所定の閾値2kmax以下の偶数の範囲内で変化させた場合に、同一の群位数として設定することができる素数rを、上記出力装置を用いて、上記群位数候補として出力する
ことを特徴とする。
上記楕円曲線暗号パラメータ生成装置は、更に、
情報を入力する入力装置と、
上記入力装置を用いて、楕円曲線ペアリング演算における有限体Kの拡大体K’=GF(q)の拡大次数kを入力し、上記記憶装置を用いて、入力した上記拡大次数kを記憶する拡大次数入力部と、
上記入力装置を用いて、上記群位数候補出力部が出力した群位数候補のなかから選択した素数rを群位数rとして入力し、上記記憶装置を用いて、入力した上記群位数rを記憶する群位数入力部と、
上記群位数入力部が入力した群位数rと、上記拡大次数入力部が入力した拡大次数kとを上記記憶装置から読み出し、上記演算装置を用いて、上記群位数rと、上記拡大次数kとに基づいて、上記楕円曲線暗号演算における有限体Kの位数qを定め、上記記憶装置を用いて、定めた上記有限体Kの位数qを記憶する有限体位数決定部と、
定めた上記有限体Kの位数qを上記記憶装置から読み出し、上記出力装置を用いて、上記有限体Kの位数qを出力する有限体位数出力部と、
を有することを特徴とする。
上記有限体位数決定部は、
所定の既約多項式pol(x)を用いて有限体Kを拡大体K’へ拡大することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、有限体Kの位数として設定することができる位数qを、上記演算装置を用いて定め、上記記憶装置を用いて、定めた上記有限体Kの位数qを記憶する
ことを特徴とする。
上記有限体位数決定部は、
既約多項式pol(x)として、pol(x)=x−γ(ただし、xは有限体K上における変数、γは有限体Kの乗法群K*の元)を用いて有限体Kを拡大体K’へ拡大することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、有限体Kの位数として設定することができる位数qを、上記演算装置を用いて定め、上記記憶装置を用いて、定めた上記有限体Kの位数qを記憶する
ことを特徴とする。
上記有限体位数決定部は、
上記演算装置を用いて、上記有限体Kの位数として設定することができる位数の候補qを生成し、上記記憶装置を用いて、生成した上記位数の候補qを記憶し、
上記拡大次数入力部が入力した拡大次数kと、上記位数の候補qとを上記記憶装置から読み出し、上記演算装置を用いて、以下の3つの条件:
(1)拡大次数kのすべての素因数が、上記有限体Kの元γの位数Lの約数であること。
(2)拡大次数kのすべての素因数が、(q−1)/Lの約数でないこと。
(3)拡大次数kが4の倍数である場合には、q−1も4の倍数であること。
のすべてを満たす有限体Kの元γが存在するか否かを判断し、
上記演算装置を用いて、上記3つの条件すべてを満たす有限体Kの元γが存在すると判断した場合に、
上記演算装置を用いて、求めた上記位数の候補qを、上記有限体Kの位数として設定することができると判断する
ことを特徴とする。
上記有限体位数決定部は、
上記演算装置を用いて、上記有限体Kの位数として設定することができる位数の候補qを生成し、上記記憶装置を用いて、生成した上記位数の候補qを記憶し、
上記拡大次数kを上記記憶装置から読み出し、上記演算装置を用いて、上記拡大次数kを素因数分解して、すべての素因数πを求め、記憶装置を用いて、求めたすべての素因数πを記憶し、
求めた上記すべての素因数πを記憶装置から読み出し、上記演算装置を用いて、上記すべての素因数πの積Πを計算し、上記記憶装置を用いて、計算した積Πを記憶し、
上記拡大次数kを上記記憶装置から読み出し、上記演算装置を用いて、上記拡大次数kが4の倍数であるか否かを判断して、上記拡大次数kが4の倍数であると判断した場合に、計算した上記積Πを上記記憶装置から読み出し、上記演算装置を用いて、上記積Πを2倍して、積2Πを計算し、上記記憶装置を用いて、計算した積2Πを、新たな積Πとして記憶し、
生成した上記位数の候補qを上記記憶装置から読み出し、上記演算装置を用いて、上記位数の候補qから1を減じて、整数q−1を計算し、上記記憶装置を用いて、計算した上記整数q−1を記憶し、
計算した上記整数q−1と、計算した上記積Πとを記憶装置から読み出し、上記演算装置を用いて、上記整数q−1が上記積Πの倍数であるか否かを判断し、
上記整数q−1が上記積Πの倍数であると判断した場合に、
計算した上記整数q−1と、計算した上記積Πとを上記記憶装置から読み出し、上記演算装置を用いて、上記整数q−1を上記積Πで除して、商N=(q−1)/Lを計算し、上記記憶装置を用いて、求めた上記商Nを記憶し、
計算した上記商Nと、求めた上記すべての素因数πとを上記記憶装置から読み出し、上記演算装置を用いて、上記商Nが上記素因数πの倍数であるか否かを判断し、
上記すべての素因数πについて、上記商Nが上記素因数πの倍数でないと判断した場合に、
上記演算装置を用いて、生成した上記位数の候補qを、上記有限体Kの位数として設定することができると判断する
ことを特徴とする。
この発明にかかる楕円曲線暗号演算装置は、
情報を入力する入力装置と、
情報を記憶する記憶装置と、
演算を行う演算装置と、
上記入力装置を用いて、楕円曲線暗号演算における有限体K=GF(q)の位数qを入力し、上記記憶装置を用いて、入力した上記位数qを記憶する有限体位数入力部と、
上記入力装置を用いて、楕円曲線暗号演算における有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数であって、特定の形式を有する群位数rを入力し、上記記憶装置を用いて、入力した上記群位数rを記憶する群位数入力部と、
上記有限体位数入力部が入力した位数qと、上記群位数入力部が入力した群位数rとを上記記憶装置から読み出し、上記演算装置を用いて、上記位数qと、上記群位数入力部が入力した群位数rとに基づいて、特定の形式を有する群位数に特化することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行う楕円曲線ペアリング演算部と、
を有することを特徴とする。
上記楕円曲線ペアリング演算部は、
有限体K上における楕円曲線E上の自己準同型写像φを利用することにより高速化した楕円曲線ペアリング演算により、上記演算装置を用いて、楕円曲線ペアリング演算を行う
ことを特徴とする。
上記楕円曲線ペアリング演算部は、
上記自己準同型写像φとして、効率的に演算可能な自己準同型写像を利用することにより高速化した楕円曲線ペアリング演算により、上記演算装置を用いて、楕円曲線ペアリング演算を行う
ことを特徴とする。
上記楕円曲線ペアリング演算部は、
上記自己準同型写像φとして、上記自己準同型写像φがなす環の判別式Dの絶対値が所定の値よりも小さい自己準同型写像を利用することにより高速化した楕円曲線ペアリング演算により、上記演算装置を用いて、楕円曲線ペアリング演算を行う
ことを特徴とする。
上記楕円曲線ペアリング演算部は、
上記楕円曲線Eとして、Y=X+bを用い、
上記自己準同型写像φとして、(x,y)→(βx,y)(ただし、βは有限体K上における1の原始3乗根)を利用することにより高速化した楕円曲線ペアリング演算により、上記演算装置を用いて、楕円曲線ペアリング演算を行う
ことを特徴とする。
上記楕円曲線ペアリング演算部は、
上記楕円曲線Eとして、Y=X+aXを用い、
上記自己準同型写像φとして、(x,y)→(−x,iy)(ただし、iは有限体K上における1の原始4乗根)を利用することにより高速化した楕円曲線ペアリング演算により、上記演算装置を用いて、楕円曲線ペアリング演算を行う
ことを特徴とする。
この発明にかかる楕円曲線暗号演算装置は、
情報を入力する入力装置と、
情報を記憶する記憶装置と、
演算を行う演算装置と、
上記入力装置を用いて、楕円曲線暗号演算における有限体K=GF(q)の位数qを入力し、上記記憶装置を用いて、入力した上記位数qを記憶する有限体位数入力部と、
上記有限体位数入力部が入力した位数qを上記記憶装置から読み出し、上記演算装置を用いて、上記位数qと、楕円曲線暗号演算における有限対K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数として、あらかじめ定めた特定の群位数rとに基づいて、上記特定の群位数rに特化することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行う楕円曲線ペアリング演算部と、
を有することを特徴とする。
この発明にかかる楕円曲線暗号パラメータ生成プログラムは、
情報を記憶する記憶装置と、情報を出力する出力装置と、演算を行う演算装置とを有するコンピュータを、
上記演算装置を用いて、素数rを生成し、上記記憶装置を用いて、生成した上記素数rを記憶する素数生成部と、
上記素数生成部が生成した素数rを上記記憶装置から読み出し、上記演算装置を用いて、楕円曲線暗号演算における有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数として上記素数rが適切であるか否かを判断する群位数適性判断部と、
楕円曲線暗号演算における有限体K上の楕円曲線E上の点からなる加法群E(K)の群位数として上記素数rが適切であると、上記群位数適性判断部が判断した場合に、
上記素数生成部が生成した素数rを上記記憶装置から読み出し、上記出力装置を用いて、上記素数rを、群位数候補として出力する群位数候補出力部と、
を有する楕円曲線暗号パラメータ生成装置として機能させることを特徴とする。
この発明にかかる楕円曲線暗号演算プログラムは、
情報を入力する入力装置と、情報を記憶する記憶装置と、演算を行う演算装置とを有するコンピュータを、
上記入力装置を用いて、楕円曲線暗号演算における有限体K=GF(q)の位数qを入力し、上記記憶装置を用いて、入力した上記位数qを記憶する有限体位数入力部と、
上記入力装置を用いて、楕円曲線暗号演算における有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数であって、特定の形式を有する群位数rを入力し、上記記憶装置を用いて、入力した群位数rを記憶する群位数入力部と、
上記有限体位数入力部が入力した位数qと、上記群位数入力部が入力した群位数rとを上記記憶装置から読み出し、上記演算装置を用いて、上記位数qと、上記群位数rとに基づいて、特定の形式を有する群位数に特化することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行う楕円曲線ペアリング演算部と、
を有する楕円曲線暗号演算装置として機能させることを特徴とする。
この発明にかかる楕円曲線暗号パラメータ生成装置によれば、
情報を記憶する記憶装置と、
情報を出力する出力装置と、
演算を行う演算装置と、
上記演算装置を用いて、素数rを生成し、上記記憶装置を用いて、生成した上記素数rを記憶する素数生成部と、
上記素数生成部が生成した素数rを上記記憶装置から読み出し、上記演算装置を用いて、楕円曲線暗号演算における有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数として上記素数rが適切であるか否かを判断する群位数適性判断部と、
楕円曲線暗号演算における有限体K上の楕円曲線E上の点からなる加法群E(K)の群位数として上記素数rが適切であると、上記群位数適性判断部が判断した場合に、
上記素数生成部が生成した素数rを上記記憶装置から読み出し、上記出力装置を用いて、上記素数rを群位数候補として出力する群位数候補出力部と、
を有するので、
楕円曲線暗号の安全性のレベルを、容易に変更することが可能な群位数の候補を求めることができるという効果を奏する。
実施の形態1.
実施の形態1を、図1〜図11を用いて説明する。
公開鍵暗号通信においては、利用者ごとに秘密鍵xと公開鍵yの組が用意され、秘密鍵xは、各利用者が秘密に保持しておく。公開鍵yは利用者自身以外の一般に公開する。利用者Bが利用者Aに秘密にデータを送りたい時は、利用者Bは利用者Aに対応する公開鍵yを用いてデータを暗号化する。この暗号文は、秘密鍵xを知る利用者Aにしか復号できない。
ここで、利用者Bは、公開鍵yが利用者Aに対応するものであるか検証する必要がある。すなわち、公開鍵yが本当に利用者Bが公開したものであるという保証をする必要がある。そのような保証が得られなければ、悪意の第三者が自己の秘密鍵x’に対応する公開鍵y’を、あたかも利用者Bのものであるかのようにして公開し、利用者Aがそれを知らずに公開鍵y’を用いて暗号化した暗号文を受信して、自己の秘密鍵x’で復号することによって、盗聴が可能となってしまうからである。
そのため、従来は、PKI(Public Key Infrastructure)というインフラストラクチャを用いて、利用者と公開鍵との対応を保証することを行っていた。
一方、この実施の形態における楕円曲線暗号システム800は、利用者が公開しているID情報に基づいて、秘密鍵及び公開鍵を生成する。このようなIDベース公開鍵暗号方式では、名前や機器番号のような識別名(ID)に基づいて生成した公開鍵を用いることができるので、公開鍵が本当に利用者のものであるかを検証する必要がない。
図1は、この実施の形態における公開されたID情報に基づく楕円曲線暗号システム800の全体構成の一例を示すシステム構成図である。
センタ300は、楕円曲線暗号パラメータ510を生成し、公開する。
楕円曲線暗号演算装置200a,200bは、センタ300が公開した楕円曲線暗号パラメータ510を取得し、記憶する。
楕円曲線暗号演算装置200bは、自己のID(Identifier)情報521を公開する。
センタ300は、楕円曲線暗号演算装置200bが公開したID情報521を取得し、取得したID情報521に基づいて、楕円曲線暗号演算装置200bの秘密鍵531を生成する。
センタ300は、生成した秘密鍵531を、秘密裏に楕円曲線暗号演算装置200bに対して送信する。
楕円曲線暗号演算装置200bは、センタ300が送信した秘密鍵531を受信し、記憶する。
楕円曲線暗号演算装置200aは、楕円曲線暗号演算装置200bが公開したID情報521を取得し、記憶した楕円曲線暗号パラメータに基づいて、楕円曲線暗号演算装置200bの公開鍵を算出する。
楕円曲線暗号演算装置200aは、算出した公開鍵を用いて、楕円曲線暗号演算装置200bに対して送信したい平文601を暗号化し、暗号化した暗号文651を楕円曲線暗号演算装置200bに対して送信する。
楕円曲線暗号演算装置200bは、楕円曲線暗号演算装置200bが送信した暗号文651を受信し、記憶した秘密鍵531を用いて復号して、元の平文601を取得する。
このように、公開されたID情報に基づく楕円曲線暗号システムでは、秘密鍵も利用者のID情報に基づいて生成するので、第三者が秘密鍵を生成できないようにする必要がある。そのため、楕円曲線ペアリング演算を用いることにより、第三者が秘密鍵を生成できないようにしている(非特許文献3など)。
この実施の形態で説明する楕円曲線暗号パラメータ生成装置100及び楕円曲線暗号演算装置200は、楕円曲線ペアリング演算を用いる方式の楕円曲線暗号システムに用いられるものであり、その一例として公開されたID情報に基づく楕円曲線暗号システムについて説明する。しかし、楕円曲線ペアリング演算を用いる方式の楕円曲線暗号システムであれば、公開されたID情報に基づく楕円曲線暗号システムに限らず、他の楕円曲線暗号システムについても、適用することが可能である。
楕円曲線ペアリング演算を用いる方式の楕円曲線暗号システムは、離散対数問題を解くには、膨大な計算量が必要となるため、第三者が秘密鍵など秘密の情報を知ることが(現在の計算機の能力では)ほぼ不可能であることに基づいて構築されている。
ここで、離散対数問題とは、代数群(G,+)(加法が定義され、加法について群であるものとする。以下、代数群Gという)の2つの要素(元)g、gに対して、g=mg(mは、自然数。mgは、gをm回加算したもの)を満たすようなmを求める問題である。代数群Gの要素の数(位数。要素の位数と区別するため、群位数ともいう)が大きい場合、離散対数問題の多くは、計算量的に、解くことが非常に困難になることが知られている。この事実を利用して公開鍵暗号を設計することができる。
楕円曲線ペアリング演算を用いる方式の楕円曲線暗号システムには、2種類の離散対数問題が関係している。
1つは、代数群Gとして、有限体K上における楕円曲線E上の点がなす加法群E(K)を考えた場合の離散対数問題である。
もう1つは、代数群Gとして、有限体K上における楕円曲線E上の2点P、Qの直積を、有限体K’上に写像したペアリングe(P,Q)がなす乗法群K’を考えた場合の離散対数問題である。
楕円曲線ペアリングとは、有限体K上における楕円曲線E上の2点P、Qに対して計算される値e(P,Q)である。楕円曲線ペアリング演算を用いる方式の楕円曲線暗号システムにおいては、双線形性を有するペアリングが用いられる。ペアリングの双線形性とは、整数a、bに対して、e(aP,bQ)=e(P,Q)ab(aPは、加法群E(K)において点Pをa回加算した点。bQは、加法群E(K)において点Qをb回加算した点。e(・,・)は、有限体K’の乗法群K’上に値をとるペアリング。e(・,・)abは、乗法群K’上においてe(・,・)をa×b回乗算したもの)を満たすことをいう。このような性質をもつペアリングとして、ヴェイユ(Weil)ペアリングや、テイト(Tate)ペアリングが知られている。
ペアリングを用いたIDベース公開鍵暗号の多くは、双線形ディフィー−ヘルマン(Diffie−Hellman)問題の困難性に基づいて構築されている。双線形ディフィー−ヘルマン問題とは、加法群E(K)の要素であるaP、bP、cQ(a,b,cは、整数。P,Qは、有限体K上における楕円曲線E上の点)が既知である場合に、e(P,Q)abcを計算せよという問題である。
双線形ディフィー−ヘルマン問題の困難性を確保するには、楕円曲線離散対数問題の困難性と有限体乗法群離散対数問題の困難性を確保する必要がある。
楕円曲線離散対数問題の困難性は、有限体K上における楕円曲線E上の点(および無限遠点O)がなす加法群E(K)の要素の数(群位数)rと関連しており、rのビット長が長いほど、楕円曲線離散対数問題を解くことが困難になる。
また、有限体乗法群離散問題の困難性は、有限体K’の要素の数(位数)qと関連しており、qのビット長が長いほど、有限体乗法群離散問題を解くことが困難になる。ここで、qは、有限体Kの要素の数(位数)であり、kは自然数である。
したがって、双線形ディフィー−ヘルマン問題の困難性を確保するためには、加法群E(K)の群位数r及び有限体K’の位数qのビット長が適当な長さになるようにパラメータを設定する必要がある。
なお、ヴェイユペアリングやテイトペアリングは、楕円曲線に限らず、超楕円曲線についても計算することができる。また、その他の一般的な代数曲線についても計算することができる。この実施の形態では、楕円曲線についてヴェイユペアリング、テイトペアリングを計算する場合について説明するが、これは一例にすぎず、超楕円曲線やその他の一般的な代数曲線におけるペアリングを用いる方式の暗号システムについても、適用可能である。
位数qの有限体(Finite Field、ガロア体(Galois Field)ともいう)を、GF(q)と表す。有限体GF(q)の要素の数(位数)qは、q=p(pは、素数。nは、自然数)である。
n=1の場合、すなわち、qが素数pと等しい場合、有限体GF(p)は、0〜p−1の整数の集合とみなせる。
有限体GF(p)における加算は、通常の整数の加算を用いることによって、計算される。ただし、計算結果がpより大きくなった場合は、pで割った余りを計算結果とする。すなわち、有限体GF(p)の元aと元bとの加算は、(a+b)mod p(modは、法を表す)を計算することにより、コンピュータなどの演算装置を用いて計算することができる。
有限体GF(p)における減算は、加法における逆元の加算として定義される。ここで、加法における逆元とは、足すと加法における単位元(0)になる元をいう。元aの逆元を−aとすると、a+(−a)=0(mod p)であるから、−a=p−aである。したがって、有限体GF(p)の元aから元bを減じる減算は、(a+p−b)mod q(あるいは、もっと単純に(a−b)mod p)を計算することにより、コンピュータなどの演算装置を用いて計算することができる。
有限体GF(p)における乗算も、通常の整数の乗算を用いることによって、計算される。加算のときと同様、計算結果がpより大きくなった場合は、pで割った余りを計算結果とする。すなわち、有限体GF(p)の元aと元bとの乗算は、(a×b)mod pを計算することにより、コンピュータなどの演算装置を用いて計算することができる。
有限体GF(p)における除算は、乗法における逆元の乗算として定義される。ここで、乗法における逆元とは、加法のときと同様、掛けると乗法における単位元(1)になる元をいう。元aの逆元をa―1とすると、a×a−1=1(mod p)である。例えば、q=5の場合、2の逆元は3(2×3=6 mod 5=1)、4の逆元は4(4×4=16 mod 5=1)である。したがって、有限体GF(p)の元aを元bで除する除算は、(a×b−1)mod pを計算することにより、コンピュータなどの演算装置を用いて計算することができる。
なお、有限体GF(q)の0以外の元には、必ず乗法における逆元が存在し(有限体の定義による)、有限体GF(q)の元の数は有限であるから、有限回の計算で逆元を求めることができる。
n≧2の場合、すなわち、qが素数pのべき乗の場合、有限体GF(p)は、n−1次多項式f(x)=an−1n−1+an−2n−2+・・・+ax+a(xは、変数。aは、0〜p−1の整数。iは、0〜n−1の整数)の集合とみなせる。
これをコンピュータ上で実現する場合、有限体GF(p)の元は、例えば、係数a(iは、0〜n−1の整数)をn個の整数の配列a[n]として記憶装置に記憶することにより、実現可能である。
有限体GF(p)(n≧2)における加算は、通常の多項式の加算を用いることにより、計算される。すなわち、有限体GF(p)の元f(x)=Σa(iは、0〜n−1の整数)と元g(x)=Σb(iは、0〜n−1の整数)との加算は、Σa+Σb=Σ(a+b)xを計算することにより、計算することができる。なお、a+bがpより大きくなった場合は、n=1の場合と同様、pで割った余りを計算結果とする。
これをコンピュータ上で実現する場合、有限体GF(p)の元は、n個の整数の配列a[n]として記憶装置に記憶されているので、配列a[n]のi番目(iは、0〜n−1の整数)の要素a[i]と、配列b[n]のi番目の要素b[i]とを加算して(必要なら、pで割った余りを求め)、新たな配列c[n]のi番目の要素c[i]として記憶装置に記憶することにより、有限体GF(p)における加算を、コンピュータなどの演算装置を用いて計算することができる。
有限体GF(p)(n≧2)における減算は、n=1の場合と同様、加法における逆元の加算である。
これをコンピュータ上で実現する場合、有限体GF(p)の元は、n個の整数の配列a[n]として記憶装置に記憶されているので、配列a[n]のi番目(iは、0〜n−1の整数)の要素a[i]から配列b[n]のi番目の要素b[i]を減じて(必要なら、pで割った余りを求め)、新たな配列c[n]のi番目の要素c[i]として記憶装置に記憶することにより、有限体GF(p)における減算を、コンピュータなどの演算装置を用いて計算することができる。
有限体GF(p)(n≧2)における乗算は、通常の多項式の乗算を用いることにより、計算される。すなわち、有限体GF(p)の元f(x)=Σa(iは、0〜n−1の整数)と元g(x)=Σb(jは、0〜n−1の整数)との乗算は、Σa×Σb=Σ(a×b)x(i+j)を計算することにより、計算することができる。なお、a×bがpより大きくなった場合は、n=1の場合と同様、pで割った余りを計算結果とする。また、この計算結果は、最大で2(n−1)次多項式となるが、計算結果がn次以上の多項式となった場合は、n次の既約多項式pol(x)で割った余りを求め、計算結果とする。
ここで、既約多項式pol(x)は、pol(x)=Σa(xは、変数。aは、0〜p−1の整数。iは、0〜nの整数。a≠0)の形をした多項式であり、既約(有限体GF(p)の元をpol(x)に代入した場合、pol(x)=0となる元が存在しないこと)であることが必要である。
数学的には、既約でありさえすれば、どのような既約多項式pol(x)を選択しても同型の有限体となることが知られているが、これをコンピュータ上で実現する場合には、既約多項式として、pol(x)=x−γ(γ(=a)は、0〜p−1の整数)を用いることが多い。pol(x)=x−γを既約多項式に用いることにより、乗算の結果を既約多項式pol(x)で割った余りを求める演算が高速化できるからである。
すなわち、これをコンピュータ上で実現する場合、有限体GF(p)の元は、n個の整数の配列a[n]として記憶装置に記憶されているので、配列a[n]のi番目(iは、0〜n−1の整数)の要素a[i]と、配列b[n]のj番目(jは、0〜n−1の整数)の要素b[j]との積をとり(必要なら、pで割った余りを求め)、i+j<nの場合は、新たな配列c[n]の(i+j)番目の要素c[i+j]に加算する(配列c[n]は、0で初期化しておく)。i+j≧nの場合は、更にa[i]×b[j]とγとの積をとり(必要なら、pで割った余りを求め)、配列c[n]の(i+j−n)番目の要素c[i+j−n]に加算する(必要なら、pで割った余りを求める)。 これにより、有限体GF(p)における乗算を、コンピュータなどの演算装置を用いて計算することができる。
有限体GF(p)(n≧2)における除算は、n=1の場合と同様、乗法における逆元の乗算である。
これをコンピュータ上で実現するためには、有限体GF(p)の元の乗法における逆元を求める必要がある。このため、有限体GF(p)上で定義される四則演算のうち、除算が最も計算量が多く、時間がかかる。しかし、有限体GF(q)の0以外の元には、必ず乗法における逆元が存在し(有限体の定義による)、有限体GF(q)の元の数は有限であるから、有限回の計算で逆元を求めることができる。したがって、有限体GF(p)における除算を、コンピュータなどの演算装置を用いて計算することができる。
以上のようにして、有限体GF(q)上で定義される四則演算はすべて、コンピュータなどの演算装置を用いて計算することができる。
楕円曲線Eとは、Y=X+aX+b(X,Yは、変数。a,bは、定数)と表される方程式を満たす点(X,Y)の集合である。
有限体GF(q)上における楕円曲線Eとは、X,Y,a,bを有限体GF(q)の要素であるとして、有限体GF(q)上で定義された四則演算に基づいて、方程式Y=X+aX+bを満たす点(X,Y)の集合である。ここで、有限体GF(q)の位数qは、q=p(pは、2でない素数。nは自然数)である。
有限体K=GF(q)上における楕円曲線E上の点の集合に無限遠点Oを加えた集合を、E(K)と表す。
また、E(K)には、加法が定義されている。
すなわち、E(K)の元である点Pと、同じくE(K)の元である点Qとに基づいて、同じくE(K)の元である点Rを求める演算が定義されており、これを楕円曲線上の加法と呼ぶ。
楕円曲線上の加法は、以下のように定義されている。
楕円曲線上の加法の単位元(零元)は、無限遠点Oである。
E(K)の元である点P=(X,Y)について、楕円曲線上の加法の逆元−Pは、−P=(X,−Y)である。
楕円曲線上の加法R=P+Qは、以下のようにして求める。
P≠Qの場合、点Pと点Qとを通る直線lと、楕円曲線Eとの交点R’を求め、その逆元−R’を点Pと点Qの和R=P+Qとする。
P=Qの場合、点Pにおける楕円曲線Eの接線を、直線lとして、点Rを求める。
以上のように、楕円曲線上の加法を定義すると、E(K)は加法についてアーベル群(Abelian Group)となる。以下、これを加法群E(K)と呼ぶ。
なお、ここでは、楕円曲線上の加法を幾何学的に定義したが、この定義を代数的なものに変換することにより、有限体K上で定義された四則演算を用いて、楕円曲線上の加法を計算することができる。
これをコンピュータ上で実現するためには、E(K)の元を、有限体Kの元Xと、有限体Kの元Yの組(2つの要素を持つ配列)として記憶装置に記憶する。有限体K=GF(p)の元は、n個の整数の配列として記憶装置に記憶するので、E(K)の元は、n×2=2n個の整数の配列として記憶装置に記憶される。
上記説明した通り、コンピュータなどの演算装置を用いて、有限体K上で定義された四則演算を計算することができるので、コンピュータなどの演算装置を用いて、楕円曲線上の加法を計算することも可能である。
加法群E(GF(q))を利用した公開鍵暗号を楕円暗号(または楕円曲線暗号)という。
特に、加法群E(GF(q))の位数(要素の数)が、大素数rで割り切れる場合が暗号的に重要である。
そのとき、r|q−1(q−1がrで割り切れること、すなわち、q−1がrの倍数であることを表す)となる最小のk(kは、自然数)に対し、有限体GF(q)に値をとるペアリングe(P,Q)が定義される。
このペアリングを利用した公開鍵暗号を楕円ペアリング暗号(または楕円曲線ペアリング暗号)という。
上記説明したように、有限体GF(q)の位数qのビット長が長いほど、一般的に、有限体乗法群離散対数問題を解くことが難しくなるので、暗号が解読される危険は低くなる。
他方、kが大きいと、暗号演算(鍵の生成、平文の暗号化、暗号文の復号など)の演算量が増加する。特に、ユビキタス社会においては、ICカードなど、演算能力が低い演算装置を備えた装置においても、暗号演算を行う必要があるため、あまりkを大きくすることはできない。
このように、ペアリングを暗号に使用するためには、安全性と演算能力とのバランス(実用的なコストで製造できる演算装置が、実用的な速度で暗号演算を行うことが可能であり、かつ、事実上、暗号を第三者に解読される危険が極めて低いこと)を実現するため、kが適当な大きさであることが必要である。
その条件を満たすように、楕円曲線を選択することが従来の楕円曲線パラメータ生成とは異なるペアリング暗号実現のための課題である。
暗号の安全性は、解読のための演算量が膨大で、現存しているコンピュータなどの演算装置の演算能力では、解読に何十年、何百年もかかることにより、確保されている。しかし、コンピュータなどの演算装置の演算能力は、日々向上しているため、今日まで安全であったものが、明日には安全でなくなる可能性もある。
そのため、安全性と演算能力とのバランス点も、日々変化する。したがって、kを適当な大きさに設定したあとで、安全性を高くする必要が生じた場合に、kを容易に変更できるようにしておくことが望まれる。
また、従来の楕円暗号での主要な演算は、整数aと点Pに対し、スカラー倍点aP(点Pをa回加算したもの)を計算することであったのに対し、楕円ペアリング暗号では、従来のスカラー倍算に加えて、ペアリングe(P、Q)の値を計算することも主要な演算となる。したがって、ペアリングe(P,Q)の値を高速に計算することが必要になっている。
図2は、この実施の形態における楕円曲線暗号演算装置200の外観の一例を示す図である。
図2において、楕円曲線暗号演算装置200は、システムユニット910、CRT(Cathode Ray Tube)やLCD(液晶)の表示画面を有する表示装置901、キーボード902(K/B)、マウス903、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット910は、コンピュータであり、ファクシミリ機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク942(LAN)、ゲートウェイ941を介してインターネット940に接続されている。
なお、ユビキタス社会においては、このようにコンピュータ然としたコンピュータばかりではなく、ICカードなどに組み込まれたコンピュータも存在している。楕円曲線暗号演算装置200は、そのようなコンピュータでもよい。楕円曲線暗号演算装置200は、最低限、演算を行う演算装置と、情報を記憶する記憶装置と、外部と情報をやり取りする入出力装置とを備えていればよい。
図3は、この実施の形態における楕円曲線暗号演算装置200のハードウェア資源の一例を示す図である。
図3において、楕円曲線暗号演算装置200は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置ともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、スキャナ装置907、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード915、キーボード902、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
通信ボード915は、ファクシミリ機932、電話器931、LAN942等に接続されている。通信ボード915は、LAN942に限らず、インターネット940、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940或いはISDN等のWANに接続されている場合、ゲートウェイ941は不用となる。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
上記プログラム群923には、以下に述べる実施の形態の説明において「〜部」、「〜手段」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明するデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital Versatile Disk)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、以下に述べる実施の形態の説明において「〜部」、「〜手段」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、以下に述べる「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」、「〜手段」の手順をコンピュータに実行させるものである。
図4は、この実施の形態における楕円曲線暗号演算装置200の内部ブロックの構成の一例を示すブロック構成図である。
楕円曲線暗号演算装置200は、楕円曲線暗号パラメータ入力部210、ID情報入力部221、平文入力部222、暗号文入力部223、秘密鍵入力部224、暗号演算部230、公開鍵算出部241、暗号文生成部242、暗号文復号部243、暗号文出力部252、平文出力部253、秘密鍵記憶部294などを有する。
楕円曲線暗号パラメータ入力部210は、入力装置を用いて、楕円曲線暗号演算に必要なパラメータを入力し、記憶装置を用いて、入力したパラメータを記憶する。楕円曲線暗号パラメータには、楕円曲線E上の点(X,Y)の座標X,Yが値をとる有限体GF(q)の位数q、ペアリングe(・,・)が値をとる有限体GF(q)の位数qを定める拡大次数k(埋め込み次数(Embedding Degree)ともいう)、楕円曲線E:Y=X+aX+bの係数a,b、加法群E(K)の群位数rなどがある。
楕円曲線暗号パラメータ入力部210は、有限体位数入力部211、拡大次数入力部212、楕円曲線係数入力部213、群位数入力部214などを有する。
有限体位数入力部211は、入力装置を用いて、有限体GF(q)の位数qを入力する。位数qは、例えば、ビット長が320ビットの整数(素数pまたは素数pのべき乗)である。したがって、位数qを記憶装置に記憶するためには、40バイトの記憶領域が必要である。有限体位数入力部211は、記憶装置を用いて、入力した有限体GF(q)の位数qを記憶する。
拡大次数入力部212は、入力装置を用いて、拡大次数kを入力する。拡大次数kは、例えば、2〜20程度の整数である。したがって、拡大次数kを記憶装置に記憶するためには、1バイトの記憶領域があれば十分である。拡大次数入力部212は、記憶装置を用いて、入力した拡大次数kを記憶する。
なお、のちに述べるように、拡大次数kが偶数の場合に、ペアリングe(・,・)を求める演算を高速化できるので、kは偶数であることが好ましい。
楕円曲線係数入力部213は、入力装置を用いて、楕円曲線Eの係数a,bを入力する。係数a,bは、有限体GF(q)の元であるから、qが素数pである場合には、0〜p−1の整数である。したがって、係数a,bを記憶装置に記憶するためには、位数qと同じ40バイトの記憶領域が、それぞれ必要である。楕円曲線係数入力部213は、記憶装置を用いて、入力した楕円曲線Eの係数a,bを記憶する。
群位数入力部214は、入力装置を用いて、加法群E(K)の群位数rを入力する。群位数rのビット長は、qのビット数以下である。したがって、群位数rを記憶装置に記憶するためには、40バイトの記憶領域があれば十分である。群位数入力部214は、記憶装置を用いて、入力した群位数rを記憶する。
ID情報入力部221は、入力装置を用いて、暗号文を送信したい相手のID情報を入力する。ID情報には、例えば、メールアドレス、社員番号、装置の製造番号などがある。ID情報入力部221は、記憶装置を用いて、入力したID情報を記憶する。
公開鍵算出部241は、ID情報入力部221が入力したID情報を、記憶装置から読み出す。公開鍵算出部241は、楕円曲線ペアリング暗号アルゴリズムに基づいて、読み出したID情報から、暗号文を送信したい相手の公開鍵を算出する。この過程において、楕円曲線E上の点の加算や、楕円曲線ペアリングの計算が必要となる。公開鍵算出部241は、暗号演算部230を呼び出すことにより、これらの演算を行う。公開鍵算出部241は、記憶装置を用いて、算出した公開鍵を記憶する。
平文入力部222は、入力装置を用いて、第三者に見られることなく相手に送信したいデータ(平文)を入力する。平文入力部222は、記憶装置を用いて、入力したデータを記憶する。
暗号文生成部242は、平文入力部222が入力したデータと、公開鍵算出部241が算出した公開鍵とを、記憶装置から読み出す。暗号文生成部242は、楕円曲線ペアリング暗号アルゴリズムに基づいて、読み出したデータ及び公開鍵から、暗号文を生成する。この過程において、楕円曲線E上の点の加算や、楕円曲線ペアリングの計算が必要となる。暗号文生成部242も、暗号演算部230を呼び出すことにより、これらの演算を行う。暗号文生成部242は、記憶装置を用いて、生成した暗号文を記憶する。
なお、暗号文のもととなるデータ(平文)は、外部から入力したものでなく、楕円曲線暗号演算装置200の内部で生成したものでもよい。例えば、楕円曲線暗号演算装置200の状態を示すデータや、外部から入力した暗号文を復号して得たデータなどを、記憶装置を用いて記憶しておいて、これに基づいて、暗号文生成部242が暗号文を生成してもよい。
暗号文出力部252は、暗号文生成部242が生成した暗号文を、記憶装置から読み出す。暗号文出力部252は、出力装置を用いて、読み出した暗号文を出力する。例えば、インターネットを介して、送信したい相手に対して、暗号文を送信する。あるいは、無線送信装置を用いて、送信したい相手あるいは中継装置に対して、暗号文を送信する。
秘密鍵入力部224は、入力装置を用いて、楕円曲線暗号演算装置200の秘密鍵を入力する。これは、楕円曲線暗号演算装置200のID情報に基づいて、センタ300が生成し、楕円曲線暗号演算装置200に対して、秘密裏に送信したものである。秘密鍵入力部224は、入力した秘密鍵を、秘密鍵記憶部294に記憶する。
秘密鍵記憶部294は、秘密鍵入力部224が入力した秘密鍵を、記憶装置を用いて記憶する。秘密鍵は、第三者に知られないように保管する必要があるので、秘密鍵記憶部294が用いる記憶装置は、耐タンパ性を有するものであることが好ましい。
暗号文入力部223は、入力装置を用いて、他の楕円曲線暗号演算装置が楕円曲線暗号演算装置200に対して送信した暗号文を入力する。例えば、インターネットを介して、暗号文を受信する。あるいは、無線受信装置を用いて、暗号文を受信する。暗号文入力部223は、記憶装置を用いて、入力した暗号文を記憶する。
暗号文復号部243は、暗号文入力部223が入力した暗号文と秘密鍵記憶部294が記憶した秘密鍵とを、記憶装置から読み出す。暗号文復号部243は、楕円曲線ペアリング暗号アルゴリズムに基づいて、読み出した暗号文及び秘密鍵から、もとのデータ(平文)を復号する。この過程において、楕円曲線E上の点の加算や、楕円曲線ペアリングの計算が必要となる。暗号文復号部243も、暗号演算部230を呼び出すことにより、これらの演算を行う。暗号文復号部243は、記憶装置を用いて、復号したデータ(平文)を記憶する。
平文出力部253は、暗号文復号部243が復号したデータを、記憶装置から読み出す。平文出力部253は、出力装置を用いて、復号したデータを出力する。例えば、表示装置を用いて、復号したデータから生成される画面を表示する。
なお、復号したデータ(平文)は、必ずしも外部に出力する必要はなく、楕円曲線暗号演算装置200の内部で使用してもよい。例えば、楕円曲線暗号演算装置200に対するなんらかのコマンド(例えば、楕円曲線暗号パラメータの設定を変更する命令など)として解釈し、それに基づく動作をしてもよい。
暗号演算部230は、楕円曲線E上の点の加算や、楕円曲線ペアリングの計算など、楕円曲線ペアリング暗号アルゴリズムに基づく暗号演算に必要な演算を行う。
暗号演算部230は、有限体演算部231、楕円曲線演算部232、楕円曲線ペアリング演算部233などを有する。
有限体演算部231は、演算装置を用いて、有限体GF(q)あるいは有限体GF(q)上で定義された加算、減算、乗算、除算などの四則演算を行う。
楕円曲線演算部232は、演算装置を用いて、有限体GF(q)上における楕円曲線E上の点の加算や、スカラー倍(同じ点を、整数回加算した点を求める演算)などの演算を行う。なお、これらの演算を行うに際して、有限体上で定義された四則演算を行う必要がある場合には、有限体演算部231を呼び出すことにより、これらの演算を行う。
楕円曲線ペアリング演算部233は、演算装置を用いて、有限体GF(q)上における楕円曲線E上の2点のペアリングの値を計算するなどの演算を行う。なお、これらの演算を行うに際して、楕円曲線上の点の加算や有限体上で定義された四則演算を行う必要がある場合には、楕円曲線演算部232や有限体演算部231を呼び出すことにより、これらの演算を行う。
なお、コンピュータなどの演算装置を用いて、これらの演算をすることができることは、上記述べた通りである。
図5は、この実施の形態における楕円曲線ペアリング演算部233の内部ブロックの構成の一例を示すブロック構成図である。
楕円曲線ペアリング演算部233は、点入力部331、第一演算部332、補助演算部333、第二演算部334、べき乗演算部335、ペアリング出力部336などを有する。
点入力部331は、ペアリングを求めるべき、有限体GF(q)上における楕円曲線上の点P及び点Qを、例えば暗号文生成部242など、点Pと点Qとのペアリングの値を計算したいブロックから、入力する。例えば、点入力部331をプログラムによって実現する場合には、点P及び点Qを示す整数の配列(またはその配列を示すポインタもしくは参照など)を、関数やサブルーチンの引数として受け取ることにより、点P及び点Qを入力する。点入力部331は、記憶装置を用いて、入力した点P及び点Qを記憶する。
第一演算部332は、点入力部331が入力した点P及び点Qを、記憶装置から読み出す。
第一演算部332は、演算装置を用いて、読み出した点P及び点Qから、ペアリング演算の前半部分を行い、途中経過fを求める。なお、途中経過fは、有限体GF(q)上の値である。
第一演算部332は、記憶装置を用いて、求めた途中経過fを記憶する。
補助演算部333は、第一演算部332から、有限体GF(q)上における楕円曲線上の点3つと整数iとを入力する。ここでは、入力した3つの点を点A,点B,点Qとする。
補助演算部333は、記憶装置を用いて、点A,点B,点Qおよび整数iを記憶する。
補助演算部333は、入力した点A,点B,点Qおよび整数iを記憶装置から読み出す。
補助演算部333は、演算装置を用いて、読み出した点A,点B,点Qから、第一演算部332がペアリング演算をするのに必要な値gと、第二演算部334がペアリング演算をするのに必要な値sとを計算する。ここで、g及びsは、GF(q)上の値である。
補助演算部333は、記憶装置を用いて、計算した値g及びsを記憶する。このとき、sは、有限体GF(q)の元の配列のi番目の要素として、記憶する。
補助演算部333は、記憶したgを、第一演算部332に対して出力する。
第二演算部334は、第一演算部が求めた途中経過fと、補助演算部333が計算した値sとを記憶装置から読み出す。
第二演算部334は、演算装置を用いて、読み出した途中経過f及び値sから、ペアリング演算の後半部分を行い、途中経過f’を求める。なお、途中経過f’は、有限体GF(q)上の値である。
第二演算部334は、記憶装置を用いて、求めた途中経過f’を記憶する。
べき乗演算部335は、第二演算部334が求めた途中経過f’を、記憶装置から読み出す。
べき乗演算部335は、演算装置を用いて、途中経過f’の(q−1)/r乗を計算する。なお、q−1はrの倍数なので、この演算は、f’の整数乗を求めることになる。したがって、f’を有限回掛け合わせることにより計算できる。
べき乗演算部335は、記憶装置を用いて、計算結果を記憶する。
ペアリング出力部336は、べき乗演算部335が計算した計算結果を、記憶装置から読み出す。
ペアリング出力部336は、読み出した計算結果を、楕円曲線ペアリング演算部233を呼び出したブロックに対して、出力する。
参考のため、テイトペアリングの高速化されていない計算方式について説明する。
図6及び図7は、高速化されていない計算方式におけるテイトペアリングのペアリング値を演算する演算処理の流れの一例を示すフローチャート図である。
この演算処理は、ミラー(Miller)アルゴリズムと呼ばれるアルゴリズムを用いている。
ここで、uは、加法群E(GF(q))の群位数rのビット長を表す。rの2進展開をru−1…r(rが最下位ビット)と記す。すなわち、r=Σr(iは、0〜u−1の整数。r=0または1)である。
S101において、楕円曲線ペアリング演算部は、有限体GF(q)上における楕円曲線E上の点Pおよび点Qを入力する。ただし、点Pの位数は、加法群E(GF(q))の群位数rと等しいものとする。すなわち、rP=O(点Pをr回加算すると、無限遠点O(加法群E(GF(q))の単位元)になる)である。なお、有限体GF(q)は、有限体GF(q)の拡大体であるから、有限体GF(q)上における楕円曲線E上の点は、有限体GF(q)上における楕円曲線E上の点に含まれる。楕円曲線ペアリング演算部は、記憶装置を用いて、入力した点Pおよび点Qを記憶する。
S102において、楕円曲線ペアリング演算部は、楕円曲線Eの係数a,bと、加法群E(GF(q))の群位数rとを記憶装置から読み出す。
S103において、楕円曲線ペアリング演算部は、演算装置を用いて、有限体GF(q)上における楕円曲線E上の点をランダムに選ぶ。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)上における楕円曲線E上の点Sを記憶するための記憶領域を確保し、選択した点を点Sとして記憶する。
S104において、楕円曲線ペアリング演算部は、演算装置を用いて、有限体GF(q)上における楕円曲線E上の点Qと点Sとの和を計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)上における楕円曲線E上の点Q’を記憶するための記憶領域を確保し、計算した点Qと点Sとの和を、点Q’として記憶する。
S105において、楕円曲線ペアリング演算部は、有限体GF(q)上における楕円曲線E上の点Pを記憶装置から読み出す。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)上における楕円曲線E上の点Aを記憶するための記憶領域を確保し、読み出した点Pを、点Aとして記憶する。
S106において、楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)上のペアリング値fを記憶するための記憶領域を確保し、有限体GF(q)上の定数1を、ペアリング値fとして記憶する。
S107において、楕円曲線ペアリング演算部は、記憶装置を用いて、整数mを記憶するための記憶領域を確保し、加法群E(GF(q))の群位数rのビット長uを、整数mとして記憶する。
S108において、楕円曲線ペアリング演算部は、点Aを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、点Aにおける楕円曲線Eの接線の方程式l:cX+dY+e=0(X,Yは、有限体GF(q)に値をとる変数。c,d,eは、有限体GF(q)の元)を求める。
具体的には、点A=(X,Y)とすると、方程式lは、(3X +a)(X−X)−2Y(Y−Y)=0であるから、これを変形し、(3X +a)X−2YY+(−3X +aX+2Y )=0となる。したがって、楕円曲線ペアリング演算部は、演算装置を用いて、c=3X +a、d=−2Y、e=−3X +aX+2Y )を計算する。
楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)の元c,d,eを記憶するための記憶領域を確保し、計算した方程式lの係数c,d,eを記憶する。
S109において、楕円曲線ペアリング演算部は、S108で計算した方程式lの係数c,d,eを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式lで表される点Aにおける楕円曲線Eの接線と、楕円曲線Eとの交点R’を求める。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)上における楕円曲線E上の点R’を記憶するための記憶領域を確保し、求めた交点R’を記憶する。
S110において、楕円曲線ペアリング演算部は、S109で求めた交点R’を記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、交点R’を通り、Xが一定の直線の方程式v:X−u=0(Xは、有限体GF(q)に値をとる変数。uは、有限体GF(q)の元)を求める。
具体的には、交点R’=(XR’,YR’)とすると、方程式vは、X−XR’=0である。したがって、楕円曲線ペアリング演算部は、演算装置を用いて、u=XR’を計算する。
楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)の元uを記憶するための記憶領域を確保し、計算した方程式vの係数uを記憶する。
S111において、楕円曲線ペアリング演算部は、S110で計算した方程式vの係数uを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式vで表される点R’を通り、Xが一定の直線と、楕円曲線Eとの交点(すなわち、点R’の逆元=点Aを2倍した点)を求める。楕円曲線ペアリング演算部は、記憶装置を用いて、求めた交点を新たな点Aとして記憶する。
S112において、楕円曲線ペアリング演算部は、S108で計算した方程式lの係数c,d,eと、S104で計算した点Q’とを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式lの左辺cX+dY+eに、点Q’の座標(XQ’,YQ’)を代入した値cXQ’+dYQ’+eを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)の元l(Q’)を記憶するための記憶領域を確保し、計算した値cXQ’+dYQ’+eをl(Q’)として記憶する。
S113において、楕円曲線ペアリング演算部は、S108で計算した方程式lの係数c,d,eと、S103で選択した点Sとを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式lの左辺cX+dY+eに、点Sの座標(X,Y)を代入した値cX+dY+eを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)の元l(S)を記憶するための記憶領域を確保し、計算した値cX+dY+eをl(S)として記憶する。
S114において、楕円曲線ペアリング演算部は、S110で計算した方程式vの係数uと、S104で計算した点Q’とを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式vの左辺X−uに、点Q’の座標(XQ’,YQ’)を代入した値XQ’−uを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)の元v(Q’)を記憶するための記憶領域を確保し、計算した値XQ’−uをv(Q’)として記憶する。
S115において、楕円曲線ペアリング演算部は、S110で計算した方程式vの係数uと、S103で選択した点Sとを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式vの左辺X−uに、点Sの座標(X,Y)を代入した値X−uを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)の元v(S)を記憶するための記憶領域を確保し、計算した値X−uをv(S)として記憶する。
S116において、楕円曲線ペアリング演算部は、ペアリング値fと、S112〜S115で計算した値l(Q’),l(S),v(Q’),v(S)とを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、(f×l(Q’)×v(S))/(v(Q’)×l(S))を計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、計算した値(f×l(Q’)×v(S))/(v(Q’)×l(S))を、新たなペアリング値fとして記憶する。
S117において、楕円曲線ペアリング演算部は、演算装置を用いて、加法群E(GF(q))の群位数rのmビット目のビットrが1かどうかをチェックする。r=1であれば、S118へ進む。r=0であれば、S127へ進む。
S118において、楕円曲線ペアリング演算部は、点Aと点Pとを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、点Aと点Pとを通る直線の方程式l:cX+dY+e=0(X,Yは、有限体GF(q)に値をとる変数。c,d,eは、有限体GF(q)の元)を求める。
具体的には、点A=(X,Y)、点P=(X,Y)とすると、方程式lは、(Y−Y)(X−X)−(X−X)(Y−Y)=0であるから、これを変形し、(Y−Y)X−(X−X)Y+(X−X)=0となる。したがって、楕円曲線ペアリング演算部は、演算装置を用いて、c=Y−Y、d=X−X、e=X−Xを計算する。
楕円曲線ペアリング演算部は、記憶装置を用いて、計算した方程式lの係数c,d,eを記憶する。
S119において、楕円曲線ペアリング演算部は、S118で計算した方程式lの係数c,d,eを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式lで表される点Aと点Pとを通る直線と、楕円曲線Eとの交点R’を求める。楕円曲線ペアリング演算部は、記憶装置を用いて、求めた交点R’を記憶する。
S120において、楕円曲線ペアリング演算部は、S119で求めた交点R’を記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、交点R’を通り、Xが一定の直線の方程式v:X−u=0(Xは、有限体GF(q)に値をとる変数。uは、有限体GF(q)の元)を求める。
具体的には、交点R’=(XR’,YR’)とすると、方程式vは、X−XR’=0である。したがって、楕円曲線ペアリング演算部は、演算装置を用いて、u=XR’を計算する。
楕円曲線ペアリング演算部は、記憶装置を用いて、計算した方程式vの係数uを記憶する。
S121において、楕円曲線ペアリング演算部は、S120で計算した方程式vの係数uを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式vで表される点R’を通り、Xが一定の直線と、楕円曲線Eとの交点(すなわち、点R’の逆元=点Aと点Pとの和)を求める。楕円曲線ペアリング演算部は、記憶装置を用いて、求めた交点を新たな点Aとして記憶する。
S122において、楕円曲線ペアリング演算部は、S118で計算した方程式lの係数c,d,eと、S104で計算した点Q’とを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式lの左辺cX+dY+eに、点Q’の座標(XQ’,YQ’)を代入した値cXQ’+dYQ’+eを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、計算した値cXQ’+dYQ’+eをl(Q’)として記憶する。
S123において、楕円曲線ペアリング演算部は、S118で計算した方程式lの係数c,d,eと、S103で選択した点Sとを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式lの左辺cX+dY+eに、点Sの座標(X,Y)を代入した値cX+dY+eを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、計算した値cX+dY+eをl(S)として記憶する。
S124において、楕円曲線ペアリング演算部は、S120で計算した方程式vの係数uと、S104で計算した点Q’とを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式vの左辺X−uに、点Q’の座標(XQ’,YQ’)を代入した値XQ’−uを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)の元v(Q’)を記憶するための記憶領域を確保し、計算した値XQ’−uをv(Q’)として記憶する。
S125において、楕円曲線ペアリング演算部は、S120で計算した方程式vの係数uと、S103で選択した点Sとを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程式vの左辺X−uに、点Sの座標(X,Y)を代入した値X−uを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体GF(q)の元v(S)を記憶するための記憶領域を確保し、計算した値X−uをv(S)として記憶する。
S126において、楕円曲線ペアリング演算部は、ペアリング値fと、S122〜S125で計算した値l(Q’),l(S),v(Q’),v(S)とを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、(f× l(Q’)×v(S))/(v(Q’)×l(S))を計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、計算した値(f×l(Q’)×v(S))/(v(Q’)×l(S))を、新たなペアリング値fとして記憶する。
S127において、楕円曲線ペアリング演算部は、整数mを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、整数mから1を減じ、整数m−1を求める。楕円曲線ペアリング演算部は、記憶装置を用いて、求めた整数m−1を新たな整数mとして記憶する。
S128において、楕円曲線ペアリング演算部は、整数mを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、mが0以上であるかどうかをチェックする。m≧0であれば、S108に戻る。m<0であれば、S129へ進む。
S129において、楕円曲線ペアリング演算部は、ペアリング値fを記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、fの(qk−1)/r乗を計算する。
ここで、qk−1はrの倍数であるから、(qk−1)/rは、整数である。したがって、楕円曲線ペアリング演算部は、演算装置を用いて、fを(qk−1)/r回掛け合わせることにより、fの(qk−1)/r乗を計算する。
楕円曲線ペアリング演算部は、記憶装置を用いて、計算したfの(qk −1)/r乗を、新たなfとして記憶する。
S130において、楕円曲線ペアリング演算部は、S129で計算したペアリング値fを記憶装置から読み出す。楕円曲線ペアリング演算部は、読み出したペアリング値fを出力する。
なお、ヴェイユペアリングのペアリング値も、S128までは同様の手順で求めることができる。
以上の計算手順を見てもわかるように、加法群E(GF(q))の群位数rのハミング重みが小さいほうが、ペアリング値の計算時間が短くなる。
ここで、ハミング重みとは、ある整数を2進表記した場合に、ビット値が1であるビットの数をいう。
この計算手順によれば、群位数rのmビット目のビット値rが1の場合には、S118〜S126を実行するが、rが0の場合は、S118〜S126を実行しない。
したがって、群位数rのハミング重みが小さいほうが、全体的な処理のステップ数が少なくなり、ペアリング値の計算時間が短くなる。
なお、この計算手順は、点Pをr倍する演算を行い、その過程で求められる直線の方程式を用いて、ペアリング値を計算する計算手順である。
次に、この実施の形態における楕円曲線ペアリング演算部233が行う、高速化された計算方式について説明する。
図8〜図10は、この実施の形態における楕円曲線ペアリング演算部233による、テイトペアリングのペアリング値を演算する演算処理の流れの一例を示すフローチャート図である。
この演算処理は、効率的に演算可能な準同型写像を活用したミラー・ライト(Miller lite:軽量化されたミラー)アルゴリズムと呼ばれるアルゴリズムを用いている。
前提として、加法群E(GF(q))の群位数rは、ある整数λとの間に、r=λ+λ+1という関係が成り立つものとする。
また、整数λは、λ=2c1+2c2(c,cは、0以上の整数。c>c)であるものとする。すなわち、整数λのハミング重みは、2である。
このとき、r=λ+λ+1=22c1+2c1+c2+1+22c2+2c1+2c2+1であるから、rのハミング重みは、6以下となる。
また、補助演算部333が計算した値sを記憶しておくため、記憶装置を用いて、有限体GF(q)上の値sを記憶するための記憶領域c個(配列s[c])が確保されているものとする。
S201において、点入力部331は、有限体GF(q)上における楕円曲線E上の点P,点Qを入力する。点入力部331は、記憶装置を用いて、点P,点Qを記憶するための記憶領域を確保し、入力した点P,点Qを記憶する。
ここで、点Pは、有限体GF(q)の部分体である有限体GF(q)上における楕円曲線E上の点である。すなわち、点Pは、加法群E(GF(q))の元である。また、点Qは、有限体GF(q)の部分体である有限体GF(qk/2)上における楕円曲線E’上の点を、効率的に演算可能な自己準同型写像φを用いて、写像した点である。すなわち、点Qは、加法群E(GF(qk/2))の元である。
なお、この高速化手法を用いるためには、k/2が整数でなければならないことから、拡大次数kが偶数の場合に限られる。
楕円曲線E’とは、楕円曲線E:Y=X+aX+bに対応するねじれ楕円曲線である。ねじれ楕円曲線E’は、Y=X+daX+db(dは、有限体GF(q)上の値であって、平方非剰余)という方程式により与えられる。なお、平方非剰余とは、d=α(d,αは、有限体GF(q)の元)を満たすαが存在しないdをいう。
また、効率的に演算可能な自己準同型写像φとは、加法群E(GF(qk/2))の元を、同じ加法群E(GF(qk/2))の元に写像する写像であって、加法群E(GF(qk/2))の元であるすべての点Pについて、φ(P)=λP(φ(P)は、点Pを自己準同型写像φによって写像した点。λは、整数。λPは、点Pをλ回加算した点)である写像をいう。
楕円曲線上の点をスカラー倍した点(λP)は、点Pをλ回加算したものとして定義される。これを愚直に計算するなら、楕円曲線上の加算をλ回演算する必要がある。多少効率的なアルゴリズムを用いても、楕円曲線上の加算を最大(2logλ)回演算する必要がある。
楕円曲線上の点をスカラー倍した点は、やはり楕円曲線上の点であるから、これを自己準同型写像として捉えることができる。このような自己準同型写像をφとすると、φ(P)=λPという関係が成り立つ。
したがって、φ(P)を求める演算が、楕円曲線上の点をスカラー倍した点λPを求める演算よりも、演算量が少ないのであれば、λPを求める代わりにφ(P)を求める演算を行うことにより、楕円曲線上の点のスカラー倍を高速に計算することが可能になる。
このように、φ(P)を求める演算の演算量が比較的少なくてすむような自己準同型写像φを、効率的に演算可能な自己準同型写像という。
任意のλについて、効率的に演算可能な自己準同型写像が存在するとは限らない。
しかし、例えば、加法群E(K)の群位数rがr=λ+λ+1である場合には、自己準同型写像φ:(x,y)→(βx,y)(x,yは、楕円曲線E:Y=X+b上の点の座標)が、φ(P)=λPの関係を満たすことが知られている。ここで、βは、有限体GF(q)上における1の原始3乗根、すなわち、β=1かつβ≠1である有限体GF(q)の元である。
また、群位数rがr=λ+1である場合には、自己準同型写像φ:(x,y)→(−x,iy)(x,yは、楕円曲線E:Y=X+aX上の点の座標)が、φ(P)=λPの関係を満たすことが知られている。ここで、iは、有限体GF(q)上における1の原始4乗根、すなわち、i=1かつi≠±1である有限体GF(q)の元である。
一般的に、2次多項式f(x)=ax+bx+c(a,b,cは整数)に整数λを代入して得た整数f(λ)=aλ+bλ+cが、群位数rの倍数である場合、φ(P)=λPの関係を満たす効率的に演算可能な自己準同型写像φが存在する。ただし、そのような写像が自己準同型写像であるためには、楕円曲線Eの係数a,bの間に所定の関係があることが必要である。
また、このような自己準同型写像φは、自己準同型写像φがなす環の判別式Dの絶対値が小さいほど、効率的に演算可能であることが知られている。
ここで自己準同型写像φがなす環の判別式Dとは、有限体GF(q)上における楕円曲線E上の任意の点Pについて、aφ(P)+bφ(P)+cP=O(a,b,cは、整数。φ(P)は、点Pを写像した点φ(P)を更に写像した点φ(φ(P))。Oは、無限遠点)が成り立つとき、D=b−4acにより求められる整数である。一般的に、判別式Dは負の値をとる。
例えば、自己準同型写像φが、φ:(x,y)→(βx,y)である場合、任意の点Pについて、φ(P)+φ(P)+P=Oが成り立つ。したがって、自己準同型写像φ:(x,y)→(βx,y)の判別式Dは、D=1−4×1×1=−3である。
また、自己準同型写像φが、φ:(x,y)→(−x,iy)である場合、任意の点Pについて、φ(P)+P=Oが成り立つ。したがって、自己準同型写像φ:(x,y)→(−x,iy)の判別式Dは、D=0−4×1×1=−4である。
この実施の形態では、効率的に演算可能な自己準同型写像φとして、φ:(x,y)→(βx,y)を用いる場合について説明する。
しかし、これは一例にすぎず、効率的に演算可能な自己準同型写像φとして、φ:(x,y)→(−x,iy)を用いてもよい。あるいは、他の自己準同型写像を用いてもよい。
なお、自己準同型写像がなす環の判別式Dの絶対値が小さい自己準同型写像φを用いるほうが、演算を高速化でき、好ましい。
S202において、第一演算部332は、楕円曲線Eの係数a,bと、加法群E(GF(q))の群位数rとを、記憶装置から読み出す。
S203において、第一演算部332は、有限体GF(q)上における楕円曲線E上の点Pを読み出す。
第一演算部332は、記憶装置を用いて、有限体GF(q)上における楕円曲線E上の点Aを記憶するための記憶領域を確保し、読み出した点Pを、点Aとして記憶する。
S204において、第一演算部332は、記憶装置を用いて、有限体GF(q)上のペアリング値fを記憶するための記憶領域を確保し、有限体GF(q)上の定数1を、ペアリング値fとして記憶する。
S205において、第一演算部332は、記憶装置を用いて、整数jを記憶するための記憶領域を確保し、整数1を、整数jとして記憶する。
S206において、第一演算部332は、記憶装置を用いて、整数iを記憶するための記憶領域を確保し、整数1を、整数iとして記憶する。
S207において、第一演算部332は、点A、点Q、整数jを記憶装置から読み出す。
第一演算部332は、有限体GF(q)上における楕円曲線E上の3つの点(点A、点A、点Q)と、整数jとを、補助演算部333に入力する。
S208において、補助演算部333は、S208で第一演算部332が入力した有限体GF(q)上における楕円曲線E上の3つの点に基づいて、点A、値g、値sを計算する。
補助演算部333は、記憶装置を用いて、計算した点Aを、新たな点Aとして記憶する。
補助演算部333は、記憶装置を用いて、値gを記憶するための記憶領域を確保し、計算した値gを記憶する。
補助演算部333は、記憶装置を用いて、値sを記憶するためにあらかじめ確保されている記憶領域のi番目(s[i])に、計算した値sを記憶する。
図11は、この実施の形態における補助演算部333によるテイトペアリング補助演算処理の流れの一例を示すフローチャート図である。
S281において、補助演算部333は、有限体GF(q)上における楕円曲線E上の3つの点と整数iとを入力する。ここでは、入力した3つの点を順に点A、点B、点Qと呼ぶことにする。このうち、点A、点Qには、第一演算部332から点A、点Qが入力される。また、点Bには、第一演算部332から点Aが入力される場合と、点Pが入力される場合がある。
補助演算部333は、記憶装置を用いて、有限体GF(q)上における楕円曲線E上の点A、点B、点Qおよび整数iを記憶するための記憶領域を確保し、入力した点A、点B、点Qおよび整数iを記憶する。
S282において、補助演算部333は、S281で入力した点A,点Bを記憶装置から読み出す。
補助演算部333は、演算装置を用いて、読み出した点Aと点Bとを通る直線の方程式l:Y=mX+cを求める。
具体的には、点A=(X,Y)、点B=(X,Y)とすると、点A≠点Bの場合、補助演算部333は、演算装置を用いて、A−B 間の傾きm=(Y−Y)/(X−X)、Y切片c=(X−X)/(X−X)を計算する。
また、点A=点Bの場合、補助演算部333は、演算装置を用いて、点Aにおける楕円曲線Eの接線の方程式l:Y=mX+cを求める。
補助演算部333は、記憶装置を用いて、有限体GF(q)上における値m,cを記憶するための記憶領域を確保し、求めた方程式lの係数m,cを記憶する。
S283において、補助演算部333は、S282で求めた方程式lの係数m,c、および、S281で入力した点A,点Bを記憶装置から読み出す。
補助演算部333は、演算装置を用いて、S282で求めた方程式lに基づいて、点Aと点Bとの和を計算する。
補助演算部333は、記憶装置を用いて、計算した点Aと点Bとの和を、新たな点Aとして記憶する。なお、これにより、補助演算部333を呼び出した第一演算部332側の点Aも書き換えられ、新たな点Aとなる。
S284において、補助演算部333は、(S283で計算した点Aではなく)S281で入力した点A,点Q、S282で求めた方程式lの係数mを記憶装置から読み出す。
補助演算部333は、演算装置を用いて、有限体GF(q)上の値−Y−Y−m(βX−X)を計算する。ここで、(X,Y)は、点Aの座標。(X,Y)は、点Qの座標。βは、有限体GF(q)上における1の原始3乗根である。
補助演算部333は、S281で入力した整数iを記憶装置から読み出す。
補助演算部333は、記憶装置を用いて、有限体GF(q)上の値sを記憶するために確保した記憶領域のうち、i番目の記憶領域(s[i])に、計算した−Y−Y−m(βX−X)を記憶する。
S285において、補助演算部333は、(S283で計算した点Aではなく)S281で入力した点A,点Q、S282で求めた方程式lの係数mを記憶装置から読み出す。
補助演算部333は、演算装置を用いて、有限体GF(q)上の値Y−Y−m(X−X)を計算する。ここで、(X,Y)は、点Aの座標。(X,Y)は、点Qの座標である。
補助演算部333は、記憶装置を用いて、有限体GF(q)上の値gを記憶するための記憶領域を確保し、計算した値Y−Y−m(X−X)を、値gとして記憶する。
S286において、補助演算部333は、S285で計算した値gを記憶装置から読み出す。
補助演算部333は、読み出した値gを、呼び出し元である第一演算部332に対して出力する。
このように、補助演算部333は、点Aを移動させながら、第一演算部332がペアリング演算を行うのに必要な値gを計算する。また、それと並行して、あとで第二演算部335がペアリング演算を行うのに必要な値sを計算し、記憶装置に記憶しておく。
図8〜図10に戻って、説明を続ける。
S209において、第一演算部332は、ペアリング値fと、S208で補助演算部333が計算した値gとを、記憶装置から読み出す。
第一演算部332は、演算装置を用いて、有限体GF(q)上の値f×gを計算する。
第一演算部332は、記憶装置を用いて、計算した値f×gを、新たなペアリング値fとして記憶する。
S210において、第一演算部332は、整数jを記憶装置から読み出す。
第一演算部332は、演算装置を用いて、読み出した整数jに1を加え、整数j+1を計算する。
第一演算部332は、記憶装置を用いて、計算した整数j+1を、新たな整数jとして記憶する。
S211において、第一演算部332は、整数iを記憶装置から読み出す。
第一演算部332は、演算装置を用いて、読み出した整数iに1を加え、整数i+1を計算する。
第一演算部332は、記憶装置を用いて、計算した整数i+1を、新たな整数iとして記憶する。
S212において、第一演算部332は、整数iを記憶装置から読み出す。
第一演算部332は、演算装置を用いて、整数iがc−c以下であるかどうかをチェックする。i≦c−cであれば、S207に戻る。i>c−cであれば、S213へ進む。
S213において、第一演算部332は、点A、点P、点Q、整数jを記憶装置から読み出す。
第一演算部332は、有限体GF(q)上における楕円曲線E上の3つの点(点A、点P、点Q)と、整数jとを、補助演算部333に入力する。
S214において、補助演算部333は、S213で第一演算部332が入力した有限体GF(q)上における楕円曲線E上の3つの点に基づいて、点A、値g、値sを計算する。
補助演算部333は、記憶装置を用いて、計算した点A、値g、値sを記憶する。
S215において、第一演算部332は、ペアリング値fと、S214で補助演算部333が計算した値gとを、記憶装置から読み出す。
第一演算部332は、演算装置を用いて、有限体GF(q)上の値f×gを計算する。
第一演算部332は、記憶装置を用いて、計算した値f×gを、新たなペアリング値fとして記憶する。
S216において、第一演算部332は、整数jを記憶装置から読み出す。
第一演算部332は、演算装置を用いて、読み出した整数jに1を加え、整数j+1を計算する。
第一演算部332は、記憶装置を用いて、計算した整数j+1を、新たな整数jとして記憶する。
S217において、第一演算部332は、記憶装置を用いて、整数1を、整数iとして記憶する。
S218において、第一演算部332は、点A、点Q、整数jを記憶装置から読み出す。
第一演算部332は、有限体GF(q)上における楕円曲線E上の3つの点(点A、点A、点Q)と、整数jとを、補助演算部333に入力する。
S219において、補助演算部333は、S218で第一演算部332が入力した有限体GF(q)上における楕円曲線E上の3つの点に基づいて、点A、値g、値sを計算する。
補助演算部333は、記憶装置を用いて、計算した点A、値g、値sを記憶する。
S220において、第一演算部332は、ペアリング値fと、S219で補助演算部333が計算した値gとを、記憶装置から読み出す。
第一演算部332は、演算装置を用いて、有限体GF(q)上の値f×gを計算する。
第一演算部332は、記憶装置を用いて、計算した値f×gを、新たなペアリング値fとして記憶する。
S221において、第一演算部332は、整数jを記憶装置から読み出す。
第一演算部332は、演算装置を用いて、読み出した整数jに1を加え、整数j+1を計算する。
第一演算部332は、記憶装置を用いて、計算した整数j+1を、新たな整数jとして記憶する。
S222において、第一演算部332は、整数iを記憶装置から読み出す。
第一演算部332は、演算装置を用いて、読み出した整数iに1を加え、整数i+1を計算する。
第一演算部332は、記憶装置を用いて、計算した整数i+1を、新たな整数iとして記憶する。
S223において、第一演算部332は、整数iを記憶装置から読み出す。
第一演算部332は、演算装置を用いて、iがc以下であるかどうかをチェックする。i≦cであれば、S218に戻る。i>cであれば、S224へ進む。
S224において、第一演算部332は、点A、点P、点Qを記憶装置から読み出す。
第一演算部332は、有限体GF(q)上における楕円曲線E上の3つの点(点A、点P、点Q)と、整数0とを、補助演算部333に入力する。
S225において、補助演算部333は、S224で第一演算部332が入力した有限体GF(q)上における楕円曲線E上の3つの点に基づいて、点A、値g、値sを計算する。
補助演算部333は、記憶装置を用いて、計算した点A、値g、値sを記憶する。
S226において、第一演算部332は、ペアリング値fと、S225で補助演算部333が計算した値gとを、記憶装置から読み出す。
第一演算部332は、演算装置を用いて、有限体GF(q)上の値f×gを計算する。
第一演算部332は、記憶装置を用いて、計算した値f×gを、新たなペアリング値fとして記憶する。
S227において、第二演算部334は、S226で第一演算部332が計算したペアリング値fを読み出す。
第二演算部334は、記憶装置を用いて、有限体GF(q)上の値hを記憶するための記憶領域を確保し、読み出したペアリング値fを、ペアリング値hとして記憶する。
S228において、第二演算部334は、記憶装置を用いて、整数1を、整数jとして記憶する。
S229において、第二演算部334は、記憶装置を用いて、整数1を、整数iとして記憶する。
S230において、第二演算部334は、ペアリング値fと、整数jと、補助演算部333が計算した値sのうちj番目のもの(s[j])を記憶装置から読み出す。
第二演算部334は、演算装置を用いて、有限体GF(q)上の値f×s[j]を計算する。
第二演算部334は、記憶装置を用いて、計算した値f×s[j]を、新たなペアリング値fとして記憶する。
S231において、第二演算部334は、整数jを記憶装置から読み出す。
第一演算部332は、演算装置を用いて、読み出した整数jに1を加え、整数j+1を計算する。
第一演算部332は、記憶装置を用いて、計算した整数j+1を、新たな整数jとして記憶する。
S232において、第二演算部334は、整数iを記憶装置から読み出す。
第一演算部332は、演算装置を用いて、読み出した整数iに1を加え、整数i+1を計算する。
第一演算部332は、記憶装置を用いて、計算した整数i+1を、新たな整数iとして記憶する。
S233において、第二演算部334は、整数iを記憶装置から読み出す。
第二演算部334は、演算装置を用いて、読み出した整数iがc−c以下であるかどうかをチェックする。i≦c−cであれば、S230に戻る。i>c−cであれば、S234へ進む。
S234において、第二演算部334は、ペアリング値fと、整数jと、補助演算部333が計算した値sのうちj番目のもの(s[j])を記憶装置から読み出す。
第二演算部334は、演算装置を用いて、有限体GF(q)上の値f×s[j]を計算する。
第二演算部334は、記憶装置を用いて、計算した値f×s[j]を、新たなペアリング値fとして記憶する。
S235において、第二演算部334は、整数jを記憶装置から読み出す。
第一演算部332は、演算装置を用いて、読み出した整数jに1を加え、整数j+1を計算する。
第一演算部332は、記憶装置を用いて、計算した整数j+1を、新たな整数jとして記憶する。
S236において、第二演算部334は、ペアリング値fと、S227で記憶したペアリング値hとを、記憶装置から読み出す。
第二演算部334は、演算装置を用いて、有限体GF(q)上の値f×hを計算する。
第二演算部334は、記憶装置を用いて、計算した値f×hを、新たなペアリング値fとして記憶する。
S237において、第二演算部334は、記憶装置を用いて、整数1を、整数iとして記憶する。
S238において、第二演算部334は、ペアリング値fと、整数jと、補助演算部333が計算した値sのうちj番目のもの(s[j])を記憶装置から読み出す。
第二演算部334は、演算装置を用いて、有限体GF(q)上の値f×s[j]を計算する。
第二演算部334は、記憶装置を用いて、計算した値f×s[j]を、新たなペアリング値fとして記憶する。
S239において、第二演算部334は、整数jを記憶装置から読み出す。
第二演算部334は、演算装置を用いて、読み出した整数jに1を加え、整数j+1を計算する。
第二演算部334は、記憶装置を用いて、計算した整数j+1を、新たな整数jとして記憶する。
S240において、第二演算部334は、整数iを記憶装置から読み出す。
第二演算部334は、演算装置を用いて、読み出した整数jに1を加え、整数j+1を計算する。
第二演算部334は、記憶装置を用いて、計算した整数i+1を、新たな整数iとして記憶する。
S241において、第二演算部334は、整数iを記憶装置から読み出す。
第二演算部334は、演算装置を用いて、読み出した整数iがc以下であるかどうかをチェックする。i≦cであれば、S238に戻る。i>cであれば、S242へ進む。
S242において、べき乗演算部335は、ペアリング値fを記憶装置から読み出す。
べき乗演算部335は、演算装置を用いて、ペアリング値fの(qk−1)/r乗を計算する。
ここで、qk−1はrの倍数であるから、(qk−1)/rは、整数である。したがって、べき乗演算部335は、演算装置を用いて、ペアリング値fを(qk−1)/r回掛け合わせることにより、ペアリング値fの(qk−1)/r乗を計算する。
楕円曲線ペアリング演算部は、記憶装置を用いて、計算したfの(qk −1)/r乗を、新たなペアリング値fとして記憶する。
S243において、ペアリング出力部336は、ペアリング値fを記憶装置から読み出す。
ペアリング出力部336は、読み出したペアリング値fを出力する。
この計算手順において、第一演算部332によるS207〜S223の処理と、第二演算部334によるS230〜S241の処理とは、ほとんど同じである。これはどちらも、楕円曲線E上の点をλ倍する演算を行い、その過程で得られる値を用いて、ペアリング値を計算している。
ここで、群位数rは、r=λ+λ+1であるから、rP=(λ+λ+1)P=λ(λ+1)P+Pである。
図6〜図7で説明したペアリング演算処理では、rPを求める演算を行っていたのに対し、ここで説明したペアリング演算処理では、第一演算部332が(λ+1)P(=P’とする)を求める演算を行い、第二演算部334がλP’+Pを求める演算を行うことにより、rPを求める演算を行ったのと同じ結果を得ている。
なお、実際には、第二演算部334は、λP’+Pを求める演算を行っていない。ペアリング値を計算するためには、λP’+Pを求める過程で得られる値が必要となる。この値は、第一演算部332が(λ+1)Pを求める過程において、補助演算部333が既に計算して、値sとして記憶している。したがって、第二演算部334は、λP+Pを求める演算を行う必要がない。
ここで、補助演算部333は、(λ+1)Pを求める過程において、効率的に演算可能な自己準同型写像φを用いて、φ(A)=λAについて、第二演算部334が必要とする値sを計算している。
楕円曲線上の点のスカラー倍を求める演算は、スカラー倍数のビット長にほぼ比例した計算量が必要となる。
r=λ+λ+1であるから、λのビット長は、rのビット長の約半分である。したがって、(λ+1)P(あるいはλP)を求める演算は、rPを求める演算の約半分の計算量で出来ることとなり、計算が高速化できる。
また、λのハミング重みは2であるから、λPを求める演算は、λと同じビット長でハミング重みが3以上の整数について、点Pのスカラー倍を求める演算よりも、高速に計算できる。
更に、ここで説明した計算手順を詳しくみると、例えば、第一演算部332が行う処理(S202〜S226)のうち、S207〜S212の繰り返しと、S218〜S223の繰り返しは、同じ内容の処理をしている。
これは、図6〜図7で説明したペアリング演算処理の繰り返しループにおいて、r=0の場合の処理に相当する処理である。
また、第一演算部332が行うS213〜S215の処理は、図6〜図7で説明したペアリング演算処理の繰り返しループにおいて、r=1の場合の処理に相当する処理である。
すなわち、ここで説明した計算手順は、λのハミング重みが小さいことを利用して、図6〜図7で説明したペアリング演算処理の繰り返しループを展開し、条件分岐(図7のS117)をなくすことにより、ペアリング演算処理を高速化したものである。
なお、ここではλのハミング重みが2である場合について説明したが、λのハミング重みが2以外の値であっても、この考え方を応用して、ペアリング演算処理を高速化することができる。
しかし、λのハミング重みを1とすると、群位数rとして選択できる可能性のある整数が限られてしまう。群位数rは素数でなければならないからである。
また、上述したように、λのハミング重みが小さいほうが、ペアリング演算処理を高速化できる。
したがって、λのハミング重みは2とすることが、好ましい。
なお、ここでは整数c,cの取得方法については、特に説明しなかったが、群位数入力部214が入力した群位数rから、整数c,cを求めることができる。この計算は、コンピュータなどの演算装置を用いて、計算可能である。
また、逆に、群位数入力部214は、群位数rではなく、整数c,cを入力することとしてもよい。その場合、群位数入力部214は、演算装置を用いて、整数λ=2c1+2c2を計算し、更に、群位数r=λ+λ+1を計算することができる。
あるいは、群位数入力部214は、群位数rと、整数c,cとを、両方入力することとしてもよい。そのほうが、楕円曲線暗号演算装置200における計算量が減るので、楕円曲線暗号演算装置200が、演算能力の低い演算装置を備えている場合には、好ましい。
なお、楕円曲線ペアリング演算部233は、上述した動作をコンピュータにさせるプログラムを、コンピュータに実行させることにより、実現可能である。
しかし、ペアリング演算を高速化するためには、ソフトウェア的に実現するよりも、上述した動作をするように組んだ専用の論理回路により、ハードウェア的に実現するほうが、好ましい。
上述したように、第一演算部332が行う処理の繰り返し(S207〜S212、S218〜S223)の数(第二演算部334が行う処理の繰り返しの数も同様)は、λのハミング重みと等しい。したがって、λのハミング重みによって、繰り返しの数を変えるように、条件分岐を設ければ、λのハミング重みが異なる群位数rにも対応できるよう構成することは可能である。
しかし、ペアリング演算処理を高速化するためには、条件分岐の数が少ないほうがよいので、λのハミング重みを固定するほうが、好ましい。
特に、楕円曲線ペアリング演算部233をハードウェア的に実現する場合には、λのハミング重みを固定とするほうが、回路構成を簡略化できるので、更に、好ましい。
このように、群位数入力部214が入力する群位数rを、特定の形式を有する群位数に限定することにより、ペアリング演算処理を高速化できる。
ここで、特定の形式を有する群位数rとは、ハミング重みが一定(例えば、2)の整数λについて、r=λ+λ+1という関係を有する群位数rのことである。
更に一般化していえば、r=λ+λ+1という関係に限らず、r=λ+1、あるいは、r=f(λ)(f(λ)は、係数が整数の2次多項式f(x)に整数λを代入した値)という関係であってもよい。
このように、群位数入力部214が入力する群位数rを、特定の形式を有する群位数に限定することにより、ペアリング演算処理を高速化した楕円曲線暗号演算装置200は、特定の形式を有する群位数に特化することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行う楕円曲線暗号演算装置である。
更にいえば、整数c,cも固定とすれば、第一演算部332が行う処理(第二演算部334が行う処理も同様)の繰り返しの繰り返し回数が固定となるので、更に、ペアリング演算を高速化できる。
その場合、整数λ=2c1+2c2も固定されるので、群位数r=λ+λ+1も一つの値に固定される。
このように、群位数rの値を特定の値に固定することにより、ペアリング演算処理を高速化できる。
その場合、群位数rはあらかじめ定められているので、群位数入力部214は必要ない。
このように、群位数rの値を特定の値に固定することにより、ペアリング演算処理を高速化した楕円曲線暗号演算装置200は、あらかじめ定めた特定の群位数rに特化することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行う楕円曲線暗号演算装置である。
前述したように、楕円曲線ペアリング暗号の安全性は、楕円曲線離散対数問題の困難性と、有限体乗法群離散対数問題の困難性により、確保されている。
これらの困難性は、現存するコンピュータの計算能力によるものであるから、コンピュータの計算能力が向上すれば、安全性を確保するため、困難性のレベルを上げる必要がある。
楕円曲線離散対数問題の困難性は、加法群E(GF(q))の群位数rのビット長と関連している。
しかし、ここで説明したように、ペアリング演算を高速化するために群位数rを固定してしまうと、群位数rのビット長を変えることはできない。
したがって、楕円曲線離散対数問題の困難性のレベルを上げることはできなくなる。
一方、有限体乗法群離散対数問題の困難性は、有限体K’=GF(q)の位数qのビット長と関連している。
したがって、拡大次数kを大きくすることにより、有限体乗法群離散対数問題の困難性のレベルを上げることができる。
すなわち、あらかじめ定めた群位数rに特化することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行う楕円曲線暗号演算装置は、拡大次数kをあとから変更できるよう構成することにより、安全性のレベルを上げることができるようになる。
そのためには、例えば、拡大次数kを入力する拡大次数入力部212を有することが重要である。
また、有限体演算部231は、拡大次数kが変更になっても、有限体GF(q)上で定義された四則演算を行うことができるよう構成しておくことが重要である。
前述したように、有限体GF(q)の元は、例えば、qが素数pと等しい場合、k個の0〜p−1の整数の組(配列)として、記憶装置が記憶する。
したがって、拡大次数kを可変できるように構成するためには、有限体演算部231の構成を複雑にする必要がある。
しかし、楕円曲線暗号演算装置において、楕円曲線暗号の安全性を確保することは、なによりも重要なことであるから、拡大次数kを可変できるように有限体演算部231を構成することは必要である。
また、群位数rを固定しない場合であっても、拡大次数kを可変できるよう構成する必要があることは変わらない。それにより、柔軟な安全性変更が行える。
なお、拡大次数kを比較的自由に変えられるようにするためには、群位数r、有限体K=GF(q)の位数qの値を慎重に選択する必要がある。この実施の形態における楕円曲線暗号演算装置は、そのように慎重に選択された群位数rに特化することにより楕円曲線ペアリング演算を高速化している点にも特徴がある。
そのような群位数r、位数qを選択する方法については、実施の形態2で詳しく述べる。
この実施の形態における楕円曲線暗号演算装置200によれば、楕円曲線ペアリング演算部233が、演算装置を用いて、特定の形式を有する群位数に特化することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速に行うことができるという効果を奏する。
この実施の形態における楕円曲線暗号演算装置200によれば、楕円曲線ペアリング演算部233が、演算装置を用いて、有限体K上における楕円曲線E上の自己準同型写像φを利用することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速に行うことができるという効果を奏する。
この実施の形態における楕円曲線暗号演算装置200によれば、楕円曲線ペアリング演算部233が、演算装置を用いて、有限体K上における楕円曲線E上の自己準同型写像φとして、効率的に演算可能な自己準同型写像を利用することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速に行うことができるという効果を奏する。
この実施の形態における楕円曲線暗号演算装置200によれば、楕円曲線ペアリング演算部233が、演算装置を用いて、有限体K上における楕円曲線E上の自己準同型写像φとして、自己準同型写像がなす環の判別式Dの絶対値が小さい自己準同型写像を利用することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速に行うことができるという効果を奏する。
この実施の形態における楕円曲線暗号演算装置200によれば、楕円曲線ペアリング演算部233が、演算装置を用いて、有限体K上における楕円曲線E上の自己準同型写像φとして、φ:(x,y)→(βx,y)(ただし、βは、有限体K上における1の原始3乗根)を利用することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速に行うことができるという効果を奏する。
この実施の形態における楕円曲線暗号演算装置200によれば、楕円曲線ペアリング演算部233が、演算装置を用いて、有限体K上における楕円曲線E上の自己準同型写像φとして、φ:(x,y)→(−x,iy)(ただし、iは、有限体K上における1の原始4乗根)を利用することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速に行うことができるという効果を奏する。
この実施の形態における楕円曲線暗号演算装置200によれば、楕円曲線ペアリング演算部233が、演算装置を用いて、あらかじめ定めた特定の群位数に特化することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速に行うことができるという効果を奏する。
なお、以上説明した楕円曲線暗号演算装置200は、コンピュータを、以上説明した楕円曲線暗号演算装置として機能させるプログラムを、コンピュータに実行させることにより、実現することができる。
この実施の形態における楕円曲線暗号演算プログラムによれば、楕円曲線ペアリング演算部233が、演算装置を用いて、特定の形式を有する群位数に特化することにより高速化した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速に行うことができるという効果を奏する。
実施の形態2.
実施の形態2を、図12〜図25を用いて説明する。
この実施の形態における楕円曲線暗号システム800の全体構成は、実施の形態1において、図1を用いて説明したものと同様であるので、ここでは説明を省略する。
また、この実施の形態における楕円曲線暗号パラメータ生成装置100の外観及びハードウェア資源は、実施の形態1において図2及び図3を用いて説明した楕円曲線暗号演算装置200と同様であるので、ここでは説明を省略する。
なお、楕円曲線暗号パラメータ生成装置100は、楕円曲線暗号演算装置200と比べてはるかにその数が少なく、センタ300などに設置されるものであるから、楕円曲線暗号パラメータ生成装置100が有する演算装置は、楕円曲線暗号演算装置200が有する演算装置よりも、高性能であるものとする。
図12は、この実施の形態における楕円曲線暗号パラメータ生成装置100の内部ブロックの構成の一例を示すブロック構成図である。
楕円曲線暗号パラメータ生成装置100は、素数生成部110、群位数適性判断部120、群位数候補出力部130、群位数選択部140、群位数出力部150、群位数入力部160、拡大次数入力部170、有限体位数決定部180、有限体位数出力部190などを有する。
素数生成部110は、演算装置を用いて、加法群E(GF(q))の群位数として使えそうな素数rを生成する。
素数生成部110は、記憶装置を用いて、生成した素数rを記憶する。
群位数適性判断部120は、素数生成部110が生成した素数rを記憶装置から読み出す。
群位数適性判断部120は、演算装置を用いて、読み出した素数rが、加法群E(GF(q))の群位数として適切であるか否かを判断する。
群位数適性判断部120は、記憶装置を用いて、判断結果を記憶する。
群位数候補出力部130は、素数生成部110が生成した素数rと、群位数適性判断部120が判断した判断結果とを、記憶装置から読み出す。
群位数候補出力部130は、演算装置を用いて、群位数適性判断部120が、加法群E(GF(q))の群位数として適切であると判断した素数rを選択する。
群位数候補出力部130は、出力装置を用いて、選択した素数rを、群位数候補として出力する。
群位数選択部140は、群位数候補出力部130が出力した群位数候補のなかから、加法群E(GF(q))の群位数として用いる群位数rを選択する。
群位数選択部140は、記憶装置を用いて、選択した群位数rを記憶する。
例えば、群位数候補出力部130が、表示装置901(出力装置の一例)を用いて、群位数候補を表示し、管理者が表示された群位数候補のなかから選択した群位数rを入力することにより、群位数選択部140が群位数rを選択する。
あるいは、群位数選択部140は、群位数候補出力部130が出力した群位数候補のなかから、群位数rをランダムに選択することとしてもよい。
群位数出力部150は、群位数選択部140が選択した群位数rを記憶装置から読み出す。
群位数出力部150は、出力装置を用いて、読み出した群位数rを出力する。
例えば、群位数出力部150は、インターネットを介して、楕円曲線暗号演算装置200に対して、群位数rを送信する。
群位数入力部160は、入力装置を用いて、群位数選択部140が選択した群位数rを入力する。
群位数入力部160は、記憶装置を用いて、入力した群位数rを記憶する。
拡大次数入力部170は、入力装置を用いて、有限体K=GF(q)の拡大体である有限体K’=GF(q)の拡大次数kを入力する。
拡大次数入力部170は、記憶装置を用いて、入力した拡大次数kを記憶する。
有限体位数決定部180は、群位数入力部160が入力した群位数rと、拡大次数入力部170が入力した拡大次数kとを、記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、読み出した群位数rと拡大次数kとに基づいて、有限体GF(q)の位数qを決定する。
有限体位数決定部180は、記憶装置を用いて、決定した有限体GF(q)の位数qを記憶する。
有限体位数出力部190は、有限体位数決定部180が決定した有限体GF(q)の位数qを記憶装置から読み出す。
有限体位数出力部190は、出力装置を用いて、読み出した有限体GF(q)の位数qを出力する。
例えば、有限体位数出力部190は、インターネットを介して、楕円曲線暗号演算装置200に対して、有限体GF(q)の位数qを送信する。
この実施の形態における楕円曲線暗号パラメータ生成装置100は、実施の形態1で説明したように、楕円曲線ペアリング演算を高速化するために、特定の群位数rまたは特定の形式を有する群位数rに特化した楕円曲線暗号演算装置200に設定することができる楕円曲線暗号パラメータを生成する装置である。
まず、群位数rを一定のまま変更せずに、拡大次数kを柔軟に変更することが可能な群位数rの条件について説明する。
有限体GF(q)上における楕円曲線E上の点のペアリングが有限体GF(q)のk次拡大体である有限体GF(q)に値をとるためには、q−1がrの倍数である必要がある。そのためには、有限体GF(r)の乗法群GF(r)が1の原始k乗根を持つ必要があるので、r−1がkの倍数でなければならない。
したがって、群位数rを固定して拡大次数kを柔軟に変更するためには、r−1ができるだけ多くの約数を持つように群位数rを選択すればよい。
実施の形態1で説明したように、拡大次数kが偶数である場合に、楕円曲線ペアリング演算を高速化できるので、拡大次数kとして、例えば、2、4、6、・・・を選択できるようにする。
図13は、この実施の形態における群位数適性判断部120による群位数適性判断処理の流れの一例を示すフローチャート図である。
前提として、拡大次数kを変更する範囲を、2≦k≦2kmax(kmaxは、2以上の整数)の偶数とする。整数kmaxは、あらかじめ所定の値を定めておいてもよいし、入力装置を用いて入力し、記憶装置に記憶しておいてもよい。
S381において、群位数適性判断部120は、素数生成部110が生成した素数rを入力する。
群位数適性判断部120は、記憶装置を用いて、入力した素数rを記憶する。
S382において、群位数適性判断部120は、S381で入力した素数rを記憶装置から読み出す。
群位数適性判断部120は、演算装置を用いて、整数(r−1)/2を計算する。ここで、rは3以上の素数であるから、(r−1)/2は整数となる。
群位数適性判断部120は、記憶装置を用いて、整数r’を記憶するための記憶領域を確保し、計算した整数(r−1)/2を、整数r’として記憶する。
S383において、群位数適性判断部120は、記憶装置を用いて、整数kを記憶するための記憶領域を確保し、整数2を、整数kとして記憶する。
S384において、群位数適性判断部120は、整数kと、S382で計算した整数r’とを、記憶装置から読み出す。
群位数適性判断部120は、演算装置を用いて、読み出した整数r’が、読み出した整数kの倍数であるか否かをチェックする。r’がkの倍数であれば、S385へ進む。r’がkの倍数でなければ、S388へ進む。
S385において、群位数適性判断部120は、整数kを記憶装置から読み出す。
群位数適性判断部120は、演算装置を用いて、整数kに1を加えて、整数k+1を計算する。
群位数適性判断部120は、記憶装置を用いて、計算した整数k+1を、新たな整数kとして記憶する。
S386において、群位数適性判断部120は、S385で計算した整数kを記憶装置から読み出す。
群位数適性判断部120は、演算装置を用いて、整数kが整数kmax以下であるか否かを判断する。k≦kmax である場合には、S384に戻る。k>kmaxである場合には、S387へ進む。
S387において、群位数適性判断部120は、素数rが群位数として適切であると判断する。すなわち、群位数適性判断部120は、演算装置を用いて、素数rが群位数として適切であるという判断結果を示すデータ(例えば、文字列「OK」やブール値「1」など)を生成する。
群位数適性判断部120は、記憶装置を用いて、生成したデータ(判断結果)を記憶する。
その後、S389へ進む。
S388において、群位数適性判断部120は、素数rが群位数として適切でないと判断する。すなわち、群位数適性判断部120は、演算装置を用いて、素数rが群位数として適切でないという判断結果を示すデータ(例えば、文字列「NG」やブール値「0」など)を生成する。
群位数適性判断部120は、記憶装置を用いて、生成したデータ(判断結果)を記憶する。
S389において、群位数適性判断部120は、判断結果を記憶装置から読み出す。
群位数適性判断部120は、読み出した判断結果を出力する。
これにより、群位数適性判断部120は、r−1が2kmax以下のすべての偶数を約数に持つ場合に、素数rが群位数として適切であると判断し、それ以外の場合に、素数rが群位数として適切でないと判断する。
なお、この例では拡大次数kの下限が2であるもの仮定とし、2kmax以下のすべての偶数を約数に持つか否かを判断基準としているが、暗号の安全性を最低限確保できる拡大次数kが2kmin(kminは、2以上の整数。kmin<kmax)である場合には、2kmin以上2kmax以下のすべての偶数を約数に持つかを判断基準とすればよい。その場合は、S283で整数kの初期値としてkminを記憶すればよい。
また、S284において整数r’が整数kの倍数であるか判断するため、あらかじめ整数r’を素因数分解しておいてもよい。
図14は、この実施の形態における楕円曲線暗号パラメータ生成装置100による群位数候補算出処理の流れの一例を示すフローチャート図である。
前提として、整数c(整数λのビット長−1)と、整数kmaxとは、あらかじめ定められた値であるものとする。あるいは、入力装置を用いて入力し、記憶装置を用いて記憶しておいてもよい。
また、整数λのハミング重みは、2であるものとする。したがって、λ=2c1+2c2(c,cは、0以上の整数。c>c)である。しかし、これは一例に過ぎず、λのハミング重みは2以外の値であってもよい。また、λのハミング重みを、入力装置を用いて入力し、記憶装置を用いて記憶することにより、可変できるように構成してもよい。
S301において、素数生成部110は、記憶装置を用いて、整数cを記憶するための記憶領域を確保し、整数0を、整数cとして記憶する。
S302において、素数生成部110は、整数cを記憶装置から読み出す。
素数生成部110は、演算装置を用いて、整数2c1+2c2を計算する。で
素数生成部110は、記憶装置を用いて、整数λ を記憶するための記憶領域を確保し、計算した整数2c1+2c2を、整数λとして記憶する。
S303において、素数生成部110は、S302で生成した整数λを記憶装置から読み出す。
素数生成部110は、演算装置を用いて、整数λ+λ+1を計算する。
素数生成部110は、記憶装置を用いて、整数rを記憶するための記憶領域を確保し、計算した整数λ+λ+1を、整数rとして記憶する。
S304において、素数生成部110は、S303で生成した整数rを記憶装置から読み出す。
素数生成部110は、演算装置を用いて、読み出した整数rが素数かどうかをチェックする。整数rが素数でない場合は、S307へ進む。整数rが素数であれば、S305へ進む。
S305において、群位数適性判断部120は、S303で素数生成部110が生成した整数r(素数r)を、記憶装置から読み出して入力する。
群位数適性判断部120は、演算装置を用いて、入力した素数rが群位数として適切であるか否かを判断する。素数rが群位数として適切でないと判断した場合は、S307へ進む。素数rが群位数として適切であると判断した場合は、S306へ進む。
S306において、群位数候補出力部130は、S303で素数生成部110が生成した素数rを、記憶装置から読み出す。
群位数候補出力部130は、出力装置を用いて、読み出した素数rを、群位数候補として出力する。
S307において、素数生成部110は、整数cを記憶装置から読み出す。
素数生成部110は、演算装置を用いて、整数cに1を加えて、整数c+1を計算する。
素数生成部110は、記憶装置を用いて、計算した整数c+1を、新たな整数cとして記憶する。
S308において、素数生成部110は、S307で計算した整数cを記憶装置から読み出す。
素数生成部110は、演算装置を用いて、読み出した整数cが整数cより小さいか否かをチェックする。c<cであれば、S302に戻る。c≧cであれば、処理を終了する。
なお、この例では、r=λ+λ+1である群位数rの候補を算出する場合について説明しているが、これは、そのような特定の形式の群位数rに特化することにより楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に設定する群位数の候補を算出するものだからである。
楕円曲線暗号演算装置200が他の形式の群位数rに特化したものである場合には、それに対応したrとλの関係式を用いて、整数rを計算する。
すなわち、rとλの関係式として、例えば、r=f(λ)(f(λ)は、2次多項式f(x)=ax+bx+c(a,b,cは、整数)に、整数λを代入した値。すなわち、f(λ)=aλ+bλ+c)を用いるとすると、S303でr=λ2+λ+1を計算する代わりに、以下の処理S303aを行う。
S303aにおいて、素数生成部110は、S302で生成した整数λを記憶装置から読み出す。
素数生成部110は、演算装置を用いて、整数aλ+bλ+cを計算する。
素数生成部110は、記憶装置を用いて、整数rを記憶するための記憶領域を確保し、計算した整数aλ+bλ+cを、整数rとして記憶する。
二次多項式f(x)の係数a,b,cは、あらかじめ定められた定数であってもよい。あるいは、入力装置を用いて係数a,b,cを入力し、記憶装置を用いて記憶しておいて、S303において、素数生成部110が、記憶した係数a,b,cを記憶装置から読み出し、読み出した係数a,b,cに基づいて、整数aλ+bλ+cを計算してもよい。
二次多項式f(x)は、楕円曲線暗号演算装置200が特化した群位数rの形式に対応して、例えば、f(x)=x+1であってもよい。あるいは、他の整数を係数とする二次多項式であってもよい。
また、この例では、r=λ+λ+1である群位数rの候補を算出する場合について説明しているが、rは、λ+λ+1(あるいはf(λ))の素因数であってもよい。
その場合、S304でrが素数であるかを判断する代わりに、例えば、以下の処理S304aを行う。
S304aにおいて、素数生成部110は、S303で生成した整数rを記憶装置から読み出す。
素数生成部110は、演算装置を用いて、読み出した整数rを素因数分解する。
素数生成部110は、演算装置を用いて、整数rの素因数分解のなかから、もっとも大きい素数を選択する。
素数生成部110は、記憶装置を用いて、選択した素数を、素数rとして記憶する。
なお、rがf(λ)の素因数である場合、f(λ)をrで割った商n=f(λ)/rは、小さい整数であることが好ましい。
その場合、S304の処理は、例えば、上記処理S304aの次に、以下の処理S304b,S304cを加えたものとなる。
S304bにおいて、素数生成部110は、S303で計算した整数λと、S304aで選択した素数rとを、記憶装置から読み出す。
素数生成部110は、演算装置を用いて、f(λ)/rを計算する。
素数生成部110は、記憶装置を用いて、整数である商nを記憶するための記憶領域を確保し、計算したf(λ)/rを、商nとして記憶する。
S304cにおいて、素数生成部110は、S304bで計算した商nを記憶装置から読み出す。
素数生成部110は、演算装置を用いて、読み出した商nが、所定の整数nmax以下であるか否かを判断する。
n≦nmaxであると判断した場合には、S305へ進む。n>nmaxであると判断した場合には、S307へ進む。
なお、S304bにおいて、f(λ)/rを計算する代わりに、S304aで求めたr以外の素因数を掛け合わせることにより、商nを計算してもよい。
また、S304cにおける所定の整数nmaxは、あらかじめ定められた定数であってもよい。あるいは、入力装置を用いてnmaxを入力し、記憶装置を用いて記憶しておいてもよい。
以上説明した群位数候補算出処理により、算出され、出力された群位数候補のなかから、実際に楕円曲線暗号演算装置200に設定する群位数rを、群位数選択部140が選択する。
群位数選択部140が選択した群位数rは、群位数出力部150が出力する。
楕円曲線暗号演算装置200は、入力装置を用いて、群位数出力部150が出力した群位数rを入力し、記憶装置を用いて、楕円曲線暗号パラメータの一つとして記憶し、演算装置を用いて、記憶した群位数rに基づいて、楕円曲線上の点の加算や、楕円曲線ペアリングの計算を行う。
あるいは、群位数出力部150が出力した群位数rに基づいて、その群位数rに特化することにより楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200を製造してもよい。その場合には、あとから群位数rを変更することができなくなるが、拡大次数kを変更することにより、暗号の安全性のレベルを、あとから変更することができる。
次に、楕円曲線暗号パラメータの一つである、有限体GF(q)の位数qを、楕円曲線暗号パラメータ生成装置100が生成する処理について説明する。
上記説明した処理により、群位数rを定めたのち、楕円曲線暗号演算装置200が用いる楕円曲線暗号の安全性のレベルに基づいて、拡大次数kを定める。
拡大次数入力部170は、入力装置を用いて、拡大次数kを入力する。
拡大次数kは、楕円曲線暗号の管理者が定め、拡大次数入力部170に入力してもよい。あるいは、楕円曲線暗号に対する攻撃の危険性を検知する危険性検知装置を設け、危険性検知装置が、攻撃の危険性が高まったと判断した場合に、拡大次数kを変更して、拡大次数入力部170に入力する装置を設けてもよい。
図15は、この実施の形態における有限体位数決定部180による有限体位数決定処理の流れの一例を示すフローチャート図である。
ここで説明する処理の流れは、コックス・ピンチ(Cocks−Pinch)法と呼ばれるアルゴリズムを用いている。
前提として、拡大次数k、群位数r、整数Dが、記憶装置に記憶されている。ただし、整数Dは、群位数rを法とした平方剰余であって、4で割った余りが1であるものとする。また、群位数rは、素数であり、群位数rをkで割った余りが1であるものとする。また、拡大次数kは、2以上の偶数であるものとする。
S401において、有限体位数決定部180は、演算装置を用いて、有限体GF(r)の乗法群GF(r)上における1の原始k乗根を求める。
有限体位数決定部180は、記憶装置を用いて、有限体GF(r)上の値gを記憶するための記憶領域を確保し、求めた1の原始k乗根を、値gとして記憶する。
なお、乗法群GF(r)の位数r−1は、kの倍数であるから、乗法群GF(r)上に、1の原始k乗根が必ず存在する。また、乗法群GF(r)上のk個の1のk乗根のうち、1の原始k乗根は複数存在するが、複数の1の原始k乗根のうち、どれを選択してもよい。
S402において、有限体位数決定部180は、S401で求めた値gを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、読み出した値gを2で除して、有限体GF(r)上の値g/2を計算する。
有限体位数決定部180は、記憶装置を用いて、整数ωを記憶するための記憶領域を確保し、計算した有限体GF(r)上の値g/2を、整数ωとして記憶する。
ここで、群位数rは素数であるから、有限体GF(r)上の値は、整数として扱うことができる。
S403において、有限体位数決定部180は、整数Dと、S402で計算した整数ωとを、記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、有限体GF(r)上の値(2ω−1)/√Dを計算する。
ここで、整数Dは、群位数rを法とした平方剰余であるから、√Dは、有限体GF(r)上の値であり、有限体GF(r)上の四則演算を用いて、値(2ω−1)/√Dを計算することができる。
有限体位数決定部180は、記憶装置を用いて、整数fを記憶するための記憶領域を確保し、計算した有限体GF(r)上の値(2ω−1)/√Dを、整数fとして記憶する。
S404において、有限体位数決定部180は、記憶装置を用いて、整数jを記憶するための記憶領域を確保し、整数1を、整数jとして記憶する。
S405において、有限体位数決定部180は、記憶装置を用いて、群位数rと、整数Dと、整数jと、S402で計算した整数ωと、S403で計算した整数fとを、記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、整数ω+ω+(1−(f+j×r)×D)/4を計算する。
ここで、Dを4で割った余りは1であるから、(1−(f+j×r)×D)/4は整数となる。
有限体位数決定部180は、記憶装置を用いて、整数pを記憶するための記憶領域を確保し、計算した整数ω+ω+(1−(f+j×r)×D)/4を、整数pとして記憶する。
S406において、有限体位数決定部180は、S405で計算した整数pを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、読み出した整数pが素数かどうかをチェックする。整数pが素数でないなら、S408へ進む。整数pが素数であるなら、S407へ進む。
S407において、有限体位数決定部180は、S405で計算した整数p(素数p)を記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、読み出した素数pが高速演算に適しているか否かを判断する。素数pが高速演算に適していないと判断したなら、S408へ進む。素数pが高速演算に適していると判断したなら、S409へ進む。
なお、判断の詳細については、後述する。
S408において、有限体位数決定部180は、整数jを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、読み出した整数jに1を加えて、整数j+1を計算する。
有限体位数決定部180は、記憶装置を用いて、計算した整数j+1を、新たな整数jとして記憶する。
その後、S405に戻る。
S409において、有限体位数決定部180は、素数pを有限体GF(q)の位数qに決定する。
有限体位数決定部180は、記憶装置を用いて、有限体GF(q)の位数qを記憶するための記憶領域を確保し、素数pを、有限体GF(q)の位数qとして記憶する。
S410において、有限体位数決定部180は、S402で計算した整数ωを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、整数ωを2倍して、整数2ωを計算する。
有限体位数決定部180は、記憶装置を用いて、整数tを記憶するための記憶領域を確保し、計算した整数2ωを、整数tととして記憶する。
なお、この例では、整数jを1から始めて徐々に大きくしているので、条件を満たす最小のpを、位数qとして決定する。しかし、楕円曲線暗号の安全性設計の観点から、位数qのビット数を所定のビット数に近いビット数にしたい場合には、整数jの初期値を適切な値とすることにより、所望のビット数に近いビット数を有するpを、位数qとして決定することができる。
また、この例では、素数pを、有限体GF(q)の位数qとして決定したが、有限体GF(q)の位数qは、素数pのべき乗(p。nは、2以上の整数)であってもよい。
また、この例では、コックス−ピンチ法によって、有限体GF(q)の位数qを決定したが、他のアルゴリズムに基づいて、有限体GF(q)の位数qを決定してもよい。
次に、S407において、素数pが高速演算に適しているか否かを判断する処理について、詳しく説明する。
実施の形態1で説明したように、有限体GF(q)における乗算を高速に演算するため、既約多項式として、pol(x)=x−γを用いる。
ここで、既約多項式pol(x)は、有限体GF(q)上で既約でなければならない。すなわち、pol(x)=x−γ=0となる有限体GF(q)の元xが存在しないことが条件となる。
有限体GF(q)の元γの乗法における位数をLとすると、x−γが有限体GF(q)において既約であるための必要十分条件は、以下の通りである。
(1)拡大次数kのすべての素因数が、γの位数Lの約数であること。
(2)拡大次数kのすべての素因数が、(q−1)/Lの約数でないこと。
(3)拡大次数kが4の倍数である場合には、q−1も4の倍数であること。
以上3つの条件をすべて満たす場合に、x−γが有限体GF(q)において既約となる。
そのため、有限体位数決定部180は、以上の3つの条件を満たす有限体GF(q)の元γが存在するか否かを判定することにより、素数pが高速演算に適しているか否かを判断する。
図16は、この実施の形態における有限体位数決定部180による高速演算適性判定処理の流れの一例を示すフローチャート図である。
S481において、有限体位数決定部180は、拡大次数kを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、拡大次数kを素因数分解し、拡大次数kのすべての素因数を求める。すなわち、k=Π(π ai)(iは、0〜v−1の整数。vは、1以上の整数。πは、素数。aは、1以上の整数)となるπを求める。
有限体位数決定部180は、記憶装置を用いて、整数vとv個の整数πとを記憶するための記憶領域を確保し、求めた素因数の数vと求めた素因数πとを記憶する。
なお、拡大次数kは偶数であるから、kの素因数には2が含まれる。ここでは、π=2であるものとする。
S482において、有限体位数決定部180は、S481で求めた素因数の数vと、v個の素因数πとを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、拡大次数kの素因数πの積Π(π)(iは、0〜v−1の整数)を計算する。
有限体位数決定部180は、記憶装置を用いて、整数Πを記憶するための記憶領域を確保し、計算した積Π(π)を、整数Πとして記憶する。
S483において、有限体位数決定部180は、拡大次数kを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、拡大次数kが4の倍数であるか否かを判断する。拡大次数kが4の倍数である場合には、S484へ進む。拡大次数kが4の倍数でない場合には、S485へ進む。
S484において、有限体位数決定部180は、S482で計算した整数Πを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、読み出した整数Πを2倍し、整数2Πを計算する。
有限体位数決定部180は、記憶装置を用いて、計算した整数2Πを、新たな整数Πとして記憶する。
S485において、有限体位数決定部180は、素数pを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、読み出した素数pから1を減じて、整数p−1を計算する。
有限体位数決定部180は、記憶装置を用いて、整数p’を記憶するための記憶領域を確保し、計算した整数p−1を、整数p’として記憶する。
S486において、有限体位数決定部180は、整数Πと、S485で計算した整数P’とを、記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、整数p’を整数Πで割り、商Nと余りMとを計算する。すなわち、p’=Π×N+M(N,Mは、整数。0≦M<N)となるN,Mを求める。
有限体位数決定部180は、記憶装置を用いて、整数N,Mを記憶するための記憶領域を確保し、計算した商Nと余りMとを記憶する。
S487において、有限体位数決定部180は、S486で計算した余りMを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、読み出した余りMが0であるか否かを判断する。余りMが0である場合は、S488へ進む。余りMが0でない場合は、S493へ進む。
S488において、有限体位数決定部180は、記憶装置を用いて、整数iを記憶するための記憶領域を確保し、整数0を、整数iとして記憶する。
S489において、有限体位数決定部180は、整数iと、S481で計算した素因数のうちi番目の素因数πと、S486で計算した商Nとを、記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、商Nが素因数πの倍数であるか否かを判断する。Nがπの倍数である場合には、S493へ進む。Nがπの倍数でない場合には、S490へ進む。
S490において、有限体位数決定部180は、整数iを記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、整数iに1を加えて、整数i+1を計算する。
有限体位数決定部180は、記憶装置を用いて、計算した整数i+1を、新たな整数iとして記憶する。
S491において、有限体位数決定部180は、S481で求めた素因数の数vと、S490で計算した整数iとを、記憶装置から読み出す。
有限体位数決定部180は、演算装置を用いて、整数iが素因数の数vより小さいか否かを判断する。i<vの場合には、S489に戻る。i≧vの場合には、S492へ進む。
S492において、有限体位数決定部180は、演算装置を用いて、素数pが高速演算に適していると判断する。すなわち、素数pが高速演算に適しているという判断結果を示すデータ(例えば、文字列「OK」やブール値「1」など)を生成する。
有限体位数決定部180は、記憶装置を用いて、判断結果を示すデータを記憶する。
その後、高速演算適性判定処理を終了する。
S493において、有限体位数決定部180は、演算装置を用いて、素数pが高速演算に適していないと判断する。すなわち、素数pが高速演算に適していないという判断結果を示すデータ(例えば、文字列「NG」やブール値「0」など)を生成する。
有限体位数決定部180は、記憶装置を用いて、判断結果を示すデータを記憶する。
その後、高速演算適性判定処理を終了する。
以上の処理のうち、S487において、上記説明した条件(1):拡大次数kのすべての素因数が、γの乗法における位数Lの約数であることをチェックしている。
乗法群GF(q)の元の位数Lは、乗法群GF(q)の位数q−1の約数である。また、乗法群GF(q)の位数q−1の約数すべてについて、その約数を位数とする乗法群GF(q)の元が存在する。
したがって、整数p’(=p−1)を整数Πで割った余りMが0である場合には、整数Πを位数とする乗法群GF(q)の元γが存在する。
ここで、整数Πは、拡大次数kのすべての素因数の積であるから、拡大次数kのすべての素因数が、乗法群GF(q)の元γの位数L(=Π)の約数である。
また、拡大次数kが4の倍数である場合には、S484で整数Πを2倍している。その場合、整数Πは4の倍数となる。
したがって、整数p’を整数Πで割った余りMが0である場合には、整数p’(=p−1)は、4の倍数である。
すなわち、S487において、上記説明した条件(3):拡大次数kが4の倍数である場合には、q−1も4の倍数であることも、同時にチェックしていることとなる。
S488〜S491の処理は、上記説明した条件(2):拡大次数kのすべての素因数が、(q−1)/Lの約数でないことのチェックである。
すなわち、S487で存在を確認した、位数LがΠである乗法群GF(q)の元γについて、拡大次数kのすべての素因数が、商N(=(p−1)/Π)の約数でないことを確認している。
以上の処理により、有限体位数決定部180は、上記説明した3つの条件のすべてが満たされている場合に、有限体GF(q)の位数qとして、素数pが、高速演算に適していると判断する。
上記説明した3つの条件のすべてが満たされている場合、x−γが有限体GF(q)において既約となるので、有限体GF(q)における乗算を高速化できる。
楕円曲線ペアリング演算において、例えば、図10のS242の処理にあるように、有限体GF(q)上の値のべき乗演算が必要である。べき乗演算は、コンピュータなどの演算装置で実現する場合、有限体GF(q)上の乗算の繰り返しによって、実現される。
したがって、有限体GF(q)上の乗算を高速化できれば、楕円曲線ペアリング演算を、大幅に高速化することができる。
なお、ここで説明した高速演算適性判定処理は、一例に過ぎない。上記説明した3つの条件を満たすGF(q)の元γが存在するか否かを判断することにより、素数pが高速演算に適しているか否かを判定するのであれば、他の処理方式であっても構わない。
また、この例では、有限体GF(q)の位数の候補qが素数pである場合について説明したが、有限体GF(q)の位数の候補qは、素数pのべき乗(p)であってもよい。
また、この例では、有限体GF(q)の元γの存在を確認するに留まっているが、有限体GF(q)の元γが小さいほうが、有限体GF(q)における乗算を高速化できる。したがって、有限体GF(q)の元γを求めて、その係数が小さいか否かを判断し、小さい場合に、高速演算に適していると判断することとしてもよい。
以上、楕円曲線暗号パラメータ生成装置100が、有限体GF(q)の位数qを生成する処理について説明した。
楕円曲線暗号パラメータ生成装置100は、このほか、例えば、楕円曲線Eの係数a,bなどの楕円曲線暗号パラメータを生成する。
これらの楕円曲線暗号パラメータを、有限体GF(q)の位数q、加法群E(GF(q))の群位数rに基づいて算出する方式については、既存の方式があるので、ここでは説明しない。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、素数生成部110が素数rを生成し、群位数適性判断部120が、有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数として、素数生成部110が生成した素数rが適切であるか否かを判断し、群位数候補出力部130が、適切であると判断した素数rを群位数候補として出力するので、楕円曲線暗号の安全性のレベルを、容易に変更することが可能な群位数の候補を求めることができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、自然数r−1が所定の範囲内の自然数kすべてを約数として持つ場合に、素数rが有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数として適切であると判断するので、楕円曲線暗号演算装置200に、有限体Kの拡大体K’=GF(q)の拡大次数kとして、上記所定の範囲内の自然数kを設定することができ、楕円曲線暗号の安全性のレベルを、容易に変更することが可能な群位数の候補を求めることができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、自然数r−1が2以上、所定の閾値2kmax以下の偶数の範囲内にある自然数kすべてを約数として持つ場合に、素数rが有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数として適切であると判断するので、楕円曲線暗号演算装置200に、有限体Kの拡大体K’=GF(q)の拡大次数kとして、楕円曲線ペアリング演算を高速化することが可能な拡大次数を設定することができ、楕円曲線暗号の安全性のレベルを、容易に変更することが可能な群位数の候補を求めることができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、ハミング重みが所定の値以下である素数rを、群位数候補として出力するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を高速化できるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、所定の2次多項式f(x)=ax+bx+c(a,b,cは整数)に自然数λを代入して求めた整数f(λ)=aλ+bλ+cの素因数である素数rを、群位数候補として出力するので、上記2次多項式f(x)に対応する形式の群位数に特化することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に設定することが可能な群位数の候補を求めることができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、上記整数f(λ)を素数rで割った商nが所定の整数以下である素数rを、群位数候補として出力するので、上記2次多項式f(x)に対応する形式の群位数に特化することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に設定することが可能な群位数の候補を求めることができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、上記2次多項式f(x)として、x+x+1またはx+1を用いて算出した素数rを、群位数候補として出力するので、上記2次多項式f(x)に対応する形式の群位数に特化することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に設定することが可能な群位数の候補を求めることができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、上記自然数λとしてハミング重みが小さい自然数を生成し、それに基づいて算出した素数rを、群位数候補として出力するので、上記2次多項式f(x)に対応する形式の群位数に特化することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に設定することが可能な群位数の候補を求めることができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、素数生成部110が、特定の形式を有する群位数に特化することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に、群位数として設定することが可能な素数rを生成するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を、上記特定の形式を有する群位数に特化させて、高速化することができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、素数生成部110が、有限体K上における楕円曲線E上の自己準同型写像φを利用することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に、群位数として設定することが可能な素数rを生成するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を、上記自己準同型写像φを利用することにより、高速化することができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、素数生成部110が、有限体K上における楕円曲線E上の自己準同型写像として、効率的に演算可能な自己準同型写像φを利用することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に、群位数として設定することが可能な素数rを生成するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を、上記自己準同型写像φを利用することにより、高速化することができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、素数生成部110が、有限体K上における楕円曲線E上の自己準同型写像として、自己準同型写像がなす環の判別式Dの絶対値が小さい自己準同型写像φを利用することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に、群位数として設定することが可能な素数rを生成するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を、上記自己準同型写像φを利用することにより、高速化することができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、素数生成部110が、有限体K上における楕円曲線として、Y=X+bを用い、上記楕円曲線E上の自己準同型写像として、φ:(x,y)→(βx,y)(ただし、βは、有限体K上における1の原始3乗根)を利用することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に、群位数として設定することが可能な素数rを生成するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を、上記自己準同型写像φを利用することにより、高速化することができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、素数生成部110が、有限体K上における楕円曲線として、E:Y=X+aXを用い、上記楕円曲線E上の自己準同型写像として、φ:(x,y)→(−x,iy)(ただし、iは、有限体K上における1の原始4乗根)を利用することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200に、群位数として設定することが可能な素数rを生成するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を、上記自己準同型写像φを利用することにより、高速化することができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、楕円曲線ペアリング演算における有限体K=GF(q)の拡大体K’=GF(q)の拡大次数kを、所定の範囲内で変化させた場合でも、同一の形式を有する群位数を設定することができる素数rを、群位数候補として出力するので、特定の形式を有する群位数に特化することにより楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200であっても、容易に暗号の安全性のレベルを変更できるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、楕円曲線ペアリング演算における有限体K=GF(q)の拡大体K’=GF(q)の拡大次数kを、所定の範囲内で変化させた場合でも、設定した群位数を変更しなくてよい素数rを、群位数候補として出力するので、特定の群位数に特化することにより楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200であっても、容易に暗号の安全性のレベルを変更できるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、楕円曲線ペアリング演算における有限体K=GF(q)の拡大体K’=GF(q)の拡大次数kを、2以上、所定の閾値kmax以下の偶数の範囲内で変化させた場合でも、設定した群位数を変更しなくてよい素数rを、群位数候補として出力するので、特定の群位数に特化することにより楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置200であっても、容易に暗号の安全性のレベルを変更できるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数rと、楕円曲線ペアリング演算における有限体Kの拡大体K’=GF(q)の拡大次数kとに基づいて、有限体Kの位数qを決定するので、楕円曲線暗号演算装置に設定する群位数rを固定としても、容易に暗号の安全性のレベルを変更することができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、所定の既約多項式pol(x)を用いて有限体K=GF(q)を拡大体GF(q)に拡大することにより、楕円曲線絵ペアリング演算を高速化した楕円曲線暗号演算装置に設定することができる有限体Kの位数qを決定するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を、上記既約多項式pol(x)を用いることにより高速化することができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、既約多項式として、pol(x)=x−γを用いて有限体K=GF(q)を拡大体GF(q)に拡大することにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に設定することができる有限体Kの位数qを決定するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を高速化することができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、x−γが有限体K=GF(q)において既約である条件を満たすγが存在する有限体Kの位数qを決定するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を、既約多項式としてpol(x)=x−γを利用することにより、高速化することができるという効果を奏する。
この実施の形態における楕円曲線暗号パラメータ生成装置100によれば、x−γが有限体K=GF(q)において既約である条件を満たすγが存在するか否かを、γを求めずに判定するので、楕円曲線暗号演算装置200における楕円曲線ペアリング演算を、既約多項式としてpol(x)=x−γを利用することにより、高速化することができる有限体Kの位数qを容易に決定することができるという効果を奏する。
なお、以上説明した楕円曲線暗号パラメータ生成装置100は、コンピュータを、以上説明した楕円曲線暗号パラメータ生成装置として機能させるプログラムを、コンピュータに実行させることにより、実現することができる。
この実施の形態における楕円曲線暗号パラメータ生成プログラムによれば、素数生成部110が素数rを生成し、群位数適性判断部120が、有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数として、素数生成部110が生成した素数rが適切であるか否かを判断し、群位数候補出力部130が、適切であると判断した素数rを群位数候補として出力するので、楕円曲線暗号の安全性のレベルを、容易に変更することが可能な群位数の候補を求めることができるという効果を奏する。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部p、rが、高速化可能な群位数rで、多くの整数kに対し、k|r−1と選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
rがHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
rがある整数λに対し、整数係数のλの2次多項式を小さい整数で割った素数に選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
rがある整数λに対し、λ+λ+1を小さい整数で割った素数に選ばれている
ことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
整数λのHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
整数λのHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部kを変更しても、高速性を保持することを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、
楕円曲線ペアリング演算で、楕円曲線上の準同型写像を利用した高速演算法を使用して、楕円曲線ペアリングパラメータの一部kを変更しても、高速性を保持することを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
効率的に計算可能な準同型写像を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
自己準同型環の判別式Dの絶対値が小さい楕円曲線を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
楕円曲線にE:Y=X+bを、準同型写像に(x、y)→(βx、y)(βは1の3乗根)を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
楕円曲線にE:Y=X+aXを、準同型写像に(x、y)→(−x、iy)(iは1の4乗根)を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
拡大体GF(q)が高速に計算可能であるqを用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
多くのkに対して、
(1)kの各素因数は、0でないGF(q)の元γの乗法的位数Lを割り、(q−1)/Lを割り切らない
(2)もし、kが4で割り切れるなら、q−1は4で割り切れる
という2条件を満たすように、qが選ばれたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成装置(楕円曲線暗号パラメータ生成装置)は、更に、
π(=2)、π、...、πをkの素因数の集合とした時、4|kなら、q≡1 mod π π...π、そうでないなら、q≡1 mod ππ...πとなるようにがk、qが選ばれたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部p、rが、高速化可能な群位数rで、多くの整数kに対し、k|r−1と選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
rがHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
rがある整数λに対し、整数係数のλの2次多項式を小さい整数で割った素数に選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
rがある整数λに対し、λ+λ+1を小さい整数で割った素数に選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
整数λのHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
整数λのHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部kを変更しても、高速性を保持することを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、
楕円曲線ペアリング演算で、楕円曲線上の準同型写像を利用した高速演算法を使用して、楕円曲線ペアリングパラメータの一部kを変更しても、高速性を保持することを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
効率的に計算可能な準同型写像を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
自己準同型環の判別式Dの絶対値が小さい楕円曲線を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
楕円曲線にE:Y=X+bを、準同型写像に(x、y)→(βx、y)(βは1の3乗根)を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
楕円曲線にE:Y=X+aXを、準同型写像に(x、y)→(−x、iy)(iは1の4乗根)を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
拡大体GF(q)が高速に計算可能であるqを用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
請求項22で、多くのkに対して、
(1)kの各素因数は、0でないGF(q)の元γの乗法的位数Lを割り、(q−1)/Lを割り切らない
(2)もし、kが4で割り切れるなら、q−1は4で割り切れる
という2条件を満たすように、qが選ばれたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算装置(楕円曲線暗号演算装置)は、更に、
π(=2)、π、...、πをkの素因数の集合とした時、4|kなら、q≡1 mod π π...π、そうでないなら、q≡1 mod ππ...πとなるようにがk、qが選ばれたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部p、rが、高速化可能な群位数rで、多くの整数kに対し、k|r−1と選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
rがHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
rがある整数λに対し、整数係数のλの2次多項式を小さい整数で割った素数に選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
rがある整数λに対し、λ+λ+1を小さい整数で割った素数に選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
整数λのHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
整数λのHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部kを変更しても、高速性を保持することを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、
楕円曲線ペアリング演算で、楕円曲線上の準同型写像を利用した高速演算法を使用して、楕円曲線ペアリングパラメータの一部kを変更しても、高速性を保持することを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
効率的に計算可能な準同型写像を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
自己準同型環の判別式Dの絶対値が小さい楕円曲線を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
楕円曲線にE:Y=X+bを、準同型写像に(x、y)→(βx、y)(βは1の3乗根)を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
楕円曲線にE:Y=X+aXを、準同型写像に(x、y)→(−x、iy)(iは1の4乗根)を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
拡大体GF(q)が高速に計算可能であるqを用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
多くのkに対して、
(1)kの各素因数は、0でないGF(q)の元γの乗法的位数Lを割り、(q−1)/Lを割り切らない
(2)もし、kが4で割り切れるなら、q−1は4で割り切れる
という2条件を満たすように、qが選ばれたことを特徴とする。
以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム(楕円曲線暗号パラメータ生成プログラム)は、更に、
π(=2)、π、...、πをkの素因数の集合とした時、4|kなら、q≡1 mod π π...π、そうでないなら、q≡1 mod ππ...πとなるようにがk、qが選ばれたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部p、rが、高速化可能な群位数rで、多くの整数kに対し、k|r−1と選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
rがHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
rがある整数λに対し、整数係数のλの2次多項式を小さい整数で割った素数に選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
rがある整数λに対し、λ+λ+1を小さい整数で割った素数に選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
整数λのHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
整数λのHamming重みが小さく選ばれていることを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部kを変更しても、高速性を保持することを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
楕円曲線ペアリング演算で、楕円曲線上の準同型写像を利用した高速演算法を使用して、楕円曲線ペアリングパラメータの一部kを変更しても、高速性を保持することを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
効率的に計算可能な準同型写像を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
自己準同型環の判別式Dの絶対値が小さい楕円曲線を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
楕円曲線にE:Y=X+bを、準同型写像に(x、y)→(βx、y)(βは1の3乗根)を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
楕円曲線にE:Y=X+aXを、準同型写像に(x、y)→(−x、iy)(iは1の4乗根)を用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
拡大体GF(q)が高速に計算可能であるqを用いたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
多くのkに対して、
(1)kの各素因数は、0でないGF(q)の元γの乗法的位数Lを割り、(q−1)/Lを割り切らない
(2)もし、kが4で割り切れるなら、q−1は4で割り切れる
という2条件を満たすように、qが選ばれたことを特徴とする。
以上説明した楕円曲線ペアリング暗号演算プログラム(楕円曲線暗号演算プログラム)は、更に、
π(=2)、π、...、πをkの素因数の集合とした時、4|kなら、q≡1 mod π π...π、そうでないなら、q≡1 mod ππ...πとなるようにがk、qが選ばれたことを特徴とする。
楕円暗号ペアリング演算を高速かつ安全に行うためには、適切なパラメータ設定法を用いることが重要である。これまでペアリング演算を高速に行う方法の提案と共に、高速化が可能なパラメータ設定方法が提案されてきた。また、ペアリング応用技術は、超楕円曲線を含む一般の代数曲線を用いても実現できる。
近年の高度情報通信技術の実用化に伴い、楕円暗号を含む公開鍵暗号も既に実用化段階に入っているが、従来、公開鍵証明の必要性からPKI(Public Key Infrastructure)というインフラストラクチャが必要であり、それが公開鍵暗号技術の多方面への展開の妨げとなってきた。非特許文献3により、名前や機器番号のような識別名(ID)を公開鍵に用いることでPKIを不要化する公開鍵暗号が実現された。その実現には、楕円曲線上のペアリング演算が本質的に重要である。
“ペアリングのIDベース暗号への応用”の発見以来、ペアリングを用いて、短署名、グループ署名、トレータートレーシング等、幅広い暗号応用技術が実現可能になることが認識されてきた。それにより、ペアリングをより高速に計算することへの必要性が高まると共に、高速かつ安全なペアリングパラメータを計算する方法に関しても、新規提案が相次いだ。
また、暗号の危殆化に対し、昨今注目度が集まっていることが挙げられる。これは、例えば、これまで標準的に使用されてきたハッシュ関数SHA−1への現実的攻撃可能性の高まりや、RSA−1024から2048への移行必要性を指す。このため、適切な新パラメータへの移行法を考慮した暗号設計が強く求められている。この実施の形態は、そのような移行をスムースに行える柔軟なパラメータ設定法に関するものである。
ペアリング高速化研究に関しては、従来は、supersingular(スーパーシンギュラー)楕円曲線を用いた場合の研究が先行してきたが、supersingular楕円曲線を用いると、得られる曲線の範囲に制限が多く、柔軟な安全性変更という点からはordinary(オーディナリー:非supersingular)楕円曲線を用いた方が望ましいことが認識されてきた。よって、例えば、非特許文献1にあるようにordinary楕円曲線上でのペアリング演算の高速化も進展してきた。その結果、supersingular楕円曲線と同等以上の性能が達成可能であることが報告されている。
ペアリングパラメータ生成法には様々なものがあるが、安全性レベル変更を重視した非特許文献2等では、Cocks−Pinch法が適した方法となっている。これまでは、ordinary楕円曲線上でのペアリング演算であっても、高速性を保持したまま、安全性を変更する方法が知られていなかった。この実施の形態では、Cocks−Pinch法を用いて、高速性を保持したまま、スムースにパラメータ変更が行えるペアリングパラメータ設定法に関して提案している。
楕円曲線ペアリングパラメータの一部p、r、kに着目する。それらパラメータは、いくつかの数学的な関係を満たすように設定される。パラメータkを様々に設定できることが安全性変更には重要である。特に、高速化演算法を実現するためには、rをある程度限定してkを柔軟に変更できるようにすることが必要である。その時、r、kは、k|r−1という関係を満たす必要があり、また、多くのkに対して、k|r−1を満たすrを選択しておくことが重要である。また、ペアリング応用技術は、超楕円曲線を含む一般の代数曲線を用いても実現できる。
そのようなペアリングパラメータ生成法として、Cocks−Pinch法を用いる。Cocks−Pinch法は、r、kとpのビット長を入力すると、適切なpを出力する。その際、事前にrを安全性変更という観点から適当かどうか判定する。
これにより、高速性と柔軟な安全性変更を兼ね備えたペアリング暗号実装が実現されるだけでなく、非特許文献1にあるような特殊なrを用いることで高速化してある場合にも、p、kをパラメータ変更してやるだけで、安全性変更を容易に行うことが可能になる。
以上説明した楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置について、数学的背景を、更に説明する。
なお、以下で引用する文献は、次に示す参考文献番号によって示す。
[1] P.S.L.M. Barreto, S. Galbraith, C. ´O h´Eigeartaigh, and M. Scott, ”Efficient pairing computation on supersingular abelian varieties,” available at http://eprint.iacr.org.
[2] P.S.L.M. Barreto, H.Y. Kim, B. Lynn, and M. Scott, ”Efficient algorithms for pairing−based cryptosystems”, Crypto 2002, LNCS No. 2442, 354−368, Springer Verlag, 2002.
[3] P.S.L.M. Barreto, B. Lynn, and M. Scott, ”Constructing elliptic curves with prescribed embedding degrees”, SCN 2002, LNCS No. 2576, 263−273, Springer Verlag, 2002.
[4] P.S.L.M. Barreto, B. Lynn, and M. Scott, ”On the selection of pairing−friendly groups”, SAC 2003, LNCS No. 3006, 17−25, Springer Verlag, 2004.
[5] P.S.L.M. Barreto and M. Naehrig, ”Pairing−friendly elliptic curves of prime order,” available at http://eprint.iacr.org.
[6] I.F. Blake, G. Seroussi and N.P. Smart, Advances in Elliptic Curve Cryptography, LMS Lecture Note Series 317, 2004.
[7] D. Boneh and M. Franklin, ”Identity based encryption from the Weil pairing,” Crypto 2001, LNCS No. 2139, 213−229, Springer Verlag, 2002.
[8] D. Boneh, H. Shacham and B. Lynn, ”Short signatures from theWeil pairing,” Journal of Cryptology, vol. 17(4), 2004, 297−319.
[9] F. Brezing and A. Weng, ”Elliptic curves suitable for pairing based cryptography,” Designs, Codes and Cryptography, vol. 37(1), 133−141.
[10] R. Dupont, A. Enge and F. Morain, ”Building curves with arbitrary small MOV degree over finite prime fields,” Journal of Cryptology, vol. 18(2), 2005, 129−141.
[11] S.D. Galbraith, K. Harrison and D. Soldera, ”Implementing the Tate pairing”, ANTS V, LNCS No. 2369, 324−337, Springer Verlag, 2002.
[12] S.D. Galbraith, J. McKee and P. Valen,ca, ”Ordinary abelian varieties having small embedding degree,” Proceedings of a workshop on Mathematical Problems and Techniques in Cryptology, 46−58, 2005, available at http://eprint.iacr.org.
[13] R.P. Gallant, J.L. Lambert and S.A. Vanstone, ”Faster point multiplication on elliptic curves with efficient endomorphisms”, Crypto 2001, LNCS No. 2139, Springer Verlag, 190−200, 2001.
[14] T. Izu and T. Takagi, ”Efficient computations of the Tate pairing for the large MOV degrees,” ICISC 2002, LNCS No. 2587, 283−297, 2003.
[15] T. Kobayashi, K. Aoki and H. Imai, ”Efficient algorithms for Tate pairing,” in preproceedings of WISA 2005, 291−306, 2005.
[16] N. Koblitz and A. Menezes, ”Pairing−based cryptography at high security level,” Cryptography and Coding: 10th IMA International Conference, LNCS No. 3796, 13−36, Springer Verlag, 2005.
[17] R. Lidl and H. Niederreiter, Finite Fields, 2nd ed. Cambridge University Press, 1997.
[18] The Magma Computational Algebra System, v. 2.11, http://magma.maths.usyd.edu.au/.
[19] A. Miyaji, M. Nakabayashi, and S. Takano, ”New explicit conditions of elliptic curve traces for FRreduction”, IEICE Transactions on Fundamentals, E84−A(5), 1234−1243, 2001.
[20] D. Page, N.P. Smart and F. Vercauteren, ”A comparison of MNT curves and supersingular curves,” available at http://eprint.iacr.org.
[21] R. Sakai, K. Ohgishi and M. Kasahara, ”Cryptosystems based on pairing,” SCIS 2000.
[22] R. Sakai, K. Ohgishi and M. Kasahara, ”Cryptographic schemes based on pairing over elliptic curve,” 7B−2, SCIS 2001 (In Japanese).
[23] M. Scott, ”Computing the Tate pairing,” CT−RSA 2005, 293−304, Springer Verlag, 2005.
[24] M. Scott, ”Scaling security in pairing−based protocols,” available at http://eprint.iacr.org.
[25] M. Scott, ”Faster pairings using an elliptic curve with an efficient endomorphism,” to appear in Indocrypt 2005, available at http://eprint.iacr.org.
[26] M. Scott and P.S.L.M. Barreto, ”Compressed pairings”, Crypto 2004, 140−156, Springer Verlag, 2004.
[27] M. Scott and P.S.L.M. Barreto, ”Generating more MNT elliptic curves”, to appear in Designs, Codes and Cryptography, 2005, available at http://eprint.iacr.org.
[28] J. Solinas, ”ID−based digital signature algorithms”, available at http://www.cacr.math.uwaterloo.ca/conferences/2003/ecc2003.
楕円曲線上のペアリングを利用した暗号系は、IDベース暗号など多様な応用を有する。
Scottは、IDベース暗号等の安全性レベル変更を、埋め込み次数kの変更で実現することを提案している([24])。
また一方で、Scottは、大標数素体Fp上のordinary楕円曲線上での効率的なペアリング演算法を提案している([25])。
本記載では、kの変更による安全性変更と上述の高速かつ少メモリ演算法を共に実現するパラメータ設定法を述べる。
具体的には、用いる巡回群の位数r(素数)を、より多くのkに対しk|r−1を満たすように選択することが安全性変更という観点から重要であること等を指摘し、p、r、kの有効なパラメータ例も示す。
従来の楕円曲線暗号では、例えば、定義体を標数2とするか大標数とするかという選択があったが、ペアリング暗号の実装には、より多くの選択が必要である。
標数3も含む標数選択の他に、supersingular曲線かordinary曲線か、WeilペアリングかTateペアリングか、安全性を増すのに埋め込み次数kの変更によるか定義体サイズの変更によるかというような選択がある。
本記載では、そのような選択に関し、大標数素体F上のordinary楕円曲線Tateペアリングを用いて、安全性変更にkの変更を重視した。
kの柔軟な変更を想定することで、パラメータ生成法にはCocks−Pinch法を用いた。
特にデータ長の観点からは、ρ(:=logp/logr)を小さくできる(ρ<2)MNT法等の曲線生成法が重要であるが、それらの方法には、適用可能なkに厳しい制限がある。
一方、ρ>2となることが現時点では避けられないCocks−Pinch法では(rを固定しなければ)適用可能なkに制限がないので、本記載(及び[24])で採用した。
Cocks−Pinch法では、また、[25]の高速化可能なr(素数)を一つ固定した時には、適用可能なkが決まってくるので、本記載では、その場合に、より多くのkに対応できるrの選択法を述べ、そして、更なる高速化が可能なpの選択法に関しても述べる。
[25]では、例えば、標数p(≡1mod3)の楕円曲線E:Y=X+b(b∈F )上で、準同型写像(x、y)→(βx、y)を用いた高速化が提案された。ここで、β(∈F )は1の3乗根である。
そして実際に、k=2の場合に、supersingular曲線よりも高速になったことが報告された。
その高速化では特殊なrを用いることが必要であるが、例えば、素数r=λ+λ+1(λ=2c1+2c2、c>c)に、その手法は適用できる。
そのrが、k|r−1を満たせば、拡大次数kを有する楕円曲線E s.t. r|#E(F)が存在するので、kの柔軟な変更という観点から、できるだけ多くのkをr−1の因数に持つrを選択することが推奨される。
例えば、(c,c)=(80,16)の場合は、r−1が5を素因数に持たないので、k=10を有する楕円曲線Eを選択できない。
同様に、(c,c)=(96,83)の場合は、k=14のEがない。
しかし、(c,c)=(128,22)のrは、14以下の偶数k全てに対応できる。
また、拡大体演算を効率的に行えるpの選択法も考慮した。
例えば、π(=2),π,…,πをkの素因数とすると、4|kならp≡1 mod π ・π・…・π、4|/k(4|kでない)ならp≡1 mod π・π・…・πとなるようにpを選べばよい。
上記選択法によって得られたp、r、k、bのパラメータ例も示す。
楕円曲線上のペアリングを利用した暗号系は、IDベース暗号など多様な応用を有する。
Scott[24]は、[22、7]でのIDベース暗号等の安全性レベル変更を、埋め込み次数kの変更で実現することを提案している。
一方で、[25]では、大標数素体F上のordinary楕円曲線上での効率的なペアリング演算法が提案されている。
以下では、[24]での安全性変更と[25]での高速かつ少メモリ演算法を共に実現するパラメータ設定法を述べる。
具体的には、用いる巡回群の位数r(素数)を、より多くのkに対応できるように選択する方法等を述べる。
1.はじめに
ペアリング演算は通常の楕円曲線スカラー倍算より計算量を要するため、これまで多くの高速化研究がなされてきた(例えば、[11、15]等)。
また、安全性変更に対応したパラメータ設定が要求されるようになった。
ペアリング暗号の場合には、埋め込み次数kによって安全性を変更できる。
本記載では、[25]の高速実装性を保持したままkによる安全性変更を実現するパラメータを提示する。
ペアリングに適した楕円曲線としては、supersingular曲線がこれまでパラメータ生成のしやすさ、高速な演算法の可能性、distortion写像の存在の面からよく提案されてきた(例えば、[1]参照)。
一方で、多くのペアリング暗号系では、必ずしもdistortion写像を必要としないことや、ordinary曲線に対しても十分実用に適した高速化がなされるようになった(5節参照)。
例えば、[22、7]のIDベース公開鍵暗号は、distortion写像がなくても構成できる[20]。
また、F(p>3)上定義されたsupersingular曲線はk=2に限られ、k=3、4、6を持つsupersingular曲線は標数や同型類の個数に強い制限が課される。
よって、ordinaryで大標数素体F上の楕円曲線ペアリングパラメータは実用的に重要であり、本記載はその場合を扱う。
本記載では、ペアリングパラメータ生成にCocks−Pinch法(4.2節)を用いる。
それにより、用いる巡回群位数r(又はrの形、6節参照)を固定して、pのビット長を同程度にしたままp、kを変更できる。
本記載では、H/W実装での利点に着目した[24]でのパラメータ変更法に限定することなく、[25]の高速化手法に必要な特定のr(の形)に対して柔軟にp、kの変更を行うことができることに主に着目して、ペアリング暗号系の安全性変更法を論じる。
そして、より多くのkに対応できるrの選択法を述べると共に、高速化可能なpの選択法に関しても述べる。
2節ではペアリング計算法を、3節ではペアリング曲線パラメータの安全性基準を述べ、4節では、現時点で利用可能なパラメータ生成法を、5節では、[25]での高速演算法を述べる。
6節で適切なr、pの設定法とその例を示した。
本記載での計算には全てMagma[18]を用いた。
2.楕円曲線上ペアリングの計算法
本節の記法及び内容の詳細に関しては[6]IX章を参照。
本記載では、有限素体Fp上のordinary楕円曲線E:Y=X+aX+b(a,b∈F)及びr≠p、r|/p−1かつr|#E(F)である素数rを固定して考える。
そのrに対し、μ:={u∈Fp|u=1}とする。
また、kをr|p−1となる最小のk(>0)として、K:=F とするとμ⊂K、E[r]⊂E(K)となる。
Weilペアリングe(・,・)及びTateペアリング<・,・>は、非退化双線形写像
(・,・):E[r]×E[r]→μ(⊂K)
<・,・>:E[r]×E(K)/rE(K)→K/(K
である。
Tateペアリングの値域は同値類であるので、実際の計算では、<・,・>を(p−1)/r乗した<・,・> (pk−1)/rを求める。
これを本記載ではTateペアリング値と呼び、それをe(・,・):E[r]×E(K)→Kと書くことにする。
[28]に従い、P∈E[r]、Q∈E(K)に対し、Millerアルゴリズム([6]アルゴリズムIX.1)で計算される値をM(P,Q)と表すことにする。
[Q]がE(K)/rE(K)の元を表すとすると、M(P,Q)は<P,[Q]>という類のある代表であり、e(P,Q)=M(P,Q)(pk−1)/rであり、Q∈E[r]の時には、e(P,Q)=M(P,Q)/M(Q,P)である。
本記載では、以降、Tateペアリング値計算に特化して記述する(5.2節アルゴリズム3、4、5)。
これまで、Tateペアリング値計算の方がWeilペアリング値計算より効率的に計算可能とされてきたが、最近[16、24]、大きい偶数kに対しては、Weilペアリング値のpk/2−1乗値e(P,Q)pk/2−1の方が、ある条件を満たせばTateペアリング値より効率的又は同程度に計算可能であると指摘されていることを注意しておく。
3.ペアリング曲線パラメータの安全性
以降、[25]に従い、Fをpのサイズ(〜logp)、Gをrのサイズ(〜logr)とする記法を用い、また、しばしば使用されているようにρ:=F/Gとする([16、5]等)。
3.1 p、r、kのサイズ
pk のDLPの安全性はkFにより、ECDLPの安全性はGによって規定されるので、ペアリング曲線の安全性を2数対(kF/G)で表す。
そのマッチングは、[16]では、(1024/160)、(3072/256)、(8192/384)であるのに対し、[25]では、(1024/160)、(2048/192)、(4096/224)であり、必ずしも一定でない。
pk のDLPに対する数体ふるい法の計算時間見積もりがECDLPに対するPollard ρ法のように確定的でないことが、その一因である。
3.2 p、rのHamming重み
ペアリングを利用しない従来の素体上楕円曲線暗号では、その高速化のためにHamming重みの小さい素数pを用いることが一般的であった。
[16]では、ペアリング暗号用途で、p、r共にHamming重みが小さいパラメータが例示された。
一方で、[16]は、ペアリング曲線の場合には、Fpk 上のDLPに関し、そのような特殊な素数を用いることによって、特殊数体ふるい法に対して脆弱になる可能性が生じることも指摘している。
本記載では、その危険性を考慮して、法pのHamming重みは一般に選択した(表2(図23)参照)。
一方で、巡回群位数rのHamming重みは小さくして高速ペアリング演算を実現した。
3.3 DSA、DHドメインパラメータ設定法との違い
DSA、DHのドメインパラメータp,q(s.t. q|p−1)もペアリングパラメータ(の一部)p,k,r(s.t. r|p−1)と同様の安全性根拠(F 上のDLPに対する数体ふるい法への耐性と位数q巡回群上のDLPに対するPollard ρ法への耐性)を有しているが、FIPS等でのDSA、DHのp、q生成法はそれらパラメータができるだけランダムになるような方式であり、安全性変更に関して特段の注意はなされていないようであることを指摘しておく。
4.ペアリング曲線パラメータ設定法
ペアリング曲線の構成法は、小さいkを実現するためにCM法が用いられる。
そして、kを固定した場合でも、ρとrに対する条件設定によって、大きく2通りのパラメータ生成法が考えられる。
それらを4.1、4.2各小節で振り返る。
4.3節では、安全性変更という点から述べる。
4.1 MNT法、BW法、BN法
MNT法[19]、BW法[9]、BN法[5]は、ρ<2を実現するパラメータ生成法である。
その特性を表1にまとめる(図17)。
素数rを任意に設定するのが簡単でないことと表1のように全てのkに適用できない方法であることから本記載ではパラメータ生成法として採用しない(4.3節参照)。
しかし、[24]にも述べられているように、例えば、[8]での短署名にペアリングを用いるような場合には、ρ〜1であることが非常に重要であるので、4.1節の各方法が重要であることに注意しておく。
4.2 Cocks−Pinch法
4.1節の方法と異なり、Cocks−Pinch法([3]、[6]Algorithm IX.4)を用いると、任意の素数rを設定可能である。
しかし、一般にCocks−Pinch法では、ρ>2である。
[6]p.211では、判別式DがD≡0 mod 4の場合のアルゴリズムが記述されているが、本記載では、5節以降、D=−3の場合を主に扱うのでD≡1 mod 4の場合のアルゴリズムを記述する(アルゴリズム1)(図18)。
また、[25]では、アルゴリズム1をk=2に特化した場合が記述されている。
4.3 Cocks−Pinch法を用いた安全性変更法
4.3.1 実装環境に依存した各想定
[24]では、p、k、rをpのビット長Fを同程度(512ビット)にしたまま変更することを目的としている。
この方式によれば、例えば、Gが160、192、224と変更されてもFを512と固定化してパラメータ変更を行えるのでICカード等の小型機器で暗号コプロセッサ小型化に寄与できるとして、そのような安全性変更を念頭においている。
しかし、本記載ではS/W実装も考慮したいので、必ずしもこの状況を想定しない。
例えば、特定の素数r(の形)に対して、Fを2Gに十分近づけてパラメータ生成することで、[25]の高速化が適用できて、かつFをできるだけ小さくすることも想定する。
つまり、G=160、192、224に対してF〜320、384、448として、S/W実装など多くの実装環境で高速性を目指す状況も想定する。
4.3.2 Cocks−Pinch法を用いる利点
Cocks−Pinch法を用いれば、特に、r(又はrの形、6節参照)は不変にして、pとkを変更することができる。
この変更法に関して、2点指摘する。
1点目は、5節で見るように、[25]の高速化手法はrに大きく依存しているが、r(又はrの形)を固定できれば、pとkを新たに暗号モジュールに与えるだけで高速性や少メモリ性を生かしたまま、kFに関する安全性変更ができる。
2点目は、3.1節に述べたように、パラメータGと比べて安全なkFの設定は、攻撃手法の特性上流動性が高い。
よって、kを容易に変更可能なCocks−Pinch法は安全性変更という面から4.1節の方法より望ましい変更法と言える。
5.Scottの高速演算法[25]
5.2節で、[25]にある効率的な準同型写像を用いた高速Tateペアリング値計算法を述べる。
その演算法のアイデアは、ペアリングの入力P、Qが一般の場合にも有効であるが、5.1節で述べる特別なP、Qに対するMiller liteアルゴリズムの場合に、より効果を発揮するので、5.2節では、Miller liteアルゴリズムに準同型写像を活用することを述べる(アルゴリズム3、4、5)(図20、図21、図22)。
特に、以降では、kは偶数とする。
5.1 Miller liteアルゴリズム
Miller liteアルゴリズムは、P(∈E(F))、Q(∈φ(E’(Fpk/2))⊂E(Fpk))に適用される。
ここで、E’はEのquadratic twistと呼ばれるものであり、平方非剰余d∈F を用いてY=X+daX+dbで与えられる。
また、φ:E’(Fpk/2)→E(Fpk)は、α=dとなるα∈Fp2を用いて、(x’,y’)→(x,y)=(d−1x’、α−3y’)で与えられる。
このようにして得られた点(x、y)をQに用いることで、分母計算消去法等、幾つかの高速化手法が適用できる。
その詳細に関しては、[4]が詳しい。
[28、16]では、上記のMiller liteアルゴリズムに対し、一般のP、Q∈E(Fpk)に用いるアルゴリズム([6]アルゴリズムIX.1)をfull Millerアルゴリズムと呼んでいる。
5.2 高速準同型写像を用いた高速化
[25]では、[13]での方法の類似として、ペアリング演算での高速準同型の活用法を提案した。
[25]では、D=−3、−4のCMを持つ楕円曲線
=X+b、p≡1 mod 3 (1)
=X+aX、p≡1 mod 4 (2)
上の高速ペアリング演算が提案された。
以降では、曲線(1)に関し述べるが、その議論は曲線(2)や|D|が小さいCM楕円曲線に適用可能である。
[25]では、楕円曲線(1)の群位数r=(λ+λ+1)/73(λ=287)とr=λ+λ+1(λ=2c1+2c2、c1>c2)が高速化可能な群位数として挙げられている。
本記載では、Hamming重みがi(≧2)のλによりr=λ+λ+1で与えられる素数rをrと表す。
[25]では特に161ビット素数r2(λ=280+216)を用いている。
アルゴリズム2(図19)は、曲線(1)に対するもので、[25]では、そのgを用いた高速かつ少メモリーなe(P,Q)計算法が示された(アルゴリズム3、4、5)(図20、図21、図22)。アルゴリズム2内のβ(∈F )は1の3乗根である。
一般にペアリング演算で、Pが固定点である場合には、アルゴリズム2ステップ1、3のrのビット長個のx、y、mを固定値として事前に計算しておける。
[25]の方式(アルゴリズム3、4、5)では、そのような工夫を施す場合に約半分のテーブル値を事前に保持しておけばよい。
アルゴリズム5は、テーブル保持s[・]を削減しメモリが制限された環境で[25]の高速化手法を適用した方法である。
アルゴリズム2、3、4、5は全て、Jacobian座標を使用すれば(通常の楕円曲線スカラー倍算同様)除算なしにできる。
詳細は、例えば[24]参照。
5.3 Tateペアリング計算での最終べき乗算
また、定理1に基づきアルゴリズム3、4、5最終ステップのFpk内べき乗算の高速化が可能である素数pを選択する([16]5節)。
[16]5節定理2では、k=2という形に特化した定理となっているが、本記載では、元の一般的な[17]定理3.75を引用する。
定理1 k≧2、γ∈F とする。多項式x−γ(∈F[x])が既約となる必要十分条件は、以下の2条件が成立することである。
i. kの各素因数は、γ∈F の位数を割り切り、(q−1)/lを割り切らない。
ii.もし、k≡0 mod 4であれば、q≡1 mod 4。
定理1により、高速化可能な素数pをkの分解に応じて選択することが可能となる。
つまり、π(=2),π,…,πをkの素因数とすると、例えば、素数pを4|kならp≡1 mod π ・π・…・πとし、4|/kならp≡1 mod π・π・…・πとなるように選べばよい。
[16]にあるように、2項多項式を体拡大の定義式に選ぶことで、Fp−乗算回数を削減できると共に、定理1内のγを小さい要素に選ぶことで、拡大体内の還元計算での計算量を削減することが可能となる。
また、kが偶数であるので、Lucas数列を利用した高速化が適用できる([26、24])。
6.有効なp、rの選択法
素数rが、埋め込み次数kの楕円曲線E/Fpに関しr|#E(F)となるためには、F が1のk乗根を有する(i.e.、r|p−1)ために、k|r−1となることが必要十分である。
5.2節で述べたrに関しては、
−1=2・3・5・7・13・29・43・C
である。
ここでCは素因数が50以上のr−1の因数を表す。
よって、rに関しては、偶数k=2、4、6、8、10、12、14、…を埋め込み次数とするEを得ることができる。
表3(図24)にλ=2c1+2c2(c1=80、96、128、c1>c2)でrが素数になるcを一覧し、r−1の素因数分解を示した。
λ=2112+2c2では素数rが存在しなかったので、λ=2112+2c2+2c3(112>c>c)で素数rを探索した所、93個存在した。
表4(図25)には、その中で2・3・5・7|r−1であるものを示した。
表3、4での各Cは、50以上の素因数の積を表す。
また、λ=2c1+2c2+2c3(c1>c2>c3)から得られるrに対してアルゴリズム4、5を適当に補正するのは容易である。
に関し、k=4、6、8に対して、素数pを一覧した(表2)。
これらパラメータを使用すれば、同じ(効率的な)アルゴリズム4、5を用いて、異なるpに対してペアリング演算を実行することができる。
これによって、パラメータp以外は置き換えることなく安全性を高めたペアリングパラメータに更新することができる。
5.3節で述べたように、pが適当な合同関係式を満たすかどうかチェックすることで、拡大体Fpk内での乗算を効率的に演算可能なpを選別することができる。
表2のpはそのように選別された。
また、今回より最適化されたCocks−Pinch法計算ルーチンを用いればpのビット長を、より322に近づけることが可能と思われる。
7.まとめ
本記載では、[24]と同様に、IDベース公開鍵暗号などのペアリング暗号の安全性を埋め込み次数kの変更により実現することを扱った。
[25]で提案された高速性や少メモリ性を有する演算法と両立する上記変更法を提案し、その際に重要な巡回群位数r(素数)の条件を示し、それに基づいて安全性変更に適した具体的なrも提示した。
本記載では、主にTateペアリングの場合を扱ったが、[16、24]にあるように、kが大きくなると、Weilペアリング(のpk/2−1乗)の方が効率的に計算可能であることが指摘されているので、そのことを考慮したパラメータ設定法、演算法の効率化が今後の課題(の一つ)である。
実施の形態1における楕円曲線暗号システム800の全体構成の一例を示すシステム構成図。 実施の形態1における楕円曲線暗号演算装置200の外観の一例を示す図。 実施の形態1における楕円曲線暗号演算装置200のハードウェア資源の一例を示す図。 実施の形態1における楕円曲線暗号演算装置200の内部ブロックの構成の一例を示すブロック構成図。 実施の形態1における楕円曲線ペアリング演算部233の内部ブロックの構成の一例を示すブロック構成図。 高速化されていない計算方式におけるテイトペアリングのペアリング値を演算する演算処理の流れの一例を示すフローチャート図(1)。 高速化されていない計算方式におけるテイトペアリングのペアリング値を演算する演算処理の流れの一例を示すフローチャート図(2)。 実施の形態1における楕円曲線ペアリング演算部233による、テイトペアリングのペアリング値を演算する演算処理の流れの一例を示すフローチャート図(1)。 実施の形態1における楕円曲線ペアリング演算部233による、テイトペアリングのペアリング値を演算する演算処理の流れの一例を示すフローチャート図(2)。 実施の形態1における楕円曲線ペアリング演算部233による、テイトペアリングのペアリング値を演算する演算処理の流れの一例を示すフローチャート図(3)。 実施の形態1における補助演算部333によるテイトペアリング補助演算処理の流れの一例を示すフローチャート図。 実施の形態2における楕円曲線暗号パラメータ生成装置100の内部ブロックの構成の一例を示すブロック構成図。 実施の形態2における群位数適性判断部120による群位数適性判断処理の流れの一例を示すフローチャート図。 実施の形態2における楕円曲線パラメータ生成装置100による群位数候補算出処理の流れの一例を示すフローチャート図。 実施の形態2における有限体位数決定部180による有限体位数決定処理の流れの一例を示すフローチャート図。 実施の形態2における有限体位数決定部180による高速演算適性判定処理の流れの一例を示すフローチャート図。 ρ重視パラメータ生成法の特性比較表。 D=1 mod 4時のCocks−Pinchアルゴリズム。 補助関数gのアルゴリズム。 群位数rに対するTateペアリング値(の73乗)を求めるアルゴリズム。 群位数rに対するTateペアリング値を求めるアルゴリズム。 群位数rに対するTateペアリング値を求めるアルゴリズム(ストレージなし)。 D=−3、λ=280+216(r=λ+λ+1)に対するパラメータp、bを示す表。 −1の分解(D=−3)を示す表。 −1の分解(D=−3)を示す表。
符号の説明
100 楕円曲線暗号パラメータ生成装置、110 素数生成部、120 群位数適性判断部、130 群位数候補出力部、140 群位数選択部、150 群位数出力部、160 群位数入力部、170 拡大次数入力部、180 有限体位数決定部、190 有限体位数出力部、200,200a,200b 楕円曲線暗号演算装置、210 楕円曲線暗号パラメータ入力部、211 有限体位数入力部、212 拡大次数入力部、213 楕円曲線係数入力部、214 群位数入力部、221 ID情報入力部、222 平文入力部、223 暗号文入力部、224 秘密鍵入力部、230 暗号演算部、231 有限体演算部、232 楕円曲線演算部、233 楕円曲線ペアリング演算部、241 公開鍵算出部、242 暗号文生成部、243 暗号文復号部、252 暗号文出力部、253 平文出力部、294 秘密鍵記憶部、300 センタ、510 楕円曲線暗号パラメータ、521 ID情報、531 秘密鍵、601 平文、651 暗号文、800 楕円曲線暗号システム、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931 電話器、932 ファクシミリ機、940 インターネット、941 ゲートウェイ、942 LAN。

Claims (13)

  1. 算を行う演算装置と、
    上記演算装置を用いて、素数rを生する素数生成部と、
    上記素数生成部が生成した素数rに基づいて、上記演算装置を用いて、2以上所定の整数以下の自然数から選択した2つ以上の自然数kについて、上記自然数kが、上記素数rから1を減じた自然数r−1の約数であるか否かを判断し、すべての上記自然数kが上記自然数r−1の約数であると判断した場合に、楕円曲線暗号演算における有限体K=GF(q)上における楕円曲線E上の点からなる加法群E(K)の群位数として上記素数rが適切である判断する群位数適性判断部と、
    上記加法群E(K)の群位数とし適切である上記群位数適性判断部が判断し素数rに基づいて、上記演算装置を用いて、上記加法群E(K)の群位数が上記素数rとなるよう、上記有限体Kの位数q決定する有限体位数決定を有することを特徴とする楕円曲線暗号パラメータ生成装置。
  2. 上記群位数適性判断部は、上記演算装置を用いて、2以上所定の整数以下の偶数から選択した2つ以上の自然数kについて、上記自然数kが、上記自然数r−1の約数であるか否かを判断することを特徴とする請求項1に記載の楕円曲線暗号パラメータ生成装置。
  3. 上記群位数適性判断部は、上記演算装置を用いて、2 min 以上max以下の偶数であるすべての自然数kについて、記自然数kが、上記自然数r−1の約数であるか否か判断することを特徴とする請求項に記載の楕円曲線暗号パラメータ生成装置。
  4. 上記楕円曲線暗号パラメータ生成装置は、更に、
    情報を入力する入力装置と、
    上記入力装置を用いて、上記楕円曲線E上の点のペアリング演算に用いる有限体Kの拡大体K’=GF(q)の拡大次数kを入する拡大次数入力部とを有し、
    上記有限体位数決定部は、上記加法群E(K)の群位数として適切であると上記群位数適正判断部が判断した数rと、上記拡大次数入力部が入力した拡大次数kとに基づいて、上記演算装置を用いて、上記加法群E(K)の群位数が上記素数rとなり、かつ、上記楕円曲線E上の点のペアリング演算に用いる拡大体K’の拡大次数が上記拡大次数kとなるよう、上有限体Kの位数qを決定することを特徴とする請求項1乃至請求項3のいずれかに記載の楕円曲線暗号パラメータ生成装置。
  5. 上記有限体位数決定部は、上記演算装置を用いて、多項式ol(x)=x−γ(ただし、xは有限体K上における変数γは有限体Kの乗法群Kの元が、有限体K上で既約多項式となる元γが存在するよう、上記有限体Kの位数qを決定することを特徴とする請求項に記載の楕円曲線暗号パラメータ生成装置。
  6. 上記有限体位数決定部は、上記演算装置を用いて、上記有限体Kの数の候補qを生成し
    上記拡大次数入力部が入力した拡大次数kと、上記位数の候補qとに基づいて、上記演算装置を用いて、以下の3つの条件:
    (1)拡大次数kのすべての素因数が、上記有限体Kの元γの位数Lの約数であること。
    (2)拡大次数kのすべての素因数が、(q−1)/Lの約数でないこと。
    (3)拡大次数kが4の倍数である場合には、q−1も4の倍数であること。
    のすべてを満たす有限体Kの元γが存在するか否かを判断し上記3つの条件すべてを満たす有限体Kの元γが存在すると判断した場合に、上記演算装置を用いて、生成した上記位数の候補qを、上記有限体Kの位数qに決定することを特徴とする請求項に記載の楕円曲線暗号パラメータ生成装置。
  7. 上記有限体位数決定部は、上記演算装置を用いて、上記有限体Kの数の候補qを生成し上記拡大次数入力部が入力した拡大次数kに基づいて、上記演算装置を用いて、上記拡大次数kを素因数分解して、すべての素因数πを算出し、算出した上記すべての素因数πに基づいて、上記演算装置を用いて、上記すべての素因数πのを計算し上記拡大次数入力部が入力した拡大次数kに基づいて、上記演算装置を用いて、上記拡大次数kが4の倍数であるか否かを判断し、上記拡大次数kが4の倍数であると判断した場合に上記演算装置を用いて、計算した上記すべての素因数πの2倍計算して、積Πとし、上記拡大次数kが4の倍数でないと判断した場合に、計算した上記すべての素因数πの積を、積Πとし、
    上記演算装置を用いて、生成した上記位数の候補qから1を減じ整数q−1が上記積Πの倍数であるか否かを判断し、上記整数q−1が上記積Πの倍数であると判断した場合に、計算した上記整数q−1と、計算した上記積Πとに基づいて、上記演算装置を用いて、上記整数q−1を上記積Πで除し商N=(q−1)/Lを計算し計算した上記商Nと、求めた上記すべての素因数πとに基づいて、上記演算装置を用いて、上記商Nが上記素因数πの倍数であるか否かを判断し、上記すべての素因数πについて、上記商Nが上記素因数πの倍数でないと判断した場合に、上記演算装置を用いて、生成した上記位数の候補qを、上記有限体Kの位数qに決定することを特徴とする請求項に記載の楕円曲線暗号パラメータ生成装置。
  8. 上記素数生成部は、上記演算装置を用いて、自然数λを生成し生成した上記自然数λに基づいて、上記演算装置を用いて、所定の2次多項式f(x)=ax+bx+c(ただし、a、b、cは整数、xは変数)に、上記自然数λを代入して、整数f(λ)=aλ+bλ+cを算出し、算出した上記整数f(λ)に基づいて、上記演算装置を用いて、上記整数f(λ)の素因数rを算出し、算出した上記素因数rを上素数rすることを特徴とする請求項1乃至請求項7のいずれかに記載の楕円曲線暗号パラメータ生成装置。
  9. 上記素数生成部は、算出した上記整数f(λ)と、算出した上記素因数rとに基づいて、上記演算装置を用いて、上記整数f(λ)を上記素因数rで除し商n=f(λ)/rを算出し、算出した上記商nに基づいて、上記演算装置を用いて、上記商nが所定の整数以下であるか否かを判断し、上記商nが所定の整数以下であると判断した場合に、算出した上記素因数rを上素数rすることを特徴とする請求項に記載の楕円曲線暗号パラメータ生成装置。
  10. 上記素数生成部は、上記所定の2次多項式f(x)として、f(x)=+x+1またはf(x)=+1を用い、上記演算装置を用いて、上記整数f(λ)を算出することを特徴とする請求項8または請求項9に記載の楕円曲線暗号パラメータ生成装置。
  11. 上記素数生成部は、上記演算装置を用いてハミング重みが所定の値以下である自然数λを生することを特徴とする請求項8乃至請求項10のいずれかに記載の楕円曲線暗号パラメータ生成装置。
  12. 請求項1乃至請求項11のいずれかに記載の楕円曲線暗号パラメータ生成装置と、
    群位数として適切であると上記群位数適正判断部が判断した素数rが群位数である加法群E(K)であって、上記有限体位数決定部が決定した位数qが位数である有限体K上における楕円曲線E上の点からなる加法群E(K)を使って楕円曲線暗号演算をする楕円曲線暗号演算装置とを有することを特徴とする楕円曲線暗号システム。
  13. 算を行う演算装置有するコンピュータを、請求項1乃至請求項11のいずれかに記載の楕円曲線暗号パラメータ生成装置として機能させることを特徴とする楕円曲線暗号パラメータ生成プログラム。
JP2007553794A 2006-01-11 2006-01-11 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号システム及び楕円曲線暗号パラメータ生成プログラム Active JP4688886B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/300223 WO2007080633A1 (ja) 2006-01-11 2006-01-11 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置及び楕円曲線暗号パラメータ生成プログラム及び楕円曲線暗号演算プログラム

Publications (2)

Publication Number Publication Date
JPWO2007080633A1 JPWO2007080633A1 (ja) 2009-06-11
JP4688886B2 true JP4688886B2 (ja) 2011-05-25

Family

ID=38256048

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007553794A Active JP4688886B2 (ja) 2006-01-11 2006-01-11 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号システム及び楕円曲線暗号パラメータ生成プログラム

Country Status (4)

Country Link
US (1) US8111826B2 (ja)
EP (1) EP1993086B1 (ja)
JP (1) JP4688886B2 (ja)
WO (1) WO2007080633A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1775880A1 (en) * 2005-10-11 2007-04-18 STMicroelectronics S.r.l. Method of processing information to be confidentially transmitted
JP4663497B2 (ja) * 2005-12-01 2011-04-06 株式会社日立製作所 情報処理システムおよび情報処理装置の割当管理方法
US8290146B2 (en) * 2007-01-19 2012-10-16 Mitsubishi Electric Corporation Ciphertext generating apparatus, cryptographic communication system, and group parameter generating apparatus
US7978846B2 (en) * 2007-06-30 2011-07-12 Intel Corporation Scale-invariant barrett reduction for elliptic-curve cyrptography
US7986779B2 (en) * 2007-06-30 2011-07-26 Intel Corporation Efficient elliptic-curve cryptography based on primality of the order of the ECC-group
JP4649456B2 (ja) * 2007-09-26 2011-03-09 株式会社東芝 べき乗計算装置、べき乗計算方法及びプログラム
US8144864B2 (en) * 2007-12-28 2012-03-27 Intel Corporation Method for speeding up the computations for characteristic 2 elliptic curve cryptographic systems
CN101925942B (zh) * 2008-02-20 2013-11-27 三菱电机株式会社 验证装置
JP2010049213A (ja) * 2008-08-25 2010-03-04 Toshiba Corp 暗号化装置、復号装置、暗号通信システム、方法及びプログラム
US20100150340A1 (en) * 2008-12-02 2010-06-17 Electronics And Telecommunications Research Institute Device and method for elliptic curve cryptosystem
JP5549018B2 (ja) * 2009-04-21 2014-07-16 国立大学法人 岡山大学 ペアリング演算装置、ペアリング演算方法、及びペアリング演算プログラムを記録した記録媒体
US8488780B2 (en) * 2009-04-24 2013-07-16 Nippon Telegraph And Telephone Corporation Finite field calculation apparatus, finite field calculation method and recording medium
WO2010123112A1 (ja) * 2009-04-24 2010-10-28 日本電信電話株式会社 暗号化装置、復号装置、暗号化方法、復号方法、セキュリティ方法、プログラム及び記録媒体
TWI416347B (zh) * 2009-06-22 2013-11-21 Realtek Semiconductor Corp 處理有限域運算之方法與運算電路
JP2011082662A (ja) * 2009-10-05 2011-04-21 Mitsubishi Electric Corp 通信装置及び情報処理方法及びプログラム
US8499158B2 (en) * 2009-12-18 2013-07-30 Electronics And Telecommunications Research Institute Anonymous authentication service method for providing local linkability
RU2452111C1 (ru) * 2010-11-17 2012-05-27 ЗАО Институт инфокоммуникационных технологий Способ пороговой генерации ключей для системы защиты информации на основе идентификационных данных
US9049023B2 (en) 2011-05-24 2015-06-02 Zeutro Llc Outsourcing the decryption of functional encryption ciphertexts
US8782420B2 (en) 2011-07-22 2014-07-15 Netflix, Inc System and method for obfuscation initiation values of a cryptography protocol
US9154302B2 (en) * 2012-01-25 2015-10-06 CertiVox Ltd. System and method for secure two-factor authenticated ID-based key exchange and remote login using an insecure token and simple second-factor such as a PIN number
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
GB201309702D0 (en) 2013-05-30 2013-07-17 Certivox Ltd Security
US8971540B2 (en) 2013-05-30 2015-03-03 CertiVox Ltd. Authentication
US9106644B2 (en) 2013-05-30 2015-08-11 CertiVox Ltd. Authentication
US9800407B2 (en) * 2013-08-30 2017-10-24 Qualcomm Incorporated Methods and apparatuses for prime number generation and storage
CN104579661B (zh) * 2013-10-21 2018-05-01 航天信息股份有限公司 基于身份的电子签章的实现方法和装置
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
US9680647B2 (en) * 2014-03-24 2017-06-13 Infineon Technologies Ag Method of using a token in cryptography
JP6610277B2 (ja) * 2016-01-15 2019-11-27 富士通株式会社 共有鍵生成プログラム、共有鍵生成方法および情報処理端末
DE112018007468T5 (de) 2018-05-15 2021-01-21 Mitsubishi Electric Corporation Geheime-Suche-Einrichtung und Geheime-Suche-Verfahren
US11601263B2 (en) 2018-05-16 2023-03-07 Lg Electronics Inc. Systems and methods for efficient key management in a vehicular intranet
US20220085998A1 (en) * 2020-09-11 2022-03-17 Cryptography Research, Inc. System and method to generate prime numbers in cryptographic applications

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212457A (ja) * 1998-01-28 1999-08-06 Fujitsu Ltd 楕円曲線のパラメータ安全性高速判定装置および記録媒体
JPH11305660A (ja) * 1997-10-10 1999-11-05 Certicom Corp エルガマル・ライクなプロトコルのためのセッション・パラメータ生成方法
JP2000293101A (ja) * 1999-04-07 2000-10-20 Nippon Telegr & Teleph Corp <Ntt> 楕円暗号安全性評価装置、その方法及びプログラム記録媒体
JP2001066987A (ja) * 1999-08-27 2001-03-16 Nec Corp 代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体
JP2002215023A (ja) * 2001-01-18 2002-07-31 Mitsubishi Electric Corp 超楕円曲線暗号生成方法及び超楕円曲線暗号生成装置
JP2002533787A (ja) * 1998-12-24 2002-10-08 サーティコム コーポレーション 楕円曲線上での暗号操作の速度を高める方法
JP2004177673A (ja) * 2002-11-27 2004-06-24 Fujitsu Ltd ペアリング暗号装置、ペアリング暗号演算プログラム
JP2004226706A (ja) * 2003-01-23 2004-08-12 Mitsubishi Electric Corp 楕円暗号安全性強度評価方法及び楕円暗号安全性強度評価装置及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2004271792A (ja) * 2003-03-07 2004-09-30 Nippon Telegr & Teleph Corp <Ntt> 楕円曲線上スカラー倍演算装置、及び楕円曲線上スカラー倍演算プログラム
JP2005500740A (ja) * 2001-08-13 2005-01-06 ザ ボード オブ トラスティーズ オブ ザ リーランド スタンフォード ジュニア ユニバーシティ Idベース暗号化および関連する暗号手法のシステムおよび方法
JP2005241898A (ja) * 2004-02-26 2005-09-08 Hitachi Ltd 楕円曲線ペアリング高速演算方法及び装置
JP2005283674A (ja) * 2004-03-26 2005-10-13 Nec Corp 楕円曲線暗号化向け曲線パラメータ生成装置、楕円曲線パラメータ生成方法及びそのプログラム
JP2008520144A (ja) * 2004-11-11 2008-06-12 サーティコム コーポレーション カスタム静的ディフィ−ヘルマン(Diffie−Hellman)群

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442707A (en) * 1992-09-28 1995-08-15 Matsushita Electric Industrial Co., Ltd. Method for generating and verifying electronic signatures and privacy communication using elliptic curves
US6337909B1 (en) 1996-10-10 2002-01-08 Certicom Corp. Generation of session keys for El Gamal-like protocols from low hamming weight integers
JPH11242434A (ja) * 1998-02-26 1999-09-07 Hitachi Ltd 楕円曲線暗号実行方法及び暗号処理システム
JP4450969B2 (ja) 2000-05-02 2010-04-14 村田機械株式会社 鍵共有システム,秘密鍵生成装置,共通鍵生成システム,暗号通信方法,暗号通信システム及び記録媒体
US7239701B1 (en) 2000-05-02 2007-07-03 Murata Machinery Ltd. Key sharing method, secret key generating method, common key generating method and cryptographic communication method in ID-NIKS cryptosystem

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11305660A (ja) * 1997-10-10 1999-11-05 Certicom Corp エルガマル・ライクなプロトコルのためのセッション・パラメータ生成方法
JPH11212457A (ja) * 1998-01-28 1999-08-06 Fujitsu Ltd 楕円曲線のパラメータ安全性高速判定装置および記録媒体
JP2002533787A (ja) * 1998-12-24 2002-10-08 サーティコム コーポレーション 楕円曲線上での暗号操作の速度を高める方法
JP2000293101A (ja) * 1999-04-07 2000-10-20 Nippon Telegr & Teleph Corp <Ntt> 楕円暗号安全性評価装置、その方法及びプログラム記録媒体
JP2001066987A (ja) * 1999-08-27 2001-03-16 Nec Corp 代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体
JP2002215023A (ja) * 2001-01-18 2002-07-31 Mitsubishi Electric Corp 超楕円曲線暗号生成方法及び超楕円曲線暗号生成装置
JP2005500740A (ja) * 2001-08-13 2005-01-06 ザ ボード オブ トラスティーズ オブ ザ リーランド スタンフォード ジュニア ユニバーシティ Idベース暗号化および関連する暗号手法のシステムおよび方法
JP2004177673A (ja) * 2002-11-27 2004-06-24 Fujitsu Ltd ペアリング暗号装置、ペアリング暗号演算プログラム
JP2004226706A (ja) * 2003-01-23 2004-08-12 Mitsubishi Electric Corp 楕円暗号安全性強度評価方法及び楕円暗号安全性強度評価装置及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2004271792A (ja) * 2003-03-07 2004-09-30 Nippon Telegr & Teleph Corp <Ntt> 楕円曲線上スカラー倍演算装置、及び楕円曲線上スカラー倍演算プログラム
JP2005241898A (ja) * 2004-02-26 2005-09-08 Hitachi Ltd 楕円曲線ペアリング高速演算方法及び装置
JP2005283674A (ja) * 2004-03-26 2005-10-13 Nec Corp 楕円曲線暗号化向け曲線パラメータ生成装置、楕円曲線パラメータ生成方法及びそのプログラム
JP2008520144A (ja) * 2004-11-11 2008-06-12 サーティコム コーポレーション カスタム静的ディフィ−ヘルマン(Diffie−Hellman)群

Also Published As

Publication number Publication date
EP1993086A1 (en) 2008-11-19
US20090285386A1 (en) 2009-11-19
JPWO2007080633A1 (ja) 2009-06-11
EP1993086A4 (en) 2011-02-23
EP1993086B1 (en) 2012-09-05
WO2007080633A1 (ja) 2007-07-19
US8111826B2 (en) 2012-02-07

Similar Documents

Publication Publication Date Title
JP4688886B2 (ja) 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号システム及び楕円曲線暗号パラメータ生成プログラム
JP4842276B2 (ja) 楕円曲線上の新しいトラップドア1方向性関数と、その、より短い署名及び非対称暗号化への応用
Parmar et al. Survey of various homomorphic encryption algorithms and schemes
JP2008519994A5 (ja)
Vidhya et al. Hybrid key generation for RSA and ECC
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
Shankar et al. Cryptography with elliptic curves
Tahat et al. Hybrid publicly verifiable authenticated encryption scheme based on chaotic maps and factoring problems
Reddy RM-RSA algorithm
Stogbauer Efficient Algorithms for pairing-based cryptosystems
Rostovtsev et al. Secure evaluation of polynomial using privacy ring homomorphisms
Frey et al. Fast bilinear maps from the Tate-Lichtenbaum pairing on hyperelliptic curves
Heß et al. The magic of elliptic curves and public-key cryptography
JP4230162B2 (ja) 公開鍵暗号通信方法
Sarma et al. Public key cryptosystem based on Pell's equation using the Gnu Mp library
JPH0798563A (ja) 楕円曲線による署名、認証及び秘密通信方式
Ahlqvist Elliptic Curves and Cryptography
Vasundhara Elliptic Curves and Cryptography
Edoh Elliptic curve cryptography on pocketpcs
Koval et al. Cryptosystem based on extraction of square roots of complex integers
Gunnala et al. An Attribute Involved Non deterministic Cryptosystem using Composite Residuosity Class Problem
Kalita et al. A new cryptosystem using generalized Mersenne primes
Banoth et al. Mathematical Foundation for Classical and Modern Cryptography
Nanjo A Study of Efficient Algorithms for Computing Cryptosystems Using Elliptic Curve
Zhu Efficient algorithms for implementing the elliptic curve cryptosystems

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110125

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: 20110215

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: 20110215

R150 Certificate of patent or registration of utility model

Ref document number: 4688886

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140225

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250