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
Application number
JP2001013565A
Other languages
English (en)
Other versions
JP3785044B2 (ja
Inventor
Atsushi Shinpo
淳 新保
Hanae Ikeda
華恵 池田
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 JP2001013565A priority Critical patent/JP3785044B2/ja
Priority to US10/051,276 priority patent/US20020126838A1/en
Publication of JP2002215020A publication Critical patent/JP2002215020A/ja
Application granted granted Critical
Publication of JP3785044B2 publication Critical patent/JP3785044B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/723Modular exponentiation
    • 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/729Methods 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
    • 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)

Abstract

(57)【要約】 【課題】 より効率良く実行可能にしたべき乗剰余計算
装置を提供すること。 【解決手段】 暗号文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

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、対象データC及び
独立パラメータp、q、dについてm=C^dmod
p*qを求めるためのべき乗剰余計算装置及びべき乗剰
余計算方法に関する。
【0002】
【従来の技術】整数演算(加減乗算)の並列処理が可能
となる剰余系(Residue Number Sys
tem:RNS)表現をベースに、公開鍵暗号のアルゴ
リズム(べき乗剰余演算)を実現するための基本要素と
なる剰余乗算を、モンゴメリ乗算と融合させて実現する
アルゴリズムおよびそのハードウェア構成が提案されて
いる。これをRNSモンゴメリ乗算と呼ぶことにする。
【0003】ここで、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表現と呼ばれる。
【0004】以下では、RNS表現で用いる法の集合
を、基底(base)と呼ぶものとする。また、基底の
要素数nを基底サイズと呼ぶものとする。基底サイズn
の基底aは、次のように表される。 a={a1 ,a2 ,…,an } RNS表現では、各基底の要素は、通常、互いに素な正
整数を用い、中国剰余定理により“基底の要素の積”未
満の正整数はRNS表現により一意に表現できることが
保証される。すなわち、基底a={a1 ,a2 ,…,a
n } 基底aの要素の積A=a1 *a2 *…*an としたときに、基底aを用いたRNS表現によりA未満
の正整数を表現できる。
【0005】以下では、基底aを用いてRNS表現され
た整数xを、<x>_aで表すものとする(基底を省略
して<x>で表すこともある)。すなわち、 <x>_a=(x1 ,x2 ,…,xn ) =(x mod a1 , x mod a2 ,…, x mod an ) である。
【0006】なお、以下の演算で、2種類の基底を用い
る場合に、基底a={a1 ,a2 ,…,an1 }と基底
b={b1 ,b2 ,…,bn2 }について、aUbは、
{a1,a2 ,…,an1 }と{b1 ,b2 ,…,
n2 }の結合を表し、<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として説明する。
【0007】RNS表現の利点は、基底の全要素の積A
を法とした加算、減算、乗算が簡単に計算できることで
ある。すなわち、以下のように各要素をそれぞれの法に
よって独立に加算、減算、乗算した結果が、所望の結果
となる。 <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乗算と呼ぶものとする。
【0008】従って、n個の演算はすべて並列に処理可
能であるため、n個の演算ユニットを用意すればすべて
を並列に処理して高速な処理が行えるし、用意する演算
ユニットがn個に満たなくても1個からn個まで増やす
程それに比例して演算速度を向上できる。
【0009】次に、RNSモンゴメリ乗算およびRNS
モンゴメリべき乗について説明する。
【0010】RNSモンゴメリ乗算は、法pでの剰余付
き乗算(<x>*<y> (modN))に関し、モン
ゴメリ乗算と呼ばれる手法をRNS表現での演算に応用
する手法であり、概ね以下の手順で計算される。
【0011】[RNSモンゴメリ乗算:MM( <x>
_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へ基底変換す
る。
【0012】なお、上記の手順のうちStep-M-4やStep
-M-8の基底変換は、ある基底によるRNS表現に対応
するある整数(例えば、基底bによるRNS表現<t>
_bに対応する整数t)の、他の基底によるRNS表現
(例えば、基底aによるRNS表現<t>_a)を求め
る処理である。
【0013】RNSモンゴメリ乗算器も並列に処理を行
う演算ユニットを増加させることにより、高速処理が可
能となる。
【0014】また、RNSモンゴメリ乗算を繰り返し行
うことで(RNSモンゴメリ乗算器を繰り返し利用する
ことで)べき乗計算を行うことによりRSA暗号の暗号
処理を構成する方法が提案されている。このべき乗計算
法をRNSモンゴメリべき乗と呼ぶものとする。RNS
モンゴメリべき乗は、概ね以下の手順で計算される。
【0015】[RNSモンゴメリべき乗:MEXP(
<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へ戻る。
【0016】なお、上記の手順のうち、Step-E-2やSt
ep-E-3でのMM( )は、先に説明したRNSモンゴ
メリ乗算を表す。
【0017】次に、CRTべき乗剰余計算について説明
する。
【0018】RSA暗号は、公開鍵(N、e)、秘密鍵
(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べき乗剰余計算と呼ぶものとす
る。
【0019】 <CRTべき乗剰余計算手順> (Step-C-1) dp=d mod (p−1) dq=d mod (q−1) (Step-C-2) Cp=C mod p Cq=C mod q (Step-C-3) mp=Cp^dp mod p mq=Cq^dq mod q (Step-C-4) m=mp*(q^(-1) mod p)*q + mq*(p^(-1) mod q)*p (mod N) なお、上記の手順において、dp、dq、(q^(-1)
mod p)、(p^(-1) mod q)といったパラ
メータは秘密鍵のみに依存するので、事前に計算し、秘
密鍵の一部として記憶しておくことが一般的である。
【0020】CRTべき乗剰余計算の計算量は、その支
配的な部分が(Step-C-3)のべき乗剰余計算2回であ
り、べき乗剰余計算は法のサイズの3乗に比例すること
に注意すると、2進表現でのべき乗剰余計算とCRTべ
き乗剰余計算の計算量は約1/4であることが分かる。
なお、(Step-C-3)のべき乗計算を2つの計算回路で
同時に実行すれば計算時間は約1/8にできる。
【0021】しかしながら、RNSモンゴメリ乗算によ
るRSA暗号装置においてCRTべき乗剰余計算の具体
的な手順は示されておらず、RSA復号変換(秘密変
換)を同装置でより短時間に計算することはできなかっ
た。
【0022】
【発明が解決しようとする課題】従来、RNSモンゴメ
リ乗算によるCRTべき乗剰余計算の具体的な手順が知
られていなかったため、RSA復号変換(秘密変換)の
ような大きな整数のべき乗剰余計算をより高速化するこ
とが困難であった。
【0023】本発明は、上記事情を考慮してなされたも
ので、べき乗剰余計算をより効率良く実行可能にしたべ
き乗剰余計算装置及びべき乗剰余計算方法を提供するこ
とを目的とする。
【0024】
【課題を解決するための手段】本発明は、対象データ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^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の処理手段とを備えたこと
を特徴とする。
【0025】好ましくは、前記第1の処理手段は、前記
剰余値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が加えられた値の剰余系表現を求めるように
してもよい。
【0026】好ましくは、前記第3の処理手段は、前記
第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’の剰余系表現を求めるようにしてもよい。
【0027】好ましくは、前記第1の処理手段及び第2
の処理手段はそれらの処理の少なくとも一部を同時に実
行するようにしてもよい。
【0028】好ましくは、前記第1の処理手段及び第2
の処理手段は前記基底の要素ごとに行う演算につき該要
素の数に相当する演算の全部または一部を同時に実行す
るようにしてもよい。
【0029】好ましくは、前記第4の処理手段は、前記
第3の処理手段により求められた前記整数m’の剰余系
表現を2進数表現に変換するための手段と、この手段に
より得られたp*q未満の前記整数m’の値又はp*q
以上の前記整数m’から所定回数p*qを減じることに
よって得たp*q未満の値を、m=C^d modp*
qとするための手段とを含むようにしてもよい。
【0030】また、本発明は、対象データ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を求めることを特徴とする。
【0031】なお、装置に係る本発明は方法に係る発明
としても成立し、方法に係る本発明は装置に係る発明と
しても成立する。また、装置または方法に係る本発明
は、コンピュータに当該発明に相当する手順を実行させ
るための(あるいはコンピュータを当該発明に相当する
手段として機能させるための、あるいはコンピュータに
当該発明に相当する機能を実現させるための)プログラ
ムとしても成立し、該プログラムを記録したコンピュー
タ読取り可能な記録媒体としても成立する。
【0032】本発明によれば、中国剰余定理を利用した
演算と剰余系を利用した演算とモンゴメリ演算とを融合
させることによって、べき乗剰余計算をより効率良く実
行することができる。例えば、剰余系表現を利用したべ
き乗剰余演算装置にてRSA暗号の復号変換に中国剰余
定理を利用した効率の良い実装が可能となり、同復号変
換を約1/8の処理量に削減できる。
【0033】
【発明の実施の形態】以下、図面を参照しながら発明の
実施の形態を説明する。
【0034】図1に、本発明の一実施形態に係る計算装
置の機能的な構成図を示す。
【0035】本計算装置1は、RNS表現された整数を
演算する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である。
【0036】記憶部121は、例えばRNS表現で利用
する基底や事前に計算し装置内に記憶されるパラメータ
等を記憶する。
【0037】RNSモンゴメリ乗算部123は、先に説
明した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」に詳しい。
【0038】RNS逆元計算部(INV)122は、<
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回以下のワードサイズの剰余乗算に相当す
る。
【0039】剰余計算部129は、2進数表現の被除数
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の
加算)に相当する。
【0040】上記RNS演算における最後の引数(aや
aUbなど)は、RNS表現で利用される基底を表す。
基底aの要素の積の値をA、基底bの要素の積の値をB
とすると、基底aUbの要素の積の値はABになる。R
NSモンゴメリ乗算とRNSモンゴメリべき乗の出力は
z<A,Bとなる。
【0041】上記のようにRNSモンゴメリ乗算および
RNSモンゴメリべき乗においては、モンゴメリ乗算の
性質から、モジュラスpの値だけ結果が大きい場合があ
る。すなわち、MM(<x>,<y>,p,aUb)<
2pである。法pを固定した場合、RNSモンゴメリ乗
算とRNSモンゴメリべき乗の出力はいずれも2p未満
であるが、これらの出力はそのままRNSモンゴメリ乗
算およびRNSモンゴメリべき乗に入力可能である。
【0042】本計算装置1内には、次のパラメータは、
予め記憶しておくものとする。事前登録パラメータ:基
底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となる。
【0043】CRTべき乗を実行するために外部から本
計算装置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の各演算部
に関する内部構成例を示す。
【0044】(ステップS0):外部入力パラメータ
C、dp、dq、N、p、q、pinv、qinvを入
力する。
【0045】以下の手順のうち、ステップS1−p〜S
9−pと、ステップS1−q〜S9−qとでは、いずれ
の対応するステップSi−pとステップSi−qにおい
ても、Nの2つの素因数であるpとqに関する同様の演
算を実行している。
【0046】(ステップS1−p)第1の表現変換部1
27を利用して、2進数表現pを、基底aUbによるR
NS表現<p>(=<p>_a U <p>_b={p
mod a1 ,p mod a2 ,…,p mod
n } U {p mod b1 ,p mod b 2
…,p mod bn })に変換する。
【0047】(ステップS1−q)第1の表現変換部1
27を利用して、2進数表現qを、基底aUbによるR
NS表現<q>(=<q>_a U <q>_b={q
mod a1 ,q mod a2 ,…,q mod
n } U {q mod b1 ,q mod b 2
…,q mod bn })に変換する。
【0048】(ステップS2−p)RNS逆元計算部1
22を利用して、(ステップS1−pで求められた)<
p>_bから、<−p^(-1)>_bを計算する。
【0049】(ステップS2−q)RNS逆元計算部1
22を利用して、(ステップS1−qで求められた)<
q>_bから、<−q^(-1)>_bを計算する。
【0050】(ステップS3−p)剰余計算部129を
利用して、bp=B^2 mod pを計算し、第1の
表現変換部127を利用して、bpを2進数表現から基
底aUbによるRNS表現<bp>に変換する。
【0051】(ステップS3−q)剰余計算部129を
利用して、bq=B^2 mod qを計算し、第1の
表現変換部127を利用して、bqを2進数表現から基
底aUbによるRNS表現<bq>に変換する。
【0052】(ステップS4−p)第1の表現変換部1
27を利用して、pinvを2進数表現から基底aUb
によるRNS表現<pinv>に変換する。
【0053】(ステップS4−q)第1の表現変換部1
27を利用して、qinvを2進数表現から基底aUb
によるRNS表現<qinv>に変換する。
【0054】(ステップS5−p)剰余計算部129を
利用して、Cp=C mod pを計算し、第1の表現
変換部127を利用して、Cpを2進数表現から基底a
UbによるRNS表現<Cp>に変換する。
【0055】(ステップS5−q)剰余計算部129を
利用して、Cq=C mod qを計算し、第1の表現
変換部127を利用して、Cqを2進数表現から基底a
UbによるRNS表現<Cq>に変換する。
【0056】(ステップS6−p)RNSモンゴメリ乗
算部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’>が求められる。
【0057】(ステップS6−q)RNSモンゴメリ乗
算部123を利用して、<Cq’>=MM(<Cq>,
<bq>, q, aUb)を計算する。なお、先に説
明したアルゴリズムを利用する場合の処理内容は、ステ
ップS6−pの処理内容において、pとqを入れ替えた
ものである。 これにより、Cq’=C*B mod qまたはCq’
=(C*B modq)+qのいずれかに対応するRN
S表現<Cp’>が求められる。
【0058】(ステップS7−p)RNSモンゴメリべ
き乗部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’>が求めら
れる。
【0059】(ステップS7−q)RNSモンゴメリべ
き乗部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’>が求められる。
【0060】(ステップS8−p) RNSモンゴメリ乗算部123を利用して、<tp>=
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
>が求められる。
【0061】(ステップS8−q)RNSモンゴメリ乗
算部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>が求められる。
【0062】(ステップS9−p)RNS乗算部125
を利用して、<up>=MUL(<tp>, <q>,
aUb)を計算する。これにより、up=tp*q m
od ABに対応するRNS表現<up>が求められ
る。
【0063】(ステップS9−q)RNS乗算部125
を利用して、<uq>=MUL(<tq>, <p>,
aUb)を計算する。これにより、uq=tq*p m
od ABに対応するRNS表現<uq>が求められ
る。
【0064】(ステップS10)RNS加算126を利
用して、<m’>=ADD(<up>, <uq>,a
Ub)を計算する。これにより、m’=up+uq m
od ABに対応するRNS表現<m’>が求められ
る。
【0065】(ステップS11)第2の表現変換部12
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など、他の手順でもかまわな
い。
【0066】また、Nは、外部から入力せずに、加減算
部130がp*qにより求めるようにしても良い。
【0067】上記手順において、ステップS5−p,S
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での剰余値を求め
る手順に相当する。
【0068】本CRTべき乗剰余計算での各計算ステッ
プは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復号変換が実現できる。
【0069】以下では、本実施形態のバリエーションに
ついて説明する。
【0070】図2の手順のうち、ステップS1−p〜S
5−pの手順は、ステップS2−pがステップS1−p
の後になる制約がある以外、どのような順番で行っても
かまわない(剰余計算部129や表現変換部127を並
列処理可能にして、それらの全部または一部を並列処理
してもよい)。
【0071】また、図2の手順のうち、ステップS1−
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演算に由来する並列計算を行って高速化を図るこ
とが可能である。この場合に、基底の全ての要素に対す
る演算を同時に実行するように構成することも可能であ
るし、基底の一部(例えば、基底サイズの整数分の一に
相当する個数)の要素に対する演算を同時に実行するよ
うに構成することも可能である。
【0072】また、これまで説明した構成例では、pi
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
回分程度の計算量である。
【0073】また、これまで説明した構成例では、dp
=d mod (p−1)、dq=d mod (q−
1)を外部から入力する例を示したが、それらをp、q
から計算するようにしてもよい。この計算は、剰余計算
部129により行うことができる。
【0074】pinv、qinv、dp、dqをp、q
から計算するようにした場合の計算装置1の各演算部に
関する内部構成例を図6に示す。
【0075】また、外部入力パラメータ(暗号文C、d
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内部の鍵パラ
メータ群を選択するのに必要な鍵識別情報を入力するよ
うにすればよい。
【0076】また、図2のステップS1−p〜S4−p
およびステップ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秘密鍵を鍵識別情報で管理する場合には、鍵
識別情報に対応付けて、上記結果を保存しておくように
してもよい。
【0077】また、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>)を鍵識別情報に対応付けて予
め記憶部に記憶しておき、外部から入力された鍵識別情
報に対応するものを記憶部から読み出して用いるように
してもよい。
【0078】また、2種類の基底を用いる場合に、基底
a={a1 ,a2 ,…,an1 }と基底b={b1 ,b
2 ,…,bn2 }について、n1=n2=nとして説明
したが、n1≠n2とすることも可能である。
【0079】なお、以上では、本発明を図8のような復
号変換に適用した場合について説明したが、暗号変換
(C=m^e mod N)は復号変換(m=C^d
modN)と同様の計算式により表現されるので、もち
ろん、本発明は暗号変換にも適用可能である(例えば、
秘密鍵を持つ装置が、暗号変換するケース)。この場合
には、これまでの説明において、暗号文Cの代わりに平
文mを入力とし、指数dの代わりに指数eを用いればよ
い。
【0080】ここで、本計算装置のハードウェア、ソフ
トウェア構成について説明する。本実施の形態では、本
計算装置(復号化装置あるいは暗号化装置)をハードウ
ェアにより実現することを想定して説明したが、ソフト
ウェアとして実現することも可能である。ハードウェア
として構成する場合、例えば、半導体装置として形成
し、演算ボードあるいは演算カードとして、パーソナル
・コンピュータなどの計算機に装備する形態がある。計
算機がOSを用いる場合には、この演算デバイス用のド
ライバをOSに組み込んで用いる形態もある。また、例
えば、半導体装置として形成し、AV機器や家電機器等
の装置に備えることも可能である。ソフトウェアで実現
する場合、コンピュータに所定の手段を実行させるため
の(あるいはコンピュータを所定の手段として機能させ
るための、あるいはコンピュータに所定の機能を実現さ
せるための)プログラムとして実施することができ、ま
た該プログラムを記録したコンピュータ読取り可能な記
録媒体として実施することができる。もちろん、マルチ
プロセッサやパイプライン処理などの種々の高速化技術
を利用することも可能である。
【0081】なお、この発明の実施の形態で例示した構
成は一例であって、それ以外の構成を排除する趣旨のも
のではなく、例示した構成の一部を他のもので置き換え
たり、例示した構成の一部を省いたり、例示した構成に
別の機能あるいは要素を付加したり、それらを組み合わ
せたりすることなどによって得られる別の構成も可能で
ある。また、例示した構成と論理的に等価な別の構成、
例示した構成と論理的に等価な部分を含む別の構成、例
示した構成の要部と論理的に等価な別の構成なども可能
である。また、例示した構成と同一もしくは類似の目的
を達成する別の構成、例示した構成と同一もしくは類似
の効果を奏する別の構成なども可能である。また、この
発明の実施の形態で例示した各種構成部分についての各
種バリエーションは、適宜組み合わせて実施することが
可能である。また、この発明の実施の形態は、個別装置
としての発明、関連を持つ2以上の装置についての発
明、システム全体としての発明、個別装置内部の構成部
分についての発明、またはそれらに対応する方法の発明
等、種々の観点、段階、概念またはカテゴリに係る発明
を包含・内在するものである。従って、この発明の実施
の形態に開示した内容からは、例示した構成に限定され
ることなく発明を抽出することができるものである。
【0082】本発明は、上述した実施の形態に限定され
るものではなく、その技術的範囲において種々変形して
実施することができる。
【0083】
【発明の効果】本発明によれば、中国剰余定理を利用し
た演算と剰余系を利用した演算とモンゴメリ演算とを融
合させることによって、べき乗剰余計算をより効率良く
実行することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係る計算装置の構成例を
示す図
【図2】同実施形態に係る計算装置の処理手順の一例を
示すフローチャート
【図3】同実施形態に係る計算装置の各演算部に関する
内部構成例を示す図
【図4】同実施形態に係る計算装置の処理手順の他の例
を示すフローチャート
【図5】同実施形態に係る計算装置の各演算部に関する
内部構成の他の例を示す図
【図6】同実施形態に係る計算装置の他の構成例を示す
【図7】同実施形態に係る計算装置の各演算部に関する
内部構成のさらに他の例を示す図
【図8】同実施形態に係る計算装置の適用例について説
明するための図
【符号の説明】
1…計算装置 11…入出力部 12…RNS演算器 13…制御部 121…記憶部 122…RNS逆元計算部 123…RNSモンゴメリ乗算部 124…RNSモンゴメリべき乗部 125…RNS乗算部 126…RNS加算部 127…第1の表現変換部 128…第2の表現変換部 129…剰余計算部 130…加減算部 131…逆元計算部

Claims (16)

    【特許請求の範囲】
  1. 【請求項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. 【請求項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. 【請求項3】前記パラメータp、q及びdをもとに、前
    記剰余値dp=d mod (p−1)及び前記剰余値
    dq=d mod (q−1)を求めるための手段を更
    に備えたことを特徴とする請求項2に記載のべき乗剰余
    計算装置。
  4. 【請求項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. 【請求項5】前記パラメータp及び前記パラメータq並
    びに前記逆元pinv及び前記逆元qinvをそれぞれ
    2進数表現から剰余系表現に変換するための手段を更に
    備えたことを特徴とする請求項4に記載のべき乗剰余計
    算装置。
  6. 【請求項6】前記パラメータp及びqをもとに、前記逆
    元pinv=p^(−1) modq及び前記パラメー
    タqの法pにおける逆元qinv=q^(−1) mo
    dpを求めるための手段を更に備えたことを特徴とする
    請求項5に記載のべき乗剰余計算装置。
  7. 【請求項7】前記データC並びに前記パラメータp及び
    qをもとに、前記剰余値Cp=Cmod p及び前記剰
    余値Cq=C mod qを求めるための手段を更に備
    えたことを特徴とする請求項1に記載のべき乗剰余計算
    装置。
  8. 【請求項8】前記パラメータp、q、dのみに依存する
    剰余系表現のデータを予め記憶しておくための記憶手段
    を更に備えたことを特徴とする請求項1、2または4に
    記載のべき乗剰余計算装置。
  9. 【請求項9】前記パラメータを識別する識別情報iと、
    該識別情報iに対応するパラメータpi、qi、diの
    みに依存する剰余系表現のデータとを対応付けて予め記
    憶しておくための記憶手段を更に備えたことを特徴とす
    る請求項1、2または4に記載のべき乗剰余計算装置。
  10. 【請求項10】前記第1の処理手段及び第2の処理手段
    はそれらの処理の少なくとも一部を同時に実行すること
    を特徴とする請求項1に記載のべき乗剰余計算装置。
  11. 【請求項11】前記第1の処理手段及び第2の処理手段
    は前記基底の要素ごとに行う演算につき該要素の数に相
    当する演算の全部または一部を同時に実行することを特
    徴とする請求項1に記載のべき乗剰余計算装置。
  12. 【請求項12】前記第4の処理手段は、 前記第3の処理手段により求められた前記整数m’の剰
    余系表現を2進数表現に変換するための手段と、 この手段により得られたp*q未満の前記整数m’の値
    又はp*q以上の前記整数m’から所定回数p*qを減
    じることによって得たp*q未満の値を、m=C^d
    mod p*qとするための手段とを含むことを特徴と
    する請求項1に記載のべき乗剰余計算装置。
  13. 【請求項13】前記第1の基底の要素数と前記第2の基
    底の要素数とを同一にしたことを特徴とする請求項1に
    記載のべき乗剰余計算装置。
  14. 【請求項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. 【請求項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. 【請求項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の処理機能とを
    コンピュータに実現させるためのプログラム。
JP2001013565A 2001-01-22 2001-01-22 べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 Expired - Fee Related JP3785044B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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