JP2001194993A - 剰余演算装置及び方法 - Google Patents

剰余演算装置及び方法

Info

Publication number
JP2001194993A
JP2001194993A JP2000334978A JP2000334978A JP2001194993A JP 2001194993 A JP2001194993 A JP 2001194993A JP 2000334978 A JP2000334978 A JP 2000334978A JP 2000334978 A JP2000334978 A JP 2000334978A JP 2001194993 A JP2001194993 A JP 2001194993A
Authority
JP
Japan
Prior art keywords
remainder
calculation
base
unit
arithmetic
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
Application number
JP2000334978A
Other languages
English (en)
Other versions
JP3742293B2 (ja
Inventor
Shinichi Kawamura
信一 川村
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2000334978A priority Critical patent/JP3742293B2/ja
Publication of JP2001194993A publication Critical patent/JP2001194993A/ja
Application granted granted Critical
Publication of JP3742293B2 publication Critical patent/JP3742293B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】モンゴメリ乗算等に高速化に寄与する新たな基
底変換(拡張)の実現 【解決手段】剰余演算機能を有し複数並列に配置される
積和回路と、この積和回路における剰余演算に用いられ
る補正項を計算する補正項計算ユニットとを備えた剰余
演算装置において、前記補正項計算ユニットは、前記補
正項を1ビットずつ逐次計算し、前記積和回路は、前記
補正項計算ユニットにより計算された前記補正項を逐次
反映させ所定の漸化式に従って基底変換もしくは基底拡
張を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、剰余演算系に基づ
き大きな整数の演算を並列処理により高速に計算する剰
余演算処理装置及び方法に関する。
【0002】
【従来の技術】大きな整数を効率良く演算するための手
法として剰余演算系(Modular ArithmeticまたはResidu
e Number System)が知られている。剰余演算系では、
互いに素な比較的小さな整数の組{a1, a2,…, an}を用
意し、表現対象となる大きな整数をこれらの整数で割っ
た余りで表現する。以後、この整数の組を剰余演算系の
基底(base)と称する。また、要素数nを基底サイズと称
する。
【0003】例えば基底{a1, a2,…, an}が与えられて
いる場合、整数xは、これを基底ai(i=1,2,...,n)で除
して得られるn個の余り{x1, x2,…, xn}により表現さ
れる。このとき、数xが基底要素の積A(=a1a2…an)未満
の正整数であれば、数xは基底要素の積Aを法として一
意に表現できる。言いかえれば、数xとその剰余演算系
表現{x1, x2,…, xn}は一対一に対応する。
【0004】このような剰余演算系表現において2つの
整数x,yの積を計算するには、まず、各要素毎の積を求
め、さらに、対応する基底aiで除した余りを求める。こ
れは、一般的には、各要素毎に対応する基底aiを法とす
る積を計算することで基底要素の積Aを法とする積が求
められることと言い換えられる。加算および減算につい
ても同様であり、基底aiに対応する要素xi,yiについ
て、aiを法とする加算あるいは減算をすればよい。
【0005】このような剰余演算系を用いた演算では、
乗算・加算・減算は、各要素毎独立に対応する基底を法
とする演算を行えば良いのであるが、例えば基底として
計算機のワード長以内の値を採用することで、非常に大
きな整数の演算を単精度の演算の繰り返しによって実現
できる。
【0006】また、それらの単精度演算は基底毎で独立
して実行できるので、演算器を複数用意することで並列
処理が可能になる。例えば、基底サイズがnの場合、剰
余機能付き乗算器をn個用意し、これらを並列に動作さ
せることによって、1回の単精度剰余付き乗算と同じ時
間内で基底要素の積Aを法とする乗算を終えることがで
きる。
【0007】現在の計算機内では、2進数表現が用いら
れているのが通常である。2進数表現に基づく大きな整
数の演算では、LSB(Least Significant Bit)からMSB(Mo
st Significant Bit)に向けて桁上がり(キャリー)が
伝播し、大きな整数の全桁数(あるいはビット長)に比
例した処理時間がかかる。したがって、剰余演算系を用
いて並列処理した場合に比べて処理速度の点で不利であ
る。
【0008】一方、剰余演算系はワード間の桁上りが生
じないので2進数表現で代表される基数法(Radix repre
sentation)に比べ、大きい整数の乗算・加算・減算を効
率良く行うための方式として古くから知られてきた。
【0009】しかしながら、除算や2数の大小比較につ
いては基数法に比べ効率良く行う手段は知られていなか
った。このため公開鍵暗号のような大きな整数の演算を
高速に行う応用に剰余演算系が適していると考えられな
がら、80年代までは剰余演算系を具体的にどう適用し
たら良いか知られていなかった。
【0010】そして、PoschらはIEEE Transaction on P
arallel and Distributed Systems,Vol.6, No.5, May 1
995, pp.449-454に掲載された”Modulo Reduction in R
esidue Number Systems”およびComputer & Security誌
Vol.17, pp.637-650, 1998の”RNS-Modulo Reduction
Upon a Restricted Base Value Set and its Applicabi
lity to RSA Cryptography”において、剰余演算系を利
用し、公開鍵暗号系のRSA暗号法(RSA cryptography)の
演算を高速に行う方式を提案した。
【0011】また、Kornerupらは13th IEEE Symposium
on Computer Arithmetic (Proceedings of ARITH13), I
EEE Computer Society, pp234-239の”An RNS Montgome
ry Modular Multiplication Algorithm”において、ま
たPaillierはSpringer-Verlag, Lecture Notes in Comp
uter Science No.1560 Public Key Cryptography (PK
C’99), pp.223-234の“Low-Cost Double-Size Modular
Exponentiation or Howto Stretch Your Cryptoproces
sor”において、類似の高速演算方式を提案した。
【0012】RSA暗号法に剰余演算系を用いる主な理由
は、同暗号法が十進数200桁程度以上の非常に大きな
整数の剰余乗算演算の繰り返しにより構成され、これま
で述べたような剰余演算系の乗算と加減算が高速に行え
る特性を利用して高速処理を実現することが可能である
ためである。
【0013】上記Poschら、Kornerupら、およびPaillie
rのそれぞれの方式において共通するのは、剰余演算系
において不利な除算を行うことを避けるために、Montgo
meryの演算方式を剰余演算系に組合せている点である。
また、処理の途中において、ある基底で剰余系表現され
た整数を別な基底で表現した値を求めるための基底変換
(base conversion)あるいは基底拡張(base extension)
が行われている点も3方式に共通している。さらに、い
ずれの方式とも基底変換または基底拡張を効率良く行う
ことができるか否かが処理全体の効率にかかわってい
る。
【0014】ここで、基底変換と基底拡張という2種類
の用語を用いているが、基底変換とは、ある基底で表現
された値をその基底と互いに素な別の基底で表現しなお
すことをいう。また、基底拡張とは、サイズnの基底で
表現された値を、元の基底にそれと互いに素な1つの整
数を加えた、サイズn+1の基底で表した場合のn+1
番目の要素を求めることを指す。基底拡張の方式があれ
ば、それをn回実行することにより基底変換を構成でき
ることは明らかである。剰余演算系を用いたRSA暗号法
の実現においては、基底変換(または基底拡張)を効率
良く行うための方式および装置が必要となる。
【0015】しかしながら、上記3つの方式、並びにこ
れまで提案されている方式は、以下で説明するように、
何らかの点で効率が悪い基底変換方式であるといえる。
【0016】まず、Poschらの提案した方式において、R
SA暗号の演算において示された基底変換の方式は、変換
前の値がある値よりも小さい場合には変換後の値に誤差
を生じる可能性がある。そこでPoschらは基底変換処理
の入力に適当なオフセットを加えることで該入力を基底
変換処理において誤差が生じないような値に変換し、そ
の変換結果を基底変換し、得られた基底変換結果からオ
フセットによる影響を取り除くという手順を提案してい
る。しかし、このようなオフセットのための前処理およ
び後処理は全体の演算量を増加させるので効率が悪い。
【0017】またPoschらの方式は与えられた基底で計
算可能なRSA暗号の鍵のサイズが著しく限定される上、
基底変換に必要な補正項を計算するために乗算器を必要
とするので、回路化した際の面積および処理遅延の点で
も不利である。
【0018】図5は、Poschらの方式によるRSA暗号演算
に用いられる剰余演算回路の概略構成を示す図である。
【0019】剰余演算機能付き積和回路501、RAM5
21、ROM531は1つのユニットを構成し、同様の構
成のユニットがn個並列に並ぶ構成になっている。ここ
では基底のサイズをnとしており、各ユニットは特定の
基底に対応した演算を行う。例えば、各ユニットは基底
Aのn個の各基底要素および基底Bのn個の各基底要素に
それぞれ対応しており、例えば積和回路501では基底
a1,b1に対応した演算が行われる。また、これらn個の
ユニットはそれぞれrビットの演算を行うよう構成され
ており、さらにrビットのバスによって相互に接続され
ている。
【0020】図6に積和回路501〜50nの内部構成
を示す。ここでは、便宜上、積和回路501で示すユニ
ットに関するものとして説明する。入力としては記号
a,bで表すrビットのデータと、図中で右側から入力
されているrビットのROM531からのデータ入力があ
る。図中で、aはRAM521からの入力、bはROM531
からの入力を表す。a,bはまず乗算器601で掛け合わ
され、結果は次段の加算器602に供給される。加算器
602では、乗算結果とレジスタ604からのフィード
バック値が入力され足し合わされる。加算器602の結
果は剰余演算部603に供給され、レジスタ605にセ
ットされた値により割った余りに変換される。ここでは
レジスタ605の値を記号mと書いているが、これは
基底aまたはbを表すものとする。入力a,bには基底
サイズと同じn組みのデータが供給されるが、n個のデ
ータをすべて計算した後には計算結果がレジスタ604
に出来上がっており、これはrビットのバスによってRA
M521に供給される。
【0021】図5の説明に戻って、剰余演算回路には、
基底変換において計算結果を補正するための補正項計算
ユニット510及びこの補正項計算ユニット510に外
付けされ、該補正項計算ユニット510に少なくともn
ワードのパラメータを供給するROM530が含まれる。
【0022】Poschらの提案した補正項計算ユニット5
10は、図7のような積和回路によって実現される。図
7に示す回路では、まず入力されたrビットのデータと
ROM530から入力されたデータが乗算器701で掛
け合わされたのち、加算器702によって累積加算され
る構成となっている。加算結果はレジスタ703に記憶
され、補正項を完全に計算し終わってから値がフィード
バックされる。
【0023】ここで注意すべき点は、補正項計算ユニッ
ト510の回路規模は、図6に示した剰余演算機能付き
積和回路の回路規模と同程度以上の大きなものであると
いう点である。また、ここで計算される補正項は(r+
log2n)ビット程度の大きさであり、図において、積和
回路501〜50nに向けて補正項を伝えるための伝送
バス幅はrビットではなく、(r+log2n)ビット必要で
あり、これは回路面積を増大させる要因になる。もっと
も、この内rビットはRAMから補正項演算ユニットへ
のバスと共用することが可能であるが、その場合でもlo
g2nビット分はフィードバックのために余計な面積を必
要とすることになる。
【0024】また、積和回路501から50nは、補正
項計算ユニット510から受け取った補正項をそれまで
の計算結果に反映させるために少なくとも剰余乗算を1
回行う必要がある。仮に、補正項を他の処理を行ってい
る間に、逐次積和回路にフィードバックすることができ
れば処理時間の節約になると思われるが、Poschらの構
成では補正項を完全に計算し終わってからでなければ値
をフィードバックすることはできない。これら具体的な
問題点を解決する手段はこれまで考案されていなかっ
た。
【0025】他の従来技術であるKornerupらの方式で
は、前記補正項を計算するために、ShenoyとKumaresan
がIEEE Transaction on Computers, Vol.38, No.2, Feb
ruary 1989, pp.292-297の”Fast Base Extension Usin
g a Redundant Modulus in RNS”で提案した方式を用い
ている。この場合、補正項のサイズはn程度でありPosc
hらの方式に比べ格段に小さいが、この方式の場合にも
やはり補正項の計算に乗算を必要とし回路規模、処理遅
延の点でより効率の良い補正項演算手順が求められてい
た。
【0026】また、他の従来技術であるPaillierの提案
した方式では、任意の基底を選べる訳ではなく、基底に
対して基数表現への変換や基数表現から剰余演算系表現
への変換が非常に効率良く行えるという条件が課されて
いるために適用範囲が限られている。論文中で具体的に
示されている適用可能な例は、基底サイズnが2の基底
二組を用いる場合のみが示されており、それ以外の実用
的な例は知られていない。nが2程度と小さい場合、基
底の各要素は逆に大きく、nを大きく取れて基底の各要
素を小さく設定できる場合にくらべ処理速度を上げるこ
とが困難である。
【0027】以上述べたように、RSA暗号の高速処理を
ねらって剰余演算系を利用することを提案した3種類の
方式が知られており、これまでに提案されているRSA暗
号の演算方式に比べて処理効率を上げる効果はあるもの
の、いずれの方式においても処理ステップの中で最も重
要な部分である基底変換処理の効率が悪かったり、基底
サイズが限られた方式しかなかった。
【0028】
【発明が解決しようとする課題】以上の点に鑑み本発明
は、従来提案されている基底変換方式に比べ、以下のよ
うな点のすべてもしくは一部において優れている新しい
基底変換方式を提供することを目的とする。
【0029】(a)補正項の値が比較的小さくかつ逐次処
理できる。
【0030】(b)変換後の値が変換前に表現されていた
値と一致し、誤差が生じない。
【0031】(c)仮に誤差が生じる場合でも、前後の処
理や入力サイズの制限により誤差を容易に制御できる。
【0032】(d)RSA暗号への適用においては鍵のサイズ
への制限が少ない。
【0033】(e)補正項を計算するのに乗算が不要で処
理効率が良い。
【0034】(f)基底の取り方に制約が少なく汎用性が
高い。
【0035】そして、このような基底変換方式を、Mont
gomeryのアルゴリズムと組み合わせることにより、RSA
暗号の処理等に用いられる高速な剰余演算装置及び方法
を実現することを目的とする。
【0036】
【課題を解決するための手段】上記課題を解決し目的を
達成するために本発明は次のように構成されている。
【0037】(1)本発明の剰余演算装置は剰余演算機
能を有する複数の積和回路と、この積和回路における剰
余演算に用いられる補正項を計算する補正項計算ユニッ
トとを備えた剰余演算装置において、前記補正項計算ユ
ニットは、前記補正項を1ビットずつ逐次計算し、前記
積和回路は、前記補正項計算ユニットにより計算された
前記補正項を逐次反映させて基底変換もしくは基底拡張
を行うことを特徴とする剰余演算装置である。
【0038】(2)本発明の剰余演算装置は上記(1)
に記載の装置であって、かつ前記積和回路は、モンゴメ
リ(Montgomery)乗算を行うことを特徴とする剰余演算装
置である。
【0039】(3)本発明の剰余演算装置は複数並列に
配置された積和回路と、この積和回路における剰余演算
に用いられる補正項を計算する補正項計算ユニットとを
備えた剰余演算処理装置において、前記補正項計算ユニ
ットは、前記補正項を1ビットずつ逐次計算し、前記積
和回路は、前記補正項計算ユニットにより計算された前
記補正項を逐次反映させて剰余演算系表現を基数表現に
変換する演算を行うことを特徴とする剰余演算装置であ
る。
【0040】(4)本発明の剰余演算装置方法は上記
(1)乃至(3)のいずれかに記載の装置であって、か
つ前記補正項計算ユニットは、除算回路を有し、前記積
和回路で扱われる剰余演算系の基底を2の冪、もしくは
2の冪に近接するものとすることを特徴とする剰余演算
装置である。
【0041】(5)本発明の剰余演算装置は上記(1)
乃至(4)のいずれかに記載の装置であって、かつ前記
補正項計算ユニットへの入力ビットを選択するビット選
択部を更に備えたことを特徴とする剰余演算装置であ
る。
【0042】(6)本発明の剰余演算装置は上記(1)
乃至(5)のいずれかに記載の装置であって、かつ外部
とのデータの入出力を行うI/O部を更に備えたことを
特徴とする剰余演算装置である。
【0043】(7)本発明の剰余演算装置は剰余演算系
における所定の演算アルゴリズムにおいてある基底を他
の基底に基底変換又は基底拡張する剰余演算装置におい
て、前記基底変換又は基底拡張の未知パラメータkを、
該未知パラメータkの前回計算結果の累積加算により生
じた桁上がりに近似して出力するk出力手段と、前記k
出力手段から出力された未知パラメータkに応じて前記
基底変換又は基底拡張における特定項の計算可否を切り
替える切替手段と、前記特定項の計算を含む乗算、加算
及び剰余算の組み合わせにより基底要素毎に前記基底変
換又は基底拡張の計算を行う複数の演算ユニットと、を
具備することを特徴とする剰余演算装置である。
【0044】(8)本発明の剰余演算装置は上記(7)
に記載の装置であって、かつ前記k出力手段は、中国剰
余定理に基づく前記未知パラメータkの計算式の分母を
2の冪により近似することを特徴とする剰余演算装置で
ある。
【0045】(9)本発明の剰余演算装置は上記(7)
に記載の装置であって、かつビット選択手段をさらに具
備し、前記k出力手段は中国剰余定理に基づく前記未知
パラメータkの計算式の分子を、前記ビット選択手段に
よる有効ビット長以外の切り捨てに基づいて近似するこ
とを特徴とする剰余演算装置である。
【0046】(10)本発明の剰余演算装置方法は上記
(7)に記載の装置であって、かつ前記k出力手段は、
中国剰余定理に基づく前記未知パラメータkの計算式の
分母を2の冪により近似するとともに、該計算式の分子
を、有効ビット長以外の切り捨てに基づいて近似するこ
とを特徴とする剰余演算装置である。
【0047】(11)本発明の剰余演算装置は上記
(7)に記載の装置であって、かつ前記所定の演算アル
ゴリズムは、入力された整数x,y,Nに対して、xy
−1 modNまたはxyB−1 mod N+Nを出力する
モンゴメリ乗算アルゴリズムから構成されることを特徴
とする剰余演算装置である。
【0048】(12)本発明の剰余演算装置は上記(1
1)に記載の装置であって、かつ前記モンゴメリ乗算を
用いた所定のアルゴリズムに従ってべき乗剰余算を行う
手段を具備することを特徴とする剰余演算装置である。
【0049】(13)本発明の剰余演算装置は上記
(7)に記載の装置であって、かつ中国剰余定理に基づ
く未知パラメータを含む所定の計算式に従って、剰余演
算系表現を基数表現に変換して出力する変換手段を具備
することを特徴とする剰余演算装置である。
【0050】(14)本発明の剰余演算装置は剰余演算
系における所定の演算アルゴリズムにおいてある基底を
他の基底に基底変換又は基底拡張する剰余演算装置にお
いて、特定項の計算を含む乗算、加算及び剰余算の組み
合わせにより基底要素毎に前記基底変換又は基底拡張の
計算を行うための複数の演算ユニットと、前記複数の演
算ユニットのそれぞれに設けられ、前記基底変換又は基
底拡張の未知パラメータkを、該未知パラメータkの前
回計算結果の累積加算により生じた桁上がりに近似して
出力するk出力手段と、前記k出力手段に対応する前記
演算ユニットの前記特定項の計算可否を、該k出力手段
から出力された未知パラメータkに応じて切り替える切
替手段と、当該演算ユニットのオペランドを隣接する演
算ユニットに送信し、及び隣接する他の演算ユニットか
らのオペランドを受信する演算ユニット間の接続手段
と、を具備する剰余演算装置である。
【0051】(15)本発明の剰余演算装置方法は上記
(14)に記載の装置であって、かつ前記k出力手段
は、中国剰余定理に基づく前記未知パラメータkの計算
式の分母を2の冪により近似することを特徴とする剰余
演算装置である。
【0052】(16)本発明の剰余演算装置方法は上記
(14)に記載の装置であって、かつ前記k出力手段
は、中国剰余定理に基づく前記未知パラメータkの計算
式の分子を、有効ビット長以外の切り捨てに基づいて近
似することを特徴とする剰余演算装置である。
【0053】(17)本発明の剰余演算装置は上記(1
4)に記載の装置方法であって、かつ前記k出力手段
は、中国剰余定理に基づく前記未知パラメータkの計算
式の分母を2の冪により近似するとともに、該計算式の
分子を、有効ビット長以外の切り捨てに基づいて近似す
ることを特徴とする剰余演算装置である。
【0054】(18)本発明の剰余演算装置方法は上記
(14)に記載の装置であって、かつ前記所定の演算ア
ルゴリズムは、入力された整数x,y,Nに対して、x
yB mod NまたはxyB−1 mod N+Nを出力す
るモンゴメリ乗算アルゴリズムから構成されることを特
徴とする剰余演算装置である。
【0055】(19)本発明の剰余演算装置は上記(1
8)に記載の装置であって、かつ前記モンゴメリ乗算を
用いた所定のアルゴリズムに従ってべき乗剰余算を行う
手段を具備することを特徴とする剰余演算装置である。
【0056】(20)本発明の剰余演算装置は上記(1
4)に記載の装置であって、かつ中国剰余定理に基づく
未知パラメータを含む所定の計算式に従って、剰余演算
系表現を基数表現に変換して出力する変換手段を具備す
ることを特徴とする剰余演算装置である。
【0057】(21)本発明の剰余演算方法は剰余演算
系における所定の演算アルゴリズムにおいてある基底を
他の基底に基底変換又は基底拡張する剰余演算方法にお
いて、前記基底変換又は基底拡張の未知パラメータk
を、前回計算結果の累積加算により生じた桁上がりに近
似し、前記出力された未知パラメータkに応じて前記基
底変換又は基底拡張における特定項の計算可否を切り替
え、前記特定項の計算を含む乗算、加算及び剰余算の組
み合わせにより基底要素毎に前記基底変換又は基底拡張
の計算を行うことを特徴とする剰余演算方法である。
【0058】(22)本発明の剰余演算方法は上記(2
1)に記載の方法であって、かつ中国剰余定理に基づく
前記未知パラメータkの計算式の分母を2の冪により近
似することを特徴とする剰余演算方法である。
【0059】(23)本発明の剰余演算方法は上記(2
1)に記載の方法であって、かつ中国剰余定理に基づく
前記未知パラメータkの計算式の分子を、有効ビット長
以外の切り捨てに基づいて近似することを特徴とする剰
余演算方法である。
【0060】(24)本発明の剰余演算装置方法は上記
(21)に記載の方法であって、かつ中国剰余定理に基
づく前記未知パラメータkの計算式の分母を2の冪によ
り近似するとともに、該計算式の分子を、有効ビット長
以外の切り捨てに基づいて近似することを特徴とする剰
余演算方法である。
【0061】(25)本発明の剰余演算方法は上記(2
1)に記載の方法であって、かつ前記所定の演算アルゴ
リズムは、入力された整数x,y,Nに対して、xyB
−1 mod NまたはxyB−1 mod N+Nを出力するモ
ンゴメリ乗算アルゴリズムから構成されることを特徴と
する剰余演算方法である。
【0062】
【発明の実施の形態】以下、本発明の実施形態につい
て、図面を参照しつつ詳細に説明する。
【0063】(第1実施形態)まず、本発明の最も適し
た例であるRSA暗号法の演算について述べる。
【0064】RSA暗号の暗号化および復号は次の式で表
されるべき剰余演算によって実現される。
【0065】C=me mod N (1) ここで、m,Nは十進数で数百桁の大きさで処理量が非常
に大きいため、これを効率良く計算するために様々な方
式が考案されてきた。RSA暗号の演算を実装する良く知
られた方法としてMontgomeryによって提案された剰余付
き乗算(以後これをモンゴメリ(Montgomery)乗算と呼
ぶ)を繰り返し用いる方法がある。従来の技術でも紹介
したように、本発明の具体的適用対象の一つとしてモン
ゴメリ乗算を剰余演算系で行う場合を取り上げる。ここ
では、まず剰余演算系ではない通常のモンゴメリ乗算の
処理手続きについて説明する。
【0066】モンゴメリ乗算は、入力された整数x,
y,Nに対して、xyB−1 mod NまたはxyB−1
mod N+Nを出力するアルゴリズムであり、次の5ステ
ップからなる。
【0067】 (1)s ← x・y (2)t ← {s・(−N)−1}mod B (3)u ← t・N (4)v ← s+u (5)w ← v/B ここで、s,t,u,v,wは中間変数を表し、BはN
より大きく、Nと互いに素な任意の整数である。
【0068】これを剰余演算系で実現するアイディアは
Poschらが初めて提案しており、次のような7ステップ
で書ける。
【0069】 (1)sA ← xA・yA, sB ← xB・yB (2)tB ← {sB・(−NB−1}mod B (3)tB から基底変換によりtAを求める。 (4)uA ← tA・NA (5)vA ← sA+uA (6)wA ← vAA −1 (7)wAから基底変換によりwBを求める。 ここで、添え字AあるいはBをつけた記号はそれぞれ剰余
演算系の基底A={a1,a2,…, an}あるいは基底B={b1,
b2,…, bn}によって表現された数を表す。例えば、x
Aは基底要素の積A= a1a2…an を法とする剰余環の要素
xを基底Aの各要素で割った余りn個の組{x1, x2,…,
xn}を表す。上記の処理により正しく計算ができるため
には少なくともN<A,N<Bが必要条件である。この
条件からxやyは基底Aのみ、あるいは基底Bのみで一意
に表現できるので、xA,xBのペアでxを表すこと自体
は冗長である。しかし、xとyの積sがとる値の範囲は
0≦s<N2であり、A*Bを基底としてはじめて正しく表
現される。このことからxとyもA*Bを基底として表現
することによりsが剰余演算系の積として正しく計算で
きることがわかる。なお、基底Aと基底Bのサイズnとm
は一般には異なるが、特殊な場合としてn=mとした場
合には基底Aを処理する演算ユニットと基底Bを処理する
演算ユニットを共用できるという利点がある。
【0070】剰余演算系におけるモンゴメリ乗算の処理
においてステップ(3)と(7)を除けば、通常のモン
ゴメリ演算における5つのステップとの対応関係は明ら
かであろう。ステップ(1)〜(2)、(4)〜(6)
は剰余演算系の乗算または加算によって容易に実現でき
る。例えば、ステップ(1)のsAの計算では基底Aの剰
余演算系で表されたxの各要素とyの各要素を対応する
基底要素を法として乗ずることによって計算できる。こ
れに対してステップ(3)、(7)の基底変換について
これまで幾つかの研究がなされてきた。基底変換をいか
に効率良く行うかが上記処理アルゴリズムを効率良く実
装するためのポイントとなる。
【0071】与えられたxをまさしく基底要素の積A
(= a1a2…an)以下の正の値として表現する手法をまず
考察する。いまxを0≦x<Aなる整数とし、その剰余
演算系表現を{x1, x2,…, xn}とする。この時よく知
られた中国剰余定理から次式が成り立つ。
【0072】
【数1】
【0073】ここで、Ai はA/ ai,Ai -1は法ai におけ
るAi の乗法逆元である。このとき、
【数2】
【0074】なるkが唯一存在する。ここで、未知なパ
ラメータはkのみであり、kを既知のパラメータで表現す
ることを考える。kは第一項で計算された値を0以上A
未満の整数にするためのパラメータであり、以後、kを
補正項と呼ぶことにする。
【0075】式(3)の両辺をAで割ると、
【数3】 従って、
【数4】 ここで、0≦x/A<1を考慮すると、
【数5】 が言える。小数部を切り捨てる操作を記号[ ]で表す
と、式(6)から次の関係式が導ける。
【0076】
【数6】
【0077】これはPoschらの表現に似ているが彼等の
方式による補正項k’は次のように書ける。
【0078】
【数7】
【0079】このPoschらの式(8)と比べると、本発
明に係る式(7)は、xi の項が()内に組み込まれ、
ai を法としてAi -1と掛け合わされている点が異なる。
以後この積を次のように記号ξiで表す。
【0080】 ξi=xi *Ai -1mod ai (9) 式(7)に基づく補正項kの取りうる値は0以上n未満
の値となるのに対し、Poschらの式(8)に基づく補正
項k’は最大でΣi=1 n ai 程度の大きさとなる。このPo
schらの補正項k’は、
【数8】 を満たし、多くの場合nを大きく超える値となる。な
お、Min,Maxはそれぞれ最小値、最大値をとる関数とす
る。
【0081】式(7)に従って計算される補正項kは、P
oschらの方式に比べて値が小さいものが得られる。この
ように、本発明による補正項kの計算法は式(7)の関
係式を出発点として構成される。
【0082】ここで、本発明によるモンゴメリ乗算を実
現する剰余演算回路の構成を図面を参照しながら説明す
る。図1は、モンゴメリ乗算を実現する剰余演算装置の
主要部分を図示したものである。剰余演算機能付き積和
回路101、RAM121、ROM131は1つのユニットを
構成し、同様の構成のユニットがn個並列に並ぶ構成に
なっている。各ユニットは基底Aのn個の各基底要素お
よび基底Bのn個の各基底要素にそれぞれ対応してお
り、例えば積和回路101では基底a1,b1に対応した演
算が行われる。これらn個のユニットはそれぞれrビッ
トの演算を行うよう構成されており、さらにrビットの
バスによって相互に接続されている。これらn個のユニ
ット以外の構成要素としてビット選択部111と補正計
算ユニット110とが図示されている。補正項計算ユニ
ット110は、上記した式(7)またはその変形式に従
って補正項kに相当する値を計算するために必要なユニ
ットである。ビット選択部111はrビットのバスから
必要な数の上位ビット(q)を切り出すユニットである
が、実装によってはrビットをそのまま補正項計算ユニ
ット110に供給する場合もある。
【0083】図2は、図1に示された積和回路101〜
10nのうちの一つの積和回路の構成を示している。こ
こでは、便宜上、積和回路101で示すユニットに関す
るものとして説明する。入力としては、記号a,bで表
すrビットのデータと、図中で右側から入力されている
rビットのROM131からのデータと、1ビットの補正
項演算ユニットからの出力とがある。図中でaはRAM1
21からの入力、bはROM131からの入力を表す。
a,bはまず乗算器201で掛け合わされ、結果は次段
の加算器202に供給される。加算器202は乗算結果
の他にレジスタ204からのフィードバック値と、レジ
スタ205からのデータとが入力され、足し合わされ
る。ただし、レジスタ205からのデータは、スイッチ
207が閉じているときはそのまま加算器202に供給
されるが、スイッチ207が開いている時は0に置き換
えられる。スイッチ207の開閉は補正項計算ユニット
110からの1ビットのデータで制御される。データが
1の場合は閉、データが0の場合は開に制御される。加
算器202の結果は剰余演算部203に供給され、レジ
スタ206にセットされた値により割った余りに変換さ
れる。ここでは、レジスタ206の値を記号mと書い
ているが、これは基底a1またはb1を表すものとする。入
力a,bには基底サイズと同じn組みのデータが供給さ
れるが、n個のデータをすべて計算した後には計算結果
はレジスタ204に出来上がっており、これはrビット
のバスによってRAM121に供給される。
【0084】図3は、補正項計算ユニット110の一構
成例を示している。この補正項計算ユニット110は、
入力されたqビットのデータを加算器301によって累
積加算する構成を有する。加算結果のq+1ビットはレ
ジスタ302に記憶され、レジスタ302の最上位ビッ
トが補正項の逐次計算結果として出力される。最上位ビ
ット以外のqビットは次の処理ステップで再び加算器3
01に供給される。入力として基底サイズと等しいn個
の値が供給されるので、補正項演算ユニット110は、
n回にわたって計算結果を出力することになる。
【0085】図4は、ビット選択部111の構成を示す
図である。ここでは入力されたrビットの内、上位qビ
ット(q≦r)が出力される。なお、q=rとする構成
の場合は、ビット選択部を設けなくてもよい。
【0086】図8は、補正項計算ユニット110の他の
構成例を示す。この構成例は、入力値をまず除算回路8
01によって除算する点を特徴とする。このような除算
回路801は一見、図7の構成に比べて不利に見えるか
もしれないが、除数が2の冪または2の冪に非常に近け
れば、効率良く除算を行う手段が知られており、除算回
路801での処理は必ずしも大きくない。
【0087】ここで、本発明に係る剰余演算装置の第1
の実施形態の特徴点として、式(7)に従って補正項を
計算するための手順について説明する。なお、本実施形
態は図1においてq=rとした回路構成を前提とする。
また、本実施形態では、図8に示した補正項計算ユニッ
トの構成を用いることとする。この図8の構成では補正
項を求める際に除算が行われるが、基底要素の積A未満
の任意のxに対して正しい補正項kを計算できるという
長所がある。また、一般には除算の精度と手間が問題に
なるが、2r、2r−1、2r+1のような特殊な値を基
底とする場合には、この手法により容易に補正項を計算
できる。
【0088】ここで、基底Aで表現されたxを基底Bの表
現に変換するまでの流れを説明する。
【0089】
【数9】
【0090】上式(11)に基づく演算を実際にハード
ウェア化するためには、次式のような漸化式で表現され
る手続きが利用される。
【0091】 σi = (σi-1 − ki-1 ) +ξi / ai (12) ki = [σi ] (13) ci = {ci-1i* (Ai mod bj)+ ki*(bj − Amod bj )} mod bj(14) 上式(12)〜(14)に基づく手続きを、変換先とな
るすべての基底要素b (j=1,...,m)について、i=
1からnまで順に繰り返す。各変数の初期値σ=k
=c=0とすると、cnが基底変換された結果となる。こ
のように漸化式で表現すると、補正項kは1ビットずつ
計算され、上式(14)に示されるように、その都度、
基底変換の途中結果に反映されることがわかる。
【0092】式(12)に基づいて補正項kを逐次計算
するためのハードウェア構成が、既に示した図8の補正
項計算ユニット110である。上式(11)におけるξ
iは、図8に示される入力xに対応し、上式(11)にお
けるaiは入力yに対応する。
【0093】加算器802は、除算回路801から出力
された除算結果(x/y)と、レジスタ803に保持されて
いる前回の値とを加算し、その結果をレジスタ803に
出力する。同図に示されるように、レジスタ803にお
いてキャリーが生じた際、そのキャリービット(1ビッ
ト)が補正項k(reduction factor)として補正項計算
ユニット110から出力される。この補正項kは、1ま
たは0の値をとる。
【0094】補正項計算ユニット110から出力された
kに基づき、式(14)に従って基底変換後の値を並列
に計算するためのハードウェア構成が、既に示した図2
の積和回路101〜10nである。積和回路の一つ、例
えば積和回路101は、次のような基本演算をサポート
するよう構成される。ci+1 = ( ci + ab + kid ) mod m
i (15)上式(15)において、右辺
に含まれるkiは1または0であるため、右辺第三項の計
算はスイッチ207のみにより実現される。これは、図
1に示した補正項演算ユニット110から積和回路10
1〜10nへのフィードバックは1ビットの結線のみで
足りることを意味している。このような本実施形態の回
路構成は、図5に示したPoschらの回路に比べて極めて
簡素な構成になっている。フィードバックが1ビットで
済むという構成上の利点は、後述する他の実施形態でも
同様である。
【0095】なお、以上の手続きでは補正項を計算する
際、最初にxiをAi -1と掛けてξiを求める必要がある
が、剰余演算系のモンゴメリ乗算にこの基底変換を用い
る場合には、ステップ(2)で定数(‐NB -1)の各要素
にあらかじめAi -1を掛けておくことで、ξiを求める手
間が新たに加わることが無くなる。また、ステップ
(7)の変換に必要な前処理は、ステップ(6)の定数
BA -1に組み込んでおくことができる。この点は、後述す
る他の実施形態についても同様である。
【0096】また、以上の手続きは基底変換のみならず
基底拡張にも適用可能であることは明らかである。すな
わち、m個すべての基底{bj}について変換を行うのでは
なく、特定の基底についてのみ変換を行えば、基底拡張
を行ったこととになる。
【0097】以上説明した第1実施形態の剰余演算装置
に適用された、本発明に係る新たな基底変換(拡張)に
よれば、次のような作用効果を得ることができる。 (a)補正項の値を比較的小さくし、かつこれを1ビット
単位で逐次処理できる。 (b)基底変換後の値が変換前に表現されていた値と同じ
であるから、Poschらの方式のような誤差が生じない。 (c)仮に誤差が生じるとしても、前後の処理や入力サイ
ズの制限により誤差を容易に制御できる。 (d)RSA暗号への適用においては鍵のサイズへの制限が少
ない。 (e)補正項の計算に乗算が不要であり処理効率が良い。 (f)基底の取り方に制約が少なく汎用性が高い。 したがって、本実施形態のような基底変換(拡張)によ
れば、簡素な構成でモンゴメリ乗算を高速化でき、ひい
てはRSA暗号法の処理の高速化を実現できる。
【0098】また、本実施形態の剰余演算装置は、剰余
演算系表現を基数表現に変換する手続にも適用可能であ
る。この手続きの詳細は第2実施形態において説明す
る。(第2実施形態)第2の実施形態は、式(11)に
よる補正項kの計算式において、右辺の各項の分母を、
分母以上で最も分母に近い2の冪に選ぶことで近似を行
うものである。
【0099】すなわち、 2ri-1 < ai ≦ 2ri (16) を満たすriによって、ai を2riで近似する。なお、一
般にriは基底の要素毎で異なるが、実装上はすべての基
底要素を同一のビット長にすると、図1の積和演算回路
101〜10nが共通化できるといった利点が得られ
る。適当なμiに対してaiは次式のように表される。
【0100】 ai = 2ri‐μi (17) この時、式(11)で計算される補正項kの近似値lとし
【数10】 を用いる。lもk同様に漸化式で逐次計算すると。
【0101】 σi = (σi-1 − li-1 ) +ξi / 2ri (19) li = [σi] (20) ここで、lおよびσの初期値はともに0とする。補正項
の計算はこの式(19)および(20)にしたがって行
うことができる。本実施形態についても第1の実施形態
と同様に、図1においてq=rとした回路構成を前提と
している。また、本実施形態以降では図3に示す補正項
計算ユニットの構成を用いることとする。
【0102】式(19)および(20)に従った補正項
計算は、第1実施形態と同様に基底変換および基底拡張
に利用できる。しかしながら本実施形態では、これを剰
余演算系表現を基数表現に変換する手続きに応用する。
次式(21)は、剰余演算系表現を基数表現に変換する
手続きを示している。
【0103】 c i = ci-1i* Ai ‐ li *A (21) ここで注意すべきは、式(21)は式(14)と似てい
るが、式(14)では変数ciは最大の基底を表現できる
精度さえあれば良かったのに対して、式(21)の変数
ciは基底要素の積A程度の大きさを有する多倍長変数を
格納できることを前提としている点である。実際にハー
ドウェアを設計する場合には式(21)の計算をそのま
ま実現するのではなく、単精度の演算の繰り返しに分割
するなどの工夫が必要であるが、剰余演算系表現から基
数法表現に変換する原理を説明するにはこれで十分であ
ろう。また単精度演算への分解は容易である。
【0104】式(18)に従ってkを近似した場合、式
(21)の変換結果に誤差が生じることがある。ここで
その誤差について若干の説明を加える。まず近似誤差の
尺度として次式で表されるεを導入する。 ε= Max(μi/2ri ) (22) このεを用いると、入力xが、 nεA ≦ x < A (23) のとき、式(17)は正しい補正項kと同じ値を与え
る。また、 0 ≦ x < nεA (24) のとき、式(17)は正しい値kまたはk-1を与える。
式(23)によると、nε<1を満たし、かつ、必要な
だけ小さいεを選ぶことが求められる。一方、μi を十
分小さく選ぶと、図2の剰余演算部203で行われるmo
d ai演算が容易になるということも知られている。
【0105】以上説明した第2実施形態によれば、第1
実施形態と同様に簡素な構成で高速に補正項lを計算す
る剰余演算装置により、剰余演算系表現を基数表現に変
換する手続を実現できる。なお、第2の実施形態では、
式(12)の分母を2の冪で近似したが、式(12)に
おいて分母のみならず分子についても近似を行ってもよ
い。具体的には、次の第3実施形態で説明するように、
分子の有効ビット長を許容誤差範囲内で短くしてもよ
い。
【0106】(第3実施形態)第3実施形態では、式
(12)の分子をの有効ビット長を許容誤差範囲内で短
くすることで近似を行うものである。この近似は、図1
においてq<rとし、rビットの上位qビットを補正項
計算ユニットで累積加算することに対応する。
【0107】この場合の補正項をmとおき、例えば次式
(25)によってmを求める。
【0108】
【数11】
【0109】ここで、trunc( )は与えられた変数の上
位qビットはそのままとし、該上位ビットよりも下位の
ビットを0とする関数である。原理的には、各項毎に取
り出すビット数qを変えても良いが、すべての項にqを
共通にした方が通常ハードウェア構成は簡単となる。
【0110】mを逐次計算するための漸化式は以下の通
りである。 σi = (σi-1 − mi-1 ) + trunc(ξi )/ 2ri (26) mi = [σi] (27) ただし、σとmの初期値は0とする。本実施形態の場
合、分母のみならず分子についても近似誤差が生じる。
これら分母及び分子の近似誤差による影響について説明
する。今、分子の近似誤差の尺度として次のようなδi
を定義する。 δi = {ξi ‐ trunc(ξi )} / ai (28) さらに、 δ=Max(δi ) (29) を定義する。
【0111】このδが導入されると、第2の実施形態の
場合に似た以下のような条件が与えられる。ここで、入
力xが、 n(ε+δ)A ≦ x < A (30) のとき、式(25)は正しい補正項kと同じ値を与え
る。また、 0 ≦ x < n(ε+δ)A (31) のとき、式(25)は正しい値kまたはk-1を与える。第
3実施形態によれば、式(12)の分母のみならず、分
子についてもその有効ビット長を許容誤差範囲内で短く
することで近似を行っているので、補正項の計算をより
簡素化、高速化できる。なお、第2および3の実施形態
によって与えられる補正項l, mは、入力xがある値以上
の値の場合は正しい補正項を与え、xがある値よりも小
さい場合は正しい補正項を与えないという性質を持って
いる。しかし、場合によっては、xがある値以上の場合
のみ補正項が誤差を含むことがあり、xがある値以下で
あれば、任意に小さい値まで正しい補正項が与えられ
る、という性質の方が好ましい場合がある。例えば、上
記したモンゴメリ乗算のステップ(7)の基底Aから基
底Bへの変換では、モジュラスNをある値以下しておくだ
けで常に正しく基底変換がなされるようにしたい場合で
ある。
【0112】(第4実施形態)次に、第4の実施形態と
して、xがある値以下であれば、任意に小さい値まで正
しい補正項が与えられるような補正項の計算方法を説明
する。
【0113】補正項の計算の基本原理は式(11)に基
づくが、分母は2の冪で近似し、分子は上位qビットの
み使うという近似を用いるものとする。この方式では、
パラメータαとβを導入するが、αは次式のように入力
xの大きさを制限するためのパラメータである。 0≦ x < (1−α)A (32) 本実施形態における補正項m’は次式に従って計算す
る。
【0114】
【数12】
【0115】本実施形態は、図1においてq<rとして
rビットの上位qビットを補正項演算ユニット110
(図3)に入力し、内部レジスタ302の初期値をβと
して累積加算するものである。式(33)に対応する漸
化式は次の通りである。 σ0 =β (34) m’0=0 (35) σi = (σi-1 − m’i-1 ) + trunc(ξi ) / 2ri (36) m’i = [σi] (37) このとき、n (ε+δ)≦β≦α<1であれば0≦x≦
(1−α)Aなるxは正しく変換される。
【0116】例えば、α=β=1/2とすると、A/2以
下の任意のxに対して常に正しい補正項を計算すること
が可能である。β=1/2を図1の剰余演算装置で実現
するには、図3に示したレジスタ302の上位から2番
目のビットに1をセットすれば良い。このようにβを2
の冪の逆数に選ぶと、レジスタの初期値の設定は、対応
する一つのビットを1にセットするだけで良く簡単にな
る。なお、一般には誤差n(ε+δ)以上でα以下のβ
ならば、任意の値をオフセットとして設定できる。
【0117】第4実施形態によれば、上記のようにパラ
メータαとβが導入され、xがある値以下に制限され
る。そして、該制限されたxの任意の小さい値において
正しい補正項が常に与えられるような補正項の計算を実
現できる。
【0118】(第5実施形態)第5実施形態は、パラメ
ータサイズに関する。RSA暗号の場合、1024ビット
程度のモジュラスサイズを選ぶ必要があり、基底A,Bと
もに1024ビットを若干上回る程度の大きさが必要で
ある。基底A,Bが各々32ビット程度、すなわちr=3
2とすると、基底サイズはn=33程度となる。これは
n*rを1024程度とするためである。第4の実施形
態においてα=β=1/2とした場合、誤差の発生を抑
えるためにはn(ε+δ)≦1/2であることが必要で
ある。したがって、ε+δ≦1/2n=1/66であ
り、ε<1/2、ε<1/2はこれを満たす十分条
件である。このようなパラメータサイズは、図3に示し
た加算器301の精度に概ね対応しており、補正項の演
算には8ビット程度の加算器を用いれば良いことがわか
る。
【0119】(第6実施形態)第6実施形態は、これま
でに説明した本発明に係る基底変換(拡張)によるモン
ゴメリ乗算に基づいてべき乗剰余演算を行う装置に関す
る。図9は、本実施形態に係るべき乗剰余演算装置の全
体構成を表す図である。入力データおよび出力データは
図示されたI/O部1000を介してやり取りされる。
入力データは、まずI/O部1000を介して所定のR
AM1201に格納される。外部からのデータが剰余演
算系表現で入力された場合には、それぞれ対応するRA
M1201〜120nに格納される。図中にはRAMが
n個示されているが、各RAMにはそれぞれ基底aとb
に対応する要素が書きこまれる。入力されたデータ
は、積和回路1101〜110n及び補正項計算ユニッ
ト1100により、これまでに述べたモンゴメリ乗算を
繰り返すことによってべき乗剰余演算結果として与えら
れる。この演算結果は対応するRAM1200〜120
nに格納され、I/O部1000を介して外部に出力さ
れる。
【0120】モンゴメリ乗算を繰り返すことによってべ
き乗剰余演算を行うための手順について、図10のフロ
ーチャートに従って説明する。同図に示されるフローチ
ャートは、入力された剰余演算系表現の値xをe乗し、
Nで割った余りを求める処理を表している。ただし、N
は既知と仮定し、Nの剰余演算系表現を求めるなどの処
理については事前に計算してあるものとして図10には
示されていない。なお、Nを外部入力とし、Nの剰余演
算系表現を求めるなどの処理をその都度行うように構成
しても良い。
【0121】図10に示すMMは剰余系演算によるモン
ゴメリ乗算を意味する関数である。入力されたxの剰余
演算系表現は、まず定数dの剰余演算系表現された値(d
A, d B)とモンゴメリ乗算によって掛け合わされてx'に
変換される。ただし、d=B mod Nである。次に、
変換された値x'(の剰余演算系表現)は、中間結果c
にコピーされる。次のステップはループ処理であり、ル
ープ変数iはk−1から1まで変化する。ここで、外部
入力されたべき指数eは2進数表現されており、そのビ
ット数はkビットであって各ビットはeと表現されて
いる。eは最上位ビットであり、ここでは1とする。
また、kは2以上の値とする。ループ内では、まず中間
変数cの2乗に相当する値がモンゴメリ乗算を用いて計
算される。続いて、ループ変数iに対応するeのビット
eが1であるか否かを判定し、1でなければループの
開始に戻り、1であるならば次のステップに進む。次の
ステップでは、cとxの積をモンゴメリ乗算によって求
める。続いて、ループ変数iが1であるか否かを判定
し、1でなければループの開始点に戻り、1であるなら
ばループ処理を抜ける。最終的なステップでは、ここま
での計算結果cと、1を剰余演算系表現した値との積を
モンゴメリ乗算によって求め、結果y(の剰余演算系表
現)を得る。
【0122】以上によりy=x mod Nが計算され
る。
【0123】(第7実施形態)第7実施形態は、剰余演
算装置をリング構成としたものに関する。図1に示した
n個の積和回路は、rビットのバスを介して接続されて
いる。このバス接続によって、あるRAMから出力され
たデータを、n個の全ての積和ユニットに伝送し、並列
処理することが可能となる。バスによって積和回路を結
ぶ構成は、並列処理の実現に有効な構成法の一つである
といえる。一方、ネットワークアーキテクチャの分野で
良く知られているように、複数ユニットを接続する方法
としては、このようなバス接続のほかに、リング接続が
考えられる。バス型のアーキテクチャはn個のユニット
に同一のデータを放送(broadcast)するためのバスに
よって特徴づけられるのに対して、リング接続では隣り
合ったユニット間を結ぶ通信路がn個のユニットを接続
し、全体としてリング状のアーキテクチャとなる。
【0124】本発明による剰余演算装置もリング接続に
よって実現することが可能である。直列的なリング接続
の場合、各ユニットは隣ユニットにデータを送るだけで
良いので、複数のユニットにデータを送信しなければな
らないバス型の構成に比べ、各ユニットのデータ駆動能
力が小さくて済む。また全ユニットの動作を全く同じに
制御することができる。これに対してバス型の場合に
は、あるユニットがデータを放送する際には、残りの
(n−1)個のユニットはそのデータを受信することに
なり、全ユニットが同一の動作をする訳ではない。全ユ
ニットの動作が同じであるためにリング型の方が制御が
容易である。
【0125】図11はリング構成の剰余演算装置の構成
を示すブロック図である。図11の構成では、バス接続
がリング接続に変更されていると共に、図1に示したビ
ット選択部111と補正項計算ユニット110が、n個
の積和回路のそれぞれに対して設けられるという変更が
加えられている。図1に示した構成は、1つの補正項演
算ユニットが設けられていただけであり、補正項計算ユ
ニットで計算された補正項をn個の積和回路に放送する
ためには、1ビットのバスを設けるだけで済んだ。一
方、本実施形態のようにn個の補正項計算ユニットを積
和回路のそれぞれに設ける構成とした場合は回路規模が
若干増加する。しかし、本発明に係る補正項計算ユニッ
トは図3に示したように極めて簡素な構成であり、この
ような補正項計算ユニットをn個設ける構成としても、
全体の回路規模に占める補正項計算ユニットの割合は極
めて小さい。
【0126】図11のリング接続構成では、補正項計算
ユニットが積和回路毎に設けられているので補正項を各
積和回路に伝送するためのバスが不要になり、その代わ
りに接続ユニットが設けられる。この接続ユニットの詳
細構成を図12に示す。同図に示される接続ユニット
は、2入力のセレクタ960とセレクタ960からの出
力をラッチするrビットのレジスタ961とにより構成
されている。ある積和回路において、このレジスタ96
1は今回の演算サイクルで使用されるオペランドの一つ
を記憶する。次の演算サイクルにおいて、そのオペラン
ドは隣接(図では例えば左隣)する接続ユニットに転送
され、また、他の隣接(この場合、図では右隣)のユニ
ットから次のオペランドが受信される。n個の接続ユニ
ットの各々のレジスタ961に格納されたn個のオペラ
ンドは、バケツリレー的に次々と隣接するユニットに転
送され、ちょうどnサイクルの時間で全ユニットにn個
のオペランドが回覧されることになる。
【0127】[ユニット数のスケーラビリティ]ここま
では、積和回路の個数n(あるいはユニット数n)は基
底サイズnに等しいものとして説明してきた。しかし、
演算ユニット数と基底サイズとが必ずしも一致している
必要はないというのが一般的である。そこでユニット数
を記号nからmに改めて表すと、m≦nの制約の下、m
がより大きいほど高速処理が可能になる。一方、LSI
等によるハードウェア実装を考える場合、mがより大き
いほど、回路規模及び消費電力は大きくなる。このよう
に、ユニット数mと演算速度との間にトレードオフが生
じる。ここで、ユニット数mの典型的な定め方として、
nの約数を採用する方法が考えられる。たとえば、n=
33ならば、m=1,3,11,あるいは33がユニッ
ト数の候補になる。nの約数以外のmを採用することも
当然可能であるが、nの約数とすると回路の制御が規則
的になり、かつ、演算ユニットの稼働率も高くなるとい
う利点がある。いずれにしても、mをnに限定しないこ
とでLSI設計等の自由度が格段に広がることが容易に
推測されよう。
【0128】
【発明の効果】以上説明したように本発明によれば、新
たな基底変換(拡張)が提供され、次のような作用効果
を得ることができる。 (a)補正項の値を比較的小さくし、かつこれを1ビット
単位で逐次処理できる。 (b)基底変換後の値が変換前に表現されていた値と同じ
であるから、Poschらの方式のような誤差が生じない。 (c)仮に誤差が生じるとしても、前後の処理や入力サイ
ズの制限により誤差を容易に制御できる。 (d)RSA暗号への適用においては鍵のサイズへの制限が少
ない。 (e)補正項の計算に乗算が不要であり処理効率が良い。 (f)基底の取り方に制約が少なく汎用性が高い。 したがって、簡素な構成でモンゴメリ乗算を高速化で
き、ひいてはRSA暗号法の処理の高速化を実現できる。
【図面の簡単な説明】
【図1】本発明の実施形態に係る剰余演算装置の構成を
示す図
【図2】図1に示された積和回路の構成を示す図
【図3】図1に示された補正項計算ユニットの構成を示
す図
【図4】図1に示されたビット選択部の構成を示す図
【図5】従来技術に係る剰余演算装置の構成を示す図
【図6】従来技術に係り図5に示された積和回路の構成
を示す図
【図7】従来技術に係り図5に示された補正項計算ユニ
ットの構成を示す図
【図8】本発明の実施形態に係る補正項計算ユニットの
他の構成を示す図
【図9】本発明の実施形態に係るべき乗剰余演算装置の
構成を示す図
【図10】本発明の実施形態に係るべき乗剰余演算の処
理フローチャート
【図11】本発明の実施形態に係る剰余演算装置の他の
構成を示す図
【図12】図11に示した剰余演算装置の接続ユニット
の構成を示す図
【符号の説明】
101〜10n…積和回路 110…補正項計算ユニット 111…ビット選択部 121〜12n…RAM(ランダムアクセスメモリ) 131〜13n…ROM(リードオンリーメモリ) 201…乗算器 202…加算器 203…剰余演算器 204〜206…レジスタ 207…スイッチ 301…加算器 302…レジスタ 501〜50n…積和回路 510…補正項演算ユニット 521〜52n…ランダムアクセスメモリ 530〜53n…リードオンリーメモリ 601…乗算器 602…加算器 603…剰余演算器 604、605…レジスタ 701…乗算器 702…加算器 703…レジスタ 801…除算回路 802…加算回路 803…レジスタ

Claims (25)

    【特許請求の範囲】
  1. 【請求項1】 剰余演算機能を有する複数の積和回路
    と、この積和回路における剰余演算に用いられる補正項
    を計算する補正項計算ユニットとを備えた剰余演算装置
    において、 前記補正項計算ユニットは、前記補正項を1ビットずつ
    逐次計算し、 前記積和回路は、前記補正項計算ユニットにより計算さ
    れた前記補正項を逐次反映させて基底変換もしくは基底
    拡張を行うことを特徴とする剰余演算装置。
  2. 【請求項2】 前記積和回路は、モンゴメリ(Montgomer
    y)乗算を行うことを特徴とする請求項1記載の剰余演算
    装置。
  3. 【請求項3】 複数並列に配置された積和回路と、この
    積和回路における剰余演算に用いられる補正項を計算す
    る補正項計算ユニットとを備えた剰余演算処理装置にお
    いて、 前記補正項計算ユニットは、前記補正項を1ビットずつ
    逐次計算し、 前記積和回路は、前記補正項計算ユニットにより計算さ
    れた前記補正項を逐次反映させて剰余演算系表現を基数
    表現に変換する演算を行うことを特徴とする剰余演算装
    置。
  4. 【請求項4】 前記補正項計算ユニットは、除算回路を
    有し、 前記積和回路で扱われる剰余演算系の基底を2の冪、も
    しくは2の冪に近接するものとすることを特徴とする請
    求項1乃至3のいずれか一項に記載の剰余演算装置。
  5. 【請求項5】 前記補正項計算ユニットへの入力ビット
    を選択するビット選択部を更に備えたことを特徴とする
    請求項1乃至4のいずれか一項に記載の剰余演算装置。
  6. 【請求項6】 外部とのデータの入出力を行うI/O部
    を更に備えたことを特徴とする請求項1乃至5のいずれ
    か一項に記載の剰余演算装置。
  7. 【請求項7】 剰余演算系における所定の演算アルゴリ
    ズムにおいてある基底を他の基底に基底変換又は基底拡
    張する剰余演算装置において、 前記基底変換又は基底拡張の未知パラメータkを、該未
    知パラメータkの前回計算結果の累積加算により生じた
    桁上がりに近似して出力するk出力手段と、 前記k出力手段から出力された未知パラメータkに応じ
    て前記基底変換又は基底拡張における特定項の計算可否
    を切り替える切替手段と、 前記特定項の計算を含む乗算、加算及び剰余算の組み合
    わせにより基底要素毎に前記基底変換又は基底拡張の計
    算を行う複数の演算ユニットと、を具備することを特徴
    とする剰余演算装置。
  8. 【請求項8】 前記k出力手段は、中国剰余定理に基づ
    く前記未知パラメータkの計算式の分母を2の冪により
    近似することを特徴とする請求項7に記載の剰余演算装
    置。
  9. 【請求項9】 ビット選択手段をさらに具備し、前記k
    出力手段は中国剰余定理に基づく前記未知パラメータk
    の計算式の分子を、前記ビット選択手段による有効ビッ
    ト長以外の切り捨てに基づいて近似することを特徴とす
    る請求項7に記載の剰余演算装置。
  10. 【請求項10】 前記k出力手段は、中国剰余定理に基
    づく前記未知パラメータkの計算式の分母を2の冪によ
    り近似するとともに、該計算式の分子を、有効ビット長
    以外の切り捨てに基づいて近似することを特徴とする請
    求項7に記載の剰余演算装置。
  11. 【請求項11】 前記所定の演算アルゴリズムは、入力
    された整数x,y,Nに対して、xyB−1 mod Nま
    たはxyB−1 mod N+Nを出力するモンゴメリ乗算
    アルゴリズムから構成されることを特徴とする請求項7
    に記載の剰余演算装置。
  12. 【請求項12】 前記モンゴメリ乗算を用いた所定のア
    ルゴリズムに従ってべき乗剰余算を行う手段を具備する
    ことを特徴とする請求項11に記載の剰余演算装置。
  13. 【請求項13】 中国剰余定理に基づく未知パラメータ
    を含む所定の計算式に従って、剰余演算系表現を基数表
    現に変換して出力する変換手段を具備することを特徴と
    する請求項7に記載の剰余演算装置。
  14. 【請求項14】 剰余演算系における所定の演算アルゴ
    リズムにおいてある基底を他の基底に基底変換又は基底
    拡張する剰余演算装置において、 特定項の計算を含む乗算、加算及び剰余算の組み合わせ
    により基底要素毎に前記基底変換又は基底拡張の計算を
    行うための複数の演算ユニットと、 前記複数の演算ユニットのそれぞれに設けられ、前記基
    底変換又は基底拡張の未知パラメータkを、該未知パラ
    メータkの前回計算結果の累積加算により生じた桁上が
    りに近似して出力するk出力手段と、 前記k出力手段に対応する前記演算ユニットの前記特定
    項の計算可否を、該k出力手段から出力された未知パラ
    メータkに応じて切り替える切替手段と、 当該演算ユニットのオペランドを隣接する演算ユニット
    に送信し、及び隣接する他の演算ユニットからのオペラ
    ンドを受信する演算ユニット間の接続手段と、を具備す
    ることを特徴とする剰余演算装置。
  15. 【請求項15】 前記k出力手段は、中国剰余定理に基
    づく前記未知パラメータkの計算式の分母を2の冪によ
    り近似することを特徴とする請求項14に記載の剰余演
    算装置。
  16. 【請求項16】 前記k出力手段は、中国剰余定理に基
    づく前記未知パラメータkの計算式の分子を、有効ビッ
    ト長以外の切り捨てに基づいて近似することを特徴とす
    る請求項14に記載の剰余演算装置。
  17. 【請求項17】 前記k出力手段は、中国剰余定理に基
    づく前記未知パラメータkの計算式の分母を2の冪によ
    り近似するとともに、該計算式の分子を、有効ビット長
    以外の切り捨てに基づいて近似することを特徴とする請
    求項14に記載の剰余演算装置。
  18. 【請求項18】 前記所定の演算アルゴリズムは、入力
    された整数x,y,Nに対して、xyB−1 mod Nま
    たはxyB−1 mod N+Nを出力するモンゴメリ乗算
    アルゴリズムから構成されることを特徴とする請求項1
    4に記載の剰余演算装置。
  19. 【請求項19】 前記モンゴメリ乗算を用いた所定のア
    ルゴリズムに従ってべき乗剰余算を行う手段を具備する
    ことを特徴とする請求項18に記載の剰余演算装置。
  20. 【請求項20】 中国剰余定理に基づく未知パラメータ
    を含む所定の計算式に従って、剰余演算系表現を基数表
    現に変換して出力する変換手段を具備することを特徴と
    する請求項14に記載の剰余演算装置。
  21. 【請求項21】 剰余演算系における所定の演算アルゴ
    リズムにおいてある基底を他の基底に基底変換又は基底
    拡張する剰余演算方法において、 前記基底変換又は基底拡張の未知パラメータkを、前回
    計算結果の累積加算により生じた桁上がりに近似し、 前記出力された未知パラメータkに応じて前記基底変換
    又は基底拡張における特定項の計算可否を切り替え、 前記特定項の計算を含む乗算、加算及び剰余算の組み合
    わせにより基底要素毎に前記基底変換又は基底拡張の計
    算を行うことを特徴とする剰余演算方法。
  22. 【請求項22】 中国剰余定理に基づく前記未知パラメ
    ータkの計算式の分母を2の冪により近似することを特
    徴とする請求項21に記載の方法。
  23. 【請求項23】 中国剰余定理に基づく前記未知パラメ
    ータkの計算式の分子を、有効ビット長以外の切り捨て
    に基づいて近似することを特徴とする請求項21に記載
    の方法。
  24. 【請求項24】 中国剰余定理に基づく前記未知パラメ
    ータkの計算式の分母を2の冪により近似するととも
    に、該計算式の分子を、有効ビット長以外の切り捨てに
    基づいて近似することを特徴とする請求項21に記載の
    剰余演算方法。
  25. 【請求項25】 前記所定の演算アルゴリズムは、入力
    された整数x,y,Nに対して、xyB−1 mod Nま
    たはxyB−1 mod N+Nを出力するモンゴメリ乗算
    アルゴリズムから構成されることを特徴とする請求項2
    1に記載の方法。
JP2000334978A 1999-11-01 2000-11-01 剰余演算装置 Expired - Fee Related JP3742293B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000334978A JP3742293B2 (ja) 1999-11-01 2000-11-01 剰余演算装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP11-310619 1999-11-01
JP31061999 1999-11-01
JP2000334978A JP3742293B2 (ja) 1999-11-01 2000-11-01 剰余演算装置

Publications (2)

Publication Number Publication Date
JP2001194993A true JP2001194993A (ja) 2001-07-19
JP3742293B2 JP3742293B2 (ja) 2006-02-01

Family

ID=26566397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000334978A Expired - Fee Related JP3742293B2 (ja) 1999-11-01 2000-11-01 剰余演算装置

Country Status (1)

Country Link
JP (1) JP3742293B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006503382A (ja) * 2002-10-09 2006-01-26 アナログ デバイシーズ インク 小型ガロア体乗算器エンジン

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006503382A (ja) * 2002-10-09 2006-01-26 アナログ デバイシーズ インク 小型ガロア体乗算器エンジン
JP4739020B2 (ja) * 2002-10-09 2011-08-03 アナログ デバイシーズ インク 小型ガロア体乗算器エンジン

Also Published As

Publication number Publication date
JP3742293B2 (ja) 2006-02-01

Similar Documents

Publication Publication Date Title
Okada et al. Implementation of Elliptic Curve Cryptographic Coprocessor over GF (2 m) on an FPGA
US7904498B2 (en) Modular multiplication processing apparatus
JP3703092B2 (ja) 複数のほぼ完全に同一のプロセッサ要素を用いるモジュラ乗算のためのハードウェア
WO2009100104A1 (en) Cryptographic system incorporating a digitally generated chaotic numerical sequence
Großschädl A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m)
JP3532860B2 (ja) 剰余系表現を利用した演算装置及び方法及びプログラム
Kuznetsov et al. Periodic properties of cryptographically strong pseudorandom sequences
CN113794572A (zh) 一种高性能椭圆曲线数字签名与验签的硬件实现系统和方法
US6662201B1 (en) Modular arithmetic apparatus and method having high-speed base conversion function
Premkumar A formal framework for conversion from binary to residue numbers
Pajuelo-Holguera et al. Fast montgomery modular multiplier using FPGAs
Reyhani-Masoleh A new bit-serial architecture for field multiplication using polynomial bases
JP2001051832A (ja) 乗算剰余演算方法および乗算剰余回路
Thampi et al. Montgomery multiplier for faster cryptosystems
Anashin et al. ABC: A new fast flexible stream cipher
JP3742293B2 (ja) 剰余演算装置
Uslu et al. Versatile digit serial multipliers for binary extension fields
Wu et al. Improving common subexpression elimination algorithm with a new gate-level delay computing method
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
CN115967493A (zh) 基于国密sm3的哈希原像零知识证明电路生成方法及装置
Monfared et al. A new multiplicative inverse architecture in normal basis using novel concurrent serial squaring and multiplication
Sandoval et al. Novel algorithms and hardware architectures for montgomery multiplication over gf (p)
JPH0916379A (ja) 通信方法とその装置
Wu et al. Optimized Design of ECC Point Multiplication Algorithm Over GF (2m)
KR100438456B1 (ko) 유한필드상의 디지트 시리얼 시스톨릭 곱셈기

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050531

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050801

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051110

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091118

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101118

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101118

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111118

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121118

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131118

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees