JPH04276787A - 演算装置及びこれを備えた暗号化装置、復号装置 - Google Patents
演算装置及びこれを備えた暗号化装置、復号装置Info
- Publication number
- JPH04276787A JPH04276787A JP3038664A JP3866491A JPH04276787A JP H04276787 A JPH04276787 A JP H04276787A JP 3038664 A JP3038664 A JP 3038664A JP 3866491 A JP3866491 A JP 3866491A JP H04276787 A JPH04276787 A JP H04276787A
- Authority
- JP
- Japan
- Prior art keywords
- integer
- storage means
- remainder
- input
- multiplication
- 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
- 238000000034 method Methods 0.000 title claims description 15
- 238000004364 calculation method Methods 0.000 claims description 16
- 238000007792 addition Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は2つの整数を乗算し、そ
の結果をさらに他の整数で除算した剰余を求める演算、
すなわち、整数A、B、Nに関して、A・ B mod
Nの乗除算を行う整数の演算装置に関する。特に、R
SA暗号(池野信一,小山謙二:“現代暗号学”,電子
情報通信学会,1986,6章)のような暗号化技術に
好適な大きな桁の整数の乗除算を行う演算装置に関する
ものである。
の結果をさらに他の整数で除算した剰余を求める演算、
すなわち、整数A、B、Nに関して、A・ B mod
Nの乗除算を行う整数の演算装置に関する。特に、R
SA暗号(池野信一,小山謙二:“現代暗号学”,電子
情報通信学会,1986,6章)のような暗号化技術に
好適な大きな桁の整数の乗除算を行う演算装置に関する
ものである。
【0002】また、本発明は上記演算装置を用いた暗号
化によって行われる、コンピュータネットワークにおけ
るホームバンク,ファームバンク,及び電子メールや電
子郵便などの様々な通信サービスに用いられる暗号化通
信方法に関する。
化によって行われる、コンピュータネットワークにおけ
るホームバンク,ファームバンク,及び電子メールや電
子郵便などの様々な通信サービスに用いられる暗号化通
信方法に関する。
【0003】
【従来の技術】従来、na ビットの整数Aと、nb
ビットの整数Bと、nn ビットの整数NによるR=A
・ B mod Nの演算を行う大きな桁の整数の乗除
算回路の方式は、大きく2つに分けられる。1つは乗除
算をC=A・ Bという乗算とD=C mod Nとい
う剰余計算の2つに分けて実行する方式と、もう1つは
Aを1ビット毎に分割したAi(i=0,1,・・・,
na−1) に対してR=2・ R+Ana−i・ B
mod N(i=1,2,・・・,na)の部分積演
算と剰余演算をna 回繰り返す方式である。
ビットの整数Bと、nn ビットの整数NによるR=A
・ B mod Nの演算を行う大きな桁の整数の乗除
算回路の方式は、大きく2つに分けられる。1つは乗除
算をC=A・ Bという乗算とD=C mod Nとい
う剰余計算の2つに分けて実行する方式と、もう1つは
Aを1ビット毎に分割したAi(i=0,1,・・・,
na−1) に対してR=2・ R+Ana−i・ B
mod N(i=1,2,・・・,na)の部分積演
算と剰余演算をna 回繰り返す方式である。
【0004】
【発明が解決しようとする課題】前者の方式は乗算回路
と剰余計算回路をパイプライン化した構成を取ることが
多く、構成及び制御が比較的簡単であるが、この方式は
乗算結果Cを一旦蓄えるメモリや乗算と剰余計算の回路
を独立に持つ必要があり、小さな回路規模で装置を実現
することは困難であった。また、後者の方式は部分積演
算とそれに対する剰余演算であるので、回路は比較的コ
ンパクトにまとめることができるが、nb,nn が大
きくなると、1回の部分積及び剰余の演算に対する桁上
がり遅延時間や桁上がりビット用レジスタの大きさの問
題と、mod Nを実行するためのR>N判定をいかに
行うか等の問題があった。
と剰余計算回路をパイプライン化した構成を取ることが
多く、構成及び制御が比較的簡単であるが、この方式は
乗算結果Cを一旦蓄えるメモリや乗算と剰余計算の回路
を独立に持つ必要があり、小さな回路規模で装置を実現
することは困難であった。また、後者の方式は部分積演
算とそれに対する剰余演算であるので、回路は比較的コ
ンパクトにまとめることができるが、nb,nn が大
きくなると、1回の部分積及び剰余の演算に対する桁上
がり遅延時間や桁上がりビット用レジスタの大きさの問
題と、mod Nを実行するためのR>N判定をいかに
行うか等の問題があった。
【0005】そこで、本発明は、上述の欠点を除去し、
大きな桁の整数に関する乗除算を、小さな回路規模で効
率よく高速に実行する演算装置を提供することを目的と
する。
大きな桁の整数に関する乗除算を、小さな回路規模で効
率よく高速に実行する演算装置を提供することを目的と
する。
【0006】
【課題を解決するための手段】上記目的を達成するため
に、本発明では、与えられた第1、第2の整数の積を第
3の整数で除算した剰余を演算する演算装置に、値を保
持する記憶手段と、前記第1の整数の各ビットを順次入
力して前記第2の整数に乗じる乗算手段と、前記記憶手
段からの入力と、前記乗算手段からの入力とを加算し、
前記記憶手段の値において前記第3の整数の最大桁を越
える部分につき、前記第3の整数に対する剰余を求める
演算を施し、その結果を前記記憶手段に出力する演算手
段とを具える。
に、本発明では、与えられた第1、第2の整数の積を第
3の整数で除算した剰余を演算する演算装置に、値を保
持する記憶手段と、前記第1の整数の各ビットを順次入
力して前記第2の整数に乗じる乗算手段と、前記記憶手
段からの入力と、前記乗算手段からの入力とを加算し、
前記記憶手段の値において前記第3の整数の最大桁を越
える部分につき、前記第3の整数に対する剰余を求める
演算を施し、その結果を前記記憶手段に出力する演算手
段とを具える。
【0007】
【実施例】簡単のため、整数Aをna =nビット、整
数Bをnb =n・ mビット、整数Nをnn =n・
mビットとして、A・B mod N=Rの演算を実
行することを考える。ここで、1ビットの乗算a・ b
=cを実行する乗算器は、よく知られているように、ア
ンド回路によって実現できる。
数Bをnb =n・ mビット、整数Nをnn =n・
mビットとして、A・B mod N=Rの演算を実
行することを考える。ここで、1ビットの乗算a・ b
=cを実行する乗算器は、よく知られているように、ア
ンド回路によって実現できる。
【0008】A,B,Nを各々1,m,mビット毎に分
割すると、次のように表せる。
割すると、次のように表せる。
【0009】
A=An−1・2n−1 +An−2・2n−2 +・
・・ +A1・2+A0B=Bn−1・Xn−1 +B
n−2・Xn−2+・・・ +B1・X+B0N=Nn
−1・Xn−1 +Nn−2・Xn−2+・・・ +N
1・X+N0ここで、X=2mである。この場合A,B
,Nは多項式とみなすことができ、R=A・ B mo
d Nは次のように表すことができる。
・・ +A1・2+A0B=Bn−1・Xn−1 +B
n−2・Xn−2+・・・ +B1・X+B0N=Nn
−1・Xn−1 +Nn−2・Xn−2+・・・ +N
1・X+N0ここで、X=2mである。この場合A,B
,Nは多項式とみなすことができ、R=A・ B mo
d Nは次のように表すことができる。
【0010】R=A・ B−Q・ N (Q=[A・
B/N]) ただし、[Z]はZを超えない整数を表す。
B/N]) ただし、[Z]はZを超えない整数を表す。
【0011】従って、次のような手順によってRを求め
ることができる。
ることができる。
【0012】アルゴリズム(1)
R0 =0
FOR j=1 TO n
Rj =Rj−1・2+An−j・B−Qj−1・
N =Rj−1・2+An−j
・B+Ej−1 −Lj−1・Xn NEXT IF Rn >N THEN Rn =Rn −
Qn・N ただし、Lj−1 =[Rj−1/X
n ] Qj−1 =[Lj−
1・Xn/N],Qn =[Rn /N]
Lj−1・Xn =Qj−1・N+Ej−
1 (Ej−1 <N)アルゴリズム(1)はR>Nで
あるかの判定を行わずに済ますために、Nの最大桁であ
るXn−1を超えたRj−1 の値Lj−1・Xn =
[Rj−1 /Xn ]・Xn に対して、mod N
を行う(Qj−1・N=[Lj−1・Xn/N]・Nを
減じる)ようにしている。即ち、ビット的にXn−1を
超えたRの係数に対してmod Nを行っているのでR
>Nの判定を必要としない。
Rj =Rj−1・2+An−j・B−Qj−1・
N =Rj−1・2+An−j
・B+Ej−1 −Lj−1・Xn NEXT IF Rn >N THEN Rn =Rn −
Qn・N ただし、Lj−1 =[Rj−1/X
n ] Qj−1 =[Lj−
1・Xn/N],Qn =[Rn /N]
Lj−1・Xn =Qj−1・N+Ej−
1 (Ej−1 <N)アルゴリズム(1)はR>Nで
あるかの判定を行わずに済ますために、Nの最大桁であ
るXn−1を超えたRj−1 の値Lj−1・Xn =
[Rj−1 /Xn ]・Xn に対して、mod N
を行う(Qj−1・N=[Lj−1・Xn/N]・Nを
減じる)ようにしている。即ち、ビット的にXn−1を
超えたRの係数に対してmod Nを行っているのでR
>Nの判定を必要としない。
【0013】また、Lj−1・Xn mod Nである
−Qj−1・Nを実行する代わりにLj−1・Xn を
引いてその剰余であるEj−1 を加えている。即ち、
Rj−1 の上位部分Lj−1・Xn をEj−1 に
変換して加算している。これによって、mod Nによ
る減算をすべて加算で行うことができる。ただしこの場
合、最後に1度だけRn >Nを判定して、Rn =R
n −Qn・Nの演算を行う必要があるが、これは上に
示した繰り返し演算が終わった後であり、従来のように
繰り返し演算の途中でR>Nの判定を行う必要がないの
で、別の回路等で行うことができ全体の処理速度には影
響しない。
−Qj−1・Nを実行する代わりにLj−1・Xn を
引いてその剰余であるEj−1 を加えている。即ち、
Rj−1 の上位部分Lj−1・Xn をEj−1 に
変換して加算している。これによって、mod Nによ
る減算をすべて加算で行うことができる。ただしこの場
合、最後に1度だけRn >Nを判定して、Rn =R
n −Qn・Nの演算を行う必要があるが、これは上に
示した繰り返し演算が終わった後であり、従来のように
繰り返し演算の途中でR>Nの判定を行う必要がないの
で、別の回路等で行うことができ全体の処理速度には影
響しない。
【0014】次に、Rj の演算に伴う遅延時間が大き
いという問題があった。その遅延時間をなくすために、
アルゴリズム(1)においてRj をRj,n−i 、
BをBn−i に分解して次のアルゴリズム(2)のよ
うに表現する。 また、レジスタRj,n−i の桁上がり部Cj,n−
iはmビット毎の桁上がりとするので、レジスタ容量が
小さくて済む。
いという問題があった。その遅延時間をなくすために、
アルゴリズム(1)においてRj をRj,n−i 、
BをBn−i に分解して次のアルゴリズム(2)のよ
うに表現する。 また、レジスタRj,n−i の桁上がり部Cj,n−
iはmビット毎の桁上がりとするので、レジスタ容量が
小さくて済む。
【0015】アルゴリズム(2)
FOR j=1 TO n
FOR i=0 TO n
Rj,n−i =Dj−1,n−i・2+Cj−1
,n−i−1 +An−j・Bn−i +Ej−1,n
−i Dj,n−i =dwm−1
(Rj,n−i ) Cj,n−i =
upm−1 (Rj,n−i ) NEXT NEXT ただし、Rj−1,n・Xn =Qj−1・N+Ej−
1
(3) Qj−1 =[Rj−1
,n・Xn /N]
(4) Ej−
1 =Ej−1,n−1・Xn−1 +・・・ +Ej
−1,1・X+Ej−1,0 (5)
D0,n−i =C0,n−i−1 =E0,
n−i =Bn =B−1=0 dwm
−1 (Z):Zの2m−1 桁以下の値
upm−1 (Z):Zの2m 以上の値を2m
で割った値を意味する。
Rj,n−i =Dj−1,n−i・2+Cj−1
,n−i−1 +An−j・Bn−i +Ej−1,n
−i Dj,n−i =dwm−1
(Rj,n−i ) Cj,n−i =
upm−1 (Rj,n−i ) NEXT NEXT ただし、Rj−1,n・Xn =Qj−1・N+Ej−
1
(3) Qj−1 =[Rj−1
,n・Xn /N]
(4) Ej−
1 =Ej−1,n−1・Xn−1 +・・・ +Ej
−1,1・X+Ej−1,0 (5)
D0,n−i =C0,n−i−1 =E0,
n−i =Bn =B−1=0 dwm
−1 (Z):Zの2m−1 桁以下の値
upm−1 (Z):Zの2m 以上の値を2m
で割った値を意味する。
【0016】基本的にアルゴリズム(1)とアルゴリズ
ム(2)は同じであるが、アルゴリズム(2)の方がよ
り実際の回路の動作に適した形で表している。ここでn
=4の場合を考えると、アルゴリズム(2)にしたがっ
て、図1のような回路で乗除算器を構成することができ
る。
ム(2)は同じであるが、アルゴリズム(2)の方がよ
り実際の回路の動作に適した形で表している。ここでn
=4の場合を考えると、アルゴリズム(2)にしたがっ
て、図1のような回路で乗除算器を構成することができ
る。
【0017】図1において、11〜14は、1ビットの
入力A0 〜A3と、それぞれにおけるmビットの定数
B0 〜B3 との積A4−j・B4−i を演算する
m個のアンドからなる乗算回路。15〜18は、Rj−
1,4 の値から所定のN及びmに対して(3)〜(5
)式によってEj−1,0 〜Ej−1,3 の値を各
々出力するROM、19〜22はそれぞれ、乗算回路の
出力と、右隣のレジスタの下位桁と、左隣のレジスタの
桁上りと、ROMの出力とを加算する4入力加算器(た
だし、19は下からの桁上りはないので3入力)。23
〜26は加算器の出力Rj,4−i を格納するm+2
ビットのレジスタである。
入力A0 〜A3と、それぞれにおけるmビットの定数
B0 〜B3 との積A4−j・B4−i を演算する
m個のアンドからなる乗算回路。15〜18は、Rj−
1,4 の値から所定のN及びmに対して(3)〜(5
)式によってEj−1,0 〜Ej−1,3 の値を各
々出力するROM、19〜22はそれぞれ、乗算回路の
出力と、右隣のレジスタの下位桁と、左隣のレジスタの
桁上りと、ROMの出力とを加算する4入力加算器(た
だし、19は下からの桁上りはないので3入力)。23
〜26は加算器の出力Rj,4−i を格納するm+2
ビットのレジスタである。
【0018】このレジスタの下位m−1ビットはRj,
4−i の下位m−1桁(dwm (Rj,4−i)=
Dj,4−i )を意味し、上位3ビットはRj,4−
i のm桁以上の値(upm (Rj,4−i )=C
j,4−i )を意味する。これによって、各加算器毎
の桁上がりはCj,n−i によって各クロック毎に吸
収され、次のクロックで桁上がりとして加算される。従
って、アルゴリズム(1)のようなRjの演算に伴う遅
延時間をなくすことができる。
4−i の下位m−1桁(dwm (Rj,4−i)=
Dj,4−i )を意味し、上位3ビットはRj,4−
i のm桁以上の値(upm (Rj,4−i )=C
j,4−i )を意味する。これによって、各加算器毎
の桁上がりはCj,n−i によって各クロック毎に吸
収され、次のクロックで桁上がりとして加算される。従
って、アルゴリズム(1)のようなRjの演算に伴う遅
延時間をなくすことができる。
【0019】以上のようにDj,4−i ,Rj,4−
i ,Cj,4−i はレジスタの状態を表すが、ここ
で添え字のjはクロックを意味し、4−iは図1におい
て右から左にi=1からi=4となる回路の位置を示す
。従って、初期状態(j=0)においてR0,0 は図
1の左端のレジスタを意味し、R0,3 は右端のレジ
スタを意味する。尚、ず1で、Lj−1 は右端のレジ
スタから出力されるNの最大桁Xn を超えた値を意味
する。
i ,Cj,4−i はレジスタの状態を表すが、ここ
で添え字のjはクロックを意味し、4−iは図1におい
て右から左にi=1からi=4となる回路の位置を示す
。従って、初期状態(j=0)においてR0,0 は図
1の左端のレジスタを意味し、R0,3 は右端のレジ
スタを意味する。尚、ず1で、Lj−1 は右端のレジ
スタから出力されるNの最大桁Xn を超えた値を意味
する。
【0020】次に図1の動作について説明する。図1に
おいて各レジスタの初期状態(R0,4−i )はオー
ル0とする。このとき、R0,4−i =0であるので
D0,4−i =C0,4−i−1 =0である。
おいて各レジスタの初期状態(R0,4−i )はオー
ル0とする。このとき、R0,4−i =0であるので
D0,4−i =C0,4−i−1 =0である。
【0021】最初のクロック(j=1)でA3 が入力
されるとmビット毎の出力のA3・B4−i(i=1・
・・4)が各乗算器から出力される。その値を各加算器
に入力して各々のレジスタ(R1,4−i:i=1・・
・4 )に格納する。このとき、R1,4−i(i=1
・・4) の下位m−1ビットはD1,4−i とし、
mビット以上はC1,4−i としてレジスタに格納さ
れている。ただし、j=1においてR1,4−i(i=
1・・・4)の演算結果はNの最大桁Xn を超えない
ので、L0=0である。
されるとmビット毎の出力のA3・B4−i(i=1・
・・4)が各乗算器から出力される。その値を各加算器
に入力して各々のレジスタ(R1,4−i:i=1・・
・4 )に格納する。このとき、R1,4−i(i=1
・・4) の下位m−1ビットはD1,4−i とし、
mビット以上はC1,4−i としてレジスタに格納さ
れている。ただし、j=1においてR1,4−i(i=
1・・・4)の演算結果はNの最大桁Xn を超えない
ので、L0=0である。
【0022】次のクロック(j=2)でA2 が入力さ
れるとA2・B4−i(i=1・・・4)が同様に上の
乗算器から出力される。そのとき、各レジスタの下位m
−1ビットDj−1,4−i(i=2・・・4)は2倍
(1ビットシフト)されて加算器にフィードバック入力
され、各レジスタの上位3ビットCj−1,4−i−1
は桁上がりキャリーとして右隣の加算器に入力される
。その加算結果をR2,4−i(i=1・・・4)に格
納する。このとき、右端のレジスタR2,3 はNの最
大桁数Xn を超える場合が起こりうるので、L1 =
upm (R2,3 )として出力される。
れるとA2・B4−i(i=1・・・4)が同様に上の
乗算器から出力される。そのとき、各レジスタの下位m
−1ビットDj−1,4−i(i=2・・・4)は2倍
(1ビットシフト)されて加算器にフィードバック入力
され、各レジスタの上位3ビットCj−1,4−i−1
は桁上がりキャリーとして右隣の加算器に入力される
。その加算結果をR2,4−i(i=1・・・4)に格
納する。このとき、右端のレジスタR2,3 はNの最
大桁数Xn を超える場合が起こりうるので、L1 =
upm (R2,3 )として出力される。
【0023】更に次のクロック(j=3)でA1 が入
力されるとA1・B4−i(i=1・・・4)が上の乗
算器から出力され、レジスタからのDj−1,4−i
,Cj−1,4−i−1 出力と同様に加算器に入力さ
れる。このとき前クロックにおいてNの最大桁数Xn
を超えたL1の値を受けて各ROMからE2,4−i
の値が各加算器に出力される。従って、加算器は4入力
加算器として構成され、m+2ビットの出力を返すので
、レジスタはm+2ビットのレジスタで構成される。
力されるとA1・B4−i(i=1・・・4)が上の乗
算器から出力され、レジスタからのDj−1,4−i
,Cj−1,4−i−1 出力と同様に加算器に入力さ
れる。このとき前クロックにおいてNの最大桁数Xn
を超えたL1の値を受けて各ROMからE2,4−i
の値が各加算器に出力される。従って、加算器は4入力
加算器として構成され、m+2ビットの出力を返すので
、レジスタはm+2ビットのレジスタで構成される。
【0024】更に、j=4のクロックでA0 が入力さ
れたときもj=3のときと同様の動作を行い、その結果
、各レジスタに格納された値R4,0 〜R4,3 が
全体として、求めるべき剰余となっていることが判る。
れたときもj=3のときと同様の動作を行い、その結果
、各レジスタに格納された値R4,0 〜R4,3 が
全体として、求めるべき剰余となっていることが判る。
【0025】以上によって入力値が分割されて入力され
るとき乗除算回路が効率的に実現できることが示せた。 これは、na ≠n,nb ≠n・ m,nn ≠n・
mの場合にも同様の回路構成で乗除算回路が実現でき
ることは明らかである。
るとき乗除算回路が効率的に実現できることが示せた。 これは、na ≠n,nb ≠n・ m,nn ≠n・
mの場合にも同様の回路構成で乗除算回路が実現でき
ることは明らかである。
【0026】この回路はCj,4−i によって桁上が
りを一旦ホールドするために桁上がりに関する遅延時間
はなく、1回の演算を短時間毎に繰り返すことができる
。
りを一旦ホールドするために桁上がりに関する遅延時間
はなく、1回の演算を短時間毎に繰り返すことができる
。
【0027】また、Nの最大桁であるXn−1 を超え
たRj−1 の値Lj−1・Xn に対して、modN
を行うようにしているのでR>Nの判定を行わなくてよ
い。また、−Qj−1・Nを実行する代わりに、−Qj
−1・N=−Lj−1・Xn +Ej−1であるEj−
1 を加えることによって剰余演算を全て加算によって
行っている。
たRj−1 の値Lj−1・Xn に対して、modN
を行うようにしているのでR>Nの判定を行わなくてよ
い。また、−Qj−1・Nを実行する代わりに、−Qj
−1・N=−Lj−1・Xn +Ej−1であるEj−
1 を加えることによって剰余演算を全て加算によって
行っている。
【0028】また、この回路はラッチされたLj−1
の値を加算器などの別回路を通さず、直接Ej−1 を
出力するROMに入力するため、1クロックに必要な処
理時間は乗算器または除算のROMを通過する時間だけ
でよく処理時間が短い。しかしLj−1をラッチするた
めのレジスタを下位の桁をラッチするレジスタと分けて
特別に設けず、他のレジスタと同じキャリービット用の
レジスタで処理しているので回路規模が小さくなり、回
路構成も簡単になる。
の値を加算器などの別回路を通さず、直接Ej−1 を
出力するROMに入力するため、1クロックに必要な処
理時間は乗算器または除算のROMを通過する時間だけ
でよく処理時間が短い。しかしLj−1をラッチするた
めのレジスタを下位の桁をラッチするレジスタと分けて
特別に設けず、他のレジスタと同じキャリービット用の
レジスタで処理しているので回路規模が小さくなり、回
路構成も簡単になる。
【0029】次に、上述の演算装置を用いた暗号化通信
の方法を説明する。通信しようとする平文をM,暗号文
をC,公開暗号鍵をe,復号鍵をd,公開された法をN
とすると、RSA暗号の暗号化と復号は次のようなべき
乗剰余演算で表される。
の方法を説明する。通信しようとする平文をM,暗号文
をC,公開暗号鍵をe,復号鍵をd,公開された法をN
とすると、RSA暗号の暗号化と復号は次のようなべき
乗剰余演算で表される。
【0030】暗号化:C=Me mod N復号:M=
Cd mod N 従って、RSA暗号の暗号化と復号化は同様なべき乗剰
余演算回路によって実現できる。そこで、以下では暗号
化についてのみ説明する。
Cd mod N 従って、RSA暗号の暗号化と復号化は同様なべき乗剰
余演算回路によって実現できる。そこで、以下では暗号
化についてのみ説明する。
【0031】べき乗剰余演算:C=Me mod Nは
、単純に2数の剰余乗算を行っても実現できるが、M、
eが大きいと、その計算量は莫大なものとなる。そのた
め、本発明では、以下のアルゴリズムに従って計算を実
行する。ただし、eはkビットからなる整数であり、e
=ek,ek−1,・・・,e2,e1 で表されると
する。
、単純に2数の剰余乗算を行っても実現できるが、M、
eが大きいと、その計算量は莫大なものとなる。そのた
め、本発明では、以下のアルゴリズムに従って計算を実
行する。ただし、eはkビットからなる整数であり、e
=ek,ek−1,・・・,e2,e1 で表されると
する。
【0032】
INPUT M,e,N
(入力) C=1
(初期設定)FOR i=k TO 1 IF ei=1 THEN C=C・ M mo
d N (演算1)IF i >1 THEN
C=C・ C mod N (演算2)NEXT 従って、この場合、べき乗剰余演算は、C=C・ B
mod N(BはMまたはC)の剰余乗算の繰り返しに
よって実現される。この剰余乗算は図1のごとき回路に
よって実現できる。このアルゴリズムを効率的に実行す
る回路を図2に示す。101、102は各々M,e,の
値を格納するシフトレジスタであり、103、104は
各々N,Cの値を格納するレジスタである。また、10
5,106は入力を選択するセレクタスイッチ、107
はレジスタ104のCの値をmビット毎(mは任意の整
数)に上位桁から選択しシリアルに出力するマルチプレ
クサ、108はC=C・ B mod Nの演算を実行
する剰余乗算回路である。109はei=1またはi
>1を判定して演算1,2の実行を制御したり、入力及
び初期設定時にセレクタやレジスタのクリア信号やプリ
セット信号などを制御するコントローラであり、カウン
タとROMといくつかの論理回路によって簡単に実現で
きる。
(入力) C=1
(初期設定)FOR i=k TO 1 IF ei=1 THEN C=C・ M mo
d N (演算1)IF i >1 THEN
C=C・ C mod N (演算2)NEXT 従って、この場合、べき乗剰余演算は、C=C・ B
mod N(BはMまたはC)の剰余乗算の繰り返しに
よって実現される。この剰余乗算は図1のごとき回路に
よって実現できる。このアルゴリズムを効率的に実行す
る回路を図2に示す。101、102は各々M,e,の
値を格納するシフトレジスタであり、103、104は
各々N,Cの値を格納するレジスタである。また、10
5,106は入力を選択するセレクタスイッチ、107
はレジスタ104のCの値をmビット毎(mは任意の整
数)に上位桁から選択しシリアルに出力するマルチプレ
クサ、108はC=C・ B mod Nの演算を実行
する剰余乗算回路である。109はei=1またはi
>1を判定して演算1,2の実行を制御したり、入力及
び初期設定時にセレクタやレジスタのクリア信号やプリ
セット信号などを制御するコントローラであり、カウン
タとROMといくつかの論理回路によって簡単に実現で
きる。
【0033】次に、この回路の動作について説明する。
【0034】入力は平文Mと公開された鍵eとNである
。そこでレジスタ101〜103に、M,e,Nをシリ
アルまたはパラレルに入力する。このとき、セレクタ1
05はMを選択することでMをレジスタ101に入力す
る。それと同時に、レジスタ104にはCの値を入力す
る代わりに、レジスタのクリア信号またはプリセット信
号によってC=1となるように初期設定する。
。そこでレジスタ101〜103に、M,e,Nをシリ
アルまたはパラレルに入力する。このとき、セレクタ1
05はMを選択することでMをレジスタ101に入力す
る。それと同時に、レジスタ104にはCの値を入力す
る代わりに、レジスタのクリア信号またはプリセット信
号によってC=1となるように初期設定する。
【0035】入力及び初期設定が終了すると、演算1,
2に示した剰余乗算が開始される。ここで、演算1,2
の違いは剰余乗算C=C・ B mod Nにおいて、
BがMかCかの違いである。従って、演算1を実行する
ときは、セレクタ106はレジスタ101からのmビッ
ト毎のシリアル出力Mを選択し、演算2を実行するとき
はマルチプレクサ107からのmビット毎のシリアル出
力であるCを選択するように制御される。また、シフト
レジスタ101からのmビット毎のシリアル出力Mはセ
レクタ105を介して、再びシフトレジスタ101に入
力される。剰余乗算回路108の構成及び動作は前述の
通りである。剰余乗算回路108の出力するCをレジス
タ104にパラレル入力し、次の剰余乗算に用いること
によって演算1,2が効率的に繰り返される。
2に示した剰余乗算が開始される。ここで、演算1,2
の違いは剰余乗算C=C・ B mod Nにおいて、
BがMかCかの違いである。従って、演算1を実行する
ときは、セレクタ106はレジスタ101からのmビッ
ト毎のシリアル出力Mを選択し、演算2を実行するとき
はマルチプレクサ107からのmビット毎のシリアル出
力であるCを選択するように制御される。また、シフト
レジスタ101からのmビット毎のシリアル出力Mはセ
レクタ105を介して、再びシフトレジスタ101に入
力される。剰余乗算回路108の構成及び動作は前述の
通りである。剰余乗算回路108の出力するCをレジス
タ104にパラレル入力し、次の剰余乗算に用いること
によって演算1,2が効率的に繰り返される。
【0036】また、この装置で、M、eの代わりに、C
、dを入力することにより、暗号文の複号を行うことが
できる。
、dを入力することにより、暗号文の複号を行うことが
できる。
【0037】
【発明の効果】以上説明したごとく、本発明の演算装置
によれば、小さな回路規模で、高速な剰余乗算が実行で
きるという効果がある。
によれば、小さな回路規模で、高速な剰余乗算が実行で
きるという効果がある。
【0038】また、本発明演算装置は同一の演算素子の
繰り返しにより構成されるので、VLSI等による回路
化を実現しやすいという効果もある。
繰り返しにより構成されるので、VLSI等による回路
化を実現しやすいという効果もある。
【0039】また、本発明によれば、暗号化通信のため
の暗号化/複号装置を小さな回路規模で実現できるとい
う効果がある。
の暗号化/複号装置を小さな回路規模で実現できるとい
う効果がある。
【図1】本発明演算装置の回路構成例を示す図である。
【図2】暗号化・複号装置の構成例を示す図である。
11〜14 乗算器
15〜18 ROM
19〜22 加算器
23〜26 レジスタ
101,102 シフトレジスタ
103,104 レジスタ
105〜106 セレクタ
107 マルチプレクサ
108 剰余乗算回路
Claims (5)
- 【請求項1】 与えられた第1、第2の整数の積を第
3の整数で除算した剰余を演算する演算装置であって、
値を保持する記憶手段と、前記第1の整数の各ビットを
順次入力して前記第2の整数に乗じる乗算手段と、前記
記憶手段からの入力と、前記乗算手段からの入力とを加
算し、前記記憶手段の値において前記第3の整数の最大
桁を越える部分につき、前記第3の整数に対する剰余を
求める演算を施し、その結果を前記記憶手段に出力する
演算手段とを有することを特徴とする演算装置。 - 【請求項2】 前記演算手段において、前記剰余を求
める演算を施すために、前記記憶手段の値において前記
第3の整数の最大桁を越える部分につき、当該部分に代
わり、前記剰余を加えることを特徴とする請求項1記載
の演算装置。 - 【請求項3】 前記記憶手段は複数個のレジスタを有
し、前記演算手段は、それぞれが所定の桁部分同士を加
算する複数個の加算器を含み、当該レジスタは、保持し
ている値を上位桁部分と下位桁部分とを異なる加算器に
出力することを特徴とする請求項1記載の演算装置。 - 【請求項4】 送信すべき情報Mに対して、与えられ
た整数e、Nから暗号C=Me mod Nを求めて、
暗号Cを送信する暗号化通信方法において、暗号化装置
に、与えられた第1、第2の整数の積を第3の整数で除
算した剰余を演算する演算装置であって、値を保持する
記憶手段と、前記第1の整数の各ビットを順次入力して
前記第2の整数に乗じる乗算手段と、前記記憶手段から
の入力と、前記乗算手段からの入力とを加算し、前記記
憶手段の値において前記第3の整数の最大桁を越える部
分につき、前記第3の整数に対する剰余を求める演算を
施し、その結果を前記記憶手段に出力する演算手段とを
有する演算装置を設けたことを特徴とする暗号化通信方
法。 - 【請求項5】 受信した暗号Cに対して、与えられた
整数d、Nから情報M=Cd mod Nを求めて、暗
号Cを情報Mに複号する暗号化通信方法において、複号
装置に、与えられた第1、第2の整数の積を第3の整数
で除算した剰余を演算する演算装置であって、値を保持
する記憶手段と、前記第1の整数の各ビットを順次入力
して前記第2の整数に乗じる乗算手段と、前記記憶手段
からの入力と、前記乗算手段からの入力とを加算し、前
記記憶手段の値において前記第3の整数の最大桁を越え
る部分につき、前記第3の整数に対する剰余を求める演
算を施し、その結果を前記記憶手段に出力する演算手段
とを有する演算装置を設けたことを特徴とする暗号化通
信方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP03866491A JP3323516B2 (ja) | 1991-03-05 | 1991-03-05 | 演算装置及びこれを備えた暗号化装置、復号装置 |
AT92301856T ATE193606T1 (de) | 1991-03-05 | 1992-03-04 | Rechengerät und verfahren zum verschlüsseln/entschlüsseln von kommunikationsdaten unter verwendung desselben |
EP92301856A EP0502712B1 (en) | 1991-03-05 | 1992-03-04 | Calculating apparatus and method of encrypting/decrypting communication data by using the same |
US07/847,672 US5313530A (en) | 1991-03-05 | 1992-03-04 | Calculating apparatus and method of encrypting/decrypting communication data by using the same |
DE69231110T DE69231110T2 (de) | 1991-03-05 | 1992-03-04 | Rechengerät und Verfahren zum Verschlüsseln/Entschlüsseln von Kommunikationsdaten unter Verwendung desselben |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP03866491A JP3323516B2 (ja) | 1991-03-05 | 1991-03-05 | 演算装置及びこれを備えた暗号化装置、復号装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04276787A true JPH04276787A (ja) | 1992-10-01 |
JP3323516B2 JP3323516B2 (ja) | 2002-09-09 |
Family
ID=12531539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP03866491A Expired - Fee Related JP3323516B2 (ja) | 1991-03-05 | 1991-03-05 | 演算装置及びこれを備えた暗号化装置、復号装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3323516B2 (ja) |
-
1991
- 1991-03-05 JP JP03866491A patent/JP3323516B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP3323516B2 (ja) | 2002-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100267009B1 (ko) | 고속 암호화 처리를 위한 어레이 구조를 가지는 모듈러 곱셈장치 | |
EP0531158B1 (en) | Method of and apparatus for encryption and decryption of communication data | |
EP0502712B1 (en) | Calculating apparatus and method of encrypting/decrypting communication data by using the same | |
US5121429A (en) | Digital signal processing | |
EP1975906B1 (en) | Montgomery s algorithm multiplication remainder calculator | |
US7024560B2 (en) | Power-residue calculating unit using Montgomery algorithm | |
US7050579B1 (en) | Cryptographic methods and apparatus using word-wise montgomery multiplication | |
JP2004258141A (ja) | モンゴメリ乗算剰余の多倍長演算のための演算装置 | |
JPH05324277A (ja) | 暗号通信方法 | |
JP2001051832A (ja) | 乗算剰余演算方法および乗算剰余回路 | |
JP3406914B2 (ja) | 演算装置及びこれを備えた暗号化装置、復号装置 | |
JPH11212456A (ja) | モンゴメリ法による乗算剰余計算装置 | |
US20020172355A1 (en) | High-performance booth-encoded montgomery module | |
US5999953A (en) | Method for the production of a parameter Jo associated with the implementation of a modular operation according to the Montgomery method | |
JPH04276787A (ja) | 演算装置及びこれを備えた暗号化装置、復号装置 | |
Raghuram et al. | A programmable processor for cryptography | |
JP3591857B2 (ja) | 擬似乱数生成方法及び装置、通信方法及び装置 | |
JP4544870B2 (ja) | 演算回路装置 | |
JPH04277789A (ja) | 演算装置及びこれを用いた暗号化通信方法 | |
JPH0916379A (ja) | 通信方法とその装置 | |
Shirase et al. | An architecture for elliptic curve cryptograph computation | |
JPH11161164A (ja) | 公開鍵暗号方式と暗号化装置および復号装置 | |
Keshavarzi | VLSI implementation of public key cryptography algorithms | |
Khokhlov et al. | M. Kalimoldayev", S. Tynymbayev", S. Gnatyuk" | |
JP2002236581A (ja) | 演算回路、演算方法、及びプログラム記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20020618 |
|
LAPS | Cancellation because of no payment of annual fees |