JP3820909B2 - 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム - Google Patents

楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム Download PDF

Info

Publication number
JP3820909B2
JP3820909B2 JP2001126024A JP2001126024A JP3820909B2 JP 3820909 B2 JP3820909 B2 JP 3820909B2 JP 2001126024 A JP2001126024 A JP 2001126024A JP 2001126024 A JP2001126024 A JP 2001126024A JP 3820909 B2 JP3820909 B2 JP 3820909B2
Authority
JP
Japan
Prior art keywords
points
point
elliptic curve
binary representation
representation data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001126024A
Other languages
English (en)
Other versions
JP2002323852A (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.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2001126024A priority Critical patent/JP3820909B2/ja
Priority to US10/128,805 priority patent/US7177422B2/en
Publication of JP2002323852A publication Critical patent/JP2002323852A/ja
Application granted granted Critical
Publication of JP3820909B2 publication Critical patent/JP3820909B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、楕円曲線暗号における高速化を実現する楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラムに関する。
【0002】
【従来の技術】
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【0003】
暗号化方式には、大別して共通鍵方式、公開鍵方式がある。共通鍵方式は、対称暗号方式ともよばれ、発信者、受信者の双方で共通の鍵を保有する。共通鍵方式の代表的な方法として、DES(Data Encryption Standard)がある。DESアルゴリズムの特徴は、暗号化と復号とをほぼ同じアルゴリズムで実行可能なことである。
【0004】
この共通鍵暗号に対して、発信者と受信者の鍵を異なるものとした構成が公開鍵方式または非対称暗号方式である。公開鍵暗号方式では、暗号化、復号化に共通の鍵を用いる共通鍵暗号方式と異なり、秘密に保つ必要のある秘密鍵は、特定の1人が持てばよいため鍵の管理において有利である。ただし、公開鍵暗号方式は共通鍵暗号方式に比較してデータ処理速度が遅く、一般には、秘密鍵の配送、ディジタル署名等のデータ量の少ない対象に多く用いられている。公開鍵暗号方式の代表的なものにはRSA(Rivest-Shamir-Adleman)暗号がある。これは非常に大きな2つの素数(例えば150桁)の積を用いるものであり、大きな2つの素数(例えば150桁)の積の素因数分解する処理の困難さを利用している。
【0005】
公開鍵暗号方式では、不特定多数に公開鍵を使用可能とする構成であり、配布する公開鍵が正当なものであるか否かを証明する証明書、いわゆる公開鍵証明書を使用する方法が多く用いられている。例えば、利用者Aが公開鍵、秘密鍵のペアを生成して、生成した公開鍵を認証局に対して送付して公開鍵証明書を認証局から入手する。利用者Aは公開鍵証明書を一般に公開する。不特定のユーザは公開鍵証明書から所定の手続きを経て公開鍵を入手して文書等を暗号化して利用者Aに送付する。利用者Aは秘密鍵を用いて暗号化文書等を復号する等のシステムである。また、利用者Aは、秘密鍵を用いて文書等に署名を付け、不特定のユーザが公開鍵証明書から所定の手続きを経て公開鍵を入手して、その署名の検証を行なうシステムである。
【0006】
公開鍵証明書は、公開鍵暗号方式における認証局あるいは発行局(CA:Certificate AuthorityまたはIA:Issuer Authority)が発行する証明書であり、ユーザが自己のID、公開鍵等を認証局に提出することにより、認証局側が認証局のIDや有効期限等の情報を付加し、さらに認証局による署名を付加して作成される証明書である。
【0007】
公開鍵暗号方式としては、上述したRSA方式の他にnが素数の場合の離散対数問題の困難さを利用した離散対数暗号が知られている。米国標準のディジタル署名方式として知られるDSA(Digital Signature Standard)には、この離散対数暗号が用いられている。また、V.Miller, N.Koblitzによって提案された楕円曲線暗号(ECC:Ellipitic Curve Cryptography)が、安全性および高速性の点で昨今注目されている。楕円曲線暗号は、160bitの鍵でRSA1024bitの鍵と同等の強度を持つと言われる。
【0008】
一般に、楕円曲線暗号(Elliptic Curve Cryptography)は、素体上の楕円曲線y2=x3+ax+b(4a3+27b2≠0)や、2の拡大体上の楕円曲線y2+xy=x3+ax2+b(b≠0)などを用いる。これらの曲線上の点に無限遠点(O)を加えた集合は、加法に関して有限群をなし、無限遠点(O)はその単位元となる。以下、この有限群上の点の加法を+で表す。この有限群上の異なる2点P,Qの加算P+Qを「点の加算」、点Pと点Pの加算P+P=2Pを「点の2倍算」と呼ぶ。また、点Pをk回加算した点P+P+…+P=kPを求める演算を「点のスカラー倍算」と呼ぶ。
【0009】
点のスカラー倍算は、点の加算、および点の2倍算を用いて構成できることが知られている。素体上の楕円曲線や2の拡大体上の楕円曲線上のアフィン座標系(x,y)や射影座標(X,Y,Z)における点の加算法、点の2倍算法、および点のスカラー倍算法は、IEEE P1363/D13 Standard Specifications for Public Key Cryptographyに記されている。
【0010】
また、素因数分解を行なうために導入された素体上のモンゴメリ型楕円曲線By2=x3+Ax2+x((A2−4)B≠0)を用いて点のスカラー倍算法を高速に行なう方法(P.Montgomery “Speeding the Pollard and Elliptic Curve Method of Factorization”,Mathematics of Computation,Vol.48,No.177,pp.243-264(1987))が提案されている。以下、この手法を素体上の楕円曲線におけるモンゴメリ法と呼ぶ。
【0011】
この手法によれば、アフィン座標系において、異なる2点:P0(x0,y0),P1(x1,y1)の加算点を点P2=P1+P0とすると、P3(x3,y3)=P1(x1,y1)−P0(x0,y0)が既知であれば、
2=(x01−1)2/(x3(x0−x12
により、x2を求めることができる。
【0012】
また、点P0(x0,y0)の2倍算点を点P2(x2,y2)=2P0とすると、
2=(x0 2−1)2/(4x0(x0 2+Ax0+1))
により、x2を求めることができる。このように、y座標を用いないで、点の加算法、および点の2倍算法を構成することができる。
【0013】
ここで、一般に素体上の除算は素体上の乗算に比べると計算コストが高いため、x=X/Z,y=Y/Zとして射影座標系(X,Y,Z)に変換すると、モンゴメリ型楕円曲線は、
BY2Z=X3+AX2Z+XZ2
となる。
【0014】
このとき、異なる2点、P0(X0,Y0,Z0)、P1(X1,Y1,Z1)の加算点をP2(X2,Y2,Z2)=P1(X1,Y1,Z1)+P0(X0,Y0,Z0)とすると、P3(X3,Y3,Z3)=P1(X1,Y1,Z1)−P0(X0,Y0,Z0)が既知であれば、
【0015】
2=Z3((X0−Z0)(X1+Z1)+(X0+Z0)(X1−Z1))2
2=X3((X0−Z0)(X1+Z1)−(X0+Z0)(X1−Z1))2
【0016】
により、(X2,Z2)を求めることができる。また、点P0(X0,Y0,Z0)の2倍算点を点P2(X2,Y2,Z2)=2P0とすると、C=(A+2)/4として、
【0017】
2=(X0+Z02(X0−Z02
2=((X0+Z02−(X0−Z02)((X0−Z02+C(((X0+Z02−(X0−Z02)))
【0018】
により、(X2,Z2)を求めることができる。このように、Y座標を用いないで、点の加算法、および点の2倍算法を構成することができる。
【0019】
素体上のモンゴメリ型楕円曲線において、以上の点の加算法および点の2倍算法を用いて点のスカラー倍算kPを構成するためには、点の加算において2点の差分となる点が既知である必要があることに注意して、以下のようにする。初期の2点を{T0,T1}={P,2P}とし、kを2進展開する。kの最上位ビットの次ビットから最下位ビットまで、そのビットが0の場合には、{T0,T1}から{2T0,T0+T1}を求めて新たな{T0,T1}とし、そのビットが1の場合は、{T0,T1}から{T0+T1,2T1}を求めて新たな{T0,T1}とすることを繰り返す。すると最後のT0がkPとなる。このとき、T1−T0=Pが常に成立している。
【0020】
楕円曲線暗号を用いた電子署名方式としては、ECDSA(Elliptic Curve Digital Signature Algorithm)が代表的である。ECDSAの署名検証処理においては、異なる2点のスカラー倍点の加算点kP+lQのx座標を求める計算が必要となる。
【0021】
素体上の楕円曲線におけるモンゴメリ法を用いて、kP+lQのx座標を計算するためには以下のようにする。まず、前述した手法に従って、素体上の楕円曲線におけるモンゴメリ法でkPおよびlQを求める。その後、点kPと点lQを加算するが、2点の差分の点が既知ではないため、前述の点の加算法を適用することができない。そのため、kP,lQそれぞれのy座標またはY座標を復元してから、別の加算法を用いてkP+lQのx座標を求める必要がある。
【0022】
また、2の拡大体上の楕円曲線y2+xy=x3+ax2+b(b≠0)において、素体上のモンゴメリ型楕円曲線と同様の手法で高速に点のスカラー倍を行なう手法(J.Lopez and R. Dahab,“Fast Multiplication on Elliptic Curves over GF(2m) without Precomputation”Cryptographic Hardware and Embedded Systems, LNCS 1717,pp.316-327(1999))が提案されている。以下、これを2の拡大体上の楕円曲線におけるモンゴメリ法とよぶ。この手法においても、kP+lQのx座標を計算するためには、kP,lQそれぞれのy座標またはY座標を復元してから、kP+lQのx座標を求める必要がある。
【0023】
【発明が解決しようとする課題】
上述のように、素体上の楕円曲線におけるモンゴメリ法および2の拡大体上の楕円曲線におけるモンゴメリ法では点のスカラー倍算を高速に計算できるが、ECDSAの署名生成時に必要なkP+lQの計算ではkP,lQのy座標またはY座標を復元する処理が必要となる。
【0024】
本発明は、上述の素体上の楕円曲線におけるモンゴメリ法および2の拡大体上の楕円曲線におけるモンゴメリ法における問題点に鑑みてなされたものであり、2つのスカラー倍算kP,lQを別々に実行せずに楕円曲線上の4点を計算しながらkP+lQの演算処理を同時に実行することで楕円曲線暗号処理における高速化を実現した楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラムを提供することを目的とする。
【0025】
さらに、本発明は、上述の素体上の楕円曲線におけるモンゴメリ法および2の拡大体上の楕円曲線において、kP+lQの演算処理を行なう際に、楕円曲線上の3点を計算しながらkP+lQの演算処理を同時に実行することで楕円曲線暗号処理における高速化を実現した楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラムを提供することを目的とする。
【0026】
本発明の第1の側面は、
暗号処理装置において実行する素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理方法であり、
前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出において、
暗号処理演算部において、前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記4点の集合G t+1 を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法にある。
【0027】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
4点の集合Gは、前記点P,点Qを用いて、下式、
[i]=P+n
[i]=P+(n+1)Q
[i]=(m+1)P+n
[i]=(m+1)P+(n+1)Q
として示される4点であり、
前記初期点算出ステップは、
i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
として設定する処理ステップとして実行することを特徴とする。
【0028】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記k,lの2進表現データの各ビットがk:(kt…k02,l:(lt…l02であるときの上位t〜iの上位ビット値をmi=(kt…ki2,ni=(lt…li2としたとき、
4点の集合Giは、前記点P,点Qを用いて、下式、
iP+ni
iP+(ni+1)Q
(mi+1)P+ni
(mi+1)P+(ni+1)Q
として示される4点であり、
前記繰り返し演算処理ステップは、
算出済みの4点の集合Gi+1から、次の4点の集合Giを算出する処理を繰り返し実行し、最終的に4点の集合G0を算出する処理ステップとして実行し、4点の集合G0を構成する1点をW=kP+lQとして算出することを特徴とする。
【0029】
さらに、本発明の第2の側面は、
暗号処理装置において実行する素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理方法であり、
前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出において、
暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記3点の集合G ' を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法にある。
【0030】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
3点の集合G'は、
前記点P,点Qを用いて示される、下式、
[i]=P+n
[i]=P+(n+1)Q
[i]=(m+1)P+n
[i]=(m+1)P+(n+1)Q
の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
前記初期点算出ステップは、
i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
の4点から、前記2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて選択される3点として設定する処理ステップとして実行することを特徴とする。
【0031】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記k,lの2進表現データの各ビットがk:(kt…k02,l:(lt…l02であるときの上位t〜iの上位ビット値をmi=(kt…ki2,ni=(lt…li2としたとき、
3点の集合G’iは、
前記点P,点Qを用いて示される、下式、
iP+ni
iP+(ni+1)Q
(mi+1)P+ni
(mi+1)P+(ni+1)Q
の4点から、前記2進表現データのk,lのビット値(ki-1,li-1)の組合わせに基づいて選択される3点であり、
前記繰り返し演算処理ステップは、
算出済みの3点の集合G’i+1から、次の3点の集合G’iを算出する処理を繰り返し実行し、最終的に3点の集合G’1を算出する処理ステップとして実行し、さらに3点の集合G’1からW=kP+lQを算出することを特徴とする。
【0032】
さらに、本発明の第3の側面は、
暗号処理装置において実行する2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理方法であり、
前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出において、
暗号処理演算部において、前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記4点の集合G t+1 を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法にある。
【0033】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
4点の集合Gは、前記点P,点Qを用いて、下式、
[i]=P+n
[i]=P+(n+1)Q
[i]=(m+1)P+n
[i]=(m+1)P+(n+1)Q
として示される4点であり、
前記初期点算出ステップは、
i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
として設定する処理ステップとして実行することを特徴とする。
【0034】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、
前記k,lの2進表現データの各ビットがk:(kt…k02,l:(lt…l02であるときの上位t〜iの上位ビット値をmi=(kt…ki2,ni=(lt…li2としたとき、
4点の集合Giは、前記点P,点Qを用いて、下式、
iP+ni
iP+(ni+1)Q
(mi+1)P+ni
(mi+1)P+(ni+1)Q
として示される4点であり、
前記繰り返し演算処理ステップは、
算出済みの4点の集合Gi+1から、次の4点の集合Giを算出する処理を繰り返し実行し、最終的に4点の集合G0を算出する処理ステップとして実行し、4点の集合G0を構成する1点をW=kP+lQとして算出することを特徴とする。
【0035】
さらに、本発明の第4の側面は、
暗号処理装置において実行する2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理方法であり、
前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出において、
暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記3点の集合G ' を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法にある。
【0036】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
3点の集合G'は、
前記点P,点Qを用いて示される、下式、
[i]=P+n
[i]=P+(n+1)Q
[i]=(m+1)P+n
[i]=(m+1)P+(n+1)Q
の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
前記初期点算出ステップは、
i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
の4点から、前記2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて選択される3点として設定する処理ステップとして実行することを特徴とする。
【0037】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記k,lの2進表現データの各ビットがk:(kt…k02,l:(lt…l02であるときの上位t〜iの上位ビット値をmi=(kt…ki2,ni=(lt…li2としたとき、
3点の集合G’iは、
前記点P,点Qを用いて示される、下式、
iP+ni
iP+(ni+1)Q
(mi+1)P+ni
(mi+1)P+(ni+1)Q
の4点から、前記2進表現データのk,lのビット値(ki-1,li-1)の組合わせに基づいて選択される3点であり、
前記繰り返し演算処理ステップは、
算出済みの3点の集合G’i+1から、次の3点の集合G’iを算出する処理を繰り返し実行し、最終的に3点の集合G’1を算出する処理ステップとして実行し、さらに3点の集合G’1からW=kP+lQを算出することを特徴とする。
【0038】
さらに、本発明の第5の側面は、
素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出を実行する演算処理手段を有し、該演算処理手段は、
前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出処理を実行し、
前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記4点の集合G t+1 を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
として算出する処理として実行することを特徴とする楕円曲線暗号処理装置にある。
【0039】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
4点の集合Gは、前記点P,点Qを用いて、下式、
[i]=P+n
[i]=P+(n+1)Q
[i]=(m+1)P+n
[i]=(m+1)P+(n+1)Q
として示される4点であり、
前記演算処理手段は、
前記初期点算出処理において、
i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
として設定する処理として実行する構成であることを特徴とする。
【0040】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記k,lの2進表現データの各ビットがk:(kt…k02,l:(lt…l02であるときの上位t〜iの上位ビット値をmi=(kt…ki2,ni=(lt…li2としたとき、
4点の集合Giは、前記点P,点Qを用いて、下式、
iP+ni
iP+(ni+1)Q
(mi+1)P+ni
(mi+1)P+(ni+1)Q
として示される4点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの4点の集合Gi+1から、次の4点の集合Giを算出する処理を繰り返し実行し、最終的に4点の集合G0を算出する処理ステップとして実行し、4点の集合G0を構成する1点をW=kP+lQとして算出する処理を実行する構成であることことを特徴とする。
【0041】
さらに、本発明の第6の側面は、
素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出を実行する演算処理手段を有し、該演算処理手段は、
前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出処理を実行し、
前記ビット値検出処理において検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理を実行する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記3点の集合G ' を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理として実行することを特徴とする楕円曲線暗号処理装置にある。
【0042】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
3点の集合G'は、
前記点P,点Qを用いて示される、下式、
[i]=P+n
[i]=P+(n+1)Q
[i]=(m+1)P+n
[i]=(m+1)P+(n+1)Q
の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
前記演算処理手段は、
前記初期点算出処理において、
i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
の4点から、前記2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて選択される3点として設定する処理として実行する構成であることを特徴とする。
【0043】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記k,lの2進表現データの各ビットがk:(kt…k02,l:(lt…l02であるときの上位t〜iの上位ビット値をmi=(kt…ki2,ni=(lt…li2としたとき、
3点の集合G’iは、
前記点P,点Qを用いて示される、下式、
iP+ni
iP+(ni+1)Q
(mi+1)P+ni
(mi+1)P+(ni+1)Q
の4点から、前記2進表現データのk,lのビット値(ki-1,li-1)の組合わせに基づいて選択される3点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの3点の集合G’i+1から、次の3点の集合G’iを算出する処理を繰り返し実行し、最終的に3点の集合G’1を算出する処理ステップとして実行し、さらに3点の集合G’1からW=kP+lQを算出することを特徴とする。
【0044】
さらに、本発明の第7の側面は、
2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出を実行する演算処理手段を有し、該演算処理手段は、
前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出処理を実行し、
前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記4点の集合G t+1 を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
として算出する処理として実行することを特徴とする楕円曲線暗号処理装置にある。
【0045】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
4点の集合Gは、前記点P,点Qを用いて、下式、
[i]=P+n
[i]=P+(n+1)Q
[i]=(m+1)P+n
[i]=(m+1)P+(n+1)Q
として示される4点であり、
前記演算処理手段は、
前記初期点算出処理において、
i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
として設定する処理として実行する構成であることを特徴とする。
【0046】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、
前記k,lの2進表現データの各ビットがk:(kt…k02,l:(lt…l02であるときの上位t〜iの上位ビット値をmi=(kt…ki2,ni=(lt…li2としたとき、
4点の集合Giは、前記点P,点Qを用いて、下式、
iP+ni
iP+(ni+1)Q
(mi+1)P+ni
(mi+1)P+(ni+1)Q
として示される4点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの4点の集合Gi+1から、次の4点の集合Giを算出する処理を繰り返し実行し、最終的に4点の集合G0を算出する処理ステップとして実行し、4点の集合G0を構成する1点をW=kP+lQとして算出する処理を実行する構成であることことを特徴とする。
【0047】
さらに、本発明の第8の側面は、
2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出を実行する演算処理手段を有し、該演算処理手段は、
前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出処理を実行し、
前記ビット値検出処理において検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理を実行する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記3点の集合G ' を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理として実行することを特徴とする楕円曲線暗号処理装置にある。
【0048】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
3点の集合G'は、
前記点P,点Qを用いて示される、下式、
[i]=P+n
[i]=P+(n+1)Q
[i]=(m+1)P+n
[i]=(m+1)P+(n+1)Q
の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
前記演算処理手段は、
前記初期点算出処理において、
i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
の4点から、前記2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて選択される3点として設定する処理として実行する構成であることを特徴とする。
【0049】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記k,lの2進表現データの各ビットがk:(kt…k02,l:(lt…l02であるときの上位t〜iの上位ビット値をmi=(kt…ki2,ni=(lt…li2としたとき、
3点の集合G’iは、
前記点P,点Qを用いて示される、下式、
iP+ni
iP+(ni+1)Q
(mi+1)P+ni
(mi+1)P+(ni+1)Q
の4点から、前記2進表現データのk,lのビット値(ki-1,li-1)の組合わせに基づいて選択される3点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの3点の集合G’i+1から、次の3点の集合G’iを算出する処理を繰り返し実行し、最終的に3点の集合G’1を算出する処理ステップとして実行し、さらに3点の集合G’1からW=kP+lQを算出することを特徴とする。
【0050】
さらに、本発明の第9の側面は、
素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理において、前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記4点の集合G t+1 を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
として算出する処理ステップとして実行させることを特徴とするプログラムにある。
【0051】
さらに、本発明の第10の側面は、
素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理において、前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記3点の集合G ' を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理ステップとして実行させることを特徴とするプログラムにある。
【0052】
さらに、本発明の第11の側面は、
2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理において、前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記4点の集合G t+1 を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
として算出する処理ステップとして実行させることを特徴とするプログラムにある。
【0053】
さらに、本発明の第12の側面は、
2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理において、前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記3点の集合G ' を、
[t+1]=O(無限遠点)
[t+1]=Q
[t+1]=P
[t+1]=P+Q
の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理ステップとして実行させることを特徴とするプログラムにある。
【0054】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供されるコンピュータ・プログラムである。
【0055】
このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。コンピュータ・プログラムをコンピュータ・システムにインストールすることによって、コンピュータ・システム上では協働的作用が発揮され、本発明の他の側面と同様の作用効果を得ることができるのである。
【0056】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【0057】
【発明の実施の形態】
本発明の楕円曲線暗号処理方法および楕円曲線暗号処理装置、すなわち、素体上のモンゴメリ型楕円曲線、および2の拡大体上の楕円曲線において異なる2点のスカラー倍点の加算点:kP+lQを同時に計算する構成について、以下説明する。なお、以下の説明においては、素体上のモンゴメリ型楕円曲線、および2の拡大体上の楕円曲線において異なる2点のスカラー倍点の加算点:kP+lQを同時に計算する方法をスカラー倍同時計算方法と呼ぶ。
【0058】
上述の従来技術の欄で説明したモンゴメリ法によるスカラー倍算は要約すると次のような計算法であると言える。すなわち、従来のモンゴメリ法によるスカラー倍算kP(k=(kt…k02,kt=1)では、mi=(kt…ki2に対して、常にmiPと(mi+1)Pの2点を計算しながら演算を進めていく方式である。
【0059】
[第1実施例]
本発明に係る第1実施例について説明する。本実施例構成においては、楕円曲線における異なる2点のスカラー倍点の加算点:kP+lQに含まれるスカラー量k,lの2進表現を(kt…k02,(lt…l02とし、mi=(kt…ki2,ni=(lt…li2、(ただし、kt=1またはlt=1)としたとき、楕円曲線上の4点の集合Giを以下のように定義する。
【0060】
【数1】
i={miP+niQ,
iP+(ni+1)Q,
(mi+1)P+niQ,
(mi+1)P+(ni+1)Q}
【0061】
このとき、(ki,li)=(0,0)の場合、mi=2mi+1,ni=2ni+1となるから、4点の集合Gi+1と、4点の集合Giとの対応関係が下式(2)に基づいて求められる。
【0062】
【数2】
iP+niQ=2(mi+1P+ni+1Q)
iP+(ni+1)Q=(mi+1P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+ni+1Q)
……式(2)
【0063】
また、(ki,li)=(0,1)の場合、mi=2mi+1,ni=2ni+1+1となるから、4点の集合Gi+1と、4点の集合Giとの対応関係が下式(3)に基づいて求められる。
【0064】
【数3】
iP+niQ=(mi+1P+(ni+1+1)Q))+(mi+1P+ni+1Q)
iP+(ni+1)Q=2(mi+1P+(ni+1+1)Q)
(mi+1)P+niQ=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+(ni+1+1)Q)
……式(3)
【0065】
また、(ki,li)=(1,0)の場合、mi=2mi+1+1,ni=2ni+1となるから、4点の集合Gi+1と、4点の集合Giとの対応関係が下式(4)に基づいて求められる。
【0066】
【数4】
iP+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+ni+1Q)
iP+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+niQ=2((mi+1+1)P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+((mi+1+1)P+ni+1Q)
……式(4)
【0067】
また、(ki,li)=(1,1)の場合、mi=2mi+1+1,ni=2ni+1+1となるから、4点の集合Gi+1と、4点の集合Giとの対応関係が下式(5)に基づいて求められる。
【0068】
【数5】
iP+niQ=((mi+1+1)P+(ni+1+1)Q))+(mi+1P+ni+1Q)
iP+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+(ni+1+1)Q)
(mi+1)P+niQ=((mi+1+1)P+(ni+1+1)Q)+((mi+1+1)P+ni+1Q)
(mi+1)P+(ni+1)Q=2((mi+1+1)P+(ni+1+1)Q)
……式(5)
【0069】
以上の各式(2)、(3)、(4)、(5)に基づいて、Gi+1からGiを求めることができる。
【0070】
ここで、
0[i]=miP+ni
1[i]=miP+(ni+1)Q
2[i]=(mi+1)P+ni
3[i]=(mi+1)P+(ni+1)Q
として、
i={T0[i],T1[i],T2[i],T3[i]}
と表現する。
【0071】
t+1=0、nt+1=0であるから、Giの初期値Gt+1を、
0[t+1]=O(無限遠点)
1[t+1]=Q
2[t+1]=P
3[t+1]=P+Qとおいて、
図1のフローに従った処理を実行しkP+lQ(=W)を求める。
【0072】
以下、図1のフローに従って本発明の楕円曲線暗号処理方法を適用した処理について説明する。
【0073】
まず、ステップS101において、P,Q,k,l,rを入力する。次に、ステップS102、S103において、kPが無限遠点(O)である場合についての判定を行なう。
【0074】
具体的には、ステップS102において、点Pが無限遠点(O)であると判定された場合には、kPは無限遠点(O)となるから、W=lQとなり、lQの計算を行なうためにステップS108へ進む。同様に、ステップS103において、kが0と判定された場合には、kPは無限遠点(O)となるから、W=lQとなり、lQの計算を行なうためにステップS108へ進む。ステップS108では、QをPに、lをkに代入してlQをkPの計算に変換し、ステップS111へ進む。
【0075】
次に、ステップS104、S105において、lQが無限遠点(O)である場合についての判定を行なう。
【0076】
具体的には、ステップS104において、点Qが無限遠点(O)であると判定された場合には、lQは無限遠点(O)となるから、W=kPとなり、kPの計算を行なうためにステップS111へ進む。同様に、ステップS105において、lが0と判定された場合には、lQは無限遠点(O)となるから、W=kPとなり、kPの計算を行なうためにステップS111へ進む。
【0077】
ステップS106では、P=Qかを判定する。P=Qであれば、W=kP+lQ=(k+l)Pとなるから、ステップS109において、k=k+lmodrとして、(k+l)PをkPの計算に変換し、ステップS111へ進む。ステップS107では、P=−Qかを判定する。P=−Qであれば、W=kP+lQ=(k−l)Pとなるから、ステップS110において、k=k−lmodrとして、(k−l)PをkPの計算に変換し、ステップS111へ進む。
【0078】
ステップS111では、ステップS102〜S107において「Yes」と判定されている場合においては、kP+lQの計算は、ステップS108〜S110において、kPの計算に変換されているから、P,kを入力としてスカラー倍計算を行ない、出力Wを得て終了する。
【0079】
ステップS112では、P,Qの加算点P+Qを求める。ステップS113では、kを2進展開し、ステップS114ではlを2進展開する。このとき、kt=1、または、lt=1である。ステップS115ではGiの初期値Gt+1
0[t+1]=O(無限遠点)
1[t+1]=Q
2[t+1]=P
3[t+1]=P+Qとおいて、
ステップS116では、i=tと初期化する。
【0080】
ステップS117〜S125においては、2進展開したk,lの各ビット(ki,li)に応じてGi+1からGiを計算し、最終的にG0を求める。
【0081】
すなわち、ステップS117で、(ki,li)=(0,0)と判定された場合には、前述の式(2)に従って、ステップS120において、
0[i]=2T0[i+1]
1[i]=T1[i+1]+T0[i+1]
2[i]=T2[i+1]+T0[i+1]
3[i]=T3[i+1]+T0[i+1]
とし、Gi+1からGiを計算する。
【0082】
また、ステップS118で、(ki,li)=(0,1)と判定された場合には、前述の式(3)に従って、ステップS121において、
0[i]=T1[i+1]+T0[i+1]
1[i]=2T1[i+1]
2[i]=T3[i+1]+T0[i+1]
3[i]=T3[i+1]+T1[i+1]
とし、Gi+1からGiを計算する。
【0083】
また、ステップS119で、(ki,li)=(1,0)と判定された場合には、前述の式(4)に従って、ステップS122において、
0[i]=T2[i+1]+T0[i+1]
1[i]=T3[i+1]+T0[i+1]
2[i]=2T2[i+1]
3[i]=T3[i+1]+T2[i+1]
とし、Gi+1からGiを計算する。
【0084】
また、ステップS117〜S119でNoと判定された場合、すなわち、(ki,li)=(1,1)と判定された場合には、前述の式(5)に従って、ステップS123において、
0[i]=T3[i+1]+T0[i+1]
1[i]=T3[i+1]+T1[i+1]
2[i]=T3[i+1]+T2[i+1]
3[i]=2T3[i+1]
とし、Gi+1からGiを計算する。
【0085】
ステップS124では、iにi−1を代入し、ステップS125では、i≧0を判定し、i≧0である場合には、ステップS117に戻り、同様の処理を繰り返し実行する。
【0086】
ステップS125でi≧0がNoと判定された場合は、G0が算出されたことになり、ステップS126に進む。
【0087】
モンゴメリ法を用いた点の加算においては、差分点が既知であることが必要であるが、
1[i+1]−T0[i+1]=Q
2[i+1]−T0[i+1]=P
3[i+1]−T0[i+1]=P+Q
3[i+1]−T1[i+1]=P
3[i+1]−T2[i+1]=Q
により、差分点は既知となっている。
【0088】
ここで、m0=k,n0=lであるから、T0[0]=kP+lQとなり、ステップS126でWにT0[0]を代入して、2点のスカラー倍の加算点kP+lQ=W=T0[0]として終了する。
【0089】
なお、T3[i+1]+T0[i+1]は、T2[i+1]+T1[i+1]とすることもできる。この場合、T2[i+1]−T1[i+1]=P−Qとなるため、P,Qの差分P−Qを事前に計算する必要がある。
【0090】
上述したように、本発明の構成においては、スカラー倍算:kP+lQを、楕円上の4点の集合Giを定義して実行することにより、高速に結果を出力することができる。
【0091】
[第2実施例]
次に、第1の実施例をさらに高速化した処理構成について第2実施例として説明する。第1実施例と同様、楕円曲線における異なる2点のスカラー倍点の加算点:kP+lQに含まれるスカラー量k,lの2進表現を(kt…k02,(lt…l02とし、mi=(kt…ki2,ni=(lt…li2、(ただし、kt=1またはlt=1)としたとき、楕円曲線上の4点の集合Giを第1実施例と同様、以下のように定義する。
i={miP+niQ,
iP+(ni+1)Q,
(mi+1)P+niQ,
(mi+1)P+(ni+1)Q}
【0092】
このとき、(ki,li)=(0,0)の場合、mi=2mi+1,ni=2ni+1となるから、4点の集合Gi+1と、4点の集合Giとの対応関係は、前述の式(2)、すなわち下式に基づいて求められる。
【0093】
iP+niQ=2(mi+1P+ni+1Q)
iP+(ni+1)Q=(mi+1P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+ni+1Q)
……式(2)
【0094】
この式(2)は、以下のように変形することができる。
【0095】
【数6】
iP+niQ=2(mi+1P+ni+1Q)
iP+(ni+1)Q=(mi+1P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+ni+1Q)+(mi+1P+(ni+1+1)Q)
……式(6)
【0096】
この式(6)において、Gi+1の要素(mi+1+1)P+(ni+1+1)Qは、Giを求めるためには必要のない要素である。
【0097】
また、(ki,li)=(0,1)の場合、4点の集合Gi+1と、4点の集合Giとの対応関係は前述の式(3)で示されるが、式(3)において、Gi+1の要素(mi+1+1)P+ni+1Qは、Giを求めるためには必要のない要素である。
【0098】
また、(ki,li)=(1,0)の場合、4点の集合Gi+1と、4点の集合Giとの対応関係は前述の式(4)で示されるが、式(4)において、Gi+1の要素mi+1P+(ni+1+1)Qは、Giを求めるためには必要のない要素である。
【0099】
また、(ki,li)=(1,1)の場合、4点の集合Gi+1と、4点の集合Giとの対応関係は前述の式(5)で示されるが、式(5)は、以下のように変形することができる。
【0100】
【数7】
iP+niQ=((mi+1+1)P+ni+1Q))+(mi+1P+(ni+1+1)Q)
iP+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+(ni+1+1)Q)
(mi+1)P+niQ=((mi+1+1)P+(ni+1+1)Q)+((mi+1+1)P+ni+1Q)
(mi+1)P+(ni+1)Q=2((mi+1+1)P+(ni+1+1)Q)
……式(7)
【0101】
上記式(7)から明らかなように、Gi+1の要素mi+1P+ni+1Qは、Giを求めるためには必要のない要素である。
【0102】
上述のように、第1実施例において説明した、(ki,li)の各場合における4点の集合Gi+1と、4点の集合Giとの対応関係式において、Gi+1の要素(mi+1+1−ki)P+(ni+1+1−li)QをGiを求めるためには必要のない要素として定義することができる。
【0103】
そこで、第1実施例で適用した4点の集合Giを3点の集合G’iとして、以下の式(8)のように定義する。
【0104】
【数8】
G’i=Gi−{(mi+1−ki-1)P+(ni+1−li-1)Q}
……式(8)
【0105】
このとき、G’i+1からGiを計算することができるから、G’i+1からG’iを計算することができる。ここで、G’i+1からG’iを計算する際には、その計算方法は、(ki,li)に依存するが、さらに、GiからG’iを定義する際に(ki-1,li-1)に依存するため、G’i+1からG’iを計算する際には、その計算方法は、(ki,li,ki-1,li-1)に依存する。
【0106】
以下、(ki,li,ki-1,li-1)に応じたG’i+1からG’iを計算する手法について説明する。
【0107】
まず、(ki,li,ki-1,li-1)=(0,0,0,0)の場合、
G’i+1={mi+1P+ni+1Q,mi+1P+(ni+1+1)Q,(mi+1+1)P+ni+1Q}
G’i={miP+niQ,miP+(ni+1)Q,(mi+1)P+niQ}
となるから、前述の式(6)に基づいて、下式(9)に従って、G’i+1からG’iを計算する。
【0108】
【数9】
iP+niQ=2(mi+1P+ni+1Q)
iP+(ni+1)Q=(mi+1P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+ni+1Q)
……式(9)
【0109】
次に、(ki,li,ki-1,li-1)=(0,0,0,1)の場合、
G’i+1={mi+1P+ni+1Q,mi+1P+(ni+1+1)Q,(mi+1+1)P+ni+1Q}
G’i={miP+niQ,miP+(ni+1)Q,(mi+1)P+(ni+1)Q}
となるから、前述の式(6)に基づいて、下式(10)に従って、G’i+1からG’iを計算する。
【0110】
【数10】
iP+niQ=2(mi+1P+ni+1Q)
iP+(ni+1)Q=(mi+1P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+ni+1Q)+(mi+1P+(ni+1+1)Q)
……式(10)
【0111】
次に、(ki,li,ki-1,li-1)=(0,0,1,0)の場合、
G’i+1={mi+1P+ni+1Q,mi+1P+(ni+1+1)Q,(mi+1+1)P+ni+1Q}
G’i={miP+niQ,(mi+1)P+niQ,(mi+1)P+(ni+1)Q}
となるから、前述の式(6)に基づいて、下式(11)に従って、G’i+1からG’iを計算する。
【0112】
【数11】
iP+niQ=2(mi+1P+ni+1Q)
(mi+1)P+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+ni+1Q)+(mi+1P+(ni+1+1)Q)
……式(11)
【0113】
次に、(ki,li,ki-1,li-1)=(0,0,1,1)の場合、
G’i+1={mi+1P+ni+1Q,mi+1P+(ni+1+1)Q,(mi+1+1)P+ni+1Q}
G’i={miP+(ni+1)Q,(mi+1)P+niQ,(mi+1)P+(ni+1)Q}
となるから、前述の式(6)に基づいて、下式(12)に従って、G’i+1からG’iを計算する。
【0114】
【数12】
iP+(ni+1)Q=(mi+1P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+ni+1Q)+(mi+1P+(ni+1+1)Q)
……式(12)
【0115】
次に、(ki,li,ki-1,li-1)=(0,1,0,0)の場合、
G’i+1={mi+1P+ni+1Q,mi+1P+(ni+1+1)Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+niQ,miP+(ni+1)Q,(mi+1)P+niQ}
となるから、前述の式(3)に基づいて、下式(13)に従って、G’i+1からG’iを計算する。
【0116】
【数13】
iP+niQ=(mi+1P+(ni+1+1)Q)+(mi+1P+ni+1Q)
iP+(ni+1)Q=2(mi+1P+(ni+1+1)Q)
(mi+1)P+niQ=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+ni+1Q)
……式(13)
【0117】
次に、(ki,li,ki-1,li-1)=(0,1,0,1)の場合、
G’i+1={mi+1P+ni+1Q,mi+1P+(ni+1+1)Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+niQ,miP+(ni+1)Q,(mi+1)P+(ni+1)Q}
となるから、前述の式(3)に基づいて、下式(14)に従って、G’i+1からG’iを計算する。
【0118】
【数14】
iP+niQ=(mi+1P+(ni+1+1)Q)+(mi+1P+ni+1Q)
iP+(ni+1)Q=2(mi+1P+(ni+1+1)Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+(ni+1+1)Q)
……式(14)
【0119】
次に、(ki,li,ki-1,li-1)=(0,1,1,0)の場合、
G’i+1={mi+1P+ni+1Q,mi+1P+(ni+1+1)Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+niQ,(mi+1)P+niQ,(mi+1)P+(ni+1)Q}
となるから、前述の式(3)に基づいて、下式(15)に従って、G’i+1からG’iを計算する。
【0120】
【数15】
iP+niQ=(mi+1P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+niQ=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+(ni+1+1)Q)
……式(15)
【0121】
次に、(ki,li,ki-1,li-1)=(0,1,1,1)の場合、
G’i+1={mi+1P+ni+1Q,mi+1P+(ni+1+1)Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+(ni+1)Q,(mi+1)P+niQ,(mi+1)P+(ni+1)Q}
となるから、前述の式(3)に基づいて、下式(16)に従って、G’i+1からG’iを計算する。
【0122】
【数16】
iP+(ni+1)Q=2(mi+1P+(ni+1+1)Q)
(mi+1)P+niQ=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+(ni+1+1)Q)
……式(16)
【0123】
次に、(ki,li,ki-1,li-1)=(1,0,0,0)の場合、
G’i+1={mi+1P+ni+1Q,(mi+1+1)P+ni+1Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+niQ,miP+(ni+1)Q,(mi+1)P+niQ}
となるから、前述の式(4)に基づいて、下式(17)に従って、G’i+1からG’iを計算する。
【0124】
【数17】
iP+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+ni+1Q)
iP+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+niQ=2((mi+1+1)P+ni+1Q)
……式(17)
【0125】
次に、(ki,li,ki-1,li-1)=(1,0,0,1)の場合、
G’i+1={mi+1P+ni+1Q,(mi+1+1)P+ni+1Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+niQ,miP+(ni+1)Q,(mi+1)P+(ni+1)Q}
となるから、前述の式(4)に基づいて、下式(18)に従って、G’i+1からG’iを計算する。
【0126】
【数18】
iP+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+ni+1Q)
iP+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+((mi+1+1)P+ni+1Q)
……式(18)
【0127】
次に、(ki,li,ki-1,li-1)=(1,0,1,0)の場合、
G’i+1={mi+1P+ni+1Q,(mi+1+1)P+ni+1Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+niQ,(mi+1)P+niQ,(mi+1)P+(ni+1)Q}
となるから、前述の式(4)に基づいて、下式(19)に従って、G’i+1からG’iを計算する。
【0128】
【数19】
iP+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+ni+1Q)
(mi+1)P+niQ=2((mi+1+1)P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+((mi+1+1)P+ni+1Q)
……式(19)
【0129】
次に、(ki,li,ki-1,li-1)=(1,0,1,1)の場合、
G’i+1={mi+1P+ni+1Q,(mi+1+1)P+ni+1Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+(ni+1)Q,(mi+1)P+niQ,(mi+1)P+(ni+1)Q}
となるから、前述の式(4)に基づいて、下式(20)に従って、G’i+1からG’iを計算する。
【0130】
【数20】
iP+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+ni+1Q)
(mi+1)P+niQ=2((mi+1+1)P+ni+1Q)
(mi+1)P+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+((mi+1+1)P+ni+1Q)
……式(20)
【0131】
次に、(ki,li,ki-1,li-1)=(1,1,0,0)の場合、
G’i+1={mi+1P+(ni+1+1)Q,(mi+1+1)P+ni+1Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+niQ,miP+(ni+1)Q,(mi+1)P+niQ}
となるから、前述の式(7)に基づいて、下式(21)に従って、G’i+1からG’iを計算する。
【0132】
【数21】
iP+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+(ni+1+1)Q)
iP+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+(ni+1+1)Q)
(mi+1)P+niQ=((mi+1+1)P+(ni+1+1)Q)+((mi+1+1)P+ni+1Q)
……式(21)
【0133】
次に、(ki,li,ki-1,li-1)=(1,1,0,1)の場合、
G’i+1={mi+1P+(ni+1+1)Q,(mi+1+1)P+ni+1Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+niQ,miP+(ni+1)Q,(mi+1)P+(ni+1)Q}
となるから、前述の式(7)に基づいて、下式(22)に従って、G’i+1からG’iを計算する。
【0134】
【数22】
iP+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+(ni+1+1)Q)
iP+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+(ni+1+1)Q)
(mi+1)P+(ni+1)Q=2((mi+1+1)P+(ni+1+1)Q)
……式(22)
【0135】
次に、(ki,li,ki-1,li-1)=(1,1,1,0)の場合、
G’i+1={mi+1P+(ni+1+1)Q,(mi+1+1)P+ni+1Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+niQ,(mi+1)P+niQ,(mi+1)P+(ni+1)Q}
となるから、前述の式(7)に基づいて、下式(23)に従って、G’i+1からG’iを計算する。
【0136】
【数23】
iP+niQ=((mi+1+1)P+ni+1Q)+(mi+1P+(ni+1+1)Q)
(mi+1)P+niQ=((mi+1+1)P+(ni+1+1)Q)+((mi+1+1)P+ni+1Q)
(mi+1)P+(ni+1)Q=2((mi+1+1)P+(ni+1+1)Q)
……式(23)
【0137】
最後に、(ki,li,ki-1,li-1)=(1,1,1,1)の場合、
G’i+1={mi+1P+(ni+1+1)Q,(mi+1+1)P+ni+1Q,(mi+1+1)P+(ni+1+1)Q}
G’i={miP+(ni+1)Q,(mi+1)P+niQ,(mi+1)P+(ni+1)Q}
となるから、前述の式(7)に基づいて、下式(24)に従って、G’i+1からG’iを計算する。
【0138】
【数24】
iP+(ni+1)Q=((mi+1+1)P+(ni+1+1)Q)+(mi+1P+(ni+1+1)Q)
(mi+1)P+niQ=((mi+1+1)P+(ni+1+1)Q)+((mi+1+1)P+ni+1Q)
(mi+1)P+(ni+1)Q=2((mi+1+1)P+(ni+1+1)Q)
……式(24)
【0139】
以上の各式により、(ki,li,ki-1,li-1)の取り得るすべての場合について、G’i+1からG’iが算出できる。
【0140】
第2実施例を適用してW=kP+lQを求める処理について、図3以下に示すフローチャートを用いて説明する。なお、当フローの概略は、G’iをG’i={T0[i],T1[i],T2[i]}と表現し、mt+1=0、nt+1=0により、G’i+1の初期値を定めてG’iを計算してW=kP+lQを求める処理である。
【0141】
まず、ステップS201において、P,Q,k,l,rを入力する。次に、ステップS202、S203において、kPが無限遠点(O)である場合についての判定を行なう。
【0142】
具体的には、ステップS202において、点Pが無限遠点(O)であると判定された場合には、kPは無限遠点(O)となるから、W=lQとなり、lQの計算を行なうためにステップS208へ進む。同様に、ステップS203において、kが0と判定された場合には、kPは無限遠点(O)となるから、W=lQとなり、lQの計算を行なうためにステップS208へ進む。ステップS208では、QをPに、lをkに代入してlQをkPの計算に変換し、ステップS211へ進む。
【0143】
次に、ステップS204、S205において、lQが無限遠点(O)である場合についての判定を行なう。
【0144】
具体的には、ステップS204において、点Qが無限遠点(O)であると判定された場合には、lQは無限遠点(O)となるから、W=kPとなり、kPの計算を行なうためにステップS211へ進む。同様に、ステップS205において、lが0と判定された場合には、lQは無限遠点(O)となるから、W=kPとなり、kPの計算を行なうためにステップS211へ進む。
【0145】
ステップS206では、P=Qかを判定する。P=Qであれば、kP+lQ=(k+l)Pとなるから、ステップS209において、k=k+lmodrとして、(k+l)PをkPの計算に変換し、ステップS211へ進む。ステップS207では、P=−Qかを判定する。P=−Qであれば、W=kP+lQ=(k−l)Pとなるから、ステップS210において、k=k−lmodrとして、(k−l)PをkPの計算に変換し、ステップS211へ進む。
【0146】
ステップS211では、ステップS202〜S207において「Yes」と判定されている場合においては、kP+lQの計算は、ステップS208〜S210において、kPの計算に変換されているから、P,kを入力としてスカラー倍計算を行ない、出力Wを得て終了する。
【0147】
ステップS212では、P,Qの加算点P+Qと差分点P−Qを求める。ステップS213では、kを2進展開し、ステップS214ではlを2進展開する。このとき、kt=1、または、lt=1である。
【0148】
ステップS215〜S219ではG’iの初期値G’t+1を求める。まず、ステップS215で、(kt,lt)=(0,1)と判定された場合には、式(1)、(8)により、
G’t+1={O(無限遠点),Q,P+Q}だから、
ステップS217で、
0[t+1]=O(無限遠点)
1[t+1]=Q
2[t+1]=P+Q
を代入する。
【0149】
次に、ステップS216で、(kt,lt)=(1,0)と判定された場合には、式(1)、(8)により、
G’t+1={O(無限遠点),P,P+Q}だから、
ステップS217で、
0[t+1]=O(無限遠点)
1[t+1]=P
2[t+1]=P+Q
を代入する。
【0150】
最後に、ステップS216、S217でNoと判定された場合、つまり、(kt,lt)=(1,1)と判定された場合には、式(1)、(8)により、
G’t+1={Q,P,P+Q}だから、
ステップS217で、
0[t+1]=Q
1[t+1]=P
2[t+1]=P+Q
を代入する。
【0151】
その後、ステップS220でi=tと初期化する。ステップS221〜S229では、(ki,li,ki-1,li-1)の値に応じて、G’i+1からG’iを算出し、最終的にG’1を求める。
【0152】
ステップS221で、(ki,li)=(0,0)と判定された場合には、ステップS224の処理を実行する。ステップS224の処理の詳細フローを図6に示す。
【0153】
図6のステップS301で、(ki-1,li-1)=(0,0)と判定された場合には、前述の式(9)に従って、ステップS304において、
0[i]=2T0[i+1]
1[i]=T1[i+1]+T0[i+1]
2[i]=T2[i+1]+T0[i+1]
と代入し、G’i+1からG’iを計算する。
【0154】
また、ステップS302で、(ki-1,li-1)=(0,1)と判定された場合には、前述の式(10)に従って、ステップS305において、
0[i]=2T0[i+1]
1[i]=T1[i+1]+T0[i+1]
2[i]=T2[i+1]+T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0155】
また、ステップS303で、(ki-1,li-1)=(1,0)と判定された場合には、前述の式(11)に従って、ステップS306において、
0[i]=2T0[i+1]
1[i]=T2[i+1]+T0[i+1]
2[i]=T2[i+1]+T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0156】
また、ステップS301〜S303でNoと判定された場合、すなわち、(ki-1,li-1)=(1,1)と判定された場合には、前述の式(12)に従って、ステップS307において、
0[i]=T1[i+1]+T0[i+1]
1[i]=T2[i+1]+T0[i+1]
2[i]=T2[i+1]+T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0157】
ステップS304〜S307では、点の加算の際に必要な差分点は、
1[i+1]−T0[i+1]=Q
2[i+1]−T0[i+1]=P
2[i+1]−T1[i+1]=P−Q
となる。いずれの場合もステップS228に進む。
【0158】
ステップS222で、(ki,li)=(0,1)と判定された場合には、ステップS225の処理を実行する。ステップS225の処理の詳細フローを図7に示す。
【0159】
図7のステップS401で、(ki-1,li-1)=(0,0)と判定された場合には、前述の式(13)に従って、ステップS404において、
0[i]=T1[i+1]+T0[i+1]
1[i]=2T1[i+1]
2[i]=T2[i+1]+T0[i+1]
と代入し、G’i+1からG’iを計算する。
【0160】
また、ステップS402で、(ki-1,li-1)=(0,1)と判定された場合には、前述の式(14)に従って、ステップS405において、
0[i]=T1[i+1]+T0[i+1]
1[i]=2T1[i+1]
2[i]=T2[i+1]+T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0161】
また、ステップS403で、(ki-1,li-1)=(1,0)と判定された場合には、前述の式(15)に従って、ステップS406において、
0[i]=T1[i+1]+T0[i+1]
1[i]=T2[i+1]+T0[i+1]
2[i]=T2[i+1]+T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0162】
また、ステップS401〜S403でNoと判定された場合、すなわち、(ki-1,li-1)=(1,1)と判定された場合には、前述の式(16)に従って、ステップS407において、
0[i]=2T1[i+1]
1[i]=T2[i+1]+T0[i+1]
2[i]=T2[i+1]+T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0163】
ステップS404〜S407では、点の加算の際に必要な差分点は、
1[i+1]−T0[i+1]=Q
2[i+1]−T0[i+1]=P+Q
2[i+1]−T1[i+1]=P
となる。いずれの場合もステップS228に進む。
【0164】
ステップS223で、(ki,li)=(1,0)と判定された場合には、ステップS226の処理を実行する。ステップS226の処理の詳細フローを図8に示す。
【0165】
図8のステップS501で、(ki-1,li-1)=(0,0)と判定された場合には、前述の式(17)に従って、ステップS504において、
0[i]=T1[i+1]+T0[i+1]
1[i]=T2[i+1]+T0[i+1]
2[i]=2T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0166】
また、ステップS502で、(ki-1,li-1)=(0,1)と判定された場合には、前述の式(18)に従って、ステップS505において、
0[i]=T1[i+1]+T0[i+1]
1[i]=T2[i+1]+T1[i+1]
2[i]=T2[i+1]+T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0167】
また、ステップS503で、(ki-1,li-1)=(1,0)と判定された場合には、前述の式(19)に従って、ステップS506において、
0[i]=T1[i+1]+T0[i+1]
1[i]=2T1[i+1]
2[i]=T2[i+1]+T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0168】
また、ステップS501〜S503でNoと判定された場合、すなわち、(ki-1,li-1)=(1,1)と判定された場合には、前述の式(20)に従って、ステップS507において、
0[i]=T2[i+1]+T0[i+1]
1[i]=2T1[i+1]
2[i]=T2[i+1]+T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0169】
ステップS504〜S507では、点の加算の際に必要な差分点は、
1[i+1]−T0[i+1]=P
2[i+1]−T0[i+1]=P+Q
2[i+1]−T1[i+1]=Q
となる。いずれの場合もステップS228に進む。
【0170】
ステップS221〜S223でNoと判定された場合、すなわち(ki,li)=(1,1)と判定された場合には、ステップS227の処理を実行する。ステップS227の処理の詳細フローを図9に示す。
【0171】
図9のステップS601で、(ki-1,li-1)=(0,0)と判定された場合には、前述の式(21)に従って、ステップS604において、
0[i]=T1[i+1]+T0[i+1]
1[i]=T2[i+1]+T0[i+1]
2[i]=T2[i+1]+T1[i+1]
と代入し、G’i+1からG’iを計算する。
【0172】
また、ステップS602で、(ki-1,li-1)=(0,1)と判定された場合には、前述の式(22)に従って、ステップS605において、
0[i]=T1[i+1]+T0[i+1]
1[i]=T2[i+1]+T0[i+1]
2[i]=2T2[i+1]
と代入し、G’i+1からG’iを計算する。
【0173】
また、ステップS603で、(ki-1,li-1)=(1,0)と判定された場合には、前述の式(23)に従って、ステップS606において、
0[i]=T1[i+1]+T0[i+1]
1[i]=T2[i+1]+T1[i+1]
2[i]=2T2[i+1]
と代入し、G’i+1からG’iを計算する。
【0174】
また、ステップS601〜S603でNoと判定された場合、すなわち、(ki-1,li-1)=(1,1)と判定された場合には、前述の式(24)に従って、ステップS607において、
0[i]=T2[i+1]+T0[i+1]
1[i]=T2[i+1]+T1[i+1]
2[i]=2T2[i+1]
と代入し、G’i+1からG’iを計算する。
【0175】
ステップS604〜S607では、点の加算の際に必要な差分点は、
1[i+1]−T0[i+1]=P−Q
2[i+1]−T0[i+1]=P
2[i+1]−T1[i+1]=Q
となる。いずれの場合もステップS228に進む。
【0176】
ステップS228では、iにi−1を代入し、ステップS229では、i≧1を判定し、i≧1である場合には、ステップS221に戻り、同様の処理を繰り返し実行する。
【0177】
ステップS229でi≧1がNoと判定された場合は、G’1が算出されたことになり、ステップS230に進む。
【0178】
ステップS230〜S236では、G’1からWを求める。WはG’0を構成する3点の1つの点であり、kP+lQに相当する。
【0179】
ステップS230で、(k0,l0)=(0,0)と判定された場合には、
0[1]=m1P+n1Qで、
k=m0=2m1
l=n0=2n1
だから、
ステップS233で、W=2T0[1]を代入して終了する。
【0180】
ステップS231で、(k0,l0)=(0,1)と判定された場合には、
0[1]=m1P+n1Q、
1[1]=m1P+(n1+1)Qで、
k=m0=2m1
l=n0=2n1+1、
だから、
ステップS234で、W=T1[1]+T0[1]を代入して終了する。このとき、点の加算の際に必要な差分点は、T1[1]−T0[1]=Qである。
【0181】
ステップS232で、(k0,l0)=(1,0)と判定された場合には、
0[1]=m1P+n1Q、
1[1]=(m1+1)P+n1Qで、
k=m0=2m1+1、
l=n0=2n1
だから、
ステップS235で、W=T1[1]+T0[1]を代入して終了する。このとき、点の加算の際に必要な差分点は、T1[1]−T0[1]=Pである。
【0182】
ステップS230〜S232でNoと判定された場合、すなわち、(k0,l0)=(1,1)と判定された場合には、
0[1]=m1P+(n1+1)Q、
1[1]=(m1+1)P+n1Qで、
k=m0=2m1+1、
l=n0=2n1+1、
だから、
ステップS236で、W=T1[1]+T0[1]を代入して終了する。このとき、点の加算の際に必要な差分点は、T1[1]−T0[1]=P−Qである。
【0183】
以上、説明したように、上述したように、本発明の構成においては、スカラー倍算:kP+lQを、楕円上の3点の集合G’iを定義して実行することにより、高速に結果を出力することができる。
【0184】
なお、上述した第1実施例、第2実施例とも、素体上のモンゴメリ型楕円曲線、および2の拡大体上の楕円曲線において、実施可能であり、また、アフィン座標系および射影座標系のどちらにおいても実施可能である。
【0185】
[システム構成例]
なお、上述の実施例で述べた一連の処理は、ハードウェア、ソフトウェアの組合わせにより行うことができる。即ち、汎用のコンピュータや、マイクロコンピュータにプログラムを実行させることにより行う構成とすることが可能である。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、例えば汎用のコンピュータや1チップのマイクロコンピュータ等にインストールされる。図10は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
【0186】
図10に示すシステム構成例は1つの例であり、システムは、ここに示すべての機能を必ずしも備えることが要求されるものではない。図10に示すCPU(Central processing Unit)101は、各種アプリケーションプログラムや、OS(Operating System)を実行するプロセッサである。ROM(Read-Only-Memory)102は、CPU101が実行するプログラム、あるいは演算パラメータとしての固定データを格納する。RAM(Random Access Memory)103は、CPU101の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用される。
【0187】
HDD104はハードディスクの制御を実行し、ハードディスクに対する各種データ、プログラムの格納処理および読み出し処理を実行する。暗号処理手段105は、送信データの暗号処理、復号処理等を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROM102に格納し、CPU101がROM格納プログラムを読み出して実行するように構成してもよい。メモリ(セキュアモジュール)106は例えば耐タンパ構造を持つメモリとして構成され、暗号処理に必要な鍵データ、アクセス許可書の格納領域として使用可能である。なお、これらのデータは、他のメモリ領域、記憶媒体に格納することも可能である。
【0188】
バス121はPCI(Peripheral Component Internet/Interface)バス等により構成され、各モジュール、入出力インタフェース122を介した各入手力装置とのデータ転送を可能にしている。
【0189】
入力部111は、例えばキーボード、ポインティングデバイス等によって構成され、CPU101に各種のコマンド、データを入力するためにユーザにより操作される。出力部112は、例えばCRT、液晶ディスプレイ等であり、各種情報をテキストまたはイメージ等により表示する。
【0190】
通信部113はシステムの接続したエンティテイ、例えば暗号データの通信エンティテイとの通信処理を実行し、CPU101の制御の下に、各記憶部から供給されたデータ、あるいはCPU101によって処理されたデータ、暗号化されたデータ等を送信したり、他エンティテイからのデータを受信する処理を実行する。
【0191】
ドライブ114は、フロッピーディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体115の記録再生を実行するドライブであり、各リムーバブル記録媒体115からのプログラムまたはデータ再生、リムーバブル記録媒体115に対するプログラムまたはデータ格納を実行する。
【0192】
各記憶媒体に記録されたプログラムまたはデータを読み出してCPU101において実行または処理を行なう場合は、読み出したプログラム、データはインタフェース122、バス121を介して例えば接続されているRAM103に供給される。
【0193】
先に各フロー図を参照した説明内に含まれる楕円曲線処理演算を実行するためのプログラムは例えばROM102に格納されてCPU101によって処理されるか、あるいはハードディスクに格納されHDD104を介してCPU101に供給されて実行される。
【0194】
図10に示す暗号処理手段105について、機能別に詳細な処理ブロックとして示した図が図11である。図11に示すように、暗号処理手段105は、データの暗号化処理、復号処理、署名生成、検証等、各種暗号処理に伴う演算を実行する暗号処理演算部201、楕円曲線の生成処理を実行する楕円曲線生成部202、公開鍵暗号方式に適用する公開鍵、秘密鍵の生成処理を実行する公開鍵秘密鍵生成部203、鍵の生成、その他各種演算に用いる乱数を発生する乱数発生部204、暗号処理演算に適用する各種パラメータ等を記憶する記憶部205を有する。
【0195】
例えば、外部から入力された平文の暗号化、暗号文の復号、または署名の生成、署名の検証処理等を実行する場合は、楕円曲線生成部202でまず楕円曲線を生成し、公開鍵秘密鍵生成部203において生成した鍵を用いて、暗号処理演算部201において各種暗号処理を実行する。
【0196】
例えば、楕円曲線生成部203は、By2=x3+Ax2+xで表されるモンゴメリ(Montgomery)型楕円曲線EM(GF(p))を生成する処理を実行し、暗号処理演算部201は、楕円曲線生成部203において生成された楕円曲線に基づいて、前述のスカラー倍演算処理を実行する。すなわち、暗号処理演算部201は、By2=x3+Ax2+xで表されるモンゴメリ(Montgomery)型楕円曲線EM(GF(p))を射影座標系(X,Y,Z)に変換し、前記射影座標系(X,Y,Z)において、Gi+1からGiを算出可能な4点の集合Giを定義し、前記Giに基づいて、G’i+1からG’iを算出が可能3点の集合G’iを定義し、mt+1=0,nt+1=0として、初期値G’t+1を設定し(ki,li,ki-1,li-1)に応じてG’iを計算してG’1を算出し、前記G’1からkP+lQを求める演算処理等を実行する。
【0197】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【0198】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【0199】
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフロッピーディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【0200】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【0201】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【0202】
【発明の効果】
以上、説明したように、本発明の楕円曲線暗号処理装置および楕円曲線暗号処理方法、並びにプログラムによれば、素体上のモンゴメリ(Montgomery)型楕円曲線上、あるいは2の拡大体上の楕円曲線上におけるスカラー倍演算において、高速化したスカラー倍算が可能となる。
【0203】
さらに、本発明の楕円曲線暗号処理装置および楕円曲線暗号処理方法、並びにプログラムによれば、例えば素体上のモンゴメリ(Montgomery)型楕円曲線暗号処理演算、あるいは2の拡大体上の楕円曲線上において、2つのスカラー倍演算:kP,lQを別々に実行せずにkP+lQの演算処理を同時に行なうことで高速化が実現される。すなわち、初期点を4点、あるいは3点設定し、k,lの2進データ(ki,li,ki-1,li-1)に応じて算出済みの4点の集合Gi+1から次の4点の集合Gi、または算出済みの3点の集合G’i+1から次の3点の集合G’iを順次算出する処理によって高速化したスカラー倍算処理が可能となる。また、yまたはY座標の復元の処理が不要であることがさらなる高速処理を可能としている。
【0204】
さらに、本発明の楕円曲線暗号処理装置および楕円曲線暗号処理方法、並びにプログラムにおける3点の集合G’iを順次算出する手法によれば、従来の楕円曲線暗号処理のスカラー倍算:kP+lQの演算に比較し、3/4倍、つまり25%の高速化が可能となる。また、yまたはY座標の復元を必要としない。
【図面の簡単な説明】
【図1】楕円曲線上の4点を用いたスカー倍算処理フロー(その1)を示す図である。
【図2】楕円曲線上の4点を用いたスカー倍算処理フロー(その2)を示す図である。
【図3】楕円曲線上の3点を用いたスカー倍算処理フロー(その1)を示す図である。
【図4】楕円曲線上の3点を用いたスカー倍算処理フロー(その2)を示す図である。
【図5】楕円曲線上の3点を用いたスカー倍算処理フロー(その3)を示す図である。
【図6】楕円曲線上の3点を用いたスカー倍算処理フローにおける(ki,li)=(0,0)の場合の処理フローを示す図である。
【図7】楕円曲線上の3点を用いたスカー倍算処理フローにおける(ki,li)=(0,1)の場合の処理フローを示す図である。
【図8】楕円曲線上の3点を用いたスカー倍算処理フローにおける(ki,li)=(1,0)の場合の処理フローを示す図である。
【図9】楕円曲線上の3点を用いたスカー倍算処理フローにおける(ki,li)=(1,1)の場合の処理フローを示す図である。
【図10】楕円曲線スカラー倍同時計算処理を実行するシステム構成例を示す図である。
【図11】楕円曲線スカラー倍同時計算処理を実行する暗号処理手段構成例を示す図である。
【符号の説明】
101 CPU
102 ROM
103 RAM
104 HDD
105 暗号処理手段
106 メモリ
111 入力部
112 出力部
113 通信部
114 リムーバブル記憶媒体
121 バス
122 入出力インタフェース
201 暗号処理演算部
202 楕円曲線生成部
203 公開鍵秘密鍵生成部
204 乱数発生部
205 記憶部

Claims (28)

  1. 暗号処理装置において実行する素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理方法であり、
    前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出において、
    暗号処理演算部において、前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出ステップと、
    暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
    暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する繰り返し演算処理ステップとを有し、
    前記初期点算出ステップは、前記4点の集合G t+1 を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法。
  2. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    4点の集合Gは、前記点P,点Qを用いて、下式、
    [i]=P+n
    [i]=P+(n+1)Q
    [i]=(m+1)P+n
    [i]=(m+1)P+(n+1)Q
    として示される4点であり、
    前記初期点算出ステップは、
    i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    として設定する処理ステップとして実行することを特徴とする請求項1に記載の楕円曲線暗号処理方法。
  3. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    4点の集合Gは、前記点P,点Qを用いて、下式、
    P+n
    P+(n+1)Q
    (m+1)P+n
    (m+1)P+(n+1)Q
    として示される4点であり、
    前記繰り返し演算処理ステップは、
    算出済みの4点の集合Gi+1から、次の4点の集合Gを算出する処理を繰り返し実行し、最終的に4点の集合Gを算出する処理ステップとして実行し、4点の集合Gを構成する1点をW=kP+lQとして算出することを特徴とする請求項1に記載の楕円曲線暗号処理方法。
  4. 暗号処理装置において実行する素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理方法であり、
    前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出において、
    暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
    暗号処理演算部において、前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出ステップと、
    暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理ステップとを有し、
    前記初期点算出ステップは、前記3点の集合G ' を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法。
  5. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    3点の集合G'は、
    前記点P,点Qを用いて示される、下式、
    [i]=P+n
    [i]=P+(n+1)Q
    [i]=(m+1)P+n
    [i]=(m+1)P+(n+1)Q
    の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
    前記初期点算出ステップは、
    i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    の4点から、前記2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて選択される3点として設定する処理ステップとして実行することを特徴とする請求項4に記載の楕円曲線暗号処理方法。
  6. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    3点の集合G'は、
    前記点P,点Qを用いて示される、下式、
    P+n
    P+(n+1)Q
    (m+1)P+n
    (m+1)P+(n+1)Q
    の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
    前記繰り返し演算処理ステップは、
    算出済みの3点の集合G'i+1から、次の3点の集合G'を算出する処理を繰り返し実行し、最終的に3点の集合G'を算出する処理ステップとして実行し、さらに3点の集合G'からW=kP+lQを算出することを特徴とする請求項4に記載の楕円曲線暗号処理方法。
  7. 暗号処理装置において実行する2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理方法であり、
    前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出において、
    暗号処理演算部において、前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出ステップと、
    暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
    暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する繰り返し演算処理ステップとを有し、
    前記初期点算出ステップは、前記4点の集合G t+1 を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法。
  8. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    4点の集合Gは、前記点P,点Qを用いて、下式、
    [i]=P+n
    [i]=P+(n+1)Q
    [i]=(m+1)P+n
    [i]=(m+1)P+(n+1)Q
    として示される4点であり、
    前記初期点算出ステップは、
    i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    として設定する処理ステップとして実行することを特徴とする請求項7に記載の楕円曲線暗号処理方法。
  9. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    4点の集合Gは、前記点P,点Qを用いて、下式、
    P+n
    P+(n+1)Q
    (m+1)P+n
    (m+1)P+(n+1)Q
    として示される4点であり、
    前記繰り返し演算処理ステップは、
    算出済みの4点の集合Gi+1から、次の4点の集合Gを算出する処理を繰り返し実行し、最終的に4点の集合Gを算出する処理ステップとして実行し、4点の集合Gを構成する1点をW=kP+lQとして算出することを特徴とする請求項7に記載の楕円曲線暗号処理方法。
  10. 暗号処理装置において実行する2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理方法であり、
    前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出において、
    暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
    暗号処理演算部において、前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出ステップと、
    暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理ステップとを有し、
    前記初期点算出ステップは、前記3点の集合G ' を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法。
  11. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    3点の集合G'は、
    前記点P,点Qを用いて示される、下式、
    [i]=P+n
    [i]=P+(n+1)Q
    [i]=(m+1)P+n
    [i]=(m+1)P+(n+1)Q
    の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
    前記初期点算出ステップは、
    i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    の4点から、前記2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて選択される3点として設定する処理ステップとして実行することを特徴とする請求項10に記載の楕円曲線暗号処理方法。
  12. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    3点の集合G'は、
    前記点P,点Qを用いて示される、下式、
    P+n
    P+(n+1)Q
    (m+1)P+n
    (m+1)P+(n+1)Q
    の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
    前記繰り返し演算処理ステップは、
    算出済みの3点の集合G'i+1から、次の3点の集合G'を算出する処理を繰り返し実行し、最終的に3点の集合G'を算出する処理ステップとして実行し、さらに3点の集合G'からW=kP+lQを算出することを特徴とする請求項10に記載の楕円曲線暗号処理方法。
  13. 素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
    前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出を実行する演算処理手段を有し、該演算処理手段は、
    前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出処理を実行し、
    前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出処理を実行し、
    前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する構成を有し、
    前記演算処理手段は、前記初期点算出処理において、前記4点の集合G t+1 を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    として算出する処理として実行することを特徴とする楕円曲線暗号処理装置。
  14. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    4点の集合Gは、前記点P,点Qを用いて、下式、
    [i]=P+n
    [i]=P+(n+1)Q
    [i]=(m+1)P+n
    [i]=(m+1)P+(n+1)Q
    として示される4点であり、
    前記演算処理手段は、
    前記初期点算出処理において、
    i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    として設定する処理として実行する構成であることを特徴とする請求項13に記載の楕円曲線暗号処理装置。
  15. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    4点の集合Gは、前記点P,点Qを用いて、下式、
    P+n
    P+(n+1)Q
    (m+1)P+n
    (m+1)P+(n+1)Q
    として示される4点であり、
    前記演算処理手段は、
    前記繰り返し演算処理において、
    算出済みの4点の集合Gi+1から、次の4点の集合Gを算出する処理を繰り返し実行し、最終的に4点の集合Gを算出する処理ステップとして実行し、4点の集合Gを構成する1点をW=kP+lQとして算出する処理を実行する構成であることことを特徴とする請求項13に記載の楕円曲線暗号処理装置。
  16. 素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
    前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出を実行する演算処理手段を有し、該演算処理手段は、
    前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出処理を実行し、
    前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出処理を実行し、
    前記ビット値検出処理において検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理を実行する構成を有し、
    前記演算処理手段は、前記初期点算出処理において、前記3点の集合G ' を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理として実行することを特徴とする楕円曲線暗号処理装置。
  17. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    3点の集合G'は、
    前記点P,点Qを用いて示される、下式、
    [i]=P+n
    [i]=P+(n+1)Q
    [i]=(m+1)P+n
    [i]=(m+1)P+(n+1)Q
    の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
    前記演算処理手段は、
    前記初期点算出処理において、
    i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    の4点から、前記2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて選択される3点として設定する処理として実行する構成であることを特徴とする請求項16に記載の楕円曲線暗号処理装置。
  18. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    3点の集合G'は、
    前記点P,点Qを用いて示される、下式、
    P+n
    P+(n+1)Q
    (m+1)P+n
    (m+1)P+(n+1)Q
    の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
    前記演算処理手段は、
    前記繰り返し演算処理において、
    算出済みの3点の集合G'i+1から、次の3点の集合G'を算出する処理を繰り返し実行し、最終的に3点の集合G'を算出する処理ステップとして実行し、さらに3点の集合G'からW=kP+lQを算出することを特徴とする請求項16に記載の楕円曲線暗号処理装置。
  19. 2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
    前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出を実行する演算処理手段を有し、該演算処理手段は、
    前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出処理を実行し、
    前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出処理を実行し、
    前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する構成を有し、
    前記演算処理手段は、前記初期点算出処理において、前記4点の集合G t+1 を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    として算出する処理として実行することを特徴とする楕円曲線暗号処理装置。
  20. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    4点の集合Gは、前記点P,点Qを用いて、下式、
    [i]=P+n
    [i]=P+(n+1)Q
    [i]=(m+1)P+n
    [i]=(m+1)P+(n+1)Q
    として示される4点であり、
    前記演算処理手段は、
    前記初期点算出処理において、
    i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    として設定する処理として実行する構成であることを特徴とする請求項19に記載の楕円曲線暗号処理装置。
  21. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    4点の集合Gは、前記点P,点Qを用いて、下式、
    P+n
    P+(n+1)Q
    (m+1)P+n
    (m+1)P+(n+1)Q
    として示される4点であり、
    前記演算処理手段は、
    前記繰り返し演算処理において、
    算出済みの4点の集合Gi+1から、次の4点の集合Gを算出する処理を繰り返し実行し、最終的に4点の集合Gを算出する処理ステップとして実行し、4点の集合Gを構成する1点をW=kP+lQとして算出する処理を実行する構成であることことを特徴とする請求項19に記載の楕円曲線暗号処理装置。
  22. 2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
    前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出を実行する演算処理手段を有し、該演算処理手段は、
    前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出処理を実行し、
    前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出処理を実行し、
    前記ビット値検出処理において検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理を実行する構成を有し、
    前記演算処理手段は、前記初期点算出処理において、前記3点の集合G ' を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせ に基づいて選択される3点として算出する処理として実行することを特徴とする楕円曲線暗号処理装置。
  23. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    3点の集合G'は、
    前記点P,点Qを用いて示される、下式、
    [i]=P+n
    [i]=P+(n+1)Q
    [i]=(m+1)P+n
    [i]=(m+1)P+(n+1)Q
    の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
    前記演算処理手段は、
    前記初期点算出処理において、
    i=t+1として、mt+1=kt+1=0、nt+1=lt+1=0から、上記式により算出される4点としての、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    の4点から、前記2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて選択される3点として設定する処理として実行する構成であることを特徴とする請求項22に記載の楕円曲線暗号処理装置。
  24. 前記k,lの2進表現データの各ビットがk:(k…k,l:(l…lであるときの上位t〜iの上位ビット値をm=(k…k,n=(l…lとしたとき、
    3点の集合G'は、
    前記点P,点Qを用いて示される、下式、
    P+n
    P+(n+1)Q
    (m+1)P+n
    (m+1)P+(n+1)Q
    の4点から、前記2進表現データのk,lのビット値(ki−1,li−1)の組合わせに基づいて選択される3点であり、
    前記演算処理手段は、
    前記繰り返し演算処理において、
    算出済みの3点の集合G'i+1から、次の3点の集合G'を算出する処理を繰り返し実行し、最終的に3点の集合G'を算出する処理ステップとして実行し、さらに3点の集合G'からW=kP+lQを算出することを特徴とする請求項22に記載の楕円曲線暗号処理装置。
  25. 素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理において、前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
    暗号処理演算部において、前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出ステップと、
    暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
    暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する繰り返し演算処理ステップとを実行させ、
    前記初期点算出ステップにおいては、前記4点の集合G t+1 を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    として算出する処理ステップとして実行させることを特徴とするプログラム。
  26. 素体上のモンゴメリ(Montgomery)型楕円曲線By=x+Ax+xを適用した楕円曲線暗号処理において、前記モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Pのスカラー量(k)倍の点:kPと、該モンゴメリ(Montgomery)型楕円曲線By=x+Ax+x上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
    暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
    暗号処理演算部において、前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出ステップと、
    暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理ステップとを実行させ、
    前記初期点算出ステップにおいては、前記3点の集合G ' を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理ステップとして実行させることを特徴とするプログラム。
  27. 2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理において、前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
    暗号処理演算部において、前記点Pと点Qに基づいて初期点とする4点の集合Gt+1を計算する初期点算出ステップと、
    暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
    暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点4点の集合Gt+1に基づく次の4点の集合Gの算出関係式を選択し、選択された関係式に従って次の4点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行し、最終的にkP+lQを算出する繰り返し演算処理ステップとを実行させ、
    前記初期点算出ステップにおいては、前記4点の集合G t+1 を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    として算出する処理ステップとして実行させることを特徴とするプログラム。
  28. 2の拡大体上の楕円曲線y+xy=x+ax+bを適用した楕円曲線暗号処理において、前記楕円曲線y+xy=x+ax+b上の点:Pのスカラー量(k)倍の点:kPと、該楕円曲線y+xy=x+ax+b上の点:Qのスカラー量(l)倍の点:lQとの加算点:kP+lQの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
    暗号処理演算部において、前記スカラー量k,lの2進表現データの各ビットが、k:(k …k ,l:(l …l であるとしたとき、k,lの各ビット値の組み合わせを検出するビット値検出ステップと、
    暗号処理演算部において、前記スカラー量k,lの2進表現データのk,lの最上位ビット値(k,l)の組合わせに基づいて、初期点とする3点の集合G't+1を前記P,Qを用いて算出する初期点算出ステップと、
    暗号処理演算部において、前記ビット値検出ステップにおいて検出したk,lの2進表現データのビット値の組合わせ(k ,l に応じて、前記初期点3点の集合G't+1に基づく次の3点の集合G'の算出関係式を選択し、選択された関係式に従って次の3点の算出処理を、前記2進表現データのkまたはlのビット数t+lに応じて繰り返し実行、最終的にkP+lQを算出する繰り返し演算処理ステップとを実行させ、
    前記初期点算出ステップにおいては、前記3点の集合G ' を、
    [t+1]=O(無限遠点)
    [t+1]=Q
    [t+1]=P
    [t+1]=P+Q
    の4点から、前記2進表現データのk,lの最上位ビット値(k ,l )の組合わせに基づいて選択される3点として算出する処理ステップとして実行させることを特徴とするプログラム。
JP2001126024A 2001-04-24 2001-04-24 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム Expired - Fee Related JP3820909B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001126024A JP3820909B2 (ja) 2001-04-24 2001-04-24 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム
US10/128,805 US7177422B2 (en) 2001-04-24 2002-04-24 Elliptic curve encryption processing method, elliptic curve encryption processing apparatus, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001126024A JP3820909B2 (ja) 2001-04-24 2001-04-24 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2002323852A JP2002323852A (ja) 2002-11-08
JP3820909B2 true JP3820909B2 (ja) 2006-09-13

Family

ID=18975132

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001126024A Expired - Fee Related JP3820909B2 (ja) 2001-04-24 2001-04-24 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム

Country Status (2)

Country Link
US (1) US7177422B2 (ja)
JP (1) JP3820909B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040001590A1 (en) * 2002-06-27 2004-01-01 Eisentraeger Anne Kirsten Efficient elliptic curve double-and-add calculator
AU2003272087A1 (en) * 2002-10-26 2004-05-13 The Additional Director (Ipr), Defence Research And Development Organisation A method of elliptic curve encryption
US7555122B2 (en) * 2002-12-04 2009-06-30 Wired Communications LLC Method for elliptic curve point multiplication
US7483534B2 (en) * 2004-08-05 2009-01-27 King Fahd University Of Petroleum Elliptic polynomial cryptography with multi y-coordinates embedding
US7483533B2 (en) * 2004-08-05 2009-01-27 King Fahd University Of Petroleum Elliptic polynomial cryptography with multi x-coordinates embedding
US7742596B2 (en) * 2004-08-24 2010-06-22 General Dynamics C4 Systems, Inc. Reliable elliptic curve cryptography computation
DE602006021601D1 (de) 2005-11-03 2011-06-09 Certicom Corp Verfahren zur gleichzeitigen skalarmultiplikation
JP4682852B2 (ja) * 2006-01-16 2011-05-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
KR20080012634A (ko) 2006-08-04 2008-02-12 삼성전자주식회사 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
US7991162B2 (en) * 2007-09-14 2011-08-02 University Of Ottawa Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields
US8755517B2 (en) * 2010-12-08 2014-06-17 Total Technology Solutions Co. Method for generic-point parallel elliptic curve scalar multiplication

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782100B1 (en) * 1997-01-29 2004-08-24 Certicom Corp. Accelerated finite field operations on an elliptic curve
US6748410B1 (en) * 1997-05-04 2004-06-08 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
EP1008026B1 (en) * 1997-05-04 2007-09-05 M-Systems Flash Disk Pioneers Ltd. Improved apparatus & method for modular multiplication & exponentiation based on montgomery multiplication
JPH11242434A (ja) * 1998-02-26 1999-09-07 Hitachi Ltd 楕円曲線暗号実行方法及び暗号処理システム
US6240436B1 (en) * 1998-03-30 2001-05-29 Rainbow Technologies, Inc. High speed montgomery value calculation
JP3542278B2 (ja) * 1998-06-25 2004-07-14 株式会社東芝 モンゴメリ・リダクション装置及び記録媒体
EP0984357B1 (en) * 1998-09-03 2003-04-16 Nippon Telegraph and Telephone Corporation Apparatus and method for elliptic-curve multiplication and recording medium having recorded thereon a program for implementing the method
KR100390702B1 (ko) * 1999-03-04 2003-07-10 닛폰 고칸 가부시키가이샤 열수축 밴드용 강판 및 그 제조방법
US6816594B1 (en) * 1999-09-08 2004-11-09 Hitachi, Ltd. Elliptic curve generating method and device, elliptic encryption system and recording medium
JP3821631B2 (ja) * 2000-05-30 2006-09-13 株式会社日立製作所 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体

Also Published As

Publication number Publication date
JP2002323852A (ja) 2002-11-08
US7177422B2 (en) 2007-02-13
US20030026419A1 (en) 2003-02-06

Similar Documents

Publication Publication Date Title
US6751318B2 (en) Method and apparatus for digital signature authentication
JP4682852B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4137385B2 (ja) 公開鍵および秘密鍵による暗号化方法
JPH08504962A (ja) 暗号化方法
CN109039640A (zh) 一种基于rsa密码算法的加解密硬件系统及方法
JP3820909B2 (ja) 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム
CN101371285B (zh) 加密处理装置、加密处理方法
EP0899907B1 (en) Apparatus for processing bivectors and encrypting system including the same
US6480606B1 (en) Elliptic curve encryption method and system
JP3794266B2 (ja) 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体
US20070053506A1 (en) Elliptic curve encryption processor, processing method of the processor using elliptic curves, and program for causing a computer to execute point scalar multiplication on elliptic curves
KR101223498B1 (ko) 타원 곡선 암호 방식에서 공개키를 생성하는 방법 및 상기방법을 수행하는 시스템
US6609141B1 (en) Method of performing modular inversion
Amounas et al. An application of discrete algorithms in asymmetric cryptography
Shankar et al. Cryptography with elliptic curves
JP2003216026A (ja) 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにコンピュータ・プログラム
JP2004163687A (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム
US7769167B2 (en) Weil and Tate pairing techniques using parabolas
JP4599859B2 (ja) 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
Moldovyan et al. A novel method for developing post-quantum cryptoschemes and a practical signature algorithm
EP2524332B1 (en) Determination of pairings on a curve using aggregated inversions
Goo et al. Reconfigurable real number field elliptic curve cryptography to improve the security
Sarma et al. Public key cryptosystem based on Pell's equation using the Gnu Mp library
JP4904981B2 (ja) 公開鍵暗号システム構築方法、暗号演算方法、および情報処理装置、並びにコンピュータ・プログラム
JP2003228285A (ja) 楕円曲線スカラ倍演算装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060612

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

Free format text: PAYMENT UNTIL: 20090630

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100630

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100630

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110630

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120630

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130630

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees