説明

べき乗演算装置

【目的】 べき乗剰余演算AB modNにおいて、剰余逆元A-1modNにより、剰余乗算の最大回数ばかりでなく、平均回数についても削減を図り、高速なべき乗演算装置を提供する。
【構成】 0≦A≦N−1なる関係がある複数ビットで表現される整数AとN、及び複数ビットで表現される整数Bで、AB mod Nなるべき乗剰余演算を行う。A,B,Nは記憶手段AR,BR,NRに記憶される。整数Aの剰余逆元AI=A-1modNは記憶手段AIRに、また演算途中結果の整数Xは記憶手段XRにそれぞれ記憶される。選択手段SELはA,X,AIから一つの整数Yを選択する。剰余乗算手段SMはX×YmodNなる剰余乗算を行い、その出力で記憶手段XRを更新する。記憶手段BRのデータをコード変換する手段CCを設け、非0のビットの生起確率を削減する。制御手段CNTはBのコード変換したビットの0,1,−1の値に応じて選択手段SELを制御する。

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、0≦A≦N−1なる関係がある複数ビットで表現される整数AとN、ならびに複数ビットで表現される整数Bにおける、AB modNなるべき乗剰余演算を実行するとき有用な、べき乗演算装置に関する。さらに、本発明は、複数ビットで表現される0以外の実数Aと整数Bにより、AB なるべき乗演算を実行するとき有用な、べき乗演算装置に関する。
【0002】
【従来の技術】AB またはAB modNなどのべき乗演算は、基本的には乗算(積X×Yを求める)または剰余乗算(積X×YmodNを求める)を繰り返して実行され、べきの指数部Bの桁数が大きくなると、単純な乗算または剰余乗算の繰り返し回数の増大が高速化を妨げる要因となる。
(従来法1)〔参考資料;森田:「暗号技術と高速算法」,情報処理,Vol.34,No.3,pp.341,平成5年3月」
そこで、整数Bをbi からなるビットに分解し、AB modNのべき乗剰余演算を高速化する手法が提案された。手順は、図4に示す様に、bi に対応させて、X×XmodN,X×AmodNを組み合わせ、剰余乗算の実行回数をBの桁数程度に削減する。図5に示す様に、装置上では、整数A,B,Nのデータが入力され、それぞれの記憶手段AR,BR,NRに蓄積する。前記整数AまたはXから選択し整数Yを出力する選択手段SELと、演算途中結果の整数Xを蓄積する記憶手段XRと、これらの記憶手段XR,NRと選択手段SELの各々の出力から剰余乗算手段SMがX×YmodNを実行し、得られた出力で記憶手段XRのデータを更新する。選択手段SELをはじめ各部を制御する制御手段CNTは、記憶手段BRに蓄積されるbi の値に従い、図4におけるX×XmodNまたはX×AmodNなどの実行の順序を制御する。
【0003】RSA(Rivest−Shamir−Adleman)などの暗号分野で用いられるべき乗剰余演算AB modNは、0≦A,B≦N−1の関係があり、Nは512ビット程度が採用されることが多い。この様な場合、Bも512ビットとするとX×XmodNなる剰余乗算が511回、X×AmodNなる剰余乗算に最大511回、平均255回が必要となる。従って、剰余乗算が最大1022回、平均766回必要になる。一般には、指数部Bのビット数をmとするとき、最大2(m−1)回の剰余乗算、平均3(m−1)/2回の剰余乗算が必要となる。
【0004】以上、べき乗剰余演算AB modNを対象に説明したが、Bのビット数mと剰余乗算回数との関係は、べき乗演算AB における、Bのビット数mと乗算回数との関係にも同様のことが成り立つ。但し、べき乗演算AB は、法N内に途中結果が収まるべき乗剰余演算AB modNと異なり、途中結果の桁数が増大するので、仮数部と指数部を分ける近似的な表現が取られることが多い。
(従来法2)〔参考資料;Brickell,E.F.:“A Fast Modular Multiplication Algorithm withApplication to Two Key Cryptography,Advances in Cryptology−CRYPTO′82,pp.51−60,Plenum(1983)〕
剰余乗算の回数を少しでも減らそうとして開発されたのが従来法2である。手順を図6に示す。そこで、Bをbi からなるビット列対応に分解し、そのビットで1が立つ回数が半分を越えるとき、剰余逆元A-1modNを求め、繰り返しの演算では、半分より少ない筈のbi =0がある時とほぼ同じ回数だけ、XとA-1modNとの剰余乗算を実行する。逆に、そのビットで1が立つ回数が半分以下のときは従来法1と同じ処理を行う。
【0005】図7に示す装置上で図6の処理を実行する場合、整数A,B,Nが記憶手段A(AI)R,BR,NRに入力され、制御手段CNTにBの“1”の値を持つビット数の大小を判定させ、“1”が多い場合、Xの記憶手段XRに整数Aを設定したあと、装置外から剰余逆元A-1modN=AIを記憶手段A(AI)Rに読み込み、図4と同様の手順で実行する。装置に剰余逆元手段がある場合、内部的に記憶手段A(AI)RのデータをAからAI=A-1modNに書き換える。
【0006】Bが512ビットとすると、X×XmodNなる剰余乗算が511回、X×AmodNなる剰余乗算に最大255回が必要となる。従って、剰余乗算が最大766回が必要になる。一般には、指数部Bのビット数をmとするとき、最大3(m−1)/2回の剰余乗算が必要となる。同様に、べき乗演算AB を求める際、仮数部と指数部を分ける近似的な表現が必要であるが、上記剰余逆元A-1modNを1/Aに置き換えることで、同様の乗算回数の削減が可能である。
【0007】以上の様に、従来法では、べき乗剰余における剰余乗算の回数、べき乗における乗算の回数を削減するため、指数部をビット単位に行う手法、逆元(剰余逆元または逆数)を利用する手法が利用されて来た。
【0008】
【発明が解決しようとする課題】従来法2は最大の乗算回数を削減する効果が有った。しかし、最大の乗算回数は、Bにおけるmビットが(コインなげで表または裏を出すベルヌーイ試行と同様に)0又は1にランダムに分布している場合、1の生起確率は2項分布に従っているから、X×AmodNなる剰余乗算の所要回数は最大mであっても、平均はm/2近傍にある。この為、従来法2は従来法1に比べ改良の効果が少なく、逆に逆元を演算するのに要する時間が付加されるので有効ではなかった。
【0009】本発明の目的は、べき乗剰余演算AB modNにおいて、剰余逆元A-1modNにより、剰余乗算の最大回数ばかりでなく、平均回数も削減を図り、高速なべき乗演算装置を提供することにある。また、同様に、べき乗演算AB においては、逆数1/Aにより、乗算の最大回数ばかりでなく、平均回数も削減を図り、高速なべき乗演算装置を提供することにある。
【0010】
【課題を解決するための手段】上記目的を達成するために、本発明は、べき乗剰余AB modNまたはべき乗演算AB において、数Aに対する逆元であるA-1modNまたは1/Aを利用するとともに、指数部Bを基数4、つまりバイナリ−コード2ビット分の符号付冗長表現にコード変換する機構により、乗算に要する平均回数を削減できるべき乗演算装置を提供する。
【0011】
【作用】べき乗剰余演算AB modNまたはべき乗演算AB において、指数部Bがm個の0または1からなるビット列(bm-1 ,bm-2 ,bm-3 ,…b1 ,b0 )で表現されているとする。この時、降順にビット列を、0,1、または−1の何れかからなるb′i に関するビット列(b′m ,…b′i ,…b′1 ,b′0 )に変換する(方法は請求項7および8、説明は後述する)。
【0012】こうすることにより、b′2j+1とb′2jから成る2桁を単位に考えると、Bに関して非0の値が、従来は最大2回平均1回であったものが、最大1回平均3/4回となる。この結果、図4の従来法1では、bi =1でX×AmodNを実行させたのに対し、本変換後では、b′i =1のときX×AmodN、b′1 =−1のときX×A-1modNを実行することにより、Bに関して非0の値の減少が、全体の乗算回数の減少として反映できる。なお、ここで使われるA-1modNは初期状態において求め、記憶手段に蓄積する。
【0013】
【実施例】図2に、本発明のべき乗演算装置の動作フローチャートを示す(請求項5に対応)。べき乗剰余演算AB modNにおいて、予め、整数Aの剰余逆元A-1modNを求め、その値を整数AIと置く。変数Xは1に初期化し、変数iはBのビット数mに初期化し(ステップS1 )、以下の演算をm+1回繰り返す。
【0014】ステップS2 でi≧0のとき、XをX×XmodNで更新し(ステップS3 )、ステップS4 でb′i の1,0,−1を判定し、bi ′=1の時、XをX×AmodNで更新し(ステップS5 )、bi ′=−1の時、XをX×AImodNで更新する(ステップS6 )。なお、X=1の時は自乗してもX×XmodN=1なので、これを検出することにより剰余乗算を不要にできる。以下の議論では、この様な初期の剰余乗算はその回数に含めない。
【0015】以上のべき乗剰余演算AB modNの処理において、AI=A-1modNをAI=1/Aに、X×AmodNをX×Aに、X×AImodNをX×AIに置き換えることよりべき乗演算AB が実行できる(請求項6)。しかし、Aは0以外の実数とされる。m個の0または1からなるビット列(bm-1 ,bm-2 ,bm-3 ,…b1 ,b0)で表現されている指数部Bを、以下の様に、0、1、または−1からなるビット列(b′m ,b′m-1 ,b′m-2 ,…b′1 ,b′0 )を生成し、非0のビットの生起確率を削減する。j(jは0または正の整数で、mが偶数ならj≦m/2、mが奇数からj≦(m−1)/2)に関して、降順にビット列を以下の様に変換する(請求項7)。


しかし、必ずしも上記のテーブルを参照しなくても、b′i を必要の都度、b′2j+1←(−1) b2j+1 {(1−b2j+1)b2j2j-1+b2j+1(1−b2j)(1−b2j-1)},b′2j←(−1)b2j+1 {(1−b2j)b2j-1+b2j(1−b2j-1)}
の様に関数に基づき変換して使用することも可能である(請求項8)。
【0016】図1に、本発明のべき乗演算装置の実施例を示す。整数A,AI,B,Nは装置外部より得られるとし、各々対応する記憶手段AR,AIR,BR,NRに蓄積される。演算途中結果の整数Xを記憶する記憶手段XR及びX,AI,A,のいずれかを選択する選択手段SEL及び剰余乗算手段SM等が設けられる(請求項1)。
【0017】なお、コード変換手段CCは、必要に応じてb′i を生成し出力する。制御手段CNTはb′i の値により、選択手段SELの出力を切り替えることにより、X×YmodNを実行する剰余乗算手段SMにX×XmodN,X×AmodN,またはX×AImodNの処理を実行させる。なお、繰り返し演算に先立ち予め全てのb′i を生成し、それでBを更新することも可能である。
【0018】図3に、本発明のべき乗演算装置の第2の実施例を示す。整数A,B,Nは装置外部より得られるとし、各々対応する記憶手段AR,BR,NRに蓄積される。また、繰り返し演算に先立ち、A-1modNが剰余逆元手段SIにより生成され、整数AIとして記憶手段AIRに蓄積される。その他は図1と同様である(請求項2)。
【0019】以上の説明では、X×YmodNを実行する剰余乗算手段SMおよびA-1modNを実行する剰余逆元手段SIを備えることによりAB modNなるべき乗演算を実行する場合を示したが、X×YmodNを実行する剰余乗算手段SMをX×Yを実行する乗算手段に、A-1modNを実行する剰余逆元手段SIを1/Aを実行する除算手段に置き換え、Aを0以外の実数とすることによりAB なるべき乗演算を実行することが可能となる。なお、1/Aを実行する除算手段がべき乗演算装置外部に存する場合と(請求項3)、内蔵する場合がある(請求項4)。
【0020】
【発明の効果】以上の説明から明らかに、本発明によれば以下の様な効果が得られる。
(1)剰余乗算回数の比較に於て、 最大 平均 従来法1 2(m−1) 3(m−1)/2 従来法2 3(m−1)/2 3(m−1)/2以下の近傍 本発明 3(m−1)/2 11(m−1)/8であるから、平均的に約(m−1)/8回剰余乗算回数を削減できる。従って、約8%の処理速度改善効果がある。
(2)指数部Bを基数4符号付コードへ変換するには、隣接3ビットを参照することで、テーブルまたは関数を用いて容易に実行できる。このため、従来法2に利用される装置とほぼ同じ構成のまま、僅かな処理を付け加えることで高速化を達成できる。
【図面の簡単な説明】
【図1】請求項1の発明の実施例を示すブロック図。
【図2】図1及び図3の動作フローチャート。
【図3】請求項2の発明の実施例を示すブロック図。
【図4】従来の第1のべき乗演算装置の動作フローチャート。
【図5】図4の従来の第1のべき乗演算装置のブロック図。
【図6】従来の第2のべき乗演算装置の動作フローチャート。
【図7】図6の従来の第2のべき乗演算装置のブロック図。

【特許請求の範囲】
【請求項1】 0≦A≦N−1なる関係がある複数ビットで表現される整数AとN、ならびに複数ビットで表現される整数Bで、AB mod Nなるべき乗剰余演算を実行するべき乗演算装置において、前記整数A,B,Nを表現する複数ビットの入力データをそれぞれ記憶する記憶手段AR,BR,NRと、演算途中結果の整数Xを記憶する記憶手段XRと、前記整数Aの剰余逆元(整数)AI=A-1modNを記憶する記憶手段AIRと、前記記憶手段AR,XR,AIRから入力される前記整数A,X,AIから一つの整数Yを選択する選択手段と、前記記憶手段XR,NRから得られる整数X,N,ならびに前記選択手段が出力する整数Yを入力し、X×YmodNなる剰余乗算を行い、その出力を前記記憶手段XRに入力して、そのデータを更新させる剰余乗算手段と、を具備することを特徴とする、べき乗演算装置。
【請求項2】 請求項1記載のべき乗演算装置において、前記記憶手段AR,NRから前記整数AとNを入力して、A-1modNなる剰余逆元を求める剰余逆元手段を具備し、その出力を前記整数AIとし、これを前記記憶手段AIRに記憶することを特徴とする。
【請求項3】 複数ビットで表現される0以外の実数Aと整数Bで、AB なるべき乗演算を実行するべき乗演算装置において、前記数A,Bを表現する複数ビットの入力データをそれぞれ記憶する記憶手段AR,BRと、演算途中結果の数Xを記憶する記憶手段XRと、前記実数Aの逆数AI=1/Aを記憶する記憶手段AIRと、前記記憶手段AR,XR,AIRから入力される前記数A,X,AIから一つの数Yを選択する選択手段と、前記記憶手段XRから得られる数Xならびに前記選択手段が出力する数Yを入力し、X×Yなる積を求め、その積を前記記憶手段XRに入力して、そのデータを更新させる乗算手段と、を具備することを特徴とする、べき乗演算装置。
【請求項4】 請求項3記載のべき乗演算装置において、前記記憶手段ARから前記数Aを入力して、その逆数1/Aを求める除算手段を具備し、その出力を前記数AIとし、これを前記記憶手段AIRに記憶することを特徴とする。
【請求項5】 請求項1または2に記載のべき乗演算装置において、前記各手段を制御する制御手段を設け、各ビットb′i が0,1、または−1で表されるビット列(b′m ,…b′i,…b′1 ,b′0 )で前記整数Bを表現するとき、前記制御手段は、最初に前記整数X及びビット番号iをX=1,i=mに初期化させ、次に、前記制御手段は、前記選択手段を制御して前記Yとして前記Xを選択させ、その結果、前記剰余乗算手段はX×XmodNなる演算を実行し、その出力で前記記憶手段XRのデータを更新し、次に、前記制御手段は、b′i =1の時、前記選択手段を制御して前記Yとして前記整数Aを選択させ、その結果、前記剰余乗算手段はX×AmodNなる演算を実行し、その出力で前記記憶手段XRのデータを更新し、前記制御手段は、前記b′i =−1の時、前記選択手段を制御して、前記Yとして前記AIを選択させ、その結果、前記剰余乗算手段はX×AImodNなる演算を実行し、その出力で前記記憶手段XRのデータを更新し、次に、前記制御手段は、前記iをi−1で更新して同様の演算処理を繰返させ、i<0ならば演算処理を終了させ、その時の前記記憶手段XRのデータを前記AB modNなるべき乗剰余演算結果として出力させることを特徴とする。
【請求項6】 請求項3または4に記載のべき乗演算装置において、前記各手段を制御する制御手段を設け、各ビットb′i が0,1かまたは−1で表されるビット列(b′m ,…b′i,…b′1 ,b′0 )で前記整数Bを表現するとき、前記制御手段は、最初に前記数X及びビット番号iをX=1,i=mに初期化させ、次に、前記制御手段は、前記選択手段を制御して前記Yとして前記Xを選択させ、その結果、前記乗算手段はX×Xなる演算を実行し、その出力で前記記憶手段XRのデータを更新し、次に、前記制御手段は、前記b′i =1の時、前記選択手段を制御して前記Yとして前記数Aを選択させ、その結果、前記乗算手段はX×Aなる演算を実行し、その出力で前記記憶手段XRのデータを更新し、前記制御手段は、前記b′i =−1の時、前記選択手段を制御して、前記Yとして前記AIを選択させ、その結果、前記乗算手段はX×AIなる演算を実行し、その出力で前記記憶手段XRのデータを更新し、次に、前記制御手段は、前記iをi−1で更新して同様の演算処理を繰返させ、i<0ならば演算処理を終了させ、その時の前記記憶手段XRのデータを前記AB なるべき乗演算結果として出力させることを特徴とする。
【請求項7】 請求項5または6記載のべき乗演算装置において、(bm-1,…b1 ,b0 )なるm個の0または1からなるビット列で整数Bが表現されている時、前記の隣接するビット列(b2j+1,b2j,b2j-1)(jは0または正の整数で、mが偶数ならj≦m/2,mが奇数ならj≦(m−1)/2)から次の表に示す変換テーブルに従い、0,1、または−1からなるビット列(b′2j+1,b′2j)を大きいiから降順に生成するコード変換手段が設けられていることを特徴とする。


【請求項8】 請求項5または6記載のべき乗演算装置において、(bm-1,…b1 ,b0 )なるm個の0または1からなるビット列で整数Bが表現されている時、前記の隣接するビット列(b2j+1,b2j,b2j-1)(jは0または正の整数で、mが偶数ならj≦m/2,mが奇数ならj≦(m−1)/2)から、b′2j+1=(−1) b2j+1 {(1−b2j+1)b2j2j-1+b2j+1(1−b2j)(1−b2j-1)},b′2j=(−1)b2j+1 {(1−b2j)b2j-1+b2j(1−b2j-1)}
の変換を、前記b′i を使用する時点で、その都度行うコード変換手段が設けられていることを特徴とする。

【図1】
image rotate


【図2】
image rotate


【図3】
image rotate


【図4】
image rotate


【図5】
image rotate


【図6】
image rotate


【図7】
image rotate