JP2002236445A - べき乗剰余演算方法、逆数演算方法およびそれらの装置 - Google Patents

べき乗剰余演算方法、逆数演算方法およびそれらの装置

Info

Publication number
JP2002236445A
JP2002236445A JP2001034824A JP2001034824A JP2002236445A JP 2002236445 A JP2002236445 A JP 2002236445A JP 2001034824 A JP2001034824 A JP 2001034824A JP 2001034824 A JP2001034824 A JP 2001034824A JP 2002236445 A JP2002236445 A JP 2002236445A
Authority
JP
Japan
Prior art keywords
variable
register
loop
value
mod
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.)
Granted
Application number
JP2001034824A
Other languages
English (en)
Other versions
JP4676071B2 (ja
Inventor
Masahiko Takenaka
正彦 武仲
Naoya Torii
直哉 鳥居
Soichi Okada
壮一 岡田
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 JP2001034824A priority Critical patent/JP4676071B2/ja
Publication of JP2002236445A publication Critical patent/JP2002236445A/ja
Application granted granted Critical
Publication of JP4676071B2 publication Critical patent/JP4676071B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 2の拡大体上の逆数演算に限定したアルゴリ
ズムによって、逆数演算をバイナリメソッドやウインド
ウメソッドなどの一般的なべき乗剰余演算を利用する方
法より高速化し、特殊な条件を設けずに2の拡大体上の
逆数演算に常に適用可能な演算を実現する。 【解決手段】 2進数に変換した場合にm個のビット全
てが1であるべき数(2 m−1)によるべき乗剰余演算
方法であって、2進数に変換した(m)を(mb-1,m
b-2,・・・m1,m02とするとき、最初に変数sに被
演算数aを代入する工程と、i=b−2:0の間で、m
i=0の場合にs(2^loop)×s mod fを実行し、mi
1の場合にs(2^loop)×s mod fを実行した後、s2×
a mod fを実行する工程とを備えるべき乗剰余演算方
法。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、公開鍵暗号系にお
ける楕円曲線暗号処理における基本演算である楕円曲線
上の点の演算に係り、特に楕円曲線上の点のスカラー倍
算処理を高速に行う楕円曲線上の点の演算方法に関す
る。
【0002】
【従来の技術】近年のコンピュータネットワークの発達
により、データベースの検索や電子メール、電子ニュー
スなどの電子化された情報をネットワークを経由して送
受信する機会が急速に増加してきている。さらに、これ
らを利用して、オンラインショッピングなどのサービス
も提供されつつある。しかし、それに伴って、ネットワ
ーク上の電子化されたデータを盗聴したり、改竄した
り、または他人になりすましてサービスを受けるなどの
違法行為についての問題が浮上してきている。特に、無
線を利用したネットワークにおいては、傍受が容易なた
めこれらを防止する対策が望まれている。
【0003】これらの問題に対して暗号技術(encrypti
on technology)を応用した暗号化電子メールや利用者
認証システムが提案され、種々のネットワークにも導入
されつつあり、コンピュータネットワークにおいて暗号
化は必須の技術となりつつある。
【0004】このような暗号技術の中の1つにディジタ
ル署名すなわち認証に適した公開鍵暗号(public key c
ryptosystem)があるが、暗号化/復号化に大量の処理
が必要なため高速化が望まれており、様々な高速化アル
ゴリズムも発表されている。
【0005】暗号化方式は、大別すると秘密鍵暗号系と
公開鍵暗号系の2つに分類することができる。秘密鍵暗
号系は、送信者と受信者が同じ鍵を持つことにより暗号
通信を行う方式である。すなわち、秘密鍵暗号系では、
あるメッセージを秘密の暗号鍵に基づいて暗号化し相手
に送り、受け手はこの暗号鍵を用いて暗号分を復号化し
もとのメッセージに戻して情報を入手する。
【0006】公開鍵暗号系は、送信者は公開されている
受信者の公開鍵でメッセージを暗号化して送信し、受信
者は自分の秘密鍵でその暗号化メッセージを復号化する
ことで通信を行う方式である。すなわち、公開鍵暗号系
では、公開鍵は暗号化のための鍵、秘密鍵は公開鍵によ
り暗号化された暗号を復号化するための鍵であり、公開
鍵で暗号化した暗号が秘密鍵でのみ復号化することがで
きる。
【0007】秘密鍵暗号系では、個人が秘密に保管しな
ければならない鍵の数が通信相手の数だけ必要であり、
必要な総鍵数はn人のネットワークの場合、n(n−
1)/2個である。また、はじめて通信をする相手に対
しては、何らかの方法で秘密鍵の配送を行う必要がある
という点で欠点がある。この問題を避けるために、大規
模なネットワークでは、鍵管理センタを設置し、センタ
との間の秘密鍵のみを保管し、暗号通信を行う場合はセ
ンタから送信相手との秘密鍵を得る方法が用いられる。
この場合秘密鍵の総数はnとなる。
【0008】一方公開鍵暗号系では、個人が秘密に保管
する鍵は自分の秘密鍵のみであり、必要な総秘密鍵数も
n人のネットワークの場合、n個である。また、はじめ
て通信する相手に対しては、公開鍵の配送を行えばよ
く、鍵管理センタを設置して、ユーザの公開鍵をn個公
開簿に登録し、センタから送信相手の公開鍵を得る方法
が用いられる。この場合、センタは公開鍵の改竄を防ぐ
だけで、秘密に保管する必要がない。ただし、公開鍵方
式は秘密鍵方式に比べて鍵のビット数が大きいため保管
に要するファイルサイズが大きくなるという問題を内包
している。
【0009】また、認証の場合、秘密鍵暗号系では、例
えば、送信するメッセージを秘密鍵で圧縮変換し、送信
文に付加して送り、受信側では同様に圧縮変換して比較
する方式がとられている。しかし、送受信が同じ鍵であ
るため受信者は認証データを偽造することができる。
【0010】これに対して、公開鍵暗号系では、秘密鍵
で暗号化することができるのは本人だけであるという特
徴を利用する。送信者はメッセージを圧縮変換して秘密
鍵で暗号化し、送信文に付加して送り、受信者は送信者
の公開鍵で付加されたデータを復号化し、同様に圧縮変
換したものと比較する方式がとられている。この場合は
受信者が不正できない。
【0011】このように、認証系では公開鍵暗号系の技
術は必要不可欠であるといえる。しかし、公開鍵暗号系
には、暗号化/復号化に大量の処理が必要であるという
大きな欠点があるため、一般には処理の速い秘密鍵暗号
系をメッセージの暗号化に、公開鍵暗号系は認証用にと
いうように組み合わせて用いられる場合が多い。
【0012】公開鍵暗号系の中で、現在IEEE P1363, AN
SI X 9.62などで標準化が進んでいるものに、楕円曲線
暗号(Elliptic Curve Cryptography)がある。これ
は、楕円曲線の離散対数問題に基づくもので、N. Kobli
tz("A course in number theory and cryptography",
Spring-Verlag, 1997)と、V. Miller("Use of ellipt
ic curves in cryptography", Advances in Cryptology
-Proceedings of Crypto'85, Lecture Notes in Comput
er Science, 218(1986), Spring-Verlag, pp 417-426)
により提案された。 〔楕円曲線暗号に用いる楕円曲線〕楕円曲線暗号に用い
る主な楕円曲線は、素体上の楕円曲線(標準形:y2
3+ax+b(mod p),p:素数,a,b:GF
(p)の元)と、2の拡大体上の楕円曲線(標準形:y
2+xy=x3+ax2+b(mod f),f:n次既
約多項式,a,b:GF(2n)の元)である。この楕
円曲線上の点P(x,y)および単位元となる無限遠点
Οの集合は、加算に関して群をなす。楕円曲線暗号は、
この点の演算による離散対数問題に基づく暗号である。
楕円曲線上の点の演算は以下のものが定義されてい
る。 〔楕円曲線上の点の加算〕 素体上の楕円曲線の場合:楕円曲線上の点P=(x1
1)とすると、−P=(x1,−y1)と定義される。
また、楕円曲線上の点P=(x1,y1)、Q=(x2
2)、R=(x3,y3)とし、R=P+QかつP≠−
Pである場合、R=(x3,y3)は次のように定義され
る。
【0013】x3=λ2−x1−x23=λ(x1−x3)−y1 2の拡大体上の楕円曲線の場合:楕円曲線上の点P=
(x1,y1)とすると、−P=(x1,y1+x1)と定
義される。また、楕円曲線上の点P=(x1,y1)、Q
=(x2,y2)、R=(x 3,y3)とし、R=P+Qか
つP≠−Pである場合、R=(x3,y3)は次のように
定義される。
【0014】P≠Qのとき: x3=λ2+λ+x1+x2+a y3=λ(x1+x3)+x3+y1 λ=(y2+y1)/(x2+x1) P=Qのとき: x3=x1 2+b/x1 23=x1 2(x1+y1/x1)x3+x3 これらの演算は、素体(mod p)もしくは2の拡大体(m
od f)上の演算であるので、割り算は各体の上での逆数
との乗算を行うことで計算できる。 〔逆数演算〕逆数の演算は、拡張ユークリッドの互除法
とその応用およびフェルマーの小定理を利用した方法に
大別できる。たとえば、フェルマーの小定理を利用した
ものは次のように表すことができる。
【0015】素体上の楕円曲線の場合: a-1≡aP-2 mod p 2の拡大体の場合: a-1≡a2^m-2 mod f ただし、2^m−2=2m−2とする。
【0016】このことから、フェルマーの小定理を用い
た逆数演算は、べき乗剰余で求めることが可能である。 〔べき乗剰余演算〕べき乗剰余ak mod cは、aをk回
乗算して剰余演算を行えば計算することができるが、k
の値が大きくなることにより計算量が膨大になることか
ら、通常は、乗算剰余と自乗剰余を組み合わせたバイナ
リメソッド(Binary Method)や事前計算表を用いてバ
イナリメソッドを複数ビット単位(window)で行うウイ
ンドウメソッド(Window Method)などを用いて計算を
行う。
【0017】バイナリメソッドは、E. D. Knuthが、"Th
e art of computer programing vol. 2, Seminumerical
Algorithm, 2nd ed." (Addison-Wesley, Reading, Mas
s. 1981)で述べている方式で、乗数kを2進数表現(Bi
nary表現)し、最上位ビットから最下位ビットまで順に
検査していって、そのビットの値が0なら自乗剰余演算
を行い、ビットの値が1であれば自乗剰余演算を行って
から乗算剰余演算を行うという方式である。これを以下
のalgorithm 1に示す。 〈algorithm 1, Binary Method〉 r=ak mod cを求める。
【0018】kをmビットとしてその2進数表現をk=
(km-1、km-2、・・・k1、k0 2とする。 ウインドウメソッドにはいろいろなバリエーションがあ
るが、ここではもっとも基本的なものについて示す。バ
イナリメソッドと同様に、倍数kを2進数表現し、最上
位から最下位ビットまでウィンドウ(Window)を当ては
めていく。
【0019】たとえば、k=27622793=11010010101111
101100010012に4bit Windowを当てはめる場合、1101 00 1010 1111 1011 000 1001 のように5つのWindowを当てはめることができる。この
とき、a0(00002)からa 15(11112)までの値を事前に計
算で求めた4bitテーブルを用意しておく必要がある。
このように、4bitテーブルを当てはめたWindow内の値
の乗算剰余演算と、自乗剰余演算とを組み合わせること
によって、ウインドウメソッドによるべき乗剰余演算を
行うことができる。そのアルゴリズムを以下のalgorith
m 2に示す。 〈algorithm 2,Window Method〉 r=ak mod cを求める。
【0020】kをmビットとしてその2進数表現をk=
(km-1、km-2、・・・k1、k0 2とする。Windowサ
イズをwビットとする。
【0021】 #テーブル作成 table[0]=1 for i=1 to 2w−1 table[i]=table[i−1]*a mod c endfor #Window Method r=1 for i=m−1 to 0 if (ki==0) r=r2 mod c; else r=r2 mod c; r=r2 mod c; r=r2 mod c; r=r2 mod c;; r=r*table[(ki,ki-1,ki-2,ki-32] endif endfor return R
【0022】
【発明が解決しようとする課題】上述のようなバイナリ
メソッドやウインドウメソッドは一般的なべき乗剰余演
算において高速演算を可能とする方法であって、計算対
象を特定した場合には、その計算対象の性質を利用した
計算方法を用いることにより、より高速な処理が可能と
なると考えられる。
【0023】2の拡大体上の逆数演算(a-1 mod f)
は、(a(2^m-2) mod f)で置き換えることが可能であ
り、さらに指数(2^m−2)を2進数表現した場合、
最下位ビットを除く全てのビットが1であるという特徴
を有している。このような性質を利用して、特定のもの
を計算対象とするべき乗剰余演算および2の拡大体上の
逆数演算の高速化に関して考察する。
【0024】指数の特徴を利用した高速べき乗剰余演算
として、Lambert, Robert, J.;International Publica
tion Number(PCT国際公開番号)WO99/63426号"Acceler
atedCryptographic Operations"で開示されているもの
が存在する。ここでは、素体上の平方剰余演算を高速に
行う方法が開示されており、指数を2進数表現した場合
に1が2のべき乗数個連続する場合にのみ高速計算が可
能なべき乗剰余演算方法が示されている。これを以下に
algorithm 3として示す。 〈algorithm 3〉 目的:a(2^k-1) mod pを計算する。
【0025】 Set B=1,A=a,i=1 While k!=0 do if k mod 2==1 then B=BA(mod p) ・・・・・(1) k=k/2 A=A(2^i)A(mod p) i=2i Return B このようなアルゴリズムを使用する場合、(1)の処理
においてBを計算しているため、指数をビット表現した
場合の連続する1の数(algorithm 3中のkの値)が2
のべき数個連続する場合、即ちk=2bと表現できる場
合にのみ適用可能となっている。また、このアルゴリズ
ムは、素体上の平方剰余演算を行うという制限だけでは
なく、法pの値がたとえばp=2160−231−1などの
特殊な場合であることが適用の条件となっており、適用
範囲が極めて狭いものとなっている。
【0026】本発明では、2の拡大体上の逆数演算に限
定したアルゴリズムによって、逆数演算をバイナリメ
ソッドやウインドウメソッドなどの一般的なべき乗剰余
演算を利用する方法より高速化すること、特殊な条件
を設けずに2の拡大体上の逆数演算に常に適用可能な演
算を実現することを目的とする。
【0027】
【課題を解決するための手段】本発明では、2進数に変
換した場合にn個のビット全てが1であるべき数(2 n
−1)によるべき乗剰余演算方法であって、2進数に変
換した(n)を(nb-1,nb-2,・・・n1,n02
するとき、最初に変数sに被演算数aを代入する工程
と、i=b−2:0の間で、ni=0の場合に変数sに
よる演算s(2^loop)×s mod fを実行し、ni=1の場
合に変数sによる演算s(2^loop)×s modfを実行した
後、変数sによる演算s2×a mod fを実行する工程と
を備えるべき乗剰余演算方法を提案する。
【0028】また、本発明では、2進数に変換した場合
にn個のビット全てが1であるべき数(2n−1)によ
る2の拡大体上のべき乗剰余演算a(2^n)-1 mod fを行
う方法であって、2進数に変換した(n)を(nb-1
b-2,・・・n1,n02とするとき、レジスタsに被
演算数a、ループ数を計数するためのループ変数loopに
1、変数iにb−2をそれぞれ格納する第1ステップ
と、変数iが0以上であるか否かを判別し、変数iが0
未満である場合には第10ステップに移行し、そうでな
い場合には第3ステップに移行する分岐を行う第2ステ
ップと、レジスタtにレジスタsの値を代入する第3ス
テップと、レジスタtの値により自乗剰余演算(t×t
mod f)を行い、この演算結果をレジスタtに代入す
る処理をループ変数loopの回数だけ繰り返す第4ステッ
プと、レジスタsの値とレジスタtの値により乗算剰余
演算(s×t mod f)を行って演算結果をレジスタs
に代入するとともに、ループ変数loopの値を2倍してこ
れをループ変数loopに代入する第5ステップと、現在の
変数iに基づくniの値が0であるか否かを判別し、ni
の値が0である場合には第2ステップに移行し、そうで
ない場合には第7ステップに移行する分岐を行う第6ス
テップと、レジスタtにレジスタsの値を代入する第7
ステップと、レジスタtの値により自乗剰余演算(t×
t mod f)を行い、この演算結果をレジスタtに代入
する第8ステップと、レジスタtの値と被演算数aの値
により乗算剰余演算(t×a mod f)を行い、この演
算結果をレジスタsに代入するとともに、ループ変数lo
opに1を加算してこれをループ変数loopに代入した後第
2ステップに移行する第9ステップと、レジスタsの値
を出力用レジスタrに代入する第10ステップとを備え
る、2の拡大体上のべき乗剰余演算方法を提案する。
【0029】さらに、本発明では、2進数に変換した場
合にm個のビットのうちm−1個が連続して1であり最
後のビットが0であるべき数(2m−2)によるべき乗
剰余演算a(2^m)-2 mod fを行って2の拡大体GF(2
m)上の逆数演算a-1 mod fを行う方法であって、2進
数に変換した(m−1)を(mb-1,mb-2,・・・
1,m02とするとき、レジスタsに被演算数a、ル
ープ数を計数するためのループ変数loopに1、変数iに
b−2をそれぞれ格納する第1ステップと、変数iが0
以上であるか否かを判別し、変数iが0未満である場合
には第10ステップに移行し、そうでない場合には第3
ステップに移行する分岐を行う第2ステップと、レジス
タtにレジスタsの値を代入する第3ステップと、レジ
スタtの値により自乗剰余演算(t×t mod f)を行
い、この演算結果をレジスタtに代入する処理をループ
変数loopの回数だけ繰り返す第4ステップと、レジスタ
sの値とレジスタtの値により乗算剰余演算(s×t m
od f)を行って演算結果をレジスタsに代入するとと
もに、ループ変数loopの値を2倍してこれをループ変数
loopに代入する第5ステップと、現在の変数iに基づく
miの値が0であるか否かを判別し、miの値が0である
場合には第2ステップに移行し、そうでない場合には第
7ステップに移行する分岐を行う第6ステップと、レジ
スタtにレジスタsの値を代入する第7ステップと、レ
ジスタtの値により自乗剰余演算(t×tmod f)を行
い、この演算結果を前記レジスタtに代入する第8ステ
ップと、レジスタtの値と被演算数aの値により乗算剰
余演算(t×a mod f)を行い、この演算結果をレジ
スタsに代入するとともに、ループ変数loopに1を加算
してこれをループ変数loopに代入した後第2ステップに
移行する第9ステップと、レジスタsの値により自乗剰
余演算(s×s mod f)を行い、この演算結果を出力
用レジスタrに代入する第10ステップとを備える、2
の拡大体上の逆数演算方法を提案する。
【0030】また、本発明では、2進数に変換した場合
にn個のビット全てが1であるべき数(2n−1)によ
るべき乗剰余演算方法をコンピュータに実行させるプロ
グラムであって、2進数に変換した(n)を(nb-1
b-2,・・・n1,n02とするとき、最初に変数sに
被演算数aを代入する工程と、i=b−2:0の間で、
i=0の場合に変数sによる演算s(2^loop)×s mod
fを実行し、ni=1の場合に変数sによる演算s
(2^loop)×s mod fを実行した後、変数sによる演算
2×a mod fを実行する工程とをコンピュータに実行
させるプログラムを提案する。
【0031】さらに、本発明では、2進数に変換した場
合にn個のビット全てが1であるべき数(2n−1)に
よるべき乗剰余演算a(2^n)-1 mod fを行うべき乗剰余
演算装置であって、被演算数aが格納されるaレジスタ
と、変数sが格納されるsレジスタと、変数tが格納さ
れるtレジスタと、演算結果が格納されるrレジスタ
と、tレジスタ内の変数tによる自乗剰余演算を行う自
乗剰余演算手段と、tレジスタ内の変数tと、前記aレ
ジスタ内の被演算数aまたは前記sレジスタ内の変数s
とによる乗算剰余演算を行う乗算剰余演算手段と、2進
数に変換した(n)を(nb-1,nb-2,・・・n1
02、i=b−2:0とするとき、ni=0の場合に
レジスタs内の変数sをレジスタt内の変数tに代入
し、前記自乗剰余演算手段による変数tの自乗剰余演算
をループ回数loopだけ実行させその演算結果をレジスタ
tに格納し、レジスタt内の変数tとレジスタs内の変
数sの乗算剰余演算を前記乗算剰余演算手段により演算
させてレジスタs内の変数sに代入する第1演算制御手
段と、ni=1の場合にレジスタs内の変数sをレジス
タt内の変数tに代入し、自乗剰余演算手段による変数
tの自乗剰余演算をループ回数loopだけ実行させその演
算結果をレジスタtに格納し、レジスタt内の変数tと
レジスタs内の変数sの乗算剰余演算を乗算剰余演算手
段により演算させてレジスタs内の変数sに代入し、さ
らにレジスタs内の変数sをレジスタt内の変数tに代
入し、自乗剰余演算手段による変数tの自乗剰余演算を
実行してレジスタt内の変数tに代入し、乗算剰余演算
手段によるレジスタa内の被演算数aとレジスタt内の
変数tとの乗算剰余演算を実行してこの演算結果をレジ
スタs内の変数sに代入する第2演算制御手段と、i<
0のとき、レジスタs内の変数sをレジスタrに代入す
る第3演算制御手段と、自乗剰余演算手段による変数t
の自乗剰余演算をループ回数loopだけ実行した後にルー
プ変数loopの値を2倍し、乗算剰余演算手段によるレジ
スタa内の被演算数aとレジスタt内の変数tとの乗算
剰余演算を実行した後にループ変数loopに1を加算する
ループ変数制御手段とを備えるべき乗剰余演算装置を提
供する。
【0032】
【発明の実施の形態】〔2の拡大体上の逆数演算〕本発
明の第1実施形態を図を用いて説明する。
【0033】フェルマーの小定理を利用した2の拡大体
GF(2m)上における逆数a-1の剰余演算は、a
(2^m)-2 mod fで計算することができる。この指数2m
−2をバイナリ表現すると、最下位ビットを除くすべて
のビットが1となる。本発明では、このことを利用して
高速にべき乗演算を行うものであり、以下にそのアルゴ
リズムを示す。 〈algorithm 4〉(m−1)=(mb-1,mb-2,…,
1,m02とし、r=a(2^m)-2 mod fを計算する。
i,j,s,t,loopは一時定数である。
【0034】 このアルゴリズムを実行するためのべき剰余演算装置の
構成例を図1に示す。
【0035】このべき乗剰余演算装置1は、被演算数a
が格納されるaレジスタ11と、変数sが格納されるs
レジスタ12と、変数tが格納されるtレジスタ13
と、演算結果が格納されるrレジスタ14と、tレジス
タ13内の変数tによる自乗剰余演算を行う自乗剰余演
算部15と、tレジスタ13内の変数tとaレジスタ1
1内の被演算数aまたはsレジスタ12内の変数sとに
よる乗算剰余演算を行う乗算剰余演算部16とを備えて
いる。
【0036】このようなべき剰余演算装置において、2
の拡大体GF(2m)上における逆数a-1の剰余演算a
-1 mod f=a(2^m)-2 mod fを行う場合のフローチャ
ートを図2に示す。
【0037】ステップS1では、各パラメータに初期値
をセットする初期化処理を実行する。ここでは、被演算
数aをaレジスタ11にセットするとともに、sレジス
タ12にaレジスタ11にセットされた被演算数aの値
を代入する。自乗剰余演算を連続して行う際に用いるル
ープ変数loopを1にセットする。さらに、べき数(2 m
−2)を2進数に変換した場合に連続する1の数がm個
であり、(m−1)を2進数に変換した場合のビット数
をbとした場合、(m−1)=(mb-1,mb-2,・・・
1,m02となる。ここで、演算制御に用いる変数i
の値をb−2にセットする。
【0038】ステップS2では、変数iの値が0以上で
あるか否かを判別する。変数iの値が0以上であればス
テップS3に移行し、変数iの値が0未満であればステ
ップS10に移行する。
【0039】ステップS3では、sレジスタ12に格納
されている変数sの値をtレジスタ13に代入する。ス
テップS4では、自乗剰余演算部15によりtレジスタ
13内の変数tの自乗剰余演算t×t mod fを実行し
てtレジスタ13に格納する。この処理をループ変数lo
opの値と同じ回数だけ繰り返してステップS5に移行す
る。
【0040】ステップS5では、乗算剰余演算部16に
より、sレジスタ12内の変数sの値と、tレジスタ1
3内の変数tの値との乗算剰余演算を行い、その演算結
果をsレジスタ12に格納する。また、ループ変数loop
を2倍してループ変数loopの値を更新する。
【0041】このステップS3〜ステップS5の処理に
より、変数sによるべき乗剰余演算s2^loop×s mod
fを実行することとなる。ステップS6では、変数iの
現在の値に基づいてmiの値が1であるか否かを判別す
る。miの値が1である場合にはステップS7に移行
し、そうでない場合(miの値が0である場合)にはス
テップS11に移行する。
【0042】ステップS7では、sレジスタ12に格納
されている変数sの値をtレジスタ13に代入する。ス
テップS8では、自乗剰余演算部15によりtレジスタ
13内の変数tの自乗剰余演算t×t mod fを実行し
てtレジスタ13に格納する。
【0043】ステップS9では、乗算剰余演算部16に
より、tレジスタ13内の変数tの値と、aレジスタ1
1内の被演算数aの値との乗算剰余演算を行い、その演
算結果をsレジスタ12に格納する。また、ループ変数
loopに1を加算してループ変数loopの値を更新する。こ
の後、ステップS11に移行する。
【0044】ここでは、miの値が1の場合に、ステッ
プS2〜ステップS5の処理を実行した後に、ステップ
S7〜ステップS9の処理を実行して、変数sによるべ
き乗剰余演算s2×a mod fを実行することとなる。
【0045】ステップS11では、変数iの値をデクリ
メントし、ステップS2に移行する。ステップS2にお
いて、変数iの値が0未満であると判断した場合には、
ステップS10に移行する。ステップS10では、sレ
ジスタ12に格納されている変数sの値をtレジスタt
に代入し、自乗剰余演算部15によりtレジスタ13内
の変数tの自乗剰余演算t×t mod fを実行してrレ
ジスタ14に格納する。
【0046】ステップS10では、sレジスタ14内の
変数sの値は、2進数に変換した場合にm個の1が連続
するようなべき数による被演算数aのべき乗剰余演算結
果となっている。このsレジスタ14内の変数sを値を
tレジスタに代入して自乗剰余演算を行うことで、m個
の1が連続し最下位のビットが0であるようなべき数の
べき乗剰余演算結果を得ることができる。
【0047】図1において、sレジスタ13と自乗剰余
演算部15とを接続することにより、ステップS10に
おいて、sレジスタ12からtレジスタ13への数値代
入を省略し、sレジスタ13の値を直接自乗剰余演算す
るように構成することも可能である。 〔べき乗剰余演算〕また、アルゴリズム4と同じ考え方
で、2進数に変換した場合にn個のビット全てが1であ
るようなべき数(2n−1)によるべき乗剰余演算を行
うことが可能である。この場合のべき乗剰余演算方法
を、次のalgorithm 5に示す。このalgorithm 5では、剰
余演算を"mod f"のように2の拡大体上の剰余として記
載しているが、素体上においても同じアルゴリズムでべ
き乗剰余演算(mod p)を行うことが可能である。 〈algorithm 5〉(n)=(nb-1,nb-2,…,n1,n
02とし、r=a(2^n)-1 mod fを計算する。i,j,
s,t,loopは一時定数である。
【0048】 〔逆数演算における他の演算方法との比較〕上述したよ
うな本発明の方法を用いてm=163の場合の計算手順
と途中経過の値を表1に示す。
【0049】m=163の場合、(m−1)を2進数に
変換すると、(10100010)2となり、計算を行う逆数は、
-1=a7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
と表すことができる。なお、表1中、lはループ変数lo
opの値を示すものとする。
【0050】
【表1】 また、m=163の場合の計算手順と途中経過の値を、
バイナリメソッドを用いた場合の例を表2に、ウインド
ウメソッドを用いた場合の例を表3に示す。
【0051】
【表2】
【0052】
【表3】 この結果から、本発明のべき乗剰余演算方法を用いた場
合には、自乗剰余演算の回数はバイナリメソッドやウイ
ンドウメソッドの場合とほぼ同程度の回数必要である
が、乗算剰余演算の回数を大幅に削減することが可能と
なる。したがって、自乗剰余演算の計算量と乗算剰余演
算の計算量とが同等であると仮定した場合、本発明によ
る演算方法を用いた逆数演算の計算量は、バイナリメソ
ッドを用いた場合の53%であり、ウインドウメソッド
を用いた場合の78%となる。ただし、ウインドウメソ
ッドの場合、テーブルを作成するための事前演算に乗算
剰余演算を30回必要とし、これを全体の演算回数に合
計している。
【0053】一般的に、2の拡大体の拡大次数mが大き
くなるに従って、自乗剰余演算回数と乗算剰余演算回数
を合計した計算量も増加するが、本発明、バイナリメソ
ッドおよびウインドウメソッドの各方式による演算回数
と、拡大次数mとの対応を図3に示す。ただし、ここで
はウインドウメソッドのウインドウ幅は5としている。
【0054】図3に示すように、バイナリメソッドで
は、本発明の演算方法による場合とウインドウメソッド
による場合に比して傾きが大きくなり、拡大次数mが5
00になると演算回数がほぼ1000回に達してしま
う。ウインドウメソッドの場合であっても、拡大次数m
が500であれば演算回数が600を超えることとな
る。これに対して、本発明の演算方法による逆数演算の
場合には、拡大次数mが500になっても演算回数の下
限値、上限値ともに500程度となり、他の方式による
演算回数より大幅に演算回数を削減することが可能とな
る。
【0055】したがって、本発明の演算方法を2の拡大
体の逆数演算に用いることにより、他の一般的な演算方
法よりさらに高速な演算を可能とする。また、本発明の
演算方法では、ウインドウメソッドのようにテーブルの
事前計算を必要としないため、テーブルを格納しておく
レジスタを必要とせず、テーブル参照の処理を省略する
ことができる。
【0056】さらに、前述したWO99/63426号に開示され
ているLambertの演算方法では、素体上の乗算剰余演算
(平方剰余演算)に限定されており、特殊な条件下での
適用だけ許されるもので、本発明の演算方法との直接的
な比較は不可能である。あえて、Lambertの演算方法に
よる演算回数を近い条件で換算して図3に表示するとす
れば、拡大次数mの値が2bとなる点だけがプロットさ
れることとなる。この点における演算回数は本発明の演
算方法の場合とほぼ同様の結果になると考えられるが、
Lambertの演算方法が適用の範囲の狭いということが明
白である。したがって、本発明による演算方法は、広い
範囲で適用することが可能であり、かつ高速演算を実現
することが可能であるという点で従来の方法にはないべ
き乗剰余演算方法および逆数演算方法を提供することと
なる。〔正規基底の適用〕2の拡大体にはPolynomial B
ase(PB:多項式基底)とNormal Base(NB:正規基底)と呼
ばれる基底がある。正規基底の場合、多項式基底の場合
に比較して乗算剰余演算の計算量は大きいが、自乗剰余
演算をmビットデータの1ビットローテーションシフト
演算で計算可能であるという性質をもっている。このロ
ーテーションシフト演算は計算量が極めて小さくなるた
め、自乗剰余演算による計算量をほぼ0と仮定すること
ができる。したがって、本発明の演算方法では、バイナ
リメソッドやウインドウメソッドを用いた場合に比して
乗算剰余演算の回数を削減することができる上、2の拡
大体に正規基底を用いることにより自乗剰余演算におけ
る計算量をほぼ0と見なすことができることから、バイ
ナリメソッドを用いた場合の6%、ウインドウメソッド
を用いた場合の15%の計算量で逆数演算が可能とな
る。
【0057】このような正規基底を用いた場合のアルゴ
リズムを以下に示す。 〈algorithm 6〉(m−1)=(mb-1,mb-2,…,
1,m02とし、r=a(2^m)-2 mod fを計算する。
i,j,s,t,loopは一時変数である。
【0058】 s=a loop=1 for (i=b−2;i>=0;i--){ t=s t=t<<<loop(loopビット左ローテーションシフト) s=s×t mod f loop=loop*2 if(mi==1){ t=s t=t<<<1(1ビット左ローテーションシフト) s=t×a mod f loop=loop+1 } } r=s<<<1(sの1ビット左ローテーションシフト) return(r) このアルゴリズムを実行するために、図5に示すような
べき乗剰余演算装置を構成する。
【0059】このべき乗剰余演算装置21は、被演算数
aが格納されるaレジスタ11と、変数sが格納される
sレジスタ12と、変数tが格納されるtレジスタ13
と、演算結果が格納されるrレジスタ14と、tレジス
タ13内の変数tまたはsレジスタ12内の変数sを左
ローテーションシフトするシフト演算部17と、tレジ
スタ13内の変数tとaレジスタ11内の被演算数aま
たはsレジスタ12内の変数sとによる乗算剰余演算を
行う乗算剰余演算部16とを備えている。
【0060】このようなべき乗剰余演算装置21を用い
て、algorithm 6を処理するフローチャートを図4に示
す。ステップS21では、各パラメータに初期値をセッ
トする初期化処理を実行する。ここでは、被演算数aを
aレジスタ11にセットするとともに、sレジスタ12
にaレジスタ11にセットされた被演算数aの値を代入
する。ローテーションシフトを連続して行う際に用いる
ループ変数loopを1にセットする。さらに、べき数(2
m−2)を2進数に変換した場合に連続する1の数がm
個であり、(m−1)を2進数に変換した場合のビット
数をbとした場合、(m−1)=(m b-1,mb-2,・・
・m1,m02となる。ここで、演算制御に用いる変数
iの値をb−2にセットする。
【0061】ステップS22では、変数iの値が0以上
であるか否かを判別する。変数iの値が0以上であれば
ステップS23に移行し、変数iの値が0未満であれば
ステップS28に移行する。
【0062】ステップS23では、sレジスタ12に格
納されている変数sの値をtレジスタ13に代入する。
ステップS24では、シフト演算部17によりtレジス
タ13内の変数tをループ変数loopの値だけ左ローテー
ションシフトし、tレジスタ13に格納する。
【0063】ステップS25では、乗算剰余演算部16
により、sレジスタ12内の変数sの値と、tレジスタ
13内の変数tの値との乗算剰余演算を行い、その演算
結果をsレジスタ12に格納する。また、ループ変数lo
opを2倍してループ変数loopの値を更新する。
【0064】ステップS26では、変数iの現在の値に
基づいてmiの値が1であるか否かを判別する。miの値
が1である場合にはステップS27に移行し、そうでな
い場合(miの値が0である場合)にはステップS29
に移行する。
【0065】ステップS27では、sレジスタ12に格
納されている変数sの値をtレジスタ13に代入し、シ
フト演算部17によりtレジスタ13内の変数tを1ビ
ットだけ左ローテーションシフトし、その値をtレジス
タ13に代入する。さらに、乗算剰余演算部16によ
り、tレジスタ13内の変数tの値と、aレジスタ11
内の被演算数aの値との乗算剰余演算を行い、その演算
結果をsレジスタ12に格納する。また、ループ変数lo
opに1を加算してループ変数loopの値を更新する。この
後、ステップS29に移行する。
【0066】ステップS29では、変数iの値をデクリ
メントし、ステップS22に移行する。ステップS22
において、変数iの値が0未満であると判断した場合に
は、ステップS28に移行する。ステップS28では、
シフト演算部17によりsレジスタ12に格納されてい
る変数sの値を1ビットだけ左ローテーションシフト
し、その値をrレジスタ14に格納する。〔他の技術へ
の応用〕以上の実施形態では、2の拡大体上の楕円曲線
における点の演算に関して説明を行っており、楕円曲線
暗号への応用を示唆するものである。これとは別に、そ
の他の信号処理や符号処理など、2の拡大体上の演算を
使用するような分野への応用が可能である。また、逆数
演算に適用した場合の実施形態を開示しているが、2進
数に変換した場合に1が連続するようなべき数によるべ
き乗剰余演算に適用することが可能であり、素体上のべ
き乗剰余演算、2の拡大体上の他のべき乗剰余演算に利
用することが可能である。
【0067】
【発明の効果】本発明によれば、バイナリメソッドやウ
インドウメソッドを用いた場合のべき乗剰余演算、逆数
演算に比して計算量が大幅に削減することができ、高速
演算を可能にする。また、ウインドウメソッドのよう
に、事前にテーブルの作成を行うことがないため、テー
ブルを格納するためのレジスタを不要とし、テーブル参
照の処理を省略することが可能である。
【図面の簡単な説明】
【図1】本発明の1実施形態の制御ブロック図。
【図2】その制御フローチャート。
【図3】2の拡大体の拡大次数mと計算量との関係を示
す特性図。
【図4】正規基底を用いた場合のフローチャート。
【図5】正規基底を用いる場合の制御ブロック図。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 岡田 壮一 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 5J104 AA22 AA25 JA23 JA25 NA16 NA18

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】2進数に変換した場合にn個のビット全て
    が1であるべき数(2n−1)によるべき乗剰余演算方
    法であって、 2進数に変換した(n)を(nb-1,nb-2,・・・
    1,n02とするとき、 最初に変数sに被演算数aを代入する工程と、 i=b−2:0の間で、ni=0の場合に変数sによる
    演算s(2^loop)×s mod fを実行し、ni=1の場合に
    変数sによる演算s(2^loop)×s mod fを実行した
    後、変数sによる演算s2×a mod fを実行する工程
    と、を備えるべき乗剰余演算方法。
  2. 【請求項2】2進数に変換した場合にn個のビット全て
    が1であるべき数(2n−1)による2の拡大体上のべ
    き乗剰余演算a(2^n)-1 mod fを行う方法であって、 2進数に変換した(n)を(nb-1,nb-2,・・・
    1,n02とするとき、 レジスタsに被演算数a、ループ数を計数するためのル
    ープ変数loopに1、変数iにb−2をそれぞれ格納する
    第1ステップと、 変数iが0以上であるか否かを判別し、変数iが0未満
    である場合には第10ステップに移行し、そうでない場
    合には第3ステップに移行する分岐を行う第2ステップ
    と、 レジスタtに前記レジスタsの値を代入する第3ステッ
    プと、 前記レジスタtの値により自乗剰余演算(t×t mod
    f)を行い、この演算結果を前記レジスタtに代入する
    処理をループ変数loopの回数だけ繰り返す第4ステップ
    と、 前記レジスタsの値とレジスタtの値により乗算剰余演
    算(s×t mod f)を行って演算結果を前記レジスタ
    sに代入するとともに、ループ変数loopの値を2倍して
    これをループ変数loopに代入する第5ステップと、 現在の変数iに基づくniの値が0であるか否かを判別
    し、niの値が0である場合には第2ステップに移行
    し、そうでない場合には第7ステップに移行する分岐を
    行う第6ステップと、 前記レジスタtに前記レジスタsの値を代入する第7ス
    テップと、 前記レジスタtの値により自乗剰余演算(t×t mod
    f)を行い、この演算結果を前記レジスタtに代入する
    第8ステップと、 前記レジスタtの値と被演算数aの値により乗算剰余演
    算(t×a mod f)を行い、この演算結果を前記レジ
    スタsに代入するとともに、前記ループ変数loopに1を
    加算してこれをループ変数loopに代入した後前記第2ス
    テップに移行する第9ステップと、 前記レジスタsの値を出力用レジスタrに代入する第1
    0ステップと、を備える、2の拡大体上のべき乗剰余演
    算方法。
  3. 【請求項3】2進数に変換した場合にm個のビットのう
    ちm−1個が連続して1であり最後のビットが0である
    べき数(2m−2)によるべき乗剰余演算a(2^m)-2 mod
    fを行って2の拡大体GF(2m)上の逆数演算a-1 m
    od fを行う方法であって、 2進数に変換した(m−1)を(mb-1,mb-2,・・・
    1,m02とするとき、 レジスタsに被演算数a、ループ数を計数するためのル
    ープ変数loopに1、変数iにb−2をそれぞれ格納する
    第1ステップと、 変数iが0以上であるか否かを判別し、変数iが0未満
    である場合には第10ステップに移行し、そうでない場
    合には第3ステップに移行する分岐を行う第2ステップ
    と、 レジスタtに前記レジスタsの値を代入する第3ステッ
    プと、 前記レジスタtの値により自乗剰余演算(t×t mod
    f)を行い、この演算結果を前記レジスタtに代入する
    処理をループ変数loopの回数だけ繰り返す第4ステップ
    と、 前記レジスタsの値とレジスタtの値により乗算剰余演
    算(s×t mod f)を行って演算結果を前記レジスタ
    sに代入するとともに、ループ変数loopの値を2倍して
    これをループ変数loopに代入する第5ステップと、 現在の変数iに基づくmiの値が0であるか否かを判別
    し、miの値が0である場合には第2ステップに移行
    し、そうでない場合には第7ステップに移行する分岐を
    行う第6ステップと、 前記レジスタtに前記レジスタsの値を代入する第7ス
    テップと、 前記レジスタtの値により自乗剰余演算(t×t mod
    f)を行い、この演算結果を前記レジスタtに代入する
    第8ステップと、 前記レジスタtの値と被演算数aの値により乗算剰余演
    算(t×a mod f)を行い、この演算結果を前記レジ
    スタsに代入するとともに、前記ループ変数loopに1を
    加算してこれをループ変数loopに代入した後前記第2ス
    テップに移行する第9ステップと、 前記レジスタsの値により自乗剰余演算(s×s mod
    f)を行い、この演算結果を出力用レジスタrに代入す
    る第10ステップと、を備える、2の拡大体上の逆数演
    算方法。
  4. 【請求項4】2進数に変換した場合にn個のビット全て
    が1であるべき数(2n−1)によるべき乗剰余演算方
    法をコンピュータに実行させるプログラムであって、 2進数に変換した(n)を(nb-1,nb-2,・・・
    1,n02とするとき、 最初に変数sに被演算数aを代入する工程と、 i=b−2:0の間で、ni=0の場合に変数sによる
    演算s(2^loop)×s mod fを実行し、ni=1の場合に
    変数sによる演算s(2^loop)×s mod fを実行した
    後、変数sによる演算s2×a mod fを実行する工程
    と、をコンピュータに実行させるプログラム。
  5. 【請求項5】2進数に変換した場合にn個のビット全て
    が1であるべき数(2n−1)によるべき乗剰余演算a
    (2^n)-1 mod fを行うべき乗剰余演算装置であって、 被演算数aが格納されるaレジスタと、 変数sが格納されるsレジスタと、 変数tが格納されるtレジスタと、 演算結果が格納されるrレジスタと、 前記tレジスタ内の変数tによる自乗剰余演算を行う自
    乗剰余演算手段と、 前記tレジスタ内の変数tと、前記aレジスタ内の被演
    算数aまたは前記sレジスタ内の変数sとによる乗算剰
    余演算を行う乗算剰余演算手段と、 2進数に変換した(n)を(nb-1,nb-2,・・・
    1,n02、i=b−2:0とするとき、ni=0の場
    合にレジスタs内の変数sをレジスタt内の変数tに代
    入し、前記自乗剰余演算手段による変数tの自乗剰余演
    算をループ回数loopだけ実行させその演算結果をレジス
    タtに格納し、レジスタt内の変数tとレジスタs内の
    変数sの乗算剰余演算を前記乗算剰余演算手段により演
    算させてレジスタs内の変数sに代入する第1演算制御
    手段と、 ni=1の場合にレジスタs内の変数sをレジスタt内
    の変数tに代入し、前記自乗剰余演算手段による変数t
    の自乗剰余演算をループ回数loopだけ実行させその演算
    結果をレジスタtに格納し、レジスタt内の変数tとレ
    ジスタs内の変数sの乗算剰余演算を前記乗算剰余演算
    手段により演算させてレジスタs内の変数sに代入し、
    さらにレジスタs内の変数sをレジスタt内の変数tに
    代入し、前記自乗剰余演算手段による変数tの自乗剰余
    演算を実行してレジスタt内の変数tに代入し、前記乗
    算剰余演算手段による前記レジスタa内の被演算数aと
    レジスタt内の変数tとの乗算剰余演算を実行してこの
    演算結果をレジスタs内の変数sに代入する第2演算制
    御手段と、 i<0のとき、レジスタs内の変数sをレジスタrに代
    入する第3演算制御手段と、 前記自乗剰余演算手段による変数tの自乗剰余演算をル
    ープ回数loopだけ実行した後にループ変数loopの値を2
    倍し、前記乗算剰余演算手段による前記レジスタa内の
    被演算数aとレジスタt内の変数tとの乗算剰余演算を
    実行した後にループ変数loopに1を加算するループ変数
    制御手段と、を備えるべき乗剰余演算装置。
JP2001034824A 2001-02-13 2001-02-13 べき乗剰余演算方法、逆数演算方法およびそれらの装置 Expired - Fee Related JP4676071B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001034824A JP4676071B2 (ja) 2001-02-13 2001-02-13 べき乗剰余演算方法、逆数演算方法およびそれらの装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001034824A JP4676071B2 (ja) 2001-02-13 2001-02-13 べき乗剰余演算方法、逆数演算方法およびそれらの装置

Publications (2)

Publication Number Publication Date
JP2002236445A true JP2002236445A (ja) 2002-08-23
JP4676071B2 JP4676071B2 (ja) 2011-04-27

Family

ID=18898364

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001034824A Expired - Fee Related JP4676071B2 (ja) 2001-02-13 2001-02-13 べき乗剰余演算方法、逆数演算方法およびそれらの装置

Country Status (1)

Country Link
JP (1) JP4676071B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005141198A (ja) * 2003-10-14 2005-06-02 Matsushita Electric Ind Co Ltd データ変換装置およびその方法
JP2009031396A (ja) * 2007-07-25 2009-02-12 Nippon Telegr & Teleph Corp <Ntt> ペアリング演算装置、プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10214262A (ja) * 1997-01-29 1998-08-11 Nippon Telegr & Teleph Corp <Ntt> 逆元演算方法及び装置及び乗算方法及び乗算装置
WO1999063426A1 (en) * 1998-06-01 1999-12-09 Certicom Corp. Accelerated cryptographic operations
JP2002023999A (ja) * 2000-06-21 2002-01-25 Internatl Business Mach Corp <Ibm> 乗算モジュール、乗法逆元演算回路、乗法逆元演算制御方式、該乗法逆元演算を用いる装置、暗号装置、誤り訂正復号器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10214262A (ja) * 1997-01-29 1998-08-11 Nippon Telegr & Teleph Corp <Ntt> 逆元演算方法及び装置及び乗算方法及び乗算装置
WO1999063426A1 (en) * 1998-06-01 1999-12-09 Certicom Corp. Accelerated cryptographic operations
JP2002023999A (ja) * 2000-06-21 2002-01-25 Internatl Business Mach Corp <Ibm> 乗算モジュール、乗法逆元演算回路、乗法逆元演算制御方式、該乗法逆元演算を用いる装置、暗号装置、誤り訂正復号器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005141198A (ja) * 2003-10-14 2005-06-02 Matsushita Electric Ind Co Ltd データ変換装置およびその方法
JP2009031396A (ja) * 2007-07-25 2009-02-12 Nippon Telegr & Teleph Corp <Ntt> ペアリング演算装置、プログラム

Also Published As

Publication number Publication date
JP4676071B2 (ja) 2011-04-27

Similar Documents

Publication Publication Date Title
US6490352B1 (en) Cryptographic elliptic curve apparatus and method
WO2001030020A1 (fr) Systeme de cryptage de cle a longueur variable
US6898284B2 (en) Cryptographic identification and digital signature method using efficient elliptic curve
EP1330702B1 (en) Method and system of using an insecure crypto-accelerator
CN109474425B (zh) 一种基于多个共享密钥获得任意指定长度派生密钥的方法
JP3794457B2 (ja) データの暗号化復号化方法
US20020055962A1 (en) Automatically solving equations in finite fields
US6480606B1 (en) Elliptic curve encryption method and system
JP2000132376A (ja) 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
Saeed et al. Improved cloud storage security of using three layers cryptography algorithms
JP3616897B2 (ja) モンゴメリ法による乗算剰余計算装置
JP2001051832A (ja) 乗算剰余演算方法および乗算剰余回路
JP3797808B2 (ja) スカラー倍算方法およびその装置
KR100340102B1 (ko) 알에스에이 공개키 암호 고속화 장치 및 방법
JP3615405B2 (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP2002236445A (ja) べき乗剰余演算方法、逆数演算方法およびそれらの装置
JP2000137436A (ja) 素体上楕円曲線上の点の演算方法およびその装置
Moldovyan et al. Randomized pseudo-probabilistic encryption algorithms
JP2002252610A (ja) 暗号装置および復号装置並びに公開鍵暗号方式および公開鍵復号方式
JP2948605B2 (ja) 暗号鍵共通の暗号通信用端末
JP3634097B2 (ja) 暗号通信システム
JP3278790B2 (ja) 公開鍵暗号方法及び公開鍵暗号システム
JP4243874B2 (ja) 暗号管理装置
JP4237306B2 (ja) 超楕円曲線c生成装置、暗号管理装置、データ送信装置及びデータ受信装置
Kuang QPP and HPPK: Unifying Non-Commutativity for Quantum-Secure Cryptography with Galois Permutation Group

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071120

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20080929

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101109

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110106

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

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

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

Free format text: PAYMENT UNTIL: 20140204

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees