JP2937982B2 - モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法 - Google Patents

モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法

Info

Publication number
JP2937982B2
JP2937982B2 JP10014250A JP1425098A JP2937982B2 JP 2937982 B2 JP2937982 B2 JP 2937982B2 JP 10014250 A JP10014250 A JP 10014250A JP 1425098 A JP1425098 A JP 1425098A JP 2937982 B2 JP2937982 B2 JP 2937982B2
Authority
JP
Japan
Prior art keywords
montgomery
register
inverse element
mod
integer
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
Application number
JP10014250A
Other languages
English (en)
Other versions
JPH10269060A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP10014250A priority Critical patent/JP2937982B2/ja
Publication of JPH10269060A publication Critical patent/JPH10269060A/ja
Application granted granted Critical
Publication of JP2937982B2 publication Critical patent/JP2937982B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/728Methods 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 using Montgomery reduction

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】
【発明の属する技術分野】本発明は、計算機ネットワー
クでのデータ通信におけるデータの暗号化や通信相手の
確認に利用される公開鍵暗号など奇数の整数を法とする
多倍長の四則演算を繰り返し利用する処理のためのモン
ゴメリ除算装置及びモンゴメリ逆元計算装置並びにモン
ゴメリ除算方法及びモンゴメリ逆元計算方法に関する。
【0002】
【従来の技術】情報通信ネットワークや計算機システム
では、電子的な情報の交換・蓄積が行われる。そのよう
なシステムが、大規模化し不特定多数のユーザが利用す
る状況では、悪意のユーザによる情報の盗聴や改ざんな
どが問題となり、その対策として公開鍵暗号技術を利用
する場合が多い。
【0003】公開鍵暗号では、多倍長の奇整数を法とす
る演算で実現される方式が多く、その高速化が性能に影
響を与える。多倍長の奇整数を法とする四則演算の中で
は、特に乗算と除算が処理時間に与える影響が大きい。
このうち、乗算を繰り返し実行する場合に適した計算ア
ルゴリズムとして、モンゴメリ算法が知られている。 モンゴメリ算法は文献(1)P.L.Montgome
ry、“Modularmultiplication
without trial division”、
Math. of Comp.、Vol.44、No.
170、pp.519−521(1985)に詳しい。
【0004】モンゴメリ算法は多倍長の剰余乗算を多倍
長乗算2回程度の処理量で計算する方法である。多倍長
の剰余算は多倍長の乗算よりも性能が劣ることが多く、
その分の高速化が実現できる。このモンゴメリ算法はモ
ンゴメリ演算域の元(これも同じ剰余系である)の乗算
アルゴリズムであり、一般の剰余系での乗算をするに
は、まず乗数と被乗数をモンゴメリ演算域に変換し、次
にモンゴメリ乗算を行ない、最後にモンゴメリ演算域か
ら元の剰余系に結果を逆変換する。モンゴメリ変換とモ
ンゴメリ逆変換はいずれも多倍長乗算1回程度の処理で
あるため、剰余乗算を繰り返し行なう、べき乗演算では
変換と逆変換のオーバーヘッドが少なく、高速化が可能
である。したがって、RSA(Rivest−Sham
ir−Adleman)暗号など多くの公開鍵暗号で
は、剰余系でのベキ乗剰余演算c=me mod Nを
その基本演算としているため、このモンゴメリ算法を有
効に利用することができる(ただし、単純にいくつかの
乗算を行なうだけの場合には、変換と逆変換のオーバー
ヘッドのため必ずしも効率化にはつながらない)。
【0005】ところで、近年、新しい暗号方式が種々研
究・提案されており、例えば楕円曲線暗号が公開鍵暗号
の中で注目を集めている。これは、楕円曲線上の離散対
数問題がRSA暗号のベースとなっている合成数の素因
数分解に比べて計算量的に困難であるという予想に基づ
いている。
【0006】ここで、楕円曲線暗号の基本演算について
簡単に説明する。
【0007】有限体Fp(ただし、p>3)において、 E(a,b)/Fp:y2 =x3 +ax+b mod
p ただし、0≦a,b<pなる整数、4a3 +27b2
0 mod pで定義される曲線を有限体Fp上の楕円
曲線という。楕円曲線上の点とは、上式を満たす(x,
y)の組(ただし、0≦x,y<pなる整数)に無限遠
点Oを加えたものをいう。この無限遠点Oは加算に関す
る単位元となる。
【0008】楕円曲線上の点は以下に示す加算に関して
群をなす。楕円曲線上の点P=(x1 ,y1 )、Q=
(x2 ,y2 )の加算点をS(x3 ,y3 )とすると、
次のようになる。ただし、−P=(x1 ,−y1 )であ
る。
【0009】(1)Qが単位元Oのとき、 S=P+Q=Q+P=P (2)Q=−Pのとき、 S=P+Q=Q+P=O (3)P≠Qのとき(ただし上記(1)(2)以外)、 x3 =(y2 −y1 2 /(x2 −x1 2 −x1 −x
2 mod p y3 =(y2 −y1 )(x1 −x3 )/(x2 −x1
−y1 mod p (4)P=Qのとき、 ・y1 ≠0の場合 x3 =(3x1 2 +a)2 /(2y1 2 −2x1
od p y3 =(3x1 2 +a)(x1 −x3 )/(2y1 )−
1 mod p ・y1 =0の場合 S=O また、楕円曲線上の点P=(x1 ,y1 )のe(整数)
倍演算は上記加算の繰り返しとして次のように定義され
る。 eP=P+P+…+P(Pをe回加算する) ただし、e<0の場合は、点(−P)を(−e)倍する
((−e)は正である)。e=0のときには0P=Oと
する。
【0010】楕円曲線暗号では、この楕円曲線上の点の
スカラー倍演算(ベキ加算)が基本演算となる。例え
ば、楕円ElGamal暗号、楕円ElGamal署
名、楕円DHなどにおける処理の大半を占める演算であ
る。
【0011】したがって、RSA暗号が剰余乗算を基本
演算としているのに対して、楕円曲線暗号では、基本演
算を実現するのに四則演算が必要となる。
【0012】さて、楕円曲線暗号のように基本演算が多
倍長の四則演算の繰り返し処理であるような場合、四則
演算の中で処理に時間を要するものは、剰余乗算および
剰余除算であり、暗号処理全体を高速化するには、これ
ら剰余乗算および剰余除算を高速化する必要がある。こ
のうち前者の剰余乗算は、文献(1)のモンゴメリ乗算
のアルゴリズムなどを用いれば良い。
【0013】一方、剰余除算は逆元計算と剰余乗算との
組合せで実現でき、一般に逆元は拡張ユークリッド互除
法と呼ばれる算法で計算できる。しかし、一般にこのア
ルゴリズムはそれほど高速ではない。より高速な逆元の
計算法として、多倍長整数の右シフト(1/2倍)、加
算、減算で構成された計算法が、例えば文献(2)Ka
liski、B.S、Jr.、“The Montgo
mery invers and its appli
cation”、IEEE Tr. Comp.、Vo
l.44、No.8、pp.1064−1065、(A
ug.1995)に示されている。
【0014】しかしながら、前述の文献(1)のモンゴ
メリ乗算と文献(2)の剰余系での除算の高速計算法を
そのまま適用することはできない。なぜなら、モンゴメ
リ演算域と元の剰余系との変換・逆変換を乗算や除算の
たびに実行しなければならず、オーバーヘッドが大きく
なるからである。
【0015】また、剰余除算をモンゴメリ演算域で効率
良く求めるアルゴリズムはなかった。
【0016】このように、剰余除算を高速化することは
困難であるという問題点があった。
【0017】したがって、楕円曲線暗号のように基本演
算が四則演算(剰余系演算)の繰り返し処理であるよう
な暗号の処理を高速化することは困難であるという問題
点があった。
【0018】
【発明が解決しようとする課題】以上説明したように、
従来、公開鍵暗号の基本演算である剰余系での乗算と除
算を含む演算の繰り返し処理を効率化する算法は実現さ
れておらず、公開鍵暗号の一種である楕円曲線暗号など
における全体としての処理時間の効率化が困難であると
いう問題があった。
【0019】本発明は、上記事情を考慮してなされたも
ので、モンゴメリ演算域での逆元を高速に求めることの
できるモンゴメリ逆元計算装置及び方法、モンゴメリ演
算域での除算結果を高速に求めることのできるモンゴメ
リ除算装置及び方法を提供することを目的とする。
【0020】
【課題を解決するための手段】本発明(請求項1)は、
正の整数N、正の整数A(0≦A<N、AとNは互いに
素)、正の整数Bについて、Nを2進表現したときのビ
ット長をLとして、n≧Lなる整数nに対して、Y=B
・A-1・2n mod Nなるモンゴメリ演算域での除
算結果Yを求めるモンゴメリ除算装置であって、整数A
と法Nを入力として逆元X=A-1・22n mod Nを
求めるモンゴメリ逆元計算手段と、求められた逆元Xと
法NとBを入力として除算結果Y=B・X・2-n mo
d Nを求めるモンゴメリ乗算手段とを備えたことを特
徴とする。
【0021】本発明(請求項2)は、請求項1に記載の
モンゴメリ除算装置において、前記モンゴメリ逆元計算
手段は、整数Aと法Nを入力として中間結果C=A-1
kmod Nとパラメータk(L≦k≦2L)を求め
る逆元計算手段と、求められた中間結果Cとパラメータ
kと法Nを入力として逆元X=C・22n-k modNを
求める逆元補正手段とを有することを特徴とする。
【0022】本発明(請求項3)は、正の整数N、正の
整数A(0≦A<N、AとNは互いに素)、正の整数B
について、Nを2進表現したときのビット長をLとし
て、n≧Lなる整数nに対して、Y=B・A-1・2n
mod Nなるモンゴメリ演算域での除算結果Yを求め
るモンゴメリ除算装置であって、整数Aと法Nを入力と
して第1の中間結果C=A-1・2k mod Nとパラ
メータk(L≦k≦2L)を求める逆元計算手段と、求
められた第1の中間結果Cと法NとBを入力として第2
の中間結果D=B・C・2-n mod Nを求めるモン
ゴメリ乗算手段と、このモンゴメリ乗算手段により求め
られた第2の中間結果Dと前記逆元計算手段により求め
られたパラメータkと法Nを入力として除算結果Y=D
・22n-Kmod Nを求める逆元補正手段とを備えたこ
とを特徴とする。
【0023】本発明(請求項4)は、正の奇整数N、正
の整数A(0≦A<N、AとNは互いに素)について、
Nを2進表現したときのビット長をLとして、n≧Lな
る整数nに対して、X=A-1・22n mod Nなるモ
ンゴメリ演算域での逆元Xを求めるモンゴメリ逆元計算
装置であって、整数Aと法Nを入力として中間結果C=
-1・2k mod Nとパラメータk(L≦k≦2
L)を求める逆元計算手段と、求められた中間結果Cと
パラメータkと法Nを入力として逆元X=C・22n-k
mod Nを求める逆元補正手段とを備えたことを特徴
とする。
【0024】本発明(請求項5)は、請求項4に記載の
モンゴメリ逆元計算装置において、内部に中間変数を記
憶する複数のレジスタと、前記レジスタを右または左に
シフトするビットシフト器と、2つのレジスタの内容の
加算または減算を行う加減算器と、2つのレジスタの内
容の大小比較およびレジスタ内部の所定のビット位置の
値の判定を行う判定器とを用いて前記逆元計算部および
前記逆元補正部を構成することを特徴とする。
【0025】本発明(請求項6)は、正の奇整数N、正
の整数A(0≦A<N、AとNは互いに素)について、
Nを2進表現したときのビット長をLとして、n≧Lな
る整数nに対して、X=X=A-1・22n mod Nな
るモンゴメリ演算域での逆元Xを求めるモンゴメリ逆元
計算装置であって、初期状態を2進表現にてU=N、V
=A、T=0、S=1、k=0とし、Uの最下位ビット
が0ならば、Uを右シフトし、Sを左シフトし、kを1
増加する処理と、Vの最下位ビットが0ならば、Vを右
シフトし、Tを左シフトし、kを1増加する処理と、U
の最下位ビットが1かつVの最下位ビットが1で、U>
Vならば、UからVを減じ、Uを右シフトし、TにSを
加え、Sを左シフトし、kを1増加する処理と、Uの最
下位ビットが1かつVの最下位ビットが1で、U≦Vな
らば、VからUを減じ、Vを右シフトし、SにTを加
え、Tを左シフトし、kを1増加する処理からなる一連
のループ処理を、V>0の間、繰り返し、V=0になっ
た場合、T≧NならばTからNを減じた後に、NからT
を減じた値をTとし、T<NならばNからTを減じた値
をTとする逆元計算手段と、初期状態をi=0とし、前
記逆元計算手段により求められたTを左シフトした後、
T≧NならばTからNを減じてiを1増加し、T<Nな
らばiを1増加するループ処理を、i<2n−kの間、
繰り返し、i=2n−kになったときのTを逆元Xとす
る逆元補正手段とを備えたことを特徴とする。
【0026】本発明(請求項7)は、請求項6に記載の
モンゴメリ逆元計算装置において、初期状態としてNが
設定されるUレジスタと、初期状態としてAが設定され
るVレジスタと、初期状態として0が設定されるTレジ
スタと、初期状態として1が設定されるSレジスタと、
初期状態として0が設定されるkレジスタと、Uレジス
タの右シフト、Vレジスタの右シフト、Tレジスタの左
シフト、およびSレジスタの左シフトのうち指定された
ものを実行するビットシフト器と、UレジスタからVレ
ジスタの内容を減じる処理、VレジスタからUレジスタ
の内容を減じる処理、TレジスタにSレジスタの内容を
加える処理、SレジスタにTレジスタの内容を加える処
理、TレジスタからNを減じる処理、NからTレジスタ
の内容を減じる処理、およびkレジスタに1を加える処
理のうち指定されたものを実行する加減算器と、Uレジ
スタの最下位ビットが0であるか否か、Vレジスタの最
下位ビットが0であるか否か、Vレジスタの値が0にな
ったか否か、およびTレジスタの値がN以上であるか否
かを判断する判定器と、前記ビットシフト器、前記加減
算器および前記判定器を制御する制御部を備えたことを
特徴とする。
【0027】本発明(請求項8)は、正の整数N、正の
整数A(0≦A<N、AとNは互いに素)、正の整数B
について、Nを2進表現したときのビット長をLとし
て、n≧Lなる整数nに対して、Y=B・A-1・2n
mod Nなるモンゴメリ演算域での除算結果Yを求め
るモンゴメリ除算方法であって、整数Aと法Nを入力と
して逆元X=A-1・22n mod Nを求める第1のス
テップと、求められた逆元Xと法NとBを入力として除
算結果Y=B・X・2-n mod Nを求める第2のス
テップとを有することを特徴とする。
【0028】本発明(請求項9)は、請求項8に記載の
モンゴメリ除算方法において、前記第1のステップは、
整数Aと法Nを入力として中間結果C=A-1・2k
odNとパラメータk(L≦k≦2L)を求め、求めら
れた中間結果Cとパラメータkと法Nを入力として逆元
X=C・22n-k mod Nを求めるものであることを
特徴とする。
【0029】本発明(請求項10)は、正の整数N、正
の整数A(0≦A<N、AとNは互いに素)、正の整数
Bについて、Nを2進表現したときのビット長をLとし
て、n≧Lなる整数nに対して、Y=B・A-1・2n
mod Nなるモンゴメリ演算域での除算結果Yを求め
るモンゴメリ除算方法であって、整数Aと法Nを入力と
して第1の中間結果C=A-1・2k mod Nとパラ
メータk(L≦k≦2L)を求める第1のステップと、
この第1のステップにより求められた第1の中間結果C
と法NとBを入力として第2の中間結果D=B・C・2
-n mod Nを求める第2のステップと、この第2の
ステップにより求められた第2の中間結果Dと前記第1
のステップにより求められたパラメータkと法Nを入力
として除算結果Y=D・22n-K mod Nを求める第
3のステップとを有することを特徴とする。
【0030】本発明(請求項11)は、正の奇整数N、
正の整数A(0≦A<N、AとNは互いに素)につい
て、Nを2進表現したときのビット長をLとして、n≧
Lなる整数nに対して、X=A-1・22n mod Nな
るモンゴメリ演算域での逆元Xを求めるモンゴメリ逆元
計算方法であって、整数Aと法Nを入力として中間結果
C=A-1・2k mod Nとパラメータk(L≦k≦
2L)を求め、求められた中間結果Cとパラメータkと
法Nを入力として逆元X=C・22n-k modNを求め
ることを特徴とする。
【0031】本発明(請求項12)は、正の奇整数N、
正の整数A(0≦A<N、AとNは互いに素)につい
て、Nを2進表現したときのビット長をLとして、n≧
Lなる整数nに対して、X=A-1・22n mod Nな
るモンゴメリ演算域での逆元Xを求めるモンゴメリ逆元
計算方法であって、初期状態を2進表現にてU=N、V
=A、T=0、S=1、k=0とし、Uの最下位ビット
が0ならば、Uを右シフトし、Sを左シフトし、kを1
増加するとともに、Vの最下位ビットが0ならば、Vを
右シフトし、Tを左シフトし、kを1増加する処理と、
Uの最下位ビットが1かつVの最下位ビットが1で、U
>Vならば、UからVを減じ、Uを右シフトし、TにS
を加え、Sを左シフトし、kを1増加する処理と、Uの
最下位ビットが1かつVの最下位ビットが1で、U≦V
ならば、VからUを減じ、Vを右シフトし、SにTを加
え、Tを左シフトし、kを1増加する処理からなる一連
のループ処理を、V>0の間、繰り返し、V=0になっ
た場合、T≧NならばTからNを減じた後に、NからT
を減じた値をTとし、T<NならばNからTを減じた値
をTとする第1のステップと、初期状態をi=0とし、
前記第1のステップにより求められたTを左シフトした
後、T≧NならばTからNを減じてiを1増加し、T<
Nならばiを1増加するループ処理を、i<2n−kの
間、繰り返し、i=2n−kになったときのTを逆元X
とする第2のステップとを有することを特徴とする。
【0032】本発明によれば、モンゴメリ演算域のまま
でモンゴメリ逆元計算を行なうモンゴメリ逆元計算手段
とモンゴメリ乗算手段を用いるため、モンゴメリ演算域
の元を入力として、モンゴメリ演算域での除算結果を直
接求めることができる。この結果、モンゴメリ演算域と
元の剰余系との変換・逆変換のオーバーヘッドがないた
め、モンゴメリ演算域での除算が高速に実現できる。
【0033】また、本発明によれば、モンゴメリ演算域
のままモンゴメリ逆元計算を行なうことができ、モンゴ
メリ演算域と元の剰余系との変換・逆変換のオーバーヘ
ッドがないため、モンゴメリ演算域での逆元計算が高速
に実現できる。
【0034】また、本発明によれば、モンゴメリ演算域
での逆元計算が多倍長レジスタの加減算とビットシフト
で実現できるため、ソフトウェア実装・ハードウェア実
装のどちらでも高速な装置構成が可能となる。さらに、
モンゴメリ演算域での除算も高速な装置構成が実現でき
る。
【0035】したがって、楕円曲線暗号などのように剰
余系での乗算と除算を含む演算の繰り返し処理を基本演
算とする暗号において、全体としての処理時間を高速化
することができる。
【0036】なお、装置に係る本発明は方法に係る発明
としても成立し、方法に係る本発明は装置に係る発明と
しても成立する。
【0037】また、装置または方法に係る本発明は、コ
ンピュータに当該発明に相当する手順を実行させるため
の(あるいはコンピュータを当該発明に相当する手段と
して機能させるための、あるいはコンピュータに当該発
明に相当する機能を実現させるための)プログラムを記
録したコンピュータ読取り可能な記録媒体としても成立
する。
【0038】
【発明の実施の形態】以下、図面を参照しながら発明の
実施の形態を説明する。
【0039】なお、以下では、整数s,uについてs
mod uは、sをuで割ったときの剰余を表すものと
する。
【0040】前述したようにモンゴメリ演算域での乗算
は一般に、剰余系での乗算よりも効率良く実装できるこ
とが知られており、RSA暗号など剰余系の乗算を繰り
返す方式を実現する場合、モンゴメリ演算が利用される
ことがある。しかし、RSA暗号のように暗号化・復号
化に乗算を用いるだけではなく、除算や逆元計算を用い
る暗号もある。例えば、楕円曲線暗号では、剰余系での
四則演算を組合せて単位演算が構成され、その単位演算
を所定の回数繰り返すことで暗号アルゴリズムが構成さ
れる。ところが、モンゴメリ演算域での除算や逆元計算
としては効率良く実装できるものがなく、楕円曲線暗号
等のように剰余系での四則演算を組合せて単位演算が構
成されるものについてはモンゴメリ演算域を利用した処
理の効率化が困難であった。
【0041】本実施形態に係る除算装置、逆元計算装置
は、それぞれモンゴメリ演算域での剰余除算、逆元計算
の結果を効率的に求めることができるようにしたもので
ある。
【0042】最初に、通常の剰余系Zp(pを法とする
剰余系を表す)とモンゴメリ演算域との関係およびモン
ゴメリ演算域での演算について説明する。
【0043】図12に、モンゴメリ演算域と剰余系Zp
の2つの代数系の間における、定義域、元、逆元、およ
び加算、減算、乗算、除算の四則演算の関係を示す。
【0044】なお、法の値pは整数であるが、好ましく
は奇整数を用いる。また、暗号システムに適用する場
合、pには素数を用いることが多い。
【0045】剰余系Zpでの元をaとするとき、それに
対応するモンゴメリ演算域の元Aには、 A=a・R mod p により与えられる。
【0046】一方、モンゴメリ演算域の元Aから剰余系
Zpの元aへの逆変換は、 a=A・R-1 mod p により与えられる。
【0047】ここで、Rはモンゴメリ演算域を定義する
パラメータであり、その条件は、 (i)Rと法pとは互いに素であること (ii)R>p の2つである。
【0048】一般にRは2のべき乗(R=2n )とし、
さらにハードウェアのワード長の倍数を用いることが多
い。演算幅をできるだけ小さくするためには、法pのビ
ット数をLとした場合に、n≧Lを満たし、ワード長の
倍数である最小の値を用いることが好ましい。以下で
は、簡単のために、nは法pのビット長Lと等しいもの
として説明する。
【0049】図13(a)に、p=23、R=25 (n
=5)とした場合の剰余系Zpの元aとモンゴメリ演算
域の元Aとの対応関係を一例として示す(ただし、現実
の暗号装置等で使用するpは非常に大きな整数であ
る)。
【0050】モンゴメリ演算域での除算装置や逆元計算
装置では、R=2n を用いるものとする。
【0051】次に、モンゴメリ演算域での逆元計算と四
則演算は、剰余系Zpの元aに対しA=a・R mod
pなるモンゴメリ演算域の元が対応することを考慮し
て、図12のように定義できる。
【0052】まず、モンゴメリ演算域の加算および減算
は、剰余系でのそれらと同様、 A+B mod p A−B mod p で定義される。
【0053】次に、モンゴメリ乗算は、 A・B・R-1 mod p により与えられる。
【0054】他のモンゴメリ演算域での演算はモンゴメ
リ乗算ABR-1 mod pをもとにすると以下のよう
のに定義される。
【0055】Aの逆元Xは、AとXを乗数・被乗数とし
てモンゴメリ乗算を行なったときに、モンゴメリ演算域
での単位元となるRを結果として与えるような値とな
る。すなわち、逆元Xは、 A・X=R2 mod p を満たす値である。
【0056】したがって、モンゴメリ演算域での法をp
とするAについての逆元計算は、 X=A-1・R2 mod p により与えられる。
【0057】後述する本実施形態に係る逆元計算装置
は、入力Aと法pに対して、X=A-1・R2 mod
pを効率的に求める装置である。
【0058】同様にして、法をp、Aを除数、Bを被除
数すとるモンゴメリ除算は、 Y=B・A-1・R mod p =B・Ai ・R-1 mod p (ただし、Ai はモン
ゴメリ演算域でのAの逆元) により与えられる。
【0059】後述する本実施形態に係る除算装置は、入
力A,Bと法pに対して、B・Ai・R mod pを
効率的に求める装置である。
【0060】図13(b)に、p=23、R=25 (n
=5)とした場合の剰余系Zpにおける元aと逆元xの
対応関係を一例として示す。また、図13(c)に、p
=23、R=25 (n=5)とした場合のモンゴメリ演
算域における元Aと逆元Xの対応関係を一例として示
す。
【0061】さて、このようなモンゴメリ演算を利用す
るには、最初に剰余系Zpからモンゴメリ演算域への変
換を行ない、モンゴメリ演算域で所定の演算処理を繰り
返した後、モンゴメリ演算域から剰余系Zpへの逆変換
を行なう。なお、これら変換・逆変換はそれぞれ多倍長
乗算1回程度の処理であり、全体としてはあまり大きな
オーバヘッドではない。
【0062】ここで、モンゴメリ演算を利用した具体例
を示す。
【0063】例えば、p=23、R=25 (n=5)と
して、モンゴメリ演算を利用し剰余系Zpの元a=3の
逆元xを求める場合を考える。まず、剰余系Zpの元a
=3をモンゴメリ演算域の元Aに変換すると、A=4が
求まる。次に、モンゴメリ演算域の元A=4の逆元Xと
して、X=3が求まる。そして、モンゴメリ演算域の元
X=3を剰余系Zpの元xに逆変換すると、x=8が求
まる。なお、剰余系Zpの元a=3の逆元xを直接、剰
余系で求めると、x=8となり、上記の結果と一致する
ことがわかる。
【0064】また、例えば、p=23、R=25 (n=
5)として、モンゴメリ演算を利用し剰余系Zpの乗算
3×6を行なう場合を考える。まず、剰余系Zpの3と
6をモンゴメリ演算域の4と8に変換し、Y=4×8×
-1 mod pから、Y=1が求まる。これを剰余系
Zpに逆変換すると、乗算結果としてy=18が求ま
る。なお、剰余系Zpで直接y=3×6 mod pを
求めると、y=18となり、上記の結果と一致すること
がわかる。
【0065】また、例えば、p=23、R=25 (n=
5)として、モンゴメリ演算を利用し剰余系Zpの剰余
除算6/2を行なう場合を考える。まず、剰余系Zpの
6と2をモンゴメリ演算域の8と18に変換し、被除数
18の逆元として16を求め、Y=8/18×R-1
od p=8×16×R-1 mod pから、Y=4が
求まる。これを剰余系Zpに逆変換すると、除算結果と
してy=3が求まる。なお、剰余系Zpで直接y=6/
2 mod pを求めると、y=3となり、上記の結果
と一致することがわかる。
【0066】以下では、本実施形態に係るモンゴメリ演
算域での逆元計算装置および除算装置について説明す
る。
【0067】図1に、本発明の一実施形態に係るモンゴ
メリ演算域での除算装置の基本構成を示す。本除算装置
200は、モンゴメリ逆元計算部201とモンゴメリ乗
算部202を備えており、モンゴメリ逆元計算部201
とモンゴメリ乗算部202をシーケンシャルに利用して
モンゴメリ除算装置200を構成している。
【0068】本実施形態では、モンゴメリ除算Y=B・
-1・R mod pを、 Y=B・(A-1・R2 )・R-1 mod p =(B・(A-1・R2 mod p)・R-1 mod p =B・X・R-1 mod p と変形して、まず、除数Aと法pを入力としてモンゴメ
リ逆元計算部201によりモンゴメリ演算域でのAの逆
元Xを求め、次に、このXと上記の被除数Bと法pを入
力としてモンゴメリ乗算部202によりY=B・X・R
-1 mod p、すなわちY=B・A-1・R mod
pを求める。
【0069】モンゴメリ乗算部202は、剰余系での乗
算部に比べて高速に実現できることが知られており、本
実施形態では例えば文献(1)などに開示された公知の
技術を用いることができる。
【0070】図14に、モンゴメリ乗算部202におけ
る処理手順の一例を示す。ここでは、2数A、Bに対し
て、A・B・R-1 mod Nを求めるものとして表記
する。
【0071】V=−N-1 mod R(すなわち、V・
N=−1 mod Rを満たすV)を求め(ステップS
101)、T=A・Bを求め(ステップS102)、W
=((T mod R)・V) mod Rを求め(ス
テップS103)、T+W・NをTに代入し(ステップ
S104)、T=T/Rを実行する(ステップS10
5)。そして、T>Nならば(ステップS106)、T
からNを減ずる(ステップS107)。このときに得ら
れるTが法をNとするAとBのモンゴメリ乗算結果であ
る。なお、Rを2のべき乗にとれば、剰余算や除算は2
進数の下位の切り出しや上位の切り出しで実現できる。
また、Vの値を法Nについて計算しておくことで、処理
の効率化が可能である。
【0072】図15に、モンゴメリ乗算部202におけ
る処理手順の他の例を示す。この処理手順は図14の処
理手順を改良し、必要な演算を多倍長乗算2回程度にし
たものである。ここでは、2数A、Bに対して、A・B
・R-1 mod Nを求めるものとして表記する。ま
た、A、B、Nなどは、基数bで表現されているものと
する。例えば、A=ar-1 r-1 +ar-2 r-2 +…+
1 b+a0 などの形式である。ここで、基数bは2の
べき乗とし、例えば28 、216である。もちろん、b=
2でも構わない。
【0073】v0 =−N0 -1 mod b(すなわち、
0 ・N0 =−1 mod bを満たすv0 )を求め、
また、T=0、i=0とし(ステップS201)、T+
iBbi をTに代入し(ステップS202)、mi
i 0 mod bを求め(ステップS203)、T
+mi Nbi をTに代入し(ステップS204)、iを
1増加する。次に、ステップS206で、i≦(r−
1)ならばステップS202に戻る。また、ステップS
206で、i>(r−1)ならばループを抜けステップ
S207に移り、T=T/Rを実行する(ステップS2
07)。そして、T>Nならば(ステップS208)、
TからNを減ずる(ステップS209)。このときに得
られるTが法をNとするAとBのモンゴメリ乗算結果で
ある。
【0074】この手順の1つの特徴は、ステップS20
7の実行直前において、Tの下位側のLブロックが全て
0(すなわち、TはRの倍数)になる点にある。したが
って、ワーク領域を削減することが可能となる。また、
剰余算は2進数の下位の切り出しで実現できる。また、
0 の値を法Nについて計算しておくことで、処理の効
率化が可能である。
【0075】以上のようにモンゴメリ乗算部202は、
効率的な実現が可能である。また、詳しくは後述する
が、本発明によればモンゴメリ逆元計算部201を効率
的に実現することができる。従って、本実施形態の除算
装置200によれば、モンゴメリ演算域での除算を効率
良く実行することができる。
【0076】図2に、本実施形態に係るモンゴメリ演算
域での逆元計算装置201の基本構成の一例を示す。も
ちろん、この逆元計算装置201は、図1のモンゴメリ
除算装置200のモンゴメリ逆元計算部201として用
いることができる。
【0077】本逆元計算装置201は、逆元計算部30
1と逆元補正部302を備えており、逆元計算部301
と逆元補正部302をシーケンシャルに利用してモンゴ
メリ逆元計算装置201を構成している。
【0078】本実施形態では、逆元計算X=A-1・R2
mod p=A-1・22n modpを、 X=A-1・(2k ・22n-k) mod p =(A-1・2k )・22n-k mod p =(A-1・2k mod p)・22n-k mod p =C・22n-k mod p と変形して、まず、整数Aと法p(ただしAはpと互い
に素)を入力として逆元計算部301によりC=A-1
k mod pとkを求める。ここで、kはL以上2
L以下の整数で、Aとpから一意に決定される値であ
る。次に、このCとkと法pを入力として逆元補正部3
02により逆元X=C・22n-k mod p、すなわち
X=A-1・R2 mod pを求める。
【0079】図3および図4に、逆元計算部301にお
ける処理手順の一例を示す。
【0080】この手順は、Uレジスタ、Vレジスタ、T
レジスタ、Sレジスタの4つの多倍長レジスタを利用
し、レジスタの左右へのシフト演算とレジスタ同士の加
算、減算で構成され、ループの繰り返し回数がループカ
ウンタとして用いる変数kに格納される。kの値は法p
のビットサイズをLとするとき、L以上2L以下であ
り、加減算の処理量はO(L)であるため、全体でも高
々O(L2 )の処理量である。以下、図3および図4の
手順を流れを追って説明する。
【0081】まず、与えられた法pをレジスタUに、p
以下の正の整数AをレジスタVに設定する。また、レジ
スタTに0、レジスタSに1、レジスタkに0をそれぞ
れ設定する(ステップS401)。以上が、変数初期化
の処理である。
【0082】以降、ステップS402からステップS4
10の処理を、レジスタVが正の値である間(0になる
まで)、繰り返す。
【0083】まず、レジスタVが0でなければ、繰り返
し処理を続けるので、ステップS403にとぶ(ステッ
プS402)。
【0084】レジスタUの最下位ビットが0か否かを判
定する(ステップS403)。もし0であれば、レジス
タUを右に1ビットシフトし(ステップS411)、レ
ジスタSを左に1ビットシフトして(ステップS41
2)、ステップS410にとぶ。そして、ステップS4
10にてkの値を1増加し、ステップS402に戻る。
【0085】ステップS403にてレジスタUの最下位
ビットが0でなければ、レジスタVの最下位ビットが0
か否かを判定する(ステップS404)。もし0であれ
ば、レジスタVを右に1ビットシフトし(ステップS4
13)、レジスタTを左に1ビットシフトして(ステッ
プS414)、ステップS410にとぶ。そして、ステ
ップS410にてkの値を1増加し、ステップS402
に戻る。
【0086】ステップS403にてレジスタUの最下位
ビットが0でなく、ステップS404にてレジスタVの
最下位ビットが0でなければ、レジスタUとVの大小比
較を行なう(ステップS405)。
【0087】もしU>Vならば、レジスタUからレジス
タVの内容を引き(ステップS415)、レジスタUを
右に1ビットシフトし(ステップS416)、レジスタ
TにレジスタSの内容を加算し(ステップS417)、
レジスタSを左に1ビットシフトする(ステップS41
8)。そして、ステップS410にてkの値を1増加
し、ステップS402に戻る。
【0088】もしステップS405の結果、U<Vもし
くはU=Vの場合は、レジスタVからレジスタUの内容
を引き(ステップS406)、レジスタVを右に1ビッ
トシフトし(ステップS407)、レジスタSにレジス
タTの内容を加算し(ステップ408)、レジスタTを
左に1ビットシフトする(ステップS409)。そし
て、ステップS410にてkの値を1増加し、ステップ
S402に戻る。
【0089】以上のループを繰り返し、ステップS40
2にてレジスタVが0になった場合、ステップS419
に移る。そして、まず、レジスタUの内容が1かどうか
をチェックする。レジスタUの内容は入力Aと法pの最
大公約数になるので、もしUが1でなければAとpは互
いに素でないことになるので、Aの逆元は存在しない。
そのため、ステップS423でエラー処理をして終了す
る。
【0090】エラーでない場合、すなわちステップS4
19にてレジスタUの内容が1である場合、ステップS
420でTとpの大小比較を行ない、もしTがp以上で
あれば、Tからpを引き(ステップS421)、Tがp
以下の整数になるようにする。そして、ステップS42
2でpからTの内容を引いた結果をTに格納して処理を
終了する。
【0091】以上の処理により、Tの内容にはA-1・2
k mod pの計算結果が格納される。
【0092】次に、このT=A-1・2k mod pと
kの値を逆元補正部302に入力して、モンゴメリ逆元
値を計算する。
【0093】図5に、逆元補正部302の処理手順の一
例を示す。以下、図5の手順を流れを追って説明する。
【0094】まず、R=2n であるところのnを2倍し
た値をLにし、ループカウンタiを0に設定する(ステ
ップS501)。
【0095】次に、ループの繰り返し回数としてL−k
の値を求め、mに設定する(ステップS502)。
【0096】以降、ステップS503からステップS5
07の処理を、ループカウンタがmになるまで繰り返
す。
【0097】すなわち、ステップS503でiとmを比
較し、iがm未満の場合には、まず、レジスタTを1ビ
ット左シフトする(ステップS504)。次に、Tとp
の大小比較を行ない(ステップS505)、もしTがp
以上であればTからpを引く(ステップS506)。そ
して、ステップS507にてiの値を1増加し、ステッ
プS503に戻る。
【0098】ステップS503でi=mの場合には、上
記の処理ループを抜ける。このループを抜けた時点での
Tの値がモンゴメリ逆元値である。最後に、ステップS
508で逆元の値Tを出力して処理を終了する。
【0099】以上に示した図3、図4、図5の手順はレ
ジスタの加減算とビットシフトのみで実現されるため、
効率的な装置化が可能である。
【0100】以下では、具体例を用いて、本実施形態の
モンゴメリ逆元計算装置(または除算装置200のモン
ゴメリ逆元計算部)201の動作を説明する。
【0101】ここでは、一例として、法の値p=23、
R=25 (n=5)としたときに、モンゴメリ演算域で
の元A=19の逆元を求める場合について示す。
【0102】図6(a)、(b)には、逆元計算部30
1における、Uレジスタ、Vレジスタ、Tレジスタ、S
レジスタのそれぞれの内容を2進数で表した値(ただ
し、TレジスタとSレジスタにおける上位側ビットの0
の表示は省略してある)と、ループカウンタkの内容を
10進数で表した値の変遷を、各処理ループについて示
す。
【0103】また、図6(c)には、逆元補正部302
における、Tレジスタの内容を2進数で表した値(ただ
し、上位側ビットの0の表示は省略してある)の変遷
を、各処理ループについて示す。
【0104】まず、逆元計算部301において、初期化
処理の結果、Uレジスタ=p=10111、Vレジスタ
=A=10011、Tレジスタ=0、Sレジスタ=1、
k=0が設定される。
【0105】1回目のループでは、U>Vからステップ
S405にてYesとなり、ステップS415〜S41
8とS410が実行される。この結果、Uレジスタ=0
0010、Vレジスタ=10011、Tレジスタ=1、
Sレジスタ=10、k=1となる。
【0106】2回目のループでは、LSB(U)=0か
らステップS403にてYesとなり、ステップS41
1とS412とS410が実行される。この結果、Uレ
ジスタ=00001、Vレジスタ=10011、Tレジ
スタ=10、Sレジスタ=100、k=2となる。
【0107】3回目のループでは、U<Vからステップ
S405にてNoとなり、ステップS406〜S409
とS410が実行される。この結果、Uレジスタ=00
001、Vレジスタ=01001、Tレジスタ=10、
Sレジスタ=101、k=3となる。
【0108】以上のようにして処理を繰り返した結果、
7回目のループの実行後、Uレジスタ=00001、V
レジスタ=00000、Tレジスタ=100000、S
レジスタ=10111、k=7となり、Vレジスタ=0
0000となったので、処理ループを抜ける。
【0109】次に、U=1であるからステップS419
にてyesとなり、T>pであるからステップS420
にYesとなり、この結果、ステップS421にてT=
T−P=100000−10111=1001となり、
最後にステップS422にてT=p−T=10111−
1001=1110となる。
【0110】従って、逆元計算部301の出力は、T=
1110(=10進数表現で14)、k=7となる。
【0111】次に、逆元補正部302において、初期状
態として、T=1110、i=0、m=3に設定される
(iとmの値は10進数で表す)。
【0112】1回目のループでは、Tレジスタが左シフ
トされてT=11100となり、ステップS505でY
esとなるためステップS506にてT=101とな
り、そしてi=1となる。
【0113】2回目のループでは、Tレジスタが左シフ
トされてT=1010となり、ステップS505でNo
となるためステップS506は実行されず、i=2とな
る。
【0114】3回目のループでは、Tレジスタが左シフ
トされてT=10100となり、ステップS505でN
oとなるためステップS506は実行されず、i=3=
mとなり、処理ループを抜ける。
【0115】この結果、出力T=10100=10進数
表現で20となる。
【0116】このようにして、法の値p=23、R=2
5 (n=5)としたときにおける、モンゴメリ演算域で
の元A=19の逆元X=20を得ることができる。
【0117】なお、モンゴメリ演算域での元19と20
にそれぞれ対応する、剰余系Zpでも元を求めると、2
0と15になる。すなわち、剰余系Zpでの元20の逆
元として、15が得られたことになる。
【0118】以下では、前述した逆元計算部301や逆
元補正部302における処理の他の例をそれぞれ示す。
【0119】まず、図7および図8に逆元計算部301
の処理手順の他の例を示す。この手順は図3および図4
に示した処理手順と原理的には同じであるが、図3およ
び図4の手順においてステップS403とステップS4
04でそれぞれ多倍長レジスタUとVの最下位ビットだ
けを判定の基準に用い、最下位ビットが0の場合に後続
の手順であるステップS411およびステップS41
2、ステップS413およびステップS414で1ビッ
トだけレジスタのシフトを行っていたものを、最下位ビ
ットから0が複数連続する場合には一度に複数ビットの
シフトを可能とするように改良したものである。このよ
うに、一度に複数ビットをまとめて処理する方が有利な
場合は多く、特にソフトウェア実装において高速とな
る。
【0120】以下、図7および図8の手順を流れを追っ
て説明する。
【0121】まず、入力として与えられた法pをレジス
タUに、p以下の正の整数AをレジスタVに設定する。
また、レジスタTに0、レジスタSに1、レジスタkに
0をそれぞれ設定する(ステップS601)。
【0122】以降、ステップS602からステップS6
12の処理を、レジスタVが正の値である間(0になる
まで)、繰り返す。
【0123】ステップS602でレジスタVが0でなけ
れば、まず、レジスタUの最下位ビットからの“0”の
連長をカウントしてこの値をwとする(ステップS60
3)。次にwが0か否かを判定し(ステップS60
4)、もし0でなければ、レジスタUをwビットだけ右
シフトし(ステップS613)、レジスタSをwビット
だけ左シフトし(ステップS614)、ループカウンタ
Kにwを加え(ステップS615)、ステップS602
へとぶ。
【0124】ステップS604でwが0ならば、レジス
タVの最下位ビットからの“0”の連長をカウントして
この値をwとする(ステップ605)。次にwが0かど
うかを判定し(ステップS606)、もし0でなけれ
ば、レジスタVをwビットだけ右シフトし(ステップS
616)、レジスタTをwビットだけ左シフトし(ステ
ップS617)、ループカウンタKにwを加え(ステッ
プS618)、ステップS602へとぶ。
【0125】ステップS606でwが0ならば、レジス
タUとVの大小比較をし(ステップS607)、もしU
>Vならば、レジスタUからレジスタVの内容を引き
(ステップS619)、レジスタUを右に1ビットシフ
トし(ステップS620)、レジスタTにレジスタSの
内容を加算し(ステップS621)、レジスタSを左に
1ビットシフトし(ステップS622)、ループカウン
タKに1を加え(ステップS623)、ステップS60
2へとぶ。
【0126】もしステップS607の結果、U<Vもし
くはU=Vの場合は、レジスタVからレジスタUの内容
を引き(ステップS608)、レジスタVを右に1ビッ
トシフトし(ステップS609)、レジスタSにレジス
タTの内容を加算し(ステップS610)、レジスタT
を左に1ビットシフトし(ステップS811)、ループ
カウンタKに1を加え(ステップS623)、ステップ
S602へもどる。
【0127】以上のループを繰り返し、ステップS60
2でレジスタVが0になった場合、処理ループを抜け、
まず、レジスタUの内容が1かどうかをチェックする
(ステップS624)。レジスタUの内容は入力Aと法
pの最大公約数になるので、もしUが1でなければステ
ップS628でエラー処理をして終了する。
【0128】エラーでない場合、すなわちステップS6
24にてレジスタUの内容が1である場合、レジスタT
とpの大小比較をし(ステップS625)、もしTがp
以上であれば、Tからpを引き(ステップS626)、
Tがp以下の整数になるようにする。そして、ステップ
S627でpからTの内容を引いた結果をTに格納して
処理を終了する。
【0129】以上の処理により、Tの内容としてA-1
k mod pが計算される。
【0130】次に、逆元補正部302の処理の流れの別
の一例を図9、図10に示す。
【0131】この手順も図5に示した処理手順と原理的
には同じであるが、図5の手順においてステップS50
4で多倍長レジスタTを1ビットだけ左シフトを行うこ
とを繰り返していたものを、一度に複数ビットのシフト
を可能とするように改良したものである。このように、
一度に複数ビットをまとめて処理する方が有利な場合は
多く、特にソフトウェア実装において高速となる。
【0132】以下、図9、図10の手順を流れを追って
説明する。
【0133】まず、R=2n であるところのnを2倍し
た値をLにし、ループカウンタiを0に設定する(ステ
ップS701)。
【0134】次に、ループの繰り返し回数としてL−k
の値を求め、mに設定する(ステップS702)。
【0135】以降、ステップS703からステップS7
10の処理を、ループカウンタiがmになるまで繰り返
す。
【0136】ステップS703でiとmを比較し、iが
m未満の場合には、まず、レジスタTを法pと同じサイ
ズの2進数と見たときに最上位ビットからの“0”の連
長をカウントしてこの値をwとする(ステップS70
4)。
【0137】次に、wが0かどうかを判定し(ステップ
S705)、もし0ならばレジスタTを1ビットだけ左
シフトする(ステップS712)。この結果、Tの値は
pより大きくなるのでステップS713でレジスタTか
らpの値を減ずる。そして、ループカウンタiに1を加
え(ステップS714)、ステップS703へとぶ。ス
テップS705でwが0でなければ、次にi+wを計算
し、この値とmの大小比較を行う(ステップS70
6)。もしi+w>mならば、wをm−iとし(ステッ
プS715)、レジスタTをwビットだけ左シフトする
(ステップS716)。ループカウンタはmとする(ス
テップS717)。ここではステップS716の左シフ
トの結果は必ずpよりも小さいため、補正は不要であ
り、ステップS703へとぶ。
【0138】ステップS706でi+w<mもしくはi
+w=mの場合には、レジスタTをwビットだけ左シフ
トする(ステップS707)。この結果、Tの値はpよ
り大きくなる可能性があるので、ステップS708でT
とpの大小比較を行い、Tがp以上の場合はTからpの
値を減ずる(ステップS709)。最後にループカウン
タiにwを加え(ステップS710)、ステップS70
3に戻る。
【0139】以上のループを繰り返し、ステップS70
3でi=mになった場合、処理ループを抜ける。このル
ープを抜けた時点でのTの値がモンゴメリ逆元値であ
り、この値を出力して(ステップS711)、処理を終
了する。
【0140】以上に示した図7と図8、図9と図10の
手順もレジスタの加減算とビットシフトのみで実現され
る。
【0141】なお、図2のモンゴメリ逆元計算装置や図
1のモンゴメリ除算装置のモンゴメリ逆元計算部におい
て、逆元計算部301としては、図3と図4、図7およ
び図8のいずれかを、また、逆元補正部302として
は、図5、図9と図10のいずれかを、それぞれ任意に
組み合わせて利用可能である。
【0142】ところで、本モンゴメリ除算装置は、図1
で例示した構成に限定されず、他の構成も可能である。
図16に、本実施形態に係るモンゴメリ除算装置の基本
構成の他の例を示す。
【0143】図2に例示したようにモンゴメリ逆元計算
機装置は、一例として、逆元計算部301と逆元補正部
302に分割できるが、図16では、この逆元計算部3
01をモンゴメリ乗算部202の前段に、また、逆元補
正部302をモンゴメリ乗算部202の後段に配置した
構成となっている。これは、逆元計算部301の出力C
に対しては、逆元補正部302の演算も、モンゴメリ乗
算部202の演算も共に乗算であることから、その順序
に対する可換性が成立することに基づいている。これを
数式で表現すると以下のようになる。
【0144】 Y=B・A-1・R mod p =B・(A-1K )2-K・(R-12 ) mod p =B・(A-1K mod p)・R-1(R2 ・2-K) mod p =(B・C・R-1 mod p)・22n-K mod p =D・22n-K mod p このようにモンゴメリ除算装置は必ずしもモンゴメリ逆
元計算部とモンゴメリ乗算部をシーケンシャルに利用し
なくても構成できる。重要なことは、モンゴメリ除算で
あるY=B(A-1)R mod pを効率的に計算する
ことであり、そのためにモンゴメリ逆元計算装置の構成
部品(モジュール)である逆元計算部と逆元補正部を分
離して用いることもできる。
【0145】以上のように本実施形態によれば、楕円曲
線暗号など多倍長の四則演算の繰り返し処理を高速に処
理する場合に、モンゴメリ演算域での元を入力として、
モンゴメリ逆元計算やモンゴメリ除算を実行することが
できる。したがって、最初に元の剰余系からモンゴメリ
演算域に元を変換した後は、モンゴメリ演算域のままで
繰り返し処理を実行できる。最後にモンゴメリ演算域か
ら元の剰余系に逆変換すれば良いので全体としてのモン
ゴメリ変換・逆変換のオーバーヘッドを小さくできる。
また、本実施形態のモンゴメリ逆元計算およびモンゴメ
リ除算は多倍長レジスタの加減算とビットシフトのみで
実現できるため、ソフトウェア・ハードウェアのどちら
でも効率良く実現できる。
【0146】以下では、本実施形態に係るモンゴメリ演
算域での逆元計算装置のハードウェア構成について説明
する。
【0147】図11に、本逆元計算装置の一構成例をブ
ロック図で示す。
【0148】本逆元計算装置は、多倍長レジスタU(8
01)、多倍長レジスタV(802)、多倍長レジスタ
S(803)、多倍長レジスタT(804)とループカ
ウンタとなる単精度のレジスタK(805)、演算部と
して加減算器806とビットシフタ807、加減算器8
06の出力を格納する多倍長のレジスタ808とビット
シフタ807の出力を格納する多倍長のレジスタ80
9、そして全体の動作を制御する制御部(図示せず)を
構成要素として持つ。これらの各構成要素は、データ・
バス810に結線されており、相互にデータの転送が可
能である。制御部では、前述したような処理手順に従い
レジスタの特定ビットの0/1判定やレジスタの特定部
分の0の連長の検査なども行う。
【0149】図2における逆元計算部301は、この構
成要素を図3および図4、もしくは図7および図8に従
う動作を行うように制御することによって実現され、図
2における逆元補正部302は、法pを空いているレジ
スタ(例えばUレジスタ)に設定し、図5もしくは図9
および図10に従う動作を行うように制御することによ
って実現される。
【0150】なお、以上の各機能は、ソフトウェアとし
ても実現可能である。
【0151】また、本実施形態は、コンピュータに所定
の手順を実行させるための(あるいはコンピュータを所
定の手段として機能させるための、あるいはコンピュー
タに所定の機能を実現させるための)プログラムを記録
したコンピュータ読取り可能な記録媒体として実施する
こともできる。
【0152】本発明は、上述した実施の形態に限定され
るものではなく、その技術的範囲において種々変形して
実施することができる。
【0153】
【発明の効果】本発明によれば、モンゴメリ演算域での
逆元計算と乗算を行って除算結果を得るので、モンゴメ
リ演算域の元を入力として、モンゴメリ演算域での除算
結果を直接求めることができる。この結果、モンゴメリ
演算域と元の剰余系との変換・逆変換のオーバーヘッド
がないため、モンゴメリ演算域での除算が高速に実現で
きる。
【0154】また、本発明によれば、モンゴメリ演算域
のままモンゴメリ逆元計算を行なうことができ、モンゴ
メリ演算域と元の剰余系との変換・逆変換のオーバーヘ
ッドがないため、モンゴメリ演算域での逆元計算が高速
に実現できる。
【0155】また、本発明によれば、モンゴメリ演算域
での逆元計算が多倍長レジスタの加減算とビットシフト
で実現できるため、ソフトウェア実装・ハードウェア実
装のどちらでも高速な装置構成が可能となる。さらに、
モンゴメリ演算域での除算も高速な装置構成が実現でき
る。
【0156】したがって、楕円曲線暗号などのように剰
余系での乗算と除算を含む演算の繰り返し処理を基本演
算とする暗号において、全体としての処理時間を高速化
することができる。
【図面の簡単な説明】
【図1】本発明に係るモンゴメリ演算域での除算計算装
置の一構成例を示す図
【図2】本発明に係るモンゴメリ演算域での逆元計算装
置の一構成例を示す図
【図3】図2の逆元計算部での処理手順の一例を示すフ
ローチャート
【図4】図2の逆元計算部での処理手順の一例を示すフ
ローチャート
【図5】図2の逆元補正部での処理手順の一例を示すフ
ローチャート
【図6】図2の逆元計算装置の具体的な動作例を説明す
るための図
【図7】図2の逆元計算部での処理手順の他の例を示す
フローチャート
【図8】図2の逆元計算部での処理手順の他の例を示す
フローチャート
【図9】図2の逆元補正部での処理手順の他の例を示す
フローチャート
【図10】図2の逆元補正部での処理手順の他の例を示
すフローチャート
【図11】本発明に係るモンゴメリ演算域での逆元計算
装置のハードウェア構成を示すブロック図
【図12】モンゴメリ演算域と剰余系Zpの演算の対応
を示す図
【図13】モンゴメリ演算域と剰余系Zpの元および逆
元の具体例を示す図
【図14】図1のモンゴメリ乗算部での処理の一例を示
すフローチャート
【図15】図1のモンゴメリ乗算部での処理の他の例を
示すフローチャート
【図16】本発明に係るモンゴメリ演算域での除算計算
装置の他の構成例を示す図
【符号の説明】
200…モンゴメリ除算装置 201…モンゴメリ逆元計算装置(モンゴメリ逆元計算
部) 202…モンゴメリ乗算部 301…逆元計算部 302…逆元補正部 801,802,803,804,805,808,8
09…レジスタ 806…加減算器 807…ビットシフタ

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】正の整数N、正の整数A(0≦A<N、A
    とNは互いに素)、正の整数Bについて、Nを2進表現
    したときのビット長をLとして、n≧Lなる整数nに対
    して、Y=B・A-1・2n mod Nなるモンゴメリ
    演算域での除算結果Yを求めるモンゴメリ除算装置であ
    って、 整数Aと法Nを入力として逆元X=A-1・22n mod
    Nを求めるモンゴメリ逆元計算手段と、 求められた逆元Xと法NとBを入力として除算結果Y=
    B・X・2-n modNを求めるモンゴメリ乗算手段と
    を備えたことを特徴とするモンゴメリ除算装置。
  2. 【請求項2】前記モンゴメリ逆元計算手段は、 整数Aと法Nを入力として中間結果C=A-1・2k
    od Nとパラメータk(L≦k≦2L)を求める逆元
    計算手段と、 求められた中間結果Cとパラメータkと法Nを入力とし
    て逆元X=C・22n-kmod Nを求める逆元補正手段
    とを有することを特徴とする請求項1に記載のモンゴメ
    リ除算装置。
  3. 【請求項3】正の整数N、正の整数A(0≦A<N、A
    とNは互いに素)、正の整数Bについて、Nを2進表現
    したときのビット長をLとして、n≧Lなる整数nに対
    して、Y=B・A-1・2n mod Nなるモンゴメリ
    演算域での除算結果Yを求めるモンゴメリ除算装置であ
    って、 整数Aと法Nを入力として第1の中間結果C=A-1・2
    k mod Nとパラメータk(L≦k≦2L)を求め
    る逆元計算手段と、 求められた第1の中間結果Cと法NとBを入力として第
    2の中間結果D=B・C・2-n mod Nを求めるモ
    ンゴメリ乗算手段と、 このモンゴメリ乗算手段により求められた第2の中間結
    果Dと前記逆元計算手段により求められたパラメータk
    と法Nを入力として除算結果Y=D・22n-Kmod N
    を求める逆元補正手段とを備えたことを特徴とするモン
    ゴメリ除算装置。
  4. 【請求項4】正の奇整数N、正の整数A(0≦A<N、
    AとNは互いに素)について、Nを2進表現したときの
    ビット長をLとして、n≧Lなる整数nに対して、X=
    -1・22n mod Nなるモンゴメリ演算域での逆元
    Xを求めるモンゴメリ逆元計算装置であって、 整数Aと法Nを入力として中間結果C=A-1・2k
    od Nとパラメータk(L≦k≦2L)を求める逆元
    計算手段と、 求められた中間結果Cとパラメータkと法Nを入力とし
    て逆元X=C・22n-kmod Nを求める逆元補正手段
    とを備えたことを特徴とするモンゴメリ逆元計算装置。
  5. 【請求項5】内部に中間変数を記憶する複数のレジスタ
    と、 前記レジスタを右または左にシフトするビットシフト器
    と、 2つのレジスタの内容の加算または減算を行う加減算器
    と、 2つのレジスタの内容の大小比較およびレジスタ内部の
    所定のビット位置の値の判定を行う判定器とを用いて前
    記逆元計算部および前記逆元補正部を構成することを特
    徴とする請求項4に記載のモンゴメリ逆元計算装置。
  6. 【請求項6】正の奇整数N、正の整数A(0≦A<N、
    AとNは互いに素)について、Nを2進表現したときの
    ビット長をLとして、n≧Lなる整数nに対して、X=
    -1・22n mod Nなるモンゴメリ演算域での逆元
    Xを求めるモンゴメリ逆元計算装置であって、 初期状態を2進表現にてU=N、V=A、T=0、S=
    1、k=0とし、 Uの最下位ビットが0ならば、Uを右シフトし、Sを左
    シフトし、kを1増加する処理と、 Vの最下位ビットが0ならば、Vを右シフトし、Tを左
    シフトし、kを1増加する処理と、 Uの最下位ビットが1かつVの最下位ビットが1で、U
    >Vならば、UからVを減じ、Uを右シフトし、TにS
    を加え、Sを左シフトし、kを1増加する処理と、 Uの最下位ビットが1かつVの最下位ビットが1で、U
    ≦Vならば、VからUを減じ、Vを右シフトし、SにT
    を加え、Tを左シフトし、kを1増加する処理からなる
    一連のループ処理を、V>0の間、繰り返し、 V=0になった場合、T≧NならばTからNを減じた後
    に、NからTを減じた値をTとし、T<NならばNから
    Tを減じた値をTとする逆元計算手段と、 初期状態をi=0とし、 前記逆元計算手段により求められたTを左シフトした
    後、T≧NならばTからNを減じてiを1増加し、T<
    Nならばiを1増加するループ処理を、i<2n−kの
    間、繰り返し、 i=2n−kになったときのTを逆元Xとする逆元補正
    手段とを備えたことを特徴とするモンゴメリ逆元計算装
    置。
  7. 【請求項7】初期状態としてNが設定されるUレジスタ
    と、 初期状態としてAが設定されるVレジスタと、 初期状態として0が設定されるTレジスタと、 初期状態として1が設定されるSレジスタと、 初期状態として0が設定されるkレジスタと、 Uレジスタの右シフト、Vレジスタの右シフト、Tレジ
    スタの左シフト、およびSレジスタの左シフトのうち指
    定されたものを実行するビットシフト器と、 UレジスタからVレジスタの内容を減じる処理、Vレジ
    スタからUレジスタの内容を減じる処理、Tレジスタに
    Sレジスタの内容を加える処理、SレジスタにTレジス
    タの内容を加える処理、TレジスタからNを減じる処
    理、NからTレジスタの内容を減じる処理、およびkレ
    ジスタに1を加える処理のうち指定されたものを実行す
    る加減算器と、 Uレジスタの最下位ビットが0であるか否か、Vレジス
    タの最下位ビットが0であるか否か、Vレジスタの値が
    0になったか否か、およびTレジスタの値がN以上であ
    るか否かを判断する判定器と、 前記ビットシフト器、前記加減算器および前記判定器を
    制御する制御部を備えたことを特徴とする請求項6に記
    載のモンゴメリ逆元計算装置。
  8. 【請求項8】正の整数N、正の整数A(0≦A<N、A
    とNは互いに素)、正の整数Bについて、Nを2進表現
    したときのビット長をLとして、n≧Lなる整数nに対
    して、Y=B・A-1・2n mod Nなるモンゴメリ
    演算域での除算結果Yを求めるモンゴメリ除算方法であ
    って、 整数Aと法Nを入力として逆元X=A-1・22n mod
    Nを求める第1のステップと、 求められた逆元Xと法NとBを入力として除算結果Y=
    B・X・2-n modNを求める第2のステップとを有
    することを特徴とするモンゴメリ除算方法。
  9. 【請求項9】前記第1のステップは、 整数Aと法Nを入力として中間結果C=A-1・2k
    od Nとパラメータk(L≦k≦2L)を求め、 求められた中間結果Cとパラメータkと法Nを入力とし
    て逆元X=C・22n-kmod Nを求めるものであるこ
    とを特徴とする請求項8に記載のモンゴメリ除算方法。
  10. 【請求項10】正の整数N、正の整数A(0≦A<N、
    AとNは互いに素)、正の整数Bについて、Nを2進表
    現したときのビット長をLとして、n≧Lなる整数nに
    対して、Y=B・A-1・2n mod Nなるモンゴメ
    リ演算域での除算結果Yを求めるモンゴメリ除算方法で
    あって、 整数Aと法Nを入力として第1の中間結果C=A-1・2
    k mod Nとパラメータk(L≦k≦2L)を求め
    る第1のステップと、 この第1のステップにより求められた第1の中間結果C
    と法NとBを入力として第2の中間結果D=B・C・2
    -n mod Nを求める第2のステップと、 この第2のステップにより求められた第2の中間結果D
    と前記第1のステップにより求められたパラメータkと
    法Nを入力として除算結果Y=D・22n-K mod N
    を求める第3のステップとを有することを特徴とするモ
    ンゴメリ除算方法。
  11. 【請求項11】正の奇整数N、正の整数A(0≦A<
    N、AとNは互いに素)について、Nを2進表現したと
    きのビット長をLとして、n≧Lなる整数nに対して、
    X=A-1・22n mod Nなるモンゴメリ演算域での
    逆元Xを求めるモンゴメリ逆元計算方法であって、 整数Aと法Nを入力として中間結果C=A-1・2k
    od Nとパラメータk(L≦k≦2L)を求め、 求められた中間結果Cとパラメータkと法Nを入力とし
    て逆元X=C・22n-kmod Nを求めることを特徴と
    するモンゴメリ逆元計算方法。
  12. 【請求項12】正の奇整数N、正の整数A(0≦A<
    N、AとNは互いに素)について、Nを2進表現したと
    きのビット長をLとして、n≧Lなる整数nに対して、
    X=A-1・22n mod Nなるモンゴメリ演算域での
    逆元Xを求めるモンゴメリ逆元計算方法であって、 初期状態を2進表現にてU=N、V=A、T=0、S=
    1、k=0とし、 Uの最下位ビットが0ならば、Uを右シフトし、Sを左
    シフトし、kを1増加するとともに、Vの最下位ビット
    が0ならば、Vを右シフトし、Tを左シフトし、kを1
    増加する処理と、 Uの最下位ビットが1かつVの最下位ビットが1で、U
    >Vならば、UからVを減じ、Uを右シフトし、TにS
    を加え、Sを左シフトし、kを1増加する処理と、 Uの最下位ビットが1かつVの最下位ビットが1で、U
    ≦Vならば、VからUを減じ、Vを右シフトし、SにT
    を加え、Tを左シフトし、kを1増加する処理からなる
    一連のループ処理を、V>0の間、繰り返し、 V=0になった場合、T≧NならばTからNを減じた後
    に、NからTを減じた値をTとし、T<NならばNから
    Tを減じた値をTとする第1のステップと、 初期状態をi=0とし、 前記第1のステップにより求められたTを左シフトした
    後、T≧NならばTからNを減じてiを1増加し、T<
    Nならばiを1増加するループ処理を、i<2n−kの
    間、繰り返し、 i=2n−kになったときのTを逆元Xとする第2のス
    テップとを有することを特徴とするモンゴメリ逆元計算
    方法。
JP10014250A 1997-01-27 1998-01-27 モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法 Expired - Lifetime JP2937982B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10014250A JP2937982B2 (ja) 1997-01-27 1998-01-27 モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP1266797 1997-01-27
JP9-12667 1997-01-27
JP10014250A JP2937982B2 (ja) 1997-01-27 1998-01-27 モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法

Publications (2)

Publication Number Publication Date
JPH10269060A JPH10269060A (ja) 1998-10-09
JP2937982B2 true JP2937982B2 (ja) 1999-08-23

Family

ID=26348307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10014250A Expired - Lifetime JP2937982B2 (ja) 1997-01-27 1998-01-27 モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法

Country Status (1)

Country Link
JP (1) JP2937982B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19820605A1 (de) * 1998-05-08 1999-11-11 Giesecke & Devrient Gmbh Verfahren zur sicheren Verteilung von Software
JP4360792B2 (ja) 2002-09-30 2009-11-11 株式会社ルネサステクノロジ べき乗剰余演算器
JP2004145010A (ja) 2002-10-24 2004-05-20 Renesas Technology Corp 暗号回路
JP2005221830A (ja) * 2004-02-06 2005-08-18 Sanyo Electric Co Ltd 逆元演算装置、演算処理装置および演算処理方法
KR101977873B1 (ko) * 2017-08-25 2019-08-28 국방과학연구소 하드웨어 구현된 모듈러 역원 모듈
CN112805770B (zh) * 2018-10-10 2023-10-03 日本电信电话株式会社 秘密右移位运算系统及方法、秘密除法运算系统及方法、秘密计算装置以及记录介质
CN115276960B (zh) * 2022-08-02 2024-03-15 山东大学 一种sm2蒙哥马利域上的快速模逆芯片实现装置及方法

Also Published As

Publication number Publication date
JPH10269060A (ja) 1998-10-09

Similar Documents

Publication Publication Date Title
US6088453A (en) Scheme for computing Montgomery division and Montgomery inverse realizing fast implementation
Knezevic et al. Faster interleaved modular multiplication based on Barrett and Montgomery reduction methods
Gordon A survey of fast exponentiation methods
US8862651B2 (en) Method and apparatus for modulus reduction
Kaihara et al. A hardware algorithm for modular multiplication/division
JP5182364B2 (ja) サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
Dimitrov et al. Area-efficient multipliers based on multiple-radix representations
JP3542278B2 (ja) モンゴメリ・リダクション装置及び記録媒体
US8781112B2 (en) Signed montgomery arithmetic
JP2937982B2 (ja) モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
Vollala et al. Efficient modular exponential algorithms compatible with hardware implementation of public‐key cryptography
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
van Wamelen Jacobi sums over finite fields
Cho et al. High-speed modular multiplication algorithm for RSA cryptosystem
Koyama et al. A signed binary window method for fast computing over elliptic curves
Wu An efficient common-multiplicand-multiplication method to the Montgomery algorithm for speeding up exponentiation
KR100322740B1 (ko) 모듈러 연산장치 및 그 방법
JP3626315B2 (ja) 剰余算装置、情報処理装置及び剰余算方法
JP3842641B2 (ja) モンゴメリ乗算を用いるコプロセッサを使用する演算装置及び方法
KR100257124B1 (ko) 공통 피승수 모듈라 곱셈을 이용한 고속 멱승 방법
Mohammadi et al. A fast and secure RSA public key cryptosystem
Olszyna Modular multiplication in GF (p) for public-key cryptography
Arunachalamani et al. High Radix Design for Montgomery Multiplier in FPGA platform

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090611

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20090611

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100611

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20100611

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20110611

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20120611

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20120611

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20130611

Year of fee payment: 14

EXPY Cancellation because of completion of term