JP3616897B2 - モンゴメリ法による乗算剰余計算装置 - Google Patents

モンゴメリ法による乗算剰余計算装置 Download PDF

Info

Publication number
JP3616897B2
JP3616897B2 JP01468198A JP1468198A JP3616897B2 JP 3616897 B2 JP3616897 B2 JP 3616897B2 JP 01468198 A JP01468198 A JP 01468198A JP 1468198 A JP1468198 A JP 1468198A JP 3616897 B2 JP3616897 B2 JP 3616897B2
Authority
JP
Japan
Prior art keywords
product
register
sum
bits
sum circuit
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
JP01468198A
Other languages
English (en)
Other versions
JPH11212456A (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 JP01468198A priority Critical patent/JP3616897B2/ja
Publication of JPH11212456A publication Critical patent/JPH11212456A/ja
Application granted granted Critical
Publication of JP3616897B2 publication Critical patent/JP3616897B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、例えば公開鍵暗号系のRSA暗号処理において、モンゴメリのアルゴリズム(Modulo Multiplication Without Trial Division, Peter L. Montgomery, Mathematics of Computation, Volume 44, Number 170, April 1985 pp. 519〜528 参照)を用いて乗算剰余計算を高速に行う乗算剰余計算装置に関する。
【0002】
【従来の技術】
近年におけるコンピュータネットワークの発達により、データベースを検索する機会、電子メール,電子ニュース等の電子化された情報をネットワークを経由して送受する機会が急速に増加してきている。更に、これらを利用して、オンラインショッピング等のサービスも提供されつつある。しかし、それに伴って、ネットワーク上の電子化されたデータを盗聴する、改竄する、他人になりすましてサービスを無償で受ける等の問題も指摘されている。特に無線を利用したネットワークにおいては、傍受が容易なためにこれらの問題を防止する対策が望まれている。
【0003】
これらの問題に対して暗号技術を応用した暗号化電子メール,利用者認証システムが提案され、種々のネットワークにも導入されつつある。この意味でコンピュータネットワークにおいては暗号化が必須の技術であるといえる。このような暗号技術の中の一つにディジタル署名即ち認証に適した公開鍵暗号方式があるが、暗号化/復号に大量の処理が必要なために高速化が望まれており、様々な高速化アルゴリズムが発表されている。
【0004】
暗号化方式は、大別すると秘密鍵暗号系と公開鍵暗号系との二つに分類できる。秘密鍵暗号系は、送信者と受信者とが同じ暗号鍵を持つことにより暗号通信を行う方式である。即ち、秘密鍵暗号系では、あるメッセージを秘密の暗号鍵に基づいて暗号化して相手に送り、受け手はこの暗号鍵を用いて暗号文を復号して元のメッセージに戻して情報を入手する。
【0005】
公開鍵暗号系は、送信者が公開されている受信者の公開鍵でメッセージを暗号化して送信し、受信者が自分の秘密鍵でその暗号化メッセージを復号することにより通信を行う方式である。即ち、公開鍵暗号系では、公開鍵は暗号化のための鍵、秘密鍵は公開鍵により暗号化された暗号を復号するための鍵であり、公開鍵で暗号化した暗号は秘密鍵でのみ復号することができる。
【0006】
秘密鍵暗号系では、個人が秘密に保管しなければならない鍵が通信相手の数だけ必要であり、必要な総鍵数はn人のネットワークの場合(n−1)/2個である。また、初めて通信する相手に対しては、何らかの方法で秘密鍵の配送が必要であるという欠点がある。この欠点を解消するために、大規模なネットワークでは鍵管理センタを設置し、センタとの間の秘密鍵のみを保管し、暗号通信を行う場合はセンタから送信相手との秘密鍵を得る方法が用いられる。この場合、秘密鍵の総数はn個となる。
【0007】
一方、公開鍵暗号系では、個人が秘密に保管する鍵は自分の秘密鍵のみであり、必要な総秘密鍵数もn人のネットワークの場合n個である。また、初めて通信する相手に対しては、公開鍵の配送を行えば良く、鍵管理センタを設置して、ユーザの公開鍵をn個公開簿に登録し、センタから送信相手の公開鍵を得る方法が用いられる。この場合、センタは公開鍵の改竄を防ぐだけで、秘密に保管する必要がない。但し、公開鍵方式は秘密鍵方式に比べて鍵のビット数が大きいため保管に要するファイルサイズは大きくなる。
【0008】
また、認証の場合、秘密鍵暗号系では、例えば送信するメッセージを秘密鍵で圧縮変換し、送信文に付加して送り、受信側では同様に圧縮変換して比較する方式がとられている。しかし、送受信が同じ鍵であるため、受信者は認証データを偽造することができる。これに対して、公開鍵暗号系では、秘密鍵で暗号化することができるのは本人だけであるという特徴を利用する。送信者はメッセージを圧縮変換して秘密鍵で暗号化し、送信文に付加して送り、受信者は送信者の公開鍵で付加されたデータを復号し、同様に圧縮変換したものと比較する方式がとられている。この場合、受信者は不正ができない。
【0009】
このように認証系では公開鍵暗号系の技術は必要不可欠であるといえる。しかし、公開鍵暗号系には、暗号化/復号に大量の処理が必要であるという大きな欠点があるため、一般には処理が速い秘密鍵暗号系をメッセージの暗号化に、公開鍵暗号系は認証用にというように組み合わせて用いられる場合が多い。
【0010】
公開鍵暗号系の中で、現在最も有力なものが1977年にリヴェスト(Rivest),シャミア(Shamir)及びエイドルマン(Adlman)の三人によって発明されたRSA暗号である。このRSA暗号の基本原理は次のようなものである。
【0011】
(RSAの基本アルゴリズム)
暗号鍵(e,N)と対応する復号鍵(d,N)とにおいて、eとNとは公開鍵であり、dは秘密鍵である。平文をM,暗号文をCとすると、暗号化Eと復号Dとのアルゴリズムは次のようにあらわされる。
C=E(M)=Mmod N
M=D(C)=Cmod N
但し、d・e=1mod LCM{(p−1),(q−1)}
N=p・q
LCM:最小公倍数(lowest common multiple)
p,qは大きな素数
【0012】
通常、e,d,M,Nなどは1024ビット程度の大きな整数が用いられているので、高速指数計算法を使用しても1回のRSA演算で平均1500回程度の多重精度乗算と剰余算とを行わなければならない。特に剰余計算は、近似法,剰余テーブル方式,モンゴメリのアルゴリズム等、多くの高速化手法が提案されている。このような、RSA暗号に代表される公開鍵暗号系の多くで利用される、べき乗剰余アルゴリズムを高速に処理するためには、1回あたりの剰余アルゴリズムの高速化が要求される。
【0013】
この剰余演算の高速化を実現する一方法であるモンゴメリのアルゴリズムについて説明する。
(モンゴメリのアルゴリズム)
モンゴメリのアルゴリズムは、剰余の法N(N>1)と、剰余の法Nと互いに素である基数R(R>N)とを用いると、被剰余数TからTR−1mod Nの計算が基数Rによる除算のみで行えることを利用して、Nによる除算を用いることなく剰余計算を行うアルゴリズムである。ここで、N,N′,R,R−1及びTは整数であり、被剰余数Tは0≦T<R・N、R−1は剰余の法Nの上での基数Rの逆数であり、R・R−1−N・N′=1(0≦R−1<N,0≦N′<R)の関係を満たす。
【0014】
更に、この基数Rに2のベキ乗数を使用した場合、基数Rによる除算をシフト操作に置き換えることができるため、T→TR−1mod Nの計算の高速処理が可能となる。次に、アルゴリズム1として、T→TR−1mod NのアルゴリズムREDC(T)を示す。但し、アルゴリズム1において(T+m・N)/Rは必ず割り切れることが証明されている。
【0015】
(アルゴリズム1)
T→TR−1mod NのアルゴリズムY=REDC(T)は次のようにあらわされる。
Figure 0003616897
【0016】
1回のREDCでは、剰余Tmod NではなくTR−1mod Nが求められるだけである。よって、剰余Tmod Nを求めるためには、次に示すようにREDC(T)と予め求めておいたRmod Nとの積で、再びREDCを行えば良い。
Figure 0003616897
このようにして、剰余Tmod Nを求めることができる。
【0017】
(REDCの多重精度計算への拡張)
次に、剰余の法Nまたは基数Rが多倍長即ち多重精度である場合について、REDCのアルゴリズムを拡張する。剰余の法N,基数Rが多重精度である場合、REDCの(Tmod R)・N′及びM・Nの計算は、多重精度×多重精度の処理となり、汎用の計算機では非常に大きな処理量と処理時間とが必要となる。そこで、この部分を多重精度×単精度の処理で行えるように拡張したアルゴリズム2を示す。
【0018】
(アルゴリズム2)
REDCを多重精度へ拡張したアルゴリズムは次に示すようになる。
被剰余数T,パラメータN′,出力用変数Yが何れもr進数で、
T=(t2g−1,t2g−2,…,t
N′=(n′g−1 ,n′g−2 ,…,n′
Y=(y,yg−1 ,…,y
R=r
r=2
とあらわされる場合、次に示すj=0〜g−1の繰り返し処理によりTR−1mod Nを多重精度×単精度として求めることができる。ここで単精度とはr進数1桁のこととし、同じ文字を使用した場合、基本的に大文字を多重精度、小文字を単精度、小文字の添字を多重精度での桁の位置とする。
【0019】
Figure 0003616897
このようにして得られるTR−1mod Nと、上述したように予め求めておいたRmod Nとの積で再びREDCを行うことにより、TR−1mod Nを求めることができる。
【0020】
(REDCの多重精度乗算剰余への拡張)
次に、REDCのアルゴリズムを乗算剰余演算に拡張する。上記のアルゴリズムにおいて、入力Tは0≦T<R・Nを満たす値であるが、実際のRSA演算では、入力Tが整数A,B(0≦A,B<N)の乗算結果であることが多い。その場合、整数A,Bの乗算も多重精度整数演算であるため、多重精度拡張REDCと同様の繰り返し計算が行われる。この場合、乗算とREDCとを別々に繰り返し計算すると、繰り返し計算制御によるロスが2倍になってしまう。そこで、乗算とREDCとを同一の繰り返しループで行えるように拡張したアルゴリズム3を示す。
【0021】
(アルゴリズム3)
REDCを多重精度乗算剰余へ拡張したアルゴリズムREDC(A×B)は次に示すようになる。乗算する2数A,B,パラメータN′,出力用変数Yが何れもr進数で、
A=(ag−1 ,ag−2 ,…,a
B=(bg−1 ,bg−2 ,…,b
N′=(n′g−1 ,n′g−2 ,…,n′
Y=(y,yg−1 ,…,y
R=r
r=2
とあらわされる場合、次に示すj=0〜g−1の繰り返し処理により、ABR−1mod Nを多重精度×単精度の計算として求めることができる。
【0022】
Figure 0003616897
このようにして得られるABR−1mod Nと、上述したように予め求めておいたRmod Nとの積で再びREDCを行うことにより、ABR−1mod Nを求めることができる。
【0023】
(REDCの単精度×単精度処理への拡張)
アルゴリズム3では、多重精度のモンゴメリ乗算剰余を多重精度×単精度で実現可能としているが、この多重精度×単精度の計算部分をさらに単精度×単精度の計算を組み合わせて行えるよう拡張する。この場合、A×bの計算部分とm×Nの計算部分とが繰り返し計算となり、上述の場合と同様に2つの乗算を別々に繰り返し計算すると、繰り返し計算制御によるロスが2倍になってしまう。そこで、2つの乗算を同一の繰り返しループで行えるようにすれば、ロスの低減が可能である。2つの乗算を同一の繰り返しループで行えるように拡張したアルゴリズム4を示す。
【0024】
(アルゴリズム4)
REDCを単精度×単精度へ拡張したアルゴリズムREDC(A×B)は次に示すようになる。乗算する2数A,B,パラメータN′,出力用変数Y,キャリー変数Cが何れもr進数で、
A=(ag−1 ,ag−2 ,…,a
B=(bg−1 ,bg−2 ,…,b
N′=(n′g−1 ,n′g−2 ,…,n′
Y=(y,yg−1 ,…,y
C=(c,c
R=r
r=2
とあらわされ、r進1桁の一時変数tmp1,tmp2,tmp3,tmp4とする場合、次に示すi,jの繰り返し処理によりABR−1mod Nを単精度×単精度の計算で求めることができる。
【0025】
Figure 0003616897
【0026】
ここで、( )は、括弧内のr進数1桁の変数を多重精度として扱うことを示している。tmp3,cはr進数1桁で表現しているが、内容は1ビットの値である。出力用変数Yについて、計算に使用する値がyのとき、出力がyi−1 に格納されるのは、アルゴリズム3におけるY=Y/rの機能をこれにより実現しているためである。また、便宜上、外側のループをjループ、内側のループをiループと呼び、jループの始めからiループまでをコア前処理、iループ内の処理をコア処理、iループの終わりからjループの終わりまでをコア後処理と呼ぶこととする。
【0027】
図11は、上述したアルゴリズム4のコア処理を実行する乗算剰余計算装置の構成図である。図11に示す乗算剰余計算装置は、内部で乗算及び加算を行うα積和回路51及びβ積和回路52と、乗算する一方の数A:(ag−1 ,ag−2 ,…,a)を保持するAレジスタ53と、乗算する一方の数B:(bg−1 ,bg−2 ,…,b)を保持するBレジスタ54と、剰余の法N:(ng−1 ,ng−2 ,…,n)を保持するNレジスタ55と、β積和回路52の出力の下位kビットを格納するYレジスタ56と、モンゴメリのパラータmを保持するmレジスタ57と、α積和回路51の出力の上位(k+1)ビット及びβ積和回路52の出力の上位kビットを加算するキャリー計算部としての加算回路58と、加算回路58の加算結果を格納するCレジスタ59と、jの値と0とを比較して出力を選択する選択回路60とを有する。
【0028】
また、α積和回路51,β積和回路52の内部構成を図12(a),(b)に夫々示す。α積和回路51は、Aレジスタ53及びBレジスタ54からの出力を乗算するkビット乗算器511 と、kビット乗算器511 の出力及び選択回路60(Yレジスタ56)の出力を加算する2kビット加算器512 と、2kビット加算器512 の出力及びCレジスタ59の出力を加算する2k+1ビット加算器513 とを有する。β積和回路52は、Nレジスタ55及びmレジスタ57からの出力を乗算するkビット乗算器521 と、kビット乗算器521 の出力及びα積和回路51からの下位kビットの出力を加算する2kビット加算器522 とを有する。
【0029】
図13は、アルゴリズム4のコア処理の内容を示す説明図である。α積和回路51内にて、Aレジスタ53の出力a(kビット)とBレジスタ54の出力b(kビット)とを乗算し、その乗算結果(2kビット)に、選択回路60(Yレジスタ56)の出力(kビット)とCレジスタ59の出力(k+1ビット)とを加算する。なお、選択回路60は、jの値と0とを比較し、jの値が0である場合にはα積和回路51へ0を出力し、jの値が0でない場合にはYレジスタ56の格納値yをα積和回路51へ出力する。α積和回路51は、その演算結果(2k+1ビット)の上位(k+1)ビットを加算回路58へ出力し、その下位kビットをβ積和回路52へ出力する。
【0030】
β積和回路52内にて、Nレジスタ55の出力n(kビット)とmレジスタ57の出力(kビット)とを乗算し、その乗算結果(2kビット)にα積和回路51からの下位kビット出力を加算する。β積和回路52は、その演算結果(2kビット)の上位kビットを加算回路58へ出力し、その下位kビットをYレジスタ56へ出力する。Yレジスタ56は、そのkビットのデータを値yi−1 として格納する。
【0031】
加算回路58は、α積和回路51からの出力(k+1ビット)とβ積和回路52からの出力(kビット)とを加算し、その加算結果(k+1ビット)をCレジスタ59へ出力する。Cレジスタ59は、これを格納する。
【0032】
【発明が解決しようとする課題】
上述したような従来の乗算剰余計算装置の構成では、2つの乗算を同一の繰り返しループで行えるが、Cレジスタ59から出力される次ループへのキャリーが(k+1)ビットとなり、そのためα積和回路51の出力が(2k+1)ビットとなってしまっており、1つ目の積和回路(α積和回路51)の構成を単純化できないという問題がある。
【0033】
また、キャリー計算部である加算回路58において、次回演算用のキャリーが2つのα積和回路51及びβ積和回路52での演算結果に基づいて計算されるため、2つ目の積和回路(β積和回路52)での演算が終了しなければ、次回の1つ目の積和回路(α積和回路51)での演算を行うことができず、処理能率が悪いという問題がある。
【0034】
本発明は斯かる事情に鑑みてなされたものであり、キャリーの伝搬を各積和回路でのループ内に押さえることにより、2つの積和回路での演算を独立して行え、つまり、2つ目の積和回路での積和を行っている間に1つ目の積和回路で次回の積和を行え、これによりパイプライン処理が可能になるモンゴメリ法による乗算剰余計算装置を提供することを目的とする。
【0036】
【課題を解決するための手段】
請求項1に係るモンゴメリ法による乗算剰余計算装置は、モンゴメリのアルゴリズムを用いて乗算剰余計算を行う装置において、積和演算を行いその演算結果を上位kビットと下位kビットとに分けて出力する第1積和回路と、積和演算を行いその演算結果を上位kビットと下位kビットとに分けて出力する第2積和回路と、乗算される2数を保持する第1及び第2レジスタと、前記第2積和回路の下位kビット出力を保持し、前記第2積和回路のその次の回の下位kビット出力を格納する第3レジスタと、前記第1積和回路の上位kビット出力を保持し、前記第1積和回路のその次の回の上位kビット出力を格納する第4レジスタと、剰余の法を保持する第5レジスタと、モンゴメリのアルゴリズムにおけるパラメータの値を保持する第6レジスタと、前記第2積和回路の上位kビット出力を保持し、前記第2積和回路のその次の回の上位kビット出力を格納する第7レジスタとを備え、前記第1積和回路は、前記第1及び第2レジスタに保持された2数の所定ビットの値を乗算し、その乗算結果に前記第3レジスタに保持された数の所定ビットの値及び前記第4レジスタに保持された値を加算する演算を行い、前記第2積和回路は、前記第5レジスタに保持された数の所定ビットの値と前記第6レジスタに保持された値とを乗算し、その乗算結果に前記第1積和回路の下位kビット出力及び前記第7レジスタに保持された値を加算する演算を行うように構成したことを特徴とする。
【0040】
請求項に係るモンゴメリ法による乗算剰余計算装置は、請求項において、前記第1積和回路は、前記第1及び第2レジスタに保持された2数の所定ビットの値を乗算し、その乗算結果に前記第3レジスタに保持された数の所定ビットの値を加算し、その加算結果に前記第4レジスタに保持された値を加算するように構成したことを特徴とする。
【0041】
請求項に係るモンゴメリ法による乗算剰余計算装置は、請求項において、前記第1積和回路は、前記第1及び第2レジスタに保持された2数の所定ビットの値を乗算し、その乗算結果に前記第4レジスタに保持された値を加算し、その加算結果に前記第3レジスタに保持された数の所定ビットの値を加算するように構成したことを特徴とする。
【0042】
請求項に係るモンゴメリ法による乗算剰余計算装置は、請求項において、前記第2積和回路は、前記第5レジスタに保持された数の所定ビットの値と前記第6レジスタに保持された値とを乗算し、その乗算結果に前記第1積和回路の下位kビット出力を加算し、その加算結果に前記第7レジスタに保持された値を加算するように構成したことを特徴とする。
【0043】
請求項に係るモンゴメリ法による乗算剰余計算装置は、請求項において、前記第2積和回路は、前記第5レジスタに保持された数の所定ビットの値と前記第6レジスタに保持された値とを乗算し、その乗算結果に前記第7レジスタに保持された値を加算し、その加算結果に前記第1積和回路の下位kビット出力を加算するように構成したことを特徴とする。
【0044】
請求項に係るモンゴメリ法による乗算剰余計算装置は、請求項の何れかにおいて、前記第2積和回路による演算中に、前記第1積和回路によりその次の回の演算を行うように構成したことを特徴とする。
【0045】
請求項7に係るモンゴメリ法による乗算剰余計算装置は、暗号化/復号化のためのモンゴメリ法による乗算剰余計算を行う装置において、2つのkビットの数を乗算し、その乗算結果に2つのkビットの数を加算する積和演算を行う第1積和手段と、2つのkビットの数を乗算し、その乗算結果に2つのkビットの数を加算する積和演算を行う第2積和手段とを備え、前記第1積和手段及び第2積和手段は、演算結果を上位ビットと下位ビットとに分けて出力し、各自身の上位ビットの出力を各自身の次の回の加算用の入力とする構成を有し、前記第1積和手段の下位ビットの出力を前記第2積和手段の加算用の入力とする構成を有し、前記第2積和手段が演算を行う間、前記第1積和手段で次の回の演算を行うように、パイプライン処理すべく構成したことを特徴とする。
【0047】
請求項に係るモンゴメリ法による乗算剰余計算装置は、請求項において、前記第1積和手段及び第2積和手段が演算するビット数が等しいことを特徴とする。
【0050】
本発明の乗算剰余計算装置では、2つの積和回路から出力される上位データを加算するのではなく、各積和回路におけるキャリー用のレジスタを各別に設けて自身の積和回路にキャリーを戻す構成とすることにより、第1発明と同様に1つ目の積和回路の構成の単純化を図れると共に、更に各積和回路のキャリー処理が閉じているので、2つ目の積和回路の動作中に、1つ目の積和回路の次回の動作が可能となる。
【0051】
【発明の実施の形態】
以下、本発明をその実施の形態を示す図面を参照して具体的に説明する。
(第1発明)
1つ目の積和回路へのキャリーをkビットにした第1発明について説明する。第1発明では、1つ目の積和回路の出力と2つ目の積和回路の出力との加算結果である(k+1)ビットのキャリーを上位1ビットと下位kビットとに分離し、その下位kビットはキャリー変数c1 として1つ目の積和回路に戻し、その上位1ビットはもう1つのキャリー変数c2 として、キャリー計算用の加算回路に戻す。この場合のアルゴリズム5を以下に示す。
【0052】
(アルゴリズム5)
乗算する2数A,B,パラメータN′,出力用変数Yが何れもr進数で、
A=(ag−1 ,ag−2 ,…,a
B=(bg−1 ,bg−2 ,…,b
N′=(n′g−1 ,n′g−2 ,…,n′
Y=(y,yg−1 ,…,y
R=r
r=2
とあらわされ、r進1桁の一時変数tmp1,tmp2,tmp4,キャリー変数c1 ,c2 とする場合、次に示すi,jの繰り返し処理によりABR−1mod Nを単精度×単精度の計算として求めることができる。
【0053】
Figure 0003616897
ここで、( )は、括弧内のr進数1桁の変数を多重精度として扱うことを示している。またキャリー変数c2 はr進数1桁で表現しているが、内容は1ビットの値である。
【0054】
図1は、上述したアルゴリズム5のコア処理を実行する乗算剰余計算装置の構成図である。図1に示す乗算剰余計算装置は、内部で乗算及び加算を行う第1積和回路1及び第2積和回路2と、乗算する一方の数A:(ag−1 ,ag−2 ,…,a)を保持する第1レジスタとしてのAレジスタ3と、乗算する一方の数B:(bg−1 ,bg−2 ,…,b)を保持する第2レジスタとしてのBレジスタ4と、第2積和回路2の前回の下位kビット出力を保持し次回の下位kビット出力を格納する第3レジスタとしてのYレジスタ5と、キャリー変数c1 を保持する第4レジスタとしてのc1 レジスタ6と、剰余の法N:(ng−1 ,ng−2 ,…,n)を保持する第5レジスタとしてのNレジスタ7と、モンゴメリアルゴリズムにおけるパラータmを保持する第6レジスタとしてのmレジスタ8と、キャリー変数c2 を保持する第7レジスタとしてのc2 レジスタ9と、第1積和回路1の上位kビット出力,第2積和回路2の上位kビット出力及びc2 レジスタ9の出力を加算するキャリー計算部としての加算回路10と、jの値と0とを比較してその出力を選択する選択回路11とを有する。
【0055】
また、第1積和回路1,第2積和回路2の内部構成を図2(a),(b)に夫々示す。第1積和回路1は、kビット乗算器101 と2kビット加算器102 と2kビット加算器103 とを有する。kビット乗算器101 は、Aレジスタ3及びBレジスタ4からの出力を乗算し、2kビット加算器102 は、kビット乗算器101 の出力と選択回路11(Yレジスタ5)の出力とを加算し、2kビット加算器103 は、2kビット加算器102 の出力とc1 レジスタ6の出力とを加算する。なお、図2(a)に示す構成例では、乗算結果に選択回路11(Yレジスタ5)の出力を先に加算し、その後にc1 レジスタ6の出力を加算するようになっているが、これとは逆に、先にc1 レジスタ6の出力、その後に選択回路11(Yレジスタ5)の出力を加算するように構成しても良い。
【0056】
第2積和回路2は、Nレジスタ7及びmレジスタ8からの出力を乗算するkビット乗算器201 と、kビット乗算器201 の出力及び第1積和回路1からの下位kビットの出力を加算する2kビット加算器202 とを有する。
【0057】
図3は、アルゴリズム5のコア処理の内容を示す説明図である。第1積和回路1内にて、Aレジスタ3の出力a(kビット)とBレジスタ4の出力b(kビット)とを乗算し、その乗算結果(2kビット)に、選択回路11(Yレジスタ5)の出力(kビット)とc1 レジスタ6の出力(kビット)とを加算する。なお、選択回路11は、jの値と0とを比較し、jの値が0である場合には第1積和回路1へ0を出力し、jの値が0でない場合にはYレジスタ5の格納値yを第1積和回路1へ出力する。第1積和回路1は、その演算結果(2kビット)の上位kビットを加算回路10へ出力し、その下位kビットを第2積和回路2へ出力する。
【0058】
第2積和回路2内にて、Nレジスタ7の出力n(kビット)とmレジスタ8の出力(kビット)とを乗算し、その乗算結果(2kビット)に、第1積和回路1からの出力下位kビットを加算する。第2積和回路2は、その演算結果(2kビット)の上位kビットを加算回路10へ出力し、その下位kビットをYレジスタ5へ出力する。Yレジスタ5は、そのkビットのデータを値yi−1 として格納する。
【0059】
加算回路10は、第1積和回路1からの出力(kビット)と第2積和回路2からの出力(kビット)とc2 レジスタ9からの出力(1ビット)とを加算する。そして、次回の演算用として、その加算結果(k+1ビット)の上位1ビットをc2 レジスタ9へ、その下位kビットをc1 レジスタ6へ夫々出力する。各c1 レジスタ6,c2 レジスタ9は、これを格納する。
【0060】
(第2発明)
キャリー用のレジスタを各積和回路毎に設けた第2発明について説明する。第2発明では、各積和回路におけるキャリー用のレジスタを各別に設けて自身の積和回路にキャリー変数を戻す構成とする。このアルゴリズム6を以下に示す。
【0061】
(アルゴリズム6)
乗算する2数A,B,パラメータN′,出力用変数Yが何れもr進数で、
A=(ag−1 ,ag−2 ,…,a
B=(bg−1 ,bg−2 ,…,b
N′=(n′g−1 ,n′g−2 ,…,n′
Y=(y,yg−1 ,…,y
R=r
r=2
とあらわされ、r進1桁の一時変数tmp1,キャリー変数c3 ,c4 とする場合、次に示すi,jの繰り返し処理によりABR−1mod Nを単精度×単精度の計算として求めることができる。
【0062】
Figure 0003616897
【0063】
図4は、上述したアルゴリズム6のコア処理を実行する乗算剰余計算装置の構成図である。図4に示す乗算剰余計算装置は、内部で乗算及び加算を行う第3積和回路21及び第4積和回路22と、図1に示すものと同様の第1レジスタとしてのAレジスタ3,第2レジスタとしてのBレジスタ4,第3レジスタとしてのYレジスタ5,第5レジスタとしてのNレジスタ7,第6レジスタとしてのmレジスタ8及び選択回路11と、キャリー変数c3 を保持する第4レジスタとしてのc3 レジスタ26と、キャリー変数c4 を保持する第7レジスタとしてのc4 レジスタ29とを有する。
【0064】
なお、第3積和回路21及び第4積和回路22の内部構成は、図2(a)に示す第1積和回路1の内部構成と同じであり、各積和回路21及び22は、kビット乗算器101 と2kビット加算器102 と2kビット加算器103 とから構成されている。
【0065】
第3積和回路21のkビット乗算器101 は、Aレジスタ3及びBレジスタ4からの出力を乗算し、2kビット加算器102 は、kビット乗算器101 の出力と選択回路11(Yレジスタ5)の出力とを加算し、2kビット加算器103 は、2kビット加算器102 の出力とc3 レジスタ26の出力とを加算する。なお、図2(a)に示す構成例では、乗算結果に選択回路11(Yレジスタ5)の出力を先に加算し、その後にc3 レジスタ26の出力を加算するようになっているが、これとは逆に、先にc3 レジスタ26の出力、その後に選択回路11(Yレジスタ5)の出力を加算するように構成しても良い。
【0066】
一方、第4積和回路22のkビット乗算器101 は、Nレジスタ7及びmレジスタ8からの出力を乗算し、2kビット加算器102 は、kビット乗算器101 の出力と第3積和回路21からの下位kビットの出力とを加算し、2kビット加算器103 は、2kビット加算器102 の出力とc4 レジスタ29の出力とを加算する。なお、図2(a)に示す構成例では、乗算結果に第3積和回路21からの下位kビットの出力を先に加算し、その後にc4 レジスタ29の出力を加算するようになっているが、これとは逆に、先にc4 レジスタ29の出力、その後に第3積和回路21からの下位kビットの出力を加算するように構成しても良い。
【0067】
図5は、アルゴリズム6のコア処理の内容を示す説明図である。第3積和回路21内にて、Aレジスタ3の出力a(kビット)とBレジスタ4の出力b(kビット)とを乗算し、その乗算結果(2kビット)に、選択回路11(Yレジスタ5)の出力(kビット)とc3 レジスタ26の出力(kビット)とを加算する。なお、選択回路11は、jの値と0とを比較し、jの値が0である場合には第3積和回路21へ0を出力し、jの値が0でない場合には第3Yレジスタ5の格納値yを積和回路21へ出力する。第3積和回路21は、その演算結果(2kビット)の上位kビットをc3 レジスタ26へ出力し、その下位kビットを第4積和回路22へ出力する。c3 レジスタ26は、このkビットを次回の演算用のキャリー変数として格納する。
【0068】
第4積和回路22内にて、Nレジスタ7の出力n(kビット)とmレジスタ8の出力m(kビット)とを乗算し、その乗算結果(2kビット)に、第3積和回路21からの下位kビット出力を加算する。第4積和回路22は、その演算結果(2kビット)の上位kビットをc4 レジスタ29へ出力し、その下位kビットをYレジスタ5へ出力する。c4 レジスタ29は、このkビットを次回の演算用のキャリー変数として格納する。また、Yレジスタ5は、そのkビットのデータを値yi−1 として格納する。
【0069】
図6は、モンゴメリ法による乗算剰余処理の一例を示すフローチャートである。このフローチャートにおいて、jループが(アルゴリズム3)のループ処理に当たる。jループの内側では、A×b及びm×Nの多重精度×単精度の部分乗算を行っている。iループは、A×b及びm×Nの多重精度×単精度の計算を単精度×単精度の部分乗算で行っている部分である。iループの内部ではa×bとm×nとの部分乗算を行っている。
【0070】
次に、第2発明における更なる具体例について説明する。
以下の例では、N,A,Bのビット長を1024ビット、g=32、処理単位k=32、R=21024、r=232とする。
【0071】
(コア前処理)
図7は、コア前処理を行う構成の一例を示す図である。31はモンゴメリ計算用のパラメータn′を保持するレジスタ、32は第3積和回路21の出力とレジスタ31の出力とを乗算する乗算回路である。
【0072】
このコア前処理では、コア処理で使用するc3 レジスタ26,c4 レジスタ29及びmレジスタ8の初期化を行っている。第3積和回路21は、まず、Aレジスタ3,Bレジスタ4からの入力a,bを乗算し、その乗算結果とYレジスタ5からの入力yとを加算する。なお、コア処理と同じ積和回路を使用する場合は、更にその結果と0とを加算する。そして、結果の上位32ビットをc3 レジスタ26に格納し、下位32ビットを第3積和回路21とパラメータmを計算するための乗算回路32とへ出力する。乗算回路32は、第3積和回路21の出力とレジスタ31の出力n′とを乗算し、その乗算結果の下位32ビットをmレジスタへに出力する。
【0073】
第4積和回路22は、Nレジスタ7からの入力nとmレジスタ8の値とを乗算し、その乗算結果と第3積和回路21からの出力とを加算する。なお、コア処理と同じ積和回路を使用する場合は、更にその結果と0とを加算する。そして、結果の上位32ビットをc4 レジスタ29に格納する。下位32ビットは使用しない。
【0074】
(コア処理)
図8は、iループ内部処理であるコア処理を行う構成の一例を示す図である。Yレジスタ5は前回の処理結果の保持及び今回の処理結果の出力用レジスタである。選択回路11は、(アルゴリズム3)でY=0の処理に相当するものである。
【0075】
第3積和回路21は、まず、Aレジスタ3,Bレジスタ4からの入力a,bを乗算し、その乗算結果とYレジスタ5からの入力yとを加算し、更にその加算結果とc3 レジスタ26の値とを加算する。そして、結果の上位32ビットをc3 レジスタ26に格納し、下位32ビットを第4積和回路22へ出力する。
【0076】
第4積和回路22は、まず、Nレジスタ7からの入力nとmレジスタ8の値とを乗算し、その乗算結果と第3積和回路21からの出力とを加算し、更にその加算結果とc4 レジスタ29の値とを加算する。そして、結果の上位32ビットをc4 レジスタ29に格納し、下位32ビットをYレジスタ5のyi−1 に格納する。(アルゴリズム3)のY=Y/rの処理は、i回目の計算結果をyi−1 に格納することで実現している。
【0077】
(コア後処理)
図9は、コア後処理を行う構成の一例を示す図である。33はc3 レジスタ26の出力とc4 レジスタ29の出力と選択回路11の出力とを加算する加算回路、34は加算回路33からのキャリー出力を0,1と比較し、0であれば0を、1であれば1を、Yレジスタ5へ出力する選択回路である。
【0078】
このコア後処理では、コア処理終了後のキャリー変数c3 ,c4 の値の処理を行っている。c3 レジスタ26,c4 レジスタ29の値及びYレジスタ5からの入力y32を加算回路33に入力し、その加算結果をYレジスタ5のy31に出力し、キャリーを処理単位である32ビットの値に変換してYレジスタ5のy32に出力する。ここで、出力からもわかるように、y32の値はYレジスタ5では32ビットとして扱われているが、実際は1ビットの値であるので、加算結果は32ビット+キャリーの範囲で収まる。
【0079】
(積和回路の構成)
図10は、上述の構成例で用いた積和回路の構成の一例を示す図である。ここでは、全ての処理単位を32ビットになるように構成している。積和回路は、1個の32ビット乗算器41と、4個の32ビット加算器42,43,44,45とを有する。
【0080】
A,Bの入力値は32ビット乗算器41で乗算され、上位32ビットと下位32ビットとの2つで出力される。32ビット加算器43は、32ビット乗算器41の出力下位32ビットと入力Rの値とを加算し、その加算結果の出力32ビットを32ビット加算器45へ、キャリーを32ビット加算器42へそれぞれ出力する。32ビット加算器42は、32ビット乗算器41の出力上位32ビットと32ビット加算器43のキャリー出力とを加算し、その加算結果の出力32ビットを32ビット加算器44へ出力する。この加算ではキャリーが発生しないことが理論的に証明されている。
【0081】
32ビット加算器45は、32ビット加算器43の出力と入力Cの値とを加算し、その加算結果の出力32ビットは積和回路のL出力(下位32ビット)となり、キャリーは32ビット加算器44へ出力される。32ビット加算器44は、32ビット加算器42の出力と32ビット加算器45のキャリー出力とを加算し、その加算結果の出力32ビットは積和回路のH出力(上位32ビット)となる。この加算ではキャリーが発生しないことが理論的に証明されている。
【0082】
なお、本発明の乗算剰余計算装置は、ハードウェアに限らず、同様の機能構成の少なくとも一部をソフトウェアで実現することもでき、そのような場合にも処理の高速化を達成することができる。例えば、ソフトウェアで第2発明の乗算剰余計算装置を実現し、パイプライン処理が可能な32ビットプロセッサ上で実行した場合、乗算剰余処理時間を比較すれば、従来の方式の約半分の時間で処理が可能となり、その効果が明らかである。
【0083】
【発明の効果】
以上説明したように、本発明によれば、モンゴメリ法を用いた乗算剰余計算について、全ての処理を処理単位内で行えるので、DSP,マイクロコントローラ等の上のソフトウェアとして実現が容易になる。
【0084】
また、本発明によれば、キャリー伝搬を各積和毎に制限でき、一方の積和処理中にもう一方の積和処理も可能となるので、パイプライン処理などによって、高速に乗算剰余計算を行うことが可能である。
【図面の簡単な説明】
【図1】本発明の乗算剰余計算装置(第1発明)の構成図である。
【図2】積和回路の構成図である。
【図3】本発明の乗算剰余計算装置(第1発明)の動作説明図である。
【図4】本発明の乗算剰余計算装置(第2発明)の構成図である。
【図5】本発明の乗算剰余計算装置(第2発明)の動作説明図である。
【図6】モンゴメリ法による乗算剰余処理の一例を示すフローチャートである。
【図7】コア前処理を行うための構成図である。
【図8】コア処理を行うための構成図である。
【図9】コア後処理を行うための構成図である。
【図10】積和回路の構成図である。
【図11】従来の乗算剰余計算装置の構成図である。
【図12】従来の積和回路の構成図である。
【図13】従来の乗算剰余計算装置の動作説明図である。
【符号の説明】
1 第1積和回路
2 第2積和回路
3 Aレジスタ
4 Bレジスタ
5 Yレジスタ
6 c1 レジスタ
7 Nレジスタ
8 mレジスタ
9 c2 レジスタ
10 加算回路
21 第3積和回路
22 第4積和回路
26 c3 レジスタ
29 c4 レジスタ

Claims (8)

  1. モンゴメリのアルゴリズムを用いて乗算剰余計算を行う装置において、
    積和演算を行いその演算結果を上位kビットと下位kビットとに分けて出力する第1積和回路と、積和演算を行いその演算結果を上位kビットと下位kビットとに分けて出力する第2積和回路と、乗算される2数を保持する第1及び第2レジスタと、前記第2積和回路の下位kビット出力を保持し、前記第2積和回路のその次の回の下位kビット出力を格納する第3レジスタと、前記第1積和回路の上位kビット出力を保持し、前記第1積和回路のその次の回の上位kビット出力を格納する第4レジスタと、剰余の法を保持する第5レジスタと、モンゴメリのアルゴリズムにおけるパラメータの値を保持する第6レジスタと、前記第2積和回路の上位kビット出力を保持し、前記第2積和回路のその次の回の上位kビット出力を格納する第7レジスタとを備え、
    前記第1積和回路は、前記第1及び第2レジスタに保持された2数の所定ビットの値を乗算し、その乗算結果に前記第3レジスタに保持された数の所定ビットの値及び前記第4レジスタに保持された値を加算する演算を行い、
    前記第2積和回路は、前記第5レジスタに保持された数の所定ビットの値と前記第6レジスタに保持された値とを乗算し、その乗算結果に前記第1積和回路の下位kビット出力及び前記第7レジスタに保持された値を加算する演算を行うように構成したことを特徴とするモンゴメリ法による乗算剰余計算装置。
  2. 前記第1積和回路は、前記第1及び第2レジスタに保持された2数の所定ビットの値を乗算し、その乗算結果に前記第3レジスタに保持された数の所定ビットの値を加算し、その加算結果に前記第4レジスタに保持された値を加算するように構成した請求項1記載のモンゴメリ法による乗算剰余計算装置。
  3. 前記第1積和回路は、前記第1及び第2レジスタに保持された2数の所定ビットの値を乗算し、その乗算結果に前記第4レジスタに保持された値を加算し、その加算結果に前記第3レジスタに保持された数の所定ビットの値を加算するように構成した請求項1記載のモンゴメリ法による乗算剰余計算装置。
  4. 前記第2積和回路は、前記第5レジスタに保持された数の所定ビットの値と前記第6レジスタに保持された値とを乗算し、その乗算結果に前記第1積和回路の下位kビット出力を加算し、その加算結果に前記第7レジスタに保持された値を加算するように構成した請求項1記載のモンゴメリ法による乗算剰余計算装置。
  5. 前記第2積和回路は、前記第5レジスタに保持された数の所定ビットの値と前記第6レジスタに保持された値とを乗算し、その乗算結果に前記第7レジスタに保持された値を加算し、その加算結果に前記第1積和回路の下位kビット出力を加算するように構成した請求項1記載のモンゴメリ法による乗算剰余計算装置。
  6. 前記第2積和回路による演算中に、前記第1積和回路によりその次の回の演算を行うように構成した請求項1〜5の何れかに記載のモンゴメリ法による乗算剰余計算装置。
  7. 暗号化/復号化のためのモンゴメリ法による乗算剰余計算を行う装置において、2つのkビットの数を乗算し、その乗算結果に2つのkビットの数を加算する積和演算を行う第1積和手段と、2つのkビットの数を乗算し、その乗算結果に2つのkビットの数を加算する積和演算を行う第2積和手段とを備え、前記第1積和手段及び第2積和手段は、演算結果を上位ビットと下位ビットとに分けて出力し、各自身の上位ビットの出力を各自身の次の回の加算用の入力とする構成を有し、前記第1積和手段の下位ビットの出力を前記第2積和手段の加算用の入力とする構成を有し、前記第2積和手段が演算を行う間、前記第1積和手段で次の回の演算を行うように、パイプライン処理すべく構成したことを特徴とするモンゴメリ法による乗算剰余計算装置。
  8. 前記第1積和手段及び第2積和手段が演算するビット数が等しい請求項記載のモンゴメリ法による乗算剰余計算装置。
JP01468198A 1998-01-27 1998-01-27 モンゴメリ法による乗算剰余計算装置 Expired - Fee Related JP3616897B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP01468198A JP3616897B2 (ja) 1998-01-27 1998-01-27 モンゴメリ法による乗算剰余計算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01468198A JP3616897B2 (ja) 1998-01-27 1998-01-27 モンゴメリ法による乗算剰余計算装置

Publications (2)

Publication Number Publication Date
JPH11212456A JPH11212456A (ja) 1999-08-06
JP3616897B2 true JP3616897B2 (ja) 2005-02-02

Family

ID=11867967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01468198A Expired - Fee Related JP3616897B2 (ja) 1998-01-27 1998-01-27 モンゴメリ法による乗算剰余計算装置

Country Status (1)

Country Link
JP (1) JP3616897B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3709553B2 (ja) * 2000-12-19 2005-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 演算回路および演算方法
JP2002229445A (ja) 2001-01-30 2002-08-14 Mitsubishi Electric Corp べき乗剰余演算器
JP3999554B2 (ja) 2002-04-19 2007-10-31 沖電気工業株式会社 乗算剰余演算方法及び演算装置
JP4360792B2 (ja) 2002-09-30 2009-11-11 株式会社ルネサステクノロジ べき乗剰余演算器
JP2004145010A (ja) 2002-10-24 2004-05-20 Renesas Technology Corp 暗号回路
JP2004258141A (ja) 2003-02-24 2004-09-16 Fujitsu Ltd モンゴメリ乗算剰余の多倍長演算のための演算装置
FR2884005B1 (fr) * 2005-04-01 2007-06-01 Thales Sa Methode d'implementation de la multiplication modulaire de montgomery et son dispositif
EP1975906B1 (en) 2006-01-13 2012-07-04 Fujitsu Ltd. Montgomery s algorithm multiplication remainder calculator
JP6193699B2 (ja) * 2013-09-27 2017-09-06 株式会社ソシオネクスト 演算回路
US20170091148A1 (en) * 2014-09-26 2017-03-30 Hitachi, Ltd. Method for calculating elliptic curve scalar multiplication

Also Published As

Publication number Publication date
JPH11212456A (ja) 1999-08-06

Similar Documents

Publication Publication Date Title
US5499299A (en) Modular arithmetic operation system
JP4783382B2 (ja) モンゴメリ法用乗算剰余計算装置
JP3616897B2 (ja) モンゴメリ法による乗算剰余計算装置
US6993136B2 (en) Cryptographic key exchange method using efficient elliptic curve
JP2000132376A (ja) 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
JP4177526B2 (ja) 乗算剰余演算方法および乗算剰余回路
US7062044B1 (en) Method of elliptic curve cryptographic key agreement using coefficient splitting
KR100340102B1 (ko) 알에스에이 공개키 암호 고속화 장치 및 방법
JP3797808B2 (ja) スカラー倍算方法およびその装置
JP3615405B2 (ja) 素体上楕円曲線上の点の演算方法およびその装置
Wardlaw The RSA public key cryptosystem
US20020025034A1 (en) Cryptographic encryption method using efficient elliptic curve
JP2000137436A (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP3591857B2 (ja) 擬似乱数生成方法及び装置、通信方法及び装置
KR20010000048A (ko) m진법 방식을 이용한 타원곡선상 다중 점의 상수고속연산 방법
Rao et al. A novel modular multiplication algorithm and its application to RSA decryption
US7403965B2 (en) Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
KR100406138B1 (ko) 엔티알유 암/복호화 장치
US20030072442A1 (en) Cisponentiation method, software, and device for exponentiation
Biswas A mathematical model for ascertaining same ciphertext generated from distinct plaintext in Michael O. Rabin Cryptosystem
JP3634097B2 (ja) 暗号通信システム
JP4676071B2 (ja) べき乗剰余演算方法、逆数演算方法およびそれらの装置
JP3518680B2 (ja) 素数生成装置
Al-Tuwaijry et al. A high speed RSA processor
JP2002139995A (ja) 公開鍵生成装置、暗号化装置および復号装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040525

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040810

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040930

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

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091119

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees