JP4306829B2 - 楕円曲線上の有限体演算の加速方法 - Google Patents
楕円曲線上の有限体演算の加速方法 Download PDFInfo
- Publication number
- JP4306829B2 JP4306829B2 JP13175098A JP13175098A JP4306829B2 JP 4306829 B2 JP4306829 B2 JP 4306829B2 JP 13175098 A JP13175098 A JP 13175098A JP 13175098 A JP13175098 A JP 13175098A JP 4306829 B2 JP4306829 B2 JP 4306829B2
- Authority
- JP
- Japan
- Prior art keywords
- point
- coordinate
- points
- calculated
- coordinates
- 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 - Lifetime
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
Description
【発明の属する技術分野】
本発明は、有限体における演算を加速する方法に関し、更に詳しくは、暗号化システムで用いられるような体F2mにおいて実行される演算に関する。
【0002】
【従来の技術】
F2mの中の標数(characteristics)2の有限体は、楕円曲線の算術を効果的に実現することを可能にするために、興味をもたれている。体F2mは、F2上の次数mのベクトル空間と見ることができる。F2上のF2mの基底がいったん選択されると、F2mの元は、長さがmであり、要素がゼロ又は1であるベクトルとして表すことができる。ハードウェアでは、体の元(要素)は、長さがmのシフト・レジスタに記憶される。体の元の加法は、ベクトル表現をビット毎にXORすることによって実行され、1クロック・サイクルを要する。
【0003】
デジタル署名が、特定の当事者がメッセージを送ったことと、内容が伝送の間に変更されていないことを確認するために、用いられる。
【0004】
広く用いられている署名プロトコルの組では、送り手の秘密鍵を用いてメッセージに署名するエルガマル公開鍵署名方式を用いている。この場合、受け手は、送り手の公開鍵を用いて署名を確認することができる。
【0005】
このような方式を実現するためのプロトコルは、様々であり、広く用いられているものもある。しかし、それぞれの場合に、受け手は、署名を確認するために計算を実行することが要求される。受け手が適切な計算能力を有している場合には、これは、特に問題とはならないが、例えば、「スマート・カード」の応用例のように、受け手側の計算能力に制限が存在する場合には、計算のために、確認プロセスが遅延することになる。公開鍵方式は、離散対数問題が扱い困難であるかのように見える多数の群を用いて実現することもできるが、特に堅固な実現方法として、有限体上の楕円曲線上の点の特性を用いるものがある。個の実現方法は、例えば、Z*pにおける実現例と比較して、比較的小さな位数の体で要求されるセキュリティが得られ、従って、署名の通信に必要となる帯域幅を減少させることができるという利点がある。
【0006】
典型的な実現例では、署名成分sは、s=ae+k(modn)という形式を有する。ここで、Pは、このシステムの予め定義されたパラメータである曲線上の点である。kは、短期的な秘密鍵、又は、セッション鍵として選択されたランダムな整数であり、対応する短期的な公開鍵R=kPを有する。aは、送り手の長期的な秘密鍵であり、対応する公開鍵aP=Qを有している。eは、メッセージmと短期的な公開鍵Rとの、SHAハッシュ関数などの、安全ハッシュである。nは、曲線の位数(オーダー、次数)である。送り手は、受け手に、m、s、Rを含むメッセージを送り、署名は、Rに対応しなければならない値R'=(sP−eQ)を計算することによって、確認される。計算された値が同一であれば、署名は、確認される。
【0007】
確認を実行するためには、多数の点の乗法を実行してsP及びeQを得なければならないが、これは、それぞれが、計算的に複雑である。
【0008】
Fqが有限体であれば、Fq上の楕円曲線は、2つのクラスに分類される。すなわち、超特異(supersingular)な曲線と、非超特異(non-supersingular)な曲線とに分けられる。Fqが標数2である、すなわち、q=2Mである場合には、これらのクラスは、次のように定義される。
【0009】
i)方程式y2+ay=x3+bx+cのすべての解の集合に、無限遠点Oと称される特別な点を加えたものが、Fq上の超特異曲線である。ここで、a、b、cは、Fqの元であり、aは、ゼロでない。
【0010】
ii)方程式y2+xy=x3+ax2+bのすべての解の集合に、無限遠点Oと称される特別な点を加えたものが、Fq上の非超特異曲線である。ここで、a、bは、Fqの元であり、bは、ゼロでない。
【0011】
これらの点の上で適切な加法を定義することにより、加法的なアーベル群が得られる。y2+ay=x3+bx+cで表される超特異な楕円曲線Eに対する2つの点P(x1,y1)とQ(x2,y2)との加法は、次のように与えられる。
【0012】
PがEに属する場合には、Eに属するすべてのEに対して、−P=(x1,y1+a)、P+O=O+P=Pと定義する。
【0013】
QがEに属し、Qと−Pとが異なる場合には、P+Qという和を表す点は、(x3,y3)と表される。ここで、x3及びy3は、次の通りである。
【0014】
【数1】
y2+xy=x3+ax2+bで表される非超特異な楕円曲線Eに対する2つの点P(x1,y1)とQ(x2,y2)との加法は、次のように与えられる。
【0015】
PがEに属する場合には、Eに属するすべてのEに対して、−P=(x1,y1+x1)、P+O=O+P=Pと定義する。
【0016】
QがEに属し、Qと−Pとが異なる場合には、P+Qという和を表す点は、(x3,y3)と表される。ここで、x3及びy3は、次の通りである。
【0017】
【数2】
超特異な曲線の方が好ましいが、その理由は、この曲線の方が、MOV攻撃に対して強いからである。E上で2つの点の和を計算するには、基礎となる体F2mにおける複数回の乗算、加算、反転演算が必要となることがわかった。また、それらの演算は、それぞれが、一連の基本的なビット演算を必要とする。
【0018】
【発明が解決しようとする課題】
エルガマル方式又はディフィ・ヘルマン方式における暗号論的な演算や、楕円曲線に関する最も暗号論的な演算を実現する際には、kP=P+P+・・・+P(Pをk回加える)を計算することが必要となる。ここで、kは、正の整数であり、PはEに属している。このためには、(x3,y3)をk−1回計算することが要求される。kの値が大きい場合には、そしてこれは、暗号への応用では必要となることが多いのであるが、これは、従来は、データ通信に対して実際的ではないと考えられてきた。kが、例えば1024ビットの大きさである場合には、kPは、Pの21024回の加算を実行することによって、計算されることになる。
【0019】
更に、乗法群の場合には、乗算と反転演算とは、極めて計算的に集約的である。体の反転演算は、体の乗算よりも更に費用がかかる。2つの点を加算するときに必要となる反転演算は、射影座標を用いることによって除去することができる。しかし、2つの点の加法公式は、アフィン座標を用いる場合よりも、より多くの回数の乗算を必要とすることになる。
【0020】
Vanstone et al., "Elliptic Curve Cryptosystems and Their Implementation", The Journal of Cryptologyには、射影座標に変換し、従って、反転計算を除去することによって、2つの点を加算する方法が記載されている。しかし、反転演算を除去したことによる全体的な速度の利得は、空間的な犠牲において得られている。P及びQを記憶するための、また更には、加算を実行する際の中間的な結果を記憶するための余分なレジスタが必要となるのである。更に、この方法は、計算において、y座標を用いることが必要となる。
【0021】
従って、本発明の目的は、上述の問題点のいくつかが解消又は克服される方法及び装置を提供することである。
【0022】
本発明の別の目的は、有限体の元を乗算する方法を提供することであり、スマート・カードなどのように、限定的な計算能力しか有していないプロセッサ上でも比較的効率的に実現できる方法を提供することである。
【0023】
本発明の更に別の目的は、楕円曲線暗号化システムにおいて、署名の確認(認証)が加速されるような方法及び方法を提供することである。
【0024】
【課題を解決するための手段】
本発明によると、体F2M上で定義された楕円曲線上の点Pの整数倍を決定する方法が提供され、この方法は、
a)数kをバイナリ・デジットkiのベクトルとして表すステップと、
b)最大でPだけ異なっている点P1及びP2の対を形成するステップと、
c)前記kiのそれぞれを選択し、前記kiのそれぞれに対して、
kiが1であるときには、点P1及びP2の対を加算して新たな点P1を形成し、点PをP1に加算して新たな点P2を形成し、新たな点を用いて、点P1及びP2の対と交換し、
kiがゼロであるときには、前記点P1を2倍して新たな点P1を形成し、点Pを加算して新たな点P2を形成し、新たな点を用いて、点P1及びP2の対と交換し、それによって、積kPが、Mはkの桁数を表すとして、点P1から、M−1のステップで得られる、ステップと、
を含んでいる。
【0025】
更に、本発明の発明者たちは、積kPの計算が点Pのy座標を用いずに行われる方法を実現した。
【0026】
【発明の実施の態様】
本発明の実施例を、添付の図面を参照することによって、以下で説明する。
【0027】
図1を参照すると、データ通信システム2は、通信チャネル14を介して接続されている1対の通話者である、送り手10と受け手12とを含む。通話者10、12のそれぞれは、デジタル情報を処理して以下で説明するようにチャネル14を介して伝送する準備をする、暗号化/復号化ユニット16を含む。暗号化/復号化ユニットは、他の機能に加えて、鍵交換プロトコルと暗号化/復号化アルゴリズムとを実現している。
【0028】
モジュール16は、その概略が図2に示されているが、鍵の交換と生成とを含む計算を実行する算術ロジック・ユニット20を含む。秘密鍵レジスタ22は、秘密鍵dを含み、この秘密鍵dは、例えば、155ビットのデータ・ストリングとして乱数生成器24から生成され、公開鍵レジスタ26に記憶されている公開鍵を生成するのに用いられる。ベース・ポイント・レジスタ28は、楕円曲線内に存在し、155ビットのデータ・ストリングとして、それぞれの座標(x,y)を有するように選択されたベース・ポイントPの座標を含む。データ・ストリングは、それぞれが、バイナリ・デジットから成るベクトルであり、それぞれのデジットは、座標の正規基底表現での有限体の元の係数である。
【0029】
選択された楕円曲線は、一般的に、y2+xy=x3+ax2+bという形式であり、この曲線のパラメータ、すなわち、係数a及びbは、パラメータ・レジスタ30に記憶されている。レジスタ22、24、26、28、30の内容は、必要に応じて、CPU32の制御の下に、算術ユニット20に転送される。
【0030】
公開鍵レジスタ26の内容もまた、適切な要求が受信されると、通信チャネル14に対して利用可能になる。最も単純な実現例では、共通の安全ゾーンにおけるそれぞれの暗号化モジュール16は、同じ曲線及びベース・ポイントと共に動作し、それによって、レジスタ28及び30の内容は、アクセス不要となる。しかし、更なる複雑さが要求される場合には、それぞれのモジュール16は、それ自身の曲線及びベース・ポイントを選択して、この場合には、レジスタ28及び30の内容は、チャネル14に対してアクセス可能となる。
【0031】
モジュール16はまた、暗号化と鍵の交換とに用いるために、生成器24から整数kとセッション・シード(seed)とを受け取る整数レジスタ34を含む。モジュール16は、計算の間に必要に応じて一時記憶装置として用いられるRAM36を有する。
【0032】
一般的な実施例によると、送り手は、データ・ストリングを組み立てるが、これには、送り手の公開鍵Q、メッセージm、送り手の短期的な公開鍵R、送り手の署名成分が含まれている。組み立てられると、データ・ストリングは、チャネル4上を、目的の受け手12に向けて送られる。
【0033】
単純のために、送り手10の署名成分sは、上述のように、s=ae+k(modn)の形式を有している。もちろん、これ以外の署名プロトコルを用いてもよい。署名を確認するためには、sP−eQを計算し、Rと比較しなければならない。
【0034】
従って、受け手の第1のステップは、ストリングからQの値を検索することである。メッセージmと点Rの座標とから、ハッシュ値eも計算することができる。受け手は、次に、sP及びeQを計算することによって、確認を行うことができる。
【0035】
sP又はeQの計算を加速するためには、受け手は、次の方法を採用し、新たな点sPの座標を計算することにより、基礎となる体F2 mにおける複数の乗算、加算及び反転演算の実行を回避する。受け手は、図3に示されている「2倍して加算」(double and add)の方法を用いることによって、sPを計算する。
【0036】
図3を参照すると、点kPを導くために楕円曲線E上の点Pに値kを乗算するための「2倍して加算」の方法を図解している本発明の1つの実施例が実現されている。まず最初に、kをそのバイナリ形式で表現する。次に、連続的な一連の点の対(mP,(m+1)P)が設定される。kのそれぞれの連続的なデジットが考察され、kのバイナリ表現においてゼロの値のデジットが生じると、点の対の第1のものが、2倍され、点の対の第2のものに1が加算される。すなわち、(mP,(m+1)P)から、(2mP,(2m+1)P)が計算される。kのバイナリ表現において1の値のデジットが生じると、対の第1が、点の先の対の和から形成され、対の第2のものが、対の第1のものに1を追加することによって、形成される。すなわち、(mP,(m+1)P)から、((2m+1)P,(2m+2)P)を計算する。
【0037】
これは、次の短い例によって説明することにする。k=23とする。このkの値は、バイナリ形式では、対(11011)として表すことができる。上述の規則を点(P,2P)の対に適用すると、連続的な点のシーケンス(2P,3P)、(5P,6P)、(11P,12P)、・・・、(23P,24P)が得られる。従って、この対の第1のものが、要求される点である。
【0038】
このように、最終的な結果23Pが、体における1対の点に対して一連の「2倍して加算」の演算を実行することによって、得られる。ここで、与えられた対における点の対は、Pだけ異なっている。更に、「2倍して加算」演算の数は、最大で、kのビット数から1少ない。すなわち、(m−1)回である。この「2倍して加算」の方法は、kの大きな値に対しては、プロセッサが実行する演算の数を減少させる点で、著しい長所を有している。これは、従来技術の説明において述べた、1つの点Pに対するk回の2倍及び加算の実行と比較して対照的である。
【0039】
sP及びeQの計算に戻ると、受け手は、上述の実施例を適用して、F2m上で定義されている非超特異な楕円曲線y2+xy=x3+ax2+bに対して、sPを計算する。
【0040】
P1=(x1,y1)及びP2=(x2,y2)であり、P1(≠±P2)とP2とが、曲線Eの上の点である場合には、P1+P2=(x3,y3)と定義することができる。ここで、x3は、次のように表される。
【0041】
【数3】
x3=λ2+λ+x1+x2+a
また、曲線の勾配は、λ=(y2+y1)/(x2+x1)によって与えられる。
【0042】
同様にして、−P2=(x2,y2+x2)及びP1−P2=(x4,y4)である場合には、x4は、次のように表される。
【0043】
【数4】
x4=λ ̄2+λ ̄+x1+x2+a=λ2+x/(x1+x2)2+λ+x2/(x1+x2)+x1+x2+a
また、λ ̄=(y2+x2+y1)/(x2+x1)=x2/(x2+x1)+λである。x3とx4とを加算すると、次の式が得られる。
【0044】
【数5】
x3+x4=x/(x1+x2)2+x2/(x1+x2)=x1x2/(x1+x2)2
(P1+P2)のx座標であるx3を計算するには、P1、P2、(P1−P2)のx座標だけが必要である。しかし、この計算は、反転演算を必要とするので、最適に効率的ではない。y座標がこの計算において不要であることには注意すべきである。
【0045】
図2を再び参照すると、kPの値は、「2倍して加算」の方法を用いて、計算される。点の新たな対が計算されるときには、上述の数式5の加算公式が用いられ、これは、m回実行される。
【0046】
従って、我々は、x1、x2、x4を含むx3の公式を有している。不運にも、この公式は、反転演算を含み、これには費用がかかる。この方程式は、次のように修正することができる。ここで、x1、x2、x3が、x1/z1、x2/z2、x3/z3によって与えられるとする。ここで、x1、x2、x3、z1、z2、z3は、2倍して加算のアルゴリズムの間に維持される値である。次にこれらの表現を数式5に代入すると、次が成立する。
【0047】
【数6】
従って、x3=x4(x1z2+x2z1)2+x1x2z1z2とすると、z3=(x1z2+x2z1)2である。我々は、図3の「2倍して加算」のアルゴリズムを、この新たな表現を用いて実行し、アルゴリズムのほとんどに対して、反転の計算を回避することができる。
【0048】
上のx3及びz3に対する式から、x3は、最大でも4回の乗法演算を実行することによって計算できることがわかる。
【0049】
点P1及びP2の和は、x3によって表現することができ、z3は、x座標に関する比較的費用のかかる反転演算を実行する必要なく得られ、最大で4回の乗法演算と2回の平方演算とを用いて計算できる。残りの加法及び平方演算は、計算能力の観点から、比較的費用がかからない。(x1z2+x2z1)2の項の計算は、括弧の中の値の正規基底の巡回シフトによって得られ、これは、汎用プロセッサが比較的容易に実行できるものである。アルゴリズムの最後には、必要であれば、元の表現に変換によって戻ることもできる。
【0050】
再び図3を参照すると、点P(x1,y1)を2倍するためには、2(x1,y1)=(x3,y3)として、楕円曲線の方程式が上述のようにF2 m上のy2+xy=x3+ax2+bと与えられる場合には、点2Pのx座標は、x3=x1 2+b/x1 2と表される。射影座標を用いてこの座標を表すと、x3=x1 4+bz1 4であり、z3=(x1z1)2、又は、x3=(x1+b1/4z1)である。
【0051】
bを比較的小さくすることによって、計算的に比較的高価な演算を、z3の項に対する約1回の乗算に減少させることができる。我々は、b1/4を予め計算してあるので、最後の数式に従って、x3を計算することができ、従って、平方の数を減らすことができる。そのようにする代わりに、先に通常の表現方法で記載したように、x1 4及びz1 4の計算は、それぞれの値の表現を2サイクル分だけシフトすることによって得られ、一方、(x1z1)2は、x1z1を1サイクル分シフトすることによって得られる。
【0052】
先に下線を付けた「2倍及び加算」の図3に示した方法は、F2 m上に定義されたmビットのスカラ値k及びkPの計算に対して、高々(m−1)回の2倍及び加算を必要とすることが、分かる。上記の説明から、楕円曲線上の点における2倍演算は、高々2つの乗算演算によって実行され、一方、加算演算は、高々4回の乗算演算によって実行される。このように、本発明の方法を用いてkPのx座標を計算するために、高々6回の(m−1)の乗算演算を行えばよい。
【0053】
x値が計算されると、上記したように、y座標も決定される。しかしながら、各x座標に対して、高々2つのy座標が存在するだけである。例えば、点24Pを得るための最終ステップにおいて、点23Pと点Pとが既知であり、したがって、24Pは、24P=23P+Pとして表すことができる。点A=23PのX線座標x23が既に上記したように得られていると仮定する。そして、楕円曲線の方程式Eにx23を代入して得られた2次方程式を解くことによって、2つの点A(x23,y23 (1))及び点B=(x23,y23 (2))に対応して2つのy値が得られる。次に、計算24P=P+23Pにより得られたX座標x24を楕円曲線の方程式に代入することにより、2つの点(x24,y24 (1))及び(x24,y24(2))が得られる。そしてこれらの2つの点は記憶される。点A+Bに点Pを加算するために、元の点加算を用いて対応する点A+P=(xa,ya)及び点B+P=(xb,yb)をそれぞれ生成する。点(xa,ya)は、点(x24,y24 (1))及び(x24,y24 (2))とそれぞれ比較される。一致する点が無い場合は、点(xb,yb)は間違っている点であり、それ以外の場合は、点(xb、yb)は正しい点である。このように、点Pの乗算がy座標の値を必要としないで簡単に計算でき、さらに、y座標は、必要に応じて、計算の最終段階で得ることができることは、明らかであろう。
【0054】
したがって、例えば、楕円曲線に関するエルガマル方式がr=kP=(x,y)を計算する必要があることは先に説明したとおりであるが、この場合を参照すると、y座標をドロップし、メッセージm及びx座標のハッシュe=h(m//x)を生成することができる。送信側はつぎに、署名s及びハッシュeを含むメッセージを受信側に送信する。サインsは、modnのs=(de+k)の形態であり、dは送信側の秘密鍵であり、kは送信側によって生成されたランダム数である。その後、受信側は、sP−eQ=rを計算することによって、署名の有効性を判定する。sP及びeQのいずれも、本発明の「2倍及び加算」方法によって計算することができる。sP及びeQのx値はそれぞれ、2つの可能性のあるy値、即ち(x1,y1 (1))、(x1,y1 (2))及び(x2,y2 (1))、(x2,y2 (2))におけるy値を生成するが、これらは楕円曲線の方程式Eに代入されるときに生成される。これらの点の配列の間で点減算が実行されると、正しいy値が適切なマッチングrを生成する。これらの代入のいずれによってもマッチングrが生成されない場合は、署名は無効である。
【0055】
図4を参照すると、この図には、図3に関連して説明した方法、及び所定の点P=(x,y)、並びに(k−1)Pのx座標x*(*は反転を表す)及びkPのx座標x'により導出されたkPのy座標を決定するための別の方法の概略図が、番号50によって示されている。図3に関連して明らかなように、kPのx座標を計算する上で(k−1)Pのx座標も計算される。
【0056】
したがって、y'を得るために楕円曲線の方程式に最初に代入を行うときには、点(x',y')がこの曲線上に存在する。次に、ステップ54において、点Qを(x',y')に割り当て、そして、単一の点減算55によって、点Q−Pを計算する。得られたx座標x''は、ステップ56において、(k−1)のx座標x*と比較され、x''=x*の場合はy'がkPのy座標となり、そうでない場合はy'は−kPのy座標となる。この方法は、0<k<点Pの順位のときに実行できることに留意すべきである。
【0057】
kPを計算するために本発明の方法を用いることにより、kP及び(k+1)P上のx座標をそれぞれ得ることができるので、(k+1)Pを計算することも可能である。この場合、y座標は、Q+P=(x'',y'')を計算してx''を(k+1)Pのx座標と比較することによって、得ることができる。
【0058】
図5を参照すると、本発明の実施例の、楕円曲線署名の確認への別の応用例が参照番号70によって、示されている。第1の通話者10が秘密鍵であるランダムな整数dと点Q=dPの計算から導かれる対応する公開鍵Qとを含むと再び仮定する。メッセージMに署名するために、ハッシュ値eがハッシュ関数Hを用いて、メッセージMから計算される。次に、ランダムな整数kが、秘密セッション鍵として選択される。対応する公開セッション鍵kPがランダムな整数kから計算される。第1の通話者は、次に、点kPのx座標を、整数zとして表し、次に、第1の通話者成分r=zmodnを計算する。
【0059】
次に、第2の署名成分s=k-1(e+dr)modnも計算される。署名成分s及びrとメッセージMとが、次に第2の通話者12に送信される。第2の通話者12がメッセージM上の署名(r,s)を確認するために、第2の通話者は、第1の通話者10の公開鍵Qを参照する。メッセージMのハッシュe'が、e'=H(M)となるように、ハッシュ関数を用いて、計算される。値c=s-1modnも計算される。次に、整数値u1及びu2が、u1=e'cmodn及びu2=rcmodnとなるように計算される。署名を確認するために、値u1P+u2Qが計算されなければならない。Pは知られており、システム全体のパラメータであるので、値u1Pが、予め計算されていたPの整数倍を用いて、迅速に計算される。例えば、これらの値は、Pの2倍の予め記憶されているテーブルである2P、4P、8Pなどから合成される。しかし、他方で、点Qは、現在値であり、ユーザごとに変動するので、u2Qの値は、計算するのにいくらかの時間を要し、一般的に、予め計算しておくことはできない。
【0060】
しかし、本発明による方法を用いることによって、署名の確認は、著しく加速される。通常は、点R=u1P+u2Qが計算される。点R(x,y)の体の元xは、整数zに変換され、値v=zmodnが計算される。v=rであれば、署名は有効である。
【0061】
また、u2のモジュラー反転u2*=u2 -1が計算される場合にu2Qを計算する「2倍して加算」を利用することができ、Rを、u2(u1u2*P+Q)として、すなわち、恒等式であるu2u2*=1を用いることによって、表すことができる。u1u2*の値は、整数であり、従って、容易に計算することができる。このように、点u1u2*Pは、容易に計算できて、Pの整数倍に関して予め記憶されている値から作成することができる。点Qは、次に、点u1u2*Pに加算されるが、これは、1回の加算であり、新たな点R'を得る。
【0062】
このようにして、署名を確認するために、受け手は、u2R'の値のx座標を決定すればよいだけである。この計算は、図3を参照して既に説明した「2倍して加算」の方法を用いて実行される。もしこれがrに等しい場合には、署名は確認される。結果的な値は、点u1P+u2Qのx座標である。値v=xmodnが計算され、rに対して確認される。この方式では、y座標は、署名生成や確認には用いられていないが、これは、計算が必須ではないからである。しかし、x及びy座標の両方に対する別の方式をこの場合に用いることができ、その場合は、y座標は、既に述べたように導かれ、与えられたx座標に対応する2つのy座標が計算されて、それぞれが、署名の確認のために用いられる。どちらもこの比較を満足することがなかった場合には、署名は、無効である。すなわち、確認が点R=U1P+U2Qの計算を必要としないからである。これは、次のように行われる。図3の「2倍して加算」かE(Fp)かのどちらかを用いることによって、Qのx座標だけを送信し、U2Qのx座標だけを計算する。このx座標に対応する両方の点を試してみて、どちらによって確認がなされるかを見る。
【0063】
図1に戻ると、kPの形式の鍵が、通話者の間で送信され帯域幅を減少させると、送り手は、kPの座標の一方だけを送信し、他方の座標は受け手において計算することが可能である。例えば、体の元がF2 155に対して、155ビットである場合には、他方の座標の正しい値の1ビットである識別子もまた、送信されうる。これによって、第2の座標が受け手によって計算され、識別子から正しいものが識別される可能性が生じる。
【0064】
従って、図1を参照すると、送り手10は、最初に、受け手12の公開鍵dPとして座標x0とy0の座標の1ビットとを表すビット・ストリングを検索する。
【0065】
送り手10は、レジスタ30に曲線のパラメータを有しているので、座標x0と曲線パラメータとを用いて、算術ユニット20から、他方の座標y0の可能性のある値を得る。
【0066】
y2+xy=x3+ax2+bの形式の曲線と座標x0との場合には、y0に対して可能性のある値y1及びy2は、方程式y2+x0y=x0 3+ax0 2+bの根である。
【0067】
算術ユニット20において、yに関して解くことにより、2つの可能性のある値が得られ、情報の送信ビットとの比較によって、どちらの値がyの適切な値であるかが示される。
【0068】
第2の座標(y0)の2つの可能な値は、x0だけ異なっている。すなわち、y1=y2+x0である。y0の2つの値がx0だけ異なるので、y1とy2とは、1がx0の表現において生じる場合には、常に異なる。従って、送信される追加的なビットは、これらの位置の1つから選択され、y0の値の対応するビットの検査は、2つの根のどちらが適切な値であるかを示す。
【0069】
受け手10は、156ビットだけが検索される場合でも、このようにして、公開鍵dPの座標を生成することができる。
【0070】
セッション鍵kPを受け手12に送信する際にも同様の効率が実現できるが、この理由は、送り手10は1つの座標x0と、y0の選択された識別ビットとを送るだけでよいからである。受け手12は、次に、y0の可能な値を再構成して、適切な1つを選択する。
【0071】
体F2mにおいては、2a=0であるから、二次公式を用いてyについて解くことは不可能である。従って、他の技術を用いる必要があり、特に、算術ユニット20をこれを効率的に実行するように適応させる。
【0072】
一般には、x0がゼロでないと仮定すると、y=x0zである場合には、x0 2z2+x0 2z=x0 3+ax0 2+bである。これは、z2+z=x0+a+b1/x0 2=cとして書くことができる。すなわち、z2+z=cである。
【0073】
mが奇数である場合には、z=c+c4+c16+・・・+c2m-1か、又は、z=1+c+・・・+c2m-1かのどちらか一方であり、y0の2つの可能性のある値を提供する。
【0074】
mが偶数でありc2gの形式の項を用いる場合にも、類似の解が存在する。
【0075】
これは、正規基底のF2mのと共に用いるのに特に適している。
【0076】
上述のように、体の元が正規基底として表されている場合には、体F2mの元のgのベキ乗を作ることは、g重の巡回シフト(g fold cyclic shift)によって達成することができる。
【0077】
従って、zのそれぞれの値は、得られたy0の値をシフト及び加算することによって、計算することができる。値の中の正しい1つは、送信された追加的なビットによって決定される。
【0078】
従って、F2mにおいて正規基底表現を用いることによって、座標y0を回復するのに用いられるプロトコルが単純化される。
【0079】
P=(x0,y0)が体F2m上で定義された楕円曲線E:y2+xy=x3+ax2+bの上の点である場合には、x0がゼロである場合には、y0はゼロであると定義される。x0がゼロではない場合には、y0は、体の元y0x0 -1の最下位ビットであると定義される。
【0080】
Pのx0のx座標とビットy0とは、送り手10と受け手12との間で伝送される。y座標であるy0は、次のようにして回復される。
【0081】
1.x0がゼロである場合には、y0は、パラメータ・レジスタ30に記憶されている体の元bのベクトル表現を1つの位置だけ左へ巡回的にシフトさせることによって得られる。すなわち、b=bm-1bm-2・・・b1b0である場合には、y=bm-2・・・b1b0bm-1である。
【0082】
2.x0がゼロでない場合には、次を実行する。
2.1 体F2 mにおいて、元c=x0+a+bx0 -2を計算する。
2.2 cのベクトル表現をc=cm-1cm-2・・・c1c0とする。
2.3 次の数式7のように設定することによって、体の元z=zm-1zm-2・・・z1z0を構成する。
【0083】
【数7】
2.4 最後に、y0=x0・zを計算する。
【0084】
x0 -2の計算は、上述したように、算術ユニット20において容易に行うことができ、y0の計算は、乗算器48から得ることができる。
【0085】
上述の例では、適切なy0の値の識別は、1ビットを送信して、得られた根の値を比較することによって得られた。しかし、他のインジケータを用いて、値のうちの適切な一方を識別することもでき、演算は、体GF(2m)における楕円曲線を用いた暗号化には限定されない。例えば、体がZpp=3(mod4)として選択される場合には、適切な値に関連するルジャンドル(Legendre)記号を送信して、適切な値を指定することもできる。また、Zpの元の組を更に1対の部分集合に分割して、yが一方の部分集合に含まれる場合には、−yは、他方に含まれるとすることもできる。ただし、yはゼロではない。任意の値を次にそれぞれの部分集合に割り当てて、座標x0と共に送信し、どちらの部分集合にy0の適切な値が位置するかを指示するようにすることもできる。従って、y0の適切な値を決定することができる。部分集合を間隔として配列しy0の適切な値の識別を容易にするような適切な表現を与えることもできる。これらの方法のどれか1つを座標に適合させることもできる。
【0086】
これらの技術は、楕円曲線を用いる暗号化に特に適してはいるが、任意の代数曲線と共に用いることが可能であり、曲線上の点の座標が手員層されなければならない誤り訂正コーディングなど、別の分野にも応用できる。
【0087】
従って、有限体GF2 mの中の楕円曲線を用い、また、正規基底表現を用いることにより、楕円曲線を用いた暗号化に必要な計算を効率的に実行することが可能になる。これらの演算は、ソフトウェアにおいてもハードウェアにおいても実現することができ、計算の構成を、ハードウェアにおいて実現された有限体の乗算子(multiplier)を用いて、特に効率的にすることができる。
【0088】
本発明は、従って、暗号化方法及びシステムに関係し、特に、楕円曲線暗号化方法及びシステムに関係する。そこでは、有限体の元が、プロセッサにおいて、効率的な態様で乗算される。本発明の暗号化システムは、適切にプログラムされた汎用コンピュータなどの任意の適切なプロセッサによって構成することができる。
【図面の簡単な説明】
【図1】データ通信システムの概略図である。
【図2】暗号化/復号化システムの概略図である。
【図3】点の整数倍の計算のための流れ図である。
【図4】y座標を取り除くことを示す流れ図である。
【図5】楕円曲線署名の確認への本発明の実施例の別の応用例を示している。
Claims (14)
- 有限体上で定義された楕円曲線上の点Pのk重の整数倍(k-fold multiple)kPの座標(x,y)を、算術ロジック・ユニットと計算において用いられる値を記憶するレジスタとを有する暗号化/復号化ユニット(16)を用いて計算する方法であって、
(a)前記算術ロジック・ユニットが、前記レジスタから点Pを取得し、kのバイナリ表現を取得し、Pだけ異なる一対の点を表すバイナリ・デジットのベクトルに対して2倍及び加算演算を連続的に実行して一対の点のx座標の値を取得する際にkのそれぞれの連続的なデジットを調べるステップであって、前記一対の点の一方はkPに対応し、他方はkPからPだけ異なる点である[k−1]P又は[k+1]Pのいずれかに対応する、ステップと、
(b)前記算術ロジック・ユニットが、前記一方の点であるkPのx座標であるx’を前記楕円曲線に代入し、前記楕円曲線上の点kPのy座標である値y’を決定するステップと、
(c)前記算術ロジック・ユニットが、前記一方の点であるkPを表す座標x’及びy’を有する点の少なくとも一方を、前記一方の点にPを加算する又は前記一方の点からPを減算することにより変更し、座標x”及びy”を有する変更された点を取得するステップと、
(d)前記算術ロジック・ユニットが、前記変更された点と前記他方の点[k−1]P又は[k+1]Pとを比較し、これらの点が対応するかどうかを判断するステップと、
(e)前記算術ロジック・ユニットが、前記他方の点に対応する座標を有する変更された点を提供するy座標の値を、前記一方の点kPのy座標として決定するステップと、
(f)前記算術ロジック・ユニットが、前記y座標を選択し、前記暗号化/復号化ユニット(16)の動作において前記点Pのk重の整数倍の座標(x,y)を出力するステップと、
を含むことを特徴とする方法。 - 請求項1記載の方法において、ステップ(a)は、kの1ビットと1対の点であるdP及び(d+1)Pとを用いて、
前記ビットが0に等しいときには、1対の点である2dP及び(2d+1)Pを計算するステップと、
前記ビットが1に等しいときには、1対の点である(2d+1)P及び(2d+2)Pを計算するステップを、
含むことを特徴とする方法。 - 請求項2記載の方法において、
前記点2dPはdPを2倍することによって計算され、前記点(2d+1)PはPを前記点2dPに加算することによって計算され、
前記点(2d+1)PはdPと(d+1)Pとを加算することによって計算され、前記点(2d+2)PはPを(2d+1)Pに加算することによって計算されることを特徴とする方法。 - 請求項1記載の方法において、前記点Pは前記2倍及び加算演算の間は射影座標を用いて表されることを特徴とする方法。
- 請求項1記載の方法において、前記変更された点と前記他方の点と比較するステップは、前記変更された点と前記他方の点とのx座標を比較するステップを含むことを特徴とする方法。
- 点の整数倍kPから得られるrと秘密鍵と署名されたメッセージとの組合せから得られるsとの署名成分を有するデジタル署名を確認する方法であって、sPの値とeQの値とを計算するステップと、sP−eQを計算するステップと、sP−eQ=rであるかどうかをチェックするステップとを含む、デジタル署名を確認する方法であって、
請求項1ないし請求項5のいずれかの請求項に記載の方法を用いて、sP及びeQの少なくとも一方を計算するステップを含むことを特徴とする方法。 - 請求項1ないし請求項5のいずれかの請求項に記載の方法を用いて前記署名において用いられる点の整数倍を計算することを特徴とする楕円曲線デジタル署名計算方法。
- 暗号化/復号化ユニット(16)を含み、有限体上で定義された楕円曲線上の点Pのk重の整数倍(k-fold multiple)kPをx座標及びy座標を有する点を用いて決定する計算機であって、
(a)Pだけ異なる一対の点に対して2倍及び加算演算を連続的に実行して、一対の点のx座標の値を取得する手段であって、前記一対の点の一方はkPに対応し、他方はkPからPだけ異なる点である[k−1]P又は[k+1]Pのいずれかに対応する、手段と、
(b)前記一方の点であるkPのx座標であるx’を前記楕円曲線に代入し、前記楕円曲線上の点kPのy座標である値y’を決定する手段と、
(c)前記一方の点であるkPを表す座標x’及びy’を有する点の少なくとも一方を、前記一方の点にPを加算する又は前記一方の点からPを減算することにより変更し、座標x”及びy”を有する変更された点を取得する手段と、
(d)前記変更された点と前記他方の点[k−1]P又は[k+1]Pとを比較し、これらの点が対応するかどうかを判断する手段と、
(e)前記他方の点に対応する座標を有する変更された点を提供するy座標の値を、前記一方の点kPのy座標として決定する手段と、
を含むことを特徴とする計算機。 - 請求項8記載の計算機において、前記x座標の値を取得する手段は、kの1ビットと1対の点であるdP及び(d+1)Pとを用いて、
前記ビットが0に等しいときには、1対の点である2dP及び(2d+1)Pを計算し、
前記ビットが1に等しいときには、1対の点である(2d+1)P及び(2d+2)Pを計算することを特徴とする計算機。 - 請求項9記載の計算機において、
前記点2dPはdPを2倍することによって計算され、前記点(2d+1)PはPを前記点2dPに加算することによって計算され、
前記点(2d+1)PはdPと(d+1)Pとを加算することによって計算され、前記点(2d+2)PはPを(2d+1)Pに加算することによって計算されることを特徴とする計算機。 - 請求項8記載の計算機において、前記点Pは射影座標を用いて表されることを特徴とする計算機。
- 請求項8記載の計算機において、前記計算する手段は、前記変更された点と前記他方の点とのx座標を比較するように動作することを特徴とする計算機。
- 請求項8記載の計算機において、
kPのy座標から識別子を取得する手段と、
前記識別子とkPのx座標とを用いてkPを表す手段と、
を更に含むことを特徴とする計算機。 - 請求項13記載の計算機において、前記識別子はkPのy座標の中の単一ビットであることを特徴とする計算機。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB9713138.7A GB9713138D0 (en) | 1997-06-20 | 1997-06-20 | Accelerated finite field operations on an elliptic curve |
GB9713138.7 | 1997-06-20 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008284464A Division JP4875686B2 (ja) | 1997-06-20 | 2008-11-05 | 楕円曲線上の有限体演算の加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11161169A JPH11161169A (ja) | 1999-06-18 |
JP4306829B2 true JP4306829B2 (ja) | 2009-08-05 |
Family
ID=10814722
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13175098A Expired - Lifetime JP4306829B2 (ja) | 1997-06-20 | 1998-05-14 | 楕円曲線上の有限体演算の加速方法 |
JP2008284464A Expired - Lifetime JP4875686B2 (ja) | 1997-06-20 | 2008-11-05 | 楕円曲線上の有限体演算の加速方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008284464A Expired - Lifetime JP4875686B2 (ja) | 1997-06-20 | 2008-11-05 | 楕円曲線上の有限体演算の加速方法 |
Country Status (2)
Country | Link |
---|---|
JP (2) | JP4306829B2 (ja) |
GB (1) | GB9713138D0 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2243761C (en) * | 1998-07-21 | 2009-10-06 | Certicom Corp. | Timing attack resistant cryptographic system |
KR20030078350A (ko) * | 2002-03-29 | 2003-10-08 | 박근수 | 타원 곡선 암호에서 단위원의 n-제곱근 함수를 이용한프로베니우스 전개 방법 |
KR100817048B1 (ko) | 2005-03-05 | 2008-03-26 | 삼성전자주식회사 | 여러 가지 포인트 표현을 기반으로 한 ecc에서 dfa대책을 위한 암호화 방법 및 장치 |
KR100850202B1 (ko) | 2006-03-04 | 2008-08-04 | 삼성전자주식회사 | Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법 |
KR102019558B1 (ko) * | 2017-10-12 | 2019-09-06 | 인하대학교 산학협력단 | 내재적 인증서를 사용하는 전자서명에 대한 효율적인 서명 검증 방법 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3123820B2 (ja) * | 1992-07-27 | 2001-01-15 | 松下電器産業株式会社 | 有限可換群における演算器 |
JPH06110386A (ja) * | 1992-09-28 | 1994-04-22 | Matsushita Electric Ind Co Ltd | 楕円曲線を用いた署名、認証及び秘密通信方式 |
-
1997
- 1997-06-20 GB GBGB9713138.7A patent/GB9713138D0/en active Pending
-
1998
- 1998-05-14 JP JP13175098A patent/JP4306829B2/ja not_active Expired - Lifetime
-
2008
- 2008-11-05 JP JP2008284464A patent/JP4875686B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2009042787A (ja) | 2009-02-26 |
GB9713138D0 (en) | 1997-08-27 |
JP4875686B2 (ja) | 2012-02-15 |
JPH11161169A (ja) | 1999-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6782100B1 (en) | Accelerated finite field operations on an elliptic curve | |
AU677269B2 (en) | A cryptographic method | |
EP0874307B2 (en) | Accelerated finite field operations on an elliptic curve | |
EP0503119B1 (en) | Public key cryptographic system using elliptic curves over rings | |
US7603560B2 (en) | Method and apparatus for digital signature authentication | |
US7961873B2 (en) | Password protocols using XZ-elliptic curve cryptography | |
US7499544B2 (en) | Use of isogenies for design of cryptosystems | |
EP0997016B1 (en) | Method and apparatus for fast elliptical encryption with direct embedding | |
CA2130250C (en) | Digital signature method and key agreement method | |
US6618483B1 (en) | Elliptic curve encryption systems | |
Paar et al. | Introduction to public-key cryptography | |
US7912216B2 (en) | Elliptic curve cryptosystem optimization using two phase key generation | |
US7218735B2 (en) | Cryptography method on elliptic curves | |
JP4875686B2 (ja) | 楕円曲線上の有限体演算の加速方法 | |
EP0952697B1 (en) | Elliptic curve encryption method and system | |
Amounas | Elliptic curve digital signature algorithm using Boolean permutation based ECC | |
JP4598269B2 (ja) | 楕円曲線上の高速有限体演算 | |
CN110752931A (zh) | 一种sm2椭圆曲线公钥密码体制优化方法 | |
US20240223368A1 (en) | A system and a method for performing operations | |
WO2000052877A2 (en) | Method and apparatus for finite field basis conversion | |
CN115174052A (zh) | 一种基于sm9签名的适配器签名生成方法及装置 | |
JP2007212768A (ja) | 楕円曲線暗号における事前計算テーブル作成装置 | |
Radovnikovich et al. | EMBEDDED SOFTWARE IMPLEMENTATION OF A KEY AGREEMENT PROTOCOL USING 160-BIT ELLIPTIC CURVE | |
JP2003513312A (ja) | スカラーによる因子類の乗算のための方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050516 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050516 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071214 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080313 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080318 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080616 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080708 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081105 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20090105 |
|
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: 20090331 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090428 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120515 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120515 Year of fee payment: 3 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D02 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130515 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130515 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |