JP4598269B2 - 楕円曲線上の高速有限体演算 - Google Patents
楕円曲線上の高速有限体演算 Download PDFInfo
- Publication number
- JP4598269B2 JP4598269B2 JP2000538291A JP2000538291A JP4598269B2 JP 4598269 B2 JP4598269 B2 JP 4598269B2 JP 2000538291 A JP2000538291 A JP 2000538291A JP 2000538291 A JP2000538291 A JP 2000538291A JP 4598269 B2 JP4598269 B2 JP 4598269B2
- Authority
- JP
- Japan
- Prior art keywords
- coordinate
- point
- affine
- elliptic curve
- value
- 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
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
【0001】
〔発明の背景〕
ここでは、F2 m において標数が2の有限体を扱う。この有限体を用いれば楕円曲線に関する代数計算を効率よく実行できる。体F2 m は、F2 上でのm次元ベクトル空間として見ることができる。F2 上におけるF2 m の基底が一旦選択されると、F2 m の元が、0と1との成分からなる長さmのベクトルとして上手く表現できる。ハードウェアでは、長さmのシフトレジスターに体の元が記録されている。体の元の加算は、ベクトル表現についてビットを用いてXOR演算(Θで表す)を実行することによって行う。この演算の所要時間は、クロック周期1つ分である。
【0002】
ある所からメッセージが送信されたことと、その内容が通信中に改竄されていないこととを確認するためには、デジタル署名が使用される。
【0003】
広く使用されている署名プロトコールセットの中には、送信者の個人キーを使ってメッセージに署名する、ELGamal公開キー署名方式を使用するものがある。この方式では、受信者は、送信者の公開キーを使ってその署名を認証することができる。
【0004】
こういった方式を実行するプロトコールには色々あって、広く使われているものがいくつか存在する。ただし、いずれの場合であっても、受信者側で計算を実行して署名を認証しなければならない点については同じである。受信者側に十分な計算能力があれば、計算の必要性は取りたてて問題にはならない。しかし「スマート・カード」を利用した機器のように、受信者側の計算能力に限界のある場合には、計算をしなければならないがために認証に時間がかかってしまうことがある。
【0005】
公開キー方式は、対応しきれない程の離散的なログ問題のあるように見えるいくつかの群の1つを使って実行できるが、有限体において、楕円曲線上にある複数の点の特徴を使って実行すれば、特に目立った効果が得られる。つまり、こうすることで、例えばZp * で実行することに比べ、比較的低い次数の体で必要な安全性を得られるといった効果が生まれる。したがって、署名をやり取りするための通信帯域を、小さくできる。
【0006】
実行の際、一般に、署名部分sは、以下の式で表される。
s=ae+k(mod n)
ここで、Pは、曲線上の点であり、前もって定義されたシステムのパラメタである。kは、短期個人キーあるいはセッションキーとして選択されたランダムな整数で、対応する短期公開キーR=kPを有している。aは、送信者の長期個人キーで、相当する公開キーaP=Qを有している。eは、メッセージmと短期公開キーRとの、SHAハッシュ関数などの安全なハッシュ(secure hash )である。nは、曲線の次数である。
【0007】
送信者は、受信者に対してm、s、およびRを含んだメッセージを送る。そして、その署名を、R’=(sP−eQ)の値を求めることによって認証する。この値R’は、Rに対応しているはずであり、計算で求めたR’がRに等しければ、署名を本物であると認定できる。
【0008】
この認証を行うためには、sPとeQとを求めるために点について乗算を何度か行う必要があるが、どちらも計算は複雑である。
【0009】
Fq が有限体であると仮定すれば、Fq 上の楕円曲線はスーパーシンギュラー曲線と非スーパーシンギュラー曲線との2つの類に分けられる。また、Fq の標数を2、つまりq=2M と仮定すれば、上記の類は以下のように定義される。
(1)方程式y2 +ay=x3 +bx2 +c(ただし、a,b,c∈Fq 、a≠0)の全ての解と、無限遠点と呼ばれる特別な点Oとで、Fq 上でスーパーシンギュラー曲線を形成する。
(2)方程式y2 +xy=x3 +ax2 +b(ただし、a,b∈Fq 、b≠0)の全ての解と、無限遠点と呼ばれる特別な点Oとで、Fq 上で非スーパーシンギュラー曲線を形成する。
【0010】
これらの点について適当な加算を定義すれば、加算に関するアーベル群を得られる。y2 +ay=x3 +bx2 +cで表されるスーパーシンギュラー楕円曲線Eについて、点P(x1 ,y1 )と点Q(x1 ,y1 )との2点の加算は以下のようになる。
P(x1 ,y1 )∈Eのとき、全てのP∈Eについて、−Pを、−P=(x1 ,y1 +a),P+O=O+P=Pと定義する。
また、Q=(x2 ,y2 )∈E かつ Q≠−Pのとき、PとQとの和を表す点を(x3 、y3 )と表記する。ここで、x3 は、
【0011】
【数2】
【0012】
非スーパーシンギュラー楕円曲線であるy2 +xy=x3 +ax2 +bについて、点P(x1 ,y1 )と点Q(x1 ,y1 )との2点の加算は、以下のようになる。
【0013】
P(x1 ,y1 )∈Eのとき、全てのP∈E,O+P=P+O=Pについて、−Pを−P=(x1 ,y1 +x1 )と定義する。
【0014】
また、Q=(x2 ,y2 )∈E かつ Q≠−Pのとき、P+Qは点(x3 、y3 )である。ここで、x3 は、
【0015】
【数3】
【0016】
ここでは、この2種類の楕円曲線のうち、スーパーシンギュラー曲線の方が、MOVアタックに対して強いため好ましい。E上の2点の和を計算するには、この2点が存在する下層の体(underlying field)F2 m において乗算、加算、逆演算を行う必要のあることがわかる。さらに、これらの演算を実行するには、それぞれ基本的なビット演算を何度か実行する必要がある。
【0017】
ElGamalあるいはDiffie−Hellman方式で暗号演算を実行する際、あるいは、一般的に楕円曲線を用いて暗号演算を実行する際には、kP=P+P+…+P(Pをk回加える。ただしkは正の整数で、P∈E)を計算する必要があるが、そのためには(x3 、y3 )をk−1回計算しなければならない。暗号に応用するには一般にkが大きな値を取ることが必要であるが、大きな値のkをデータ通信に用いるのは実用的でないと今までは考えられてきた。kが大きな値、例えば1024ビットを取ると、kPを計算するにはPを21024回加えなければならない。
【0018】
しかも、乗算に関する群では、乗算および逆演算の計算量が非常に大きくなり、体における乗算よりも、体における逆演算の方がコスト高となる。2点を加える際に射影座標を採用すれば、逆演算は不用になるが、加算を実行するために必要な乗算の回数は、擬似座標を用いるときに比べ多くなる。
【0019】
バンストーンその他は、雑誌「暗号学」に掲載された論文、「楕円曲線を用いた暗号システムとその実行」("Ellpitic Curve Cryptosystems and Their Implementation" by Vanstone et al., published in The Journal of Cryptology)中で、射影座標に変換することによって逆演算を不要にして、2つの点を加える方法について記している。この方法では、逆演算をしないですむので全体の演算速度は上昇しているが、これは、装置のコンパクト性の犠牲の上に成り立っている。つまり、PとQとを記録し、さらに加算を実行する際の中間結果を記録するために余分なレジスタが必要になるのである。しかも、この方法では計算中にy座標を使わなければならない。
【0020】
〔発明の要旨〕
本発明は、上記のことを踏まえてなされ、以上で述べた欠点を克服、あるいは軽減する方法と装置とを提供することを目的の1つとしている。
【0021】
また、本発明は、スマートカード等、演算能力の限られたプロセッサでも比較的に効率よく実行することの可能な、有限体の元について乗算を実行する方法を提供することも目的としている。
【0022】
さらに本発明は、楕円曲線に基づいた暗号化方式において、署名の認証を高速化する方法と装置とを提供することも目的としている。
【0023】
本発明では、体F2 m 上で定義される楕円曲線上の点Pの倍数を決定する方法を提供し、この方法は、数値kを、2値数ki からなるベクトルとして表すステップと、差がPを越えない1対の点である点P1 および点P2 を作るステップと、ki をそれぞれ順に選択し、さらに、それぞれのki について、ki が1のときには、上記点P1 および点P2 の対を加えて新しい点P1 を形成し、点Pを点P1 に加えて新しい点P2 を形成して、これらの新しい2点で点P1 および点P2 の対を置き換え、また、ki が0のときには、上記点P1 を2倍して新しい点P1 を形成し、上記点Pを加えて新しい点P2 を形成して、これらの新しい2点で点P1 および点P2 の対を置き換え、M−1回(ただし、Mはkの桁数)の繰り返しで上記点P1 から積kPを求めるステップを含んでいる。
【0024】
さらに、本発明者は、計算中に点Pのy座標を用いないで積kPの計算を実行できる方法に基づいて、実際に計算を行った。
【0025】
以下の記述では、実施例を用いて本発明を説明する。ただし、本発明はこれらの実施例に限られるものではなく、実施例はあくまでも例にすぎない。
【0026】
〔好ましい実施の形態の詳細な説明〕
図1を参照すると、データ通信システム2は、通信路14を介して接続された送信側10と受信側12とからなる一対の通信部を有している。各通信部10・12は、それぞれに関連付けられた暗号化/解読部16を有しており、暗号化/解読部16は、以下に説明するように、デジタル情報を処理でき、通信路14を介して送信されるように、デジタル情報を生成するものである。暗号化/解読部は、キー交換プロトコル、および暗号化/解読アルゴリズム等を実行するものである。
【0027】
モジュール16は、図2に概略的に示されており、キー交換およびキー生成などの演算を行うために、算術論理部20を含んでいる。個人キーレジスタ22は、ランダム数生成部24から、例えば、155ビットのデータ列で生成される個人キーdを含んでおり、公開キーレジスタ26に記憶される公開キーを生成するために使用される。基準点レジスタ28は、各座標(x,y)で選択された楕円曲線上に位置する、基準点Pの座標を含んでおり、(x,y)は、155ビットのデータ列で表される。各データ列は2値数のベクトルであり、2値数のそれぞれは、座標の正規基底表現における、有限体の元の係数である。
【0028】
選択された楕円曲線は、y2 +xy=x3 +ax2 +bの一般式で表され、該曲線のパラメタ、すなわち、係数aおよびbは、パラメタレジスタ30に記憶される。レジスタ22,24,26,28,30の内容は、必要に応じて、CPU32の制御下において算術部20に転送されてもよい。
【0029】
公開キーレジスタ26の内容も、適切な要請を受信することにより、通信路14に供することができる。最も簡単な実行では、共通の安全な領域(secure zone )にある各暗号化モジュール16は、同一の曲線および基準点で動作するため、レジスタ28および30の内容はアクセス可能である必要はない。さらなる高度性が必要であれば、各モジュール16は、独自の曲線および基準点を選択してもよく、その場合、レジスタ28および30の内容は、通信路14にアクセス可能である必要がある。
【0030】
モジュール16は、暗号化およびキー交換で使用される上記生成部24から、セッションシードである整数kを受信する整数レジスタ34をさらに備えている。また、モジュール16は、演算中に必要に応じて一時記憶部として使用されるランダムアクセスメモリ(RAM)36を有している。
【0031】
一般的な実施の形態では、送信側は、送信側の公開キーQ、メッセージm、送信側の短期公開キーR、および送信側の署名部分sなどからなるデータ列を形成する。データ列は、形成後、通信路14を介して所望の受信者12に送信される。
【0032】
簡略化のため、送信側12の署名部分sは、上記したように、s=ae+k (mod n)の式で表されるものとするが、無論、他の署名プロトコルも使用可能である。認証のためには、署名sP−eQを演算すると共に、Rと比較する必要がある。
【0033】
したがって、受信者の最初の工程は、データ列からQの値を検索することである。ハッシュ値eも、メッセージm、および点Rの座標から演算されてもよい。これにより、受信者は、sPおよびeQの演算により認証を行える。
【0034】
sPおよびeQの計算を高速化するために、受信者は、新しい点sPの座標を以下のように計算することができ、下層の体(underlying field)F2 m における乗算、加算、および逆演算(inverses)が数回行われることを防止する。すなわち、受信者は、図3に示す、「2倍加算」方法の手段によりsPを計算できる。
【0035】
図3を参照すると、本発明の一実施形態により説明される、点kPを得るために値kで楕円曲線E上の点Pを乗算する「2倍加算」方法では、最初に、kを2値の状態で表すことにより実行される。次に、連続する点の対(mP,(m+1)P)が設定される。kの連続する桁のそれぞれが順に考慮され、kの2値表現における0値が出現すると、点の対のうち、最初の点が2倍され、次の点に1が加算される。すなわち、(mP,(m+1)P)から(2mP,(2m+1)P)が演算される。また、kの2値表現における1値が出現すると、点の対のうち、最初の点は、前回の点の対を加算することによって得られ、次の点は、最初の点に1を加算することによって得られる。すなわち、(mP,(m+1)P)から((2m+1)P,(2m+2)P)が演算される。
【0036】
これは、k=23である場合の、以下の簡単な例により説明される。kの値が、2値の対(11011)で表されるとすると、上記の規定を1対の点(P,2P)に適用することにより、(2P,3P);(5P,6P);(11P,12P)の、連続する点の数列が得られ、最終的に(23P,24P)が得られる。したがって、点の対のうち、最初の点が必要とされる点である。
【0037】
このように、ある点の対の各点が、Pだけ異なっている体で、点の対に対し上記の「2倍加算」演算を連続的に行うことにより、最終の結果である23Pが得られる。さらに、「2倍加算」演算の回数は、最大で、kのビット数より1だけ少ない回数に等しく、(m−1)回である。「2倍加算」方法は、大きな値を持つkに対して、プロセッサによる演算の回数を削減するにの優れた利点を有するものである。これは、発明の背景で説明した、単一の点Pに対してkの2倍乗算および加算を行う場合と対象的である。
【0038】
sPおよびeQの計算の説明に戻ると、受信者は、上記の実施の形態を適用し、F2 m で定義された、非スーパーシンギュラー楕円曲線E,y2 +xy=x3 +ax2 +bに対してsPを計算することができる。
【0039】
P1 =(x1 ,y1 )であり、P2 =(x2 ,y2 )である場合、P1 ≠±P2 は、曲線E上の点であるため、P1 +P2 =(x3 ,y3 )のように定義することができ、式中、
x3 =λ2 +λ+x1 +x2 +a (1)
であり、曲線の傾きは、
λ=(y2 +y1 )/(x2 +x1 )
で表すことができる。
【0040】
同様に、−P2 =(x2 ,y2 +x2 )であり、P1 −P2 =(x4 ,y4 )である場合、
x4 =(λ!)2 +(λ!)+x1 +x2 +a=λ2 +x/(x1 +x2 )2 +λ+x2 /(x1 +x2 )+x1 +x2 +a (2)
であり、式中、
(λ!)=(y2 +x2 +y1 )/(x2 +x1 )=x2 /(x2 +x1 )+λであり、x3 およびx4 を加算すると、
x3 +x4 =x/(x1 +x2 )2 +x2 /(x1 +x2 )=x1 x2 /(x1 +x2 )2 (3)
が得られる。
(P1 +P2 )のx座標x3 を演算するには、P1 、P2 、および(P1 −P2 )のx座標のみが必要ではあるが、この演算は、逆演算を必要とするため、最適に効率がよいものではない。また、これらの計算はy座標を必要としない。
【0041】
再び図2を参照すると、値kPは、「2倍加算」方法を用いて計算することができる。新しい点の対を演算する場合は、常時、上記の数式(3)の加算公式が使用され、演算はm回行われる。
【0042】
したがって、x1 、x2 、およびx4 を伴うx3 を得るための公式が得られたことになる。しかしながら、この公式は逆演算を含むものであり、コストが高くなってしまう。この公式は、以下のように変更することができ、x1 、x2 、およびx3 の値が、x1 /z1 ,x2 /z2 ,x3 /z3 で表されるとすると仮定し、x1 ,x2 ,x3 ,z1 ,z2 ,z3 が、「2倍追加」アルゴリズムで保持された値だとする。そして、これらの新しい表記を数式(3)に置換すると、以下のようになる。
【0043】
【数4】
【0044】
したがって、x3 =x4 (x1 z2 +x2 z1 )2 +x1 x2 z1 z2, とし、z3 =(x1 z2 +x2 z1 )2 とすれば、図3に示す「2倍追加」アルゴリズムを、(新しい表記を用いて)実行することができ、このアルゴリズムのほとんどにおいて逆演算を避けることができる。
【0045】
x3 およびz3 の上記式から、x3 は、最大で、4回の乗算演算を行うことによって計算できることが分かる。
【0046】
点P1 およびP2 の合計は、x3 に関して表現され、z3 は、比較的高コストな逆演算をx座標に対して行うことなく得られ、最大で4回の乗算および2回の2乗により演算できる。残余の加算および2乗の演算は、演算能力に関して比較的低コストで行われる。(x1 z2 +x2 z1 )2 の項の演算は、括弧内の値の正規基底表現の循環シフトにより得られ、これは、汎用プロセッサにより比較的簡単に行うことができる。アルゴリズムの終了時点で、必要に応じて、元の表記に転換することができる。
【0047】
再び図3を参照すると、点P(x1 ,y1 )を2倍するために、2 (x1 ,y1 )=(x3 ,y3 )とし、上記と同様に、楕円曲線Eの式が、F2 m 上でy2 +xy=x3 +ax2 +bとして得られる場合、点2Pのx座標は、
x3 =x1 2+(b/x1 2)
として表される。
【0048】
前回と同様に、座標を射影座標として表すと、
x3 =x1 4+bz1 4
z3 =(x1 z1 )2
あるいは
x3 =(x1 +√(√b)z1 )
が得られる。
【0049】
bを比較的小さくすることにより、演算的に高コストである演算処理を、z3 項に対して、略1回の乗算演算に省略することができる。最後の式にしたがって、√(√b)を事前に演算することにより、x3 を計算することができ、必要とされる2乗は2回分少なくなる。また、正規基底表現で述べたように、x1 4およびz1 4の演算は、それぞれの値の表現の2回の循環シフトによって得られ、(x1 z1 )2 は、積の1回の循環シフトにより得られる。
【0050】
上述した、図3に示す「2倍追加」方法を適用すると、mビットのスカラーに対して、F2 m 上で定義されたkPの計算は、最大で、(m−1)回の「2倍加算」演算が必要となることが分かる。上記の説明から、楕円曲線上の点に対する2倍演算は、最大で2回の乗算演算を行うことによってなされ、加算演算は、最大で4回の乗算演算を行うことによってなされる。したがって、本発明の方法を用いてkPの座標を演算するには、最大で、6回の(m−1)の乗算演算が必要となる。
【0051】
xの値を計算すれば、上記したように、y座標の値も求めることができる。しかしながら、各x座標には、最大で、2つのy座標が存在することになる。例えば、点24Pを得るための最後の工程では、24Pは23P+P=24Pで表すことができるため、23PおよびPの両点が分かることになる。点A=23Pのx座標x23が上記のように得られたと仮定すると、楕円曲線式Eにx23を置換し、得られる二次方程式を解くことにより、点A=(x23,y23 (1))、およびB=(x23,y23 (2))に対応する2つのyの値が得られる。次に、24P=23P+Pを計算することにより得られたx座標x24を、楕円曲線式に置換することにより、(x24,y24 (1))および(x24,y24 (2))の2点が得られる。このようにして得られた2点は記憶される。点A+Bには、一般的な点加算により、点Pが加算され、それぞれ対応する、A+P=(xa ,ya )、およびB+P=(xb ,yb )が得られる。これらの点が全て一致しない場合は、(xb ,yb )が正しい点となり、そうでなければ、点(xb ,yb )が正しい点となる。したがって、点Pの倍数は、y座標を知ることなしに簡単に計算することができ、さらに、必要ならば、y座標は計算の終了時に得ることができる。
【0052】
したがって、例えば、再び楕円曲線に対するElGamal方式を参照すると、r=kP=(x,y)を演算する必要がある。この場合、y座標は省略でき、メッセージmのハッシュを得て、x座標であるe=h(m//x)を得ることができる。そして、送信側は、受信者に対して、署名sおよびハッシュeを含んだメッセージを送信する。署名sは、s=(de+k)mod nの形式を有しており、dは、送信側の個人キーであり、kは、送信側により生成されたランダム数である。そして、受信者は、sP−eQ=rを計算することにより署名を認証する。sPおよびeQは共に、本発明の「2倍加算」方法により計算することができる。sPおよびeQのxの値が楕円曲線式Eに再び置換されることにより、各値から、yの2つの可能値である(x1 ,y1 (1) ),(x1 ,y1 (2) )、および(x2 ,y2 (1) ),(x2 ,y2 (2) )が得られる。これらの点の順列(パーミュテーション)間で点減法が行われた場合、正しいyにより、適切なマッチングrが得られる。これらの置換のいずれによってもマッチングrが得られない場合は、署名は認証されない。
【0053】
図4は、図3を参照して説明した方法により得られたkPのy座標を求めるさらなる方法の概略図であり、ある点P=(x,y)、(k−1)Pであるx座標xk-1 、およびkPであるx’を番号50で示している。図3でkPのx座標を演算することから示唆されるように、(k−1)Pのx座標も計算される。
【0054】
したがって、最初に、楕円曲線式に置換することにより、点(x’,y’)が該曲線上に位置するようにy’の値を得る。次に、工程54において、点Qを、(x’,y’)に指定する。そして、点Q−P=(x" ,y" )を、単一点減算(singlepoint subtraction )により完成する。得られたx座標x" を、(k−1)のx座標xk-1 と工程56で比較し、x" =xk-1 であれば、y’が、kPのy座標となり、そうでなければ、y’が、−kPのy座標となる。なお、この方法は、0<k<点Pの次数、であれば実行可能なものである。
【0055】
kPを演算する本発明の方法を使用することにより、kpおよび(k+1)P上にx座標が得られるように、(k+1)Pを演算することができる。この場合、y座標は、Q+P=(x" ,y" )を演算し、座標x" を、(k+1)Pのx座標と比較することによって求めることができる。
【0056】
図5を参照し、楕円曲線署名の認証のための、本発明の実施形態のさらなる適用を番号70により示す。上記にように、第1の通信部10は、個人キーランダム整数d、および点Q=dPを演算することによって得られた、対応公開キーQを含むものとする。メッセージmに署名するために、ハッシュ関数Hを用いて、ハッシュ値eがメッセージmから演算される。次に、ランダム整数kが、個人セッションキーとして選択される。対応公開キーkPは、ランダム整数kから計算される。そして、第1の通信部は、点kPのx座標を整数zとして表現し、第1の署名部分r=z mod nを計算する。
【0057】
その後、第2の署名部分s=k-1(e+dr) mod nも計算される。そして、署名部分sおよびr、そしてメッセージMが、第2の通信部12に送信される。第2の通信部12により署名(r,s)をメッセージMに対して認証するためには、第2の通信部12は、第1の通信部10の公開キーQを参照する。メッセージMのハッシュe’は、ハッシュ関数Hを用いて計算され、e’=H(M)となる。c=s -1 mod nの値も計算される。次に、整数値u1 とu2 とが計算され、u1 =e’c mod n、およびu2= rc mod nとなる。署名を認証するためには、u1 P+u2 Qの値を計算する必要がある。Pは知られており、システムワイドパラメタであるため、u1 Pの値は、予め計算されたPの乗数を用いて素早く演算することができる。例えば、これらの値は、2P、4P、8Pなどの、Pの倍数を予め記憶したテーブルから組み合わせて求めることができる。これに対し、点Qは流動的であり、ユーザによって変化するものであるため、u2 Qの値の演算は時間を要するものであり、一般的に、予め演算しておくことはできない。
【0058】
しかしながら、本発明に開示の方法による手段により、署名の認証を大幅に高速化することができる。通常、R=u1 P+u2 Qが演算される。点R=(x,y)の体の元xが、整数zに転換され、v=z mod n の値が演算される。v= rであれば、署名は認証されたことになる。
【0059】
また、u2 Qを演算するために、「2倍加算」の利点を使用する方法がある。u2 のモジュラー逆演算(modular inverse )が、u2 * =u2 -1 mod nと計算された場合、Rは、u2 (u1 u2 * P+Q)として表すことができ、すなわち、u2 u2 * =1の恒等式(identity)が使用される。u1 u2 * の値は整数であるため、簡単に計算できる。したがって、点u1 u2 * Pは、予め記憶された、Pの倍数の値から簡単に計算、もしくは形成できる。その後、点Qは、点u1 u2 * Pに、1回の加算により加算され、新しい点R’が得られる。
【0060】
したがって、署名を認証するためには、受信者は、u2 R’の値のx座標を求めるだけでよいことになる。この計算は、図3を参照して説明した「2倍加算」方法を用いて行うことができる。計算結果がrと等しければ、署名は認証されたことになる。得られる値は、点u1 P+u2 Qのx座標である。v=x mod nの値は演算され、rに対する認証が行われる。なお、この方式では、署名生成および認証のためにy座標は使用されていないため、演算は必要とはなっていない。しかしながら、これらの場合、xおよびy座標に対して別の方式を使用することができ、y座標は、上述した方法で得られるか、あるx座標に対応する2つのy座標を計算し、それぞれを、署名の証明する目的のために使用することができる。これらのいずれにおいても比較が満たされない場合は、署名は認証されないことになる。つまり、認証は、点R=U1 P+U2 Qの演算を必要とするためである。これは、以下のように行われる。Qのx座標のみを送信し、図3の「2倍加算」を使用するか、もしくは、E(Fp )に対してU2 Qのx座標を演算する。このx座標に対応する両点に対して、いずれにより認証されるかを調べる。
【0061】
再び図1を参照すると、kPで表される通信部間でキーが伝達される場合、通信帯域幅を低減する場合、送信側は、kPの座標の内の1つのみを送信し、他方の座標を受信側で演算することができる。例えば、体の元がF2 155に対して155ビットである場合、例えば、他方の座標の正しい値である単一のビットとしての識別子を送信してもよい。これにより、第2の座標が、受信側により演算され、正しいものを識別子から識別することが可能となる。
【0062】
したがって、図1を参照すると、送信部10は、最初に、受信側12の公開キーdPとして、座標x0 を表すビット列、および、座標y0 の単一のビットを受信する。
【0063】
送信側10は、レジスタ30に曲線のパラメタを有しているため、座標x0 および曲線のパラメタを使用することにより、算術部20から、他方の座標y0 の可能値を得ることができる。
【0064】
y2 +xy=x3 +ax2 +bの式および座標x0 を有する曲線については、y0 の可能値y1 およびy2 は、y2 +x0 y=x0 3+ax0 2+bのルートとなる。
【0065】
yの解を得ることにより、演算部20において、2つの可能ルートが得られ、送信された情報ビットとの比較により、どちらの値がyの値として適当かが示される。
【0066】
第2の座標(y0 )の2つの可能値は、x0 だけ異なっており、すなわち、y1 =y2 +x0 である。y0 の2つの値はy0 により異なっているため、y1 とy2 は、x0 の表現に「1」が現れるときには常時異なることになる。したがって、送信される追加ビットは、これらの位置のいずれかから選択され、y0 の値の対応ビットを調べることにより、2つのルートのいずれが適切な値かが示される。
【0067】
したがって、受信側10は、156ビットのみが検索されるにも関わらず、公開キーkPの座標を生成することができる。
【0068】
セッションキーkPの受信側12への送信も、送信側10は、x0 およびy0 の選択された識別ビットである、1つの座標のみを送信すればよいので、同様に効率的に行うことができる。その後、受信側12は、y0 の可能値を再形成し、適切なほうを選択することができる。
【0069】
体F2 m では、2a=0とした二次方程式の解の公式を用いてyの解を求めることができない。したがって、その他の方法を使用する必要があり、これを効率的に行うために、特に、算術部20が適用される。
【0070】
一般的に、x0 が0でなければ、y=x0 zである場合、x0 2z2 +x0 2z=x3 0+ax0 2+bとなる。これは、z2 +z=x0 +a+(b/x0 2) 1=cのように書くことができる。すなわち、
z2 +z=c
である。
【0071】
y0 の2つの可能値を得るためには、mが奇数であれば、
z=c+c4 +c16+…+c2m-1
あるいは、z=1+c+…+c2m-1が用いられる。
【0072】
mが偶数である場合も、cw (ただし、w=2g )の形態を有する項を用いた同様の解法が存在する。
【0073】
これは、F2 m の正規基底表現に特に好適に使用される。
【0074】
上述したように、F2 m の体の元を、g乗するためには、体の元が正規基底で表される、g回循環シフト(g fold cyclic shift)により行える。
【0075】
したがって、zの各値は、得られたy0 の値をシフト、および加算することにより演算することができる。正しい値は、送信された追加ビットにより求めることができる。
【0076】
したがって、F2 m の正規基底表現を使用することにより、y0 の座標を回復するために使用されるプロトコルを簡略化することができる。
【0077】
P=(x0 y0 )が、体F2 m で定義された楕円曲線Eである、y2 +xy=x3 +ax2 +b上の点である場合、y0 は、x0 =0である場合は0であり、x0 ≠0である場合は、体の元y0 ・x0 -1の最小有効ビットと定義される。
【0078】
Pのx座標x0 、およびビットy0 は、送信側10および受信側12間で送受信される。y座標は、以下のように回復される。
【0079】
(1)x0 =0であれば、y0 は、パラメタレジスタ30に記憶された体の元bのベクトル表現を、左側へ1段循環シフトすることにより得ることができる。すなわち、b=bm-1 bm-2 …b1 b0 であれば、y=bm-2 …b1 b0 bm-1 である。
【0080】
(2)x0 ≠0であれば、以下が行われる。
(2.1)F2 m で体の元c=x0 +a+bx0 -2を演算する。
(2.2)cのベクトル表現を、c=c m-1c m-2…c1 c0 とする。
(2.3)
z0 =y0,
z1 =c0 Θz0,
z2 =c1 Θz1,
:
zm-2 =cm-3 Θzm-3,
zm-1 =cm-2 Θzm-2
と設定し、体の元z=zm-1 zm-2 …z1 z0 を形成する。
(2.4)最後に、y0 =x0 ・zを演算する。
【0081】
なお、x0 -2の演算は、上記のように、算術部20で簡単に演算することができ、y0 の演算は、乗法部48により得ることができる。
【0082】
上記の例では、y0 の適切な値の識別は、単一のビットの送信、および得られたルートの値を比較することにより得られていた。しかしながら、他の識別子を使用することによっても、値の適切な一方を識別することができ、演算は、GF(2m )の体の楕円曲線による暗号化に限定されない。例えば、体が、Zp p= 3(mod 4)として選択される場合、適切な値と関連付けられたルジャンドルの記号を、適切な値として指定するために送信することができる。また、Zpの元の集合は、y≠0であるとすれば、yが1つの部分集合であるとき、−yが他方となるような性質で、部分集合の対にさらに分割することができる。そして、任意の値をそれぞれの部分集合に割り当て、座標x0 と共に送信し、y0 の適切な値はどの部分集合に位置するかが示される。したがって、y0 の適切な値を求めることができる。簡略的に、y0 の適切な値の識別を促進するために、部分集合が区間配置される、適切な表現をとることができる。なお、上記した方法の1つを用いて座標を求めることもできる。
【0083】
これらの方法は、楕円曲線を用いた暗号化に特に好適なものであるが、代数曲線に対しても使用できるものであり、曲線上の点の座標を転送する必要のある誤り訂正エンコーディングなどの、他の分野への適用も可能なものである。
【0084】
したがって、有限体GF2 m 内に位置する楕円曲線を使用すると共に、正規基底表現を使用することにより、楕円曲線を用いた暗号化に必要な演算を効率的に行うことができる。このような演算は、ソフトウェアやハードウェアのいずれによっても実現することができ、演算の構成により、ハードウェアにより実現された有限体乗数の使用が特に効率的になる。
【0085】
Fp およびF2m上の楕円曲線点のスカラー倍数の演算効率を向上させるための、本発明のさらなる実施の形態を以下に示す。F2mで定義される、一般化した楕円曲線式Eである、E:y2 +xy=x3 +ax2 +b,b≠0を考慮する。
【0086】
P=(x1,y1 )が生成元である場合、図3および投影曲線に対して説明した方法を用いて、kP, (k+1 )Pが得られ、kはスカラーであり、kP=(X2,Z2 ), (k+1 )P=(X3,Z3 ).
である。
【0087】
ここでの目的は、kP=(x2,y2 )のアフィン座標(affine coordinates)を得ることであり、x2 =(X2 /Z2 )であることは明らかになっている。
【0088】
(k+1 )P=(x3,y3 )のアフィン座標を考慮すると、
【0089】
【数5】
【0090】
であり、
y2 の解を求めると、
【0091】
【数6】
【0092】
が得られ、
x1 およびy1 は分かっているが、
x2 =(X2 /Z2 )とx3 =(X3 /Z3 )とを演算する必要がある。これらは、2回の逆演算(inversions)と、2回の乗算とを必要とする。式を書き換えると、
【0093】
【数7】
【0094】
となり、これらの数量を演算するには、x1 Z3 およびZ2 を逆演算し、4回の乗算が必要となる。x1 Z3 は1回の乗算を必要とするので、合計は2回の逆演算および5回の乗算である。
特異な標数の場合、
【0095】
【数8】
【0096】
であり、
y2 の解を求めると、
【0097】
【数9】
【0098】
となり、x3 を置換すると、
【0099】
【数10】
【0100】
が得られる。
同様に、体Fpでは、
【0101】
【数11】
【0102】
であり、逆演算と7個の倍数を意味し、または、同等に、1回の逆演算と13個の倍数を意味する。
3i+7m=1i+13m
x3 を置換すると、
【0103】
【数12】
【0104】
が得られる。
この場合、2回の逆演算と8個の倍数、または、同等に、1回の逆演算と11個の倍数が得られる。
【0105】
したがって、本発明は、一般的に、暗号化方法およびそのシステムに関するものであり、特に、有限体の元が、プロセッサに対して効率的に乗算される、楕円曲線暗号化方法およびそのシステムに関するものである。上記暗号化方法およびそのシステムは、適当にプログラムされ汎用コンピュータなどの、適応する全てのプロセッサユニットとして実現できるものである。
【0106】
本発明は、ある特定の実施の形態を参照して説明されたものではあるが、添付の特許請求の範囲に記載する発明の範囲を越えることなく、当業者によって様々に変更可能なものである。
【図面の簡単な説明】
【図1】 データ通信システムの概略を示す図である。
【図2】 暗号化/暗号解読ユニットの概略を示すブロック図である。
【図3】 点の倍数を計算するためのフローチャートである。
【図4】 y座標を取り出すためのフローチャートである。
Claims (18)
- 楕円曲線暗号システムの暗号モジュールを動作させることにより、公開鍵を生成する方法であって、該モジュールは、メモリと、楕円曲線の計算を実行するプロセッサとを含み、該メモリは、該楕円曲線暗号システムによって用いられる楕円曲線のパラメータを格納し、該楕円曲線上にある座標(x 1 ,y 1 )を有する点Pを格納し、
該方法は、
a)該プロセッサを用いて点Pの射影X座標および射影Z座標を計算するステップと、
b)該プロセッサにおいて、Pの射影X座標および射影Z座標を利用することにより、
i)kPの射影X座標X 2 および射影Z座標Z 2 の値と、
ii)(k+1)Pの射影X座標X 3 および射影Z座標Z 3 の値と
を取得するステップと、
c)X 2 およびZ 2 の値を組み合わせることにより、kPのxアフィン座標x 2 を導出するステップと、
d)該点Pの座標と該導出されたx 2 の値と(k+1)Pの射影座標X 3 、Z 3 とを組み合わせることにより、該点kPのアフィンy座標y 2 の値を取得するステップと、
e)該暗号モジュールによって実行される暗号動作において、kPの座標(x 2 、y 2 )を利用するステップと
を含む、方法。 - 前記楕円曲線暗号システムは、標数が2の体にわたって定義されている、請求項1に記載の方法。
- kPのアフィンy座標の決定は、x 1 Z 3 の逆数を用いて実行される、請求項2に記載の方法。
- 前記楕円曲線暗号システムは、標数が奇数の体にわたって定義されている、請求項1に記載の方法。
- kPのアフィンy座標の決定は、Z 3 の逆数を用いて実行される、請求項5に記載の方法。
- kPのアフィンy座標の決定は、y 1 Z 3 の逆数を用いて実行される、請求項5に記載の方法。
- 暗号動作において用いられる公開鍵kPを計算する暗号システムであって、該システムは、該暗号システムにおいて用いられる楕円曲線を定義するパラメータおよび点P=(x 1 ,y 1 )が格納されているメモリと、楕円曲線の計算を実行し、該メモリと通信する算術論理部とを含み、該算術演算部は、Pの射影X座標および射影Z座標を取得するように構成されており、
該算術演算部は、
a)Pの射影X座標および射影Z座標を利用することにより、
i)kPの射影X座標X 2 および射影Z座標Z 2 の値と、
ii)(k+1)Pの射影X座標X 3 および射影Z座標Z 3 との値と
を取得することと、
b)X 2 およびZ 2 の値を組み合わせることにより、kPのアフィン座標x 2 を導出することと、
c)該点Pの座標と該導出されたx 2 の値と(k+1)Pの射影座標X 3 、Z 3 とを組み合わせることにより、該点kPのアフィンy座標y 2 の値を取得することと
によって、該公開鍵kPを計算する、暗号システム。 - 前記楕円曲線は、標数が2の体にわたって定義されている、請求項10に記載の暗号システム。
- kPのアフィンy座標の決定は、x 1 Z 3 の逆数を用いて実行される、請求項11に記載の暗号システム。
- 前記楕円曲線暗号システムは、標数が奇数の体にわたって定義されている、請求項10に記載の暗号システム。
- kPのアフィンy座標の決定は、前記Z 3 の逆数を用いて実行される、請求項14に記載の暗号システム。
- kPのアフィンy座標の決定は、y 1 Z 3 の逆数を用いて実行される、請求項14に記載の暗号システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US4751898A | 1998-03-25 | 1998-03-25 | |
US09/047,518 | 1998-03-25 | ||
PCT/CA1999/000254 WO1999049386A1 (en) | 1998-03-25 | 1999-03-25 | Accelerated finite field operations on an elliptic curve |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002508523A JP2002508523A (ja) | 2002-03-19 |
JP2002508523A5 JP2002508523A5 (ja) | 2006-06-15 |
JP4598269B2 true JP4598269B2 (ja) | 2010-12-15 |
Family
ID=21949428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000538291A Expired - Lifetime JP4598269B2 (ja) | 1998-03-25 | 1999-03-25 | 楕円曲線上の高速有限体演算 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1066558B1 (ja) |
JP (1) | JP4598269B2 (ja) |
AU (1) | AU2917699A (ja) |
CA (1) | CA2324621C (ja) |
DE (1) | DE69905145T2 (ja) |
WO (1) | WO1999049386A1 (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 |
DE10156708B4 (de) * | 2001-11-19 | 2005-09-29 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve |
JP4067818B2 (ja) | 2001-12-10 | 2008-03-26 | 富士通株式会社 | 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法 |
DE10161138B4 (de) * | 2001-12-12 | 2008-02-14 | Siemens Ag | Verfahren und Vorrichtung zum Ermitteln einer elliptischen Kurve, Verfahren und Vorrichtung zum Multiplizieren eines Punktes mit einem Skalar |
DE10161137B4 (de) * | 2001-12-12 | 2008-02-14 | Siemens Ag | Verfahren und System zum kryptographischen Bearbeiten von Daten |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0804758B1 (en) * | 1994-07-29 | 2005-11-09 | Certicom Corp. | Elliptic curve encryption systems |
EP0874307B2 (en) * | 1997-03-25 | 2016-12-28 | Certicom Corp. | Accelerated finite field operations on an elliptic curve |
-
1999
- 1999-03-25 EP EP99910055A patent/EP1066558B1/en not_active Expired - Lifetime
- 1999-03-25 DE DE69905145T patent/DE69905145T2/de not_active Expired - Lifetime
- 1999-03-25 CA CA002324621A patent/CA2324621C/en not_active Expired - Lifetime
- 1999-03-25 AU AU29176/99A patent/AU2917699A/en not_active Abandoned
- 1999-03-25 JP JP2000538291A patent/JP4598269B2/ja not_active Expired - Lifetime
- 1999-03-25 WO PCT/CA1999/000254 patent/WO1999049386A1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
EP1066558B1 (en) | 2003-01-29 |
DE69905145T2 (de) | 2003-06-05 |
AU2917699A (en) | 1999-10-18 |
DE69905145D1 (de) | 2003-03-06 |
JP2002508523A (ja) | 2002-03-19 |
CA2324621C (en) | 2009-07-07 |
CA2324621A1 (en) | 1999-09-30 |
WO1999049386A1 (en) | 1999-09-30 |
EP1066558A1 (en) | 2001-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6782100B1 (en) | Accelerated finite field operations on an elliptic curve | |
US7961873B2 (en) | Password protocols using XZ-elliptic curve cryptography | |
US7961874B2 (en) | XZ-elliptic curve cryptography with secret key embedding | |
EP0503119B1 (en) | Public key cryptographic system using elliptic curves over rings | |
US6618483B1 (en) | Elliptic curve encryption systems | |
JP4662577B2 (ja) | 楕円曲線上での暗号操作の速度を高める方法 | |
US7688973B2 (en) | Encryption apparatus, decryption apparatus, key generation apparatus, program, and method | |
US8184803B2 (en) | Hash functions using elliptic curve cryptography | |
EP0874307B2 (en) | Accelerated finite field operations on an elliptic curve | |
US7912216B2 (en) | Elliptic curve cryptosystem optimization using two phase key generation | |
EP2742644A1 (en) | Encryption and decryption method | |
EP0952697B1 (en) | Elliptic curve encryption method and system | |
JP4875686B2 (ja) | 楕円曲線上の有限体演算の加速方法 | |
US6111952A (en) | Asymmetrical cryptographic communication method and portable object therefore | |
CN114092242A (zh) | 基于范围证明实现隐私交易的方法和系统 | |
JP2003098962A (ja) | 楕円曲線スカラー倍計算方法及び装置並びに記録媒体 | |
US6772184B2 (en) | Method for efficient modular division over prime integer fields | |
JP4690819B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 | |
Paar et al. | The RSA cryptosystem | |
JP4598269B2 (ja) | 楕円曲線上の高速有限体演算 | |
JP2003255831A (ja) | 楕円曲線スカラー倍計算方法及び装置 | |
WO2004070681A2 (ja) | 楕円曲線スカラー倍計算方法および装置 | |
JPH0695590A (ja) | 電子署名システム及び電子署名方法 | |
Wade | The Iso-RSA Cryptographic Scheme | |
CA2649680A1 (en) | Method and apparatus for finite field basis conversion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060324 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060324 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090721 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091019 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20091019 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091112 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091119 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091127 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091218 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100514 |
|
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: 20100826 |
|
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: 20100924 |
|
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: 20131001 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |