JP2553548B2 - 乗算剰余演算装置 - Google Patents

乗算剰余演算装置

Info

Publication number
JP2553548B2
JP2553548B2 JP62074693A JP7469387A JP2553548B2 JP 2553548 B2 JP2553548 B2 JP 2553548B2 JP 62074693 A JP62074693 A JP 62074693A JP 7469387 A JP7469387 A JP 7469387A JP 2553548 B2 JP2553548 B2 JP 2553548B2
Authority
JP
Japan
Prior art keywords
register
value
unit
arithmetic unit
output
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
JP62074693A
Other languages
English (en)
Other versions
JPS63240219A (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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP62074693A priority Critical patent/JP2553548B2/ja
Publication of JPS63240219A publication Critical patent/JPS63240219A/ja
Application granted granted Critical
Publication of JP2553548B2 publication Critical patent/JP2553548B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、2正数の積をある正数で割った剰余を計算
する乗算剰余演算装置に関するものである。
従来の技術 符号理論や暗号理論の分野において、A,B,Nを正数と
するとき積A・BをNで除し、その剰余を求める演算
(以下この演算を乗算剰余演算と称し、演算結果の値を
A・B modNと表わす)は基本演算の1つである。特
に、最近話題になっている公開鍵暗号方式、たとえばRS
A暗号方式に用いられるべき乗剰余の演算はこの乗算剰
余演算を繰り返しである。従って、暗号の安全確保のた
めの512ビット程度の長いデータ値に対しその乗算剰余
値を速く求めることが近年特に要望されている。ところ
で、従来乗算剰余値を求めるのには、まず積A・Bを計
算した後、これを正数Nで除して剰余を求めていたた
め、512ビット程度の整数の乗算剰余演算には1024ビッ
ト程度のレジスタと長い処理時間がかかっていた。そこ
で、乗算と除算を別々に行なわずに一体として実行する
方法が提案されている。つまり、乗算A・Bは加算の繰
り返しであるがその加算のたびに除数Nとの比較を行な
って加算結果がNより大きかったらNを減ずる操作を行
なう方法である。これをC言語のプログラムで表わすと
次のようになる。(A,B,N共に512ビットの場合を例に上
げている) for(S=i=0;i〈512;i++) { S=S+A*bi; …(1) if(S〉=N)S=S−N; …(2) A=2*A; …(3) if(A〉=N)A=A−N; …(4) } 但し、B=b511*2511+b510*2510+……+b1*2+
b0(bi=0または1)とする。
第4図はこの演算を実現する乗算剰余演算装置の構成
図を示している。
101、102はそれぞれ値S、Aを格納するレジスタ、10
3は値Bを初期値とし、クロックが与えられると右に1
ビットシフトするシフトレジスタ、104はシフトレジス
タ103の最下位ビットbiを用いて(1)の演算を行なう
加算器、105は(2)の演算S=S−Nを行なう加算
器、106は105の演算の結果が正ならば105の演算結果S
−Nを、負ならば104の演算結果Sを選択する選択回
路、107は前記選択回路の出力を格納する出力レジスタ
である。108は(3)のシフトを行なう1ビット左シフ
タ、109は(4)の演算A=A−Nを行なう加算器、110
は109の演算の結果が正ならば109の演算結果A−Nを、
負ならば108のシフタの出力値Aを選択する選択回路、1
11は前記選択回路110の出力を格納する出力レジスタで
ある。
以上のように構成された従来の乗算剰余演算装置にお
いて、図中点線112で囲った部分は前記の(1)と
(2)の演算を行ない、点線113で囲った部分は前記の
(3)と(4)の演算を行なう。点線112と113は並行し
て処理を行ない、各々512回繰り返す。その結果、出力
レジスタ107にはA・B modNが格納されている。
発明が解決しようとする問題点 しかしながら上記のような構成では,点線112の処理
内で加算器104と105をとおるパスがクリティカルパスと
なるため、512ビット幅の加算にかかる時間をΔとする
と、1回のループ内の処理時間は2Δである。結果A・
B modNを求めるにはこれを512回繰り返すので(2
Δ)*512=1024Δの処理時間が必要である。しかしな
がら、この乗算剰余演算を繰り返してべき乗剰余の演算
を行ない、RSA暗号処理に用いると考えたときこの処理
時間では十分でない。実際、512ビット幅の加算器を4
ビット毎の桁上げ先見回路を用いて構成したときΔはお
よそ100nsecである。べきの数を512ビットであるべき乗
剰余演算には最大1024回の乗算剰余の演算が必要であ
り、このことよりRSA暗号の処理時間は約5kbpsとなる。
(算出: A・B modNの処理時間=100nsec*1024 ME modNの処理時間=100nsec*1024*1024 1ビットあたりの処理時間=100nsec*1024*1024/512 1秒あたりの処理ビット数 =(100nsuc*1024*1024/512)-3=4.88kbps) 本発明はかかる点に鑑み,2次のブースを用いて被乗数
Bを2ビットずつ処理して、そのうえ1回のループ内で
の処理時間をΔとすることにより従来の4倍の処理速度
を持つ乗算剰余演算装置を提供することを目的とする。
問題点を解決するための手段 本発明は、A,B,Nを正数とするとき、A・B modN
(‘A modN'の記述はAをNで除した時の剰余を表わ
すものとする)を計算する乗算剰余演算装置であって、
Aを格納する第1のレジスタと、第1のレジスタの内容
であるAを入力としてAP=2 A modNを計算する第1
の演算部と、第1の演算部の出力であるAPを格納し、そ
の内容を第1のレジスタに出力する第2のレジスタと、
第1の演算と並行に、Nの剰余類上でAPと同値な負の値
ANを第1のレジスタの内容であるAを用いて計算する第
2の演算部と、第2の演算部の出力であるANを格納する
第3のレジスタと、2つの入力端を持ち、それらの加算
をおこなう第3の演算部と、第3の演算部の出力値を格
納する第4のレジスタと、前記第4のレジスタの内容を
格納し、その内容を第3の演算部の一方の入力端に対し
て出力する第5のレジスタと、正数Bを格納するシフト
レジスタと、前記シフトレジスタの内容であるBの値を
入力とし、前記第3の演算部の制御信号を生成する2次
のブースのエンコーダ部と、前記第4のレジスタの符号
と、前記2次のブースのエンコーダ部の出力制御信号を
用いて前記第2のレジスタに格納されている値AP、また
は第3のレジスタに格納されている値ANの何れかを選択
して、前記第3の演算部の他方の入力端に供給する選択
部を備えたことを特徴とする乗算剰余演算装置である。
作用 本発明は前記した構成により、ブースのエンコーダを
用いて被乗数Bを2ビットずつ処理し、そのうえ1回の
ループ内では第1、第2、第3の演算部が完全に並行し
て動作することにより処理時間がΔとなる。従って、本
発明の乗算剰余演算装置は従来の4倍の処理速度を持
つ。
実施例 第1図は本発明の一実施例における乗算剰余演算装置
の構成図を示すものである。この実施例では、A、B、
N共に符号無しの512ビットの場合を説明する。
1は513ビットのAレジスタ、2はAレジスタの値を
2ビット左にシフトするシフタ、3は15ワード(1ワー
ドは512ビット)のメモリである。なお、メモリの内容
についてはその動作の説明のなかで説明する。4は513
ビット幅の加算器、5は‘−8N'の値を格納しているレ
ジスタ、6は516ビット幅の加算器である。7、8はそ
れぞれ加算器4、6の出力と乗数Aとのいずれかを選択
する選択回路、9、10は前記選択回路7、8の選択した
値を格納するAPレジスタとANレジスタである。11は被乗
数Bを格納し、クロックが与えられると2ビット右にシ
フトするシフトレジスタ、12は前記シフトレジスタ11の
下位3ビット(下位からbi,bi+1,bi+2とあらわす)
を用いて、制御線S0,S1,S2を生成するブースのエンコー
ダである。13は前記APレジスタ、ANレジスタに接続して
そのいずれかを選択する選択回路、14は前記ブースのエ
ンコーダ12の出力制御線S0が‘1'のときに、前記選択回
路13の出力を1ビット左シフトする1ビット左シフタ、
15は前記ブースのエンコーダの出力制御線S1が‘1'のと
きに前記1ビットシフタ14の出力の1の補数をとるEOR
ゲート、16は前記ブースのエンコーダ12の出力制御線S1
を桁上げ信号とし、EORゲートの出力と入力レジスタ17
(Iレジスタ)の値を加算する加算器、18は前記ブース
のエンコーダ12の出力制御信号S2が‘1'のときに前記加
算器の出力を格納するSレジスタであり、前記Iレジス
タ17に接続している。19はSレジスタの最上位ビットと
前記ブースのエンコーダ12の出力制御信号S1の排他的論
理和を求め、選択回路13を制御するゲートである。
以上のように構成された本実施例の乗算剰余演算装置
について,以下その動作を説明する。
まず、この実施例の動作を説明する前に2次のブース
のエンコーダを用いた乗算剰余演算について説明する。
2次のブースのエンコーダについては、たとえば日経エ
レクロニクス(1978.5.29)の解説記事「LSI化が進む並
列演算方式による乗算器の回路方式を見る」などに詳し
く示される。結果だけ紹介すると、次の操作によってA
・B(A,Bともに512ビットとする)を求める方法であ
る。C言語風に表現する。
for(i=S=0;i〈512;i++2) ・・・(11) { S=S+(bi+bi+1−2*bi+2)*A; ・・・(12) A=4*A ・・・(13) } 但し、B=b511*2511+b510*2510+……+b1*2+
b0(bi=0または1)とする。
ブースのエンコーダを用いる方法は、被乗数Bを下位
から重複して3ビットずつ処理する((b0,b1,b2)、
(b2,b3,b4)、(b4,b5,b6)…と処理を行なっていくと
言う意味)ため、(12)、(13)の演算を256回繰り返
して結果Sを出力する。被乗数Bの各ビットによる(1
2)式の処理を第2図に示す。
このブースのエンコーダを用いて乗算剰余を求める場
合の操作を同じくC言語風に表現すると次のようにな
る。
for(i=S=0;i〈512;i++2) ・・・(14) { S=S+(bi-1+bi−2*bi+1)*A(mod N); ・・
(15) A=4*A(mod N); ・・(16) } 但し、B=b511*2511+b510*2510+……+b1*2+
b0(bi=0または1)とする。
ところがこれでは、(15)式の累算を行なうたびにmo
dNの操作を行なう必要があり、1回のループでの処理時
間が長くかかる。
そこで次に、ループ内では補正する必要がない本発明
の方法を説明する。本発明の方式では上記(16)のA
(0<A以降これをAPと表わす)と同じ剰余類上の負の
値(ANと表わす)を用意しておき、そこまでの累算結果
の符号によりそのどちらかを選んでSに累算する。この
ことによりループ内でいちいちmodNの操作を行なうこと
なくSの値をある範囲内に制限することができる。C言
語風に表現すると次のようになる。
for(AP=AN=A,i=S=0;i〈512;i++2) ・・・(17) { A=AP; ・・・(18) if((bi+bi+1−2*bi+2)==0)S=S; ・・・(19) else if((sign(S)sign((bi+bi+1−2*bi+2) ==1) ・・・(20) S=S+bi+bi+1−2*bi+2)*AP; ・・・(21) else S=S+(bi+bi+1−2*bi+2)*AN; ・・・(22) AP=4*A(mod N); ・・・(23) AN=4*A−8*N; ・・・(24) } このプログラムは次の特徴を持っている。
C1.正の値APと負の値ANをAから並列に計算して用意す
る。(AP,ANを累算値と称する) APとANの関係は式で表わすと次のように表わせる。
AP=AN modN AN<0<=AP C2.そこまでの累算の結果Sが‘正’でブースのエンコ
ーダが累算の演算を‘減算’と指定するとき ((bi,bi+1,bi+2)=(0,0,1)(1,0,1)(0,1,1):
第2図参照) 正の値APを累算値として選択する。ブースのエンコー
ダが累算の演算を‘加算’と指定するとき (bi,bi+1,bi+2)=(1,0,0)(0,1,0)(1,1,0):第
2図参照) 負の値ANを累算値として選択する。この選択を行なっ
て、‘正’のSに負の値を足しこむことにより累算の結
果がそれ以上増加しないようにする。
C3.そこまでの累算の結果Sが‘負’でブースのエンコ
ーダが累算の演算を‘減算’と指定するとき ((bi,bi+1,bi+2)=(0,0,1)(1,0,1)(0,1,1):
第2図参照) 負の値ANを累算値として選択する。ブースのエンコー
ダが累算の演算を‘加算’と指定するとき (bi,bi+1,bi+2)=(1,0,0)(0,1,0)(1,1,0):第
2図参照) 正の値APを累算値として選択する。この選択を行なっ
て、‘負’のSに正の値を足しこむことにより累算の結
果がそれ以上減少しないようにする。
次に前記(17)から(24)の動作の実現を本実施例の
構成図(第1図)上で説明する。
D1.(初期設定)選択回路7,8により乗数AをAPレジスタ
9とANレジスタ10にロードする。Bレジスタ11には被乗
数Bをロードし、Sレジスタはクリアする。なお、選択
回路7,8は初期設定のときのみに乗数Aを選択し、それ
以外のときは加算器4,6の結果を選択する。
D2.・ブースのエンコーダ12は被乗数Bの下位3ビット
をデコードして制御信号S0,S1,S2を出力する。第2図に
並べて制御信号の生成を示す(第3図)。
Bは制御信号を生成した後右に2ビットシフトする。
・第3図から分かるとおり、S1は(20)の‘sigh(bi
bi+1−2*bi+2)’を示している。よって、(20)式の
条件を判定しているゲート19の出力が‘1'のときに選択
回路13はAPレジスタ9の値を選択し、‘0'のときはANレ
ジスタ10の値を選択する。
・S0が‘1'のときは1ビットシフタ14を動作させて選択
回路13で選択した値(APまたはAN)を2倍する。また、
S1をEORゲート15と加算器16への桁上げに入力すること
によりS1が‘0'のときは加算を‘1'のときは減算を行
う。なお、(19)式で示した操作はS2の制御信号をSレ
ジスタの書き込み許可端子(ライトイネーブル:We)に
入力してSレジスタの更新を禁止して実現している。
D3.(22)の操作は2ビット左シフタ2とメモリ3と加
算器4で実現する。2ビット左シフタの出力値(符号無
し515ビット)を 4*A=a514*2514+a513*2513+…+a1*2+a0(a
=0又は1) と表わす。このとき正数Nで除した剰余は次のようにな
る。
4*A modN=(a514*2514+a513*2513 +a512*2512+a511+2511mod N) ・・・(25) (a510*2510+a509*2509+……a0mod N) ・・・(26) ここで数Nを2511以上の値とすると、(26)式の値は
Nより小さい。(数Nをこのように制限することは本質
的なことではない。)(25)式の値を一度に得る一つの
方法は実施例に上げているようにメモリを用いる方法で
ある。メモリ内には(a514,a513,a512,a511)=(0,0,
0,1)から(1,1,1,1)の15パターンについて(25)式の
値を記憶している。メモリからの出力はすでにmodNの操
作が施されているので(25)式の値はNより小さい。従
って、(25)と(26)を加算器4で加算した結果APは2N
より小さい。(符号無し513ビット) D4.D3の操作と並行に(24)の処理を行う。D3で説明し
たようにA(=AP)は2Nより小さい正の値である。よっ
て、4*A−8Nは必ず負でありC1で示したANの条件を満
たしている。(符号付き516ビット) 以上D2からD4の操作にはそれぞれ512ビットほどの加
算の処理が1回ずつ含まれている。D2からD4の加算は加
算器16,4,6を用いて並行に行うことが出来るため1回の
ループ内での処理時間はΔである。D2からD4をそれぞれ
256回繰り返した結果Sレジスタ18に−16N〜4Nの範囲の
出力結果が格納されているので、ループを抜けた後、0
〜Nの範囲の値に補正すればよい。
以上のように本実施例によれば,2次のブースを用いて
Bを2ビットずつ処理し、そのうえ1回のループ内では
3つの加算器を並行に用いて処理時間をΔとする。この
ことにより従来の4倍の処理速度を持つことができる。
なお,この実施例において(23)の演算をメモリを用
いて行ったが、たとえば加算器を並行に並べてもよい
し、また、メモリの内容も剰余ではなしに、商を格納し
ていてもよい。
発明の効果 従来では3つの加算器をもちながら、これを完全並列
に動作させることができず、1回のループ内では2Δの
処理時間がかかっていた。以上述べたように本発明によ
れば、累算値を正、負の二通り用意し、その何れかを累
算の結果の値がある範囲に入るように選択する。正の値
を用意する部分、負の値を用意する部分、累算の部分の
それぞれに含まれる各1個の加算器(合計3つの加算
器)を完全に並行に動作させて、1回のループ内の処理
時間を従来の1/2にする。そのうえ、2次のブースのエ
ンコーダを用いてループ数を1/2にする。従って本発明
は従来と同じ数の加算器を用いて従来の4倍の処理速度
を持つことができ,その実用的効果は大きい。
【図面の簡単な説明】
第1図は本発明における一実施例の乗算剰余演算装置の
構成図、第2図、第3図はブースのエンコーダの説明
図、第4図は従来の乗算剰余演算装置の構成図である。 1……Aレジスタ、2……2ビット左シフト、3……メ
モリ、4,6,16……加算器、5……−8Nレジスタ、7,8,13
……選択回路、9……APレジスタ、10……ANレジスタ、
11……Bシフトレジスタ、12……ブースのエンコーダ、
14……1ビット左シフタ、17……Iレジスタ、18……S
レジスタ。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】a、b、Nを正数とするとき、a・b modN
    (‘a modN'の記述はaをNで除した時の剰余を表わす
    ものとする)を計算する乗算剰余演算装置であって、初
    期設定でaを格納する第1のレジスタと、この第1のレ
    ジスタの内容をAとするときAを入力としてAP=2 A mo
    dNを計算する第1の演算部と、この第1の演算部の出力
    であるAPを格納し、APを前記第1のレジスタに接続する
    第2のレジスタと、前記第1のレジスタの内容であるA
    を用いて、Nの剰余類上でAPと同値な負の値ANを、前記
    第1の演算と並行に計算する第2の演算部と、この第2
    の演算部の出力であるANを格納する第3のレジスタと、
    2つの入力端を持ち、一方の入力端に他方の入力端の2
    倍の値を加算または減算する、1倍の値を加算または減
    算する、あるいは一方の入力端をそのまま出力する第3
    の演算部と、この第3の演算部の出力値を格納する第4
    のレジスタと、前記第4のレジスタの格納値を、前記第
    3の演算部の一方の入力端に接続する第5のレジスタ
    と、前記第2のレジスタに格納されている値APと前記第
    3のレジスタに格納されている値ANの何れかを選択し
    て、前記第3の演算部の他方の入力端に供給する選択部
    と、初期設定で前記正数bを格納するシフトレジスタ
    と、前記シフトレジスタの定まったビット位置の3ビッ
    トを入力として制御信号を生成する2次ブースのエンコ
    ーダ部を備え、前記2次ブースのエンコーダ部の出力で
    ある制御信号は、前記第3の演算部の演算を制御し、ま
    た、前記制御信号と前記第4のレジスタの符号を用いて
    前記選択部を制御することを特徴とする乗算剰余演算装
    置。
JP62074693A 1987-03-27 1987-03-27 乗算剰余演算装置 Expired - Fee Related JP2553548B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62074693A JP2553548B2 (ja) 1987-03-27 1987-03-27 乗算剰余演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62074693A JP2553548B2 (ja) 1987-03-27 1987-03-27 乗算剰余演算装置

Publications (2)

Publication Number Publication Date
JPS63240219A JPS63240219A (ja) 1988-10-05
JP2553548B2 true JP2553548B2 (ja) 1996-11-13

Family

ID=13554562

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62074693A Expired - Fee Related JP2553548B2 (ja) 1987-03-27 1987-03-27 乗算剰余演算装置

Country Status (1)

Country Link
JP (1) JP2553548B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0365723A (ja) * 1989-08-03 1991-03-20 Matsushita Electric Ind Co Ltd 並列乗算回路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3980874A (en) * 1975-05-09 1976-09-14 Burroughs Corporation Binary to modulo M translation
JPS6034131A (ja) * 1983-08-04 1985-02-21 Tokiwadou Seika Kk アロエ入りかりんとう製造法
JPS60205746A (ja) * 1984-03-30 1985-10-17 Toshiba Corp 配列乗算器
JPS63200233A (ja) * 1987-02-16 1988-08-18 Fujitsu Ltd 高速並列乗除計算機

Also Published As

Publication number Publication date
JPS63240219A (ja) 1988-10-05

Similar Documents

Publication Publication Date Title
US7277540B1 (en) Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
JP3784156B2 (ja) モジュラ掛け算方法
US6920473B2 (en) Method and apparatus for modular multiplying and calculating unit for modular multiplying
US5121429A (en) Digital signal processing
US7120660B2 (en) Method of and apparatus for modular multiplication
KR20040060445A (ko) 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
JP2553548B2 (ja) 乗算剰余演算装置
US7536429B2 (en) Multiplier with look up tables
US7607165B2 (en) Method and apparatus for multiplication and/or modular reduction processing
US20070050442A1 (en) Method, apparatus, and program for modular arithmetic
JP2000207387A (ja) 演算装置及び暗号処理装置
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
KR100322740B1 (ko) 모듈러 연산장치 및 그 방법
EP1465058A2 (en) Method and apparatus for performing modular multiplication
KR100460764B1 (ko) 암호화 하드웨어 구현을 위한 파이프라인 모듈러 연산 장치
JP2558687B2 (ja) 剰余乗算装置
JP3210420B2 (ja) 整数上の乗算回路
JP2004226516A (ja) べき乗剰余演算方法及びそのプログラム
KR19990086179A (ko) 모듈러 연산장치 및 그 방법
Shirase et al. An architecture for elliptic curve cryptograph computation
JPH0368415B2 (ja)
JP2812365B2 (ja) 乗算回路
JP2002236581A (ja) 演算回路、演算方法、及びプログラム記録媒体
JPH10333885A (ja) 乗算回路

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees