JP3615405B2 - 素体上楕円曲線上の点の演算方法およびその装置 - Google Patents

素体上楕円曲線上の点の演算方法およびその装置 Download PDF

Info

Publication number
JP3615405B2
JP3615405B2 JP36149198A JP36149198A JP3615405B2 JP 3615405 B2 JP3615405 B2 JP 3615405B2 JP 36149198 A JP36149198 A JP 36149198A JP 36149198 A JP36149198 A JP 36149198A JP 3615405 B2 JP3615405 B2 JP 3615405B2
Authority
JP
Japan
Prior art keywords
calculation
addition
doubling
register
elliptic curve
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP36149198A
Other languages
English (en)
Other versions
JP2000181347A (ja
Inventor
孝一 伊藤
正彦 武仲
直哉 鳥居
尚二 天満
靖 栗原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP36149198A priority Critical patent/JP3615405B2/ja
Publication of JP2000181347A publication Critical patent/JP2000181347A/ja
Application granted granted Critical
Publication of JP3615405B2 publication Critical patent/JP3615405B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

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

Description

【0001】
【発明の属する技術分野】
本発明は、素体上楕円曲線上の点の演算方法、特に、楕円曲線上の点に乗数を乗算する際に、2進数系表現に変換された乗数に基づいて2倍算処理および加算処理を組み合わせて演算を行う演算方法およびこの演算方法を実現する素体上楕円曲線上の点の演算装置に関する。
【0002】
【従来の技術】
近年のコンピュータネットワークの発達により、データベースの検索や電子メール、電子ニュースなどの電子化された情報をネットワークを経由して送受信する機会が急速の増加してきている。さらに、これらを利用して、オンラインショッピングなどのサービスも提供されつつある。しかし、それに伴って、ネットワーク上の電子化されたデータを盗聴したり、改竄したり、または他人になりすましてサービスを受けるなどの違法行為についての問題が浮上してきている。特に、無線を利用したネットワークにおいては、傍受が容易なためこれらを防止する対策が望まれている。
【0003】
これらの問題に対して暗号技術(encryption technology)を応用した暗号化電子メールや利用者認証システムが提案され、種々のネットワークにも導入されつつあり、コンピュータネットワークにおいて暗号化は必須の技術となりつつある。この意味でコンピュータネットワークにおいては暗号化は必須の技術であるといえる。
【0004】
暗号化方式は、大別すると秘密鍵暗号系と公開鍵暗号系の2つの分類することができる。
【0005】
秘密鍵暗号系は、送信者と受信者が同じ鍵を持つことにより暗号通信を行う方式である。すなわち、秘密鍵暗号系では、あるメッセージを秘密の暗号鍵に基づいて暗号化し相手に送り、受け手はこの暗号鍵を用いて暗号分を複合化しもとのメッセージに戻して情報を入手する。
【0006】
公開鍵暗号系は、送信者は公開されている受信者の公開鍵でメッセージを暗号化して送信し、受信者は自分の秘密鍵でその暗号化メッセージを復号することで通信を行う方式である。すなわち、公開鍵暗号系では、公開鍵は暗号化のための鍵、秘密鍵は公開鍵により暗号化された暗号を復号するための鍵であり、公開鍵で暗号化した暗号が秘密鍵でのみ復号することができる。
【0007】
秘密鍵暗号系では、個人が秘密に保管しなければならない鍵の数が通信相手の数だけ必要であり、必要な総鍵数はn人のネットワークの場合、n(n−1)/2個である。また、はじめて通信をする相手に対しては、何らかの方法で秘密鍵の配送を行う必要があるという点で欠点がある。この問題を避けるために、大規模なネットワークでは、鍵管理センタを設置し、センタとの間の秘密鍵のみを保管し、暗号通信を行う場合はセンタから送信相手との秘密鍵を得る方法が用いられる。この場合秘密鍵の総数はnとなる。
【0008】
一方公開鍵暗号系では、個人が秘密に保管する鍵は自分の秘密鍵のみであり、必要な総秘密鍵数もn人のネットワークの場合、n個である。また、はじめて通信する相手に対しては、公開鍵の配送を行えばよく、鍵管理センタを設置して、ユーザの公開鍵をn個公開簿に登録し、センタから送信相手の公開鍵を得る方法が用いられる。この場合、センタは公開鍵の改竄を防ぐだけで、秘密に保管する必要がない。ただし、公開鍵方式は秘密鍵方式に比べて鍵のビット数が大きいため保管に要するファイルサイズが大きくなるという問題を内包している。
【0009】
また、認証の場合、秘密鍵暗号系では、例えば、送信するメッセージを秘密鍵で圧縮変換し、送信文に付加して送り、受信側では同様に圧縮変換して比較する方式がとられている。しかし、送受信が同じ鍵であるため受信者は認証データを偽造することができる。
【0010】
これに対して、公開鍵暗号系では、秘密鍵で暗号化することができるのは本人だけであるという特徴を利用する。送信者はメッセージを圧縮変換して秘密鍵で暗号化し、送信文に付加して送り、受信者は送信者の公開鍵で付加されたデータを復号化し、同様に圧縮変換したものと比較する方式がとられている。この場合は受信者が不正できない。
【0011】
このように、認証系では公開鍵暗号系の技術は必要不可欠であるといえる。しかし、公開鍵暗号系には、暗号化/復号化に大量の処理が必要であるという大きな欠点があるため、一般には処理の速い秘密鍵暗号系をメッセージの暗号化に、公開鍵暗号系は認証用にというように組み合わせて用いられる場合が多い。
【0012】
公開鍵暗号系の中で、現在IEEE P1363, ANSI X 9.62などで標準化が進んでいるものに、楕円曲線暗号(Elliptic Curve Cryptography)がある。これは、楕円曲線の離散対数問題に基づくもので、N. Koblitz(”A course in number theory and cryptography”, Spring−Verlag, 1997)と、V. Miller(”Use of elliptic curves in cryptography”, Advances in Cryptology−Proceedings of Crypto ’85, Lecture Notes in Computer Science, 218(1986), Spring−Verlag, pp 417−426)により提案された。
〔楕円曲線暗号に用いる楕円曲線〕
楕円曲線暗号に用いる主な楕円曲線は、素体上の楕円曲線(標準形:y=x+ax+b(modp),p:素数,a,b:GF(p)の元)と、2の拡大体上の楕円曲線(標準形:y+xy=x+ax+b(mod f),f:n次既約多項式,a,b:GF(2)の元)である。この楕円曲線上の点P(x,y)および単位元となる無限遠点Οの集合は、加算に関して群をなす。楕円曲線は、この点の演算による離散対数問題に基づく暗号である。
〔楕円曲線の点の演算と離散対数問題〕
楕円曲線上の点の演算は以下のものが定義されている。
加算:R=P+Q=Q+P
2倍算:R=2P=P+P
減算:R=P−Q
零点:Ο(無限遠点)=P−P
スカラー倍算:kP=P+P+・・・+P(k個のPの和)
ここで、kPとPからkを計算することは困難である。このことは、楕円曲線の離散対数問題と呼ばれており、この離散対数問題に関連する計算の困難性に基づいて公開鍵系の暗号とすることができる。
【0013】
たとえば、公開鍵暗号系と知られる(有限体上の)ディフィ−ヘルマン(Diffie−Hellman)鍵交換と同様の鍵交換方式を実現することができる。楕円曲線上のベースポイントをGとし、Aの秘密鍵をsとしPa=sGを演算して公開鍵とする。また、Bの秘密鍵をsとし、Pb=sGを演算してこれを公開鍵とする。AはBの公開鍵Pbと自分の秘密鍵sから、KAB=sPb=sGを演算することによって共通鍵を得ることができる。また、同様にして、BはAの公開鍵Paと自分の秘密鍵sから、KBA=sPa=sGを演算することによって共通鍵を得ることができる。この方式は、ECDH(Elliptic Curve Diffie−Hellman)方式と呼ばれ、秘密鍵s,sをスカラー量として楕円曲線上の点G、Pa、Pbに乗算する必要があり、暗号化/復号化の際に大量の演算処理を必要とする。この他にECDSA方式やECES方式なども提案されているが、演算処理が大きくなる点については同様である。
〔楕円曲線上の点のスカラー倍算〕
楕円曲線上の点のスカラー倍算は上記のように定義されるが、kの値が大きくなると計算量が膨大となるため、通常は、加算と2倍算を組み合わせたバイナリメソッド(Binary Method)や加算と2倍算、減算を組み合わせたサインドバイナリメソッド(Signed Binary Method)、事前計算表を用いて用いてバイナリメソッドを複数ビット単位で行うウィンドウメソッド(Window Method)などを用いて計算を行うことが提案されている。
〔素体上楕円曲線上における点の加算〕
楕円曲線上の点のスカラー倍算を行うためにバイナリーメソッドやウィンドウメソッドを用いる場合、2進数系の表現に変換された乗数に基づいて、2倍算処理または加算処理と2倍算処理を行って、楕円曲線上の点を次々に演算していくことにより結果を得ることができる。
【0014】
素体上の楕円曲線y=x+ax+b(mod p)での点の演算を定義する。点P=(x,y)、点Q=(x,y)、点R=(x,y)、単位元Ο(無限遠点)とすると、点の加算は次のように定義される。但し、−P=(x,−y)と定義される。
【0015】
1.点Pと単位元Οとの加算
R=P+Ο=Ο+P=P
2.単位元Οの2倍算
R=Ο+Ο=2Ο=Ο
3.点Pと点−Pとの加算
R=P−P=Ο
4.点Pと点Q(≠P)との加算
R=P+Q=(x,y
=((y−y)/(x−x))−x−x(mod p)
=((y−y)/(x−x))(x−x)−y(mod p)
5.点Pの2倍算
R=P+P=2P=(x,y
=((3x −a)/2y−2x(mod p)
=((3x −a)/2y)(x−x)−y(mod p)
〔点の三次元表現と演算〕
上述の楕円曲線上の点の加算は、もっとも基本的な方式であり、加算ごとに素体上の逆数演算が必要となる。通常、素体上の逆数演算は大量の処理が必要となるため、楕円曲線上の点を三次元表現することで、逆数演算を行わずに加算処理を行う方式が、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, Vol. 7, 1986に提案されている。このうち、ヤコビアン(Jacobian)座標を用いれば、楕円曲線上の点は、(x,y)=(X/Z,Y/Z)となる(X,Y,Z)に投影される。この場合の点の加算および2倍算は、IEEE P1363に掲載されており、次のように示される。
【0016】
4’.点Pと点Q(≠P)との加算
R=P+Q=(X,Y,Z
=X
=X
=Y
=Y
W=U−U
T=U+U
R=S−S
M=S+S
V=TW−2X
=R−TW
=(VR−MW)/2
=Z
5’.点Pの2倍算
R=P+P=2P=(X,Y,Z
M=3X +aZ
S=4X
T=8Y
=M−2S
=M(S−X)−T
=2Y
【0017】
【発明が解決しようとする課題】
出願人は、特願平10−311379号に、ヤコビアン座標を用いた楕円曲線上の点の演算を行う際に、演算途中の計算結果を利用して点の2倍算を連続実行するようにした素体上楕円曲線上の点の演算方法を提案した。この演算方法のアルゴリズムを下に示す。
【0018】
Figure 0003615405
この方法を用いることにより、2倍算が連続する場合の乗算回数を削減することができる。IEEE P1363に記載されているヤコビアン座標を用いた点の加算および2倍算に必要な計算量および特願平10−311379号におけるべき値mの場合のべき乗倍算に必要な計算量を表1に示す。
【0019】
【表1】
Figure 0003615405
【0020】
ここで、加算系とは、加算、減算、2倍算、1/2算、3倍算、4倍算、8倍算の総称である。加算、減算、2倍算、1/2算の計算量を1とし、加算と2倍算とを1回ずつ実行することで可能な3倍算および2倍算を2回実行することで可能な4倍算の計算量を2とし、2倍算を3回実行することで可能な8倍算の計算量を3とする。
【0021】
点の2倍算が連続して行われる場合には、IEEE P1363の方法では、10×べき値m回の乗算を必要とするのに対して、特開平10−311379号のものでは8m+2回となり、べき値mが多くなればそれだけ乗算回数が削減されることとなる。しかしながら、加算系の演算回数については、べき値mが多くなるにつれてむしろ増加してしまう。
【0022】
計算機において、加算系の演算処理は乗算処理に比して非常に負担の小さい処理とされていたが、ハードウェア乗算器を備えたプロセッサなどでは、乗算処理と比較して加算系の処理が無視できるほど小さいものではない場合が多い。特に、DSPなどの高速なハードウェア乗算器を持つプロセッサにおいて楕円曲線上の点の加算、2倍算を高速に処理するためには、乗算回数の最適化のみならず、加算系の回数の最適化が重要な課題となる。
【0023】
本発明の目的は、素体上楕円曲線上の点を3次元に投影したヤコビアン座標を用いることで逆数演算を行うことなく加算処理を可能とし、かつ付加的な座標を追加せずに高速な処理を可能とする素体上楕円曲線上の点の演算方法およびその装置を提案することにある。
【0024】
【課題を解決するための手段】
本発明は、複数のレジスタ群の値を読み出して、乗算系の演算処理を実行する乗算系演算手段と加算系の演算処理を実行する加算系演算手段とによって処理した演算結果を前記レジスタ群に格納する演算部によって、y2=x3+ax+b(mod p)で表される素体上楕円曲線上の点(x,y)に乗数を乗算する際に、2進数系表現に変換された前記乗数に基づいて2倍算処理および加算処理を組み合わせて演算を行う方法であって、
前記演算部が、前記素体上楕円曲線上の点(x,y)を(x,y)=(X/Z2,Y/Z3)となるヤコビアン座標表現(X,Y,Z)に変換し、2倍算処理を連続して行う場合には、その連続した2倍算処理の時点(t+1)での演算結果(Xt+1,Yt+1,Zt+1)を現在のヤコビアン座標(Xt,Yt,Zt)を用いて、
t’=2Yt
t=3Xt 2+aZt 4
t=Xt(Yt’)2
t=(Yt’)4/2
t+1=Mt 2−2St
t+1=Mt(St−Xt+1)−Tt
t+1=Yt’Zt
の演算処理を、加算、減算、2倍算、3倍算及び1/2算については加算系演算手段により実行し、その他の乗算及び指数演算は乗算系演算手段により実行することを特徴とする素体上楕円曲線上の点の演算方法である(ただし、計算式の記載順は、計算順を特定するものではない)。
【0025】
ヤコビアン座標を用いた演算において、4Yの演算を、4×Yとして演算すると、乗算1回および加算系2回の計算量を必要とする。これに対して、4Yの演算を(2Y)として演算を行った場合、乗算1回および加算系1回の計算量となり、前者の場合と比して加算系を1回削減することができる。上述した本発明の演算方法では、Y座標の2倍の値であるY’の値を先に計算し、このY’の値を用いることによって、ヤコビアン座標の点の2倍算における加算系の回数を削減している。
【0026】
また、本発明では、複数のレジスタ群の値を読み出して、乗算系の演算処理を実行する乗算系演算手段と加算系の演算処理を実行する加算系演算手段とによって処理した演算結果を前記レジスタ群に格納する演算部によって、y2=x3+ax+b(mod p)で表される素体上楕円曲線上の点(x,y)に乗数を乗算する際に、2進数系表現に変換された前記乗数に基づいて2倍算処理および加算処理を組み合わせて演算を行う方法であって、
前記演算部が、前記素体上楕円曲線上の点(x,y)を(x,y)=(X/Z2,Y/Z3)となるヤコビアン座標表現(X,Y,Z)に変換し、2倍算処理を連続して行う場合には、初回は、
0’=2Y0
0=aZ0 4
0=3X0 2+W0
0=X0(Y0’)2
0=(Y0’)4
1=M0 2−2S0
1’=2M0(S0−X1)−T0
1=Y0’Z0
を演算し、2回目以降はその連続した2倍算処理の時点(t+1)での演算結果(Xt+1,Yt+1’,Zt+1)を現在の座標(Xt,Yt’,Zt)を用いて、
t=Tt-1t-1
t=3Xt 2+Wt
t=Xt(Yt’)2
t=(Yt’)4
t+1=Mt 2−2St
t+1’=2Mt(St−Xt+1)−Tt
t+1=Yt’Zt
として演算処理を行い、最終回には、Yt+1=Yt+1’/2を演算する処理を、加算、減算、2倍算、3倍算及び1/2算については加算系演算手段により実行し、その他の乗算及び指数演算は乗算系演算手段により実行することを特徴とする素体上楕円曲線上の点の演算方法を提案する。
【0027】
従来の方法においては、T=8Y ,W=aZ からW=2Tt−1t−1を演算していたのに対し、この方法を用いることによって、T=(Y’)=16Y の演算結果を利用して、W=Tt−1t−1=16Y として演算することができる。したがって、Tの2倍算が不要となり計算量を削減することが可能となる。
【0028】
また、2倍算処理が連続する場合の従来の演算方法では、(X,Y,Z)の2倍点(X,Y,Z)から2t+1倍点(Xt+1,Yt+1,Zt+1)を計算していたが、上述の方法では、点(X,2Y,Z)から点(Xt+1,2Yt+1,Zt+1)を計算することによって点の2のべき乗倍算ループ毎に必要なY座標の2倍値の計算を削減することができ、初回のY→2Yの2倍算および最終回のY座標の1/2算が増加するものの、全体として計算量を削減することが可能となる。
【0029】
ここで、連続した2倍算処理の時点(t+1)での演算処理において、前回の時点(t)での演算結果(X,Y’,Z)を求める際に用いたWt−1=aZt−1 とTt−1=Yt−1 とを用いて2倍算処理を行うとともに、この2倍算処理において求めたW=aZ とT=(Y’)とを記憶するように構成できる。
【0030】
また、連続した2倍算処理の時点(t+1)において、演算結果(Xt+1,Yt+1’,Zt+1)以外の情報を出力しないように構成できる。
【0031】
本発明に係る素体上楕円曲線上の点の演算装置は、記憶手段と、演算手段と、レジスタ群と、出力手段とを備えている。記憶手段は、y2=x3+ax+b(mod p)で表される素体上楕円曲線上の点(x,y)に対応して(x,y)=(X/Z2,Y/Z3)となるヤコビアン座標表現とした点(X,Y,Z)および乗数が格納される領域を有する。演算手段は、乗算系の演算処理を実行する乗算系演算手段と加算系の演算処理を実行する加算系演算手段とを備えており、記憶手段に格納された乗数を2進数系表現に変換し、この乗数に基づいて前記ヤコビアン座標に2倍算処理または加算処理と2倍算処理とを乗算系演算手段と加算系演算手段とにより選択的に行って次のヤコビアン座標を演算する。レジスタ群は、演算手段の乗算系演算手段および加算系演算手段による演算結果を一時的に格納する。出力手段は、演算手段により演算された次のヤコビアン座標を記憶手段に出力する。しかして、演算手段により演算されて記憶手段に記憶されたヤコビアン座標を用いて、前記乗数に基づく演算を連続的に行うとともに、演算手段による演算が連続する2倍算処理である場合には、初回は、
0’=2Y0
0=aZ0 4
0=3X0 2+W0
0=X0(Y0’)2
0=(Y0’)4
1=M0 2−2S0
1’=2M0(S0−X1)−T0
1=Y0’Z0
を演算し、2回目以降はその連続した2倍算処理の時点(t+1)での演算結果(Xt+1,Yt+1’,Zt+1)を現在の座標(Xt,Yt’,Zt)を用いて、
t=Tt-1t-1
t=3Xt 2+Wt
t=Xt(Yt’)2
t=(Yt’)4
t+1=Mt 2−2St
t+1’=2Mt(St−Xt+1)−Tt
t+1=Yt’Zt
として演算処理を行い、最終回には、Yt+1=Yt+1’/2を演算する処理を、加算、減算、2倍算、3倍算及び1/2算については加算系演算手段により実行し、その他の乗算及び指数演算は乗算系演算手段により実行することを特徴とする。
【0032】
この装置によれば、前述したような演算方法を実現することができ、たとえば、2倍算処理を連続して行う場合には、レジスタ群に残っているWおよびTの値を用いて演算を行うことによって演算回数を軽減することが可能となり、演算を高速化することができる。
【0033】
【発明の実施の形態】
本発明に素体上楕円曲線上の点の演算装置の1実施形態を図1を用いて説明する。
【0034】
この演算装置1は、通常のCPUおよびメモリを搭載したコンピュータにより実現されるものであって、主に記憶手段2と演算部3とで構成される。
【0035】
記憶手段2は、楕円曲線上の点に対応するヤコビアン座標(X,Y,Z)や乗数kが格納される。
【0036】
演算部3は、ヤコビアン座標に変換された楕円曲線上の点に乗数kを乗算する際に、バイナリーメソッドやウィンドウメソッドなどを用いて2倍算処理または加算処理と2倍算処理を選択的に行って楕円曲線上の点を次のヤコビアン座標として演算する演算手段4を備えている。また、演算部3は、演算手段4における演算に必要な入力変数を一時的に格納しておくレジスタ群5を備えている。また、演算部3は、演算手段4の演算結果を一時的に格納する演算結果出力用レジスタ6を備えている。
【0037】
演算手段4では、記憶手段2に格納された現時点でのヤコビアン座標(X,Y,Z)を2倍算処理するか加算処理と2倍算処理とを行うかを、乗数kの値に基づいて選択し、演算処理を行う。
【0038】
加算処理を行う場合には、4’として示した前述のアルゴリズムと同様であり、ここでは省略する。
〔第1実施形態〕
2倍算処理が連続する、いわゆる2のべき乗倍算を行う際に、その連続した2倍算処理の時点(t+1)での演算結果(Xt+1,Yt+1,Zt+1)を現在のヤコビアン座標(X,Y,Z)を用いて、
’=2Y
=3X +aZ
=X(Y’)
=(Y’)/2
t+1=M −2S
t+1=M(S−X)−T
t+1=Y’Z
とする第1のアルゴリズムの場合について考える。このときの処理を表すフローチャートを図2に示す。
【0039】
入力されるヤコビアン座標を(X,Y,Z)、出力するヤコビアン座標を(X,Y,Z)とし、計算過程におけるテンポラリ値を格納しておく場所をレジスタ群F〜Fとする。
【0040】
ステップS100では、記憶手段2に格納されている(X,Y,Z)および楕円パラメータaをレジスタ群5に読み出す。ステップS101では、2×Y、X×X、Z×Zを演算し、演算結果をそれぞれレジスタF、F、Fに格納する。このとき、F=Y’となっている。
【0041】
ステップS102では、レジスタFの値を読み出してF×Fを演算し、この演算結果をレジスタFに再度格納する。さらに、レジスタFの値を読み出して2×Fを演算しこの演算結果をFに格納する。ここでは、F=Z 、F=2X となっている。
【0042】
ステップS103では、レジスタFの値を読み出してa×Fを演算しこの演算結果をレジスタFに格納する。さらに、レジスタF、Fの値を読み出してF+Fを演算しこの演算結果をレジスタFに格納する。このとき、F=aZ 、F=3X となっている。
【0043】
ステップS104では、レジスタF、Fの値を読み出してF+Fを演算しこの演算結果をレジスタFに格納する。このとき、F=3X +aZ =Mとなっている。
【0044】
ステップS105では、Zの値とレジスタFの値を読み出してZ×Fを演算しこの演算結果をZとして演算結果出力用レジスタ6に出力する。また、レジスタFの値を読み出してF×Fを演算しこの演算結果をレジスタFに格納する。このとき、Z=Y’Z、F=(Y’)となっている。
【0045】
ステップS106では、Xの値とレジスタFの値を読み出してX×Fを演算しこの演算結果をレジスタFに格納する。また、レジスタFの値を読み出してF×Fを演算しこの演算結果をレジスタFに格納する。このとき、F=X×(Y’)=S、F=Mとなっている。
【0046】
ステップS107では、レジスタFの値を読み出して2×Fを演算しこの演算結果をXとして演算結果出力用レジスタ6に出力する。このとき、X=2Sになっている。
【0047】
ステップS108では、レジスタFの値とXの値を読み出してF−Xを演算しこの演算結果をXとして演算結果出力用レジスタ6に出力する。このとき、X=M−2Sとなっている。
【0048】
ステップS109では、レジスタFの値を読み出してF×Fの演算を行いこの演算結果をレジスタFに格納する。また、レジスタFの値およびXの値を読み出してF−Xの演算を行いこの演算結果をレジスタFに格納する。このとき、F=(Y’)、F=S−Xとなっている。
【0049】
ステップS110では、レジスタFの値を読み出してF/2の演算を行いこの演算結果をレジスタFに格納する。また、レジスタF、Fの値を読み出してF×Fを演算しこの演算結果をYとして演算結果出力用レジスタ6に出力する。このとき、F=(Y’)/2=8Y 、Y=M(S−X)となっている。
【0050】
ステップS111では、Yの値およびレジスタFの値を読み出してY−Fを演算しこの演算結果をYとして演算結果出力用レジスタ6に出力する。このとき、Y=M(S−X)−Tとなっている。
【0051】
最終的に演算された(X,Y,Z)は記憶手段2に出力される。
【0052】
べき乗倍算がさらに続く場合には、この(X,Y,Z)の値を入力(X,Y,Z)として同じ動作を繰り返し行うことで続けて演算することが可能である。
〔第2実施形態〕
2倍算処理が連続する、いわゆる2のべき乗倍算を行う際に、初回には、
’=2Y
=aZ
=3X +W
=X(Y’)
=(Y’)
=M −2S
’=2M(S−X)−T
=Y’Z
を演算し、2回目以降にはその連続した2倍算処理の時点(t+1)での演算結果(Xt+1,Yt+1’,Zt+1)を現在の座標(X,Y’,Z)を用いて、
=Tt−1t−1
=3X +W
=X(Y’)
=(Y’)
t+1=M −2S
t+1’=2M(S−X)−T
t+1=Y’Z
として演算処理を行い、最終回には、Yt+1=Yt+1’/2を演算する第2のアルゴリズムの場合について考える。このときの処理を表すフローチャートを図3に示す。
【0053】
入力されるヤコビアン座標を(X,Y,Z)、連続する2倍算の途中におけるヤコビアン座標を(X,Y,Z)とし、計算過程におけるテンポラリ値を格納しておく場所をレジスタ群F〜Fとする。
【0054】
ステップS200では、記憶手段2に格納されている(X,Y,Z)、べき数mおよび楕円パラメータaをレジスタ群5に読み出す。ステップS201では、連続した2倍算の演算回数をカウントするための計数iを初期化する。
【0055】
ステップS202では、点の2倍算ルーチンを実行し、得られた(X,Y,Z)の値およびF、Fの値をレジスタ群5内に出力する。
【0056】
ステップS203では、現在の連続2倍算の演算回数iが今回行うべき数mに到達したか否かを判別する。現在の連続2倍算の演算回数iが今回行うべき数mに到達していない場合には、ステップS204に移行する。ステップS204では、点の2倍算ループルーチンを実行する。ここでは、レジスタ群5中の(X,Y,Z)の値およびF、Fの値を入力X,Y,Z,T,Wとし、演算の結果得られる値を再度(X,Y,Z)、F、Fの値としてレジスタ群5に出力する。
【0057】
ステップS205では、現在の連続2倍算の演算回数iをインクリメントする。この後、ステップS203に移行する。
【0058】
ステップS203において、現在の連続2倍算の演算回数iが今回行うべき数mに到達したと判断した場合には、ステップS206に移行する。ステップS206では、レジスタ群5よりYの値を読み出してY/2を演算しこの演算結果をYとしてレジスタ群5に出力する。ステップS207では、(X,Y,Z)の値を2(X,Y,Z)として演算結果出力用レジスタ6に出力する。
【0059】
ステップS202における点の2倍算ルーチンを図4に示す。
【0060】
ステップS300では、記憶手段2に格納されている(X,Y,Z)および楕円パラメータaをレジスタ群5に読み出す。
【0061】
ステップS301では、2×Y、X×X、Z×Zを演算し、演算結果をそれぞれレジスタF、F、Fに格納する。このとき、F=Y’、F=X 、F=Z となっている。
【0062】
ステップS302では、レジスタFの値を読み出してF×Fを演算し、この演算結果をレジスタFに再度格納する。さらに、レジスタFの値を読み出して2×Fを演算しこの演算結果をFに格納する。ここでは、F=Z 、F=2X となっている。
【0063】
ステップS303では、レジスタFの値を読み出してa×Fを演算しこの演算結果をレジスタFに格納する。さらに、レジスタF、Fの値を読み出してF+Fを演算しこの演算結果をレジスタFに格納する。このとき、F=aZ =W、F=3X となっている。
【0064】
ステップS304では、レジスタF、Fの値を読み出してF+Fを演算しこの演算結果をレジスタFに格納する。このとき、F=3X +aZ =Mとなっている。
【0065】
ステップS305では、Zの値とレジスタFの値を読み出してZ×Fを演算しこの演算結果をZとして演算結果出力用レジスタ6に出力する。また、レジスタFの値を読み出してF×Fを演算しこの演算結果をレジスタFに格納する。このとき、Z=Y’Z、F=(Y’)となっている。
【0066】
ステップS306では、Xの値とレジスタFの値を読み出してX×Fを演算しこの演算結果をレジスタFに格納する。また、レジスタFの値を読み出してF×Fを演算しこの演算結果をレジスタFに格納する。このとき、F=X×(Y’)=S、F=M となっている。
【0067】
ステップS307では、レジスタFの値を読み出して2×Fを演算しこの演算結果をXとして演算結果出力用レジスタ6に出力する。このとき、X=2Sになっている。
【0068】
ステップS308では、レジスタFの値とXの値を読み出してF−Xを演算しこの演算結果をXとして演算結果出力用レジスタ6に出力する。このとき、X=M −2Sとなっている。
【0069】
ステップS309では、レジスタFの値を読み出してF×Fの演算を行いこの演算結果をレジスタFに格納する。また、レジスタFの値およびXの値を読み出してF−Xの演算を行いこの演算結果をレジスタFに格納する。このとき、F=(Y’)=T、F=S−Xとなっている。
【0070】
ステップS310では、レジスタF、Fの値を読み出してF×Fの演算を行いこの演算結果をYとして演算結果出力用レジスタ6に出力する。このとき、Y=M(S−X)となっている。
【0071】
ステップS311では、Yの値を読み出して2×Yを演算しこの演算結果をYとして演算結果出力用レジスタ6に出力する。このとき、Y=2M(S−X)となっている。
【0072】
ステップS312では、Yの値およびレジスタFの値を読み出してY−Fを演算しこの演算結果をYとして演算結果出力用レジスタ6に出力する。このとき、Y=2M(S−X)−Tとなっている。
【0073】
ステップS313では、最終的に演算されたX,Y,Z,F,Fを記憶手段2に出力する。このあと、メインルーチンに復帰する。
【0074】
この点の2倍算ルーチンでは、連続する2倍算の初回において、Y’=2YおよびW=aZ を演算し、これらに基づいて演算した結果、出力される(X,Y,Z)の値は、実際のヤコビヤン座標(X,Y,Z)に対して(X,2Y,Z)となっている。
【0075】
ステップS204の点の2倍算ループルーチンについて、図5により説明する。この2倍算ループルーチンでは、実際のヤコビヤン座標を(X,Y,Z)とすると、(X,2Y,Z)を入力として(Xt+1,2Yt+1,Zt+1)を演算してこれを出力としている。
【0076】
ステップS400では、記憶手段2に格納されている(X,Y,Z)およびレジスタF(=Ti−1)、F(=Wi−1)の値を入力として読み出す。
【0077】
ステップS401では、F×Fを演算しその演算結果をレジスタFに格納する。また、X×Xを演算しその演算結果をレジスタFに格納する。このとき、F=W、F=X となっている。
【0078】
ステップS402では、レジスタFの値を読み出して2×Fを演算しこの演算結果をFに格納する。ここでは、F=2X となっている。
【0079】
ステップS403では、レジスタF、Fの値を読み出してF+Fを演算しこの演算結果をレジスタFに格納する。このとき、F=3X となっている。
【0080】
ステップS404では、レジスタF、Fの値を読み出してF+Fを演算しこの演算結果をレジスタFに格納する。このとき、F=3X +W=Mとなっている。
【0081】
ステップS405では、Y,Zの値を読み出してY×Zを演算しこの演算結果をZとして演算結果出力用レジスタ6に出力する。また、Y×Yを演算しこの演算結果をレジスタFに格納する。ここでは、入力されるX,Y,Zに対してZi+1を演算してZとして出力しており、演算としてはZi+1=Y’Zを実行したこととなる。また、レジスタFに格納される値は、F=(Y’)となっている。
【0082】
ステップS406では、Xの値とレジスタFの値を読み出してX×Fを演算しこの演算結果をレジスタFに格納する。また、レジスタFの値を読み出してF×Fを演算しこの演算結果をレジスタFに格納する。このとき、F=X×(Y’)=S、F=M となっている。
【0083】
ステップS407では、レジスタFの値を読み出して2×Fを演算しこの演算結果をXとして演算結果出力用レジスタ6に出力する。ここでは、入力されるX,Y,Zに対してXi+1を演算してXとして出力しており、演算としてはXi+1=2Sを実行したこととなる。
【0084】
ステップS408では、レジスタFの値とXの値を読み出してF−Xを演算しこの演算結果をXとして演算結果出力用レジスタ6に出力する。このとき、Xi+1=M −2Sを演算したこととなる。
【0085】
ステップS409では、レジスタFの値を読み出してF×Fの演算を行いこの演算結果をレジスタFに格納する。また、レジスタFの値およびXの値を読み出してF−Xの演算を行いこの演算結果をレジスタFに格納する。このとき、F=(Y’)=T、F=S−Xとなっている。
【0086】
ステップS410では、レジスタF、Fの値を読み出してF×Fの演算を行いこの演算結果をYとして演算結果出力用レジスタ6に出力する。ここでは、入力されるX,Y,Zに対してYi+1を演算してYとして出力しており、演算としてはYi+1=M(S−Xi+1)を実行したこととなる。
【0087】
ステップS411では、Yの値を読み出して2×Yを演算しこの演算結果をYとして演算結果出力用レジスタ6に出力する。このとき、Yi+1=2M(S−Xi+1)を演算したこととなる。
【0088】
ステップS412では、Yの値およびレジスタFの値を読み出してY−Fを演算しこの演算結果をYとして演算結果出力用レジスタ6に出力する。このとき、Yi+1=2M(S−Xi+1)−Tを演算したこととなる。
【0089】
ステップS413では、最終的に演算されたX,Y,Z,F,Fを記憶手段2に出力する。このあと、メインルーチンに復帰する。
【0090】
素体上楕円曲線上の点の演算に関して、その計算量を従来例による場合と本発明による場合とで比較したものを表2に示す。
【0091】
【表2】
Figure 0003615405
【0092】
点の2倍算の場合には、本発明の第1実施形態を採用することができる。この場合には、IEEE P1363に記載されている従来例の場合と乗算回数は同じであるが、加算系の演算回数を13回から9回に削減できる。
【0093】
また、点の2倍算の場合には、本発明の第2実施形態を採用することができる。このとき、特願平10−311379号に記載の従来例の場合と同様に乗算回数は8m+2となる。しかしながら、加算系の演算回数が従来例の場合、14m−1回であるのに対し、本発明の方法では8m+2回となり、大幅に計算量を削減することができる。
【0094】
本発明の第2実施形態の方法を、DSP(テキサスインスツルメンツ社製TMS320C6x)に実装したところ、特願平10−311379号に記載の従来の方法に比して、楕円曲線上の任意点のスカラー倍算が6%高速化することがでい、この結果楕円曲線暗号を用いたDSA署名確認処理が従来法よりも5%高速化された。
【0095】
【発明の効果】
本発明によれば、素体上楕円曲線上の点の演算において、加算系の演算処理を削減することができ、特に、2倍算処理が連続する場合に計算量を削減し、楕円曲線上の点のスカラー倍算を行った場合、演算の高速化を図ることが可能となる。
【図面の簡単な説明】
【図1】本発明の1実施形態の制御ブロック図。
【図2】第1実施形態の制御フローチャート。
【図3】第2実施形態の制御フローチャート。
【図4】2倍算ルーチンの制御フローチャート。
【図5】2倍算ループルーチンの制御フローチャート。
【符号の説明】
1 演算装置
2 記憶手段
3 演算部
4 演算手段
5 レジスタ群
6 演算結果出力用レジスタ

Claims (5)

  1. 複数のレジスタ群の値を読み出して、乗算系の演算処理を実行する乗算系演算手段と加算系の演算処理を実行する加算系演算手段とによって処理した演算結果を前記レジスタ群に格納する演算部によって、y2=x3+ax+b(mod p)で表される素体上楕円曲線上の点(x,y)に乗数を乗算する際に、2進数系表現に変換された前記乗数に基づいて2倍算処理および加算処理を組み合わせて演算を行う方法であって、
    前記演算部が、前記素体上楕円曲線上の点(x,y)を(x,y)=(X/Z2,Y/Z3)となるヤコビアン座標表現(X,Y,Z)に変換し、2倍算処理を連続して行う場合には、その連続した2倍算処理の時点(t+1)での演算結果(Xt+1,Yt+1,Zt+1)を現在のヤコビアン座標(Xt,Yt,Zt)を用いて、
    t’=2Yt
    t=3Xt 2+aZt 4
    t=Xt(Yt’)2
    t=(Yt’)4/2
    t+1=Mt 2−2St
    t+1=Mt(St−Xt+1)−Tt
    t+1=Yt’Zt
    の演算処理を、加算、減算、2倍算、3倍算及び1/2算については加算系演算手段により実行し、その他の乗算及び指数演算は乗算系演算手段により実行することを特徴とする素体上楕円曲線上の点の演算方法。
  2. 複数のレジスタ群の値を読み出して、乗算系の演算処理を実行する乗算系演算手段と加算系の演算処理を実行する加算系演算手段とによって処理した演算結果を前記レジスタ群に格納する演算部によって、y2=x3+ax+b(mod p)で表される素体上楕円曲線上の点(x,y)に乗数を乗算する際に、2進数系表現に変換された前記乗数に基づいて2倍算処理および加算処理を組み合わせて演算を行う方法であって、
    前記演算部が、前記素体上楕円曲線上の点(x,y)を(x,y)=(X/Z2,Y/Z3)となるヤコビアン座標表現(X,Y,Z)に変換し、2倍算処理を連続して行う場合には、初回は、
    0’=2Y0
    0=aZ0 4
    0=3X0 2+W0
    0=X0(Y0’)2
    0=(Y0’)4
    1=M0 2−2S0
    1’=2M0(S0−X1)−T0
    1=Y0’Z0
    を演算し、2回目以降はその連続した2倍算処理の時点(t+1)での演算結果(Xt+1,Yt+1’,Zt+1)を現在の座標(Xt,Yt’,Zt)を用いて、
    t=Tt-1t-1
    t=3Xt 2+Wt
    t=Xt(Yt’)2
    t=(Yt’)4
    t+1=Mt 2−2St
    t+1’=2Mt(St−Xt+1)−Tt
    t+1=Yt’Zt
    として演算処理を行い、最終回には、Yt+1=Yt+1’/2を演算する処理を、加算、減算、2倍算、3倍算及び1/2算については加算系演算手段により実行し、その他の乗算及び指数演算は乗算系演算手段により実行することを特徴とする素体上楕円曲線上の点の演算方法。
  3. 連続した2倍算処理の時点(t+1)での演算処理において、前回の時点(t)での演算結果(Xt,Yt’,Zt)を求める際に用いたWt-1=aZt-1 4とTt-1=(Yt-1’)4とを用いて2倍算処理を行うとともに、この2倍算処理において求めたWt=aZt 4とTt=(Yt’)4とを記憶しておくことを特徴とする、請求項2に記載の素体上楕円曲線上の点の演算方法。
  4. 連続した2倍算処理の時点(t+1)において、演算結果(Xt+1,Yt+1’,Zt+1)以外の情報を出力しないことを特徴とする、請求項2または3に記載の素体上楕円曲線上の点の演算方法。
  5. 2=x3+ax+b(mod p)で表される素体上楕円曲線上の点(x,y)に対応して(x,y)=(X/Z2,Y/Z3)となるヤコビアン座標表現とした点(X,Y,Z)および乗数が格納される領域を有する記憶手段と、
    乗算系の演算処理を実行する乗算系演算手段と加算系の演算処理を実行する加算系演算手段とを備え、前記記憶手段に格納された乗数を2進数系表現に変換し、この乗数に基づいて前記ヤコビアン座標に2倍算処理または加算処理と2倍算処理とを前記乗算系演算手段および加算系演算手段により選択的に行って次のヤコビアン座標を演算する演算手段と、
    前記演算手段の乗算系演算手段および加算系演算手段による演算結果を一時的に格納するレジスタ群と、
    前記演算手段により演算された次のヤコビアン座標を前記記憶手段に出力する出力手段と、
    を備え、前記演算手段により演算されて前記記憶手段に記憶されたヤコビアン座標を用いて、前記乗数に基づく演算を連続的に行うとともに、前記演算手段による演算が連続する2倍算処理である場合には、初回は、
    0’=2Y0
    0=aZ0 4
    0=3X0 2+W0
    0=X0(Y0’)2
    0=(Y0’)4
    1=M0 2−2S0
    1’=2M0(S0−X1)−T0
    1=Y0’Z0
    を演算し、2回目以降はその連続した2倍算処理の時点(t+1)での演算結果(Xt+1,Yt+1’,Zt+1)を現在の座標(Xt,Yt’,Zt)を用いて、
    t=Tt-1t-1
    t=3Xt 2+Wt
    t=Xt(Yt’)2
    t=(Yt’)4
    t+1=Mt 2−2St
    t+1’=2Mt(St−Xt+1)−Tt
    t+1=Yt’Zt
    として演算処理を行い、最終回には、Yt+1=Yt+1’/2を演算する処理を、加算、減算、2倍算、3倍算及び1/2算については加算系演算手段により実行し、その他の乗算及び指数演算は乗算系演算手段により実行することを特徴とする素体上楕円曲線上の点の演算装置。
JP36149198A 1998-12-18 1998-12-18 素体上楕円曲線上の点の演算方法およびその装置 Expired - Fee Related JP3615405B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP36149198A JP3615405B2 (ja) 1998-12-18 1998-12-18 素体上楕円曲線上の点の演算方法およびその装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP36149198A JP3615405B2 (ja) 1998-12-18 1998-12-18 素体上楕円曲線上の点の演算方法およびその装置

Publications (2)

Publication Number Publication Date
JP2000181347A JP2000181347A (ja) 2000-06-30
JP3615405B2 true JP3615405B2 (ja) 2005-02-02

Family

ID=18473799

Family Applications (1)

Application Number Title Priority Date Filing Date
JP36149198A Expired - Fee Related JP3615405B2 (ja) 1998-12-18 1998-12-18 素体上楕円曲線上の点の演算方法およびその装置

Country Status (1)

Country Link
JP (1) JP3615405B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4543143B2 (ja) * 2002-11-26 2010-09-15 富士通株式会社 楕円曲線暗号装置、楕円曲線暗号演算方法
US7702098B2 (en) * 2005-03-15 2010-04-20 Microsoft Corporation Elliptic curve point octupling for weighted projective coordinates
US7680268B2 (en) * 2005-03-15 2010-03-16 Microsoft Corporation Elliptic curve point octupling using single instruction multiple data processing
US8180047B2 (en) 2006-01-13 2012-05-15 Microsoft Corporation Trapdoor pairings
KR20080012634A (ko) 2006-08-04 2008-02-12 삼성전자주식회사 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
EP2090978A1 (en) * 2008-02-15 2009-08-19 Thomson Licensing An apparatus and a method for calculating a multiple of a point on an elliptic curve

Also Published As

Publication number Publication date
JP2000181347A (ja) 2000-06-30

Similar Documents

Publication Publication Date Title
US6243467B1 (en) Method of elliptic curve cryptographic digital signature generation and verification using reduced base tau expansion in non-adjacent form
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
US7379546B2 (en) Method for XZ-elliptic curve cryptography
US6202076B1 (en) Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
US6898284B2 (en) Cryptographic identification and digital signature method using efficient elliptic curve
Vanstone et al. Elliptic curve cryptosystems using curves of smooth order over the ring Z/sub n
US6769062B1 (en) Method and system of using an insecure crypto-accelerator
KR20070076440A (ko) 암호 처리 장치 및 암호 처리 방법과 컴퓨터 프로그램
US6993136B2 (en) Cryptographic key exchange method using efficient elliptic curve
US6480606B1 (en) Elliptic curve encryption method and system
JP2003098962A (ja) 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
JP2000132376A (ja) 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
JP4177526B2 (ja) 乗算剰余演算方法および乗算剰余回路
JP3615405B2 (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP3616897B2 (ja) モンゴメリ法による乗算剰余計算装置
US7062044B1 (en) Method of elliptic curve cryptographic key agreement using coefficient splitting
JP3797808B2 (ja) スカラー倍算方法およびその装置
KR100340102B1 (ko) 알에스에이 공개키 암호 고속화 장치 및 방법
JP2000137436A (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
US20020025034A1 (en) Cryptographic encryption method using efficient elliptic curve
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
JP3706398B2 (ja) 楕円曲線による署名、認証及び秘密通信方式
JP3591857B2 (ja) 擬似乱数生成方法及び装置、通信方法及び装置
JP4676071B2 (ja) べき乗剰余演算方法、逆数演算方法およびそれらの装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040427

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040624

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040713

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040913

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20040924

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041029

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081112

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091112

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101112

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101112

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111112

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111112

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121112

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20121112

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20131112

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees