JP2003216034A - べき乗剰余演算器 - Google Patents

べき乗剰余演算器

Info

Publication number
JP2003216034A
JP2003216034A JP2002014229A JP2002014229A JP2003216034A JP 2003216034 A JP2003216034 A JP 2003216034A JP 2002014229 A JP2002014229 A JP 2002014229A JP 2002014229 A JP2002014229 A JP 2002014229A JP 2003216034 A JP2003216034 A JP 2003216034A
Authority
JP
Japan
Prior art keywords
storage means
carry
calculation
output
value
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
Application number
JP2002014229A
Other languages
English (en)
Inventor
Hiroteru Kajiwara
裕輝 梶原
Kazuo Taki
和男 瀧
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.)
AIL KK
Original Assignee
AIL KK
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 AIL KK filed Critical AIL KK
Priority to JP2002014229A priority Critical patent/JP2003216034A/ja
Publication of JP2003216034A publication Critical patent/JP2003216034A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 暗号処理に用いる、べき乗剰余演算器を高速
化する 【解決手段】 指数部Bの複数kビット2進数表記した
ビット列のからj番目の値i=bに対応したARm
odCの値を適切に選択することで演算回数を削減し、
個々のXYR−1modCの演算を(M+xiY+u
C)/2による少ない繰り返し回数で実行し、(M+
Y+uC)/2の主要な演算に桁上げ保存加算器
を用いることで短時間に演算させ、べき乗剰余演算を高
速に実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報通信分野にお
ける暗号処理技術に属し、べき乗剰余演算を行う演算手
段および演算装置に関する。
【0002】
【従来の技術】情報の秘匿や認証を行う技術の一つとし
て公開鍵暗号技術がある。公開鍵暗号方式による情報の
秘匿や認証では主としてべき乗剰余演算が用いられてい
る。べき乗剰余演算は正の整数A,B,Cに対してA
modCの形で与えられる。これは、AをB乗してCで
除算した余りの値を得るという演算である。公開鍵暗号
では、A,B,Cいずれも512ビット〜2048ビッ
トといった非常に大きな数によるべき乗剰余演算が必要
となるため、べき乗剰余演算の高速化が課題とされてき
た。
【0003】べき乗剰余演算は、一般的に乗算剰余の繰
り返しで求められる。なかでも効率のよい方法として、
図4に示すような演算方法が知られている。図4に記載
したアルゴリズムにおいて、b,…,b,bはB
の2進表現を下位からkビットずつに分割したそれぞれ
の分割部分の2進表記である。図4のアルゴリズムに記
載した手順1.2の繰り返しでAmodCの値を導出
し、手順2.1で2乗剰余をk回繰り返す操作と手順
2.2でi=bに対応するAmodCを選択して乗
算剰余を行う操作とをn回繰り返すことでべき乗剰余演
算を行う。前記kの値は変更可能であり、この方法を用
いれば、k=1のときと比較してk=2で約33%、k
=4で約40%の乗算剰余回数が削減される。詳細は文
献1( A.J.Menezes, P.C.Oorschot, S.A.Vanstone, "H
andbook of APPLIED CRYPTGRAPHY,"CRC Press, pp.599-
627 (1997) )に記載されている。
【0004】また、それ以外の高速化手法として、図5
に示すような方法がある。図5のアルゴリズムにおい
て、bn−1,…,b,bはBを2進表記した各ビ
ットの値である。また、XYR−1modCの値は図6
に記載したアルゴリズムによって求めることができる。
図6のアルゴリズムに記載した手順2.1で剰余項Cの
適切な整数倍を表すuを求める操作と、手順2.2で求
めたuCを入力Xと入力Yの部分積xYに加算するこ
とで下位mビットの値が0になるようにし、そのままm
ビット右シフトする操作とをあわせてn回繰り返す。図
6のアルゴリズムを用いることで、図4中にmodCと
して現れるものを用いることなくべき乗剰余演算を行う
ことが可能となる。また、前記mの値は変更可能であ
り、XYR−1modCの導出に必要な時間はm=1の
ときと比較してm=2で約50%、m=4で約75%削
減される。詳細は文献2( P.L.Montgomery, "Modular
Multiplication Without TrialDivision", Mathematics
of Computation, Vol. 44, No. 170, pp. 519-521(198
5) )および前記文献1に記載されている。
【0005】
【発明が解決しようとする課題】第一の問題点として、
図4に記載したアルゴリズムは、kの値に応じて乗算剰
余回数の削減が可能であるが、図4のアルゴリズムで用
いられる乗算剰余演算は前記のように剰余項Cによる除
算を行うものであり、乗算剰余の導出を高速化すること
が困難であるという問題点がある。一方、図5および図
6に記載したアルゴリズムは、XYR−1modCを求
める際の繰り返し数はmの値に応じて削減が可能である
が、XYR−1modCを求める回数が多いという問題
点がある。このように、前記のアルゴリズムはどちらも
一長一短であり、どちらかがとりわけ優れているわけで
はない。
【0006】さらに、第二の問題点として、図6のアル
ゴリズムにおいて手順2.2の演算M+xY+uCは
2項の部分積と演算の途中結果Mとを加算する操作であ
るが、この操作を回路の形で実現しようとすると、入力
される最大の数のビット幅全体に渡る長い桁上げ伝播を
伴うため演算時間が長くなる。従って、個々の繰り返し
のたびに長い演算時間を要するという欠点がある。
【0007】本発明ではこれらの問題を解決するにあた
って、第一の問題点を解決するために、前記のどちらの
アルゴリズムも双方の欠点を補う利点を持っていること
に着目した。両者の利点を兼ね備えた方法を発案できれ
ばべき乗剰余演算の高速化に大きく貢献できる。しか
し、図4のアルゴリズムは主要部を構成する演算に乗算
剰余演算を用い、図5のアルゴリズムは主要部を構成す
る演算に図6のXYR modCという図4とは異な
る演算を用いているため、前記2つのアルゴリズムを組
み合わせて利点を引き出すためには組み合わせ方法を工
夫する必要がある。また、第二の問題点を解決するため
には、演算器の構成を工夫して長い桁上げ伝播が発生し
ないようにする必要がある。
【0008】
【課題を解決するための手段】本発明は、べき乗剰余演
算の高速化に関連し、演算回数を削減する手段と、個々
の演算を行う際の繰り返し回数を削減する手段と、個々
の繰り返しに要する時間を短縮する手段から構成され
る。以下、A,B,C,Rは正の整数で、Cは奇数、R
はR>Cを満たす2のべき乗の数であるとする。
【0009】まず、請求項1によって解決される前記第
一の問題点として、図5に記載したべき乗剰余アルゴリ
ズムにおけるMont(X,Y)=XYR−1modC
の演算回数が多いという問題点がある。これを解決する
手段としては、図4に記載したアルゴリズムのように,
乗数の候補をあらかじめ複数個持っておき、指数部のビ
ットパターンに応じて適切な乗数の候補を選択すればよ
い。ここで、図5に記載したアルゴリズムからMont
(X,Y)の演算結果に乗算されているRの次数がべき
乗剰余の主要部において常に1であることに着目した。
XおよびYに関するRの次数がともに1である場合に
は、Mont(X,Y)=XYR−1modCの演算結
果に関するRの次数はR−1=Rとなりやはり1で
ある。このように、Rの次数が1である数同士でMon
t(X,Y)の演算を行えば、通常の乗算剰余と同様に
演算前後でRの次数を補正することなく演算を繰り返し
続けることができる。以上のことから、複数個でかつR
の次数が1である乗数候補、具体的には2個の整数i
=0,1,2,…,2−1に対応する2個のA
modCの値をあらかじめ演算して保持しておけば,図
4のアルゴリズムを用いた場合と同様の効果が得られ,
Mont(X,Y)の演算回数をkに応じて削減するこ
とが可能となる。
【0010】次に、請求項2で追加された解決手段は、
前記ARmodCの生成方法に関するものである。本
発明では、Mont(T,ARmodC)の演算を行っ
た演算結果でTの内容を更新する操作を繰り返すことで
−2個の値を生成する方法をとった。Tに初期値と
してARmodCを与えれば、2−2個の整数i=
2,3,…,2−1に対する2−2個のARmo
dCを、2−2回のMont(X,Y)演算で得るこ
とができる。
【0011】次に、請求項3で追加された解決手段は、
前記請求項1に対応する解決手段に代えて、RmodC
の導出をせずに演算を行うというものである。これによ
り、第一の記憶手段2に必要な領域を請求項1に対応す
る手段と比べて1/2だけ削減することができる。
【0012】次に、請求項4で追加された解決手段は、
前記Mont(X,Y)の演算を行う際の繰り返し回数
を削減する手段に関するものである。これに関しては従
来技術の項でも触れたとおり、図6に記述したアルゴリ
ズムにしたがって、mを複数ビットとすることにより繰
り返し回数を短縮することができる。
【0013】次に、請求項5によって解決される第二の
問題点として、前記Mont(X,Y)の演算はその主
要部を構成する操作にビット幅全体に渡る長い桁上げ伝
播を伴うため、演算にかかる時間が長くなるという問題
点がある。これを解決する手段としては、部分積を加算
する際に用いる桁上げ保存加算器から出力される桁上げ
ビットを吸収せず、和出力とは別のレジスタに保持する
ことでXYR−1modCの主要部を構成する演算が終
了するまで桁上げ吸収を行わないという方法をとればよ
い。
【0014】次に、請求項6および請求項7に対応する
手段について述べる。請求項6および請求項7に対応す
る手段は、請求項5に対応する手段の中から乗算剰余計
算を行う第一の演算器1の部分だけを抜き出して、制御
に関する限定を加えたうえ独立の請求項としたものであ
る。請求項5に対応する手段では、乗算剰余計算すなわ
ちXYR−1modCにおける繰り返し計算を行う場合
に桁上げ保存加算器を用い、桁上げ伝搬を行わないこと
で、繰り返し計算のサイクル時間の短縮を図ろうとする
ものであった。しかしながら、乗算剰余の最後の部分に
は、図6の手順2.2の最終回の実行を行った直後と、
引き続く図6手順3の条件付減算部分に桁上げ吸収加算
器24を使う必要があり、この計算時間が問題となる可
能性があった。 実際にビット数の大きい乗算剰余計算
では桁上げ吸収加算器の計算時間の遅さが際立つため、
請求項6および請求項7に対応する手段では、桁上げ吸
収加算器の動作サイクルにおいては、1クロックサイク
ルより長時間の、または複数クロックサイクルに渡って
の計算動作を許容する制御手段を設けた。このことによ
り、桁上げ保存加算時のクロックサイクル時間を可能な
下限まで短縮することができ、乗算剰余計算における繰
り返し計算時間をさらに短縮できる。
【0015】請求項8に対応する解決手段により、請求
項6もしくは7に対応する解決手段を用いて高速化を行
った演算器を前記のべき乗剰余演算器に組み込むこと
で、演算器の動作速度を向上させるだけでなく、べき乗
剰余演算も高速に行うことができる。
【0016】
【発明の実施の形態】本発明の実施の形態について、以
下必要に応じて図を用いながら説明する。説明に先立
ち、課題を解決するための手段の項で述べた改良を施し
たアルゴリズムを図7、図8、および図9に示す。
【0017】まず、請求項1および請求項2に関する実
施の形態について、図1および図7を元に説明する。図
1に本発明を実施することで実現される、べき乗剰余演
算器全体の構成を示す。正の整数X,Yおよび前記Cを
入力としてMont(X,Y)=XYR−1modCの
演算を行う第一の演算器1を配置し、TとWを入力とし
て2つの数の組(T,T)または(T,W)のうちいず
れかの組を選択して出力する第二の選択手段4と、Bが
n個のkビット2進数の並び(bn−1…b)で
表現されるときにbの値に応じてAbjmodCを選
択して出力する第一の選択手段3と、べき乗剰余演算の
途中結果Tを格納する第二の記憶手段5と、2個の整
数i=0,1,…,2−1に対する2個のARm
odCを与える第一の記憶手段2を配置する。さらに、
前記の演算器や手段の入出力およびB,Cを図1に示す
ように接続する。ただし、前記(T,W)は(W,T)
としても差し支えない。請求項1に記載の操作は図7に
記載したアルゴリズムのうち手順2.1、すなわちMo
nt(T,T)の演算結果によって第二の記憶手段5の
記憶内容Tを更新する操作をk回繰り返し、続いて手順
2.2によりMont(T、W)の演算結果によって第
二の記憶手段5に記憶する内容Tを更新する、という一
連の操作に該当する。請求項2に記載の操作は図7に記
載したアルゴリズムのうち手順1.4、すなわちループ
変数i=2,3,…、2−1に対応したMont(A
i−1RmodC,ARmodC)の演算結果をA
modCとして前記第一の記憶手段2の空き領域に格納
する操作の繰り返しに該当する。
【0018】次に、請求項3に関する実施の形態につい
て、図9および図10を用いて説明する。図10は、図
1に記載した第一の記憶手段2に代わる、前記のRmo
dCを含まない第一の記憶手段6である。図10の回路
でべき乗剰余演算を行う上で、図7のアルゴリズムをそ
のまま適用するとb=0となったとき第一の選択回路
3がいずれの値も選択できないという問題が発生する。
図9はこの問題点に対処するため、b=0の場合の処
理とb≠0の場合の処理とを分けて規定したものであ
る。図9に記載した実施形態ではb=0の際には
(T,W)を選択する操作自体を行わず次の繰り返しに
移るというアルゴリズムになっているが、その他にも
(T,W)の代わりに(T,T)を選択して前記第一の
演算器1による演算は行い、最後の前記第2の記憶装置
5の値の更新だけを行わないといった方法も実施可能で
ある。
【0019】次に、請求項4および請求項5に関する実
施の形態について、図2、図3および図8を例に説明す
る。図2に請求項4に記載された第一の演算器1の実施
の形態を示す。前記Xがmビット2進数xt−1,…、
,xの並びすなわちX=(xt−1…x
と表現されるときに、Xを入力としてループ変数i=
0,1,…,t−1に対応したxを選択し出力する第
三の選択手段14と、演算の途中結果Mを格納する第三
の記憶手段13と、前記x,Y,Mおよびc’=−C
−1mod2を満たすc’を入力としmビットのu=
(M+xY)c’mod2を出力する第三の演算器
12と、前記M,u,C,x,Yを入力としf
(M+xY+uC)/2の値を出力する第二の演
算器11とを配置し前記の演算器や手段の入出力および
,Y,u,C,c’,Mを図2に示すように接続す
る。また、請求項5に対応して、前記Mは和ビットM
および桁上げビットMの組(M,M)で表現さ
れ、前記第三の記憶手段13が前記Mを格納する第一
のレジスタ25および前記Mを格納する第二のレジス
タ26で構成されている。請求項4に記載の操作は前記
u=(M+xY)c’modCによってuの導出を行
う操作ならびに導出されたuおよび前記M,x,Y,
Cの値を用いてf =(M+xY+uC)を出力され
た結果によって前記第三の記憶手段13の記憶内容Mを
更新する操作であり、図6のアルゴリズムの手順2.1
および手順2.2に該当する。
【0020】図3に請求項5に記載された第二の演算器
11の実施の形態を示す。前記x,Yを入力して部分
積Pを出力する第一の部分積生成器21、前記u,C
を入力して部分積Pを出力する第二の部分積生成器2
2、前記(M,M),P ,Pを入力して(f
MS,fMC)=((Ms,Mc)+xY+uC)
/2を出力する桁上げ保存加算器23、前記(M
)を入力してM+Mを出力する桁上げ吸収加算
器24を配置する。同じく図3に記述されている第一の
レジスタ25および第二のレジスタ26は前記のとおり
である。前記のレジスタや演算器の入出力およびx
Y,u,Cを図3に示すように接続する。請求項5に記
載の操作は請求項4に記載の操作のうち、Mに代えて和
ビットM および桁上げビットMを用いて前記の(f
MS,fMC)を導出し、fMSは第一のレジスタ25
に対し、fMCを第二のレジスタ26に対し、それぞれ
格納もしくは更新する操作を繰り返し行うもので、図8
に記載したアルゴリズムのうち手順2.2に該当する。
【0021】図3に記載の制御回路101は請求項6お
よび7に記載の高速化手段の実施形態であって、制御回
路101は桁上げ吸収加算器24の動作時にその出力を
取り込むレジスタの書き込み信号を制御する。これによ
り、レジスタは桁上げ吸収加算器からの出力を個々の繰
り返し計算に必要な時間よりも長く待つことが可能にな
る。請求項7では、とりわけ前記繰り返し計算の周期の
整数倍遅らせることにより、桁上げ吸収加算器からの出
力を遅れて書き込んだレジスタの動作と、その他の回路
の動作を同期させることを可能とする。
【0022】次に請求項6に対応する実施の形態につい
て説明する。請求項6に対応する実施の形態は、請求項
5に対応する実施の形態から、第一の演算器1の部分だ
けを抜き出して制御手段101を加えたうえ、制御タイ
ミングに関する限定を加えたものである。実施の形態は
図2および図3に対応するブロック図から読みとれる
が、請求項5の説明と重複するので省略する。図13の
実施例にはより詳細な記述があるため、図15および図
16のタイミングチャートとともに用いて説明する。制
御手段101は、Tcレジスタ26、Tsレジスタ2
5、第二の記憶手段であるTレジスタ5に書き込み信号
を供給する。図15および図16のタイミングチャート
では、各々のレジスタに接続する書き込み制御信号線、
CCTL、T SCTL,TCTLに送られる信号波形
を示しており、ゲーテッドクロックとして生成されたク
ロック信号を想定したものである。すなわち、書き込み
を行う場合にのみクロックが送出されている。図8の乗
算剰余アルゴリズムにおける手順2.1は、図13の第
三の演算器12で計算され、また図8の手順2.2は図
13の部分積生成器21,22および部分積加算器23
で計算され、計算結果は和ビットと桁上げビットに分か
れて各々Tsレジスタ25およびTcレジスタ26に書
き込まれる。この書き込み時点で、制御手段101から
CCTLおよびTSCTLの制御線を経由して書き込
みクロックが供給される。書き込みが終わると直ちに次
の計算サイクルが始まり、TcおよびTsレジスタの出
力は第三の計算手段12および部分積加算器23に送ら
れ新しいサイクルの計算に供される。図15および図1
6のTCCTLおよびTSCTLの波形の上向き矢印が
各レジスタへの書き込みタイミングを表している。タイ
ミングチャート上部のt−2,t−1の記述はクロック
サイクルの番号であり、図8の手順2のiに当たるもの
である。すなわちt−2は繰り返し最終回の一つ手前、
t−1は繰り返しの最終クロックを表している。最終サ
イクルの直後はcarry propagation サイクルであり、図
8の手順3に相当する。このときは桁上げ吸収加算器が
動作し、結果を再びTcレジスタ書き込むが、桁上げ吸
収計算が遅いことを許容できるようにするため、制御手
段101はTCCTLおよびTSCTLの書き込みパル
スを送出するタイミングを通常のクロックタイミングよ
り遅らせている。図15は請求項6に対応した実施の形
態の一つであって、クロック周期を可変とすることで書
き込みタイミングを遅らせている例である。リングオシ
レータのタップ切り替えなどにより容易に実現可能であ
る。一方図16は、クロック周期の整数倍だけ書き込み
パルスを遅らせた例であり、ここではクロック2周期分
の後に書き込みを行っている。こちらの制御はより簡単
であり、通常のシーケンスコントローラで可能である。
図15および図16上部のconditional subtraction
は、図8の手順4に相当し、その結果を書き込み制御信
号TCTLにより第二の記憶手段であるTレジスタ5に
書き込んでいる。ここでも桁上げ吸収加算器24を使う
ために書き込みパルスの送出を遅らせている。以上のよ
うな手段により、乗算剰余計算の繰り返しループ部分
は、可能な最小のクロックサイクル時間で動作させ、最
後の2回の桁上げ吸収加算動作のときだけ、書き込みパ
ルスの送出を遅らせることで、繰り返しループ部分の時
間を短縮し乗算剰余計算の高速化を実現している。
【0023】
【実施例】請求項8に対応する実施の形態として、以下
では本発明の実施例に関して説明する。実施例では、公
開鍵暗号の中でも代表的なRSA暗号を短時間で処理す
るために必要な高速べき乗剰余演算回路を設計する。認
証を高速に行う用途にとどまらず、情報の秘匿にも用い
ることができる性能を引き出すには、1024ビットの
べき乗剰余演算を最低でも100kbps、つまり10
24ビットあたり10msを切る演算速度が必要になる
と考え、ここでは目標値を5msとした。今回設計する
回路は演算に必要なサイクル数を極力少なくした設計に
する。50MHz動作で5msを切るためには、多くと
も25万サイクル以下に抑えなければならない。その上
で、サイクルタイムをできる限り削減し、動作周波数を
引き上げることでさらなる高速化を目指す。
【0024】本実施例では、べき乗剰余計算を行うアル
ゴリズムとして、サイクル数削減効果の大きい手法を組
み合わせたものを使用する。具体的には、乗算剰余に対
応する高速なアルゴリズムとして図8に記載したアルゴ
リズムを使用し、べき乗剰余の高速化手法として図7に
記載したアルゴリズムを使用する。これらの有効性と使
用するにあたって考慮すべき点を以下で説明する。
【0025】図8のアルゴリズムは、mビット分の部分
積xYに法Cをu倍したものを加えることで下位mビ
ットの値を0にし、mビット右シフトする操作を繰り返
すことで乗算剰余をmビットずつまとめて行い、部分積
加算の回数を削減する。このアルゴリズムは、次のよう
な特徴を持つ。第一にmに比例したサイクル数の削減が
可能である。第二に、計算開始時と終了後に通常の乗算
剰余結果との補正が必要になる、第三に、法が奇数でな
ければならないという制約がある。これらの特徴のうち
第二は一般の乗算剰余計算に対するデメリットとなる。
しかし、これに関してはMont(X,Y)演算の繰り
返しには補正が必要ないため、Mont(X,Y)演算
を多数回繰り返すべき乗剰余計算に対する補正の占める
割合は相対的にかなり低くなる。また第三に関しても、
RSA暗号では法は公開鍵に相当し、2つの素数の積で
与えられるため素数に2を選ばなければ特に考慮する必
要はない。図8のアルゴリズムを使用すれば、mに比例
したサイクル数の削減が可能となる。本回路では先に述
べたサイクル数の制約を満たしつつ回路構成が比較的容
易にできると考えられるm=8として設計を行う。
【0026】一方、図7のアルゴリズムは、演算に必要
なべき乗の値をあらかじめ用意する必要がある、パラメ
ータkの値は大きすぎるとかえって効率が悪くなる、と
いう点に考慮が必要となる。これは乗数の候補が前述の
通り2もしくは2−1個必要で、kの値が大きくな
ると爆発的に増加し、乗数の候補を計算するために必要
なサイクル数の合計が乗算剰余で削減できたサイクル数
をはるかに上回ってしまうことに由来する。事前の見積
もりにより、k=4ないし6の場合が最も削減効果が大
きく、乗算剰余(2乗含む)の回数を35%ないし40
%削減可能であることが確かめられた。また、k=4の
ときとk=6のときで効果にそれほど差がなかったこと
から、本実施例では回路規模の増加を最小限にとどめら
れるk=4を採用する。
【0027】前記のアルゴリズムにより、演算に必要な
サイクル数は大幅に削減される。しかし、特に図8のア
ルゴリズムは図からも分かるとおり法の整数倍を求める
際に乗算と加算を多数行う必要があり、それらを1サイ
クルで行うためにサイクル毎の遅延が増加する。これを
極力削減するため、以下に挙げた手法を用いて、サイク
ルタイムをできる限り削減する。
【0028】法の整数倍の導出に必要な演算は一般的に
は図6の手順2.1である。このうち、Yおよびc’は
図6のアルゴリズムを通じて変化することがないため、
両者の積をモンゴメリ乗算の前に別の回路31で求めて
y’としてレジスタ35に保持しておけば、演算は図8
の手順2.1のように改良できる。これにより、図14
からも明らかなように3つの乗算器(41,42,4
3)が並列に配置できるため、経由する乗算器を1つ削
減することができる。
【0029】図8のアルゴリズムに従って動作する第一
の演算器1は図13に記載したような構成となってい
る。すなわち、Mont(X,Y)の演算1回につきに
桁上げ吸収加算器24は2回しか用いず、桁上げ保存加
算器23から出力された組(f MS,fMC)を次のサ
イクルでともに部分積に加算するという方針である。こ
れにより、部分積加算回路11と桁上げ吸収加算器24
はそれぞれ独立した経路を持つことになり、最長遅延経
路はいずれか一方だけを経由する。
【0030】本実施例の回路が提供する命令は、バッフ
ァ書き込み・読み出し、レジスタ転送、桁上げ吸収加算
器24を用いた剰余演算AmodC、桁上げ吸収加算器
24を用いた定数RmodC生成、べき乗剰余演算A
modC、である。一方、回路の外部インタフェース
としては、外部クロック、リセット信号、8ビット命令
コード入力、命令strobe信号、32ビットデータ
入出力と、busy信号、からなっており、命令コード
をセットした後strobeにパルスを送ることで演算
が開始される。演算開始後は回路にクロックを与えるだ
けで動作し、必要サイクル数だけクロックが入力される
と結果がバッファに書き込まれて演算が終了する。デー
タの入出力に関しては次のようになっている。バッファ
兼レジスタ5は1024ビット幅であり、バッファ書き
込み命令および読み出し命令にともない32ビット単位
で読み書きを行う。なお、内部バスは1024ビットで
あり、レジスタ間の転送は1クロックで完了する。
【0031】図11はべき乗剰余演算器の実施例であ
る。演算器に付随する回路として、B,C,X,c’お
よび定数y’を保持するレジスタ(33,32,14,
34,35)および、図12に示す第一の選択回路3の
値を第二の選択回路4をまとめた選択回路31がある。
Bを格納するレジスタ33はk=4ビットのシフトレジ
スタで実現され、Xを格納するレジスタ14はm=8ビ
ットのシフトレジスタでそれぞれb、xを選択する
機能が実現されている。図中の演算器はモンゴメリ乗算
の計算に用いられる。図7に示すアルゴリズムはA
modCを格納したレジスタファイル2からどの乗数を
選択するかを決定する選択回路31によって実装されて
いる。さらに、前記図13に示すとおり、部分積加算回
路を桁上げ吸収加算器と並列に配置し、両者を分離し
た。RTL設計・検証に続いて、本実施例の回路を論理
合成し、遅延および回路規模を確認した。論理合成に使
用したライブラリは0.18μmプロセスの汎用セルラ
イブラリで、電源電圧は1.8V、簡単な配線容量モデ
ルを与えファンアウト制約は4.0とした。その結果1
024ビット鍵長のべき乗剰余演算を17万サイクル弱
で演算可能であることが分かった。従来の高速な回路比
較としても必要サイクル数を84%削減することができ
た。また、本実施例の回路最高動作周波数は77.5M
Hzであり、この場合演算に要する時間は2.2msで
あり、当初の5ms以下という目標値は十分達成された
といえる。回路面積11.9mmと、このサイズのプ
ロセスを用いたものの中では比較的大規模であるが、L
SIとしてシリコンチップ上に十分実装可能な大きさで
ある。
【0032】
【発明の効果】本発明によって得られる効果は下記のよ
うなものである。演算回数および個々の演算に必要な繰
り返し回数および個々の繰り返しに要する時間をいずれ
も削減することによりべき乗剰余演算AmodCを高
速に行うことができる。また、kの値およびmの値は変
更可能であり、適切な値を用いることで回路規模の増加
を抑えた高速べき乗剰余演算器を実現可能である。また
本発明によれば、低いクロック周波数で短時間のべき乗
剰余計算または乗算剰余計算が可能なため、従来並の計
算時間を実現するので良ければ、従来技術に比べてより
低い電源電圧で動作する半導体チップを構成可能であ
り、消費電力削減の効果もある。
【図面の簡単な説明】
【図1】べき乗剰余演算器のブロック図で、本発明の実
施の形態を表す。
【図2】演算器のブロック図で、本発明の実施の形態の
一部を表す。
【図3】演算器のブロック図で、本発明の実施の形態の
一部を表す。
【図4】アルゴリズムを記述した擬似コードで、従来技
術を表す。
【図5】アルゴリズムを記述した擬似コードで、従来技
術を表す。
【図6】アルゴリズムを記述した擬似コードで、従来技
術を表す。
【図7】アルゴリズムを記述した擬似コードで、本発明
の実施の形態を表す。
【図8】アルゴリズムを記述した擬似コードで、本発明
の実施の形態を表す。
【図9】アルゴリズムを記述した擬似コードで、本発明
の実施の形態を表す。
【図10】演算器のブロック図で、本発明の実施の形態
の一部を表す。
【図11】べき乗剰余演算器のブロック図で、本発明の
実施例を表す。
【図12】演算器のブロック図で、本発明の実施例の一
部を表す。
【図13】演算器のブロック図で、本発明の実施例の一
部を表す。
【図14】演算器のブロック図で、本発明の実施例の一
部を表す。
【図15】タイミングチャートで、本発明の実施の形態
の一部を表す。
【図16】タイミングチャートで、本発明の実施の形態
の一部を表す。
【符号の説明】
1 第一の演算器 2、6 第一の記憶手段 3 第一の選択手段 4 第二の選択手段 5 第二の記憶手段 11 第二の演算器 12 第三の演算器 13 第三の記憶手段 14 第三の選択手段 21 第一の部分積生成器 22 第二の部分積生成器 23 桁上げ保存加算器 24 桁上げ吸収加算器 25 第一のレジスタ 26 第二のレジスタ 31 選択回路 32、33、34、35 レジスタ 36、41、42、43 乗算器 37 演算器 44 加算器 101 制御手段 102、103、104 制御信号線 111、112、113、114 クロック期間の名称

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 数A,B,C,Rが複数ビットで表現さ
    れた正の整数であって、かつCが奇数で、かつRがR>
    Cを満たす2のべき乗の数であるとき、複数ビットで表
    現された2個の正整数X,Yおよび前記Cを入力として
    Mont(X,Y)=XYR−1modCの演算を行う
    第一の演算器(1)と,iを0から2−1まで1ずつ
    変えたときのARmodCの値の各々を記憶する第一
    の記憶手段(2)と,Bの値にしたがって前記第一の記
    憶手段(2)の記憶内容を選択するものであって、Bを
    n×kビットの2進表現として、n個のkビットの並び
    をB=(bn− …b)と表現するときに、ルー
    プ変数j=n−1,…,1,0に対するbに基づき前
    記第一の記憶手段(2)の記憶内容よりAbjRmod
    Cの値を選択し選択結果Wとして出力する第一の選択手
    段(3)と、前記第一の演算器(1)の出力を演算の途
    中結果Tとして記憶する第二の記憶手段(5)と、前記
    第一の演算器(1)の入力の組(X,Y)に対して、前
    記第二の記憶手段(5)の記憶内容Tおよび前記第一の
    選択手段(3)の選択結果Wの組(T,W)または
    (W,T)を供給するか、あるいはTを複製した(T,
    T)を供給するかのいずれかを選択する第二の選択手段
    (4)を具備し、前記第一の演算器(1)に(T,T)
    を供給することで前記第一の演算器(1)の出力に得ら
    れるMont(T,T)=T−1modCの値をも
    って前記第二の記憶手段(5)の内容を更新して新たな
    るTとし、然る操作をk回繰り返した後に前記第一の演
    算器(1)に(T,W)または(W,T)を供給し、前
    記第一の演算器(1)の出力に得られるMont(T,
    W)=T2^kbj−1modCによって前記第二
    の記憶手段(5)の内容を更新する操作を合わせて1組
    の操作とし、前記ループ変数j=n−1,…,0に対応
    して前記1組の操作をn回繰り返すことによりべき乗剰
    余演算の主要部を構成しMont(X,Y)の演算回数
    を削減することを特徴とした、べき乗剰余演算器。
  2. 【請求項2】 第二の記憶手段(5)の値がT=ARm
    odCであるとき、繰り返し処理の始めとして第一の演
    算器(1)における入力の組(X,Y)の一方に前記第
    二の記憶手段(5)の値Tを供給しかつ前記入力の組
    (X,Y)の他方に固定的にARmodCを与え、然る
    後に前記第一の演算器(1)の出力に得られるMont
    (T,ARmodC)=Ai+1−1modCす
    なわちA i+1RmodCをもって前記第二の記憶手段
    (5)の値Tを更新するとともに同じ値を前記第一の記
    憶手段(2)の空き領域にも格納することで1回の繰り
    返しを構成し、然る繰り返し操作をi=1,2,…,2
    −2に対応して2−2回繰り返すことにより、前記
    第一の記憶手段(2)に2−2個のARmodCの
    値、ただしi=2,3,…,2−1を格納する「請求
    項1」記載のべき乗剰余演算器。
  3. 【請求項3】 第一の記憶手段(2)に代えて、iを1
    から2−1まで1ずつ変えたときのARmodCの
    値の各々を記憶する第一の記憶手段(6)を備え、ルー
    プ変数j、ただしj=n−1,…,0に対して、Bを構
    成するビットの並びbがb≠0ならば「請求項1」
    に記載の1組の操作をそのとおり行い、b=0ならば
    前記1組の操作における第二の記憶手段(5)の更新操
    作の最後の1回を行わないことを特徴とする「請求項
    1」または「請求項2」記載のべき乗剰余演算器。
  4. 【請求項4】 Mont(X,Y)=XYR−1mod
    C の演算を行う第一の演算器(1)の内部構造ならび
    に動作として、c’およびuは各々mビットで表現され
    た整数であってかつc’が数式c’=−C−1mod2
    で与えられ、かつMont(X,Y)を求める演算の
    途中結果Mを記憶する第三の記憶手段(13)と、Xが
    t個のmビット2進数xt−1,…,x,xの並び
    すなわちX=(x −1…x)で表現されるとき
    に、ループ変数i=0,1,…,t−1に対応してx
    をXの中から選択する第三の選択手段(14)と、前記
    Y,M,c’およびxを入力としてu=(M+x
    Y)c’mod2を出力する第三の演算器(12)
    と、前記M,x,Y,C,uを入力としてf=(M
    +xY+uC)/2の演算を行い演算結果fを出
    力する第二の演算器(11)とを有し、前記第二の演算
    器(11)が演算結果fを出力しfもって前記第三
    の記憶手段(13)の記憶内容を更新することで繰り返
    し操作の1回を完了するとともに前記iの値を1だけ増
    加させ、然る操作をt回繰り返し、最後にM≧Cならば
    M−CをM<CならばMを演算結果XYR−1modC
    の値として出力することによりMont(X,Y)演算
    の主要部を構成しfの演算回数を削減することを特徴
    とした「請求項1」または「請求項2」または「請求項
    3」に記載のべき乗剰余演算器。
  5. 【請求項5】 f=(M+xY+uC)/2の演
    算を行う第二の演算器(11)が、xおよびYを入力
    としてxYの部分積Pを出力する第一の部分積生成
    器(21)と、uおよびCを入力としてuCの部分積P
    を出力する第二の部分積生成器(22)と、第三の記
    憶手段(13)の出力であるM=(M ,M)ならび
    にPならびにPを入力としてf=(M+xY+
    uC)/2=(fMS,fMC)を出力する桁上げ保
    存加算器(23)と、前記第三の記憶手段(13)の出
    力であるM=(M,M)を入力としてM+M
    計算して出力する桁上げ吸収加算器(24)よりなり、
    前記fMSが前記桁上げ保存加算器(23)にて導出さ
    れる和ビットを表し、前記fMCが前記桁上げ保存加算
    器(23)にて導出される桁上げビットを表し、前記f
    =(fMS,fMC)によって前記桁上げ保存加算器
    (23)の出力が和ビットfMSと桁上げビットfMC
    の組からなりかつ前記桁上げ保存加算器(23)が桁上
    げを上位桁に伝搬しない何らかの構造を持つことを表す
    ものであり、さらに前記第三の記憶手段(13)が、前
    記fMSを入力として演算の途中結果Mにおける和ビッ
    トMを出力する第一のレジスタ(25)と、前記f
    MSを入力として演算の途中結果Mにおける桁上げビッ
    トMを出力する第二のレジスタ(26)とからなり、
    かつM=(M,M)により前記第三の記憶手段(1
    3)の出力MがMとMの組からなるものであること
    を表すものであって、前記第二の演算器(11)が、M
    ont(X,Y)を計算するときにおいて、繰り返し計
    算の主要部分をなすf=(fMS,fMC)=(M+
    Y+uC)/2の演算を行う際に桁上げを上位桁
    に伝搬しないことにより、繰り返し計算1回分の演算時
    間を短縮し、これをもってMont(X,Y)の演算を
    高速化することを特徴とした「請求項4」に記載のべき
    乗剰余演算器。
  6. 【請求項6】 数X,Y,C,およびRが複数ビットで
    表現された正の整数であって、かつCが奇数でX<Cか
    つY<Cであり、かつRがC<Rを満たす2のべき乗の
    数であるときに、Mont(X,Y)=XYR−1mo
    dCの演算を行う演算器であって、かつc’およびuは
    各々mビットで表現された整数であってc’が数式c’
    =−C−1mod2で与えられ、かつMont(X,
    Y)を求める演算の途中結果Mを記憶する第三の記憶手
    段(13)と、Xがt個のmビット2進数xt−1
    …,x,xの並びすなわちX=(x −1…x
    )で表現されるときに、ループ変数i=0,1,…,
    t−1に対応してxをXの中から選択する第三の選択
    手段(14)と、前記M,x,Y,およびc’を入力
    としてu=(M+xY)c’mod2を出力する第
    三の演算器(12)と、前記M,x,Y,u,Cを入
    力としてf=(M+xY+uC)/2の演算を行
    い演算結果fを出力する第二の演算器(11)とを有
    し、かつmはハードウェアの定める定数であるときに、
    前記X,Y,C,R,およびc’が与えられかつ前記M
    およびiの初期値をゼロとして繰り返し計算を開始し、
    前記第二の演算器(11)が演算結果fを出力しf
    をもって前記第三の記憶手段(13)の記憶内容Mを更
    新することで繰り返し操作の1回を完了するとともに前
    記iの値を1だけ増加させ、然る操作をt回繰り返し、
    最後にM≧CならばM−CをM<CならばMを演算結果
    XYR−1modCの値として出力することによりMo
    nt(X,Y)演算を行う演算器において、f=(M
    +xY+uC)/2の演算を行う第二の演算器(1
    1)が、xおよびYを入力としてxYの部分積P
    を出力する第一の部分積生成器(21)と、uおよびC
    を入力としてuCの部分積Pを出力する第二の部分積
    生成器(22)と、第三の記憶手段(13)の出力であ
    るM=(M,M)ならびにPならびにPを入力
    としてf=(M+xY+uC)/2=(fMS
    MC)を出力する桁上げ保存加算器(23)と、前記
    第三の記憶手段(13)の出力であるM=(M
    )を入力としてM+Mを計算して出力する桁上
    げ吸収加算器(24)よりなり、前記fMSが前記桁上
    げ保存加算器(23)にて導出される和ビットを表し、
    前記fMCが前記桁上げ保存加算器(23)にて導出さ
    れる桁上げビットを表し、前記f=(fMS
    MC)により前記桁上げ保存加算器(23)の出力が
    和ビットfMSと桁上げビットfMCの組からなること
    を表し、かつ前記桁上げ保存加算器(23)が桁上げを
    上位桁に伝搬しない部分構造を持つものであって、さら
    に前記第三の記憶手段(13)が、前記fMSを入力と
    して演算の途中結果Mにおける和ビットMを出力する
    第一のレジスタ(25)と、前記fMSを入力として演
    算の途中結果Mにおける桁上げビットMを出力する第
    二のレジスタ(26)とからなり、かつM=(M,M
    )により前記第三の記憶手段(13)の出力MがM
    とMの組からなるものであることを表すものであっ
    て、前記第二の演算器(11)が、Mont(X,Y)
    を計算するときにおいて、前記t回繰り返しの計算で行
    われるf=(fMS,fMC)=(M+xY+u
    C)/2の演算の際に桁上げを上位桁に伝搬しないこ
    とにより、繰り返し計算1回あたりの演算時間を短縮
    し、かつ前記t回繰り返しの終了直後に前記桁上げ吸収
    加算器(24)により前記M+Mの桁上げ吸収加算
    を余分に実行しその後のM−Cの計算にも前記桁上げ吸
    収加算器(24)を使用し、かつ前記桁上げ吸収加算器
    (24)の計算時にはその出力をレジスタに書き込むた
    めの書き込み制御信号を与えるタイミングを前記繰り返
    し計算1回の周期よりも遅らせて与える制御手段(10
    1)を備えることを特徴とし、これをもってMont
    (X,Y)の演算における前記繰り返し計算部分の高速
    化を図った乗算剰余演算器。
  7. 【請求項7】 桁上げ吸収加算器(24)の計算時にそ
    の出力をレジスタに書き込むための書き込み制御信号を
    与えるタイミングを前記繰り返し計算1回の周期よりも
    遅らせて与える制御手段(101)において、前記繰り
    返し計算1回の周期の整数倍だけ遅らせることを特徴と
    した「請求項6」記載の乗算剰余演算器。
  8. 【請求項8】「請求項6」または「請求項7」に記載の
    乗算剰余演算器を第二の演算器(11)として用いた
    「請求項1」または「請求項2」または「請求項3」記
    載のべき乗剰余演算器。
JP2002014229A 2002-01-23 2002-01-23 べき乗剰余演算器 Pending JP2003216034A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002014229A JP2003216034A (ja) 2002-01-23 2002-01-23 べき乗剰余演算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002014229A JP2003216034A (ja) 2002-01-23 2002-01-23 べき乗剰余演算器

Publications (1)

Publication Number Publication Date
JP2003216034A true JP2003216034A (ja) 2003-07-30

Family

ID=27650976

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002014229A Pending JP2003216034A (ja) 2002-01-23 2002-01-23 べき乗剰余演算器

Country Status (1)

Country Link
JP (1) JP2003216034A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005250481A (ja) * 2004-03-02 2005-09-15 Samsung Electronics Co Ltd 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
JP2009003479A (ja) * 2008-10-02 2009-01-08 Hitachi Ltd べき乗剰余演算方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005250481A (ja) * 2004-03-02 2005-09-15 Samsung Electronics Co Ltd 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
JP2009003479A (ja) * 2008-10-02 2009-01-08 Hitachi Ltd べき乗剰余演算方法

Similar Documents

Publication Publication Date Title
EP0801345B1 (en) Circuit for modulo multiplication and exponentiation arithmetic
Öztürk et al. Low-power elliptic curve cryptography using scaled modular arithmetic
US7904498B2 (en) Modular multiplication processing apparatus
CN110351087B (zh) 流水线型的蒙哥马利模乘运算方法
JP2004534266A (ja) ハードウェアにおいて算術演算を効率的に行う方法および装置
WO2010048719A1 (en) Method and apparatus for modulus reduction
JP2002229445A (ja) べき乗剰余演算器
JP4180024B2 (ja) 乗算剰余演算器及び情報処理装置
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
Abdulrahman et al. High-speed hybrid-double multiplication architectures using new serial-out bit-level mastrovito multipliers
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
KR100478974B1 (ko) 직렬 유한체 승산기
JP2006023647A (ja) 乗算剰余演算器及び情報処理装置
US7266577B2 (en) Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus
JP2001034167A (ja) 演算装置及び暗号処理装置
KR100670780B1 (ko) 유한체 GF(2^m)에서의 하이브리드 곱셈 연산 장치및 연산 방법
JP2003216034A (ja) べき乗剰余演算器
JP2000207387A (ja) 演算装置及び暗号処理装置
Zimmermann et al. High-performance integer factoring with reconfigurable devices
JP4223819B2 (ja) べき乗剰余演算装置及びそのプログラム
KR100297110B1 (ko) 모듈러곱셈기
JP2004334212A (ja) モンゴメリ掛け算器及び掛け算方法
KR100564764B1 (ko) 유한체 다항식 곱셈 장치 및 그 방법
de Macedo Mourelle et al. Fast reconfigurable hardware for the M-ary modular exponentiation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070703

A02 Decision of refusal

Effective date: 20071113

Free format text: JAPANESE INTERMEDIATE CODE: A02