JP2002215020A - べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 - Google Patents
べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体Info
- Publication number
- JP2002215020A JP2002215020A JP2001013565A JP2001013565A JP2002215020A JP 2002215020 A JP2002215020 A JP 2002215020A JP 2001013565 A JP2001013565 A JP 2001013565A JP 2001013565 A JP2001013565 A JP 2001013565A JP 2002215020 A JP2002215020 A JP 2002215020A
- Authority
- JP
- Japan
- Prior art keywords
- mod
- remainder
- expression
- value
- base
- 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
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/723—Modular exponentiation
-
- 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/729—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 representation by a residue number system
-
- 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)
Abstract
装置を提供すること。 【解決手段】 暗号文Cに対し、第1及び第2の基底に
よる剰余系表現を利用して(両基底に含まれる全整数は
互いに素、第1の基底の全整数の積A,第2の基底の全
整数の積B>p,q、A*B>Cとする)、平文m=C
^d mod p*qを求める。まず、pについてC
mod pの剰余系表現とd mod (p−1)に基
づき(Cp^dp)*B mod p又はこれにpを加
算した値の剰余系表現を求め、qについても同様にする
(123、124)。得られた両剰余系表現に基づき法
p*qの元でC^dと合同であるm’の剰余系表現を求
める(123〜126)。m’の剰余系表現を2進数表
現に変換する(128)。得られたp*q未満のm’の
値又はp*q以上のm’から所定回数p*qを減じるこ
とによって得たp*q未満の値を平文mとして出力する
(130)。
Description
独立パラメータp、q、dについてm=C^dmod
p*qを求めるためのべき乗剰余計算装置及びべき乗剰
余計算方法に関する。
となる剰余系(Residue Number Sys
tem:RNS)表現をベースに、公開鍵暗号のアルゴ
リズム(べき乗剰余演算)を実現するための基本要素と
なる剰余乗算を、モンゴメリ乗算と融合させて実現する
アルゴリズムおよびそのハードウェア構成が提案されて
いる。これをRNSモンゴメリ乗算と呼ぶことにする。
て説明する。RSA暗号などの公開鍵暗号の多くでは多
倍長整数を利用して変換を行うが、多倍長整数の表現に
通常利用されるのは基数を2とした記数法(Radix
representation)、いわゆる2進数表
現である。これとは別の方法に、複数の法a1 ,a2,
…,an を用意し、整数xをそれらの法による剰余値x
1 ,x2 ,…,xn の組で表現する方法がある。すなわ
ち、以下の式による。 x1 =x mod a1 ,x2 =x mod a2 ,
…,xn =x modan この表現法はRNS表現と呼ばれる。
を、基底(base)と呼ぶものとする。また、基底の
要素数nを基底サイズと呼ぶものとする。基底サイズn
の基底aは、次のように表される。 a={a1 ,a2 ,…,an } RNS表現では、各基底の要素は、通常、互いに素な正
整数を用い、中国剰余定理により“基底の要素の積”未
満の正整数はRNS表現により一意に表現できることが
保証される。すなわち、基底a={a1 ,a2 ,…,a
n } 基底aの要素の積A=a1 *a2 *…*an としたときに、基底aを用いたRNS表現によりA未満
の正整数を表現できる。
た整数xを、<x>_aで表すものとする(基底を省略
して<x>で表すこともある)。すなわち、 <x>_a=(x1 ,x2 ,…,xn ) =(x mod a1 , x mod a2 ,…, x mod an ) である。
る場合に、基底a={a1 ,a2 ,…,an1 }と基底
b={b1 ,b2 ,…,bn2 }について、aUbは、
{a1,a2 ,…,an1 }と{b1 ,b2 ,…,
bn2 }の結合を表し、<x>_aUbは、基底aUb
によるxのRNS表現を表す(すなわち、<x>_aU
bは、<x>_a=(x mod a1 , x mod a2 ,…, x
mod an1 )と<x>_b=(xmod b1 , x mod b2 ,
…, x mod bn2 )の結合を表す)。また、この場合
に、2種類の基底n1=n2=nとして説明する。
を法とした加算、減算、乗算が簡単に計算できることで
ある。すなわち、以下のように各要素をそれぞれの法に
よって独立に加算、減算、乗算した結果が、所望の結果
となる。 <x>_a+<y>_a (mod A)=(x1 +y1 (mod a1 ), x2 +y
2 (mod a2 ),…, x n +yn (mod an )) <x>_a−<y>_a (mod A)=(x1 −y1 (mod a1 ), x2 −y
2 (mod a2 ),…, x n −yn (mod an )) <x>_a *<y>_a (mod A)=(x1 *y1 (mod a1 ), x2 *
y2 (mod a2 ),…,xn *yn (mod an )) なお、上記の演算を、それぞれ、RNS加算、RNS減
算、RNS乗算と呼ぶものとする。
能であるため、n個の演算ユニットを用意すればすべて
を並列に処理して高速な処理が行えるし、用意する演算
ユニットがn個に満たなくても1個からn個まで増やす
程それに比例して演算速度を向上できる。
モンゴメリべき乗について説明する。
き乗算(<x>*<y> (modN))に関し、モン
ゴメリ乗算と呼ばれる手法をRNS表現での演算に応用
する手法であり、概ね以下の手順で計算される。
_aUb, <y>_aUb, N, aUb )] 入力:<x>_aUb, <y>_aUb, N ただし、x,y < 2N 基底:a,b ただし、x,y,N < A,B 出力:<w>_aUb ただし、w=x*y*B^(-1) mod N <処理内容> Step-M-0: <(−N^(-1))>_bを計算する。 Step-M-1: <s>_a=<x>_a * <y>_
aを計算する。 Step-M-2: <s>_b=<x>_b * <y>_
bを計算する。 Step-M-3: <t>_b=<s>_b * <(−N
^(-1))>_bを計算する。 Step-M-4: <t>_bを<t>_aへ基底変換す
る。 Step-M-5: <u>_a=<t>_a * <N>_
aを計算する。 Step-M-6: <v>_a=<s>_a + <u>_
aを計算する。 Step-M-7: <w>_a=<v>_a * <B^(-
1)>_aを計算する。 Step-M-8: <w>_aを<w>_bへ基底変換す
る。
-M-8の基底変換は、ある基底によるRNS表現に対応
するある整数(例えば、基底bによるRNS表現<t>
_bに対応する整数t)の、他の基底によるRNS表現
(例えば、基底aによるRNS表現<t>_a)を求め
る処理である。
う演算ユニットを増加させることにより、高速処理が可
能となる。
うことで(RNSモンゴメリ乗算器を繰り返し利用する
ことで)べき乗計算を行うことによりRSA暗号の暗号
処理を構成する方法が提案されている。このべき乗計算
法をRNSモンゴメリべき乗と呼ぶものとする。RNS
モンゴメリべき乗は、概ね以下の手順で計算される。
<x>_aUb, d, N, aUb )] 入力:<x>_aUb, 指数d=(d_k, d_k
−1, …, d_1)_2、法N ただし、x < 2N 基底:a,b ただし、x,N < A,B 出力:<y>_aUb ただし、y=x^d*B^(-(d-1)) mod N <処理内容> Step-E-1: i=kとする。<y>_aUb=<B>
_aUbとする。 Step-E-2: <y>_aUb=MM(<y>_aU
b,<y>_aUb,N,aUb)を計算する。 Step-E-3: d_i=1ならば、<y>_aUb=M
M(<y>_aUb,<x>_aUb,N,aUb)を
計算する。d_i≠1ならば、なにもしない(no
p)。 Step-E-4: i=i−1とする。 Step-E-5: i=0ならば、終了する。i≠0なら
ば、Step-E-2へ戻る。
ep-E-3でのMM( )は、先に説明したRNSモンゴ
メリ乗算を表す。
する。
(d、p、q)に対し、C=m^emod Nで平文m
を暗号文Cに暗号変換し、m=C^d mod Nで暗
号文Cを平文mに復号変換する。ここで、公開鍵である
法Nの秘密素因数p、qを利用して復号変換をより効率
的に実行する計算法である、中国剰余定理(Chine
se Remainder Theorem:CRT)
を利用したべき乗計算法が知られている。このようなべ
き乗計算法を、CRTべき乗剰余計算と呼ぶものとす
る。
mod p)、(p^(-1) mod q)といったパラ
メータは秘密鍵のみに依存するので、事前に計算し、秘
密鍵の一部として記憶しておくことが一般的である。
配的な部分が(Step-C-3)のべき乗剰余計算2回であ
り、べき乗剰余計算は法のサイズの3乗に比例すること
に注意すると、2進表現でのべき乗剰余計算とCRTべ
き乗剰余計算の計算量は約1/4であることが分かる。
なお、(Step-C-3)のべき乗計算を2つの計算回路で
同時に実行すれば計算時間は約1/8にできる。
るRSA暗号装置においてCRTべき乗剰余計算の具体
的な手順は示されておらず、RSA復号変換(秘密変
換)を同装置でより短時間に計算することはできなかっ
た。
リ乗算によるCRTべき乗剰余計算の具体的な手順が知
られていなかったため、RSA復号変換(秘密変換)の
ような大きな整数のべき乗剰余計算をより高速化するこ
とが困難であった。
ので、べき乗剰余計算をより効率良く実行可能にしたべ
き乗剰余計算装置及びべき乗剰余計算方法を提供するこ
とを目的とする。
及び独立パラメータp、q、dについて、複数の整数の
組からなる第1の基底及び第2の基底による剰余系表現
を利用して(ただし、両基底に含まれる全整数は互いに
素、且つ、第1の基底の全整数の積A>p,q、且つ、
第2の基底の全整数の積B>p,q、且つ、A*B>C
とする)、計算結果m=C^d mod p*qを求め
るためのべき乗剰余計算装置であって、前記データCの
pによる剰余値Cpの剰余系表現及び前記パラメータd
の(p−1)による剰余値dpに基づき、(Cp^d
p)*B mod p又はこれにpが加えられた値の剰
余系表現を求めるための第1の処理手段と、前記データ
Cのqによる剰余値Cqの剰余系表現及び前記パラメー
タdの(q−1)による剰余値dqに基づき、(Cq^
dq)*B mod q又はこれにqが加えられた値の
剰余系表現を求めるための第2の処理手段と、前記第1
及び第2の処理手段により求められた両剰余系表現に基
づき、法p*qの元でC^dと合同である整数m’の剰
余系表現を求めるための第3の処理手段と、前記第3の
処理手段により求められた前記剰余系表現を2進数表現
に変換して得られた前記整数m’の値に基づき、前記計
算結果mを求めるための第4の処理手段とを備えたこと
を特徴とする。
剰余値Cp=C mod pの剰余系表現とB^2 m
od pの剰余系表現とのRNSモンゴメリ乗算を行
い、これにより得られた剰余系表現について指数部を前
記剰余値dp=d mod (p−1)とするRNSモ
ンゴメリべき乗を行うことによって、(Cp^dp)*
B mod p又はこれにpが加えられた値の剰余系表
現を求め、前記第2の処理手段は、前記剰余値Cq=C
mod qの剰余系表現とB^2 mod qの剰余
系表現とのRNSモンゴメリ乗算を行い、これにより得
られた剰余系表現について指数部を前記剰余値dq=d
mod (q−1)とするRNSモンゴメリべき乗を
行うことによって、(Cq^dq)*B mod q又
はこれにqが加えられた値の剰余系表現を求めるように
してもよい。
第1の処理手段により得られた前記剰余系表現と前記パ
ラメータqの法pにおける逆元qinv=q^(−1)
mod pの剰余系表現とのRNSモンゴメリ乗算を
行い、これによって得られた剰余系表現と前記パラメー
タqの剰余系表現とのRNS乗算を行うとともに、前記
第2の処理手段により得られた前記剰余系表現と前記パ
ラメータpの法qにおける逆元pinv=p^(−1)
mod qの剰余系表現とのRNSモンゴメリ乗算を
行い、これによって得られた剰余系表現と前記パラメー
タpの剰余系表現とのRNS乗算を行い、これらにより
得られた両RNS乗算の結果のRNS加算を行うことに
よって、前記法p*qにおいてC^dと合同である整数
m’の剰余系表現を求めるようにしてもよい。
の処理手段はそれらの処理の少なくとも一部を同時に実
行するようにしてもよい。
の処理手段は前記基底の要素ごとに行う演算につき該要
素の数に相当する演算の全部または一部を同時に実行す
るようにしてもよい。
第3の処理手段により求められた前記整数m’の剰余系
表現を2進数表現に変換するための手段と、この手段に
より得られたp*q未満の前記整数m’の値又はp*q
以上の前記整数m’から所定回数p*qを減じることに
よって得たp*q未満の値を、m=C^d modp*
qとするための手段とを含むようにしてもよい。
ラメータp、q、dについて、複数の整数の組からなる
第1の基底及び第2の基底による剰余系表現を利用して
(ただし、両基底に含まれる全整数は互いに素、且つ、
第1の基底の全整数の積A>p,q、且つ、第2の基底
の全整数の積B>p,q、且つ、A*B>Cとする)、
m=C^d mod p*qを求めるためのべき乗剰余
計算方法であって、前記データCのpによる剰余値Cp
の剰余系表現及び前記パラメータdの(p−1)による
剰余値dpに基づき、(Cp^dp)*B mod p
又はこれにpが加えられた値の剰余系表現を求めるとと
もに、前記データCのqによる剰余値Cqの剰余系表現
及び前記パラメータdの(q−1)による剰余値dqに
基づき、(Cq^dq)*B mod q又はこれにq
が加えられた値の剰余系表現を求め、求められた両剰余
系表現に基づき、法p*qの元でC^dと合同である整
数m’の剰余系表現を求め、求められた前記剰余系表現
を2進数表現に変換して得られた前記整数m’の値に基
づき、前記計算結果mを求めることを特徴とする。
としても成立し、方法に係る本発明は装置に係る発明と
しても成立する。また、装置または方法に係る本発明
は、コンピュータに当該発明に相当する手順を実行させ
るための(あるいはコンピュータを当該発明に相当する
手段として機能させるための、あるいはコンピュータに
当該発明に相当する機能を実現させるための)プログラ
ムとしても成立し、該プログラムを記録したコンピュー
タ読取り可能な記録媒体としても成立する。
演算と剰余系を利用した演算とモンゴメリ演算とを融合
させることによって、べき乗剰余計算をより効率良く実
行することができる。例えば、剰余系表現を利用したべ
き乗剰余演算装置にてRSA暗号の復号変換に中国剰余
定理を利用した効率の良い実装が可能となり、同復号変
換を約1/8の処理量に削減できる。
実施の形態を説明する。
置の機能的な構成図を示す。
演算するRNS演算器12、2進数表現での補助的な演
算を行う演算部と、外部との入出力を行うための入出力
部11と、全体を制御する制御部13で構成される。R
NS演算器12には、RNS逆元計算部(INV)12
2、RNSモンゴメリ乗算部(MM)123、RNSモ
ンゴメリべき乗部(MEXP)124、RNS乗算部
(MUL)125、RNS加算部(ADD)126、第
1の表現変換部(2進数表現→RNS表現変換部)12
7、第2の表現変換部(RNS表現変換部→2進数表
現)128、記憶部121が存在する。2進数表現での
補助的な演算部としては、剰余計算部129と加減算部
130が存在する。以上の各演算部のうち規模面で大半
はRNS演算器12である。
する基底や事前に計算し装置内に記憶されるパラメータ
等を記憶する。
明したRNSモンゴメリ乗算(MM)を行う。RNSモ
ンゴメリべき乗部124は、先に説明したRNSモンゴ
メリべき乗(MEXP)を行う。RNS乗算部125
は、先に説明したRNS乗算(MUL)を行う。RNS
加算126は、先に説明したRNS加算(ADD)を行
う。第1の表現変換部127は、2進数表現からRNS
表現への変換を行う。第2の表現変換部128は、RN
S表現から2進数表現への変換を行う。なお、これらに
ついては、例えば、文献「小池,佐野,川村, “Co
x−Rowerアーキテクチャによる高速な並列モンゴ
メリ乗算法”, SCIS2000, B22, 20
00」に詳しい。
x>_aを入力として<−x^(-1)>_aを計算する。
すなわち、<x>_aの各基底ai および要素xi につ
いて、xi (mod ai )から、−xi ^(-1)
(mod ai )を計算する。具体的には、例えば次の
手順で実行する。 <基底ai における逆元計算>(Step0) 基底ai に
対するCarmichael関数λ(ai )を計算し、
記憶部(ROM)に保存しておく。Carmichae
l関数λの具体的な計算式は例えば“岡本龍明、山本博
資著、「現代暗号」、産業図書、p.16”に示されて
いる。λ(ai )のビットサイズはai のビットサイズ
以下である。法ai と互いに素な全てのx(<ai )に
対して、x^λ(ai )=1 (mod ai )にな
る。ここでは入力xとしてRSA暗号の秘密鍵p,q
(素数)もしくはその積N(2素数の積)を想定してい
るため、これらは必ず法ai と互いに素になる。 (Step1) xi ^(-1)=xi ^(λ(ai )−1)
(mod ai )を演算ユニットでの剰余乗算により計
算する。 (Step2) −xi ^(-1)=ai −xi ^(-1)により計
算する。 以上の計算のうち、(Step1)はCarmichael
関数λ(ai )のビットサイズがai のビットサイズ以
下であるため、演算ユニットのワード数を32ビットと
すると、64回以下のワードサイズの剰余乗算に相当す
る。
xと除数yを入力して、x (mod y)を計算す
る。この計算手順は通常の除算で実行可能であり、例え
ば“Knuth著、中川圭介訳、「準数値算法/算術演
算」、サイエンス社、p.90”に示されている。概
ね、x1*x2と同じ計算量である。加減算部130
は、2進数の加減算等を行う。本計算装置1は、次のR
NS演算を組み合わせてCRTべき乗を実行する。 ・RNSモンゴメリ乗算<z>=MM(<x>_aU
b,<y>_aUb,p,aUb) ここで、z=x*y*A^(-1) mod p or
z=(x*y*A^(-1) mod p)+pに相当す
る。 ・RNSモンゴメリべき乗<z>=MEXP(<x>_
aUb,e,p,aUb) ここで、z=x^e*A^(-(e-1)) mod p o
r z=(x^e*A^(-(e-1)) mod p)+p
に相当する。 ・RNS乗算<z>=MUL(<x>_aUb,<y>
_aUb,a) ここで、z=x*y mod A(基底aでのxとyの
乗算)に相当する。 ・RNS加算<z>=ADD(<x>_aUb,<y>
_aUb,a) ここで、z=x+y mod A(基底aでのxとyの
加算)に相当する。
aUbなど)は、RNS表現で利用される基底を表す。
基底aの要素の積の値をA、基底bの要素の積の値をB
とすると、基底aUbの要素の積の値はABになる。R
NSモンゴメリ乗算とRNSモンゴメリべき乗の出力は
z<A,Bとなる。
RNSモンゴメリべき乗においては、モンゴメリ乗算の
性質から、モジュラスpの値だけ結果が大きい場合があ
る。すなわち、MM(<x>,<y>,p,aUb)<
2pである。法pを固定した場合、RNSモンゴメリ乗
算とRNSモンゴメリべき乗の出力はいずれも2p未満
であるが、これらの出力はそのままRNSモンゴメリ乗
算およびRNSモンゴメリべき乗に入力可能である。
予め記憶しておくものとする。事前登録パラメータ:基
底a、基底b、基底aの要素の積A、基底bの要素の積
B、基底aおよび基底bの全要素の積AB、B^2な
お、基底a,bとCRTべき乗におけるパラメータサイ
ズの関係として、少なくとも、 p,q<A 、かつ、
p,q<B が必要である。この結果、N=p*qに
対し、少なくともN<ABとなる。
計算装置1へ入力するパラメータは、ここでは、以下の
通りとする。 外部入力パラメータ:暗号文C、dp=d mod
(p−1)、dq=dmod (q−1)、N(=p*
q)、p、q、pの法qにおける逆元pinv=p^
(−1) mod q、qの法pにおける逆元qinv
=q^(-1) mod p 図2に、本計算装置1におけるCRTべき乗の処理手順
の一例を示す。また、図3に、本計算装置1の各演算部
に関する内部構成例を示す。
C、dp、dq、N、p、q、pinv、qinvを入
力する。
9−pと、ステップS1−q〜S9−qとでは、いずれ
の対応するステップSi−pとステップSi−qにおい
ても、Nの2つの素因数であるpとqに関する同様の演
算を実行している。
27を利用して、2進数表現pを、基底aUbによるR
NS表現<p>(=<p>_a U <p>_b={p
mod a1 ,p mod a2 ,…,p mod
an } U {p mod b1 ,p mod b 2 ,
…,p mod bn })に変換する。
27を利用して、2進数表現qを、基底aUbによるR
NS表現<q>(=<q>_a U <q>_b={q
mod a1 ,q mod a2 ,…,q mod
an } U {q mod b1 ,q mod b 2 ,
…,q mod bn })に変換する。
22を利用して、(ステップS1−pで求められた)<
p>_bから、<−p^(-1)>_bを計算する。
22を利用して、(ステップS1−qで求められた)<
q>_bから、<−q^(-1)>_bを計算する。
利用して、bp=B^2 mod pを計算し、第1の
表現変換部127を利用して、bpを2進数表現から基
底aUbによるRNS表現<bp>に変換する。
利用して、bq=B^2 mod qを計算し、第1の
表現変換部127を利用して、bqを2進数表現から基
底aUbによるRNS表現<bq>に変換する。
27を利用して、pinvを2進数表現から基底aUb
によるRNS表現<pinv>に変換する。
27を利用して、qinvを2進数表現から基底aUb
によるRNS表現<qinv>に変換する。
利用して、Cp=C mod pを計算し、第1の表現
変換部127を利用して、Cpを2進数表現から基底a
UbによるRNS表現<Cp>に変換する。
利用して、Cq=C mod qを計算し、第1の表現
変換部127を利用して、Cqを2進数表現から基底a
UbによるRNS表現<Cq>に変換する。
算部123を利用して、<Cp’>=MM(<Cp>,
<bp>, p, aUb)を計算する。<先に説明し
たアルゴリズムを利用する場合の処理内容> Step-M-1: <s>_a=<Cp>_a * <bp>_
aを計算する。 Step-M-2: <s>_b=<Cp>_b * <bp>_
bを計算する。 Step-M-3: <t>_b=<s>_b * <(−p
^(-1))>_bを計算する。 Step-M-4: <t>_bを<t>_aへ基底変換す
る。 Step-M-5: <u>_a=<t>_a * <p>_
aを計算する。 Step-M-6: <v>_a=<s>_a + <u>_
aを計算する。 Step-M-7: <Cp’>_a=<v>_a * <B^
(-1)>_aを計算する。 Step-M-8: <Cp’>_aを<Cp’>_bへ基底変換
する。 これにより、Cp’=C*B mod pまたはCp’
=(C*B modp)+pのいずれかに対応するRN
S表現<Cp’>が求められる。
算部123を利用して、<Cq’>=MM(<Cq>,
<bq>, q, aUb)を計算する。なお、先に説
明したアルゴリズムを利用する場合の処理内容は、ステ
ップS6−pの処理内容において、pとqを入れ替えた
ものである。 これにより、Cq’=C*B mod qまたはCq’
=(C*B modq)+qのいずれかに対応するRN
S表現<Cp’>が求められる。
き乗部124を利用して、<mp’>=MEXP(<C
p’>, dp, p, aUb)を計算する。 <先に説明したアルゴリズムを利用する場合の処理内容
> Step-E-1: i=kとする。<y>_aUb=<B>
_aUbとする。 Step-E-2: <y>_aUb=MM(<y>_aU
b,<y>_aUb,N,aUb)を計算する。 Step-E-3: dp_i=1ならば、<y>_aUb=
MM(<y>_aUb, <Cp’>_aUb,p,a
Ub)を計算する。dp_i≠1ならば、なにもしない
(nop)。ここで、dp_iは、dpの2進表現(d
p_k, dp_k−1,…,dp_1)における下位
からiビット目の値である。 Step-E-4: i=i−1とする。 Step-E-5: i=0ならば、終了する。i≠0なら
ば、Step-E-2へ戻る。 これにより、mp’=(Cp^dp)*B mod p
またはmp’=((Cp^dp)*B mod p)+
pのいずれかに対応するRNS表現<mp’>が求めら
れる。
き乗部124を利用して、<mq’>=MEXP(<C
q’>, dq, q, aUb)を計算する。なお、
先に説明したアルゴリズムを利用する場合の処理内容
は、ステップS7−pの処理内容において、pとqを入
れ替えたものである。これにより、mq’=(Cq^d
q)*B mod q またはmq’=((Cq^d
q)*B mod q)+qのいずれかに対応するRN
S表現<mq’>が求められる。
MM(<mp’>, <q^(−1) mod p>, p, aUb)を計
算する。 <先に説明したアルゴリズムを利用する場合の処理内容
> Step-M-1: <s>_a=<mp’>_a * <qinv
>_aを計算する。 Step-M-2: <s>_b=<mp’>_b * <qinv
>_bを計算する。 Step-M-3: <t>_b=<s>_b * <(−p
^(-1))>_bを計算する。 Step-M-4: <t>_bを<t>_aへ基底変換す
る。 Step-M-5: <u>_a=<t>_a * <p>_
aを計算する。 Step-M-6: <v>_a=<s>_a + <u>_
aを計算する。 Step-M-7: <tp>_a=<v>_a * <B^(-
1)>_aを計算する。 Step-M-8: <tp>_aを<tp>_bへ基底変換す
る。 これにより、tp=(Cp^dp)q^(−1) mo
d pまたはtp=((Cp^dp)q^(−1) m
od p)+pのいずれかに対応するRNS表現<tp
>が求められる。
算部123を利用して、<tq>=MM(<mq’>,
<p^(−1) mod q>, p, aUb)を計
算する。なお、先に説明したアルゴリズムを利用する場
合の処理内容は、ステップS8−pの処理内容におい
て、pとqを入れ替えたものである。これにより、tq
=(Cq^dq)p^(−1) mod qまたはtq
=((Cq^dq)p^(−1) mod q)+qの
いずれかに対応するRNS表現<tq>が求められる。
を利用して、<up>=MUL(<tp>, <q>,
aUb)を計算する。これにより、up=tp*q m
od ABに対応するRNS表現<up>が求められ
る。
を利用して、<uq>=MUL(<tq>, <p>,
aUb)を計算する。これにより、uq=tq*p m
od ABに対応するRNS表現<uq>が求められ
る。
用して、<m’>=ADD(<up>, <uq>,a
Ub)を計算する。これにより、m’=up+uq m
od ABに対応するRNS表現<m’>が求められ
る。
8を利用して、<m’>をRNS表現(基底aUb)か
ら2進数表現m’に変換する。ここで、m’はN以上で
ある場合があるので、加減算部130は、m’がN以上
であれば、これをN未満の値にするための処理を行う。 (ステップS12)m’をmにコピーする(待避させ
る)。 (ステップS13)m’=m’−Nを計算する。 (ステップS14)m’<0であるか否か判定する。
m’<0でなければ、ステップS12へ戻る。m’<0
であるならば、ループを抜けて、ステップS15へ移
る。 (ステップS15)mを出力して、終了する。なお、ス
テップS12〜ステップS15は、例えば図4のステッ
プS21〜ステップS24など、他の手順でもかまわな
い。
部130がp*qにより求めるようにしても良い。
6−pおよびステップS5−q,S6−qでは、Cp’
=C*B mod p(+p)およびCq’=C*B
mod q(+q)を計算しており、先に説明した通常
のCRTべき乗での(Step-C-2)の処理に対応してい
る。ステップS7−pおよびステップS7−qは、通常
のCRTべき乗での(Step-C-3)の処理に対応してい
る。ステップS8−p、S9−p、S8−q、S9−
q、S10は、先に説明した通常のCRTべき乗での
(Step-C-4)の処理に対応している。ここでは、(Ste
p-C-4)の処理が次のように変形できることを利用して
いる。 m=mp*(q^(-1) mod p)*q + mq*
(p^(-1) mod q)*p (mod N) ={mp*(q^(-1) mod p) mod p}*q +
{mq*(p^(-1) mod q) mod q}*p
(mod N) ステップS11の結果であるm’は、RNSモンゴメリ
乗算でのpおよびqの加算誤差と、加算誤差が無いとし
てもCRTべき乗剰余計算ではm’<2Nであることか
ら、加算誤差を考慮するとm’<4Nとなる。従って、
最大でm’から3Nを引く必要があり、このために必要
な補正をステップS12からステップS14で行ってい
る。m’は2進数に変換してあるので正負の判定は容易
である。この処理が積に説明した通常のCRTべき乗で
の(Step-C-4)の処理における法Nでの剰余値を求め
る手順に相当する。
プはRNS演算器で実行可能な演算機能を用いて実行可
能である。特にステップS7−pとステップS7−qの
RNSモンゴメリべき乗が計算処理の大半を占めるが、
これらは法p、qよりわずかに大きな基底A、Bを用い
た和集合AUBを基底として利用できることが重要であ
る。RNSモンゴメリ乗算の計算量は、その内部で実行
する基底変換の計算量で評価できる。この処理では、1
つの基底要素について見た場合にワードサイズでの乗算
を基底サイズnのオーダだけ必要とし、さらにこれを変
換元の基底における全ての基底要素について実行する。
従って、RNSモンゴメリ乗算の計算量は、基底サイズ
nの2乗のオーダとなる。また、RNSモンゴメリべき
乗の計算量は、RNSモンゴメリ乗算を指数のビットサ
イズL_eだけ繰り返す処理に相当する。よって、RN
Sモンゴメリべき乗の計算量はO(n^2*L_e)と
なる。具体的に、例えば、1024ビットのRSA暗号
を想定する。この場合、秘密鍵d、N、暗号文Cはいず
れも1024ビットになる。従って、これを、従来のよ
うにRNS表現でのモンゴメリべき乗で実行する場合、
利用する基底a’(およびb’)は最低でも要素数33
(=1024/32(ワードサイズ)+1)となる。一
方、本実施形態のようにCRTべき乗で利用する秘密鍵
dp、dq、p、q、Cを法p、qで縮小した値Cp、
Cqはいずれも512ビットであるため、利用する基底
a(およびb)は最低で要素数17(=512/32
(ワードサイズ)+1)となる。最低の基底要素数を利
用するのが処理時間の面で最も効率的であるので、この
前提でCRTによるべき乗剰余計算とCRTによらない
べき乗剰余計算の計算量を比較してみる。RNSモンゴ
メリ乗算については、その計算量は、CRTを用いる場
合は、CRTを用いない場合の1/4となる。べき指数
のサイズについては、CRTを用いる場合にはCRTを
用いない場合の1/2になるが、CRTを用いる場合に
はRNSモンゴメリべき乗を2回計算する必要がある。
よって、全体としては、本CRTべき乗剰余計算によれ
ば、従来のRNSモンゴメリべき乗に比べて、約1/4
の処理量でRSA復号変換が実現できる。また、RNS
モンゴメリべき乗を2つの回路で同時に実行すれば、従
来のRNSモンゴメリべき乗に比べて、約1/8の処理
量でRSA復号変換が実現できる。
ついて説明する。
5−pの手順は、ステップS2−pがステップS1−p
の後になる制約がある以外、どのような順番で行っても
かまわない(剰余計算部129や表現変換部127を並
列処理可能にして、それらの全部または一部を並列処理
してもよい)。
p〜S9−pと、ステップS1−q〜S9−qとでは、
いずれも対応するステップSi−pとステップSi−q
でNの2つの素因数であるpとqに関する同様の演算を
実行している。ステップS1−p〜S9−p、S1−q
〜S9−qの演算は、pパートとqパートを逐次的に行
っても良いし、全てのpパートを実行後に全てのqパー
トを実行するようにしても良い。後者の方が、中間変数
のメモリへの退避・復旧が減る分、効率が良くなる可能
性がある。また、pパートとqパートをパイプライン的
に処理することも可能である。また、該当する演算部の
全部または一部を並列処理可能にしてpパートとqパー
トとを並列的に実行することも可能である。pパートと
qパートとを別々に記述した場合の計算装置1の各演算
部に関する内部構成例を図5に示す。また、例えば、R
NSモンゴメリ乗算部123、RNSモンゴメリべき乗
部124、RNS乗算部125、RNS加算部126の
全部、あるいはそれらのうちRNSモンゴメリ乗算部1
23およびRNSモンゴメリべき乗部124のみ、ある
いはそれらのうちRNSモンゴメリべき乗部124のみ
を、並列処理可能にしてpパートとqパートとを並列的
に実行することも可能である。もちろん、各演算部は、
RNS演算に由来する並列計算を行って高速化を図るこ
とが可能である。この場合に、基底の全ての要素に対す
る演算を同時に実行するように構成することも可能であ
るし、基底の一部(例えば、基底サイズの整数分の一に
相当する個数)の要素に対する演算を同時に実行するよ
うに構成することも可能である。
nv=p^(−1) mod q、qinv=q^(-1)
mod pを外部から入力する例を示したが、それら
をp、qから計算するようにしてもよい。この場合に
は、図5に示すように、2進数表現での補助的な演算部
として、剰余計算部129と加減算部130の他に、さ
らに逆元計算部131を設ければよい。逆元計算部13
1では、2進数表現の整数xと法の値yを入力して、x
^(-1)(mod y)を計算する。この計算は拡張ユー
クリッドの互除法と呼ばれるアルゴリズムで実行される
ことが多い。例えば、“Knuth著、中川圭介訳、
「準数値算法/算術演算」、サイエンス社、p.16
2”に示されている。概ね、yのサイズの剰余乗算10
回分程度の計算量である。
=d mod (p−1)、dq=d mod (q−
1)を外部から入力する例を示したが、それらをp、q
から計算するようにしてもよい。この計算は、剰余計算
部129により行うことができる。
から計算するようにした場合の計算装置1の各演算部に
関する内部構成例を図6に示す。
p=d mod (p−1)、dq=d mod (q
−1)、N(=p*q)、p、q、pinv=p^(−
1)mod q、qinv=q^(-1) mod p)の
うち暗号文C以外のものは、RSAの秘密鍵に相当する
パラメータであり、それらの全部または一部を本計算装
置1内部に記憶しておくことも可能である。この場合に
は、外部からは、暗号文Cと本演算装置1内部の鍵パラ
メータ群を選択するのに必要な鍵識別情報を入力するよ
うにすればよい。
およびステップS1−q〜S4−qで示される計算は、
RSAの秘密鍵(p,q,pinv,qinv)のみに
依存した計算であるが、RSAによる暗号文Cはセッシ
ョン毎に異なるのに対し、RSA秘密鍵はそれほど変更
されないことが多い(RSA秘密鍵が不変のシステムも
あり得る)。そこで、ステップS1−p〜ステップS4
−qまで実行した結果を保存しておき、以後同じRSA
秘密鍵が用いられる限り、ステップS1−p〜ステップ
S4−qまでスキップし、先に保存しておいた結果を利
用してステップS5−p以降の処理を行うとともに、R
SA秘密鍵が変更されたときに改めてステップS1−p
〜ステップS4−qまで実行するようにしてもよい。ま
た、RSA秘密鍵を鍵識別情報で管理する場合には、鍵
識別情報に対応付けて、上記結果を保存しておくように
してもよい。
は、外部からはCのみを入力するものとし、RSA秘密
鍵のみに依存するデータ(p、q、N、<p>、<q
>、<−p^(-1)>_b、<−q^(-1)>_b、<bp
>、<bq>、<pinv>、<qinv>、<bp
>、<bq>)は、予め記憶部に記憶しておくようにし
てもよい。また、RSA秘密鍵が複数ある場合には、外
部からはCおよび鍵識別情報のみを入力するものとし、
RSA秘密鍵のみに依存するデータ(p、q、N、<p
>、<q>、<−p^(-1)>_b、<−q^(-1)>_
b、<bp>、<bq>、<pinv>、<qinv
>、<bp>、<bq>)を鍵識別情報に対応付けて予
め記憶部に記憶しておき、外部から入力された鍵識別情
報に対応するものを記憶部から読み出して用いるように
してもよい。
a={a1 ,a2 ,…,an1 }と基底b={b1 ,b
2 ,…,bn2 }について、n1=n2=nとして説明
したが、n1≠n2とすることも可能である。
号変換に適用した場合について説明したが、暗号変換
(C=m^e mod N)は復号変換(m=C^d
modN)と同様の計算式により表現されるので、もち
ろん、本発明は暗号変換にも適用可能である(例えば、
秘密鍵を持つ装置が、暗号変換するケース)。この場合
には、これまでの説明において、暗号文Cの代わりに平
文mを入力とし、指数dの代わりに指数eを用いればよ
い。
トウェア構成について説明する。本実施の形態では、本
計算装置(復号化装置あるいは暗号化装置)をハードウ
ェアにより実現することを想定して説明したが、ソフト
ウェアとして実現することも可能である。ハードウェア
として構成する場合、例えば、半導体装置として形成
し、演算ボードあるいは演算カードとして、パーソナル
・コンピュータなどの計算機に装備する形態がある。計
算機がOSを用いる場合には、この演算デバイス用のド
ライバをOSに組み込んで用いる形態もある。また、例
えば、半導体装置として形成し、AV機器や家電機器等
の装置に備えることも可能である。ソフトウェアで実現
する場合、コンピュータに所定の手段を実行させるため
の(あるいはコンピュータを所定の手段として機能させ
るための、あるいはコンピュータに所定の機能を実現さ
せるための)プログラムとして実施することができ、ま
た該プログラムを記録したコンピュータ読取り可能な記
録媒体として実施することができる。もちろん、マルチ
プロセッサやパイプライン処理などの種々の高速化技術
を利用することも可能である。
成は一例であって、それ以外の構成を排除する趣旨のも
のではなく、例示した構成の一部を他のもので置き換え
たり、例示した構成の一部を省いたり、例示した構成に
別の機能あるいは要素を付加したり、それらを組み合わ
せたりすることなどによって得られる別の構成も可能で
ある。また、例示した構成と論理的に等価な別の構成、
例示した構成と論理的に等価な部分を含む別の構成、例
示した構成の要部と論理的に等価な別の構成なども可能
である。また、例示した構成と同一もしくは類似の目的
を達成する別の構成、例示した構成と同一もしくは類似
の効果を奏する別の構成なども可能である。また、この
発明の実施の形態で例示した各種構成部分についての各
種バリエーションは、適宜組み合わせて実施することが
可能である。また、この発明の実施の形態は、個別装置
としての発明、関連を持つ2以上の装置についての発
明、システム全体としての発明、個別装置内部の構成部
分についての発明、またはそれらに対応する方法の発明
等、種々の観点、段階、概念またはカテゴリに係る発明
を包含・内在するものである。従って、この発明の実施
の形態に開示した内容からは、例示した構成に限定され
ることなく発明を抽出することができるものである。
るものではなく、その技術的範囲において種々変形して
実施することができる。
た演算と剰余系を利用した演算とモンゴメリ演算とを融
合させることによって、べき乗剰余計算をより効率良く
実行することができる。
示す図
示すフローチャート
内部構成例を示す図
を示すフローチャート
内部構成の他の例を示す図
図
内部構成のさらに他の例を示す図
明するための図
Claims (16)
- 【請求項1】対象データC及び独立パラメータp、q、
dについて、複数の整数の組からなる第1の基底及び第
2の基底による剰余系表現を利用して(ただし、両基底
に含まれる全整数は互いに素、且つ、第1の基底の全整
数の積A>p,q、且つ、第2の基底の全整数の積B>
p,q、且つ、A*B>Cとする)、計算結果m=C^
d mod p*qを求めるためのべき乗剰余計算装置
であって、 前記データCのpによる剰余値Cpの剰余系表現及び前
記パラメータdの(p−1)による剰余値dpに基づ
き、(Cp^dp)*B mod p又はこれにpが加
えられた値の剰余系表現を求めるための第1の処理手段
と、 前記データCのqによる剰余値Cqの剰余系表現及び前
記パラメータdの(q−1)による剰余値dqに基づ
き、(Cq^dq)*B mod q又はこれにqが加
えられた値の剰余系表現を求めるための第2の処理手段
と、 前記第1及び第2の処理手段により求められた両剰余系
表現に基づき、法p*qの元でC^dと合同である整数
m’の剰余系表現を求めるための第3の処理手段と、 前記第3の処理手段により求められた前記剰余系表現を
2進数表現に変換して得られた前記整数m’の値に基づ
き、前記計算結果mを求めるための第4の処理手段とを
備えたことを特徴とするべき乗剰余計算装置。 - 【請求項2】前記第1の処理手段は、前記剰余値Cp=
C mod pの剰余系表現とB^2 mod pの剰
余系表現とのRNSモンゴメリ乗算を行い、これにより
得られた剰余系表現について指数部を前記剰余値dp=
d mod (p−1)とするRNSモンゴメリべき乗
を行うことによって、(Cp^dp)*B modp又
はこれにpが加えられた値の剰余系表現を求め、 前記第2の処理手段は、前記剰余値Cq=C mod
qの剰余系表現とB^2 mod qの剰余系表現との
RNSモンゴメリ乗算を行い、これにより得られた剰余
系表現について指数部を前記剰余値dq=d mod
(q−1)とするRNSモンゴメリべき乗を行うことに
よって、(Cq^dq)*B modq又はこれにqが
加えられた値の剰余系表現を求めることを特徴とする請
求項1に記載のべき乗剰余計算装置。 - 【請求項3】前記パラメータp、q及びdをもとに、前
記剰余値dp=d mod (p−1)及び前記剰余値
dq=d mod (q−1)を求めるための手段を更
に備えたことを特徴とする請求項2に記載のべき乗剰余
計算装置。 - 【請求項4】前記第3の処理手段は、前記第1の処理手
段により得られた前記剰余系表現と前記パラメータqの
法pにおける逆元qinv=q^(−1) mod p
の剰余系表現とのRNSモンゴメリ乗算を行い、これに
よって得られた剰余系表現と前記パラメータqの剰余系
表現とのRNS乗算を行うとともに、前記第2の処理手
段により得られた前記剰余系表現と前記パラメータpの
法qにおける逆元pinv=p^(−1) mod q
の剰余系表現とのRNSモンゴメリ乗算を行い、これに
よって得られた剰余系表現と前記パラメータpの剰余系
表現とのRNS乗算を行い、これらにより得られた両R
NS乗算の結果のRNS加算を行うことによって、前記
法p*qにおいてC^dと合同である整数m’の剰余系
表現を求めることを特徴とする請求項1に記載のべき乗
剰余計算装置。 - 【請求項5】前記パラメータp及び前記パラメータq並
びに前記逆元pinv及び前記逆元qinvをそれぞれ
2進数表現から剰余系表現に変換するための手段を更に
備えたことを特徴とする請求項4に記載のべき乗剰余計
算装置。 - 【請求項6】前記パラメータp及びqをもとに、前記逆
元pinv=p^(−1) modq及び前記パラメー
タqの法pにおける逆元qinv=q^(−1) mo
dpを求めるための手段を更に備えたことを特徴とする
請求項5に記載のべき乗剰余計算装置。 - 【請求項7】前記データC並びに前記パラメータp及び
qをもとに、前記剰余値Cp=Cmod p及び前記剰
余値Cq=C mod qを求めるための手段を更に備
えたことを特徴とする請求項1に記載のべき乗剰余計算
装置。 - 【請求項8】前記パラメータp、q、dのみに依存する
剰余系表現のデータを予め記憶しておくための記憶手段
を更に備えたことを特徴とする請求項1、2または4に
記載のべき乗剰余計算装置。 - 【請求項9】前記パラメータを識別する識別情報iと、
該識別情報iに対応するパラメータpi、qi、diの
みに依存する剰余系表現のデータとを対応付けて予め記
憶しておくための記憶手段を更に備えたことを特徴とす
る請求項1、2または4に記載のべき乗剰余計算装置。 - 【請求項10】前記第1の処理手段及び第2の処理手段
はそれらの処理の少なくとも一部を同時に実行すること
を特徴とする請求項1に記載のべき乗剰余計算装置。 - 【請求項11】前記第1の処理手段及び第2の処理手段
は前記基底の要素ごとに行う演算につき該要素の数に相
当する演算の全部または一部を同時に実行することを特
徴とする請求項1に記載のべき乗剰余計算装置。 - 【請求項12】前記第4の処理手段は、 前記第3の処理手段により求められた前記整数m’の剰
余系表現を2進数表現に変換するための手段と、 この手段により得られたp*q未満の前記整数m’の値
又はp*q以上の前記整数m’から所定回数p*qを減
じることによって得たp*q未満の値を、m=C^d
mod p*qとするための手段とを含むことを特徴と
する請求項1に記載のべき乗剰余計算装置。 - 【請求項13】前記第1の基底の要素数と前記第2の基
底の要素数とを同一にしたことを特徴とする請求項1に
記載のべき乗剰余計算装置。 - 【請求項14】対象データC及び独立パラメータp、
q、dについて、複数の整数の組からなる第1の基底及
び第2の基底による剰余系表現を利用して(ただし、両
基底に含まれる全整数は互いに素、且つ、第1の基底の
全整数の積A>p,q、且つ、第2の基底の全整数の積
B>p,q、且つ、A*B>Cとする)、m=C^d
mod p*qを求めるためのべき乗剰余計算方法であ
って、 前記データCのpによる剰余値Cpの剰余系表現及び前
記パラメータdの(p−1)による剰余値dpに基づ
き、(Cp^dp)*B mod p又はこれにpが加
えられた値の剰余系表現を求めるとともに、前記データ
Cのqによる剰余値Cqの剰余系表現及び前記パラメー
タdの(q−1)による剰余値dqに基づき、(Cq^
dq)*B mod q又はこれにqが加えられた値の
剰余系表現を求め、 求められた両剰余系表現に基づき、法p*qの元でC^
dと合同である整数m’の剰余系表現を求め、 求められた前記剰余系表現を2進数表現に変換して得ら
れた前記整数m’の値に基づき、前記計算結果mを求め
ることを特徴とするべき乗剰余計算方法。 - 【請求項15】対象データC及び独立パラメータp、
q、dについて、複数の整数の組からなる第1の基底及
び第2の基底による剰余系表現を利用して(ただし、両
基底に含まれる全整数は互いに素、且つ、第1の基底の
全整数の積A>p,q、且つ、第2の基底の全整数の積
B>p,q、且つ、A*B>Cとする)、m=C^d
mod p*qを求めるためのべき乗剰余計算装置とし
てコンピュータを機能させるためのプログラムを記録し
たコンピュータ読取り可能な記録媒体であって、 前記データCのpによる剰余値Cpの剰余系表現及び前
記パラメータdの(p−1)による剰余値dpに基づ
き、(Cp^dp)*B mod p又はこれにpが加
えられた値の剰余系表現を求めるための第1の処理機能
と、 前記データCのqによる剰余値Cqの剰余系表現及び前
記パラメータdの(q−1)による剰余値dqに基づ
き、(Cq^dq)*B mod q又はこれにqが加
えられた値の剰余系表現を求めるための第2の処理機能
と、 前記第1及び第2の処理機能により求められた両剰余系
表現に基づき、法p*qの元でC^dと合同である整数
m’の剰余系表現を求めるための第3の処理機能と、 前記第3の処理機能により求められた前記剰余系表現を
2進数表現に変換して得られた前記整数m’の値に基づ
き、前記計算結果mを求めるための第4の処理機能とを
コンピュータに実現させるためのプログラムを記録した
コンピュータ読取り可能な記録媒体。 - 【請求項16】対象データC及び独立パラメータp、
q、dについて、複数の整数の組からなる第1の基底及
び第2の基底による剰余系表現を利用して(ただし、両
基底に含まれる全整数は互いに素、且つ、第1の基底の
全整数の積A>p,q、且つ、第2の基底の全整数の積
B>p,q、且つ、A*B>Cとする)、m=C^d
mod p*qを求めるためのべき乗剰余計算装置とし
てコンピュータを機能させるためのプログラム、 前記データCのpによる剰余値Cpの剰余系表現及び前
記パラメータdの(p−1)による剰余値dpに基づ
き、(Cp^dp)*B mod p又はこれにpが加
えられた値の剰余系表現を求めるための第1の処理機能
と、 前記データCのqによる剰余値Cqの剰余系表現及び前
記パラメータdの(q−1)による剰余値dqに基づ
き、(Cq^dq)*B mod q又はこれにqが加
えられた値の剰余系表現を求めるための第2の処理機能
と、 前記第1及び第2の処理機能により求められた両剰余系
表現に基づき、法p*qの元でC^dと合同である整数
m’の剰余系表現を求めるための第3の処理機能と、 前記第3の処理機能により求められた前記剰余系表現を
2進数表現に変換して得られた前記整数m’の値に基づ
き、前記計算結果mを求めるための第4の処理機能とを
コンピュータに実現させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001013565A JP3785044B2 (ja) | 2001-01-22 | 2001-01-22 | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 |
US10/051,276 US20020126838A1 (en) | 2001-01-22 | 2002-01-22 | Modular exponentiation calculation apparatus and modular exponentiation calculation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001013565A JP3785044B2 (ja) | 2001-01-22 | 2001-01-22 | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002215020A true JP2002215020A (ja) | 2002-07-31 |
JP3785044B2 JP3785044B2 (ja) | 2006-06-14 |
Family
ID=18880397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001013565A Expired - Fee Related JP3785044B2 (ja) | 2001-01-22 | 2001-01-22 | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20020126838A1 (ja) |
JP (1) | JP3785044B2 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003241659A (ja) * | 2002-02-22 | 2003-08-29 | Hitachi Ltd | 情報処理方法 |
DE10220262A1 (de) * | 2002-05-06 | 2003-11-27 | Giesecke & Devrient Gmbh | Berechnung des modularen Inversen eines Wertes |
US7187770B1 (en) | 2002-07-16 | 2007-03-06 | Cisco Technology, Inc. | Method and apparatus for accelerating preliminary operations for cryptographic processing |
US7532720B2 (en) * | 2003-10-15 | 2009-05-12 | Microsoft Corporation | Utilizing SIMD instructions within montgomery multiplication |
US8229109B2 (en) * | 2006-06-27 | 2012-07-24 | Intel Corporation | Modular reduction using folding |
US7925011B2 (en) * | 2006-12-14 | 2011-04-12 | Intel Corporation | Method for simultaneous modular exponentiations |
EP2015171A1 (fr) * | 2007-06-29 | 2009-01-14 | Gemplus | Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés sans la connaissance de l'exposant public, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée |
US8005210B2 (en) * | 2007-06-30 | 2011-08-23 | Intel Corporation | Modulus scaling for elliptic-curve cryptography |
US8042025B2 (en) * | 2007-12-18 | 2011-10-18 | Intel Corporation | Determining a message residue |
US20090285387A1 (en) * | 2008-05-15 | 2009-11-19 | Chiou-Haun Lee | Symmetric encryption/decryption method of variable length and application thereof |
JP5407352B2 (ja) * | 2009-01-19 | 2014-02-05 | 富士通株式会社 | 復号処理装置、復号処理プログラム、復号処理方法 |
JP5573964B2 (ja) * | 2010-12-27 | 2014-08-20 | 富士通株式会社 | 暗号処理装置および方法 |
EP2779519A1 (en) * | 2013-03-11 | 2014-09-17 | Thomson Licensing | A method and a device for fault-resistant exponentiation in cryptographic systems |
US9985784B2 (en) | 2014-12-23 | 2018-05-29 | Nxp B.V. | Efficient smooth encodings for modular exponentiation |
US9904516B2 (en) | 2014-12-23 | 2018-02-27 | Nxp B.V. | Modular exponentiation using look-up tables |
US9906368B2 (en) | 2014-12-23 | 2018-02-27 | Nxp B.V. | General encoding functions for modular exponentiation encryption schemes |
US10033801B2 (en) * | 2015-02-12 | 2018-07-24 | Mellanox Technologies, Ltd. | Associative summing for high performance computing |
US9652200B2 (en) | 2015-02-18 | 2017-05-16 | Nxp B.V. | Modular multiplication using look-up tables |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69229766T2 (de) * | 1991-09-05 | 2000-03-23 | Canon K.K., Tokio/Tokyo | Verfahren und Gerät zum Verschlüsseln und Entschlüsseln von Kommunikationsdaten |
US6691143B2 (en) * | 2000-05-11 | 2004-02-10 | Cyberguard Corporation | Accelerated montgomery multiplication using plural multipliers |
US6763365B2 (en) * | 2000-12-19 | 2004-07-13 | International Business Machines Corporation | Hardware implementation for modular multiplication using a plurality of almost entirely identical processor elements |
-
2001
- 2001-01-22 JP JP2001013565A patent/JP3785044B2/ja not_active Expired - Fee Related
-
2002
- 2002-01-22 US US10/051,276 patent/US20020126838A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20020126838A1 (en) | 2002-09-12 |
JP3785044B2 (ja) | 2006-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3785044B2 (ja) | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 | |
Joye et al. | Optimal left-to-right binary signed-digit recoding | |
US7904498B2 (en) | Modular multiplication processing apparatus | |
Yanık et al. | Incomplete reduction in modular arithmetic | |
US8977668B2 (en) | Calculating unit for reducing an input number with respect to a modulus | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
US8417760B2 (en) | Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
Großschädl | A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m) | |
JP3542278B2 (ja) | モンゴメリ・リダクション装置及び記録媒体 | |
JP4351987B2 (ja) | モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム | |
US20090268900A1 (en) | Signed montgomery arithmetic | |
US8364740B2 (en) | Device and method for calculating a result of a modular multiplication with a calculating unit smaller than the operands | |
KR100508092B1 (ko) | 저전력 모듈로 곱셈을 수행하는 연산장치 | |
KR20040067779A (ko) | 정보 처리방법 | |
KR101154845B1 (ko) | 스칼라 배산기 및 스칼라 배산프로그램 | |
US6609141B1 (en) | Method of performing modular inversion | |
US8364737B2 (en) | Device and method for calculating a result of a sum with a calculating unit with limited word length | |
JP4182226B2 (ja) | 剰余系の計算方法及び装置並びにプログラム | |
Stogbauer | Efficient Algorithms for pairing-based cryptosystems | |
TW202332229A (zh) | 用來進行功耗擾動操作以降低密碼系統功耗分析攻擊的成功率之方法、密碼系統處理電路及電子裝置 | |
JPWO2005013243A1 (ja) | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム | |
JP5179933B2 (ja) | データ処理装置 | |
JP3779479B2 (ja) | Icカード | |
JP3966714B2 (ja) | 暗号処理方法、そのプログラム及びその記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050906 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051107 |
|
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: 20060314 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060316 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100324 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100324 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110324 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |