JPH10307710A - 剰余系演算方法及びその装置 - Google Patents
剰余系演算方法及びその装置Info
- Publication number
- JPH10307710A JPH10307710A JP5199298A JP5199298A JPH10307710A JP H10307710 A JPH10307710 A JP H10307710A JP 5199298 A JP5199298 A JP 5199298A JP 5199298 A JP5199298 A JP 5199298A JP H10307710 A JPH10307710 A JP H10307710A
- Authority
- JP
- Japan
- Prior art keywords
- divisor
- remainder
- mod
- dividend
- digits
- 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.)
- Pending
Links
Landscapes
- Complex Calculations (AREA)
Abstract
(57)【要約】
【課題】 法のビット数より仮数のビット数が大きい場
合でも演算可能な剰余系演算方法及びその装置を提供す
ること。 【解決手段】 法(除数)cをそのレジスタの最上位ビ
ットが“1”となるまでビットシフトし、仮数(被除
数)aをそのレジスタの最上位バイトに“1”が含まれ
るまでバイトシフトした上で剰余演算を、法と仮数との
ビットシフト量の差に対応する位まで行う。
合でも演算可能な剰余系演算方法及びその装置を提供す
ること。 【解決手段】 法(除数)cをそのレジスタの最上位ビ
ットが“1”となるまでビットシフトし、仮数(被除
数)aをそのレジスタの最上位バイトに“1”が含まれ
るまでバイトシフトした上で剰余演算を、法と仮数との
ビットシフト量の差に対応する位まで行う。
Description
【0001】
【発明の属する技術分野】本発明は、RSA暗号等の公
開鍵暗号の基本演算及びその鍵生成に必要な剰余系の演
算を実行する方法及びその装置に関するものである。
開鍵暗号の基本演算及びその鍵生成に必要な剰余系の演
算を実行する方法及びその装置に関するものである。
【0002】
【従来の技術】RSA暗号等の公開鍵暗号の基本演算及
びその鍵生成には、羃乗剰余演算 abmod c 、乗剰余演
算 a×b mod c 、剰余演算a mod c 等の剰余系の演算が
必要となる。さらに、公開鍵暗号を利用した応用プロト
コルでは、前記剰余系の演算を組み合わせて利用する場
合が多い。そのため、ある剰余系の演算結果を次の演算
に用いることも頻繁にあり、発明者らは特願平6−28
6853号(特開平8−147266号)において冗長
2進演算を用いた演算方法及びその装置を提案した。
びその鍵生成には、羃乗剰余演算 abmod c 、乗剰余演
算 a×b mod c 、剰余演算a mod c 等の剰余系の演算が
必要となる。さらに、公開鍵暗号を利用した応用プロト
コルでは、前記剰余系の演算を組み合わせて利用する場
合が多い。そのため、ある剰余系の演算結果を次の演算
に用いることも頻繁にあり、発明者らは特願平6−28
6853号(特開平8−147266号)において冗長
2進演算を用いた演算方法及びその装置を提案した。
【0003】
【発明が解決しようとする課題】しかしながら、前述し
た演算方法及び装置では、羃乗剰余演算 ab mod c 、剰
余演算a mod c において、|a|>|c|(以降、|k
|をkのビット数、羃乗剰余演算 ab mod c のaを仮数
(被除数)、bを羃指数、cを法(除数)と呼ぶことに
する。)の場合、演算ができないという問題があった。
た演算方法及び装置では、羃乗剰余演算 ab mod c 、剰
余演算a mod c において、|a|>|c|(以降、|k
|をkのビット数、羃乗剰余演算 ab mod c のaを仮数
(被除数)、bを羃指数、cを法(除数)と呼ぶことに
する。)の場合、演算ができないという問題があった。
【0004】本来、冗長2進演算法は、除算時の除数の
2進数表現における最上位ビットが“1”でなければな
らないため、設計した除算器の除数のビット数と計算し
ようするビット数とが一致していなければならないとい
う制限があった。
2進数表現における最上位ビットが“1”でなければな
らないため、設計した除算器の除数のビット数と計算し
ようするビット数とが一致していなければならないとい
う制限があった。
【0005】そこで、特願平6−286853号では、
(1)除数(法)の最上位ビットが“1”になるまで、
除数全体を上位にシフトする、(2)被除数(仮数)も
(1)のシフト分だけ全体を上位にシフトする、(3)
従来の冗長2進演算法を用いて演算を行う、(4)演算
結果を逆補正するため(1)で行った分下位にシフトす
る、ことにより法のビット数の制限をなくすようになし
た。
(1)除数(法)の最上位ビットが“1”になるまで、
除数全体を上位にシフトする、(2)被除数(仮数)も
(1)のシフト分だけ全体を上位にシフトする、(3)
従来の冗長2進演算法を用いて演算を行う、(4)演算
結果を逆補正するため(1)で行った分下位にシフトす
る、ことにより法のビット数の制限をなくすようになし
た。
【0006】ところが、(2)において、仮数も法と同
じビット数、上位にシフトすることから、法のビット数
より仮数のビット数が大きい場合、桁あふれが生じてし
まうため、正確な演算ができなくなるという問題があっ
た。
じビット数、上位にシフトすることから、法のビット数
より仮数のビット数が大きい場合、桁あふれが生じてし
まうため、正確な演算ができなくなるという問題があっ
た。
【0007】このような条件の場合のもとで、先願をL
SIに応用した場合を考えると、予め仮数が法より小さ
くなっている場合は問題ないが、さまざまな応用プロト
コルに適用しようとした場合、不便である。乗剰余演算
a×b mod c の例では、通常、a<c,b<cである
が、一般的にa、bの積a×bはcよりも大きくなって
しまい、この演算はできない。
SIに応用した場合を考えると、予め仮数が法より小さ
くなっている場合は問題ないが、さまざまな応用プロト
コルに適用しようとした場合、不便である。乗剰余演算
a×b mod c の例では、通常、a<c,b<cである
が、一般的にa、bの積a×bはcよりも大きくなって
しまい、この演算はできない。
【0008】本発明の目的は、冗長2進演算を用いた剰
余系の演算において、法のビット数より仮数のビット数
が大きい場合であっても演算可能な方法及びその装置を
提供することにある。
余系の演算において、法のビット数より仮数のビット数
が大きい場合であっても演算可能な方法及びその装置を
提供することにある。
【0009】
【課題を解決するための手段】本発明では、前記課題を
解決するため、h進数の被除数をa、除数をcとした時
に剰余演算a mod c を行う剰余系演算方法及びその装置
において、被除数a及び除数cをレジスタに格納し、除
数cの桁数jが格納可能な桁数i桁未満の時、除数c全
体を(i−j)桁シフトし、hの−(i−j)乗の位ま
で剰余演算a mod c を行うことを特徴とする。
解決するため、h進数の被除数をa、除数をcとした時
に剰余演算a mod c を行う剰余系演算方法及びその装置
において、被除数a及び除数cをレジスタに格納し、除
数cの桁数jが格納可能な桁数i桁未満の時、除数c全
体を(i−j)桁シフトし、hの−(i−j)乗の位ま
で剰余演算a mod c を行うことを特徴とする。
【0010】また、本発明では、h進数の被除数をa、
除数をcとした時に剰余演算a modc を行う剰余系演算
方法及びその装置において、被除数a及び除数cをレジ
スタに格納し、除数cの桁数jが格納可能な桁数i桁未
満の時、除数c全体を(i−j)桁シフトし、被除数a
の桁数lが格納可能な桁数k(≧i)桁未満の時、被除
数a全体を(k−l)桁シフトし、hの{(k−l)−
(i−j)}乗の位まで剰余演算a mod c を行い、得ら
れた剰余を(k−l)桁、逆にシフトし、これを剰余演
算結果とすることを特徴とする。
除数をcとした時に剰余演算a modc を行う剰余系演算
方法及びその装置において、被除数a及び除数cをレジ
スタに格納し、除数cの桁数jが格納可能な桁数i桁未
満の時、除数c全体を(i−j)桁シフトし、被除数a
の桁数lが格納可能な桁数k(≧i)桁未満の時、被除
数a全体を(k−l)桁シフトし、hの{(k−l)−
(i−j)}乗の位まで剰余演算a mod c を行い、得ら
れた剰余を(k−l)桁、逆にシフトし、これを剰余演
算結果とすることを特徴とする。
【0011】本発明によれば、除数及び被除数の桁数が
格納可能な桁数以下であれば、その大小に拘らず演算が
可能となり、冗長2進演算法の高速演算の長所を生か
し、かつ冗長2進演算法の短所である演算ビット数の制
限をなくすことができる。
格納可能な桁数以下であれば、その大小に拘らず演算が
可能となり、冗長2進演算法の高速演算の長所を生か
し、かつ冗長2進演算法の短所である演算ビット数の制
限をなくすことができる。
【0012】また、前述した剰余演算方法及びその装置
を応用することにより、乗剰余演算、羃乗剰余演算を同
様に行うことができる。
を応用することにより、乗剰余演算、羃乗剰余演算を同
様に行うことができる。
【0013】
【発明の実施の形態】図1は本発明の実施の形態の一例
を示す装置構成図である。図中、10は冗長2進演算
部、20はパラメタシフト部、30はパラメタ保存用汎
用レジスタ部であり、これらが本発明を適用した剰余系
演算装置100を構成する。この剰余系演算装置100
を実現する最適な方法は1チップのLSIである。
を示す装置構成図である。図中、10は冗長2進演算
部、20はパラメタシフト部、30はパラメタ保存用汎
用レジスタ部であり、これらが本発明を適用した剰余系
演算装置100を構成する。この剰余系演算装置100
を実現する最適な方法は1チップのLSIである。
【0014】冗長2進演算部10は冗長2進演算を実行
する。冗長2進演算部10のパラメタ入出力部分に本発
明のパラメタシフト部20が接続される。また、パラメ
タ保存用汎用レジスタ部30はパラメタシフト部20に
パラメタを保存することを目的としたレジスタであり、
剰余系演算装置100の内部のバスと外部バスとのデー
タ入出力インタフェースを司る。
する。冗長2進演算部10のパラメタ入出力部分に本発
明のパラメタシフト部20が接続される。また、パラメ
タ保存用汎用レジスタ部30はパラメタシフト部20に
パラメタを保存することを目的としたレジスタであり、
剰余系演算装置100の内部のバスと外部バスとのデー
タ入出力インタフェースを司る。
【0015】
【a mod c 】最も簡単な例として、剰余演算a mod c を
例に挙げて説明する。
例に挙げて説明する。
【0016】除算時の制限から、冗長2進演算器の設計
時の法cのレジスタのビット長kに等しいビットでなれ
ば演算できない。言い換えれば、法cのレジスタの最上
位ビットは必ず“1”でなければ演算ができない。
時の法cのレジスタのビット長kに等しいビットでなれ
ば演算できない。言い換えれば、法cのレジスタの最上
位ビットは必ず“1”でなければ演算ができない。
【0017】そこで、以前、法cを格納するレジスタと
等しいビット数の法に変換するために、 a mod c ={(a×2i ) mod(c×2i )}/2i ……(1) を利用して、c×2i がkになるようにすることによ
り、前記の制限を補うようになした。
等しいビット数の法に変換するために、 a mod c ={(a×2i ) mod(c×2i )}/2i ……(1) を利用して、c×2i がkになるようにすることによ
り、前記の制限を補うようになした。
【0018】汎用レジスタ構成にする場合、同じビット
長にするのが普通である。
長にするのが普通である。
【0019】また、式(1) の右辺の剰余演算は、a>c
である時に演算する意味があるが、式(1) の左辺からわ
かるように、仮数も2i 倍されるので、仮数レジスタを
法レジスタと同じビット数にしたとすると、実際に式
(1) が利用できるのは、 a>c ……(2) |a|=|c| ……(3) が同時に成り立つ時のみであり、かなり限定された条件
となる。
である時に演算する意味があるが、式(1) の左辺からわ
かるように、仮数も2i 倍されるので、仮数レジスタを
法レジスタと同じビット数にしたとすると、実際に式
(1) が利用できるのは、 a>c ……(2) |a|=|c| ……(3) が同時に成り立つ時のみであり、かなり限定された条件
となる。
【0020】そこで、本発明では、条件(3) の代わり
に、a,cはそれぞれのレジスタのビット長以内であれ
ば、 |a|≧|c| ……(4) であっても演算ができるようにする。
に、a,cはそれぞれのレジスタのビット長以内であれ
ば、 |a|≧|c| ……(4) であっても演算ができるようにする。
【0021】解り易くするために、10進数を利用した
場合の例を図2に示す。
場合の例を図2に示す。
【0022】通常の除算は、図2(a) のように表され
る。ここでは、 243÷13=18余り9 の計算を行っている。
る。ここでは、 243÷13=18余り9 の計算を行っている。
【0023】ここで、除数及び被除数のレジスタは10
進数で4桁であるとする。この時、除数レジスタの最上
位桁が0以外でなければならないとする。この条件で演
算する方法を2つ挙げる。
進数で4桁であるとする。この時、除数レジスタの最上
位桁が0以外でなければならないとする。この条件で演
算する方法を2つ挙げる。
【0024】・方法1(図2(b) ) ステップ1:除数を2桁分桁上げ(上位にシフト)する
ことにより、最上位桁が0でなくなる。 13→1300(201) ステップ2:243÷1300を計算することになる
が、ステップ1で桁上げした分に対応する10の−2乗
の位(小数点第2位)まで計算をする。 243÷1300=0.18余り9(202) ステップ3:余り9が求められる(203)。
ことにより、最上位桁が0でなくなる。 13→1300(201) ステップ2:243÷1300を計算することになる
が、ステップ1で桁上げした分に対応する10の−2乗
の位(小数点第2位)まで計算をする。 243÷1300=0.18余り9(202) ステップ3:余り9が求められる(203)。
【0025】・方法2(図2(c) ) ステップ1:除数を2桁分桁上げ(上位にシフト)する
ことにより、最上位桁が0でなくなる。 13→1300(211) ステップ2:除数レジスタと同様に最上位桁が0以外に
なるように被除数を1桁分桁上げ(上位にシフト)する
ことにより、最上位桁が0でなくなる。 243→2430(212) ステップ3:2430÷1300を計算することになる
が、ステップ1及びステップ2で桁上げした分の差に対
応する10の−1乗の位(小数点第1位)まで計算をす
る。 2430÷1300=1.8余り90(213) ステップ4:ステップ2で桁上げした分の1桁、余りを
下位にシフトする。 90→9(214)。
ことにより、最上位桁が0でなくなる。 13→1300(211) ステップ2:除数レジスタと同様に最上位桁が0以外に
なるように被除数を1桁分桁上げ(上位にシフト)する
ことにより、最上位桁が0でなくなる。 243→2430(212) ステップ3:2430÷1300を計算することになる
が、ステップ1及びステップ2で桁上げした分の差に対
応する10の−1乗の位(小数点第1位)まで計算をす
る。 2430÷1300=1.8余り90(213) ステップ4:ステップ2で桁上げした分の1桁、余りを
下位にシフトする。 90→9(214)。
【0026】方法1と方法2とでは、方法1の方がステ
ップ数が少ない。一方、方法1のステップ2と方法2の
ステップ3を比較すると、除算回数は、方法2の方が少
ない。従って、どちらが高速に演算を実行することがで
きるかは、回路の構成方法に依存する。
ップ数が少ない。一方、方法1のステップ2と方法2の
ステップ3を比較すると、除算回数は、方法2の方が少
ない。従って、どちらが高速に演算を実行することがで
きるかは、回路の構成方法に依存する。
【0027】一般的には、データバス幅の桁シフト(複
数桁)と除算1回(1桁単位)が同じクロックを要する
ので、桁シフト(方法2)の方が効率が良い。
数桁)と除算1回(1桁単位)が同じクロックを要する
ので、桁シフト(方法2)の方が効率が良い。
【0028】これらの方法を2進数に拡張すれば、冗長
2進数に適用することができる。その結果、|a|≧|
c|であっても演算ができるようにすることができる。
2進数に適用することができる。その結果、|a|≧|
c|であっても演算ができるようにすることができる。
【0029】なお、図2(c) に示した方法2の場合にお
いて、除数の桁上げ分が被除数の桁上げ分より小さい時
は、一の位より上の位(十の位、百の位、……)までで
計算を止めることになる。
いて、除数の桁上げ分が被除数の桁上げ分より小さい時
は、一の位より上の位(十の位、百の位、……)までで
計算を止めることになる。
【0030】図3は図1中のパラメタシフト部20の具
体的構成の一例、ここでは図2(c)で説明した方法2に
従う演算を実行する構成を示すもので、図中、21は除
数用左ビットシフト部、22は被除数用左ビットシフト
部、23は除数ビットシフト量記憶部、24は被除数ビ
ットシフト量記憶部、25は除算回数制御部、26は剰
余用右ビットシフト部である。
体的構成の一例、ここでは図2(c)で説明した方法2に
従う演算を実行する構成を示すもので、図中、21は除
数用左ビットシフト部、22は被除数用左ビットシフト
部、23は除数ビットシフト量記憶部、24は被除数ビ
ットシフト量記憶部、25は除算回数制御部、26は剰
余用右ビットシフト部である。
【0031】以下、a mod c =rの演算を例にとって動
作を説明するが、図2(c) 中の具体的な値も併せて示
す。
作を説明するが、図2(c) 中の具体的な値も併せて示
す。
【0032】まず、除数用左ビットシフト部21は、除
数(法)cをその最上位ビットが“1”になるまで上位
(左方向)にシフトする。この時のシフト量をm(図2
(c) では2桁)とすると、除数(法)cは2m 倍、即ち
c×2m (301)となり、これが冗長2進演算部10
に取り込まれる。また、シフト量mは除数ビットシフト
量記憶部23に記憶される。
数(法)cをその最上位ビットが“1”になるまで上位
(左方向)にシフトする。この時のシフト量をm(図2
(c) では2桁)とすると、除数(法)cは2m 倍、即ち
c×2m (301)となり、これが冗長2進演算部10
に取り込まれる。また、シフト量mは除数ビットシフト
量記憶部23に記憶される。
【0033】また、被除数用左ビットシフト部22も、
被除数(仮数)aを上位(左方向)にシフトするが、除
算の回数を節約するためであり、被除数の場合、除数と
異なり、必ずしも最上位ビットが“1”となるまでシフ
トする必要はない。この時のシフト量をn(図2(c) で
は1桁)とすると、被除数(仮数)aは2n 倍、即ちa
×2n (302)となり、これが冗長2進演算部10に
取り込まれる。また、シフト量nは被除数ビットシフト
量記憶部24に記憶される。
被除数(仮数)aを上位(左方向)にシフトするが、除
算の回数を節約するためであり、被除数の場合、除数と
異なり、必ずしも最上位ビットが“1”となるまでシフ
トする必要はない。この時のシフト量をn(図2(c) で
は1桁)とすると、被除数(仮数)aは2n 倍、即ちa
×2n (302)となり、これが冗長2進演算部10に
取り込まれる。また、シフト量nは被除数ビットシフト
量記憶部24に記憶される。
【0034】次に、冗長2進演算部10にて従来の冗長
2進演算法を用いた除算(剰余演算)が行われるが、こ
の時、除算回数制御部25が2の(n−m)乗の位(図
2(c) では10の−1乗の位であるから小数点第1位)
まで除算を行うよう制御する。
2進演算法を用いた除算(剰余演算)が行われるが、こ
の時、除算回数制御部25が2の(n−m)乗の位(図
2(c) では10の−1乗の位であるから小数点第1位)
まで除算を行うよう制御する。
【0035】前述した除算の結果、冗長2進演算部10
から剰余(余り)が出力されるが、この剰余は求める剰
余rの2n 倍(図2(c) では1桁分)、即ちr×2
n (303)(図2(c) では「90」)である。そこ
で、剰余用右ビットシフト部26では、被除数ビットシ
フト量記憶部24に記憶されたシフト量nをもとに、得
られた剰余をnビット(図2(c) では1桁分)だけ、下
位(右方向)にシフトする。
から剰余(余り)が出力されるが、この剰余は求める剰
余rの2n 倍(図2(c) では1桁分)、即ちr×2
n (303)(図2(c) では「90」)である。そこ
で、剰余用右ビットシフト部26では、被除数ビットシ
フト量記憶部24に記憶されたシフト量nをもとに、得
られた剰余をnビット(図2(c) では1桁分)だけ、下
位(右方向)にシフトする。
【0036】このようにして得られた剰余r(304)
(図2(c) では「9」)は、パラメタ保存用汎用レジス
タ部103に出力される。
(図2(c) では「9」)は、パラメタ保存用汎用レジス
タ部103に出力される。
【0037】なお、被除数用左ビットシフト部22及び
剰余用右ビットシフト部26におけるシフト動作を停止
すれば、図2(b) で説明した方法1に従う演算も同様に
実行できる。
剰余用右ビットシフト部26におけるシフト動作を停止
すれば、図2(b) で説明した方法1に従う演算も同様に
実行できる。
【0038】
【 a×b mod c 】次に、乗剰余演算 a×b mod c を説明
する。乗剰余演算は、 a<c,b<c ……(5) の時は、基本的な冗長2進演算器を用いることができ
る。しかし、 |a×b|<|c| ……(6) の場合は剰余演算を直接演算することは不可能である。
する。乗剰余演算は、 a<c,b<c ……(5) の時は、基本的な冗長2進演算器を用いることができ
る。しかし、 |a×b|<|c| ……(6) の場合は剰余演算を直接演算することは不可能である。
【0039】そこで、次に示すステップを行い、実行す
る。
る。
【0040】ステップ1:a,cを入力し、剰余演算a
mod c と同様にして、仮数aが法以下のa´になるよう
にする。 ステップ2:bを入力し、剰余演算b mod c と同様にし
て、仮数bが法以下のb´になるようにする。 ステップ3:乗剰余演算a'×b' mod cの演算を行う。即
ち、 (a×b) mod c={(a mod c)×(b mod c)} mod c =(a'×b') mod c が成り立つ。
mod c と同様にして、仮数aが法以下のa´になるよう
にする。 ステップ2:bを入力し、剰余演算b mod c と同様にし
て、仮数bが法以下のb´になるようにする。 ステップ3:乗剰余演算a'×b' mod cの演算を行う。即
ち、 (a×b) mod c={(a mod c)×(b mod c)} mod c =(a'×b') mod c が成り立つ。
【0041】以上によりレジスタに格納可能なビット数
以下であれば、それぞれのパラメタの大小に関わらず乗
剰余演算が可能になる。
以下であれば、それぞれのパラメタの大小に関わらず乗
剰余演算が可能になる。
【0042】
【 ax mod c 】次に、羃乗剰余演算 ax mod c を説明す
る。羃乗剰余演算は、冗長2進演算器で羃乗剰余演算を
演算するために、乗剰余演算 a×b mod c の繰り返しで
実現している。
る。羃乗剰余演算は、冗長2進演算器で羃乗剰余演算を
演算するために、乗剰余演算 a×b mod c の繰り返しで
実現している。
【0043】従って、乗剰余演算に帰着することができ
る。
る。
【0044】
【2進演算への適用】2進数へ適用した時の具体例を図
4に示す。
4に示す。
【0045】法cのレジスタの最上位ビットまでcをビ
ットシフトし、c´とする(図4では12ビットシフト
している:401)。次に、仮数aのレジスタの最上位
バイトに1が含まれるまでaをバイトシフトし、a´と
する(図4では1バイトシフトしている:402)。こ
うすることにより、冗長2進演算方式を適用することが
できるようになる。
ットシフトし、c´とする(図4では12ビットシフト
している:401)。次に、仮数aのレジスタの最上位
バイトに1が含まれるまでaをバイトシフトし、a´と
する(図4では1バイトシフトしている:402)。こ
うすることにより、冗長2進演算方式を適用することが
できるようになる。
【0046】次に、除算を開始する。但し、除算の終了
ビットは、法と仮数とのビットシフト量の差(図4の4
03:4ビット)に対応する位である。答え、即ち剰余
は図4の404となる。
ビットは、法と仮数とのビットシフト量の差(図4の4
03:4ビット)に対応する位である。答え、即ち剰余
は図4の404となる。
【0047】
【発明の効果】以上説明したように、本発明によれば、
冗長2進演算法の高速演算の長所を生かし、かつ冗長2
進演算法の短所である演算ビット数の制限をなくすこと
ができる。
冗長2進演算法の高速演算の長所を生かし、かつ冗長2
進演算法の短所である演算ビット数の制限をなくすこと
ができる。
【図1】本発明の実施の形態の一例を示す装置構成図
【図2】本発明による剰余演算を10進数に適用した場
合の演算例の説明図
合の演算例の説明図
【図3】図1中のパラメタシフト部の具体的構成の一例
を示す図
を示す図
【図4】本発明による剰余演算を冗長2進数に適用した
場合の演算例の説明図
場合の演算例の説明図
100…剰余系演算装置、10…冗長2進演算部、20
…パラメタシフト部、30…パラメタ保存用汎用レジス
タ部、21…除数用左ビットシフト部、22…被除数用
左ビットシフト部、23…除数ビットシフト量記憶部、
24…被除数ビットシフト量記憶部、25…除算回数制
御部、26…剰余用右ビットシフト部。
…パラメタシフト部、30…パラメタ保存用汎用レジス
タ部、21…除数用左ビットシフト部、22…被除数用
左ビットシフト部、23…除数ビットシフト量記憶部、
24…被除数ビットシフト量記憶部、25…除算回数制
御部、26…剰余用右ビットシフト部。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 大山 勝一 東京都渋谷区桜丘町20番1号 エヌティテ ィエレクトロニクス株式会社内
Claims (10)
- 【請求項1】 h進数の被除数をa、除数をcとした時
に剰余演算a mod c を行う剰余系演算方法において、 被除数a及び除数cをレジスタに格納し、 除数cの桁数jが格納可能な桁数i桁未満の時、除数c
全体を(i−j)桁シフトし、 hの−(i−j)乗の位まで剰余演算a mod c を行うこ
とを特徴とする剰余系演算方法。 - 【請求項2】 h進数の被除数をa、除数をcとした時
に剰余演算a mod c を行う剰余系演算方法において、 被除数a及び除数cをレジスタに格納し、 除数cの桁数jが格納可能な桁数i桁未満の時、除数c
全体を(i−j)桁シフトし、 被除数aの桁数lが格納可能な桁数k(≧i)桁未満の
時、被除数a全体を(k−l)桁シフトし、 hの{(k−l)−(i−j)}乗の位まで剰余演算a
mod c を行い、 得られた剰余を(k−l)桁、逆にシフトし、これを剰
余演算結果とすることを特徴とする剰余系演算方法。 - 【請求項3】 h進数の被除数をa及びb、除数をcと
した時に乗剰余演算 a×b mod c を行う剰余系演算方法
において、 請求項1または2記載の方法を利用して剰余演算a mod
c =a'を行い、 請求項1または2記載の方法を利用して剰余演算b mod
c =b'を行い、 前記2つの結果同士の乗剰余演算a'×b' mod cを請求項
1または2記載の方法を利用して行うことを特徴とする
剰余系演算方法。 - 【請求項4】 h進数の被除数をa、羃指数をb、除数
をcとした時に羃乗剰余演算 ab mod c を行う剰余系演
算方法において、 請求項3記載の方法を繰り返し利用して羃乗剰余演算 a
b mod c を行うことを特徴とする剰余系演算方法。 - 【請求項5】 請求項1乃至4いずれか記載の方法を2
進数で利用し、冗長2進演算法に適用したことを特徴と
する剰余系演算方法。 - 【請求項6】 h進数の被除数をa、除数をcとした時
に剰余演算a mod c を行う剰余系演算装置において、 i桁格納可能な除数格納手段と、 被除数格納手段と、 除数cの桁数jがi桁未満の時、除数c全体を(i−
j)桁シフトする除数シフト手段と、 hの−(i−j)乗の位まで剰余演算a mod c を行う剰
余演算手段とを備えたことを特徴とする剰余系演算装
置。 - 【請求項7】 h進数の被除数をa、除数をcとした時
に剰余演算a mod c を行う剰余系演算装置において、 i桁格納可能な除数格納手段と、 k(≧i)桁格納可能な被除数格納手段と、 除数cの桁数jがi桁未満の時、除数c全体を(i−
j)桁シフトする除数シフト手段と、 被除数aの桁数lがk桁未満の時、被除数a全体を(k
−l)桁シフトする被除数シフト手段と、 hの{(k−l)−(i−j)}乗の位まで剰余演算a
mod c を行う剰余演算手段と、 得られた剰余を(k−l)桁、逆にシフトし、これを剰
余演算結果とする剰余逆シフト手段とを備えたことを特
徴とする剰余系演算装置。 - 【請求項8】 h進数の被除数をa及びb、除数をcと
した時に乗剰余演算 a×b mod c を行う剰余系演算装置
において、 請求項6または7記載の装置を利用して剰余演算a mod
c =a'を行う剰余演算手段と、 請求項6または7記載の装置を利用して剰余演算b mod
c =b'を行う剰余演算手段と、 前記2つの結果同士の乗剰余演算a'×b' mod cを請求項
6または7記載の装置を利用して行う乗剰余演算手段と
を備えたことを特徴とする剰余系演算装置。 - 【請求項9】 h進数の被除数をa、羃指数をb、除数
をcとした時に羃乗剰余演算 ab mod c を行う剰余系演
算装置において、 請求項8記載の装置を繰り返し利用して羃乗剰余演算 a
b mod c を行う羃乗剰余演算手段を備えたことを特徴と
する剰余系演算装置。 - 【請求項10】 請求項6乃至9いずれか記載の装置を
2進数で利用し、冗長2進演算法に適用したことを特徴
とする剰余系演算装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5199298A JPH10307710A (ja) | 1997-03-05 | 1998-03-04 | 剰余系演算方法及びその装置 |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9-50473 | 1997-03-05 | ||
| JP5047397 | 1997-03-05 | ||
| JP5199298A JPH10307710A (ja) | 1997-03-05 | 1998-03-04 | 剰余系演算方法及びその装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH10307710A true JPH10307710A (ja) | 1998-11-17 |
Family
ID=26390943
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5199298A Pending JPH10307710A (ja) | 1997-03-05 | 1998-03-04 | 剰余系演算方法及びその装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH10307710A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010186076A (ja) * | 2009-02-12 | 2010-08-26 | Chugoku Electric Power Co Inc:The | 整数の暗号化及び復号化方法 |
| WO2011036746A1 (ja) * | 2009-09-24 | 2011-03-31 | 株式会社東芝 | 演算装置 |
| JP2011180390A (ja) * | 2010-03-01 | 2011-09-15 | Chugoku Electric Power Co Inc:The | 整数を暗号化及び復号化する方法、装置及びシステム |
-
1998
- 1998-03-04 JP JP5199298A patent/JPH10307710A/ja active Pending
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010186076A (ja) * | 2009-02-12 | 2010-08-26 | Chugoku Electric Power Co Inc:The | 整数の暗号化及び復号化方法 |
| WO2011036746A1 (ja) * | 2009-09-24 | 2011-03-31 | 株式会社東芝 | 演算装置 |
| JP5175983B2 (ja) * | 2009-09-24 | 2013-04-03 | 株式会社東芝 | 演算装置 |
| US8909689B2 (en) | 2009-09-24 | 2014-12-09 | Kabushiki Kaisha Toshiba | Arithmetic device |
| JP2011180390A (ja) * | 2010-03-01 | 2011-09-15 | Chugoku Electric Power Co Inc:The | 整数を暗号化及び復号化する方法、装置及びシステム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7805478B2 (en) | Montgomery modular multiplier | |
| US5448639A (en) | Digital signature device | |
| EP0801345B1 (en) | Circuit for modulo multiplication and exponentiation arithmetic | |
| JP4955182B2 (ja) | 整数の計算フィールド範囲の拡張 | |
| US7277540B1 (en) | Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography | |
| US5274707A (en) | Modular exponentiation and reduction device and method | |
| Großschädl | A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2m) | |
| JP4180024B2 (ja) | 乗算剰余演算器及び情報処理装置 | |
| US7831650B2 (en) | Method for modular multiplication | |
| US7046800B1 (en) | Scalable methods and apparatus for Montgomery multiplication | |
| US6917956B2 (en) | Apparatus and method for efficient modular exponentiation | |
| US7698357B2 (en) | Modular multiplication with parallel calculation of the look-ahead parameters | |
| JPH10307710A (ja) | 剰余系演算方法及びその装置 | |
| JP2001034167A (ja) | 演算装置及び暗号処理装置 | |
| Arazi et al. | On calculating multiplicative inverses modulo $2^{m} $ | |
| US20020114449A1 (en) | Modular multiplier and an encryption/decryption processor using the modular multiplier | |
| JP2002023999A (ja) | 乗算モジュール、乗法逆元演算回路、乗法逆元演算制御方式、該乗法逆元演算を用いる装置、暗号装置、誤り訂正復号器 | |
| JP2000207387A (ja) | 演算装置及び暗号処理装置 | |
| US20080114820A1 (en) | Apparatus and method for high-speed modulo multiplication and division | |
| EP1504338B1 (en) | "emod" a fast modulus calculation for computer systems | |
| KR100480997B1 (ko) | GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치 | |
| TWI843313B (zh) | 模乘器、安全晶片、電子設備及加密方法 | |
| JP3913921B2 (ja) | 有限フィールドでの任意要素の逆数具現回路 | |
| TW202332229A (zh) | 用來進行功耗擾動操作以降低密碼系統功耗分析攻擊的成功率之方法、密碼系統處理電路及電子裝置 | |
| JP3210420B2 (ja) | 整数上の乗算回路 |