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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic 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
クでのデータ通信におけるデータの暗号化や通信相手の
確認に利用される公開鍵暗号など奇数の整数を法とする
多倍長の四則演算を繰り返し利用する処理のためのモン
ゴメリ除算装置及びモンゴメリ逆元計算装置並びにモン
ゴメリ除算方法及びモンゴメリ逆元計算方法に関する。
では、電子的な情報の交換・蓄積が行われる。そのよう
なシステムが、大規模化し不特定多数のユーザが利用す
る状況では、悪意のユーザによる情報の盗聴や改ざんな
どが問題となり、その対策として公開鍵暗号技術を利用
する場合が多い。
る演算で実現される方式が多く、その高速化が性能に影
響を与える。多倍長の奇整数を法とする四則演算の中で
は、特に乗算と除算が処理時間に与える影響が大きい。
このうち、乗算を繰り返し実行する場合に適した計算ア
ルゴリズムとして、モンゴメリ算法が知られている。 モンゴメリ算法は文献(1)P.L.Montgome
ry、“Modularmultiplication
without trial division”、
Math. of Comp.、Vol.44、No.
170、pp.519−521(1985)に詳しい。
長乗算2回程度の処理量で計算する方法である。多倍長
の剰余算は多倍長の乗算よりも性能が劣ることが多く、
その分の高速化が実現できる。このモンゴメリ算法はモ
ンゴメリ演算域の元(これも同じ剰余系である)の乗算
アルゴリズムであり、一般の剰余系での乗算をするに
は、まず乗数と被乗数をモンゴメリ演算域に変換し、次
にモンゴメリ乗算を行ない、最後にモンゴメリ演算域か
ら元の剰余系に結果を逆変換する。モンゴメリ変換とモ
ンゴメリ逆変換はいずれも多倍長乗算1回程度の処理で
あるため、剰余乗算を繰り返し行なう、べき乗演算では
変換と逆変換のオーバーヘッドが少なく、高速化が可能
である。したがって、RSA(Rivest−Sham
ir−Adleman)暗号など多くの公開鍵暗号で
は、剰余系でのベキ乗剰余演算c=me mod Nを
その基本演算としているため、このモンゴメリ算法を有
効に利用することができる(ただし、単純にいくつかの
乗算を行なうだけの場合には、変換と逆変換のオーバー
ヘッドのため必ずしも効率化にはつながらない)。
究・提案されており、例えば楕円曲線暗号が公開鍵暗号
の中で注目を集めている。これは、楕円曲線上の離散対
数問題がRSA暗号のベースとなっている合成数の素因
数分解に比べて計算量的に困難であるという予想に基づ
いている。
簡単に説明する。
p ただし、0≦a,b<pなる整数、4a3 +27b2 ≠
0 mod pで定義される曲線を有限体Fp上の楕円
曲線という。楕円曲線上の点とは、上式を満たす(x,
y)の組(ただし、0≦x,y<pなる整数)に無限遠
点Oを加えたものをいう。この無限遠点Oは加算に関す
る単位元となる。
群をなす。楕円曲線上の点P=(x1 ,y1 )、Q=
(x2 ,y2 )の加算点をS(x3 ,y3 )とすると、
次のようになる。ただし、−P=(x1 ,−y1 )であ
る。
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 m
od p y3 =(3x1 2 +a)(x1 −x3 )/(2y1 )−
y1 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と
する。
スカラー倍演算(ベキ加算)が基本演算となる。例え
ば、楕円ElGamal暗号、楕円ElGamal署
名、楕円DHなどにおける処理の大半を占める演算であ
る。
演算としているのに対して、楕円曲線暗号では、基本演
算を実現するのに四則演算が必要となる。
倍長の四則演算の繰り返し処理であるような場合、四則
演算の中で処理に時間を要するものは、剰余乗算および
剰余除算であり、暗号処理全体を高速化するには、これ
ら剰余乗算および剰余除算を高速化する必要がある。こ
のうち前者の剰余乗算は、文献(1)のモンゴメリ乗算
のアルゴリズムなどを用いれば良い。
組合せで実現でき、一般に逆元は拡張ユークリッド互除
法と呼ばれる算法で計算できる。しかし、一般にこのア
ルゴリズムはそれほど高速ではない。より高速な逆元の
計算法として、多倍長整数の右シフト(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)に示されている。
メリ乗算と文献(2)の剰余系での除算の高速計算法を
そのまま適用することはできない。なぜなら、モンゴメ
リ演算域と元の剰余系との変換・逆変換を乗算や除算の
たびに実行しなければならず、オーバーヘッドが大きく
なるからである。
良く求めるアルゴリズムはなかった。
困難であるという問題点があった。
算が四則演算(剰余系演算)の繰り返し処理であるよう
な暗号の処理を高速化することは困難であるという問題
点があった。
従来、公開鍵暗号の基本演算である剰余系での乗算と除
算を含む演算の繰り返し処理を効率化する算法は実現さ
れておらず、公開鍵暗号の一種である楕円曲線暗号など
における全体としての処理時間の効率化が困難であると
いう問題があった。
ので、モンゴメリ演算域での逆元を高速に求めることの
できるモンゴメリ逆元計算装置及び方法、モンゴメリ演
算域での除算結果を高速に求めることのできるモンゴメ
リ除算装置及び方法を提供することを目的とする。
正の整数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を求めるモンゴメリ乗算手段とを備えたことを特
徴とする。
モンゴメリ除算装置において、前記モンゴメリ逆元計算
手段は、整数Aと法Nを入力として中間結果C=A-1・
2kmod Nとパラメータk(L≦k≦2L)を求め
る逆元計算手段と、求められた中間結果Cとパラメータ
kと法Nを入力として逆元X=C・22n-k modNを
求める逆元補正手段とを有することを特徴とする。
整数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を求める逆元補正手段とを備えたこ
とを特徴とする。
の整数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≦2
L)を求める逆元計算手段と、求められた中間結果Cと
パラメータkと法Nを入力として逆元X=C・22n-k
mod Nを求める逆元補正手段とを備えたことを特徴
とする。
モンゴメリ逆元計算装置において、内部に中間変数を記
憶する複数のレジスタと、前記レジスタを右または左に
シフトするビットシフト器と、2つのレジスタの内容の
加算または減算を行う加減算器と、2つのレジスタの内
容の大小比較およびレジスタ内部の所定のビット位置の
値の判定を行う判定器とを用いて前記逆元計算部および
前記逆元補正部を構成することを特徴とする。
の整数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とす
る逆元補正手段とを備えたことを特徴とする。
モンゴメリ逆元計算装置において、初期状態として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以上であるか否
かを判断する判定器と、前記ビットシフト器、前記加減
算器および前記判定器を制御する制御部を備えたことを
特徴とする。
整数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のス
テップとを有することを特徴とする。
モンゴメリ除算方法において、前記第1のステップは、
整数Aと法Nを入力として中間結果C=A-1・2k m
odNとパラメータk(L≦k≦2L)を求め、求めら
れた中間結果Cとパラメータkと法Nを入力として逆元
X=C・22n-k mod 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のステップとを有することを特徴とする。
正の整数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を求め
ることを特徴とする。
正の整数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のステップとを有することを特徴とする。
でモンゴメリ逆元計算を行なうモンゴメリ逆元計算手段
とモンゴメリ乗算手段を用いるため、モンゴメリ演算域
の元を入力として、モンゴメリ演算域での除算結果を直
接求めることができる。この結果、モンゴメリ演算域と
元の剰余系との変換・逆変換のオーバーヘッドがないた
め、モンゴメリ演算域での除算が高速に実現できる。
のままモンゴメリ逆元計算を行なうことができ、モンゴ
メリ演算域と元の剰余系との変換・逆変換のオーバーヘ
ッドがないため、モンゴメリ演算域での逆元計算が高速
に実現できる。
での逆元計算が多倍長レジスタの加減算とビットシフト
で実現できるため、ソフトウェア実装・ハードウェア実
装のどちらでも高速な装置構成が可能となる。さらに、
モンゴメリ演算域での除算も高速な装置構成が実現でき
る。
余系での乗算と除算を含む演算の繰り返し処理を基本演
算とする暗号において、全体としての処理時間を高速化
することができる。
としても成立し、方法に係る本発明は装置に係る発明と
しても成立する。
ンピュータに当該発明に相当する手順を実行させるため
の(あるいはコンピュータを当該発明に相当する手段と
して機能させるための、あるいはコンピュータに当該発
明に相当する機能を実現させるための)プログラムを記
録したコンピュータ読取り可能な記録媒体としても成立
する。
実施の形態を説明する。
mod uは、sをuで割ったときの剰余を表すものと
する。
は一般に、剰余系での乗算よりも効率良く実装できるこ
とが知られており、RSA暗号など剰余系の乗算を繰り
返す方式を実現する場合、モンゴメリ演算が利用される
ことがある。しかし、RSA暗号のように暗号化・復号
化に乗算を用いるだけではなく、除算や逆元計算を用い
る暗号もある。例えば、楕円曲線暗号では、剰余系での
四則演算を組合せて単位演算が構成され、その単位演算
を所定の回数繰り返すことで暗号アルゴリズムが構成さ
れる。ところが、モンゴメリ演算域での除算や逆元計算
としては効率良く実装できるものがなく、楕円曲線暗号
等のように剰余系での四則演算を組合せて単位演算が構
成されるものについてはモンゴメリ演算域を利用した処
理の効率化が困難であった。
は、それぞれモンゴメリ演算域での剰余除算、逆元計算
の結果を効率的に求めることができるようにしたもので
ある。
剰余系を表す)とモンゴメリ演算域との関係およびモン
ゴメリ演算域での演算について説明する。
の2つの代数系の間における、定義域、元、逆元、およ
び加算、減算、乗算、除算の四則演算の関係を示す。
は奇整数を用いる。また、暗号システムに適用する場
合、pには素数を用いることが多い。
対応するモンゴメリ演算域の元Aには、 A=a・R mod p により与えられる。
Zpの元aへの逆変換は、 a=A・R-1 mod p により与えられる。
パラメータであり、その条件は、 (i)Rと法pとは互いに素であること (ii)R>p の2つである。
さらにハードウェアのワード長の倍数を用いることが多
い。演算幅をできるだけ小さくするためには、法pのビ
ット数をLとした場合に、n≧Lを満たし、ワード長の
倍数である最小の値を用いることが好ましい。以下で
は、簡単のために、nは法pのビット長Lと等しいもの
として説明する。
=5)とした場合の剰余系Zpの元aとモンゴメリ演算
域の元Aとの対応関係を一例として示す(ただし、現実
の暗号装置等で使用するpは非常に大きな整数であ
る)。
装置では、R=2n を用いるものとする。
則演算は、剰余系Zpの元aに対しA=a・R mod
pなるモンゴメリ演算域の元が対応することを考慮し
て、図12のように定義できる。
は、剰余系でのそれらと同様、 A+B mod p A−B mod p で定義される。
リ乗算ABR-1 mod pをもとにすると以下のよう
のに定義される。
てモンゴメリ乗算を行なったときに、モンゴメリ演算域
での単位元となるRを結果として与えるような値とな
る。すなわち、逆元Xは、 A・X=R2 mod p を満たす値である。
とするAについての逆元計算は、 X=A-1・R2 mod p により与えられる。
は、入力Aと法pに対して、X=A-1・R2 mod
pを効率的に求める装置である。
数すとるモンゴメリ除算は、 Y=B・A-1・R mod p =B・Ai ・R-1 mod p (ただし、Ai はモン
ゴメリ演算域でのAの逆元) により与えられる。
力A,Bと法pに対して、B・Ai・R mod pを
効率的に求める装置である。
=5)とした場合の剰余系Zpにおける元aと逆元xの
対応関係を一例として示す。また、図13(c)に、p
=23、R=25 (n=5)とした場合のモンゴメリ演
算域における元Aと逆元Xの対応関係を一例として示
す。
るには、最初に剰余系Zpからモンゴメリ演算域への変
換を行ない、モンゴメリ演算域で所定の演算処理を繰り
返した後、モンゴメリ演算域から剰余系Zpへの逆変換
を行なう。なお、これら変換・逆変換はそれぞれ多倍長
乗算1回程度の処理であり、全体としてはあまり大きな
オーバヘッドではない。
を示す。
して、モンゴメリ演算を利用し剰余系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となり、上記の結果と一致する
ことがわかる。
5)として、モンゴメリ演算を利用し剰余系Zpの乗算
3×6を行なう場合を考える。まず、剰余系Zpの3と
6をモンゴメリ演算域の4と8に変換し、Y=4×8×
R-1 mod pから、Y=1が求まる。これを剰余系
Zpに逆変換すると、乗算結果としてy=18が求ま
る。なお、剰余系Zpで直接y=3×6 mod pを
求めると、y=18となり、上記の結果と一致すること
がわかる。
5)として、モンゴメリ演算を利用し剰余系Zpの剰余
除算6/2を行なう場合を考える。まず、剰余系Zpの
6と2をモンゴメリ演算域の8と18に変換し、被除数
18の逆元として16を求め、Y=8/18×R-1 m
od p=8×16×R-1 mod pから、Y=4が
求まる。これを剰余系Zpに逆変換すると、除算結果と
してy=3が求まる。なお、剰余系Zpで直接y=6/
2 mod pを求めると、y=3となり、上記の結果
と一致することがわかる。
算域での逆元計算装置および除算装置について説明す
る。
メリ演算域での除算装置の基本構成を示す。本除算装置
200は、モンゴメリ逆元計算部201とモンゴメリ乗
算部202を備えており、モンゴメリ逆元計算部201
とモンゴメリ乗算部202をシーケンシャルに利用して
モンゴメリ除算装置200を構成している。
A-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を求める。
算部に比べて高速に実現できることが知られており、本
実施形態では例えば文献(1)などに開示された公知の
技術を用いることができる。
る処理手順の一例を示す。ここでは、2数A、Bに対し
て、A・B・R-1 mod Nを求めるものとして表記
する。
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について計算しておくことで、処理
の効率化が可能である。
る処理手順の他の例を示す。この処理手順は図14の処
理手順を改良し、必要な演算を多倍長乗算2回程度にし
たものである。ここでは、2数A、Bに対して、A・B
・R-1 mod Nを求めるものとして表記する。ま
た、A、B、Nなどは、基数bで表現されているものと
する。例えば、A=ar-1 br-1 +ar-2 br-2 +…+
a1 b+a0 などの形式である。ここで、基数bは2の
べき乗とし、例えば28 、216である。もちろん、b=
2でも構わない。
v0 ・N0 =−1 mod bを満たすv0 )を求め、
また、T=0、i=0とし(ステップS201)、T+
aiBbi をTに代入し(ステップS202)、mi =
ti v0 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のモンゴメリ乗算結果で
ある。
7の実行直前において、Tの下位側のLブロックが全て
0(すなわち、TはRの倍数)になる点にある。したが
って、ワーク領域を削減することが可能となる。また、
剰余算は2進数の下位の切り出しで実現できる。また、
v0 の値を法Nについて計算しておくことで、処理の効
率化が可能である。
効率的な実現が可能である。また、詳しくは後述する
が、本発明によればモンゴメリ逆元計算部201を効率
的に実現することができる。従って、本実施形態の除算
装置200によれば、モンゴメリ演算域での除算を効率
良く実行することができる。
域での逆元計算装置201の基本構成の一例を示す。も
ちろん、この逆元計算装置201は、図1のモンゴメリ
除算装置200のモンゴメリ逆元計算部201として用
いることができる。
1と逆元補正部302を備えており、逆元計算部301
と逆元補正部302をシーケンシャルに利用してモンゴ
メリ逆元計算装置201を構成している。
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・
2k 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を求める。
ける処理手順の一例を示す。
レジスタ、Sレジスタの4つの多倍長レジスタを利用
し、レジスタの左右へのシフト演算とレジスタ同士の加
算、減算で構成され、ループの繰り返し回数がループカ
ウンタとして用いる変数kに格納される。kの値は法p
のビットサイズをLとするとき、L以上2L以下であ
り、加減算の処理量はO(L)であるため、全体でも高
々O(L2 )の処理量である。以下、図3および図4の
手順を流れを追って説明する。
以下の正の整数AをレジスタVに設定する。また、レジ
スタTに0、レジスタSに1、レジスタkに0をそれぞ
れ設定する(ステップS401)。以上が、変数初期化
の処理である。
10の処理を、レジスタVが正の値である間(0になる
まで)、繰り返す。
し処理を続けるので、ステップS403にとぶ(ステッ
プS402)。
定する(ステップS403)。もし0であれば、レジス
タUを右に1ビットシフトし(ステップS411)、レ
ジスタSを左に1ビットシフトして(ステップS41
2)、ステップS410にとぶ。そして、ステップS4
10にてkの値を1増加し、ステップS402に戻る。
ビットが0でなければ、レジスタVの最下位ビットが0
か否かを判定する(ステップS404)。もし0であれ
ば、レジスタVを右に1ビットシフトし(ステップS4
13)、レジスタTを左に1ビットシフトして(ステッ
プS414)、ステップS410にとぶ。そして、ステ
ップS410にてkの値を1増加し、ステップS402
に戻る。
ビットが0でなく、ステップS404にてレジスタVの
最下位ビットが0でなければ、レジスタUとVの大小比
較を行なう(ステップS405)。
タVの内容を引き(ステップS415)、レジスタUを
右に1ビットシフトし(ステップS416)、レジスタ
TにレジスタSの内容を加算し(ステップS417)、
レジスタSを左に1ビットシフトする(ステップS41
8)。そして、ステップS410にてkの値を1増加
し、ステップS402に戻る。
くはU=Vの場合は、レジスタVからレジスタUの内容
を引き(ステップS406)、レジスタVを右に1ビッ
トシフトし(ステップS407)、レジスタSにレジス
タTの内容を加算し(ステップ408)、レジスタTを
左に1ビットシフトする(ステップS409)。そし
て、ステップS410にてkの値を1増加し、ステップ
S402に戻る。
2にてレジスタVが0になった場合、ステップS419
に移る。そして、まず、レジスタUの内容が1かどうか
をチェックする。レジスタUの内容は入力Aと法pの最
大公約数になるので、もしUが1でなければAとpは互
いに素でないことになるので、Aの逆元は存在しない。
そのため、ステップS423でエラー処理をして終了す
る。
19にてレジスタUの内容が1である場合、ステップS
420でTとpの大小比較を行ない、もしTがp以上で
あれば、Tからpを引き(ステップS421)、Tがp
以下の整数になるようにする。そして、ステップS42
2でpからTの内容を引いた結果をTに格納して処理を
終了する。
k mod pの計算結果が格納される。
kの値を逆元補正部302に入力して、モンゴメリ逆元
値を計算する。
例を示す。以下、図5の手順を流れを追って説明する。
た値をLにし、ループカウンタiを0に設定する(ステ
ップS501)。
の値を求め、mに設定する(ステップS502)。
07の処理を、ループカウンタがmになるまで繰り返
す。
較し、iがm未満の場合には、まず、レジスタTを1ビ
ット左シフトする(ステップS504)。次に、Tとp
の大小比較を行ない(ステップS505)、もしTがp
以上であればTからpを引く(ステップS506)。そ
して、ステップS507にてiの値を1増加し、ステッ
プS503に戻る。
記の処理ループを抜ける。このループを抜けた時点での
Tの値がモンゴメリ逆元値である。最後に、ステップS
508で逆元の値Tを出力して処理を終了する。
ジスタの加減算とビットシフトのみで実現されるため、
効率的な装置化が可能である。
モンゴメリ逆元計算装置(または除算装置200のモン
ゴメリ逆元計算部)201の動作を説明する。
R=25 (n=5)としたときに、モンゴメリ演算域で
の元A=19の逆元を求める場合について示す。
1における、Uレジスタ、Vレジスタ、Tレジスタ、S
レジスタのそれぞれの内容を2進数で表した値(ただ
し、TレジスタとSレジスタにおける上位側ビットの0
の表示は省略してある)と、ループカウンタkの内容を
10進数で表した値の変遷を、各処理ループについて示
す。
における、Tレジスタの内容を2進数で表した値(ただ
し、上位側ビットの0の表示は省略してある)の変遷
を、各処理ループについて示す。
処理の結果、Uレジスタ=p=10111、Vレジスタ
=A=10011、Tレジスタ=0、Sレジスタ=1、
k=0が設定される。
S405にてYesとなり、ステップS415〜S41
8とS410が実行される。この結果、Uレジスタ=0
0010、Vレジスタ=10011、Tレジスタ=1、
Sレジスタ=10、k=1となる。
らステップS403にてYesとなり、ステップS41
1とS412とS410が実行される。この結果、Uレ
ジスタ=00001、Vレジスタ=10011、Tレジ
スタ=10、Sレジスタ=100、k=2となる。
S405にてNoとなり、ステップS406〜S409
とS410が実行される。この結果、Uレジスタ=00
001、Vレジスタ=01001、Tレジスタ=10、
Sレジスタ=101、k=3となる。
7回目のループの実行後、Uレジスタ=00001、V
レジスタ=00000、Tレジスタ=100000、S
レジスタ=10111、k=7となり、Vレジスタ=0
0000となったので、処理ループを抜ける。
にてyesとなり、T>pであるからステップS420
にYesとなり、この結果、ステップS421にてT=
T−P=100000−10111=1001となり、
最後にステップS422にてT=p−T=10111−
1001=1110となる。
1110(=10進数表現で14)、k=7となる。
態として、T=1110、i=0、m=3に設定される
(iとmの値は10進数で表す)。
トされてT=11100となり、ステップS505でY
esとなるためステップS506にてT=101とな
り、そしてi=1となる。
トされてT=1010となり、ステップS505でNo
となるためステップS506は実行されず、i=2とな
る。
トされてT=10100となり、ステップS505でN
oとなるためステップS506は実行されず、i=3=
mとなり、処理ループを抜ける。
表現で20となる。
5 (n=5)としたときにおける、モンゴメリ演算域で
の元A=19の逆元X=20を得ることができる。
にそれぞれ対応する、剰余系Zpでも元を求めると、2
0と15になる。すなわち、剰余系Zpでの元20の逆
元として、15が得られたことになる。
元補正部302における処理の他の例をそれぞれ示す。
の処理手順の他の例を示す。この手順は図3および図4
に示した処理手順と原理的には同じであるが、図3およ
び図4の手順においてステップS403とステップS4
04でそれぞれ多倍長レジスタUとVの最下位ビットだ
けを判定の基準に用い、最下位ビットが0の場合に後続
の手順であるステップS411およびステップS41
2、ステップS413およびステップS414で1ビッ
トだけレジスタのシフトを行っていたものを、最下位ビ
ットから0が複数連続する場合には一度に複数ビットの
シフトを可能とするように改良したものである。このよ
うに、一度に複数ビットをまとめて処理する方が有利な
場合は多く、特にソフトウェア実装において高速とな
る。
て説明する。
タUに、p以下の正の整数AをレジスタVに設定する。
また、レジスタTに0、レジスタSに1、レジスタkに
0をそれぞれ設定する(ステップS601)。
12の処理を、レジスタVが正の値である間(0になる
まで)、繰り返す。
れば、まず、レジスタUの最下位ビットからの“0”の
連長をカウントしてこの値をwとする(ステップS60
3)。次にwが0か否かを判定し(ステップS60
4)、もし0でなければ、レジスタUをwビットだけ右
シフトし(ステップS613)、レジスタSをwビット
だけ左シフトし(ステップS614)、ループカウンタ
Kにwを加え(ステップS615)、ステップS602
へとぶ。
タVの最下位ビットからの“0”の連長をカウントして
この値をwとする(ステップ605)。次にwが0かど
うかを判定し(ステップS606)、もし0でなけれ
ば、レジスタVをwビットだけ右シフトし(ステップS
616)、レジスタTをwビットだけ左シフトし(ステ
ップS617)、ループカウンタKにwを加え(ステッ
プS618)、ステップS602へとぶ。
タUとVの大小比較をし(ステップS607)、もしU
>Vならば、レジスタUからレジスタVの内容を引き
(ステップS619)、レジスタUを右に1ビットシフ
トし(ステップS620)、レジスタTにレジスタSの
内容を加算し(ステップS621)、レジスタSを左に
1ビットシフトし(ステップS622)、ループカウン
タKに1を加え(ステップS623)、ステップS60
2へとぶ。
くはU=Vの場合は、レジスタVからレジスタUの内容
を引き(ステップS608)、レジスタVを右に1ビッ
トシフトし(ステップS609)、レジスタSにレジス
タTの内容を加算し(ステップS610)、レジスタT
を左に1ビットシフトし(ステップS811)、ループ
カウンタKに1を加え(ステップS623)、ステップ
S602へもどる。
2でレジスタVが0になった場合、処理ループを抜け、
まず、レジスタUの内容が1かどうかをチェックする
(ステップS624)。レジスタUの内容は入力Aと法
pの最大公約数になるので、もしUが1でなければステ
ップS628でエラー処理をして終了する。
24にてレジスタUの内容が1である場合、レジスタT
とpの大小比較をし(ステップS625)、もしTがp
以上であれば、Tからpを引き(ステップS626)、
Tがp以下の整数になるようにする。そして、ステップ
S627でpからTの内容を引いた結果をTに格納して
処理を終了する。
2k mod pが計算される。
の一例を図9、図10に示す。
には同じであるが、図5の手順においてステップS50
4で多倍長レジスタTを1ビットだけ左シフトを行うこ
とを繰り返していたものを、一度に複数ビットのシフト
を可能とするように改良したものである。このように、
一度に複数ビットをまとめて処理する方が有利な場合は
多く、特にソフトウェア実装において高速となる。
説明する。
た値をLにし、ループカウンタiを0に設定する(ステ
ップS701)。
の値を求め、mに設定する(ステップS702)。
10の処理を、ループカウンタiがmになるまで繰り返
す。
m未満の場合には、まず、レジスタTを法pと同じサイ
ズの2進数と見たときに最上位ビットからの“0”の連
長をカウントしてこの値をwとする(ステップS70
4)。
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へとぶ。
+w=mの場合には、レジスタTをwビットだけ左シフ
トする(ステップS707)。この結果、Tの値はpよ
り大きくなる可能性があるので、ステップS708でT
とpの大小比較を行い、Tがp以上の場合はTからpの
値を減ずる(ステップS709)。最後にループカウン
タiにwを加え(ステップS710)、ステップS70
3に戻る。
3でi=mになった場合、処理ループを抜ける。このル
ープを抜けた時点でのTの値がモンゴメリ逆元値であ
り、この値を出力して(ステップS711)、処理を終
了する。
手順もレジスタの加減算とビットシフトのみで実現され
る。
1のモンゴメリ除算装置のモンゴメリ逆元計算部におい
て、逆元計算部301としては、図3と図4、図7およ
び図8のいずれかを、また、逆元補正部302として
は、図5、図9と図10のいずれかを、それぞれ任意に
組み合わせて利用可能である。
で例示した構成に限定されず、他の構成も可能である。
図16に、本実施形態に係るモンゴメリ除算装置の基本
構成の他の例を示す。
機装置は、一例として、逆元計算部301と逆元補正部
302に分割できるが、図16では、この逆元計算部3
01をモンゴメリ乗算部202の前段に、また、逆元補
正部302をモンゴメリ乗算部202の後段に配置した
構成となっている。これは、逆元計算部301の出力C
に対しては、逆元補正部302の演算も、モンゴメリ乗
算部202の演算も共に乗算であることから、その順序
に対する可換性が成立することに基づいている。これを
数式で表現すると以下のようになる。
元計算部とモンゴメリ乗算部をシーケンシャルに利用し
なくても構成できる。重要なことは、モンゴメリ除算で
あるY=B(A-1)R mod pを効率的に計算する
ことであり、そのためにモンゴメリ逆元計算装置の構成
部品(モジュール)である逆元計算部と逆元補正部を分
離して用いることもできる。
線暗号など多倍長の四則演算の繰り返し処理を高速に処
理する場合に、モンゴメリ演算域での元を入力として、
モンゴメリ逆元計算やモンゴメリ除算を実行することが
できる。したがって、最初に元の剰余系からモンゴメリ
演算域に元を変換した後は、モンゴメリ演算域のままで
繰り返し処理を実行できる。最後にモンゴメリ演算域か
ら元の剰余系に逆変換すれば良いので全体としてのモン
ゴメリ変換・逆変換のオーバーヘッドを小さくできる。
また、本実施形態のモンゴメリ逆元計算およびモンゴメ
リ除算は多倍長レジスタの加減算とビットシフトのみで
実現できるため、ソフトウェア・ハードウェアのどちら
でも効率良く実現できる。
算域での逆元計算装置のハードウェア構成について説明
する。
ロック図で示す。
01)、多倍長レジスタV(802)、多倍長レジスタ
S(803)、多倍長レジスタT(804)とループカ
ウンタとなる単精度のレジスタK(805)、演算部と
して加減算器806とビットシフタ807、加減算器8
06の出力を格納する多倍長のレジスタ808とビット
シフタ807の出力を格納する多倍長のレジスタ80
9、そして全体の動作を制御する制御部(図示せず)を
構成要素として持つ。これらの各構成要素は、データ・
バス810に結線されており、相互にデータの転送が可
能である。制御部では、前述したような処理手順に従い
レジスタの特定ビットの0/1判定やレジスタの特定部
分の0の連長の検査なども行う。
成要素を図3および図4、もしくは図7および図8に従
う動作を行うように制御することによって実現され、図
2における逆元補正部302は、法pを空いているレジ
スタ(例えばUレジスタ)に設定し、図5もしくは図9
および図10に従う動作を行うように制御することによ
って実現される。
ても実現可能である。
の手順を実行させるための(あるいはコンピュータを所
定の手段として機能させるための、あるいはコンピュー
タに所定の機能を実現させるための)プログラムを記録
したコンピュータ読取り可能な記録媒体として実施する
こともできる。
るものではなく、その技術的範囲において種々変形して
実施することができる。
逆元計算と乗算を行って除算結果を得るので、モンゴメ
リ演算域の元を入力として、モンゴメリ演算域での除算
結果を直接求めることができる。この結果、モンゴメリ
演算域と元の剰余系との変換・逆変換のオーバーヘッド
がないため、モンゴメリ演算域での除算が高速に実現で
きる。
のままモンゴメリ逆元計算を行なうことができ、モンゴ
メリ演算域と元の剰余系との変換・逆変換のオーバーヘ
ッドがないため、モンゴメリ演算域での逆元計算が高速
に実現できる。
での逆元計算が多倍長レジスタの加減算とビットシフト
で実現できるため、ソフトウェア実装・ハードウェア実
装のどちらでも高速な装置構成が可能となる。さらに、
モンゴメリ演算域での除算も高速な装置構成が実現でき
る。
余系での乗算と除算を含む演算の繰り返し処理を基本演
算とする暗号において、全体としての処理時間を高速化
することができる。
置の一構成例を示す図
置の一構成例を示す図
ローチャート
ローチャート
ローチャート
るための図
フローチャート
フローチャート
フローチャート
すフローチャート
装置のハードウェア構成を示すブロック図
を示す図
元の具体例を示す図
すフローチャート
示すフローチャート
装置の他の構成例を示す図
部) 202…モンゴメリ乗算部 301…逆元計算部 302…逆元補正部 801,802,803,804,805,808,8
09…レジスタ 806…加減算器 807…ビットシフタ
Claims (12)
- 【請求項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】前記モンゴメリ逆元計算手段は、 整数Aと法Nを入力として中間結果C=A-1・2k m
od Nとパラメータk(L≦k≦2L)を求める逆元
計算手段と、 求められた中間結果Cとパラメータkと法Nを入力とし
て逆元X=C・22n-kmod Nを求める逆元補正手段
とを有することを特徴とする請求項1に記載のモンゴメ
リ除算装置。 - 【請求項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】正の奇整数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 m
od Nとパラメータk(L≦k≦2L)を求める逆元
計算手段と、 求められた中間結果Cとパラメータkと法Nを入力とし
て逆元X=C・22n-kmod Nを求める逆元補正手段
とを備えたことを特徴とするモンゴメリ逆元計算装置。 - 【請求項5】内部に中間変数を記憶する複数のレジスタ
と、 前記レジスタを右または左にシフトするビットシフト器
と、 2つのレジスタの内容の加算または減算を行う加減算器
と、 2つのレジスタの内容の大小比較およびレジスタ内部の
所定のビット位置の値の判定を行う判定器とを用いて前
記逆元計算部および前記逆元補正部を構成することを特
徴とする請求項4に記載のモンゴメリ逆元計算装置。 - 【請求項6】正の奇整数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とする逆元計算手段と、 初期状態をi=0とし、 前記逆元計算手段により求められたTを左シフトした
後、T≧NならばTからNを減じてiを1増加し、T<
Nならばiを1増加するループ処理を、i<2n−kの
間、繰り返し、 i=2n−kになったときのTを逆元Xとする逆元補正
手段とを備えたことを特徴とするモンゴメリ逆元計算装
置。 - 【請求項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】正の整数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】前記第1のステップは、 整数Aと法Nを入力として中間結果C=A-1・2k m
od Nとパラメータk(L≦k≦2L)を求め、 求められた中間結果Cとパラメータkと法Nを入力とし
て逆元X=C・22n-kmod Nを求めるものであるこ
とを特徴とする請求項8に記載のモンゴメリ除算方法。 - 【請求項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】正の奇整数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 m
od Nとパラメータk(L≦k≦2L)を求め、 求められた中間結果Cとパラメータkと法Nを入力とし
て逆元X=C・22n-kmod Nを求めることを特徴と
するモンゴメリ逆元計算方法。 - 【請求項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のス
テップとを有することを特徴とするモンゴメリ逆元計算
方法。
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)
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蒙哥马利域上的快速模逆芯片实现装置及方法 |
-
1998
- 1998-01-27 JP JP10014250A patent/JP2937982B2/ja not_active Expired - Lifetime
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 |