JPH0749769A - べき乗演算装置 - Google Patents
べき乗演算装置Info
- Publication number
- JPH0749769A JPH0749769A JP5193496A JP19349693A JPH0749769A JP H0749769 A JPH0749769 A JP H0749769A JP 5193496 A JP5193496 A JP 5193496A JP 19349693 A JP19349693 A JP 19349693A JP H0749769 A JPH0749769 A JP H0749769A
- Authority
- JP
- Japan
- Prior art keywords
- storage means
- integer
- exponentiation
- output
- data
- 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
Abstract
(57)【要約】
【目的】 べき乗剰余演算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のビットの生起確率を削減する。制御手段C
NTはBのコード変換したビットの0,1,−1の値に
応じて選択手段SELを制御する。
逆元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のビットの生起確率を削減する。制御手段C
NTはBのコード変換したビットの0,1,−1の値に
応じて選択手段SELを制御する。
Description
【0001】
【産業上の利用分野】本発明は、0≦A≦N−1なる関
係がある複数ビットで表現される整数AとN、ならびに
複数ビットで表現される整数Bにおける、AB modN
なるべき乗剰余演算を実行するとき有用な、べき乗演算
装置に関する。さらに、本発明は、複数ビットで表現さ
れる0以外の実数Aと整数Bにより、AB なるべき乗演
算を実行するとき有用な、べき乗演算装置に関する。
係がある複数ビットで表現される整数AとN、ならびに
複数ビットで表現される整数Bにおける、AB modN
なるべき乗剰余演算を実行するとき有用な、べき乗演算
装置に関する。さらに、本発明は、複数ビットで表現さ
れる0以外の実数Aと整数Bにより、AB なるべき乗演
算を実行するとき有用な、べき乗演算装置に関する。
【0002】
【従来の技術】AB またはAB modNなどのべき乗演
算は、基本的には乗算(積X×Yを求める)または剰余
乗算(積X×YmodNを求める)を繰り返して実行さ
れ、べきの指数部Bの桁数が大きくなると、単純な乗算
または剰余乗算の繰り返し回数の増大が高速化を妨げる
要因となる。 (従来法1)〔参考資料;森田:「暗号技術と高速算
法」,情報処理,Vol.34,No.3,pp.34
1,平成5年3月」 そこで、整数Bをbi からなるビットに分解し、AB m
odNのべき乗剰余演算を高速化する手法が提案され
た。手順は、図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などの実行の順
序を制御する。
算は、基本的には乗算(積X×Yを求める)または剰余
乗算(積X×YmodNを求める)を繰り返して実行さ
れ、べきの指数部Bの桁数が大きくなると、単純な乗算
または剰余乗算の繰り返し回数の増大が高速化を妨げる
要因となる。 (従来法1)〔参考資料;森田:「暗号技術と高速算
法」,情報処理,Vol.34,No.3,pp.34
1,平成5年3月」 そこで、整数Bをbi からなるビットに分解し、AB m
odNのべき乗剰余演算を高速化する手法が提案され
た。手順は、図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−A
dleman)などの暗号分野で用いられるべき乗剰余
演算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回の剰
余乗算が必要となる。
dleman)などの暗号分野で用いられるべき乗剰余
演算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内に途中結果が収まるべき乗剰余演算A
B modNと異なり、途中結果の桁数が増大するので、
仮数部と指数部を分ける近似的な表現が取られることが
多い。 (従来法2)〔参考資料;Brickell,E.
F.:“A Fast Modular Multip
lication Algorithm withAp
plication to Two Key Cryp
tography,Advances in Cryp
tology−CRYPTO′82,pp.51−6
0,Plenum(1983)〕 剰余乗算の回数を少しでも減らそうとして開発されたの
が従来法2である。手順を図6に示す。そこで、Bをb
i からなるビット列対応に分解し、そのビットで1が立
つ回数が半分を越えるとき、剰余逆元A-1modNを求
め、繰り返しの演算では、半分より少ない筈のbi =0
がある時とほぼ同じ回数だけ、XとA-1modNとの剰
余乗算を実行する。逆に、そのビットで1が立つ回数が
半分以下のときは従来法1と同じ処理を行う。
に説明したが、Bのビット数mと剰余乗算回数との関係
は、べき乗演算AB における、Bのビット数mと乗算回
数との関係にも同様のことが成り立つ。但し、べき乗演
算AB は、法N内に途中結果が収まるべき乗剰余演算A
B modNと異なり、途中結果の桁数が増大するので、
仮数部と指数部を分ける近似的な表現が取られることが
多い。 (従来法2)〔参考資料;Brickell,E.
F.:“A Fast Modular Multip
lication Algorithm withAp
plication to Two Key Cryp
tography,Advances in Cryp
tology−CRYPTO′82,pp.51−6
0,Plenum(1983)〕 剰余乗算の回数を少しでも減らそうとして開発されたの
が従来法2である。手順を図6に示す。そこで、Bをb
i からなるビット列対応に分解し、そのビットで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に書き換える。
場合、整数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×Xmod
Nなる剰余乗算が511回、X×AmodNなる剰余乗
算に最大255回が必要となる。従って、剰余乗算が最
大766回が必要になる。一般には、指数部Bのビット
数をmとするとき、最大3(m−1)/2回の剰余乗算
が必要となる。同様に、べき乗演算AB を求める際、仮
数部と指数部を分ける近似的な表現が必要であるが、上
記剰余逆元A-1modNを1/Aに置き換えることで、
同様の乗算回数の削減が可能である。
Nなる剰余乗算が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に比べ改良の効果が少なく、逆に逆元を演
算するのに要する時間が付加されるので有効ではなかっ
た。
回数を削減する効果が有った。しかし、最大の乗算回数
は、Bにおけるmビットが(コインなげで表または裏を
出すベルヌーイ試行と同様に)0又は1にランダムに分
布している場合、1の生起確率は2項分布に従っている
から、X×AmodNなる剰余乗算の所要回数は最大m
であっても、平均はm/2近傍にある。この為、従来法
2は従来法1に比べ改良の効果が少なく、逆に逆元を演
算するのに要する時間が付加されるので有効ではなかっ
た。
【0009】本発明の目的は、べき乗剰余演算AB mo
dNにおいて、剰余逆元A-1modNにより、剰余乗算
の最大回数ばかりでなく、平均回数も削減を図り、高速
なべき乗演算装置を提供することにある。また、同様
に、べき乗演算AB においては、逆数1/Aにより、乗
算の最大回数ばかりでなく、平均回数も削減を図り、高
速なべき乗演算装置を提供することにある。
dNにおいて、剰余逆元A-1modNにより、剰余乗算
の最大回数ばかりでなく、平均回数も削減を図り、高速
なべき乗演算装置を提供することにある。また、同様
に、べき乗演算AB においては、逆数1/Aにより、乗
算の最大回数ばかりでなく、平均回数も削減を図り、高
速なべき乗演算装置を提供することにある。
【0010】
【課題を解決するための手段】上記目的を達成するため
に、本発明は、べき乗剰余AB modNまたはべき乗演
算AB において、数Aに対する逆元であるA-1modN
または1/Aを利用するとともに、指数部Bを基数4、
つまりバイナリ−コード2ビット分の符号付冗長表現に
コード変換する機構により、乗算に要する平均回数を削
減できるべき乗演算装置を提供する。
に、本発明は、べき乗剰余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、説明は後述する)。
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は初期状
態において求め、記憶手段に蓄積する。
ら成る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-1m
odNを求め、その値を整数AIと置く。変数Xは1に
初期化し、変数iはBのビット数mに初期化し(ステッ
プS1 )、以下の演算をm+1回繰り返す。
ーチャートを示す(請求項5に対応)。べき乗剰余演算
AB modNにおいて、予め、整数Aの剰余逆元A-1m
odNを求め、その値を整数AIと置く。変数Xは1に
初期化し、変数iはBのビット数mに初期化し(ステッ
プS1 )、以下の演算をm+1回繰り返す。
【0014】ステップS2 でi≧0のとき、XをX×X
modNで更新し(ステップS3 )、ステップS4 で
b′i の1,0,−1を判定し、bi ′=1の時、Xを
X×AmodNで更新し(ステップS5 )、bi ′=−
1の時、XをX×AImodNで更新する(ステップS
6 )。なお、X=1の時は自乗してもX×XmodN=
1なので、これを検出することにより剰余乗算を不要に
できる。以下の議論では、この様な初期の剰余乗算はそ
の回数に含めない。
modNで更新し(ステップS3 )、ステップS4 で
b′i の1,0,−1を判定し、bi ′=1の時、Xを
X×AmodNで更新し(ステップS5 )、bi ′=−
1の時、XをX×AImodNで更新する(ステップS
6 )。なお、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)b2jb2j-1
+b2j+1(1−b2j)(1−b2j-1)}, b′2j←(−1)b2j+1 {(1−b2j)b2j-1+b
2j(1−b2j-1)} の様に関数に基づき変換して使用することも可能である
(請求項8)。
において、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)b2jb2j-1
+b2j+1(1−b2j)(1−b2j-1)}, b′2j←(−1)b2j+1 {(1−b2j)b2j-1+b
2j(1−b2j-1)} の様に関数に基づき変換して使用することも可能である
(請求項8)。
【0016】図1に、本発明のべき乗演算装置の実施例
を示す。整数A,AI,B,Nは装置外部より得られる
とし、各々対応する記憶手段AR,AIR,BR,NR
に蓄積される。演算途中結果の整数Xを記憶する記憶手
段XR及びX,AI,A,のいずれかを選択する選択手
段SEL及び剰余乗算手段SM等が設けられる(請求項
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を更新することも可能
である。
て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)。
実施例を示す。整数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)。
る剰余乗算手段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(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のべき乗演算装置のブロック
図。
図。
Claims (8)
- 【請求項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×Ym
odNなる剰余乗算を行い、その出力を前記記憶手段X
Rに入力して、そのデータを更新させる剰余乗算手段
と、を具備することを特徴とする、 べき乗演算装置。 - 【請求項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を記憶する記憶手段AI
Rと、 前記記憶手段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 mo
dNなるべき乗剰余演算結果として出力させることを特
徴とする。 - 【請求項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)b2jb2j-1
+b2j+1(1−b2j)(1−b2j-1)}, b′2j=(−1)b2j+1 {(1−b2j)b2j-1+b
2j(1−b2j-1)} の変換を、前記b′i を使用する時点で、その都度行う
コード変換手段が設けられていることを特徴とする。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP19349693A JP3332270B2 (ja) | 1993-08-04 | 1993-08-04 | べき乗演算装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP19349693A JP3332270B2 (ja) | 1993-08-04 | 1993-08-04 | べき乗演算装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0749769A true JPH0749769A (ja) | 1995-02-21 |
| JP3332270B2 JP3332270B2 (ja) | 2002-10-07 |
Family
ID=16309016
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP19349693A Expired - Fee Related JP3332270B2 (ja) | 1993-08-04 | 1993-08-04 | べき乗演算装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3332270B2 (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2000330470A (ja) * | 1999-03-15 | 2000-11-30 | Matsushita Electric Ind Co Ltd | べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 |
| US6567832B1 (en) | 1999-03-15 | 2003-05-20 | Matsushita Electric Industrial Co., Ltd. | Device, method, and storage medium for exponentiation and elliptic curve exponentiation |
| JP2009008993A (ja) * | 2007-06-29 | 2009-01-15 | Nec Electronics Corp | べき乗剰余演算器及びその制御方法 |
-
1993
- 1993-08-04 JP JP19349693A patent/JP3332270B2/ja not_active Expired - Fee Related
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2000330470A (ja) * | 1999-03-15 | 2000-11-30 | Matsushita Electric Ind Co Ltd | べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 |
| US6567832B1 (en) | 1999-03-15 | 2003-05-20 | Matsushita Electric Industrial Co., Ltd. | Device, method, and storage medium for exponentiation and elliptic curve exponentiation |
| JP2009008993A (ja) * | 2007-06-29 | 2009-01-15 | Nec Electronics Corp | べき乗剰余演算器及びその制御方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3332270B2 (ja) | 2002-10-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Hasan et al. | A modified Massey-Omura parallel multiplier for a class of finite fields | |
| US6920473B2 (en) | Method and apparatus for modular multiplying and calculating unit for modular multiplying | |
| JP3784156B2 (ja) | モジュラ掛け算方法 | |
| EP0917047B1 (en) | Apparatus for modular inversion for information security | |
| JP2009003925A (ja) | ランダム系列の反復周期の拡張 | |
| KR100591761B1 (ko) | 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법 | |
| JP2004326112A (ja) | マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ | |
| US6567832B1 (en) | Device, method, and storage medium for exponentiation and elliptic curve exponentiation | |
| JP3532860B2 (ja) | 剰余系表現を利用した演算装置及び方法及びプログラム | |
| CN114936350A (zh) | 一种基于gpu快速数论转换的全同态加密门自举方法 | |
| US6763366B2 (en) | Method for calculating arithmetic inverse over finite fields for use in cryptography | |
| US7831650B2 (en) | Method for modular multiplication | |
| US6662201B1 (en) | Modular arithmetic apparatus and method having high-speed base conversion function | |
| JP2004258141A (ja) | モンゴメリ乗算剰余の多倍長演算のための演算装置 | |
| US6480870B1 (en) | Random number generator using lehmer algorithm | |
| JP3332270B2 (ja) | べき乗演算装置 | |
| JP3953253B2 (ja) | 暗号生成装置、暗号生成プログラムを使用する電子機器、記憶媒体、暗号文復号装置 | |
| Walter | Still faster modular multiplication | |
| KR100670780B1 (ko) | 유한체 GF(2^m)에서의 하이브리드 곱셈 연산 장치및 연산 방법 | |
| US7068785B2 (en) | Table driven method for calculating arithmetic inverse for use in cryptography | |
| KR100257123B1 (ko) | 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법 | |
| JP2003084667A (ja) | 同一基底に対する複数の冪乗剰余演算を行う方法と装置並びにプログラム | |
| JP4541485B2 (ja) | べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 | |
| JP2777265B2 (ja) | 高基数開平演算装置 | |
| JP3136709B2 (ja) | べき積演算装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |