JP3406914B2 - 演算装置及びこれを備えた暗号化装置、復号装置 - Google Patents

演算装置及びこれを備えた暗号化装置、復号装置

Info

Publication number
JP3406914B2
JP3406914B2 JP22598691A JP22598691A JP3406914B2 JP 3406914 B2 JP3406914 B2 JP 3406914B2 JP 22598691 A JP22598691 A JP 22598691A JP 22598691 A JP22598691 A JP 22598691A JP 3406914 B2 JP3406914 B2 JP 3406914B2
Authority
JP
Japan
Prior art keywords
integer
remainder
bit
multiplication
circuit
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.)
Expired - Fee Related
Application number
JP22598691A
Other languages
English (en)
Other versions
JPH0568032A (ja
Inventor
恵市 岩村
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP22598691A priority Critical patent/JP3406914B2/ja
Priority to EP92301856A priority patent/EP0502712B1/en
Priority to US07/847,672 priority patent/US5313530A/en
Priority to DE69231110T priority patent/DE69231110T2/de
Priority to AT92301856T priority patent/ATE193606T1/de
Priority to AT92308056T priority patent/ATE183315T1/de
Priority to EP92308056A priority patent/EP0531158B1/en
Priority to DE69229766T priority patent/DE69229766T2/de
Priority to US07/941,236 priority patent/US5321752A/en
Publication of JPH0568032A publication Critical patent/JPH0568032A/ja
Priority to HK98112269A priority patent/HK1011430A1/xx
Application granted granted Critical
Publication of JP3406914B2 publication Critical patent/JP3406914B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は2つの整数を乗算し、そ
の結果をさらに他の整数で除算した剰余を求める演算、
すなわち、整数A、B、Nに関して、A・ B mod Nの
剰余乗算を行う整数の演算装置に関する。特に、RSA
暗号(池野信一,小山謙二:“現代暗号学”,電子情報
通信学会,1986,6章参照)のような暗号化技術に好適
な大きな桁の整数の剰余乗算を行う演算装置に関するも
のである。
【0002】また、本発明は上記演算装置を用いた暗号
化によって行われる、コンピュータネットワークにおけ
るホームバンク,ファームバンク,及び電子メールや電
子郵便などの様々な通信サービスに用いられる暗号化通
信方法に関する。
【0003】
【従来の技術】近年、コンピュータネットワークを用い
た情報通信システムの急速な進展とともに、データ内容
の保護を目的とする暗号化技術の重要性が高まってきて
いる。特にネットワークの高速化・大容量化が進展する
中で、高速な暗号化技術が不可欠になりつつある。
【0004】従来、暗号には、公開鍵暗号系と共通鍵暗
号系とがあることが知られている。中でも、公開鍵暗号
系は、鍵の管理が用意であり、デジタル署名が可能であ
るという共通鍵暗号系にない特徴を持つ暗号系として、
注目を集めている。
【0005】RSA暗号は、公開鍵暗号系の代表的な暗
号であり、現時点では、最も有力な公開鍵暗号であると
みなされている。
【0006】RSA暗号は、べき乗剰余演算:R=Me
mod N(R,M,N,eは整数)によって演算される。
べき乗剰余演算は剰余乗算:D=A・B mod N(A,
B,Dは整数)の繰り返しによって実現される。しか
し、RSA暗号において、不正な解読に対する安全性を
確保するには、N、eは512ビット以上必要であり、
その計算量は、莫大なものとなっている。
【0007】従来、整数A、B、NによるR=A・ B m
od Nの演算を行う大きな桁の整数の剰余乗算回路の方
式は大きく2つに分けられる。1つは剰余乗算をC=A
・ Bの乗算とD=C mod Nの剰余計算の2つに分けて
実行する方式であり、もう1つはAを1ビット毎に分割
したan-i(i=1・・・n)に対してR=2・ R+an-i・B mod
N(i=1・・・n) の部分積演算と剰余演算をn回繰り返す
方式である。
【0008】
【発明が解決しようとしている課題】前者の方式は乗算
回路と剰余計算回路をパイプライン化した構成を取るこ
とが多く、構成及び制御が比較的簡単である。しかし、
この方式は乗算結果Cを一旦蓄えるメモリや乗算と剰余
計算の回路を独立に持つ必要があり、小さな回路規模で
装置を実現することは困難であった。
【0009】また、後者の方式は部分積演算とそれに対
する剰余演算であるので回路は比較的コンパクトにまと
めることができる。しかし、1回の部分積剰余演算に対
する桁上がり遅延時間の問題と、mod Nを実行するため
のR>N判定をいかに行うか等の問題があった。
【0010】また、乗算に関しては乗算器を用いずan-
i =1の時のみ2・ RにBを加算することによって演算
を行うことが多く、この場合少なくともnクロック以上
必要になり処理速度が低下すると言う問題点もあった。
【0011】また、それを回避するために、Aの分割を
an-i を複数ビットとした場合、大きな桁の乗算器や除
算器が必要になり、大きな桁数の乗算器や除算器はRO
Mやセルライブラリ等がないといった問題があった。そ
して、大きな桁数の乗算器や除算器を自分で設計する場
合、小さな桁数の乗算器や除算器の回路構成をそのまま
拡張したのでは回路構成が非常に複雑になり実現が難し
かった。
【0012】以上のように、従来の方式には種々の問題
点があり、効率的な剰余乗算回路の実現は難しかった。
【0013】そこで、本発明は、上述の欠点を除去し、
大きな桁の整数に関する剰余乗算を、小さな回路規模で
効率よく高速に実行する演算装置及びこれを用いた暗号
化装置、復号装置を提供することを目的とする。
【0014】
【課題を解決するための手段】上記目的を達成するため
に、本発明では、与えられた整数A、Bの積を所定の整
数Nで除した剰余を演算する演算装置に、複数段の演算
部を備え、該複数段の演算部の各段に、値を保持する保
持手段と、前段の演算部の前記保持手段に保持された値
につき、前記整数Nの最大桁を越える部分の前記整数N
に対する剰余における各段の演算部毎に定められた所定
ビット部分を求める剰余演算手段と、前記整数Bを所定
ビット単位で順次入力して前記整数Aの各段の演算部毎
に定められた所定ビット部分に乗じる乗算手段と、該乗
算手段による乗算結果の下位部分と、後段の演算部の前
記乗算手段による乗算結果の上位部分と、前段の演算部
の前記保持手段に保持された値の下位部分と、前々段の
演算部の前記保持手段に保持された値の上位部分と、前
記剰余演算手段の演算結果とを加算し、加算結果を前記
保持手段に保持させる加算手段とを備える。
【0015】
【実施例】(実施例1)まず、RSA暗号による通信方
法を説明する。通信しようとする平文をM,暗号文を
C,公開暗号鍵をe,復号鍵をd,公開された法をNと
すると、暗号化と復号は次のようなべき乗剰余演算で表
される。
【0016】 暗号化:C=Me mod N 復号:M=Cd mod N 従って、RSA暗号の暗号化と復号は同様なべき乗剰余
演算回路によって実現できる。そこで、以下では暗号化
について説明する。
【0017】べき乗剰余演算:C=Me mod Nは、単純
に2数の剰余乗算を行っても実現できるが、M、eが大
きいと、その計算量は莫大なものとなる。そのため、本
発明では、以下のアルゴリズムに従って計算を実行す
る。ただし、eはkビットからなる整数であり、e=e
k,ek-1,・・・,e2,e1 で表されるとする。
【0018】 INPUT M,e,N (入力) C=1 (初期設
定) FOR i=k TO 1 IF ei=1 THEN C=C・ M mod N (演算1) IF i >1 THEN C=C・ C mod N (演算2) NEXT
【0019】従って、この場合、べき乗剰余演算は、C
=C・ B mod N(BはMまたはC)の剰余乗算の繰り
返しによって実現される。そこで、この剰余乗算を効率
的に実行する回路について以下に説明する。は図1のご
とき回路によって実現できる。このアルゴリズムを効率
的に実行する回路を図2に示す。
【0020】簡単のためにn・ mビットの3つの整数を
A,B,Nとし、A・ B mod N=Rの演算を実行する
ことを考える。ここで、mビットの小さな桁の2つの整
数a,bの乗算a・ b=cを実行する乗算器は公知の構
成によって簡単に実現できる。1例としてROMによっ
て簡単に構成できることは明らかである。
【0021】A,B,Nを各々mビット毎にn分割する
と、次のように表せる。
【0022】 A=An-1・Xn-1 +An-2・Xn-2 +・・・ +A1・X+A0 B=Bn-1・Xn-1 +Bn-2・Xn-2+・・・ +B1・X+B0 N=Nn-1・Xn-1 +Nn-2・Xn-2+・・・ +N1・X+N0 ここで、X=2m とし、A,B,Nについてmビット毎
に上位桁から分割したビット系列を各々An-i ,Bn-i
,Nn-i(i=1・・・n)とする。この場合A,B,Nは多項
式とみなすことができ、R=A・ B mod Nは次のよう
に表すことができる。
【0023】 R=A・ B−Q・ N (Q=[A・ B/N]) ただし、[Z]はZを超えない整数を表す。
【0024】従って、次のような方法によってRを求め
ることができる。
【0025】(アルゴリズム1) R0 =0 FOR j=1 TO n Rj =Rj-1・X+An-j・B−Qj-1・N・ Xy =Rj-1・X+An-j・B+(Ej-1 ・ Xy −Lj-1・Xn+x ) NEXT IF Rn >N THEN Rn =Rn −Qn・N ただし、Lj-1 =[Rj-1 /Xn ] Qj-1 =[Lj-1・Xn+1 /N],Qn =[Rn /N] Lj-1・Xn+x =(Qj-1・N+Ej-1 )・ Xy ( Ej-1 <N,x,y は任意の整数) アルゴリズム1はR>Nの判定を行わないためにNの最
大桁であるXnを超えたRj-1 の値Lj-1・Xn+x に対し
て、剰余をとっている。即ち、ビット的にXn+x を超え
たRの係数に対してmod Nを行っているのでR>Nの判
定を必要としない。また、Lj-1・Xn+x mod N・Xy
ある−Qj-1・N・Xy を実行する代わりに、Lj-1・X
n+x を引いてその剰余であるEj-1・Xy を加えている。
即ち、Lj-1 からEj-1 を導出して加算している。これ
によって、剰余乗算に必要な減算をすべて加算で行うこ
とができる。
【0026】ただしこの場合、最後に1度だけRn >N
を判定して、Rn =Rn −Qn・Nの演算を行う必要があ
るが、これは上に示した繰り返し演算が終わった後であ
り、従来のように繰り返し演算の途中でR>Nの判定を
行う必要がないので、別の回路等で行うことができ、全
体の処理速度には影響しない。
【0027】また、Rj の演算に伴う遅延時間をなくす
ために、アルゴリズム1においてRj をRj,n-i 、Bを
Bn-i に分解して次のアルゴリズム2のように表現す
る。ここでx,y は任意の整数でよいが、以下では、x=y=
1 とした場合について説明する。
【0028】(アルゴリズム2) FOR j=1 TO n FOR i=1 TO n Rj,n-i =Dj-1,n-i +Cj-2,n-i +dwm (An-j・Bn-i ) +upm (An-j-1・Bn-i )+Ej-1,n-i Dj,n-i =dwm (Rj,n-i ) Sj,n-i =upm (Rj,n-i ) Cj-1,n-i =Sj-1,n-i NEXT NEXT ただし、Rj-1,n・Xn =Qj-1・N+Ej-1 ,Qj-1 =[Rj-1,n・Xn /N] (1) Ej-1 =Ej-1,n-1・Xn-1 +Ej-1,n-2・Xn-2 +・・・ +Ej-1,1・X+Ej-1,0 (2) D0,n-i-1 =0,C0,n-i-1 =0,E0,n-i =0,Bn =B-1=0 dwm (Z):Zの2m 桁以下の値 upm (Z):Zの2m+1 以上の値を2m+1 で割った値を
意味する。
【0029】基本的にアルゴリズム1とアルゴリズム2
は同じであるが、アルゴリズム2の方がより実際の回路
の動作に近い形で表している。アルゴリズム2は図1,
図2のような回路で乗算器を構成できる。
【0030】図1は剰余乗算の基本演算R=R・ X+A
n-j・B mod Nを実行する回路で、基本演算素子
(プロセッシング・エレメント:以後PE)と呼ばれ
る。具体的にはアルゴリズム(2)に示されるように、
Rj,n-i =Dj-1,n-i +Cj-2,n-i +dwm (An-j・Bn-
i )+upm (An-j-1・Bn-i )+Ej-1,n-i の演算を実
行する。
【0031】図2は全体がシストリックアレイ(村岡洋
一:“並列処理”,昭晃堂,1986,pp131-133 参照)と
呼ばれる構成になっている。シストリックアレイは小さ
な同一の機能ブロックであるPEによるパイプライン処
理によって演算が実行される。そのPEが図1のように
構成される。
【0032】図1のPEはAn-j・Bn-i を演算するm*
mビットの乗算器と、Rj-1,n の値から(1)、(2) 式によ
ってEj-1,n-i の値を各々出力するROMと、2ビット
のキャリーを持つ4入力mビット加算器または5入力加
算器n+1個と、Rj,n-i(i=1・・・n)を格納するm+2ビ
ットのレジスタと各々An-i ,Qj-1 を格納するレジス
タとBn-i ,Tn-i を遅らせる2段のレジスタから構成
される。
【0033】このレジスタの下位mビットはRj,n-i の
下位m桁(dwm (Rj,n-i )=Dj,n-i )を意味し、上
位2ビットはRj,n-i のm+1桁以上の値(upm (Rj,
n-i)=Sj,n-i )を意味する。これによって、各加算
器毎の桁上がりはSj,n-i によって各クロック毎に吸収
される。またSj,n-iは右隣のPEにおいてCj,n-iとな
り、2つ右隣のPEにおいて桁上がりとして右隣のレジ
スタの下位mビットともに加算される。従って、アルゴ
リズム1のようなRj の演算に伴う遅延時間をなくすこ
とができる。
【0034】以上のように、Dj,n-i ,Rj,n-i ,Cj,
n-i はレジスタの状態を表すが、添え字のiはクロック
を意味し、jは図2における#の数を表し、右から左に
j=1(#1)からj=n(#n)となるPEの位置を
示す。
【0035】次に図1,2の動作について説明する。以
下にn=4の場合の図1,2の回路に対するタイミング
チャートを示す。
【0036】 #1:L out |AB6|AB5|AB4|AB3| 0 | 0 |AB6|AB5|AB4|AB3| B in |B3|B2|B1|B0| 0 |B3|B2|B1|B0| 0 | U(A3) |AB7|AB6|AB5|AB4| 0 | 0 |AB6|AB5|AB4| 0 | P | 0 | 0 | E j-1 | 0 | 0 | D out |D7|D6|D5|D4|D3|D7|D6|D5|D4|D3| S out | 0 |S7|S6|S5| 0 | 0 |S7|S6|S5|S4| #2:L out |AB5|AB4|AB3|AB2| 0 | 0 |AB5|AB4|AB3|AB2| B in |B3|B2|B1|B0| 0 |B3|B2|B1|B0|0| U(A3) |AB6|AB5|AB4|AB3| 0 |AB6|AB5|AB4|AB3|0| P |D7+S7 |D7+S7 | E j-1 |E6|E5|E4|E3| 0 |E5|E4|E3|E2| 0 | D out |D6|D5|D4|D3|D2|D6|D5|D4|D3| C out | 0 | 0 |C6|C5| 0 | 0 | 0 |C6|C5|C4| S out | 0 |S7|S6|S5|S4| 0 |S7|S6|S5|S4| #3:L out | 0 |AB4|AB3|AB2|AB1| 0 |AB4|AB3| B in |B3|B2|B1|B0| 0 |B3|B2|B1| U(A3) |AB5|AB4|AB3|AB2| 0 |AB5|AB4|AB3| P |S7;D6+S6 |S7;D6+C6 E j-1 |E5|E4|E3|E2| 0 |E4|E3|E2| D out |D5|D4|D3|D2|D1|D5|D4| C out | 0 | 0 |C5|C4| 0 | 0 | 0 |C5|C4| S out |S6|S5|S4|S3| 0 |S6|S5| #4:L out | 0 |AB4|AB3|AB2|AB1| 0 | B in |B3|B2|B1|B0| 0 |B3| U(A3) |AB5|AB4|AB3|AB2| 0 |AB4| P |S6;D5+S5 |S6;D E j-1 |E4|E3|E2|E1| 0 |E3| D out |D4|D3|D2|D1|D0| C out | 0 | 0 |C4|C3| 0 | 0 | 0 | S out |S5|S4|S3|S2| 0 |
【0037】図1,2において各レジスタの初期状態は
オール0とする。
【0038】最初のPE(j=1)においてBがBinか
らmビット毎にB3・・・B0 の順で入力されると、その値
を受ける乗算器からA3・Bn-i(i=1・・・4)が順次出力され
る。この出力は2mビットあるので、例えばA3・B3 は
多項式の乗算で考えるとX6の係数であるがX7 の係数
も含んでいることになる。従って、乗算器からの出力を
上位と下位のm桁毎に分けて上位mビットの出力UはX
7 からX4 までの係数であるので、上記チャートではA
Bi(i=7・・・4)で表し、下位mビットの出力Lout X6
らX3 までの係数であるのでABi(i=6・・・3)で表す。上
位mビット出力Uは同じPEの加算器に入力し、下位m
ビット出力Lout は1度外部のレジスタで1クロック遅
らせてD0,n-i として#1のPEの加算器で加える。ま
た、その加算器は後述する#2のPEからのフィードバ
ック出力Lout を加え、その結果をレジスタ(R1,n-i
)に入力する。このとき、R1,n-i(i=1・・4) の下位m
ビットはD1,n-i として次のPEに出力され、桁上がり
であるm+1ビット以上はS1,n-i として出力され、次
のPEを通ってC1,n-i として2つ先のPEに出力され
る。このとき、D1,n-i ,C1,n-i は多項式の係数で考
えると各々X7 〜X4,X7 〜X5 の係数を表すのでDk
(k=7・・・4),Ck(k=7・・・5)で表しており、上記のチャー
トでは、他の信号についても多項式の係数による表現を
用いている。また、剰余を表すE0,n-i は0であり、B
n-i(n=1・・・4)及び剰余に対するタイミングであるTn-i
(i=1・・・4)はレジスタによって各々2クロック遅らされ
て次のPEに出力される。
【0039】次のPE(j=2)においてj=1のとき
と同様にBが入力されるとA2・Bn-i(i=1・・・4)が乗算器
から上位と下位mビット毎に出力される。このとき、下
位mビットはLout として#1のPEにフィードバック
される。ここで、#1のPEから入力されるD7 とS7
を加えた結果をR1,n としてレジスタPに格納し、式
(1) からEj-1 の値をTn-i に同期させてE1,n-i とし
てROMから順次出力させ加算器に入力し、その結果を
R2,n-i としてレジスタに入力し、Dk ,Sk として次
のPEに出力する。
【0040】更に次のPE(j=3)でBが入力される
とA1・Bn-i(i=1・・・4)が乗算器から上位と下位mビット
毎に出力され、前PEと同様U,Lout ,Din,Ej-1
を加えるが、このとき2つ前のPEからの桁上がりキャ
リーであるC1,n-i も加えることによってアルゴリズム
(2)の演算が実行される。U,Lout ,Din,Ej-1
は各々mビットであるので加算器の出力はm+2ビット
であり、Rj,n-i のレジスタはm+2ビット必要であ
る。また、桁上がりビットが2ビットであればキャリー
として加算器に加えても加算器の出力はm+2ビットと
なり、変わらない。
【0041】更に、次のPE(j=4)においてもj=
3と同様の動作を行う。その結果、各レジスタに格納さ
れた値がRn となっていることが判る。
【0042】(剰余乗算回路の実施例2)図1のPEに
おいてBin,Tinを受けるレジスタ4つはBin,Tinの
入力を2クロック遅らせるためだけに必要である。従っ
て、図1のPEからB,Tに関する出力とレジスタ4つ
を省き、図4に示すようにB,Tの値は別のシフトレジ
スタに格納してレジスタ2つおきに各PEに順次入力す
るようにすると、全体の回路規模を小さくすることがで
きる。
【0043】(剰余乗算回路の実施例3)また、全ての
PEで行われる演算が同じであるので、図4に示すよう
に初めPEにAn-1 を設定してBを入力して演算を行
い、そのPEからの出力を1度メモリに蓄えて、PEの
動作が終了し次第、An-2 を同じPEに設定しなおして
Bとメモリから出力をフィードバック入力し演算を行
い、それをAn-i (i=3・・・n)について繰り返すことによ
って1つのPEで剰余乗算を行うこともできる。p個の
PEを組み合わせて1つのPEとみなせば、フィードバ
ック回数は1/pになるので処理速度はp倍になる。従
って、この方式は、PEの個数によって任意に回路規模
と処理速度のトレードオフが容易に行える構成になって
いる。
【0044】フィードバックを用いる方法について以下
に説明する。
【0045】まず、アルゴリズム1をアルゴリズム2と
同様、j をRj,n-i 、BをBn-i に分解して次のアルゴ
リズム3のように表現する。ここでもx,y は任意の整数
でよいが、以下では、x=y=1 とした場合について説明す
る。
【0046】(アルゴリズム3) FOR h=1 TO n/p FOR k=1 TO p FOR i=1 TO n j=p・(h−1)+k Rj,n-i =Dj-1,n-i +Cj-2,n-i +dwm (An-j・Bn-i ) +upm (An-j-1・Bn-i )+Ej-1,n-i Dj,n-i =dwm (Rj,n-i ) Sj,n-i =upm (Rj,n-i ) Cj-1,n-i =Sj-1,n-i NEXT NEXT NEXT ただし、Rj-1,n・Xn =Qj-1・N+Ej-1 ,Qj-1 =[Rj-1,n・Xn /N] (1) Ej-1 =Ej-1,n-1・Xn-1 +Ej-1,n-2・Xn-2 +・・・ +Ej-1,1・X +Ej-1,0 (2) D0,n-i-1 =C0,n-i-2 =E0,n-i =Bn =B-1=0 dwm (Z):Zの2m 桁以下の値 upm (Z):Zの2m+1 以上の値を2m+1 で割った値を
意味する。
【0047】アルゴリズム3は図1,図5のような回路
で剰余乗算回路を構成できる。
【0048】図1のPEはAn-j・Bn-i を演算するm*
mビットの乗算器と、Rj-1,n の値から(1)、(2) 式によ
ってEj-1,n-i の値を各々出力するROMと、2ビット
のキャリーを持つ4入力mビット加算器または5入力加
算器n+1個と、Rj,n-i(i=1・・・n)を格納するm+2ビ
ットのレジスタと各々An-i ,Qj-1 を格納するレジス
タとBn-i ,Tn-i を遅らせる2段のレジスタから構成
される。このレジスタの下位mビットはRj,n-i の下位
m桁(dwm (Rj,n-i )=Dj,n-i )を意味し、上位2
ビットはRj,n-i のm+1桁以上の値(upm(Rj,n-i
)=Sj,n-i )を意味する。これによって、各加算器
毎の桁上がりはSj,n-i によって各クロック毎に吸収さ
れる。またSj,n-i は右隣のPEにおいてCj,n-i とな
り、2つ右隣のPEにおいて桁上がりとして右隣のレジ
スタの下位mビットともに加算される。従って、アリゴ
リズム(1)のようなRj の演算に伴う遅延時間をなく
すことができる。以上のように、Dj,n-i ,Rj,n-i ,
Cj,n-i はレジスタの状態を表すが、添え字のiはクロ
ックを意味する。また、アルゴリズム(2)におけるk
は図5における#の数を表し、1つの演算装置に含まれ
るPEの数を表す。図5はp個のPEから構成される演
算装置である。hは図5の演算装置への入力またはフィ
ードバック入力の回数を表す。図6は図5の演算装置と
その出力を受け、再び図5の演算回路にフィードバック
入力するメモリと、それらをコントロールする制御回路
からなる剰余乗算装置を表す。制御回路はクロックをカ
ウントするカウンタと、その出力をアドレスとするRO
M等から簡単に構成できる。
【0049】次に図1、5、6の動作について説明す
る。以下にn=4,p=2の場合のタイミングチャート
を示す。
【0050】 #1:L out |AB6|AB5|AB4|AB3| 0 | 0 |AB4|AB3|AB2|AB1| B in |B3|B2|B1|B0| 0 |B3|B2|B1|B0| 0 | U(A3) |AB7|AB6|AB5|AB4| 0 |AB5|AB4|AB3|AB2| 0 | P | 0 |S7;D6+S6 | E j-1 | 0 |E5|E4|E3|E2| 0 | D out |D7|D6|D5|D4|D3|D5|D4|D3|D2|D1| C out | 0 | 0 | 0 |C5|C4| 0 | 0 | 0 | S out | 0 |S7|S6|S5| 0 |S6|S5|S4|S3| 0 | #2:L out |AB5|AB4|AB3|AB2| 0 | 0 |AB4|AB3|AB2|AB1| B in |B3|B2|B1|B0| 0 |B3|B2|B1|B0| 0 | U(A3) |AB6|AB5|AB4|AB3| 0 |AB5|AB4|AB3|AB2| 0 | P |D7+S7 |S6;D5+S5 | E j-1 |E6|E5|E4|E3| 0 |E4|E3|E2|E1| 0 | D out |D6|D5|D4|D3|D2|D4|D3|D2|D1| C out | 0 | 0 |C6|C5| 0 | 0 | 0 |C4|C3| 0 | 0 | S out |S7|S6|S5|S4| 0 |S5|S4|S3|S2|
【0051】図1、5、6において各レジスタの初期状
態はオール0とする。更に、図5の各PEには#1のP
EにA3 ,#2のPEにA2 が設定されているとする。
【0052】最初のPE(j=1)においてBがBinか
らmビット毎にB3・・・B0 の順で入力されると、その値
を受ける乗算器からA3・Bn-i(i=1・・・4)が順次出力され
る。この出力は2mビットあるので、例えばA3・B3 は
多項式の乗算で考えるとX6の係数であるがX7 の係数
も含んでいることになる。従って、乗算器からの出力を
上位と下位のm桁毎に分けて上位mビットの出力UはX
7 からX4 までの係数であるので、図3においてABi
(i=7・・・4)で表し、下位mビットの出力Lout X6 から
3 までの係数であるのでABi(i=6・・・3)で表す。上位
mビット出力Uは同じPEの加算器に入力し、下位mビ
ット出力Lout は1度外部のレジスタで1クロック遅ら
せてD0,n-i として#1のPEの加算器で加える。ま
た、その加算器は後述する#2のPEからのフィードバ
ック出力Lout を加え、その結果をレジスタ(R1,n-i
)に入力する。このとき、R1,n-i(i=1・・4) の下位m
ビットはD1,n-i として次のPEに出力され、桁上がり
であるm+1ビット以上はS1,n-i として出力され、次
のPEを通ってC1,n-i として2つ先のPEに出力され
る。このとき、D1,n-i ,C1,n-i は多項式の係数で考
えると各々X7 〜X4 ,X7 〜X5 の係数を表すのでD
k(k=7・・・4),Ck(k=7・・・5)で表しており、上記チャート
では、他の信号についても多項式の係数による表現を用
いる。また、剰余を表すE0,n-i は0であり、Bn-i(n=
1・・・4)及び剰余に対するタイミングであるTn-i(i=1・・・
4)はレジスタによって各々2クロック遅らされて次のP
Eに出力される。 次のPE(j=2)においてj=1
のときと同様にBが入力されるとA2・Bn-i(i=1・・・4)が
乗算器から上位と下位mビット毎に出力される。このと
き、下位mビットはLout として#1のPEにフィード
バックされる。ここで、#1のPEから入力されるD7
とS7 を加えた結果をR1,n としてレジスタPに格納
し、式(1) からEj-1 の値をTn-i に同期させてE1,n-
i としてROMから順次出力させ加算器に入力し、その
結果をR2,n-i としてレジスタに入力し、Dk ,Sk と
して次のPEに出力する。
【0053】p=2であるので、図5の演算装置からD
k ,Sk が順次出力される。Dk Sk の出力が開始され
たとき、#1のPEはまだ演算中であるので、メモリに
Dk,Sk の出力を入力し遅延させる。ここでは1クロ
ック分の遅延で#1の演算が終了する。従って、メモリ
で1クロック遅延させて再び図5の演算装置にDk Sk
及びBn-i ,Tn-i をフィードバック入力する。それと
同時に図5の#1のPEにはA1 ,#2のPEにはA0
を設定する。
【0054】フィードバック入力(j=3)によって最
初のPEにBが入力されるとA1・Bn-i(i=1・・・4)が乗算
器から上位と下位mビット毎に出力され、前PEと同様
U,Lout ,Din,Ej-1 を加えるが、このとき2つ前
のPEからの桁上がりキャリーであるC1,n-i も加える
ことによってアルゴリズム(2)の演算が実行される。
U,Lout ,Din,Ej-1 は各々mビットであるので加
算器の出力はm+2ビットであり、Rj,n-i のレジスタ
はm+2ビット必要である。また、桁上がりビットが2
ビットであればキャリーとして加算器に加えても加算器
の出力はm+2ビットとなり変わらない。
【0055】更に、次のPE(j=4)においてもj=
3と同様の動作を行う。その結果、図5の演算装置から
出力される値がRn となっていることが判る。
【0056】(剰余乗算回路の実施例4)図1のPEに
おいてBin,Tinを受けるレジスタ4つはBin,Tinの
入力を2クロック遅らせるためだけに必要なものであ
る。従って、図1のPEからB,Tに関する出力とレジ
スタ4つを省き、図7に示すようにB,Tの値は別のシ
フトレジスタに格納してレジスタ2つおきに各PEに順
次入力するようにすると、全体の回路規模を小さくする
ことができる。
【0057】(剰余乗算回路の実施例5)図5の演算装
置をLSI化したとき、そのLSIを複数縦続に接続す
ることによって処理を高速化することができることも明
かである。q個のLSIによって高速化する場合、これ
はアルゴリズム2においてpの値をq倍することに相当
する。2つのLSIによって剰余乗算を実行する場合を
図8に示す。
【0058】(剰余乗算回路の実施例6)これは、整数
上の剰余乗算回路に限らず有限体上の剰余乗算にも適用
できる。ただしこの場合、図1のPEの構成は図9に示
すように変える必要がある。
【0059】有限体上では桁上がりがないために、加算
の桁上がりから生成されるCin,Cout ,Sin,Sout
に関する信号と、乗算の桁上がりから生成されるLout
,Linに関する信号が省かれ、非常に簡単な構成にな
る。
【0060】従って、図9に示すPEのBinとBout ,
TinとTout ,DinとDout を縦続に接続することによ
って有限体上の剰余乗算が整数上の剰余上算と同様に生
成されることは明かである。
【0061】また、剰余演算において−Q・ Nの代わり
にEを加えているが、従来のように−Q・ Nの演算によ
って本方式の剰余乗算回路を構成してもよいのは明かで
ある。
【0062】また、“現代暗号理論”6章6.4.1節
にRSA暗号装置の高速化として、次のような手法が示
されている。
【0063】暗号化:暗号化鍵eの値をできるだけ小さ
く選ぶ。(最低値は3) 復号化:中国人の剰余定理によって高速化を行う。
【0064】この手法でRSA暗号装置を構成しようと
した場合、従来の剰余乗算回路では暗号化と復号化で乗
数や除数の桁数が異なるため、同じ剰余乗算回路によっ
て暗号化と復号化を実行しにくいといった問題点が生じ
る。そのために、剰余乗算を完全にソフト的な手法で行
うか、別々の回路によって行うことが多かった。しか
し、本発明による剰余乗算回路は乗数や除数の桁数は回
路規模ではなく、処理回数となっているので、同じ回路
によって暗号化と復号化を行いやすいといった利点がで
てくる。この処理回数は図2の演算装置へのフィードバ
ック入力回数が暗号化と復号化で異なるだけであるの
で、制御回路による制御を変えるだけで簡単に実現でき
る。
【0065】また、中国人の剰余定理によるRSA暗号
の演算は、基本的に並列に実行できるので複数の演算装
置によって剰余乗算を実行する本発明の方式には最適で
ある。
【0066】(剰余乗算回路の実施例7)R=A・ B m
od N(Aはkビット,Bはm・ nビットの整数)の剰
余乗算を考える。Aを1ビット毎,Bをmビット毎に分
割すると、次のように表せる。
【0067】 A=Ak-1・2k-1+Ak-2・2k-2+・・・+A1・2+ A0 (3) B=Bn-1・Xn-1+Bn-2・Xn-2+・・・+B1・X+ B0 (4) ここで、X=2m とし、A,Bについて上位桁から分割
したビット系列を各々Ak-i(i=1・・・k),Bn-i(i=1・・・n)
とする。この場合、剰余乗算は次の演算をj=1らk に対
して繰り返すことよって求められることが知られてい
る。
【0068】 R=R・ 2+Ak-j・B−Q・ N (5) ただし、Q=[R/N],Rの初期値は0 この演算をシストリックアレイで実現するために、上の
演算を次のようなアルゴリズムで表す。
【0069】(アルゴリズム4) D0,n-i-1 =0;C0,n-i-1 =0 FOR j=1 TO k FOR i=1 TO n Rj,n-i =2・ Dj-1,n-i +Cj-2,n-i +Ak-j・Bn-i +Ej,n-i Dj,n-i =dwm-1 (Rj,n-i ) Sj,n-i =upm-1 (Rj,n-i ) Cj-1,n-i =Sj-1,n-i NEXT NEXT ただし、 Sj-1,n-1・Xn =Qj-1・N+Ej-1 , (6) Ej-1 =Ej-1,n-1・Xn-1+・・・+Ej-1,1・X+ Ej-1,0 (7) dwm−1 (Z):Zの2m-1 桁以下の値 upm-1 (Z):Zの2m 以上の値を2m で割った値 このアルゴリズムは図10,図11のような回路で構成
できる。図11は全体がシストリックアレイ構成になっ
ている。シストリックアレイはプロセッシングエレメン
ト(PE)と呼ばれる小さな同一の機能ブロックによる
パイプライン処理によって演算が実行される。そのPE
は図10のように構成される。
【0070】上記のアルゴリズム4におけるiはクロッ
クを意味し、jは図11における#の数を表し、右から
左にj=1(#1)からj=n(#n)となるPEの位
置を示す。図11の各PEはAk-j(j=1・・・k)の値が内部
レジスタに設定されているとする。#1のPEにはBin
にBn-i(i=1・・・n)が上位桁から順に入力され、それに合
わせてTinから剰余出力に対するタイミング信号Tn-i
(i=・・・n) が入力される。各々レジスタによって遅らさ
れて各々Bout ,Tout から次のPEに出力される。#
1のPEのDin,Sin,Cinには0が設定される。PE
の構成要素及び動作を次のように分解して考える。 1)乗算部 各PEのAk-j・Bn-i の乗算部はAk-j が1ビットであ
るので、Ak-j =1のときのみBn-i を出力するm個の
アンドによって簡単に実現できる。 2)加算部 加算器は乗算器出力Ak-j・Bn-i と後述する剰余出力E
j-1,n-i と2・ Dj-1,n-i とCj-2,n-i を入力とする4
入力加算器によって構成されるので2ビットのキャリー
が出力される。従って、加算器出力を受ける各レジスタ
はm+2ビットのレジスタでよい。また、j番目のPE
のレジスタRj,n-i のm−1ビット以下の値をDj,n-i
,mビット以上の値をCj,n-i として次のPEに出力
する。ただし、2・ Dj-1,n-i はDj-1,n-i を1ビット
ずらして加算器に入力することによって実現する。 3)剰余部 ここでは簡単のために、Nを値としてではなく桁で超え
た値であるSj-1,n-1に対してQj-1 を求める。また、
−Qj-1・Nを実行する代わりに−Sj-1,n-1・Xn +Ej-
1 を実行することによって剰余演算を行う。なぜなら
ば、Sj-1,n-1・Xn =Qj-1・N+Ej-1 (Ej-1 <N)
となるためである。−Sj-1,n-1・Xn はSj-1,n-1 がオ
ーバーフローすることによって自動的に行われるので、
剰余演算に関する実際の演算はEj-1 を加算するだけで
よい。Ej-1 を加算する方法は次のようにして行う。#
jのPEにおけるEj-1 を 式のように表すとBn-i と
Ej-1,n-i は同じ桁であるので、Bn-i に同期させたタ
イミング信号Tn-i によってEj-1,n-i(i=1・・・n)を順次
出力させる。Sj-1,n-1 は3ビットであり、Tn-i はn
−iを表す値であるので3+log(n−i) ビットの入力
を持つROMによってEj,n-i 出力回路を実現すること
ができる。また、Sj-1,n-1 を入力・保持するm+3ビ
ットのレジスタとセレクタも必要とする。 4)遅延部 Bn-i とTn-i の値をパイプライン的に伝送するための
レジスタによって構成される。Bn-i ,Tn-i に対して
各々mビット,log(n−i) ビットのレジスタを必要と
する。
【0071】以下にk=n=m=4とした場合の図11
の回路の動作を表すタイミング・チャートを示す。
【0072】 #1:AB1 |a3B3|a3B2|a3B1|a3B0| E1 |0 | S1 |0 |0 |0 |0 | D1=AB1 |D15|D11|D7 |D3 | #2:Q2 |d18 | AB2 |a2B3|a2B2|a2B1|a2B0| E2 |E14|E10|E6 |E2 | S2 |S18|S14|S10|S6 | D2=2・D1+AB2+E2 |D14|D10|D6 |D2 | #3:Q3:S2,D2 |S18, D17 | AB3 |a1B3|a1B2|a1B1|a1B0| E3 |E13|E9 |E5 |E1 | S3 |S17|S13|S9 |S5 | D3=2・D2+AB3+E3 |D13|D9 |D5 |D1 | #4:Q4:S3,D3 |S17, D16 | AB4 |a0B3|a0B2|a0B1|a0B0| E4 |E12|E8 |E4 |E0 | S4 |S16|S12|S8 |S4 | D4=2・D3+AB4+E4+C2 |D12|D8 |D4 |D0 |
【0073】図10,11において各レジスタの初期状
態はオール0とする。
【0074】最初のPE(j=1)においてBがBinか
らmビット毎にB3・・・B0 の順で入力されると、その値
を受ける乗算器からa3・Bn-i(i=1・・・4)が順次出力され
る。この値を加算器に入力しレジスタでラッチし出力さ
れる。この出力をDx で表すと、#1のPEからはD1
5,D11,D7 ,D3 が出力される。ここで、Dx は次
のような意味を持つ。Aは1ビット毎に分解されるので
ajはAのj+1桁目のビットを表す。また、Bはm=
4より4ビット毎に分解されるのでBi はBの4・(i+
1) 桁目から4i+1桁目までのビットb4(i+1)-1〜b
4iを表す。従って、aj・Bi は多項式の乗算で考えると
4・(i+1) +j桁目から4i+j+1桁目のビットを
表すことになるので、Dx は桁によってD4i+jと表され
る。ここで、D4i+jはd4(i+1)+j-1〜d4i+jの4ビット
から構成される。
【0075】次のPE(j=2)において、1クロック
遅れてBがBinから入力されると乗算器からa2・Bn-i
(i=4・・・1)が出力される。このとき、Dinから最初の入
力D15が入力しているので、最上位桁d18から(4) 式に
従って、剰余E14〜E2 がタイミング信号Tn-i に従っ
て出力される。ここで、Ei も4ビット毎の出力であ
る。乗算出力と剰余出力とDin入力との加算を行うこと
によって、D14〜D2 とS18〜S6 の出力がレジスタか
ら出力される。ここで、S18〜S6 は加算によって生じ
た桁上がりキャリーであり、2ビットの値である。
【0076】次のPE(j=3)においてもj=2のP
Eと同様の演算が行われるが、剰余は最上位桁のS18と
その1ビット下の桁であるd17から(4) 式によって生成
される。
【0077】最後のPE(j=4)においてもj=3の
PEと同様の演算が行われるが、ここでは#2のPEか
らのキャリーが更に加算される。ここで、#4のPEで
の加算は最初E12で示されるように16桁目から13桁
目である。#2のPEからの最初のキャリーはS14の2
ビットであるであるので16桁目と15桁目である。従
って、同じ加算器によって加算できる。このPEからの
出力が剰余乗算の結果となっていることがわかる。ま
た、図10のPE1つでAk-j に対する(5) 式の演算が
実行できることが判る。
【0078】(剰余乗算回路の実施例8)シストリック
アレイは全てのPEで行われる処理が同一であり、PE
間の入出力関係も同一である。従って、シストリックア
レイは同一回路の時分割処理が行いやすいアーキテクチ
ャとなっている。
【0079】最も簡単な構成は、図10に示したPE1
つとメモリによって実現できる。それを図12に示す。
図12は次のように動作する。
【0080】1)最初、PEにAk-1 を設定しBn-i ,
Tn-i(i=1・・・n)を順次PEに入力する。上述したよう
に、1つのPEは(5) 式の演算を実行するので、その出
力であるR=Ak-1・Bがメモリに入力される。また、B
n-i ,Tn-i(i=1・・・n)の入力が終わり次第、PEの設定
をAk-2 に変える。
【0081】2)PEにメモリから前演算結果であるR
をフィードバック入力し、Bn-i ,Tn-i も繰り返し入
力する。それによって、PEからR=R・ X+Ak-2・B
−Q・ Nが出力されるので、その出力を再びメモリに蓄
える。
【0082】3) PEの設定をAk-j(j=3・・・k)に変えて
2)の動作を繰り返す。
【0083】以上によって、図12の回路で剰余乗算が
実行できることが言える。これはk個のPE1回で行う
演算を1個のPEをk回用いることで行ったものであ
る。さらに、PEを1個ではなくp個パイプライン状に
接続し、Ak-j〜Ak-j+p-1 を連続して設定することに
よってp個のPEによるk/p回の演算の繰り返しで剰
余乗算を実行することができる。これは回路規模(p個
のPE)を処理速度(k/p回の演算)でトレードオフ
したものと考えることができる。このようにシストリッ
クアレイで構成した回路は簡単に回路規模と処理速度の
トレードオフができ、回路の小型化を行うことができ
る。
【0084】剰余乗算のみであれば、前述の実施例のよ
うにしてシストリックアレイによって剰余乗算回路が構
成できることが示された。ここで、RSA暗号装置を構
成することを考える。上述の実施例に示す剰余乗算回路
は1回の剰余乗算を実行するが、この回路から得られる
剰余乗算結果はmビット毎に2ビットのキャリービット
を含む。その剰余乗算結果を用いて剰余乗算を繰り返す
場合、キャリービットを補正しなければ前と同じ回路に
よって剰余乗算を実行できない。従って、RSA暗号の
ように前の剰余乗算結果を用いて剰余乗算を繰り返し行
う場合、前の剰余乗算結果をいかに簡単かつ効率的に補
正するかということも重要な問題になる。
【0085】ここで、キャリービットを持つ系列Ac ,
Bc を式(3) ,(4) に示すA,Bとキャリービット系列
a,bに分けて考えると、次のように表わすことができ
る。 Ac =A+a・ X a=ak-m・Xn-2 +・・・ +a2・m・X+am Bc =B+b・ X b=bn-1・Xn-2 +・・・ +b2・X+b1 そこで、Ac ,Bc に対するRc =Ac・Bc mod Nの剰
余乗算を次のように表す。
【0086】 (RSA暗号装置用剰余乗算回路の実施例1) D0,n-i-1 =0;C0,n-i-1 =0 FOR s=1 TO k/m FOR c=1 TO m FOR i=1 TO n j=( s−1)・m+ c P Rj,n-i =2・dwm-1 (Rj-1,n-i )+Cj-2,n-i E +Ak-j・( Bn-i+bn-i)+Ej,n-i A Cj-1,n-i =upm-1 (Rj-1,n-i ) NEXT NEXT FOR i=1 TO n P Rj,n-i =dwm (Rj-1,n-i )+Cj-2,n-i E +ak-j・( Bn-i+bn-i)+Ej,n-i B Cj-1,n-i =upm (Rj-1,n-i ) NEXT NEXT FOR i=1 TO n P Rk,n-i =Rk,n-i +Ck-1,n-i E Rk+1,n-i =dwm (Rk,n-i )+upm(Rk,n-i-1 ) C Rk+2,n-i =dwm (Rk+1,n-i ) +upm (Rk+1,n-i-1 )+Ek+1,n-i NEXT 上のアルゴリズムに示したPEA,PEB,PECの処
理は図12〜14のようなPEによって各々実現でき
る。各PEは次のような動作を行う。
【0087】PEC: 剰余乗算の最後に図14に示す
ようなPEを挿入し、このPEからのキャリー出力を1
ビットにする。図14のPEはまず前PEからの出力で
あるDout Sout ,Cout を加算し1つの値Rk,n-i に
する。次にRk,n-i のm+1ビット以上の値Ck,n-i を
レジスタで遅らせてmビット以下の値Dk,n-i と加算す
ることによってその加算結果のキャリーCk+1,n-i を1
ビットにする。ただし、最上位桁のキャリーCk,n-1 は
別のレジスタに保持しておく。次に、Ck,n-1+Ck+1,n
-1 から最上位桁の剰余Ek+1,n-1 を計算し、剰余乗算
の最上位桁であるDk+1,n-1 +Ck+1,n-2 +Ek+1,n-1
を予め計算する。ここで、この最上位桁にキャリーが生
成される場合、最終結果であるRk+2,n-i の演算には1
+Ck,n-1 +Ck+1,n-i に対する剰余を出力し、最上位
桁のキャリービットをないように判定・制御する。この
判定回路は3ビットのROMと加算器によって実現され
る。
【0088】PEA: Bのキャリー補正のためにBin
からの入力をBn-i からBn-i +bn-i にする。従っ
て、図12に示すようにBn-i とbn-i を同時にBinに
入力し、An-j とのアンドを行う。よって、PEの乗算
部のアンド回路はm+1個になる。ただし、An-j・bn-
i のアンド出力はAn-j・Bn-i のアンド出力の最下位ビ
ットと同じ桁である。
【0089】PEB: Aのキャリー補正を行うために
PEAm個毎に1個PEBを挿入する。PEBにはAの
キャリービットak-j が設定される。ak-j は前のPE
に設定されたAk-j と同じ桁であるので、PEBは式
の代わりに桁上げのないR=R+ak-j・B−Q・ Nの演
算を実行する。従って、前PEの出力Rj-1,n-i をmビ
ット以下をDj-1,n-i としてD'in から入力し、m+1
ビット以上をSj-1,n-i としてS'in から入力する必要
がある。ただし、PECから最上位桁のキャリーak-1
=0であるので、最上位桁のキャリーに対するPEBは
必要としない。従って、RSA暗号装置は図15のよう
な構成を持つシストリック剰余乗算回路によって実現さ
れる。図15においてPEAがm個毎にPEBが1個用
いられ、剰余乗算の最後にPEBの代わりにPECが1
個用いられる。これによって、図15のシストリックア
レイと同様の構成を持つ回路に図15からの出力を入力
しても同様の剰余乗算を実行することができる。
【0090】また、シストリックアレイの小型化に対し
ても、図12のPEを中心にPEA〜PECの機能をセ
レクタによって切り替える図16のPEを1つ含む回路
によって同様の小型剰余乗算回路を構成できる。PEA
〜PECの機能は類似しているので、大部分の回路を共
有でき図16のPEの回路規模の増大は小さい。
【0091】 (RSA暗号装置用剰余乗算回路の実施例2) 前述したように、次のような高速化手法が知られてい
る。
【0092】暗号化:暗号化鍵eの値をできるだけ小さ
く選ぶ。
【0093】復号化:中国人の剰余定理によって高速化
を行う。
【0094】この手法でRSA暗号装置を構成しようと
した場合、暗号化と復号化で乗数や除数の桁数が異なる
ため、同じ剰余乗算回路によって暗号化と復号化を実行
しにくいといった問題点が生じる。そのために、剰余乗
算をソフト的な手法で行うか、別々の回路によって行う
ことが考えられる。しかし、本発明による剰余乗算方式
は回路規模と処理回数で簡単にトレードオフできるの
で、乗数や除数の桁数の違いは処理回数を変えることに
よって同じ回路で暗号化と復号化を簡単に実現できる。
【0095】また、中国人の剰余定理によるRSA暗号
の演算は基本的に並列に実行できるので並列処理によっ
てRSA暗号化を行う本発明の方式には最適である。
【0096】以上によって剰余乗算回路及びRSA暗号
装置がシストリックアレイによって効率的に構成できる
ことが示された。
【0097】本発明による剰余乗算方式はシストリック
アレイの小型化からもわかるように、任意のp個のPE
によって剰余乗算回路を構成できる。従って、この方式
は、非常に回路化及びゲートアレイ化しやすいという特
徴を持っている。そこで、PEを1個から数個を単位と
してチップ化(以後SRC:シストリックRSAチップ
と呼ぶ)し、RAMと組合せ、それらを外部からプログ
ラミング制御することによってRSA暗号装置を簡単に
実現することができる。外部のプログラミング制御はR
OMによって柔軟に組むことができる。
【0098】また、高速処理が必要な場合は図18に示
すようにSRCを複数個用い、縦続に接続することによ
ってPEの総数が増す。それに合わせてプログラミング
を組替えることによって簡単に高速化していくことがで
きる。従って、本発明による剰余乗算方式はマルチ・ プ
ロセッシング方式へも適用できる。
【0099】従って、この方式でRSA暗号装置を構成
すると、次のような効果がある。
【0100】1)1つのPEにおいて行われる演算は簡
単な整数演算である。従って、本発明による剰余乗算ア
ルゴリズムはCPUやDSPによって容易に装置化され
る。従って、ICカードや電話回線程度の低速な伝送速
度における暗号化においては、CPUやDSPを用いて
より簡単なRSA暗号装置を実現することに有効であ
る。
【0101】2)本発明による剰余乗算回路は任意個数
のPEによって剰余乗算回路を構成することが可能であ
る。従って、現在の半導体技術で安価に量産可能な20
Kゲート程度以内のC- MOSのゲートアレイで、高速
なRSA暗号処理が1チップで実現できる。
【0102】3)複数チップによるRSA暗号のマルチ
・プロセッシング処理が簡単に実現できるので、チップ
数に比例した処理の高速化が簡単に行える。
【0103】4)剰余乗算を行う入力値の桁数がどんな
に大きくなっても、PEを継ぎ足して行くだけでよい、
即ちチップ数を増すだけでよく拡張性に富んでいる。
【0104】5)暗号化と復号化で乗数や除数の桁数が
異なるRSA暗号処理を行う場合、本発明による剰余乗
算方式は回路規模と処理回数で簡単にトレードオフでき
るので、乗数や除数の桁数の違いは処理回数を変えるこ
とによって同じ回路で暗号化と復号化を簡単に実現でき
る。これによって非常に効率的なRSA暗号装置を構成
することができる。
【0105】また、剰余は簡単のために(7) 式からRO
MによってEj-1 を出力するが、乗算器によって−Q・
Nを出力し演算できることも明かである。
【0106】
【発明の効果】以上説明したごとく、本発明の演算装置
によれば、小さな回路規模で、高速な剰余乗算が実行で
きるという効果がある。
【0107】以上説明したごとく、本発明の演算装置に
よれば、剰余乗算回路がシストリックアレイによって効
率的に構成できる。
【0108】この剰余乗算を行うシストリックアレイは
大きな桁の乗算を各PE毎に小さな桁(mビット)の乗
算に分解して行い、かつR<Nの判定を行う必要がなく
1クロックに必要な処理時間は乗算または除算用のRO
Mと加算器を信号が通過する時間だけでよいので、高速
なパイプライン処理が可能である。
【0109】また、シストリックアレイは簡単な同一P
Eの規則的な構成によって実現されるのでVLSI等の
大規模回路を構成しやすく、制御も各PEについて同一
で済み、データも同一クロックによって同期して動作す
るので非常に簡単に実現できるという利点もある。
【0110】複数個のPEからなる演算装置はPEの個
数に制限がないため回路規模の制約がなく、LSI化が
簡単である。また、この演算装置は簡単な同一PEの規
則的な構成によって実現されるのでLSI化に最適で、
制御も各PEについて同一で済み、データも同一クロッ
クによって同期して動作するので非常に簡単に実現でき
るという利点もある。また、A,Bの桁数が大きくなっ
たり、更なる高速化が要求されてもPEまたは演算装置
を継ぎ足して行くだけでよく拡張性に富んでいる。
【0111】また、PEで行われる演算は簡単な整数演
算であるのでマイクロプロセッサやディジタルシグナル
プロセッサによっても簡単に実現できる。
【0112】また、mが大きくなると回路規模は大きく
なり、処理速度は高速になる。従って、mの値によって
回路規模と処理速度を選択することができ、処理速度と
のトレードオフが容易に行える点でも効率的な剰余乗算
回路となっている。
【0113】また、本発明によれば、暗号化装置や復号
装置を小さな回路規模で実現できるという効果がある。
【図面の簡単な説明】
【図1】剰余乗算を行うプロセッシング・ エレメントの
回路構成例を示す図である。
【図2】本発明演算装置の回路構成例を示す図である。
【図3】本発明演算装置の他の回路構成例を示す図であ
る。
【図4】本発明演算装置の他の回路構成例を示す図であ
る。
【図5】本発明演算装置の他の回路構成例を示す図であ
る。
【図6】本発明演算装置の他の回路構成例を示す図であ
る。
【図7】本発明演算装置の他の回路構成例を示す図であ
る。
【図8】本発明演算装置の他の回路構成例を示す図であ
る。
【図9】有限体上の剰余乗算を行うPEの構成例を示す
図である。
【図10】剰余乗算を行うPEの構成例を示す図であ
る。
【図11】剰余乗算を行うプロセッシング・ エレメント
の回路構成例を示す図である。
【図12】本発明演算装置の回路構成例を示す図であ
る。
【図13】RSA暗号のための剰余乗算を行うPEの構
成例を示す図である。
【図14】RSA暗号のための剰余乗算を行うPEの構
成例を示す図である。
【図15】RSA暗号のための剰余乗算を行うPEの構
成例を示す図である。
【図16】本発明演算装置の他の回路構成例を示す図で
ある。
【図17】本発明演算装置の他の回路構成例を示す図で
ある。
【図18】SRCによるマルチ・プロセッシング処理回
路の構成例を示す図である。
【符号の説明】
R レジスタ P レジスタ S セレクタ + 加算器 An-j An-j を被乗数とした乗算器 Ej-1 Rj-1,n を受けて剰余Ej-1,n-i を出力するR
OM PE プロセッシングエレメント PEA プロセッシングエレメント PEB プロセッシングエレメント PEP 複数のPEよりなる回路 PES 演算装置 C 判定回路
フロントページの続き (56)参考文献 特開 昭63−138448(JP,A) 特開 昭63−192131(JP,A) 特開 昭63−129388(JP,A) 高速RSA暗号装置の構成法,電子情 報通信学会技術研究報告,1991年 3月 8日,Vol.90 No.460,p. 25−32 (58)調査した分野(Int.Cl.7,DB名) G09C 1/00 H04L 9/00 G06F 7/72 JICSTファイル(JOIS)

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】 与えられた整数A、Bの積を所定の整数
    Nで除した剰余を演算し、キャリービットを含む当該剰
    余を新たな整数AまたはBとして演算を繰り返す演算装
    置であって、キャリービットを除いた前記整数Aと前記
    整数Bとの積を前記整数Nで除した剰余を求めるための
    パイプライン状に複数段接続された第1のプロセッシン
    グエレメント群と、前記整数Aのキャリービットと前記
    整数Bとの積を前記整数Nで除した剰余を求めるための
    第2のプロセッサエレメントとが交互に接続され、最後
    段の前記第2のプロセッサエレメントにキャリービット
    を制御するための第3のプロセッサエレメントが後続し
    ており、前記第1のプロセッシングエレメントの各々
    が、 値を保持する保持手段と、 前段のプロセッシングエレメントの前記保持手段に保持
    された値に基づいて前記キャリービットを除いた前記
    整数Aと前記整数Bとの積のうち前記整数Nの最大桁を
    越える部分の前記整数Nに対する剰余に関して、プロ
    セッシングエレメント毎に定められた当該剰余の所定ビ
    ット部分を求める剰余演算手段と、 前記整数Bを所定ビット単位で順次入力して前記キャリ
    ービットを除いた前記整数Aの各段のプロセッシングエ
    レメント毎に定められた所定ビット部分に乗じる乗算手
    段と、 該乗算手段による乗算結果の下位部分と、後段のプロセ
    ッシングエレメントの前記乗算手段による乗算結果の上
    位部分と、前段のプロセッシングエレメントの前記保持
    手段に保持された値の下位部分と、前々段のプロセッシ
    ングエレメントの前記保持手段に保持された値の上位部
    分と、前記剰余演算手段の演算結果とを加算し、加算結
    果を前記保持手段に保持させる加算手段とを備えること
    を特徴とする演算装置。
  2. 【請求項2】 請求項に記載の演算装置を備え、送信
    すべき情報Mに対して、与えられた暗号鍵eに基づい
    て、当該演算装置による繰り返し演算により暗号C=M
    mod Nを求めることを特徴とする暗号化装置。
  3. 【請求項3】 前記整数A、Bとして、前記繰り返し演
    算における前回の演算結果または前記情報Mを選択する
    選択手段を有することを特徴とする請求項に記載の暗
    号化装置。
  4. 【請求項4】 前記暗号鍵eの各ビットの値に基づいて
    前記選択手段の選択動作を制御する制御手段を有するこ
    とを特徴とする請求項に記載の暗号化装置。
  5. 【請求項5】 請求項に記載の演算装置を備え、受信
    した暗号Cに対して、与えられた復号鍵dに基づいて、
    当該演算装置による繰り返し演算により情報M=C m
    od Nを求めることを特徴とする復号装置。
  6. 【請求項6】 前記整数A、Bとして、前記繰り返し演
    算における前回の演算結果または暗号Cを選択する選択
    手段を有することを特徴とする請求項に記載の復号装
    置。
  7. 【請求項7】 前記復号鍵dの各ビットの値に基づいて
    前記選択手段の選択動作を制御する制御手段を有するこ
    とを特徴とする請求項に記載の復号装置。
JP22598691A 1991-03-05 1991-09-05 演算装置及びこれを備えた暗号化装置、復号装置 Expired - Fee Related JP3406914B2 (ja)

Priority Applications (10)

Application Number Priority Date Filing Date Title
JP22598691A JP3406914B2 (ja) 1991-09-05 1991-09-05 演算装置及びこれを備えた暗号化装置、復号装置
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
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
EP92308056A EP0531158B1 (en) 1991-09-05 1992-09-04 Method of and apparatus for encryption and decryption of communication data
AT92308056T ATE183315T1 (de) 1991-09-05 1992-09-04 Verfahren und gerät zum verschlüsseln und entschlüsseln von kommunikationsdaten
DE69229766T DE69229766T2 (de) 1991-09-05 1992-09-04 Verfahren und Gerät zum Verschlüsseln und Entschlüsseln von Kommunikationsdaten
US07/941,236 US5321752A (en) 1991-09-05 1992-09-04 Method of and apparatus for encryption and decryption of communication data
HK98112269A HK1011430A1 (en) 1991-09-05 1998-11-24 Method of and apparatus for encryption and decryption of communication data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22598691A JP3406914B2 (ja) 1991-09-05 1991-09-05 演算装置及びこれを備えた暗号化装置、復号装置

Publications (2)

Publication Number Publication Date
JPH0568032A JPH0568032A (ja) 1993-03-19
JP3406914B2 true JP3406914B2 (ja) 2003-05-19

Family

ID=16838006

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22598691A Expired - Fee Related JP3406914B2 (ja) 1991-03-05 1991-09-05 演算装置及びこれを備えた暗号化装置、復号装置

Country Status (1)

Country Link
JP (1) JP3406914B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9707861D0 (en) 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
JP4472808B2 (ja) * 1999-08-19 2010-06-02 ネッツエスアイ東洋株式会社 積和演算装置及びこれを用いた暗号・復号装置
JP4484002B2 (ja) * 1999-10-04 2010-06-16 ネッツエスアイ東洋株式会社 演算プロセッサ
AU5871201A (en) * 2000-05-15 2001-11-26 M-Systems Flash Disk Pioneers Ltd. Extending the range of computational fields of integers
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
GB0221837D0 (en) * 2002-09-20 2002-10-30 Koninkl Philips Electronics Nv Improved quisquater reduction
US7870395B2 (en) 2006-10-20 2011-01-11 International Business Machines Corporation Load balancing for a system of cryptographic processors
US8532288B2 (en) 2006-12-01 2013-09-10 International Business Machines Corporation Selectively isolating processor elements into subsets of processor elements
US7890559B2 (en) 2006-12-22 2011-02-15 International Business Machines Corporation Forward shifting of processor element processing for load balancing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高速RSA暗号装置の構成法,電子情報通信学会技術研究報告,1991年 3月 8日,Vol.90 No.460,p.25−32

Also Published As

Publication number Publication date
JPH0568032A (ja) 1993-03-19

Similar Documents

Publication Publication Date Title
EP0502712B1 (en) Calculating apparatus and method of encrypting/decrypting communication data by using the same
US5321752A (en) Method of and apparatus for encryption and decryption of communication data
EP0576262B1 (en) Apparatus for multiplying integers of many figures
Wu et al. RSA cryptosystem design based on the Chinese remainder theorem
US6061706A (en) Systolic linear-array modular multiplier with pipeline processing elements
US5121429A (en) Digital signal processing
JP3406914B2 (ja) 演算装置及びこれを備えた暗号化装置、復号装置
US8073891B2 (en) Method for implementing montgomery modular multiplication and device therefore
JP3302043B2 (ja) 暗号通信方法及びそのシステム
Großschädl High-speed RSA hardware based on Barret’s modular reduction method
Nibouche et al. Fast architectures for FPGA-based implementation of RSA encryption algorithm
Leu et al. Design methodology for Booth-encoded Montgomery module design for RSA cryptosystem
US5948051A (en) Device improving the processing speed of a modular arithmetic coprocessor
Nibouche et al. Architectures for Montgomery's multiplication
Lu et al. A programmable VLSI architecture for computing multiplication and polynomial evaluation modulo a positive integer
Nibouche et al. High speed FPGA implementation of RSA encryption algorithm
JP3323516B2 (ja) 演算装置及びこれを備えた暗号化装置、復号装置
US7403965B2 (en) Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
JP3210420B2 (ja) 整数上の乗算回路
TWI802095B (zh) 模數乘法電路與對應之計算模數乘法之方法
Aiholli et al. Design of Arithmetic unit for RNS using 2 n-3 as Base
Arechabala et al. Full systolic binary multiplier
Kumar Multipliers Based on Carry Arrest Multi-Operand Addition
Peijun et al. A 1024-bit RSA cryptosystem hardware design based on modified Montgomery's algorithm
JPH04277789A (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: 20030225

LAPS Cancellation because of no payment of annual fees