JP3796993B2 - 楕円曲線暗号実行方法及び装置並びに記録媒体 - Google Patents
楕円曲線暗号実行方法及び装置並びに記録媒体 Download PDFInfo
- Publication number
- JP3796993B2 JP3796993B2 JP36427798A JP36427798A JP3796993B2 JP 3796993 B2 JP3796993 B2 JP 3796993B2 JP 36427798 A JP36427798 A JP 36427798A JP 36427798 A JP36427798 A JP 36427798A JP 3796993 B2 JP3796993 B2 JP 3796993B2
- Authority
- JP
- Japan
- Prior art keywords
- elliptic curve
- unit
- point
- addition
- random number
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/005—Countermeasures against attacks on cryptographic mechanisms for timing attacks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7228—Random curve mapping, e.g. mapping to an isomorphous or projective curve
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
Description
【0001】
【発明の属する技術分野】
本発明は、コンピュータネットワークにおいてセキュリティを確保する技術に係り、特に楕円曲線暗号を実行する方法及び装置並びに記録媒体に関する。
【0002】
【従来の技術】
楕円曲線暗号は、V.Miller, N.Koblitz両氏によって、独立に発明された公開鍵暗号である。公開鍵暗号技術において安全上からの要請として、他人に公開される公開鍵から、それに対応する秘密鍵を発見することが事実上不可能であることが求められる。その一方で、秘密鍵暗号方式に比べて基本的に暗号化や復号化に時間のかかる公開鍵暗号方式において、暗号化や復号化におけるより高速のものが求められている状況にある。このように、安全性と高速性という、ある意味で背反的な要請を実現する公開鍵暗号技術として、従来からのRSA暗号やエルガマル暗号に比べてより上述の性質を有する楕円曲線暗号が注目されてきている。
【0003】
楕円曲線暗号は、有限素体上の楕円曲線の標準形y2=x3+ax+b(4a3+27b2≠0)や2の拡大体上の楕円曲線の標準形y2+xy=x3+ax2+b(b≠0)で表される。この曲線上の点に、無限遠点を加えると、アーベル群が成立する。このアーベル群演算を+記号で表現する。相異なるX,Y間の演算をX+Yを加算演算と呼ぶ。また、X+Xを2倍演算と呼び、2Xと表現する。
【0004】
かかる楕円曲線は、その計算を容易にするためにアフィン座標における楕円曲線上の点(X,Y)を射影座標で表現することもある。任意のλ≠0について,[X,Y,Z]= [λ2X,λ3Y,λZ]となる射影座標を考えると、アフィン座標とこの射影座標の対応は以下で与えられる。すなわち、アフィン座標(x,y)は、射影座標[x,y,1]で表現され、射影座標[X,Y,Z]は、アフィン座標(X/(Z)2,Y/(Z)3 )となる。また、射影座標において−[X,Y,Z]=[X,−Y,Z]である。
【0005】
楕円曲線暗号は、有限体上の楕円曲線を用いて、その有限体となる点の集合を用いる。また、楕円曲線の位数は、楕円曲線の点の数である。以下、Pをs回加算(P+P+…+P)した結果をPのs倍点といい、これを求める演算をsPと書くと、楕円曲線上の点Pの位数は、nP=0,1<=m<n,mP ≠0となるnである112となる。
【0006】
楕円曲線暗号の鍵は、楕円曲線、ベースポイント、公開鍵、秘密鍵から構成され、具体的には、楕円曲線の係数a,b、位数が素数である点P(ベースポイント)、有限体要素d(秘密鍵)、ベースポイントの秘密鍵倍の点Q(公開鍵:Q=dP)である。ここで、楕円曲線、ベースポイント、公開鍵は公開情報である。また、公開鍵/秘密鍵は、ユーザ毎に異なる値であり、楕円曲線、ベースポイントは、ユーザ間共通の値である。
【0007】
楕円曲線暗号における、データ暗号化、データ復号化、ディジタル署名作成、ディジタル署名検証は、任意の点Rのスカラ倍sR演算を用いる。これは、上記の加算演算と2倍演算の組合せで、求めることができる。ところが、上記の加算演算と2倍演算計算法においては、それぞれ1回の除算が必要であり、一般に有限体の除算は非常に時間がかかるため、これを避ける方法が求められる。
【0008】
文献D.V.Chudnovsky, G.V.Chudnovsky "Sequences of Numbers Generated by Addition in Formal Groups and New Primality and Factorization Tests", Advances in Applied Mathematics, 7, 385-434,1986によれば、この有限体の除算を避けるため、射影空間で、加算演算、2倍演算の式を導出している。この場合、素体乗算と、素体加減算では素体乗算が通常、遥かに時間がかかるため、素体乗算演算数で、計算時間を評価できる。この場合、加算演算で、素体乗算(2乗算を含む)が16回必要である。2倍演算において、10回必要である、と述べている。また、楕円曲線の係数aにおいても、a=−3の場合、8回の乗算剰余演算となるとしている。
【0009】
また、P.Montgomery,"Speeding the Pollard and Elliptic Curve Methods of Factorization", Mathematics of computation Vol.48,No.177,pp.243-264(1987)によれば、有限素体上の楕円曲線の標準形By2=x3+Ax2+Bxを用いて、点P0(x0,y0),P1(x1,y1)の加算をP3(x3,y3)、減算をP4(x4,y4)、すなわちP1+P0=P3、P1−P0=P4とするとき、x0,x1,x4から、x3が高速に求まる。具体的には、素体の乗算6回で求まるとされている。また、P1の2倍点をP5(x5,y5)とするとき、x5は、x1のみから求まり、乗算5回である。これを利用して、点Rのスカラ倍(スカラー値d)のx座標を以下のようにRxから求めることができる。
【0010】
初期値を[R,2R]、mRをRのm倍のx座標とするとき、dを2進数展開し、dの上位ビットから、0の場合は、[mR,(m+1)R]→ [2mR,(2m+1)R]となり、1の場合は、[mR,(m+1)R]→[(2m+1)R,2(m+1)R]となる。尚、(m+1)R−mR=R、(m+1)R+mR=(2m+1)Rである。
【0011】
従って、1ビットあたり、6+5=10回の素体乗算(2乗算を含む)でスカラー倍sPを求めることができる。これを以下、モンゴメリ法と呼ぶ。
【0012】
一方、2の拡大体上の楕円曲線の標準形y2+xy=x3+ax2+b(b≠0)で表される。このスカラー倍演算も、加算演算、2倍演算の組合せで実現できる。IEEE P1363 / D2 Standard Specification for Public Key Cryptography(1998)では、加算演算と2倍演算規則を与えている。2の拡大体演算では、2乗算、加減算は相異なる乗算に比べて非常に速く演算できるので、(相異なる)乗算回数で評価できる。加算演算で15回の乗算、2倍演算で5回の乗算が必要となる。しかし、2の拡大体楕円曲線暗号ではモンゴメリ法を用いる演算は知られていない。
【0013】
安全な楕円曲線とするためには、楕円曲線の位数#E(Fq)が大きな素因数rを持つパラメタa,bを設定する必要がある。#E(Fq)=krで、kは小さな整数、rは大きな素数となる。そのが位数大きな素因数を持つ楕円曲線のパラメタの設定方法は、例えば文献Henri Cohen, "A Course in Computational Algebraic Number Theory", GTM138, Springer(1993) p.464 Atkin's Testで記述されている方法がある。
【0014】
次に暗号のアタックと防御について述べる。近年、暗号のアタックは、理論的な暗号解読に加え、消費電流波形を統計的に処理して解読を試みるDPA(Differential Power Analysis)や暗号処理時間の違いから統計的に分析し解読を試みるタイミングアタック等、リーク情報を分析する攻撃とその防御が研究されはじめている。これらの防御研究の多くは、主にICカードを分析する等のハードウェア回路そのものに防御機能を組み込むことが中心になっている。
【0015】
【発明が解決しようとする課題】
上述したように2の拡大体の楕円曲線暗号ではモンゴメリ法を用いる演算は知られていない。また、楕円曲線暗号の研究においては、主に高速な実行方法、暗号解読の観点からの安全な楕円曲線生成の研究開発が中心であり、リーク情報分析型のアタックに対する防御開発は行われていない。楕円曲線暗号のデータ復号化処理では、与えられた楕円曲線上の点(x,y)の秘密鍵dから、(x,y)のd倍演算d(x,y)を行う。dの偏差情報を消費電流波形や暗号処理時間に洩れる場合DPAやタイミングアタックへの手がかりを与えてしまう。本発明の第1の目的は、楕円曲線がy2+xy=x3+ax2+b(b≠0)である、2の拡大体上の楕円曲線暗号を高速に演算する方法及び装置を提供することにある。また、本発明の第2の目的は、楕円曲線暗号においてタイミングアタックやDPAによる攻撃を防御するための、処理時間の偏差情報から秘密鍵情報がもれない方法を提供することにある。
【0016】
【課題を解決するための手段】
本発明の第1の目的は、楕円曲線がy2+xy=x3+ax2+b(b≠0)である、2の拡大体上の楕円曲線暗号の実行方法であって、各座標成分が前記楕円曲線上の点である点P1(x1,y1),P2(x2,y2)の加算をP3(x3,y3)とし、点P1(x1,y1),P2(x2,y2)の減算をP4(x4,y4)とした場合、前記x1を入力するステップと、前記入力されたx1を射影空間のX座標、Z座標[X1,Z1]に変換するステップと、前記射影空間の座標[X1,Z1]を記憶するステップと、前記x2を[X2,Z2]に変換するステップと、前記[X2,Z2]を記憶するステップと、前記x4を[X4,Z4]に変換するステップと、前記[X4,Z4]を記憶するステップと、前記記憶された[X1,Z1],[X2 ,Z2],[X4,Z4]から[X3,Z3]を求めるステップと、前記[X3,Z3]からx3に変換するステップと、前記x3を出力するステップとからなり、点P1(x1,y1)のスカラー倍を計算することにより達成される。また、記憶された[X1,Z1],[X2,Z2],[X4,Z4]からx3に変換できる[X3,Z3]を求めるステップには、B=X1Z2 2+X2Z1 2を計算するステップと、前記計算されたBを記憶するステップと、前記記憶されたBをB=0であるか否かをを判別するステップと、B=0の場合は無限遠点を出力し、B=0でない場合はZ3=Z4Bを計算するステップと、前記計算されたZ3を記憶するステップと、前記記憶されたZ3からX3=X4Z3 2+X1X2Z1 2Z2 2Z4 2を計算するステップとを有することにより達成される。
【0017】
本発明の第2の目的は、2の拡大体上の楕円曲線暗号の復号化処理時間において、処理時間の偏差情報から秘密鍵情報がもれない方法、すなわち楕円曲線がy2+xy=x3+ax2+bである、2の拡大体上の楕円曲線暗号の実行方法であって、各座標成分が前記楕円曲線上の点である点P1(x1,y1),P2(x2,y2)の加算をP3(x3,y3)とし、点P1(x1,y1),P2(x2,y2)の減算をP4(x4,y4)とした場合、前記x1を入力するステップと、前記入力されたx1を射影空間のX座標、Z座標[X1,Z1]に変換するステップと、前記射影空間の座標[X1,Z1]を記憶するステップと、前記x2を[X2,Z2]に変換するステップと、前記[X2,Z2]を記憶するステップと、前記x4を[X4,Z4]に変換するステップと、前記[X4,Z4]を記憶するステップと、前記記憶された[X1,Z1],[X2 ,Z2],[X4,Z4]から[X3,Z3]を求めるステップと、前記[X3,Z3]からx3に変換するステップと、前記x3を出力するステップの他、さらに乱数kを生成するステップと、前記生成された乱数kを記憶するステップと、x座標を射影座標に変換した後、射影空間の各座標成分と前記記憶された乱数kと演算させて、射影座標[k2x,k]に変換するステップとを有することにより達成される。すなわち、2の拡大体の演算対象が乱数によって常に変更する方法を用いる。
【0018】
また、乱数kを生成するステップと、前記生成された乱数kを記憶するステップと、x座標を射影座標に変換した後、射影空間の各座標成分と前記記憶された乱数kと演算させて、射影座標[kx,k]に変換するステップとを有することにより達成される。また、楕円曲線がy2+xy=x3+ax2+bである、2の拡大体上の楕円曲線暗号の演算装置であって、乱数kを生成する乱数生成部と、2の拡大体上の座標x0と前記乱数kとを入力し、射影座標[kx0,k]=[X1,Z1]に変換する射影座標変換部と、前記[X1,Z1]から2倍点を演算し出力する2倍演算部と、前記[X1,Z1]から加算点を求め出力する加算演算部と、前記射影座標変換部と前記2倍演算部と前記加算演算部からの情報を得て、座標x0をスカラー倍するスカラー倍部とを有することにより達成される。
【0019】
また、楕円曲線がy2+xy=x3+ax2+bである、2の拡大体上の楕円曲線暗号の実行方法を格納した記録媒体であって、前記楕円曲線暗号の実行方法は以下を含むことにより達成される。すなわち、各座標成分が前記楕円曲線上の点である点P1(x1,y1),P2(x2,y2)の加算をP3(x3,y3)とし、点P1(x1,y1),P2(x2,y2)の減算をP4(x4,y4)とした場合、前記x1を入力するステップと、前記入力されたx1を射影空間のX座標、Z座標[X1,Z1]に変換するステップと、前記射影空間の座標[X1,Z1]を記憶するステップと、前記x2を[X2,Z2]に変換するステップと、前記[X2,Z2]を記憶するステップと、前記x4を[X4,Z4]に変換するステップと、前記[X4,Z4]を記憶するステップと、前記記憶された[X1,Z1],[X2 ,Z2],[X4,Z4]から[X3,Z3]を求めるステップと、前記[X3,Z3]からx3に変換するステップと、前記x3を出力するステップとからなり、点P1(x1,y1)のスカラー倍を計算する。
【0020】
また、上述した2の拡大体上の楕円曲線暗号の実行方法は、素体上の楕円曲線暗号の復号化処理時間において、処理時間の偏差情報から秘密鍵情報がもれない方法としても適用可能である。素体上の楕円曲線暗号において、上記課題(2)を解決するため、次の(a),(b)を組合わせる。次の(a),(b)を組合わせる。(a)楕円曲線のスカラー倍d(x,y)において、素体上の楕円曲線の標準形By2=x3+Ax2+Bxの場合、モンゴメリのスカラー倍を用いる。(b)スカラー倍d(x,y)を計算する場合、このアフィン座標(x,y)を射影座標する際に、乱数kを生成し、(x,y)→[kx,ky,k]または(x,y)→[k2x,k3y,k]に変換する。このことにより、素体の演算対象が乱数によって常に変更する方法を用いる。
【0021】
【発明の実施の形態】
2の拡大体上の楕円曲線の標準形y2+xy=x3+ax2+b(b≠0)のアフィン座標における演算規則を以下に示す。
【0022】
1)0+0=0
2)(x,y)+0=(x,y)
3)(x,y)+(x,x+y)=0
4)可換性(x0,y0)+(x1,y1)=(x1,y1)+(x0,y0)
5)加算演算(x2,y2)=(x1,y1)+(x0,y0)
x2=a+λ2+λ+x0+x1; y2=λ(x1+x2)+x2+y1;
λ=(y0+y1)/(x0+x1)
6)2倍演算(x2,y2)=(x1,y1)+(x1,y1)=2(x1,y1)
x2=a+λ2+λ;y2=λ(x1+x2)+x2+y1;λ=x1+(y1/x1)
または、x2=(x1)2+b/(x1)2
かかる楕円曲線は、その計算を容易にするためにアフィン座標における楕円曲線上の点(X,Y)を射影座標で表現することもある。任意のλ≠0について,[X,Y,Z]=[λ2X,λ3Y,λZ]となる射影座標を考えると、アフィン座標とこの射影座標の対応は以下で与えられる。すなわち、アフィン座標(x,y)は、射影座標[x,y,1]で表現され、射影座標[X,Y,Z]は、アフィン座標(X/(Z)2,Y/(Z)3)となる。また、射影座標において−[X,Y,Z]=[X,XZ+Y,Z]である。
【0023】
以下、本発明の実施例を図面を用いて具体的に説明する。図10は、楕円曲線暗号システムの構成図である。入出力インターフェース1001は暗号化する平文を入力するキーボード等の入力装置、復号化した平文を出力するディスプレー、プリンタ等の出力装置、平文を記憶するメモリ等の記憶装置などである。暗号化部1002は、楕円曲線生成部1003で生成された楕円曲線と、公開鍵、暗号鍵生成部1004からの鍵とを入力し、平文を暗号化する。ここで、公開鍵、暗号鍵は対になっており、どちらの鍵を暗号化部1002、復号化部1006に与えるかは暗号システムの用途、即ち、秘密通信に用いるか、署名・認証と呼ばれる通信に用いるか等で使い分ける。暗号化された暗号文は接続インターフェース1005から送信される。復号化部1006は、暗号文を復号化し平文にする。
【0024】
図1は、楕円曲線暗号システムにおける処理の流れを示す図である。楕円曲線生成部101では楕円曲線暗号に使用する楕円曲線を生成する。公開鍵/秘密鍵生成部102では、楕円曲線生成部101で生成した楕円曲線を入力し、これに基づいて公開鍵115と秘密鍵116を生成する。暗号化部103では、平文113、公開鍵115、楕円曲線を入力して暗号文112を出力する。復号化部104では、暗号文112、秘密鍵116、楕円曲線を入力し、平文114を出力するが、ここで出力する平文114は平文113と内容が同じものである。
【0025】
楕円曲線生成部101では以下の手順で楕円曲線を生成する。原始多項式(primitive polynomials)設定105では、素体F2上の原始多項式f(x)を設定する。例えば、素体F2上の原始多項式は、A.Menezes, P.Oorschot, S.Vanstone, "Handbook of Applied Cryptography", CRC Press(1996)の第4.5.3 Primitive polynomialsに記述されている。
【0026】
楕円曲線パラメタ設定106は、2の拡大体Fqを定義体とする楕円曲線y2+xy=x3+ax2+bのパラメタa,bを設定する。安全な楕円曲線とするためには、楕円曲線の位数#E(Fq)が大きな素因数rを持つ必要がある。#E(Fq)=krの場合、kを小さな整数とすることによって、rは大きな素数となる。大きな素因数rを位数に持つ楕円曲線を生成する方法として、文献Henri Cohen, "A Course in Computational Algebraic Number Theory",GTM138, Springer(1993) p.464 Atkin's Testで記述されている方法がある。なお、他の楕円曲線の位数が大きな素因数rを持つ楕円曲線パラメタ設定法を用いても本発明の実施は可能である。
【0027】
ベースポイント生成部107は、楕円曲線上のアーベル群において、上記rを位数とする部分巡回群の生成元を求める。例えば、#E(Fq)=krの場合は、第1のステップでE(Fq)上の任意の点(x1,y1)を求める。次に第2のステップでr(x1,y1)=0かつk(x1,y1)≠0の場合、G=(x1,y1)をベースポイントとする。他の場合は、第1のステップへ戻る。
【0028】
ここで、r(x1,y1)は、(x1,y1)のスカラー倍(r倍)演算を実行するという意味である。スカラー倍(r倍)演算については楕円曲線演算部109で説明する。
【0029】
以上、楕円曲線生成部101により、原始多項式f(x)、楕円曲線y2+xy=x3+ax2+bのパラメタa,b、ベースポイントG、ベースポイントの位数rを生成した。これらは公開する情報である。
【0030】
次に公開鍵/秘密鍵生成部102は、以下の手順で公開鍵と秘密鍵を生成する。入力を原始多項式f(x)、楕円曲線y2+xy=x3+ax2+bのパラメタa,b、ベースポイントGとし、出力を公開鍵Q、秘密鍵dとすると、第1のステップで乱数2<d<r−1を生成し、第2のステップでQ= dGすなわちGのスカラ倍(d倍)点を求める。
【0031】
公開鍵は、公開する情報であり、秘密鍵は秘密にする情報である。Q,Gからdを求める問題は、離散対数問題といわれるものであり、楕円曲線において、ベースポイントの位数rのビット長の指数オーダの計算量を必要とする。このため、rが大きな素数であれば例えば、r>2の159乗をとれば、事実上、Q,Gからdを求めることはできなくなる。これが楕円曲線暗号の原理である。なお、Qを計算する方法は、従来技術文献 D.V.Chudnovsky, G.V.Chudnovsky "Sequences of Numbers Generated by Addition in Formal Groups and New Primality and Factorization Tests", Advances in Applied Mathematics, 7, 385-434,1986で記載されている方法で求めることができる。
【0032】
次に、暗号化部103では、以下の手順で平文113を暗号文114に変換する。入力を平文M、公開鍵Q、原始多項式f(x)、楕円曲線y2+xy=x3+ax2+bのパラメタb、ベースポイントGとし、出力を暗号文Cとすると、第1のステップで乱数kを生成し(乱数生成部108)、第2のステップでベースポイントGと第1のステップで生成した乱数kとを演算し、kGすなわち(kx1,ky1)とする(楕円曲線演算部109)。第3のステップで公開鍵Qと第1のステップで生成した乱数kとを演算し、kQすなわち(kx2,ky2)とする(楕円曲線演算部109)。第4のステップでM xor x2を演算し、M'とする(データ暗号化110)。第5のステップでx1||y1||M'を演算し暗号文Cとする(データ暗号化110)。
【0033】
楕円曲線演算部109は、任意の点Rのスカラ倍kR演算を行いそのx座標を得る。これにより2の拡大体上の楕円曲線暗号の復号化処理時間において、処理時間の偏差情報から秘密鍵情報が漏れなくなる。以下にこのスカラー倍方法を説明する。図2、図3は、このスカラー倍方法の第1の実施例の説明図である。
【0034】
<第1実施例スカラー倍方法>
Rのx座標の射影座標成分X0、スカラー値mを入力とし、Rのm倍の点のx座標の射影座標成分Xmを出力とする。m,X0を入力を入力し(ステップ202)、ステップ203から205では乱数を射影座標の各座標に乗算することにより、データを撹拌する。すなわち、乱数kを生成し(ステップ203)、乱数kとX0を演算してk2X0をX1に代入し、乱数kをZ1に代入する(ステップ205)。ステップ206から208及び301ではスカラー倍の準備を行う。すなわち、[X1,Z1]を[X4,Z4]に代入し(ステップ206)、また[X1,Z1]を2倍方法(図5)に入力し、出力を[X2,Z2]へ代入する(ステップ207)。 mの2進数表現をhihi−1...h0とする(ステップ208)。ただし、最上位ビットhlは1である。iをlとする(ステップ301)。ステップ302から309ではmの1ビットが0か1かによって加算方法や2倍方法を制御しスカラー倍を求める。すなわち、 i−1をiに代入し(ステップ302)、[X1,Z1]、[X2,Z2]、[X4,Z4]を加算方法(図4)に入力し、出力を[X3,Z3]へ代入する(ステップ303)。ここで、hi==0ならば、ステップ304へ、1ならばステップ306へ進む(ステップ304)。[X1,Z1]を2倍方法(図5)に入力し、出力を[X1,Z1]に代入する(ステップ305)。[X3,Z3]を[X2,Z2]に代入し、ステップ308へいく(ステップ306)。[X2, Z2]を2倍方法(図5)に入力し、出力を[X2,Z2]に代入する(ステップ307)。[X3,Z3]を[X1,Z1]に代入し、ステップ308へいく(ステップ308)。i>0ならばステップ302へ進む(ステップ309)。次は、射影座標から(x,y)座標のx座標へ変換する。X1/(Z1)2をXmに代入し(ステップ310)、Xmを出力する(ステップ311)。
【0035】
次に、加算方法について説明する。楕円曲線上の点の射影空間座標として、任意のλ≠0について,[X,Y,Z]=[λ2X,λ3Y,λZ]とする。ここで、楕円曲線上の点P0=(x0,y0)=[X0,Y0,Z0];P1=(x1,y1)=[X1,Y1,Z1]とする。この和と差をP3=(x3,y3)=[X3,Y3,Z3],P4=(x4,y4)=[X4,Y4,Z4]とする。
【0036】
P1+P0=P3;
P1−P0=P4;
x3=a+(λ3)2+λ3+x0+x1;λ3=(y0+y1)/(x0+x1);
x4=a+(λ4)2+λ4+x0+x1;λ4=(x0+y0+y1)/(x0+x1);
λ3+λ4=(x0)/(x0+x1);
(λ3)2+(λ4)2=(x0)2/(x0+x1)2;
x3+x4=((x0)2+(x0)(x0+x1))/(x0+x1)2=(x0x1)/(x0+x1)2;
以上により、x3+x4=(x0x1)/(x0+x1)2 −−−−(1)
という関係式が得られた。
【0037】
次に、射影座標での関係式を導出する。
【0038】
x1=X1/(Z1)2、x0=X0/(Z0)2を(1)式に代入する。 X3/(Z3)2=X4/(Z4)2+((X0/(Z0)2)( X1/(Z1)2))/( X0/(Z0)2+ X1/(Z1)2)2;
=X4/(Z4)2+((X0(Z0)2)( X1(Z1)2))/( X0(Z1)2+X1(Z0)2)2;=((X4β2)+Z4 2(X0Z0 2)( X1Z1 2))/(Z4 2β2)
ただし、β= X0Z1 2+ X1Z0 2
これより、
X3=X4β2+Z4 2(X0Z1 2)( X1Z0 2);−−−−−(2)
Z3=Z4β;−−−−−−−−−−−−−−−−−−−−−−(3) を得た。
【0039】
ここで、mR=[X1,Y1,Z1]、(m+1)R=[X2,Y2,Z2]、R=[X4,Y4,Z4]、(2m+1)R=[X3,Y3,Z3]とする。この導出式を利用した加算方法を以下に説明する。図4はこの方法の説明図である。
【0040】
<第1実施例加算方法>
射影座標[X1,Z1],[X2,Z2],[X4,Z4]を入力とし、[X3,Z3]または無限遠点を出力とする。[X1Z1],[X2,Z2],[X4,Z4]を入力し(ステップ402)、ステップ403から407では加算結果が無限遠点か判定するためにX1(Z2)2+ X2(Z1)2を求める。さらに各中間結果S1、S2、Bは、上記式(2),(3)を求めるための準備である。すなわち、X1(Z2)2をS1に代入し(ステップ403)、X2(Z1)2をS2に代入し(ステップ404)、S1+S2をBに代入し(ステップ405)、B=0の場合、ステップ407へ進み、成立しない場合ステップ408へ進む(ステップ406)。ステップ407では、無限遠点を出力し、ステップ413へいく。以下の408−411は上記式(2),(3)に従って[X3,Z3]を求める。Z4BをZ3に代入し(ステップ408)、(Z4)2S1S2をSに代入し(ステップ409)、X4Z3 2をMに代入し(ステップ410)、 M+SをX3に代入し(ステップ411)、[X3,Z3]を出力を出力する(ステップ412)。かかる方法により相異なる変数の乗算6回で加算演算を実行できる。すなわち、X1、X2、X4からX3を高速に演算できる。
【0041】
次に、2倍計算方法について説明する。P1の2倍点をP2とし、P1=(x1,y1)=[X1,Y1,Z1]、P2=(x2,y2)=[X2,Y2,Z2]とする。2倍演算の演算式 x2=(x1)2+b/(x1)2より、x1= X1/(Z1)2、x2=X2/(Z2)2をこの式に代入する。
【0042】
X2/(Z2)2=(X1/(Z1)2)2+b/(X1/(Z1)2)2=X1 2/(Z1)4+(b(Z1)4)/(X1)2=(X1 4+b(Z1)8)/(X1 2Z1 4)
従って、
X2=X1 4+bZ1 8−−−−−(4)
Z2=X1Z1 2−−−−−−−−(5)
この導出式を利用した2倍方法を以下に説明する。図5は、この説明図である。
【0043】
<第1実施例2倍計算方法>
Q=[X1,Z1]、bを入力とし、2Q=[X2,Z2]または無限遠点を出力とする。X1,Z1を入力し(ステップ502)、以下のステップ503から504は2倍結果が無限遠点を判定するためにX1==0またはZ1==0の判定を行う。すなわち、X1==0またはZ1==0の場合は、ステップ504へ。成立しない場合は、ステップ505へいく(ステップ503)。ステップ504では、無限遠点を出力する。以下のステップ505から507では上記式(4),(5)に従って[X2,Z2]を求める。Z1 2をSに代入し(ステップ505)、 X1SをZ2に代入し(ステップ506)、X1 4+b(S)4をX2に代入し(ステップ507)、[X2,Z2]を出力する(ステップ508)。かかる方法により相異なる変数の乗算2回で加算演算を実行できる。従って、<スカラー倍方法>においてはスカラー値dのビットあたり、相異なる変数の乗算6+2=8回で実行できる。すなわち、X1、X2、X4からX3を高速に演算できる。
【0044】
つぎに、復号化部104では、以下の手順で暗号文112を元の平文114に変換する。112と114は内容が同じ平文である。入力を暗号文C←x1||y1||M'、秘密鍵d、原始多項式f(x)、楕円曲線y2+xy=x3+ax2+bのパラメタ,b、ベースポイントGとし、出力を平文Mとする。
【0045】
ステップ1:(x2,y2)←d(x1, y1)(楕円曲線演算部111)
ステップ2:平文M←M' xor x2
ステップ1は図2、図3を用いて実行する。
【0046】
以上により、与えられた座標(x,y)のdスカラー倍のx座標を求める処理において、 dのビットパターンに依存せず、dの各ビットあたり8回の相異なる乗算処理で実現することができる。また、dの与えられたx座標に対して、乱数kにより[kx2,k]をスカラー倍初期値とすることによって、常に演算対象を変動させることができる。さらに、これらの組合わせにより、dのビットパターンが、d(x,y)処理時間の偏差に現れないため、d(x,y)処理時間の偏差情報から秘密鍵情報がもれない方法を示した。また、この性質は暗号処理の電流、電圧、電力の偏差を用いて、暗号解読を行うDPA(Differential Power Analysis)に対して、d(x,y)の処理電流(電圧、電力)の偏差情報から秘密鍵情報がもれない方法をも示している。
【0047】
次に第1実施例を更に高速化を図ることが可能な第2実施例を説明する。アフィン座標から、射影座標への変換を(x,y)→[x,y,1]とする場合、Z4=1とできる。(2)、(3)式にZ4=1を代入すると、
X3=(X4β2)+(X0(Z1)2)( X0(Z1)2) ------------(6)
Z3=β -----------------------------------(7)
この式を利用してスカラー倍方法、加算方法を以下のように求めることができる。
【0048】
<第2実施例スカラー倍方法>
これを図6、図7に示す。Rのx座標の射影座標成分X0、スカラー値mを入力とし、 Rのm倍の点のx座標の射影座標成分Xmを出力とする。m,X0を入力し(ステップ602)、以下のステップ603から604ではX0を射影座標に変換する。X0をX1に代入し(ステップ603)、1をZ1に代入する(ステップ604)。ステップ605から607ではスカラー倍の準備を行う。すなわち、[X1,Z1]を[X4,Z4]に代入し(ステップ605)、[X1,Z1]を2倍方法(図5)に入力し、出力を[X2,Z2]へ代入する(ステップ606)。mの2進数表現をhihi−1...h0とする(ステップ607)。ただし、最上位ビットhiは1である。1をiに代入する(ステップ701)。以下のステップ702から709ではmの1ビットが0か1かによって加算方法や2倍方法を制御しスカラー倍を求める。すなわち、i−1をiに代入し(ステップ702)、[X1,Z1]、[X2,Z2]、X0を加算方法(図8)に入力し、出力を[X3,Z3]へ代入する(ステップ703)。hi==0ならば、ステップ706へ、1ならばステップ708へ進む(ステップ704)。[X1,Z1] を2倍方法(図5)に入力し、出力を[X1,Z1]に代入する(ステップ705)。[X3, Z3]を[X2,Z2]に代入し、ステップ710へいく(ステップ706)。[X2,Z2]を2倍方法(図5)に入力し、出力を[X2,Z2]に代入する(ステップ707)。[X3, Z3]を[X1,Z1]へ代入し、ステップ710へいく(ステップ708)。i>0ならばステップ703へ進む(ステップ709)。X1/(Z1)2をXmに代入し(ステップ710)、Xmを出力する(ステップ711)。
【0049】
<第2実施例加算方法>
これを図8に示す。[X1,Z1],[X2,Z2],X4を入力とし、[X3,Z3]または無限遠点を出力とする。[X1,Z1],[X2,Z2],X4を入力し(ステップ802)、以下のステップ803から807は加算結果が無限遠点か判定するためにX1(Z2)2+ X2(Z1)2を求める。さらに各中間結果S1、S2、Bは、上記式(6),(7)を求めるための準備である。すなわち、X1Z2 2をS1に代入し(ステップ803)、X2Z1 2をS2に代入し(ステップ804)、S1+S2をBに代入する(ステップ805)。B==0の場合は、ステップ807へ進み、成立しない場合ステップ808へ進む(ステップ806)。無限遠点を出力し、ステップ813へいく(ステップ807)。以下のステップ808から811は上記式(6),(7)に従って[X3,Z3]を求める。すなわち、BをZ3に代入し(ステップ808)、S1S2をSに代入し(ステップ809)、X4Z3 2をMに代入し(ステップ810)、M+SをX3に代入し(ステップ811)、[X3,Z3]を出力する(ステップ812)。
【0050】
以上により、相異なる変数の乗算4回で加算演算を実行できる。このため、第1実施例の加算演算より、乗算回数を減らすことができる。なお、2倍演算は第1実施例の2倍演算を利用する。
【0051】
上述した処理時間の偏差情報から秘密鍵情報が漏れない方法は、2の拡大体上の楕円曲線の場合の他、素体上の楕円曲線でも適用可能である。
【0052】
次に第3実施例を説明する。素体上の楕円曲線By2=x3+Ax2+Bxの場合、モンゴメリ法を用いて、処理時間の偏差情報から秘密鍵情報がもれない方法を示す。
【0053】
P.Montgomery,"Speeding the Pollard and Elliptic Curve Methods of Factorization", Mathematics of computation Vol.48,No.177,pp.243-264(1987)では、有限素体上の楕円曲線の標準形 By2=x3+Ax2+Bxを用いて、点P0(x0,y0),P1(x1,y1)の加算と、減算を
P3(x3,y3); P4(x4,y4);
P1+P0=P3 ;
P1−P0=P4 ; とするとき、
x0,x1,x4から、x3が高速に求まる。具体的には、次のように素体の乗算6回で求まる。
【0054】
(x3,y3)→[X3,Z3];(x4,y4)→[X4,Z4];
とするとき、
X3←Z4[(X1−Z1)(X0+Z0)+(X1+Z1)(X0−Z0)]2 ;
Z3←X4[(X1−Z1)(X0+Z0)−(X1+Z1)(X0−Z0)]2 ;
また、2倍演算は、
P5=2P1;(x1,y1)→[X1,Z1];
4X1Z1←(X1+Z1)2−(X1−Z1)2 ;
X5←(X1+Z1)2(X1-Z1)2;Z5←(4X1Z1)[(X1-Z1)2+((A+2)/4)(4X1Z1)] ;
また、P1の2倍点P5(x5,y5)とするとき、x5は、x1のみから求まり、乗算5回である。これを利用して、点Rのスカラ倍(スカラー値d)のx座標を以下のようにRxから求める。
【0055】
初期値を[R,2R]、mRをRのm倍のx座標とするとき、dを2進数展開し、dの上位ビットから、
0の場合、[mR,(m+1)R]→[2mR,(2m+1)R]
1の場合、[mR,(m+1)R]→[(2m+1)R,2(m+1)R]
(m+1)R−mR=R
(m+1)R+mR=(2m+1)Rである。
【0056】
<第3実施例スカラー倍方法>
Rのx座標の射影座標成分X0、スカラー値mを入力とし、Rのm倍の点のx座標の射影座標成分Xmを出力とする。 m,X0を入力を入力し(ステップ902)、ステップ903から905では乱数を射影座標の各座標に乗算することにより、データを撹拌する。すなわち、乱数kを生成し(ステップ903)、乱数kとX0を演算してkX0をX1に代入し(ステップ904)、乱数kをZ1に代入する(ステップ905)。次に、[X1,Z1]を[X4,Z4]に代入し(ステップ906)、[X1,Z1]を2倍方法(モンゴメリの2倍演算)に入力し、出力を[X2,Z2]へ代入する(ステップ907)。mの2進数表現をhihi−1...h0とする(ステップ908)。ただし、最上位ビットhlは1である。iをlとする(ステップ909)。i−1をiに代入し(ステップ910)、[X1,Z1]、[X2,Z2]、[X4, Z4]を加算方法(モンゴメリの加算演算)に入力し、出力を[X3,Z3]へ代入する(ステップ911)。ここで、hi==0ならば、ステップ912へ、1ならばステップ914へ進む(ステップ912)。[X1,Z1]を2倍方法(モンゴメリの2倍演算)に入力し、出力を[X1,Z1]に代入する(ステップ913)。[X3,Z3]を[X2,Z2]に代入し、ステップ916へいく(ステップ914)。[X2,Z2]を2倍方法(モンゴメリの2倍演算)に入力し、出力を[X2,Z2]に代入する(ステップ915)。[X3, Z3]を[X1,Z1]に代入し、ステップ916へいく(ステップ916)。i>0ならばステップ910へ進む(ステップ917)。X1/Z1をXmに代入し(ステップ918)、Xmを出力する(ステップ919)。
【0057】
以上により、与えられた座標(x,y)のdスカラー倍のx座標を求める処理において、dの各ビットあたり11回の相異なる乗算処理で実現し、与えられたx座標に対して、乱数kにより[kx,k]をスカラー倍初期値とすることによって、d(x,y)処理時間の偏差情報から秘密鍵情報がもれない方法を示した。また、この性質は暗号処理の電流、電圧、電力の偏差を用いて、暗号解読を行うDPAに対して、d(x,y)の処理電流(電圧、電力)の偏差情報から秘密鍵情報がもれない方法を示している。
【0058】
さらに、素体上の楕円曲線y2=x3+ax+bの場合、By2=x3+Ax2+Bxとy2=x3+ax+bの間に有理点がなすアーベル群が同型となる楕円曲線を構成し、素体上の楕円曲線y2=x3+ax+bで与えられた(x,y)をBy2=x3+Ax2+Bxに変換し、上記発明の方法でスカラー倍を求め、結果をy2=x3+ax+bに変換することにより本発明を利用することができる。
【0059】
次に第4実施例を説明する。第1実施例では、射影座標を任意のλ≠0について,[X,Y,Z]=[λ2X,λ3Y,λZ]とするものを説明したが、[X,Y,Z]=[λX,λY,λZ]とする射影座標で実施することもできる。
【0060】
<第4実施例スカラー倍方法>
Rのx座標の射影座標成分X0、スカラー値mを入力とし、Rのm倍の点のx座標の射影座標成分Xmを出力とする。m,X0を入力し(ステップ1002)、以下のステップ1003から1005では乱数を射影座標の各座標に乗算することにより、データを撹拌する。すなわち、乱数kを生成し(ステップ1003)、kX0をX1に代入し(ステップ1004)、乱数kをZ1に代入する(ステップ1005)。[X1,Z1]を[X4,Z4]に代入し(ステップ1006)、[X1,Z1]を2倍方法に入力し、出力を[X2,Z2]へ代入する(ステップ1007)。mの2進数表現をhihi−1...h0とする(ステップ1008)。ただし、最上位ビットhlは1である。iをlとする(ステップ1009)。i−1をiに代入し(ステップ1010)、[X1,Z1]、[X2,Z2]、[X4,Z4]を加算方法に入力し、出力を[X3,Z3]へ代入する(ステップ1011)。ここで、hi==0ならば、ステップ1012へ、1ならばステップ1014へ進む(ステップ1012)。[X1,Z1]を2倍方法に入力し、出力を[X1,Z1]に代入する(ステップ1013)。[X3,Z3]を[X2,Z2]に代入し、ステップ1016へいく(ステップ1014)。[X2,Z2]を2倍方法に入力し、出力を[X2,Z2]に代入する(ステップ1015)。[X3,Z3]を[X1, Z1]に代入し、ステップ1016へいく(ステップ1016)。i>0ならばステップ1010へ進む(ステップ1017)。X1/Z1をXmに代入し(ステップ1018)、Xmを出力する(ステップ1019)。
【0061】
楕円曲線上の点の射影空間座標として、任意のλ≠0について,[X,Y,Z]=[λX, λY,λZ]とする。ここで、楕円曲線上の点P0=(x0,y0)=[X0,Y0,Z0]; P1=(x1,y1)=[X1,Y1,Z1]とする。この和と差をP3=(x3,y3)=[X3,Y3,Z3],P4=(x4,y4)=[X4,Y4,Z4]とする。
【0062】
P1+P0=P3;
P1−P0=P4;
第1実施例の(1)式x3+x4=(x0x1)/(x0+x1)2より射影座標での関係式を導出する。
【0063】
x1=X1/Z1、x0=X0/Z0を(1)式に代入する。
X3/Z3=X4/Z4+((X0/Z0)(X1/Z1))/(X0/Z0+X1/Z1)2;
=X4/(Z4)2+((X0Z0)( X1Z1))/( X0Z1+ X1Z0)2;
=((X4β2)+Z4 2(X0Z0)( X1Z1))/(Z4 2β2)
ただし、β= X0Z1+ X1Z0
これより、X3=(X4β2)+Z4 2(X0Z1)( X1Z0); −−(2)'
Z3=Z4 2β2; −−−−−−−−−−−−−−−−−−−−−(3)' を得た。
【0064】
ここで、mR=[X1,Y1,Z1]、(m+1)R=[X2,Y2,Z2]、R=[X4,Y4,Z4]、(2m+1)R=[X3,Y3,Z3]とする。この導出式を利用した加算方法を以下に説明する。
【0065】
<第4実施例加算方法>
射影座標[X1,Z1],[X2 ,Z2],[X4 , Z4]を入力とし、[X3,Z3] または無限遠点を出力とする。[X1,Z1],[X2,Z2],[X4,Z4]を入力し(ステップ1102)、X1Z2をS1に代入し(ステップ1103)、X2Z1をS2に代入し(ステップ1104)、S1+S2をBに代入する(ステップ1105)。B==0の場合は、ステップ1107へ進み、成立しない場合ステップ1108へ進む(ステップ1106)。無限遠点を出力し、ステップ1113へいく(ステップ1107)。(Z4)2B2をZ3に代入し(ステップ1108)、(Z4)2S1S2をSに代入し(ステップ1109)、(X4B2)をMに代入し(ステップ1110)、M+SをX3に代入し(ステップ1111)、[X3,Z3]を出力する(ステップ1112)。
【0066】
以上により、相異なる変数の乗算6回で加算演算を実行できる。
【0067】
次に、2倍計算方法について説明する。P1の2倍点をP2とし、P1=(x1,y1)=[X1,Y1,Z1]、P2=(x2,y2)=[X2,Y2,Z2]とする。2倍演算の演算式 x2=(x1)2+b/(x1)2より、x1=X1/Z1、x2=X2/Z2をこの式に代入する。
【0068】
X2/Z2=(X1/Z1)2+b/(X1/Z1)2=X1 2/(Z1)2+(bZ1 2)/(X1)2=(X1 4+bZ1 4)/(X1 2Z1 2)
従って、
X2=X1 4+bZ1 4−−−−−(4)'
Z2=X1 2Z1 2−−−−−−−−−−(5)'
この導出式を利用した2倍方法を以下に説明する。
【0069】
<第4実施例2倍計算方法>
Q=[X1 ,Z1],bを入力とし、2Q=[X2,Z2]または無限遠点を出力する。X1,Z1を入力し(ステップ1202)、X2==0またはZ2==0の場合、ステップ1204へ。成立しない場合、ステップ1205へいく(ステップ1203)。ステップ1204では、無限遠点を出力する。Z2=X1 2Z1 2とし(ステップ1205)、S=bZ1 4とし(ステップ1206)、X1 4+SをX2に代入し(ステップ1207)、[X2,Z2]を出力する(ステップ1208)。かかる方法により、相異なる変数の乗算2回で加算演算を実行できる。
【0070】
以上により、与えられた座標(x,y)のdスカラー倍のx座標を求める処理において、dの各ビットあたり8回の相異なる乗算処理で実現し、与えられたx座標に対して、乱数kにより[kx,k]をスカラー倍初期値とすることによって、d(x,y)処理時間の偏差情報から秘密鍵情報がもれない方法を示した。暗号解読DPAに対して、d(x,y)の処理電流(電圧、電力)の偏差情報から秘密鍵情報がもれない方法を示している。
【0071】
次に第5実施例を説明する。第2実施例では、射影座標を任意のλ≠0について,[X,Y,Z]=[λ2X,λ3Y,λZ]とするものを説明したが、[X,Y,Z]=[λX,λY,λZ]とする射影座標で実施することもできる。
【0072】
アフィン座標から、射影座標への変換を(x,y)→[x,y,1]とする場合、Z4=1 とできる。
【0073】
<第5実施例スカラー倍方法>
Rのx座標の射影座標成分X0、スカラー値mを入力とし、Rのm倍の点のx座標の射影座標成分Xmを出力とする。m,X0を入力し(ステップ1302)、乱数kを生成し(ステップ1303)、kX0をX1に代入する(ステップ1304)。1をZ1に代入する(ステップ1305)。[X1,Z1]を[X4,Z4]に代入し(ステップ1306)、[X1,Z1]を2倍方法に入力し、出力を[X2,Z2]へ代入する(ステップ1307)。mの2進数表現をhihi−1...h0とする。ただし、最上位ビットhiは1である(ステップ1308)。1をiに代入する(ステップ1309)。i−1をiに代入し(ステップ1310)、[X1, Z1]、[X2,Z2]、X4を加算方法に入力し、出力を[X3,Z3]へ代入する(ステップ1311)。hi==0ならば、ステップ1312へ、1ならばステップ1314へ進む(ステップ1312)。[X1,Z1]を2倍方法に入力し、出力を[X1,Z1]に代入する(ステップ1313)。[X3,Z3]を[X2,Z2]へ代入し、ステップ1316へいく(ステップ1314)。[X2,Z2]を2倍方法に入力し、出力を[X2,Z2]に代入する(ステップ1315)。[X3,Z3]を[X1,Z1]へ代入し、ステップ1316へいく(ステップ1316)。i>0ならばステップ1300へ進む(ステップ1317)。X1/Z1をXmに代入し(ステップ1318)、Xmを出力する(ステップ1319)。
【0074】
<第5実施例加算方法>
[X1,Z1],[X2,Z2],X4を入力とし、[X3,Z3]または無限遠点を出力とする。[X1,Z1],[X2,Z2],X4を入力する(ステップ1402)。X1Z2をS1に代入し(ステップ1403)、X2Z1をS2に代入し(ステップ1404)、S1+S2をBに代入する(ステップ1405)。B==0の場合、ステップ1407へ、成立しない場合ステップ1408へ進む(ステップ1406)。無限遠点を出力し、ステップ1413へいく(ステップ1407)。次に、B2をZ3に代入し(ステップ1408)、S1S2をSに代入し(ステップ1409)、(X4B2)をMに代入し(ステップ1410)、M+SをX3に代入し(ステップ1411)し、[X3,Z3]を出力する(ステップ1412)。以上により、相異なる変数の乗算4回で加算演算を実行できる。なお、2倍演算は、前述した実施例の2倍演算を利用する。尚、本実施例は2の拡大体上、素体上の楕円曲線どちらにも適用可能である。
【0075】
次に第6実施例を説明する。図1の楕円曲線演算部を、図9における901の楕円曲線演算装置で実施する。901は点のx座標X0、スカラー値m、2の拡大体上の楕円曲線の標準形y2+xy=x3+ax2+bにおいけるbを入力し(902)、m倍の点のx座標をXm出力する(903)。尚、本実施例は2の拡大体上の楕円曲線で説明するが、素体上の楕円曲線を用いた場合も同様の方法で実現可能である。
【0076】
乱数生成部904は、乱数kを生成し、kを出力する(905)。射影座標変換部906には乱数生成部904からの乱数kの他、x座標X0とスカラー値m、bを入力し(905)、射影座標[kX0,k]に変換する。これを[X1,Z1]とする。スカラー倍部908は射影座標[X1,Z1]とスカラー値mを入力し、[X1,Z1]のm倍点を求め、そのx座標Xmを出力する。ここで、スカラー倍部908は、先ず、[X1,Z1]を[X4,Z4]へ代入する。かかる[X4,Z4]は、例えばスカラー倍部のメモリに予め記憶させておく。また[X1,Z1]を913へ出力して、2倍点[X2,Z2]を得る。次に、mを2進数展開して、上位ビットからビットが0の場合[X1,Z1]を913に出力して913の出力である2倍点を[X1,Z1]に代入する。その後[X1,Z1]、[X2,Z2]、[X4,Z4]を910へ入力して出力である加算点を[X2,Z2]に代入する。ビットが1の場合[X2,Z2]を913に出力して913の出力である2倍点を[X2,Z2]に代入する。その後[X1,Z1]、[X2,Z2]、[X4,Z4]を910へ入力して出力である加算点を[X1,Z1]に代入することによりm倍の点のXm座標を得る。
【0077】
加算演算部910では、[X1,Z1][X2,Z2][X4,Z4]を入力し、[X3,Z3]=[X2,Z2]+[X1,Z1]、[X4,Z4]=[X2,Z2]−[X1,Z1]となる[X3,Z3]を以下のように求め出力する。
【0078】
先ず、S1←X1Z2 2、S2←X2Z1 2、B←S1+S2を計算する。ここでB==0の場合、無限遠点を出力し終了となる。B=0が成立しない場合、Z3←Z4B、S←Z4 2S1S2、M ←X4Z3 2、X3←M+Sを計算する。
【0079】
2倍演算部913では、[X1,Z1]、bを入力し、[X2,Z2]=[X1,Z1]+[X1,Z1]となる[X2,Z2]を以下のように求め出力する。すなわち、X1==0またはZ1 ==0の場合、無限遠点を出力する。他の場合、S←Z1 2、Z2←X1S、X2←X1 4+b(S)4を計算する。
【0080】
上記実施例では、x座標X0を射影座標[kX0,k]に変換した例を説明したが、射影座標[k2X0,k]に変換する場合にも適用可能である。
【0081】
尚、上述した実施例にかかるプログラムは記録媒体に格納しておくことも可能である。
【0082】
【発明の効果】
本発明により前記従来のより、高速に楕円曲線暗号処理を実行できる。また、楕円曲線暗号の実行方法において、d(x,y)の処理時間がdのビットパターンに依存しない処理方法を与えることによって、偏差情報から秘密鍵情報がもれずに処理できる。
【図面の簡単な説明】
【図1】本発明の楕円曲線暗号システムにおける処理の流れを示す図である。
【図2】本発明の第1の実施例を示す楕円曲線暗号実行方法及び装置においてスカラー倍方法を示すフローチャートである。
【図3】本発明の第1の実施例を示す楕円曲線暗号実行方法及び装置においてスカラー倍方法を示すフローチャートである。
【図4】本発明の第1の実施例を示す楕円曲線暗号実行方法及び装置を実行するための加算演算のフローチャートである。
【図5】本発明の第1の実施例を示す楕円曲線暗号実行方法及び装置を実行するための2倍演算のフローチャートである。
【図6】本発明の第2の実施例を示す楕円曲線暗号実行方法及び装置においてスカラー倍方法を示すフローチャートである。
【図7】本発明の第2の実施例を示す楕円曲線暗号実行方法及び装置においてスカラー倍方法を示すフローチャートである。
【図8】本発明の第2の実施例を示す楕円曲線暗号実行方法及び装置を実行するための加算演算のフローチャートである。
【図9】本発明の楕円曲線演算装置を構成図である。
【図10】本発明の楕円曲線暗号システムの構成図である。
【符号の説明】
101 楕円曲線生成部、
102 公開鍵、秘密鍵生成部、
103 暗号化部、
104 復号化部、
105 素数生成部、
106 楕円曲線パラメタ設定、
107 ベースポイント生成部、
108 乱数生成部、
109 楕円曲線演算部、
110 データ暗号化処理部、
111 データ復号化処理部、
112 暗号文、
113 平文。
【発明の属する技術分野】
本発明は、コンピュータネットワークにおいてセキュリティを確保する技術に係り、特に楕円曲線暗号を実行する方法及び装置並びに記録媒体に関する。
【0002】
【従来の技術】
楕円曲線暗号は、V.Miller, N.Koblitz両氏によって、独立に発明された公開鍵暗号である。公開鍵暗号技術において安全上からの要請として、他人に公開される公開鍵から、それに対応する秘密鍵を発見することが事実上不可能であることが求められる。その一方で、秘密鍵暗号方式に比べて基本的に暗号化や復号化に時間のかかる公開鍵暗号方式において、暗号化や復号化におけるより高速のものが求められている状況にある。このように、安全性と高速性という、ある意味で背反的な要請を実現する公開鍵暗号技術として、従来からのRSA暗号やエルガマル暗号に比べてより上述の性質を有する楕円曲線暗号が注目されてきている。
【0003】
楕円曲線暗号は、有限素体上の楕円曲線の標準形y2=x3+ax+b(4a3+27b2≠0)や2の拡大体上の楕円曲線の標準形y2+xy=x3+ax2+b(b≠0)で表される。この曲線上の点に、無限遠点を加えると、アーベル群が成立する。このアーベル群演算を+記号で表現する。相異なるX,Y間の演算をX+Yを加算演算と呼ぶ。また、X+Xを2倍演算と呼び、2Xと表現する。
【0004】
かかる楕円曲線は、その計算を容易にするためにアフィン座標における楕円曲線上の点(X,Y)を射影座標で表現することもある。任意のλ≠0について,[X,Y,Z]= [λ2X,λ3Y,λZ]となる射影座標を考えると、アフィン座標とこの射影座標の対応は以下で与えられる。すなわち、アフィン座標(x,y)は、射影座標[x,y,1]で表現され、射影座標[X,Y,Z]は、アフィン座標(X/(Z)2,Y/(Z)3 )となる。また、射影座標において−[X,Y,Z]=[X,−Y,Z]である。
【0005】
楕円曲線暗号は、有限体上の楕円曲線を用いて、その有限体となる点の集合を用いる。また、楕円曲線の位数は、楕円曲線の点の数である。以下、Pをs回加算(P+P+…+P)した結果をPのs倍点といい、これを求める演算をsPと書くと、楕円曲線上の点Pの位数は、nP=0,1<=m<n,mP ≠0となるnである112となる。
【0006】
楕円曲線暗号の鍵は、楕円曲線、ベースポイント、公開鍵、秘密鍵から構成され、具体的には、楕円曲線の係数a,b、位数が素数である点P(ベースポイント)、有限体要素d(秘密鍵)、ベースポイントの秘密鍵倍の点Q(公開鍵:Q=dP)である。ここで、楕円曲線、ベースポイント、公開鍵は公開情報である。また、公開鍵/秘密鍵は、ユーザ毎に異なる値であり、楕円曲線、ベースポイントは、ユーザ間共通の値である。
【0007】
楕円曲線暗号における、データ暗号化、データ復号化、ディジタル署名作成、ディジタル署名検証は、任意の点Rのスカラ倍sR演算を用いる。これは、上記の加算演算と2倍演算の組合せで、求めることができる。ところが、上記の加算演算と2倍演算計算法においては、それぞれ1回の除算が必要であり、一般に有限体の除算は非常に時間がかかるため、これを避ける方法が求められる。
【0008】
文献D.V.Chudnovsky, G.V.Chudnovsky "Sequences of Numbers Generated by Addition in Formal Groups and New Primality and Factorization Tests", Advances in Applied Mathematics, 7, 385-434,1986によれば、この有限体の除算を避けるため、射影空間で、加算演算、2倍演算の式を導出している。この場合、素体乗算と、素体加減算では素体乗算が通常、遥かに時間がかかるため、素体乗算演算数で、計算時間を評価できる。この場合、加算演算で、素体乗算(2乗算を含む)が16回必要である。2倍演算において、10回必要である、と述べている。また、楕円曲線の係数aにおいても、a=−3の場合、8回の乗算剰余演算となるとしている。
【0009】
また、P.Montgomery,"Speeding the Pollard and Elliptic Curve Methods of Factorization", Mathematics of computation Vol.48,No.177,pp.243-264(1987)によれば、有限素体上の楕円曲線の標準形By2=x3+Ax2+Bxを用いて、点P0(x0,y0),P1(x1,y1)の加算をP3(x3,y3)、減算をP4(x4,y4)、すなわちP1+P0=P3、P1−P0=P4とするとき、x0,x1,x4から、x3が高速に求まる。具体的には、素体の乗算6回で求まるとされている。また、P1の2倍点をP5(x5,y5)とするとき、x5は、x1のみから求まり、乗算5回である。これを利用して、点Rのスカラ倍(スカラー値d)のx座標を以下のようにRxから求めることができる。
【0010】
初期値を[R,2R]、mRをRのm倍のx座標とするとき、dを2進数展開し、dの上位ビットから、0の場合は、[mR,(m+1)R]→ [2mR,(2m+1)R]となり、1の場合は、[mR,(m+1)R]→[(2m+1)R,2(m+1)R]となる。尚、(m+1)R−mR=R、(m+1)R+mR=(2m+1)Rである。
【0011】
従って、1ビットあたり、6+5=10回の素体乗算(2乗算を含む)でスカラー倍sPを求めることができる。これを以下、モンゴメリ法と呼ぶ。
【0012】
一方、2の拡大体上の楕円曲線の標準形y2+xy=x3+ax2+b(b≠0)で表される。このスカラー倍演算も、加算演算、2倍演算の組合せで実現できる。IEEE P1363 / D2 Standard Specification for Public Key Cryptography(1998)では、加算演算と2倍演算規則を与えている。2の拡大体演算では、2乗算、加減算は相異なる乗算に比べて非常に速く演算できるので、(相異なる)乗算回数で評価できる。加算演算で15回の乗算、2倍演算で5回の乗算が必要となる。しかし、2の拡大体楕円曲線暗号ではモンゴメリ法を用いる演算は知られていない。
【0013】
安全な楕円曲線とするためには、楕円曲線の位数#E(Fq)が大きな素因数rを持つパラメタa,bを設定する必要がある。#E(Fq)=krで、kは小さな整数、rは大きな素数となる。そのが位数大きな素因数を持つ楕円曲線のパラメタの設定方法は、例えば文献Henri Cohen, "A Course in Computational Algebraic Number Theory", GTM138, Springer(1993) p.464 Atkin's Testで記述されている方法がある。
【0014】
次に暗号のアタックと防御について述べる。近年、暗号のアタックは、理論的な暗号解読に加え、消費電流波形を統計的に処理して解読を試みるDPA(Differential Power Analysis)や暗号処理時間の違いから統計的に分析し解読を試みるタイミングアタック等、リーク情報を分析する攻撃とその防御が研究されはじめている。これらの防御研究の多くは、主にICカードを分析する等のハードウェア回路そのものに防御機能を組み込むことが中心になっている。
【0015】
【発明が解決しようとする課題】
上述したように2の拡大体の楕円曲線暗号ではモンゴメリ法を用いる演算は知られていない。また、楕円曲線暗号の研究においては、主に高速な実行方法、暗号解読の観点からの安全な楕円曲線生成の研究開発が中心であり、リーク情報分析型のアタックに対する防御開発は行われていない。楕円曲線暗号のデータ復号化処理では、与えられた楕円曲線上の点(x,y)の秘密鍵dから、(x,y)のd倍演算d(x,y)を行う。dの偏差情報を消費電流波形や暗号処理時間に洩れる場合DPAやタイミングアタックへの手がかりを与えてしまう。本発明の第1の目的は、楕円曲線がy2+xy=x3+ax2+b(b≠0)である、2の拡大体上の楕円曲線暗号を高速に演算する方法及び装置を提供することにある。また、本発明の第2の目的は、楕円曲線暗号においてタイミングアタックやDPAによる攻撃を防御するための、処理時間の偏差情報から秘密鍵情報がもれない方法を提供することにある。
【0016】
【課題を解決するための手段】
本発明の第1の目的は、楕円曲線がy2+xy=x3+ax2+b(b≠0)である、2の拡大体上の楕円曲線暗号の実行方法であって、各座標成分が前記楕円曲線上の点である点P1(x1,y1),P2(x2,y2)の加算をP3(x3,y3)とし、点P1(x1,y1),P2(x2,y2)の減算をP4(x4,y4)とした場合、前記x1を入力するステップと、前記入力されたx1を射影空間のX座標、Z座標[X1,Z1]に変換するステップと、前記射影空間の座標[X1,Z1]を記憶するステップと、前記x2を[X2,Z2]に変換するステップと、前記[X2,Z2]を記憶するステップと、前記x4を[X4,Z4]に変換するステップと、前記[X4,Z4]を記憶するステップと、前記記憶された[X1,Z1],[X2 ,Z2],[X4,Z4]から[X3,Z3]を求めるステップと、前記[X3,Z3]からx3に変換するステップと、前記x3を出力するステップとからなり、点P1(x1,y1)のスカラー倍を計算することにより達成される。また、記憶された[X1,Z1],[X2,Z2],[X4,Z4]からx3に変換できる[X3,Z3]を求めるステップには、B=X1Z2 2+X2Z1 2を計算するステップと、前記計算されたBを記憶するステップと、前記記憶されたBをB=0であるか否かをを判別するステップと、B=0の場合は無限遠点を出力し、B=0でない場合はZ3=Z4Bを計算するステップと、前記計算されたZ3を記憶するステップと、前記記憶されたZ3からX3=X4Z3 2+X1X2Z1 2Z2 2Z4 2を計算するステップとを有することにより達成される。
【0017】
本発明の第2の目的は、2の拡大体上の楕円曲線暗号の復号化処理時間において、処理時間の偏差情報から秘密鍵情報がもれない方法、すなわち楕円曲線がy2+xy=x3+ax2+bである、2の拡大体上の楕円曲線暗号の実行方法であって、各座標成分が前記楕円曲線上の点である点P1(x1,y1),P2(x2,y2)の加算をP3(x3,y3)とし、点P1(x1,y1),P2(x2,y2)の減算をP4(x4,y4)とした場合、前記x1を入力するステップと、前記入力されたx1を射影空間のX座標、Z座標[X1,Z1]に変換するステップと、前記射影空間の座標[X1,Z1]を記憶するステップと、前記x2を[X2,Z2]に変換するステップと、前記[X2,Z2]を記憶するステップと、前記x4を[X4,Z4]に変換するステップと、前記[X4,Z4]を記憶するステップと、前記記憶された[X1,Z1],[X2 ,Z2],[X4,Z4]から[X3,Z3]を求めるステップと、前記[X3,Z3]からx3に変換するステップと、前記x3を出力するステップの他、さらに乱数kを生成するステップと、前記生成された乱数kを記憶するステップと、x座標を射影座標に変換した後、射影空間の各座標成分と前記記憶された乱数kと演算させて、射影座標[k2x,k]に変換するステップとを有することにより達成される。すなわち、2の拡大体の演算対象が乱数によって常に変更する方法を用いる。
【0018】
また、乱数kを生成するステップと、前記生成された乱数kを記憶するステップと、x座標を射影座標に変換した後、射影空間の各座標成分と前記記憶された乱数kと演算させて、射影座標[kx,k]に変換するステップとを有することにより達成される。また、楕円曲線がy2+xy=x3+ax2+bである、2の拡大体上の楕円曲線暗号の演算装置であって、乱数kを生成する乱数生成部と、2の拡大体上の座標x0と前記乱数kとを入力し、射影座標[kx0,k]=[X1,Z1]に変換する射影座標変換部と、前記[X1,Z1]から2倍点を演算し出力する2倍演算部と、前記[X1,Z1]から加算点を求め出力する加算演算部と、前記射影座標変換部と前記2倍演算部と前記加算演算部からの情報を得て、座標x0をスカラー倍するスカラー倍部とを有することにより達成される。
【0019】
また、楕円曲線がy2+xy=x3+ax2+bである、2の拡大体上の楕円曲線暗号の実行方法を格納した記録媒体であって、前記楕円曲線暗号の実行方法は以下を含むことにより達成される。すなわち、各座標成分が前記楕円曲線上の点である点P1(x1,y1),P2(x2,y2)の加算をP3(x3,y3)とし、点P1(x1,y1),P2(x2,y2)の減算をP4(x4,y4)とした場合、前記x1を入力するステップと、前記入力されたx1を射影空間のX座標、Z座標[X1,Z1]に変換するステップと、前記射影空間の座標[X1,Z1]を記憶するステップと、前記x2を[X2,Z2]に変換するステップと、前記[X2,Z2]を記憶するステップと、前記x4を[X4,Z4]に変換するステップと、前記[X4,Z4]を記憶するステップと、前記記憶された[X1,Z1],[X2 ,Z2],[X4,Z4]から[X3,Z3]を求めるステップと、前記[X3,Z3]からx3に変換するステップと、前記x3を出力するステップとからなり、点P1(x1,y1)のスカラー倍を計算する。
【0020】
また、上述した2の拡大体上の楕円曲線暗号の実行方法は、素体上の楕円曲線暗号の復号化処理時間において、処理時間の偏差情報から秘密鍵情報がもれない方法としても適用可能である。素体上の楕円曲線暗号において、上記課題(2)を解決するため、次の(a),(b)を組合わせる。次の(a),(b)を組合わせる。(a)楕円曲線のスカラー倍d(x,y)において、素体上の楕円曲線の標準形By2=x3+Ax2+Bxの場合、モンゴメリのスカラー倍を用いる。(b)スカラー倍d(x,y)を計算する場合、このアフィン座標(x,y)を射影座標する際に、乱数kを生成し、(x,y)→[kx,ky,k]または(x,y)→[k2x,k3y,k]に変換する。このことにより、素体の演算対象が乱数によって常に変更する方法を用いる。
【0021】
【発明の実施の形態】
2の拡大体上の楕円曲線の標準形y2+xy=x3+ax2+b(b≠0)のアフィン座標における演算規則を以下に示す。
【0022】
1)0+0=0
2)(x,y)+0=(x,y)
3)(x,y)+(x,x+y)=0
4)可換性(x0,y0)+(x1,y1)=(x1,y1)+(x0,y0)
5)加算演算(x2,y2)=(x1,y1)+(x0,y0)
x2=a+λ2+λ+x0+x1; y2=λ(x1+x2)+x2+y1;
λ=(y0+y1)/(x0+x1)
6)2倍演算(x2,y2)=(x1,y1)+(x1,y1)=2(x1,y1)
x2=a+λ2+λ;y2=λ(x1+x2)+x2+y1;λ=x1+(y1/x1)
または、x2=(x1)2+b/(x1)2
かかる楕円曲線は、その計算を容易にするためにアフィン座標における楕円曲線上の点(X,Y)を射影座標で表現することもある。任意のλ≠0について,[X,Y,Z]=[λ2X,λ3Y,λZ]となる射影座標を考えると、アフィン座標とこの射影座標の対応は以下で与えられる。すなわち、アフィン座標(x,y)は、射影座標[x,y,1]で表現され、射影座標[X,Y,Z]は、アフィン座標(X/(Z)2,Y/(Z)3)となる。また、射影座標において−[X,Y,Z]=[X,XZ+Y,Z]である。
【0023】
以下、本発明の実施例を図面を用いて具体的に説明する。図10は、楕円曲線暗号システムの構成図である。入出力インターフェース1001は暗号化する平文を入力するキーボード等の入力装置、復号化した平文を出力するディスプレー、プリンタ等の出力装置、平文を記憶するメモリ等の記憶装置などである。暗号化部1002は、楕円曲線生成部1003で生成された楕円曲線と、公開鍵、暗号鍵生成部1004からの鍵とを入力し、平文を暗号化する。ここで、公開鍵、暗号鍵は対になっており、どちらの鍵を暗号化部1002、復号化部1006に与えるかは暗号システムの用途、即ち、秘密通信に用いるか、署名・認証と呼ばれる通信に用いるか等で使い分ける。暗号化された暗号文は接続インターフェース1005から送信される。復号化部1006は、暗号文を復号化し平文にする。
【0024】
図1は、楕円曲線暗号システムにおける処理の流れを示す図である。楕円曲線生成部101では楕円曲線暗号に使用する楕円曲線を生成する。公開鍵/秘密鍵生成部102では、楕円曲線生成部101で生成した楕円曲線を入力し、これに基づいて公開鍵115と秘密鍵116を生成する。暗号化部103では、平文113、公開鍵115、楕円曲線を入力して暗号文112を出力する。復号化部104では、暗号文112、秘密鍵116、楕円曲線を入力し、平文114を出力するが、ここで出力する平文114は平文113と内容が同じものである。
【0025】
楕円曲線生成部101では以下の手順で楕円曲線を生成する。原始多項式(primitive polynomials)設定105では、素体F2上の原始多項式f(x)を設定する。例えば、素体F2上の原始多項式は、A.Menezes, P.Oorschot, S.Vanstone, "Handbook of Applied Cryptography", CRC Press(1996)の第4.5.3 Primitive polynomialsに記述されている。
【0026】
楕円曲線パラメタ設定106は、2の拡大体Fqを定義体とする楕円曲線y2+xy=x3+ax2+bのパラメタa,bを設定する。安全な楕円曲線とするためには、楕円曲線の位数#E(Fq)が大きな素因数rを持つ必要がある。#E(Fq)=krの場合、kを小さな整数とすることによって、rは大きな素数となる。大きな素因数rを位数に持つ楕円曲線を生成する方法として、文献Henri Cohen, "A Course in Computational Algebraic Number Theory",GTM138, Springer(1993) p.464 Atkin's Testで記述されている方法がある。なお、他の楕円曲線の位数が大きな素因数rを持つ楕円曲線パラメタ設定法を用いても本発明の実施は可能である。
【0027】
ベースポイント生成部107は、楕円曲線上のアーベル群において、上記rを位数とする部分巡回群の生成元を求める。例えば、#E(Fq)=krの場合は、第1のステップでE(Fq)上の任意の点(x1,y1)を求める。次に第2のステップでr(x1,y1)=0かつk(x1,y1)≠0の場合、G=(x1,y1)をベースポイントとする。他の場合は、第1のステップへ戻る。
【0028】
ここで、r(x1,y1)は、(x1,y1)のスカラー倍(r倍)演算を実行するという意味である。スカラー倍(r倍)演算については楕円曲線演算部109で説明する。
【0029】
以上、楕円曲線生成部101により、原始多項式f(x)、楕円曲線y2+xy=x3+ax2+bのパラメタa,b、ベースポイントG、ベースポイントの位数rを生成した。これらは公開する情報である。
【0030】
次に公開鍵/秘密鍵生成部102は、以下の手順で公開鍵と秘密鍵を生成する。入力を原始多項式f(x)、楕円曲線y2+xy=x3+ax2+bのパラメタa,b、ベースポイントGとし、出力を公開鍵Q、秘密鍵dとすると、第1のステップで乱数2<d<r−1を生成し、第2のステップでQ= dGすなわちGのスカラ倍(d倍)点を求める。
【0031】
公開鍵は、公開する情報であり、秘密鍵は秘密にする情報である。Q,Gからdを求める問題は、離散対数問題といわれるものであり、楕円曲線において、ベースポイントの位数rのビット長の指数オーダの計算量を必要とする。このため、rが大きな素数であれば例えば、r>2の159乗をとれば、事実上、Q,Gからdを求めることはできなくなる。これが楕円曲線暗号の原理である。なお、Qを計算する方法は、従来技術文献 D.V.Chudnovsky, G.V.Chudnovsky "Sequences of Numbers Generated by Addition in Formal Groups and New Primality and Factorization Tests", Advances in Applied Mathematics, 7, 385-434,1986で記載されている方法で求めることができる。
【0032】
次に、暗号化部103では、以下の手順で平文113を暗号文114に変換する。入力を平文M、公開鍵Q、原始多項式f(x)、楕円曲線y2+xy=x3+ax2+bのパラメタb、ベースポイントGとし、出力を暗号文Cとすると、第1のステップで乱数kを生成し(乱数生成部108)、第2のステップでベースポイントGと第1のステップで生成した乱数kとを演算し、kGすなわち(kx1,ky1)とする(楕円曲線演算部109)。第3のステップで公開鍵Qと第1のステップで生成した乱数kとを演算し、kQすなわち(kx2,ky2)とする(楕円曲線演算部109)。第4のステップでM xor x2を演算し、M'とする(データ暗号化110)。第5のステップでx1||y1||M'を演算し暗号文Cとする(データ暗号化110)。
【0033】
楕円曲線演算部109は、任意の点Rのスカラ倍kR演算を行いそのx座標を得る。これにより2の拡大体上の楕円曲線暗号の復号化処理時間において、処理時間の偏差情報から秘密鍵情報が漏れなくなる。以下にこのスカラー倍方法を説明する。図2、図3は、このスカラー倍方法の第1の実施例の説明図である。
【0034】
<第1実施例スカラー倍方法>
Rのx座標の射影座標成分X0、スカラー値mを入力とし、Rのm倍の点のx座標の射影座標成分Xmを出力とする。m,X0を入力を入力し(ステップ202)、ステップ203から205では乱数を射影座標の各座標に乗算することにより、データを撹拌する。すなわち、乱数kを生成し(ステップ203)、乱数kとX0を演算してk2X0をX1に代入し、乱数kをZ1に代入する(ステップ205)。ステップ206から208及び301ではスカラー倍の準備を行う。すなわち、[X1,Z1]を[X4,Z4]に代入し(ステップ206)、また[X1,Z1]を2倍方法(図5)に入力し、出力を[X2,Z2]へ代入する(ステップ207)。 mの2進数表現をhihi−1...h0とする(ステップ208)。ただし、最上位ビットhlは1である。iをlとする(ステップ301)。ステップ302から309ではmの1ビットが0か1かによって加算方法や2倍方法を制御しスカラー倍を求める。すなわち、 i−1をiに代入し(ステップ302)、[X1,Z1]、[X2,Z2]、[X4,Z4]を加算方法(図4)に入力し、出力を[X3,Z3]へ代入する(ステップ303)。ここで、hi==0ならば、ステップ304へ、1ならばステップ306へ進む(ステップ304)。[X1,Z1]を2倍方法(図5)に入力し、出力を[X1,Z1]に代入する(ステップ305)。[X3,Z3]を[X2,Z2]に代入し、ステップ308へいく(ステップ306)。[X2, Z2]を2倍方法(図5)に入力し、出力を[X2,Z2]に代入する(ステップ307)。[X3,Z3]を[X1,Z1]に代入し、ステップ308へいく(ステップ308)。i>0ならばステップ302へ進む(ステップ309)。次は、射影座標から(x,y)座標のx座標へ変換する。X1/(Z1)2をXmに代入し(ステップ310)、Xmを出力する(ステップ311)。
【0035】
次に、加算方法について説明する。楕円曲線上の点の射影空間座標として、任意のλ≠0について,[X,Y,Z]=[λ2X,λ3Y,λZ]とする。ここで、楕円曲線上の点P0=(x0,y0)=[X0,Y0,Z0];P1=(x1,y1)=[X1,Y1,Z1]とする。この和と差をP3=(x3,y3)=[X3,Y3,Z3],P4=(x4,y4)=[X4,Y4,Z4]とする。
【0036】
P1+P0=P3;
P1−P0=P4;
x3=a+(λ3)2+λ3+x0+x1;λ3=(y0+y1)/(x0+x1);
x4=a+(λ4)2+λ4+x0+x1;λ4=(x0+y0+y1)/(x0+x1);
λ3+λ4=(x0)/(x0+x1);
(λ3)2+(λ4)2=(x0)2/(x0+x1)2;
x3+x4=((x0)2+(x0)(x0+x1))/(x0+x1)2=(x0x1)/(x0+x1)2;
以上により、x3+x4=(x0x1)/(x0+x1)2 −−−−(1)
という関係式が得られた。
【0037】
次に、射影座標での関係式を導出する。
【0038】
x1=X1/(Z1)2、x0=X0/(Z0)2を(1)式に代入する。 X3/(Z3)2=X4/(Z4)2+((X0/(Z0)2)( X1/(Z1)2))/( X0/(Z0)2+ X1/(Z1)2)2;
=X4/(Z4)2+((X0(Z0)2)( X1(Z1)2))/( X0(Z1)2+X1(Z0)2)2;=((X4β2)+Z4 2(X0Z0 2)( X1Z1 2))/(Z4 2β2)
ただし、β= X0Z1 2+ X1Z0 2
これより、
X3=X4β2+Z4 2(X0Z1 2)( X1Z0 2);−−−−−(2)
Z3=Z4β;−−−−−−−−−−−−−−−−−−−−−−(3) を得た。
【0039】
ここで、mR=[X1,Y1,Z1]、(m+1)R=[X2,Y2,Z2]、R=[X4,Y4,Z4]、(2m+1)R=[X3,Y3,Z3]とする。この導出式を利用した加算方法を以下に説明する。図4はこの方法の説明図である。
【0040】
<第1実施例加算方法>
射影座標[X1,Z1],[X2,Z2],[X4,Z4]を入力とし、[X3,Z3]または無限遠点を出力とする。[X1Z1],[X2,Z2],[X4,Z4]を入力し(ステップ402)、ステップ403から407では加算結果が無限遠点か判定するためにX1(Z2)2+ X2(Z1)2を求める。さらに各中間結果S1、S2、Bは、上記式(2),(3)を求めるための準備である。すなわち、X1(Z2)2をS1に代入し(ステップ403)、X2(Z1)2をS2に代入し(ステップ404)、S1+S2をBに代入し(ステップ405)、B=0の場合、ステップ407へ進み、成立しない場合ステップ408へ進む(ステップ406)。ステップ407では、無限遠点を出力し、ステップ413へいく。以下の408−411は上記式(2),(3)に従って[X3,Z3]を求める。Z4BをZ3に代入し(ステップ408)、(Z4)2S1S2をSに代入し(ステップ409)、X4Z3 2をMに代入し(ステップ410)、 M+SをX3に代入し(ステップ411)、[X3,Z3]を出力を出力する(ステップ412)。かかる方法により相異なる変数の乗算6回で加算演算を実行できる。すなわち、X1、X2、X4からX3を高速に演算できる。
【0041】
次に、2倍計算方法について説明する。P1の2倍点をP2とし、P1=(x1,y1)=[X1,Y1,Z1]、P2=(x2,y2)=[X2,Y2,Z2]とする。2倍演算の演算式 x2=(x1)2+b/(x1)2より、x1= X1/(Z1)2、x2=X2/(Z2)2をこの式に代入する。
【0042】
X2/(Z2)2=(X1/(Z1)2)2+b/(X1/(Z1)2)2=X1 2/(Z1)4+(b(Z1)4)/(X1)2=(X1 4+b(Z1)8)/(X1 2Z1 4)
従って、
X2=X1 4+bZ1 8−−−−−(4)
Z2=X1Z1 2−−−−−−−−(5)
この導出式を利用した2倍方法を以下に説明する。図5は、この説明図である。
【0043】
<第1実施例2倍計算方法>
Q=[X1,Z1]、bを入力とし、2Q=[X2,Z2]または無限遠点を出力とする。X1,Z1を入力し(ステップ502)、以下のステップ503から504は2倍結果が無限遠点を判定するためにX1==0またはZ1==0の判定を行う。すなわち、X1==0またはZ1==0の場合は、ステップ504へ。成立しない場合は、ステップ505へいく(ステップ503)。ステップ504では、無限遠点を出力する。以下のステップ505から507では上記式(4),(5)に従って[X2,Z2]を求める。Z1 2をSに代入し(ステップ505)、 X1SをZ2に代入し(ステップ506)、X1 4+b(S)4をX2に代入し(ステップ507)、[X2,Z2]を出力する(ステップ508)。かかる方法により相異なる変数の乗算2回で加算演算を実行できる。従って、<スカラー倍方法>においてはスカラー値dのビットあたり、相異なる変数の乗算6+2=8回で実行できる。すなわち、X1、X2、X4からX3を高速に演算できる。
【0044】
つぎに、復号化部104では、以下の手順で暗号文112を元の平文114に変換する。112と114は内容が同じ平文である。入力を暗号文C←x1||y1||M'、秘密鍵d、原始多項式f(x)、楕円曲線y2+xy=x3+ax2+bのパラメタ,b、ベースポイントGとし、出力を平文Mとする。
【0045】
ステップ1:(x2,y2)←d(x1, y1)(楕円曲線演算部111)
ステップ2:平文M←M' xor x2
ステップ1は図2、図3を用いて実行する。
【0046】
以上により、与えられた座標(x,y)のdスカラー倍のx座標を求める処理において、 dのビットパターンに依存せず、dの各ビットあたり8回の相異なる乗算処理で実現することができる。また、dの与えられたx座標に対して、乱数kにより[kx2,k]をスカラー倍初期値とすることによって、常に演算対象を変動させることができる。さらに、これらの組合わせにより、dのビットパターンが、d(x,y)処理時間の偏差に現れないため、d(x,y)処理時間の偏差情報から秘密鍵情報がもれない方法を示した。また、この性質は暗号処理の電流、電圧、電力の偏差を用いて、暗号解読を行うDPA(Differential Power Analysis)に対して、d(x,y)の処理電流(電圧、電力)の偏差情報から秘密鍵情報がもれない方法をも示している。
【0047】
次に第1実施例を更に高速化を図ることが可能な第2実施例を説明する。アフィン座標から、射影座標への変換を(x,y)→[x,y,1]とする場合、Z4=1とできる。(2)、(3)式にZ4=1を代入すると、
X3=(X4β2)+(X0(Z1)2)( X0(Z1)2) ------------(6)
Z3=β -----------------------------------(7)
この式を利用してスカラー倍方法、加算方法を以下のように求めることができる。
【0048】
<第2実施例スカラー倍方法>
これを図6、図7に示す。Rのx座標の射影座標成分X0、スカラー値mを入力とし、 Rのm倍の点のx座標の射影座標成分Xmを出力とする。m,X0を入力し(ステップ602)、以下のステップ603から604ではX0を射影座標に変換する。X0をX1に代入し(ステップ603)、1をZ1に代入する(ステップ604)。ステップ605から607ではスカラー倍の準備を行う。すなわち、[X1,Z1]を[X4,Z4]に代入し(ステップ605)、[X1,Z1]を2倍方法(図5)に入力し、出力を[X2,Z2]へ代入する(ステップ606)。mの2進数表現をhihi−1...h0とする(ステップ607)。ただし、最上位ビットhiは1である。1をiに代入する(ステップ701)。以下のステップ702から709ではmの1ビットが0か1かによって加算方法や2倍方法を制御しスカラー倍を求める。すなわち、i−1をiに代入し(ステップ702)、[X1,Z1]、[X2,Z2]、X0を加算方法(図8)に入力し、出力を[X3,Z3]へ代入する(ステップ703)。hi==0ならば、ステップ706へ、1ならばステップ708へ進む(ステップ704)。[X1,Z1] を2倍方法(図5)に入力し、出力を[X1,Z1]に代入する(ステップ705)。[X3, Z3]を[X2,Z2]に代入し、ステップ710へいく(ステップ706)。[X2,Z2]を2倍方法(図5)に入力し、出力を[X2,Z2]に代入する(ステップ707)。[X3, Z3]を[X1,Z1]へ代入し、ステップ710へいく(ステップ708)。i>0ならばステップ703へ進む(ステップ709)。X1/(Z1)2をXmに代入し(ステップ710)、Xmを出力する(ステップ711)。
【0049】
<第2実施例加算方法>
これを図8に示す。[X1,Z1],[X2,Z2],X4を入力とし、[X3,Z3]または無限遠点を出力とする。[X1,Z1],[X2,Z2],X4を入力し(ステップ802)、以下のステップ803から807は加算結果が無限遠点か判定するためにX1(Z2)2+ X2(Z1)2を求める。さらに各中間結果S1、S2、Bは、上記式(6),(7)を求めるための準備である。すなわち、X1Z2 2をS1に代入し(ステップ803)、X2Z1 2をS2に代入し(ステップ804)、S1+S2をBに代入する(ステップ805)。B==0の場合は、ステップ807へ進み、成立しない場合ステップ808へ進む(ステップ806)。無限遠点を出力し、ステップ813へいく(ステップ807)。以下のステップ808から811は上記式(6),(7)に従って[X3,Z3]を求める。すなわち、BをZ3に代入し(ステップ808)、S1S2をSに代入し(ステップ809)、X4Z3 2をMに代入し(ステップ810)、M+SをX3に代入し(ステップ811)、[X3,Z3]を出力する(ステップ812)。
【0050】
以上により、相異なる変数の乗算4回で加算演算を実行できる。このため、第1実施例の加算演算より、乗算回数を減らすことができる。なお、2倍演算は第1実施例の2倍演算を利用する。
【0051】
上述した処理時間の偏差情報から秘密鍵情報が漏れない方法は、2の拡大体上の楕円曲線の場合の他、素体上の楕円曲線でも適用可能である。
【0052】
次に第3実施例を説明する。素体上の楕円曲線By2=x3+Ax2+Bxの場合、モンゴメリ法を用いて、処理時間の偏差情報から秘密鍵情報がもれない方法を示す。
【0053】
P.Montgomery,"Speeding the Pollard and Elliptic Curve Methods of Factorization", Mathematics of computation Vol.48,No.177,pp.243-264(1987)では、有限素体上の楕円曲線の標準形 By2=x3+Ax2+Bxを用いて、点P0(x0,y0),P1(x1,y1)の加算と、減算を
P3(x3,y3); P4(x4,y4);
P1+P0=P3 ;
P1−P0=P4 ; とするとき、
x0,x1,x4から、x3が高速に求まる。具体的には、次のように素体の乗算6回で求まる。
【0054】
(x3,y3)→[X3,Z3];(x4,y4)→[X4,Z4];
とするとき、
X3←Z4[(X1−Z1)(X0+Z0)+(X1+Z1)(X0−Z0)]2 ;
Z3←X4[(X1−Z1)(X0+Z0)−(X1+Z1)(X0−Z0)]2 ;
また、2倍演算は、
P5=2P1;(x1,y1)→[X1,Z1];
4X1Z1←(X1+Z1)2−(X1−Z1)2 ;
X5←(X1+Z1)2(X1-Z1)2;Z5←(4X1Z1)[(X1-Z1)2+((A+2)/4)(4X1Z1)] ;
また、P1の2倍点P5(x5,y5)とするとき、x5は、x1のみから求まり、乗算5回である。これを利用して、点Rのスカラ倍(スカラー値d)のx座標を以下のようにRxから求める。
【0055】
初期値を[R,2R]、mRをRのm倍のx座標とするとき、dを2進数展開し、dの上位ビットから、
0の場合、[mR,(m+1)R]→[2mR,(2m+1)R]
1の場合、[mR,(m+1)R]→[(2m+1)R,2(m+1)R]
(m+1)R−mR=R
(m+1)R+mR=(2m+1)Rである。
【0056】
<第3実施例スカラー倍方法>
Rのx座標の射影座標成分X0、スカラー値mを入力とし、Rのm倍の点のx座標の射影座標成分Xmを出力とする。 m,X0を入力を入力し(ステップ902)、ステップ903から905では乱数を射影座標の各座標に乗算することにより、データを撹拌する。すなわち、乱数kを生成し(ステップ903)、乱数kとX0を演算してkX0をX1に代入し(ステップ904)、乱数kをZ1に代入する(ステップ905)。次に、[X1,Z1]を[X4,Z4]に代入し(ステップ906)、[X1,Z1]を2倍方法(モンゴメリの2倍演算)に入力し、出力を[X2,Z2]へ代入する(ステップ907)。mの2進数表現をhihi−1...h0とする(ステップ908)。ただし、最上位ビットhlは1である。iをlとする(ステップ909)。i−1をiに代入し(ステップ910)、[X1,Z1]、[X2,Z2]、[X4, Z4]を加算方法(モンゴメリの加算演算)に入力し、出力を[X3,Z3]へ代入する(ステップ911)。ここで、hi==0ならば、ステップ912へ、1ならばステップ914へ進む(ステップ912)。[X1,Z1]を2倍方法(モンゴメリの2倍演算)に入力し、出力を[X1,Z1]に代入する(ステップ913)。[X3,Z3]を[X2,Z2]に代入し、ステップ916へいく(ステップ914)。[X2,Z2]を2倍方法(モンゴメリの2倍演算)に入力し、出力を[X2,Z2]に代入する(ステップ915)。[X3, Z3]を[X1,Z1]に代入し、ステップ916へいく(ステップ916)。i>0ならばステップ910へ進む(ステップ917)。X1/Z1をXmに代入し(ステップ918)、Xmを出力する(ステップ919)。
【0057】
以上により、与えられた座標(x,y)のdスカラー倍のx座標を求める処理において、dの各ビットあたり11回の相異なる乗算処理で実現し、与えられたx座標に対して、乱数kにより[kx,k]をスカラー倍初期値とすることによって、d(x,y)処理時間の偏差情報から秘密鍵情報がもれない方法を示した。また、この性質は暗号処理の電流、電圧、電力の偏差を用いて、暗号解読を行うDPAに対して、d(x,y)の処理電流(電圧、電力)の偏差情報から秘密鍵情報がもれない方法を示している。
【0058】
さらに、素体上の楕円曲線y2=x3+ax+bの場合、By2=x3+Ax2+Bxとy2=x3+ax+bの間に有理点がなすアーベル群が同型となる楕円曲線を構成し、素体上の楕円曲線y2=x3+ax+bで与えられた(x,y)をBy2=x3+Ax2+Bxに変換し、上記発明の方法でスカラー倍を求め、結果をy2=x3+ax+bに変換することにより本発明を利用することができる。
【0059】
次に第4実施例を説明する。第1実施例では、射影座標を任意のλ≠0について,[X,Y,Z]=[λ2X,λ3Y,λZ]とするものを説明したが、[X,Y,Z]=[λX,λY,λZ]とする射影座標で実施することもできる。
【0060】
<第4実施例スカラー倍方法>
Rのx座標の射影座標成分X0、スカラー値mを入力とし、Rのm倍の点のx座標の射影座標成分Xmを出力とする。m,X0を入力し(ステップ1002)、以下のステップ1003から1005では乱数を射影座標の各座標に乗算することにより、データを撹拌する。すなわち、乱数kを生成し(ステップ1003)、kX0をX1に代入し(ステップ1004)、乱数kをZ1に代入する(ステップ1005)。[X1,Z1]を[X4,Z4]に代入し(ステップ1006)、[X1,Z1]を2倍方法に入力し、出力を[X2,Z2]へ代入する(ステップ1007)。mの2進数表現をhihi−1...h0とする(ステップ1008)。ただし、最上位ビットhlは1である。iをlとする(ステップ1009)。i−1をiに代入し(ステップ1010)、[X1,Z1]、[X2,Z2]、[X4,Z4]を加算方法に入力し、出力を[X3,Z3]へ代入する(ステップ1011)。ここで、hi==0ならば、ステップ1012へ、1ならばステップ1014へ進む(ステップ1012)。[X1,Z1]を2倍方法に入力し、出力を[X1,Z1]に代入する(ステップ1013)。[X3,Z3]を[X2,Z2]に代入し、ステップ1016へいく(ステップ1014)。[X2,Z2]を2倍方法に入力し、出力を[X2,Z2]に代入する(ステップ1015)。[X3,Z3]を[X1, Z1]に代入し、ステップ1016へいく(ステップ1016)。i>0ならばステップ1010へ進む(ステップ1017)。X1/Z1をXmに代入し(ステップ1018)、Xmを出力する(ステップ1019)。
【0061】
楕円曲線上の点の射影空間座標として、任意のλ≠0について,[X,Y,Z]=[λX, λY,λZ]とする。ここで、楕円曲線上の点P0=(x0,y0)=[X0,Y0,Z0]; P1=(x1,y1)=[X1,Y1,Z1]とする。この和と差をP3=(x3,y3)=[X3,Y3,Z3],P4=(x4,y4)=[X4,Y4,Z4]とする。
【0062】
P1+P0=P3;
P1−P0=P4;
第1実施例の(1)式x3+x4=(x0x1)/(x0+x1)2より射影座標での関係式を導出する。
【0063】
x1=X1/Z1、x0=X0/Z0を(1)式に代入する。
X3/Z3=X4/Z4+((X0/Z0)(X1/Z1))/(X0/Z0+X1/Z1)2;
=X4/(Z4)2+((X0Z0)( X1Z1))/( X0Z1+ X1Z0)2;
=((X4β2)+Z4 2(X0Z0)( X1Z1))/(Z4 2β2)
ただし、β= X0Z1+ X1Z0
これより、X3=(X4β2)+Z4 2(X0Z1)( X1Z0); −−(2)'
Z3=Z4 2β2; −−−−−−−−−−−−−−−−−−−−−(3)' を得た。
【0064】
ここで、mR=[X1,Y1,Z1]、(m+1)R=[X2,Y2,Z2]、R=[X4,Y4,Z4]、(2m+1)R=[X3,Y3,Z3]とする。この導出式を利用した加算方法を以下に説明する。
【0065】
<第4実施例加算方法>
射影座標[X1,Z1],[X2 ,Z2],[X4 , Z4]を入力とし、[X3,Z3] または無限遠点を出力とする。[X1,Z1],[X2,Z2],[X4,Z4]を入力し(ステップ1102)、X1Z2をS1に代入し(ステップ1103)、X2Z1をS2に代入し(ステップ1104)、S1+S2をBに代入する(ステップ1105)。B==0の場合は、ステップ1107へ進み、成立しない場合ステップ1108へ進む(ステップ1106)。無限遠点を出力し、ステップ1113へいく(ステップ1107)。(Z4)2B2をZ3に代入し(ステップ1108)、(Z4)2S1S2をSに代入し(ステップ1109)、(X4B2)をMに代入し(ステップ1110)、M+SをX3に代入し(ステップ1111)、[X3,Z3]を出力する(ステップ1112)。
【0066】
以上により、相異なる変数の乗算6回で加算演算を実行できる。
【0067】
次に、2倍計算方法について説明する。P1の2倍点をP2とし、P1=(x1,y1)=[X1,Y1,Z1]、P2=(x2,y2)=[X2,Y2,Z2]とする。2倍演算の演算式 x2=(x1)2+b/(x1)2より、x1=X1/Z1、x2=X2/Z2をこの式に代入する。
【0068】
X2/Z2=(X1/Z1)2+b/(X1/Z1)2=X1 2/(Z1)2+(bZ1 2)/(X1)2=(X1 4+bZ1 4)/(X1 2Z1 2)
従って、
X2=X1 4+bZ1 4−−−−−(4)'
Z2=X1 2Z1 2−−−−−−−−−−(5)'
この導出式を利用した2倍方法を以下に説明する。
【0069】
<第4実施例2倍計算方法>
Q=[X1 ,Z1],bを入力とし、2Q=[X2,Z2]または無限遠点を出力する。X1,Z1を入力し(ステップ1202)、X2==0またはZ2==0の場合、ステップ1204へ。成立しない場合、ステップ1205へいく(ステップ1203)。ステップ1204では、無限遠点を出力する。Z2=X1 2Z1 2とし(ステップ1205)、S=bZ1 4とし(ステップ1206)、X1 4+SをX2に代入し(ステップ1207)、[X2,Z2]を出力する(ステップ1208)。かかる方法により、相異なる変数の乗算2回で加算演算を実行できる。
【0070】
以上により、与えられた座標(x,y)のdスカラー倍のx座標を求める処理において、dの各ビットあたり8回の相異なる乗算処理で実現し、与えられたx座標に対して、乱数kにより[kx,k]をスカラー倍初期値とすることによって、d(x,y)処理時間の偏差情報から秘密鍵情報がもれない方法を示した。暗号解読DPAに対して、d(x,y)の処理電流(電圧、電力)の偏差情報から秘密鍵情報がもれない方法を示している。
【0071】
次に第5実施例を説明する。第2実施例では、射影座標を任意のλ≠0について,[X,Y,Z]=[λ2X,λ3Y,λZ]とするものを説明したが、[X,Y,Z]=[λX,λY,λZ]とする射影座標で実施することもできる。
【0072】
アフィン座標から、射影座標への変換を(x,y)→[x,y,1]とする場合、Z4=1 とできる。
【0073】
<第5実施例スカラー倍方法>
Rのx座標の射影座標成分X0、スカラー値mを入力とし、Rのm倍の点のx座標の射影座標成分Xmを出力とする。m,X0を入力し(ステップ1302)、乱数kを生成し(ステップ1303)、kX0をX1に代入する(ステップ1304)。1をZ1に代入する(ステップ1305)。[X1,Z1]を[X4,Z4]に代入し(ステップ1306)、[X1,Z1]を2倍方法に入力し、出力を[X2,Z2]へ代入する(ステップ1307)。mの2進数表現をhihi−1...h0とする。ただし、最上位ビットhiは1である(ステップ1308)。1をiに代入する(ステップ1309)。i−1をiに代入し(ステップ1310)、[X1, Z1]、[X2,Z2]、X4を加算方法に入力し、出力を[X3,Z3]へ代入する(ステップ1311)。hi==0ならば、ステップ1312へ、1ならばステップ1314へ進む(ステップ1312)。[X1,Z1]を2倍方法に入力し、出力を[X1,Z1]に代入する(ステップ1313)。[X3,Z3]を[X2,Z2]へ代入し、ステップ1316へいく(ステップ1314)。[X2,Z2]を2倍方法に入力し、出力を[X2,Z2]に代入する(ステップ1315)。[X3,Z3]を[X1,Z1]へ代入し、ステップ1316へいく(ステップ1316)。i>0ならばステップ1300へ進む(ステップ1317)。X1/Z1をXmに代入し(ステップ1318)、Xmを出力する(ステップ1319)。
【0074】
<第5実施例加算方法>
[X1,Z1],[X2,Z2],X4を入力とし、[X3,Z3]または無限遠点を出力とする。[X1,Z1],[X2,Z2],X4を入力する(ステップ1402)。X1Z2をS1に代入し(ステップ1403)、X2Z1をS2に代入し(ステップ1404)、S1+S2をBに代入する(ステップ1405)。B==0の場合、ステップ1407へ、成立しない場合ステップ1408へ進む(ステップ1406)。無限遠点を出力し、ステップ1413へいく(ステップ1407)。次に、B2をZ3に代入し(ステップ1408)、S1S2をSに代入し(ステップ1409)、(X4B2)をMに代入し(ステップ1410)、M+SをX3に代入し(ステップ1411)し、[X3,Z3]を出力する(ステップ1412)。以上により、相異なる変数の乗算4回で加算演算を実行できる。なお、2倍演算は、前述した実施例の2倍演算を利用する。尚、本実施例は2の拡大体上、素体上の楕円曲線どちらにも適用可能である。
【0075】
次に第6実施例を説明する。図1の楕円曲線演算部を、図9における901の楕円曲線演算装置で実施する。901は点のx座標X0、スカラー値m、2の拡大体上の楕円曲線の標準形y2+xy=x3+ax2+bにおいけるbを入力し(902)、m倍の点のx座標をXm出力する(903)。尚、本実施例は2の拡大体上の楕円曲線で説明するが、素体上の楕円曲線を用いた場合も同様の方法で実現可能である。
【0076】
乱数生成部904は、乱数kを生成し、kを出力する(905)。射影座標変換部906には乱数生成部904からの乱数kの他、x座標X0とスカラー値m、bを入力し(905)、射影座標[kX0,k]に変換する。これを[X1,Z1]とする。スカラー倍部908は射影座標[X1,Z1]とスカラー値mを入力し、[X1,Z1]のm倍点を求め、そのx座標Xmを出力する。ここで、スカラー倍部908は、先ず、[X1,Z1]を[X4,Z4]へ代入する。かかる[X4,Z4]は、例えばスカラー倍部のメモリに予め記憶させておく。また[X1,Z1]を913へ出力して、2倍点[X2,Z2]を得る。次に、mを2進数展開して、上位ビットからビットが0の場合[X1,Z1]を913に出力して913の出力である2倍点を[X1,Z1]に代入する。その後[X1,Z1]、[X2,Z2]、[X4,Z4]を910へ入力して出力である加算点を[X2,Z2]に代入する。ビットが1の場合[X2,Z2]を913に出力して913の出力である2倍点を[X2,Z2]に代入する。その後[X1,Z1]、[X2,Z2]、[X4,Z4]を910へ入力して出力である加算点を[X1,Z1]に代入することによりm倍の点のXm座標を得る。
【0077】
加算演算部910では、[X1,Z1][X2,Z2][X4,Z4]を入力し、[X3,Z3]=[X2,Z2]+[X1,Z1]、[X4,Z4]=[X2,Z2]−[X1,Z1]となる[X3,Z3]を以下のように求め出力する。
【0078】
先ず、S1←X1Z2 2、S2←X2Z1 2、B←S1+S2を計算する。ここでB==0の場合、無限遠点を出力し終了となる。B=0が成立しない場合、Z3←Z4B、S←Z4 2S1S2、M ←X4Z3 2、X3←M+Sを計算する。
【0079】
2倍演算部913では、[X1,Z1]、bを入力し、[X2,Z2]=[X1,Z1]+[X1,Z1]となる[X2,Z2]を以下のように求め出力する。すなわち、X1==0またはZ1 ==0の場合、無限遠点を出力する。他の場合、S←Z1 2、Z2←X1S、X2←X1 4+b(S)4を計算する。
【0080】
上記実施例では、x座標X0を射影座標[kX0,k]に変換した例を説明したが、射影座標[k2X0,k]に変換する場合にも適用可能である。
【0081】
尚、上述した実施例にかかるプログラムは記録媒体に格納しておくことも可能である。
【0082】
【発明の効果】
本発明により前記従来のより、高速に楕円曲線暗号処理を実行できる。また、楕円曲線暗号の実行方法において、d(x,y)の処理時間がdのビットパターンに依存しない処理方法を与えることによって、偏差情報から秘密鍵情報がもれずに処理できる。
【図面の簡単な説明】
【図1】本発明の楕円曲線暗号システムにおける処理の流れを示す図である。
【図2】本発明の第1の実施例を示す楕円曲線暗号実行方法及び装置においてスカラー倍方法を示すフローチャートである。
【図3】本発明の第1の実施例を示す楕円曲線暗号実行方法及び装置においてスカラー倍方法を示すフローチャートである。
【図4】本発明の第1の実施例を示す楕円曲線暗号実行方法及び装置を実行するための加算演算のフローチャートである。
【図5】本発明の第1の実施例を示す楕円曲線暗号実行方法及び装置を実行するための2倍演算のフローチャートである。
【図6】本発明の第2の実施例を示す楕円曲線暗号実行方法及び装置においてスカラー倍方法を示すフローチャートである。
【図7】本発明の第2の実施例を示す楕円曲線暗号実行方法及び装置においてスカラー倍方法を示すフローチャートである。
【図8】本発明の第2の実施例を示す楕円曲線暗号実行方法及び装置を実行するための加算演算のフローチャートである。
【図9】本発明の楕円曲線演算装置を構成図である。
【図10】本発明の楕円曲線暗号システムの構成図である。
【符号の説明】
101 楕円曲線生成部、
102 公開鍵、秘密鍵生成部、
103 暗号化部、
104 復号化部、
105 素数生成部、
106 楕円曲線パラメタ設定、
107 ベースポイント生成部、
108 乱数生成部、
109 楕円曲線演算部、
110 データ暗号化処理部、
111 データ復号化処理部、
112 暗号文、
113 平文。
Claims (6)
- 楕円曲線がy2+xy=x3+ax2+bである、2の拡大体上の楕円曲線暗号の実行方法であって、
乱数生成部により乱数kを生成するステップと、
2の拡大体上の座標x0と前記生成された乱数kから射影座標変換部により[k2x0、k]=[X1、Z1]=[X4、Z4]を求めるステップと、
前記[X1、Z1]から2倍演算部により2倍点[X2、Z2]を求めるステップと、
求めた前記[X1、Z1]、[X2、Z2]、[X4、Z4]から加算演算部により加算点[X3、Z3]を求めるステップと、
前記射影座標変換部、前記2倍演算部、前記加算演算部より求めた結果からスカラー倍部により座標x0をスカラー倍するステップとを有することを特徴とする楕円曲線暗号の実行方法。 - 請求項1記載の楕円曲線暗号実行方法において、前記加算演算部により[X1,Z1],[X2,Z2],[X4,Z4]から前記加算点[X3,Z3]を求めるステップは、
前記加算演算部により、B=X1Z2 2+X2Z1 2を計算するステップと、前記計算されたBをB=0であるか否かを判別するステップと、B=0の場合は無限遠点を出力し、B=0でない場合はZ3=Z4Bを計算するステップと、前記計算されたZ3からX3=X4Z3 2+X1X2Z1 2Z2 2Z4 2を計算するステップが実行されることを特徴とする請求項1記載の楕円曲線暗号の実行方法。 - 請求項1記載の楕円曲線暗号実行方法において、前記加算演算部により[X1,Z1],[X2,Z2],[X4,Z4]から前記加算点[X3,Z3]を求めるステップは、
前記加算演算部により、B=X1Z2+X2Z1を計算するステップと、前記計算されたBをB=0であるか否かを判別するステップと、B=0の場合は無限遠点を出力し、B=0でない場合はZ3=Z4 2B2及びX3=X4B2+X1X2Z1Z2Z4 2を計算するステップとを有することを特徴とする請求項1記載の楕円曲線暗号の実行方法。 - 楕円曲線がy2+xy=x3+ax2+bである、2の拡大体上の楕円曲線暗号の実行方法であって、
乱数生成部により乱数kを生成するステップと、
2の拡大体上の座標x0と前記生成された乱数kから射影座標変換部により[kx0、k]=[X1、Z1]=[X4、Z4]を求めるステップと、
前記[X1、Z1]から2倍演算部により2倍点[X2、Z2]を求めるステップと、
求めた前記[X1、Z1]、[X2、Z2]、[X4、Z4]から加算演算部により加算点[X3、Z3]を求めるステップと、
前記射影座標変換部、前記2倍演算部、前記加算演算部より求めた結果からスカラー倍部により座標x0をスカラー倍するステップとを有することを特徴とする楕円曲線暗号の実行方法。 - 楕円曲線がy2+xy=x3+ax2+bである、2の拡大体上の楕円曲線暗号の演算装置であって、乱数kを生成する乱数生成部と、2の拡大体上の座標x0と前記乱数kとを入力し、射影座標[kx0,k]=[X1,Z1]に変換する射影座標変換部と、前記[X1,Z1]から2倍点を演算し出力する2倍演算部と、前記[X1,Z1]から加算点を求め出力する加算演算部と、前記射影座標変換部と前記2倍演算部と前記加算演算部からの情報を得て、座標x0をスカラー倍するスカラー倍部とを有することを特徴とする楕円曲線演算装置。
- 楕円曲線がy2+xy=x3+ax2+bである、2の拡大体上の楕円曲線暗号の演算装置であって、乱数kを生成する乱数生成部と、2の拡大体上の座標x0と前記乱数kとを入力し、射影座標[k2x0,k]=[X1,Z1]に変換する射影座標変換部と、前記[X1,Z1]から2倍点を演算し出力する2倍演算部と、前記[X1,Z1]から加算点を求め出力する加算演算部と、前記射影座標変換部と前記2倍演算部と前記加算演算部からの情報を得て、座標x0をスカラー倍するスカラー倍部とを有することを特徴とする楕円曲線演算装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP36427798A JP3796993B2 (ja) | 1998-12-22 | 1998-12-22 | 楕円曲線暗号実行方法及び装置並びに記録媒体 |
CA002292817A CA2292817C (en) | 1998-12-22 | 1999-12-20 | Method and apparatus for elliptic curve cryptography and recording medium therefor |
EP99310340A EP1014617A3 (en) | 1998-12-22 | 1999-12-21 | Method and apparatus for elliptic curve cryptography and recording medium therefor |
US09/468,948 US6876745B1 (en) | 1998-12-22 | 1999-12-22 | Method and apparatus for elliptic curve cryptography and recording medium therefore |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP36427798A JP3796993B2 (ja) | 1998-12-22 | 1998-12-22 | 楕円曲線暗号実行方法及び装置並びに記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000187438A JP2000187438A (ja) | 2000-07-04 |
JP3796993B2 true JP3796993B2 (ja) | 2006-07-12 |
Family
ID=18481429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP36427798A Expired - Fee Related JP3796993B2 (ja) | 1998-12-22 | 1998-12-22 | 楕円曲線暗号実行方法及び装置並びに記録媒体 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6876745B1 (ja) |
EP (1) | EP1014617A3 (ja) |
JP (1) | JP3796993B2 (ja) |
CA (1) | CA2292817C (ja) |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1410555A4 (en) * | 2000-09-11 | 2004-12-22 | Jinglong F Zhang | METHOD AND DEVICE, THE OR THE SINGLE-SIDED TRANSFORMATIONS USED |
JP3794266B2 (ja) * | 2000-11-08 | 2006-07-05 | 株式会社日立製作所 | 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体 |
DE10057203C1 (de) * | 2000-11-17 | 2002-06-06 | Cv Cryptovision Gmbh | Verfahren zur Berechnung eines digitalen Signalwertes für ein cryptographisches Verfahren |
US20040158597A1 (en) * | 2001-04-05 | 2004-08-12 | Ye Ding Feng | Method and apparatus for constructing efficient elliptic curve cryptosystems |
US7308469B2 (en) * | 2001-06-15 | 2007-12-11 | Robert Joseph Harley | Method for generating secure elliptic curves using an arithmetic-geometric mean iteration |
FR2828779B1 (fr) * | 2001-08-17 | 2004-01-16 | Gemplus Card Int | Procede de calcul universel applique a des points d'une courbe elliptique |
KR20030078350A (ko) * | 2002-03-29 | 2003-10-08 | 박근수 | 타원 곡선 암호에서 단위원의 n-제곱근 함수를 이용한프로베니우스 전개 방법 |
US20040001590A1 (en) * | 2002-06-27 | 2004-01-01 | Eisentraeger Anne Kirsten | Efficient elliptic curve double-and-add calculator |
US7555122B2 (en) | 2002-12-04 | 2009-06-30 | Wired Communications LLC | Method for elliptic curve point multiplication |
EP1648111B1 (en) * | 2003-07-22 | 2014-01-15 | Fujitsu Limited | Tamper-resistant encryption using a private key |
US7961873B2 (en) * | 2004-03-03 | 2011-06-14 | King Fahd University Of Petroleum And Minerals | Password protocols using XZ-elliptic curve cryptography |
US7379546B2 (en) * | 2004-03-03 | 2008-05-27 | King Fahd University Of Petroleum And Minerals | Method for XZ-elliptic curve cryptography |
US7961874B2 (en) * | 2004-03-03 | 2011-06-14 | King Fahd University Of Petroleum & Minerals | XZ-elliptic curve cryptography with secret key embedding |
US7764785B2 (en) * | 2004-11-08 | 2010-07-27 | King Fahd University Of Petroleum And Minerals | Method for communicating securely over an insecure communication channel |
DE602005010039D1 (de) | 2004-12-23 | 2008-11-13 | Hewlett Packard Development Co | Verbesserungen in der Anwendung von bilinearen Abbildungen bei kryptographischen Anwendungen |
WO2006076800A1 (en) * | 2005-01-18 | 2006-07-27 | Certicom Corp. | Accelerated verification of digital signatures and public keys |
KR100817048B1 (ko) | 2005-03-05 | 2008-03-26 | 삼성전자주식회사 | 여러 가지 포인트 표현을 기반으로 한 ecc에서 dfa대책을 위한 암호화 방법 및 장치 |
JP4825199B2 (ja) | 2005-04-27 | 2011-11-30 | パナソニック株式会社 | 情報セキュリティ装置及び楕円曲線演算装置 |
US8738927B2 (en) | 2005-06-29 | 2014-05-27 | Irdeto B.V. | Arrangement for and method of protecting a data processing device against an attack or analysis |
KR100731575B1 (ko) | 2005-06-29 | 2007-06-22 | 경북대학교 산학협력단 | 전력분석공격에 대응하는 암호화 방법 |
EP1775880A1 (en) * | 2005-10-11 | 2007-04-18 | STMicroelectronics S.r.l. | Method of processing information to be confidentially transmitted |
US8913739B2 (en) | 2005-10-18 | 2014-12-16 | Telecom Italia S.P.A. | Method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems |
ATE466329T1 (de) | 2005-10-28 | 2010-05-15 | Telecom Italia Spa | Verfahren zur skalarmultiplikation in gruppen elliptischer kurven über binäre polynomische körper für nebenkanalattacken-beständige kryptosysteme |
KR100850202B1 (ko) | 2006-03-04 | 2008-08-04 | 삼성전자주식회사 | Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법 |
US7864951B2 (en) * | 2006-07-10 | 2011-01-04 | King Fahd University Of Petroleum And Minerals | Scalar multiplication method with inherent countermeasures |
US8997255B2 (en) | 2006-07-31 | 2015-03-31 | Inside Secure | Verifying data integrity in a data storage device |
KR20080012633A (ko) * | 2006-08-04 | 2008-02-12 | 삼성전자주식회사 | 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 소수 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치 |
US8352752B2 (en) | 2006-09-01 | 2013-01-08 | Inside Secure | Detecting radiation-based attacks |
DE102007001070B3 (de) | 2006-09-29 | 2008-04-30 | Siemens Ag | Verfahren zum verschlüsselten Datenausgleich eines Systems mit mindestens einem Datenträger und einem Lesegerät |
KR101223498B1 (ko) | 2006-12-15 | 2013-01-18 | 삼성전자주식회사 | 타원 곡선 암호 방식에서 공개키를 생성하는 방법 및 상기방법을 수행하는 시스템 |
US7856101B2 (en) * | 2007-02-07 | 2010-12-21 | King Fahd University Of Petroleum And Minerals | Method for elliptic curve scalar multiplication |
US8050403B2 (en) | 2007-03-06 | 2011-11-01 | Research In Motion Limited | Method and apparatus for generating a public key in a manner that counters power analysis attacks |
US8160245B2 (en) | 2007-03-07 | 2012-04-17 | Research In Motion Limited | Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting |
US20080273695A1 (en) * | 2007-05-02 | 2008-11-06 | Al-Gahtani Theeb A | Method for elliptic curve scalar multiplication using parameterized projective coordinates |
US8102998B2 (en) * | 2007-05-02 | 2012-01-24 | King Fahd University Of Petroleum And Minerals | Method for elliptic curve scalar multiplication using parameterized projective coordinates |
US7986779B2 (en) * | 2007-06-30 | 2011-07-26 | Intel Corporation | Efficient elliptic-curve cryptography based on primality of the order of the ECC-group |
US8559625B2 (en) * | 2007-08-07 | 2013-10-15 | Inside Secure | Elliptic curve point transformations |
US7991162B2 (en) * | 2007-09-14 | 2011-08-02 | University Of Ottawa | Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields |
US8619977B2 (en) * | 2008-01-15 | 2013-12-31 | Inside Secure | Representation change of a point on an elliptic curve |
US8233615B2 (en) | 2008-01-15 | 2012-07-31 | Inside Secure | Modular reduction using a special form of the modulus |
US8422685B2 (en) | 2008-02-26 | 2013-04-16 | King Fahd University Of Petroleum And Minerals | Method for elliptic curve scalar multiplication |
EP2124382A1 (de) * | 2008-05-20 | 2009-11-25 | Siemens Aktiengesellschaft | Verfahren zum verschlüsselten Datenaustausch und Kommunikationssystem |
JP5233449B2 (ja) * | 2008-07-02 | 2013-07-10 | 日本電気株式会社 | 署名生成装置、ならびに、署名検証装置 |
US20140314229A1 (en) * | 2011-12-09 | 2014-10-23 | Morpho | Cryptography on a simplified elliptical curve |
FR2946819B1 (fr) * | 2009-06-16 | 2011-07-01 | Sagem Securite | Cryptographie sur une courbe elliptique. |
US20170207918A1 (en) | 2009-06-16 | 2017-07-20 | Morpho | Cryptography on an elliptical curve |
WO2011033672A1 (ja) | 2009-09-18 | 2011-03-24 | 株式会社東芝 | 演算装置、方法およびプログラム |
US8548160B2 (en) * | 2010-01-13 | 2013-10-01 | Microsoft Corporation | Determination of pairings on a curve using aggregated inversions |
US8385541B2 (en) * | 2010-02-18 | 2013-02-26 | King Fahd University Of Petroleum And Minerals | Method of performing elliptic polynomial cryptography with elliptic polynomial hopping |
US8189775B2 (en) * | 2010-02-18 | 2012-05-29 | King Fahd University Of Petroleum & Minerals | Method of performing cipher block chaining using elliptic polynomial cryptography |
US8331558B2 (en) * | 2010-02-18 | 2012-12-11 | King Fahd University Of Petroleum And Minerals | Method of cipher block chaining using elliptic curve cryptography |
US8509426B1 (en) | 2010-12-01 | 2013-08-13 | King Fahd University Of Petroleum And Minerals | XZ-elliptic curve cryptography system and method |
US8699701B2 (en) | 2010-12-01 | 2014-04-15 | King Fahd University | Method of performing XZ-elliptic curve cryptography for use with network security protocols |
WO2012090289A1 (ja) * | 2010-12-27 | 2012-07-05 | 富士通株式会社 | 暗号処理装置および方法 |
US8334705B1 (en) | 2011-10-27 | 2012-12-18 | Certicom Corp. | Analog circuitry to conceal activity of logic circuitry |
US8635467B2 (en) | 2011-10-27 | 2014-01-21 | Certicom Corp. | Integrated circuit with logic circuitry and multiple concealing circuits |
CN102664889A (zh) * | 2012-04-23 | 2012-09-12 | 网经科技(苏州)有限公司 | 基于椭圆曲线的ims媒体双向加密方法 |
US10148285B1 (en) | 2012-07-25 | 2018-12-04 | Erich Schmitt | Abstraction and de-abstraction of a digital data stream |
US10795858B1 (en) | 2014-02-18 | 2020-10-06 | Erich Schmitt | Universal abstraction and de-abstraction of a digital data stream |
CN104717072A (zh) * | 2015-03-10 | 2015-06-17 | 南京师范大学 | 基于感知哈希与椭圆曲线的遥感影像认证方法 |
US10372886B2 (en) * | 2015-05-05 | 2019-08-06 | Nxp B.V. | Protecting the input/output of modular encoded white-box RSA/ECC |
US10181944B2 (en) | 2015-06-16 | 2019-01-15 | The Athena Group, Inc. | Minimizing information leakage during modular exponentiation and elliptic curve point multiplication |
EP3257002B1 (en) | 2016-02-23 | 2020-03-11 | Nchain Holdings Limited | Agent-based turing complete transactions integrating feedback within a blockchain system |
SG11201806712RA (en) | 2016-02-23 | 2018-09-27 | Nchain Holdings Ltd | A method and system for securing computer software using a distributed hash table and a blockchain |
EP3420513A1 (en) | 2016-02-23 | 2019-01-02 | Nchain Holdings Limited | System and method for controlling asset-related actions via a blockchain |
EP4167165A1 (en) | 2016-02-23 | 2023-04-19 | nChain Licensing AG | Blockchain-based exchange with tokenisation |
EP3855677A1 (en) | 2016-02-23 | 2021-07-28 | Nchain Holdings Limited | Blockchain-implemented method for control and distribution of digital content |
CN114282928A (zh) | 2016-02-23 | 2022-04-05 | 恩链控股有限公司 | 基于区块链系统结合钱包管理系统的加密密钥存储和转移 |
KR20180115768A (ko) | 2016-02-23 | 2018-10-23 | 엔체인 홀딩스 리미티드 | 블록체인으로부터 데이터의 안전한 추출을 위한 암호화 방법 및 시스템 |
CA3010116A1 (en) | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys |
BR112018016810A2 (pt) * | 2016-02-23 | 2018-12-26 | nChain Holdings Limited | método e sistema implementado por computador para criptografia de dados em um dispositivo eletrônico, dispositivo eletrônico e programa de computador |
US11146397B2 (en) * | 2017-10-31 | 2021-10-12 | Micro Focus Llc | Encoding abelian variety-based ciphertext with metadata |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6307935B1 (en) * | 1991-09-17 | 2001-10-23 | Apple Computer, Inc. | Method and apparatus for fast elliptic encryption with direct embedding |
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 |
US5497423A (en) * | 1993-06-18 | 1996-03-05 | Matsushita Electric Industrial Co., Ltd. | Method of implementing elliptic curve cryptosystems in digital signatures or verification and privacy communication |
DE69840463D1 (de) * | 1997-03-25 | 2009-03-05 | Certicom Corp | Beschleunigte Finite-Feld-Operationen auf einer elliptischen Kurve |
FR2791497B1 (fr) * | 1999-03-26 | 2001-05-18 | Gemplus Card Int | Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique |
-
1998
- 1998-12-22 JP JP36427798A patent/JP3796993B2/ja not_active Expired - Fee Related
-
1999
- 1999-12-20 CA CA002292817A patent/CA2292817C/en not_active Expired - Fee Related
- 1999-12-21 EP EP99310340A patent/EP1014617A3/en not_active Withdrawn
- 1999-12-22 US US09/468,948 patent/US6876745B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000187438A (ja) | 2000-07-04 |
CA2292817C (en) | 2004-02-17 |
CA2292817A1 (en) | 2000-06-22 |
EP1014617A2 (en) | 2000-06-28 |
EP1014617A3 (en) | 2002-08-21 |
US6876745B1 (en) | 2005-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3796993B2 (ja) | 楕円曲線暗号実行方法及び装置並びに記録媒体 | |
Costello et al. | Efficient algorithms for supersingular isogeny Diffie-Hellman | |
JP3862500B2 (ja) | 直接埋め込み方式による高速楕円曲線暗号化の方法と装置 | |
US7536011B2 (en) | Tamper-proof elliptic encryption with private key | |
US7961874B2 (en) | XZ-elliptic curve cryptography with secret key embedding | |
JP2008252299A (ja) | 暗号処理システム及び暗号処理方法 | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
US20110170685A1 (en) | Countermeasure method and devices for asymmetric encryption with signature scheme | |
JP2004304800A (ja) | データ処理装置におけるサイドチャネル攻撃防止 | |
JP2005020735A (ja) | データ処理装置におけるサイドチャネル攻撃防止 | |
JP2005195829A (ja) | 復号または署名作成におけるべき乗剰余算の計算方法 | |
TWI630545B (zh) | 非模數乘法器、用於非模數乘法的方法及計算裝置 | |
JP2004163687A (ja) | 楕円曲線暗号装置、楕円曲線暗号プログラム | |
Stogbauer | Efficient Algorithms for pairing-based cryptosystems | |
JP4598269B2 (ja) | 楕円曲線上の高速有限体演算 | |
JP4502817B2 (ja) | 楕円曲線スカラー倍計算方法および装置 | |
Sakai et al. | Simple power analysis on fast modular reduction with generalized mersenne prime for elliptic curve cryptosystems | |
JP3966714B2 (ja) | 暗号処理方法、そのプログラム及びその記録媒体 | |
Sakai et al. | Simple power analysis on fast modular reduction with NIST recommended elliptic curves | |
Bertoni et al. | Architectures for advanced cryptographic systems | |
Banoth et al. | Mathematical Foundation for Classical and Modern Cryptography | |
Al-Tuwaijry et al. | A high speed RSA processor | |
Muhaya et al. | Applying hessian curves in parallel to improve elliptic curve scalar multiplication hardware | |
JP2004053814A (ja) | 楕円曲線暗号装置及び楕円曲線暗号演算方法 | |
JP4904981B2 (ja) | 公開鍵暗号システム構築方法、暗号演算方法、および情報処理装置、並びにコンピュータ・プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041019 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041216 |
|
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: 20060328 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060410 |
|
LAPS | Cancellation because of no payment of annual fees |