JP4554239B2 - モンゴメリー類型のモジュラー乗算装置及び方法 - Google Patents

モンゴメリー類型のモジュラー乗算装置及び方法 Download PDF

Info

Publication number
JP4554239B2
JP4554239B2 JP2004069540A JP2004069540A JP4554239B2 JP 4554239 B2 JP4554239 B2 JP 4554239B2 JP 2004069540 A JP2004069540 A JP 2004069540A JP 2004069540 A JP2004069540 A JP 2004069540A JP 4554239 B2 JP4554239 B2 JP 4554239B2
Authority
JP
Japan
Prior art keywords
value
carry
multiplicand
bit
bits
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 - Lifetime
Application number
JP2004069540A
Other languages
English (en)
Other versions
JP2004280103A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2004280103A publication Critical patent/JP2004280103A/ja
Application granted granted Critical
Publication of JP4554239B2 publication Critical patent/JP4554239B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/728Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5332Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm

Description

本発明は、暗号化技術に関し、特に、暗号化/復号化及びデジタル署名などに使用するためのモンゴメリー類型のモジュラー乗算装置及び方法に関する。
電子商取り引きのためのスマートカード(smart card)及び電子貨幣、セルラー電話機のような移動通信機器(mobile device)、小型コンピュータ(small-sized computer)などを使用する通信システムにおいて、情報(電子的文書あるいはデータ)を暗号化/復号化したり、転送情報にデジタル署名を行って安全に転送することは好ましいことと言える。ここで、デジタル署名とは、情報の電子的な交換に際し、従来紙に自筆署名した機能と同一な機能を電子的文書に提供可能にする技術のことを意味する。特に、最近ではインターネットの使用人口が急激に増えつつあることに伴ってインターネットを介した個人情報などの転送も頻繁になり、したがって、安全でないチャンネルを通じたより安全な情報の転送が要求されている実情である。
公開キー方式などを利用した暗号化/復号化及びデジタル署名には、RSA(Rivest-Shamir-Adleman)、ElGamal、Schnorrなど様々な提案されたアルゴリズムを使用することができる。前記アルゴリズムの国際標準には、RSAアルゴリズムに基盤したISO(International Standard Organization)/IEC(International Electrotechnical Commission)9796が採択され、米国ではElGamalの変形としてDSA(Digital Signature Standard)が採択され、ロシアではロシア連邦国家標準(GOSSTANDART;通常、GOSTという)に基づく方式が採択され、韓国ではKC−DSAが採択されている。しかし、実際には様々な通信システムでは多くのPKCS(Public Key Cryptography Standard)が具現されている実情である。これら様々なアルゴリズムのためにはモジュラー累乗のmemodN演算が要求されるが、このモジュラー累乗は、モジュラー乗算、A・BmodN演算の反復的な遂行を必要とする。
RSAなど公開キー暗号に基盤したデジタル署名を生成/検証する上で必須とされるモジュラー累乗及びモジュラー 乗算を行うための多くのアルゴリズムが提案された。例えば、R. L. Rivest et al, “A method for obtaining digital signatures and public-key cryptosystems,” Communications of the ACM, Vol. 21, pp.120-126, 1978;P. L. Montgomery,“ Modular Multiplication without Trial Division,” Math. Of Comp., Vol. 44, No. 170, pp.519-521, 1985;S. R. Dusse and B. S. Kaliski Jr.,“ A cryptographic library for the Motorola DSP56000,” Proc. Eurocrypto’90, pp.230-244, 199.;Springer-Verlag, A. Bosselaers, R. Govaerts and J. Vandewalle,“ Comparison of three modular reduction functions,” Advances in Cryptology-CRYPTO’93, pp.175-186, 1993などの論文がある。前記アルゴリズムの中でモンゴメリー(Montgomery)アルゴリズムは、単純モジュラー乗算では難しい手続きを持っているが、多様な暗号アルゴリズムに必要なモジュラー累乗のためのモジュラー乗算には計算効率面から最も効率的であるという事実が、論文D. R. Stinson, Cryptography, CRC Press, 1995により明らかになった。米合衆国特許US Patent No. 6, 185, 596は前記モンゴメリーアルゴリズムにより具現した装置の一例を開示している。
前述したように公開キー暗号化/復号化及び電子署名のための多くのアルゴリズム及びアーキテクチャーが提案された。しかし、大部分の提案されたアルゴリズム及びアーキテクチャーに基づくモジュラー乗算装置は、高速の公開キー暗号化/復号化を目的とするものであるだけに、多数のゲート(Gate)を必要とし、多い電力を消耗するという欠点があって、スマートカードなどの資源が制限された環境に適合ではない。
したがって、本発明の目的は、スマートカード及び移動端末機のような通信システムの環境において高速の暗号化/復号化及び電子署名のためのモジュラー乗算装置及び方法を提供することにある。
本発明の他の目的は、スマートカード及び移動端末機のような通信システムの環境において少ないゲート数で高速の暗号化/復号化及び電子署名のためのモジュラー乗算装置及び方法を提供することにある。
本発明のさらに他の目的は、スマートカード及び移動端末機のような通信システムの環境において低電力で暗号化/復号化及び電子署名のためのモジュラー乗算装置及び方法を提供することにある。
本発明による信号処理システムで用いられるモジュラー乗算を遂行する信号処理装置は、モジュラー乗算で乗数のブース変換結果によって被乗数に対して1の補数演算を選択的に遂行して符号化された被乗数を出力する第1ロジックと、以前クロックの補正用桁上げ値(cin)から決定された現在クロックの桁上げ入力値(Carry-in)と、前記被乗数の符号ビットを基盤に前記モジュラー乗算で符号化されたモジュラス(modulus)を出力する第2ロジックと、前記符号化された被乗数と前記符号化されたモジュラスの入力を受けて、前記以前クロックで求められた全加算演算の桁上げ値(C)と和値(S)に対して前記全加算演算を反復遂行して前記モジュラー乗算の結果値を計算する第3ロジックと、を含むことを特徴とする。
また、本発明による信号処理システムで用いられるモジュラー乗算を遂行する信号処理方法は、モジュラー乗算で乗数のブース変換結果によって被乗数に対して1の補数演算を選択的に遂行して符号化された被乗数を出力する過程と、以前クロックの補正用桁上げ値(cin)から決定された現在クロックの桁上げ入力値(Carry-in)を求める過程と、前記桁上げ入力値と前記被乗数の符号ビットを基盤に前記モジュラー乗算で符号化されたモジュラスを出力する過程と、前記符号化された被乗数と前記符号化されたモジュラスの入力を受けて、前記以前クロックで求められた全加算演算の桁上げ値(C)と和値(S)に対して前記全加算演算を反復遂行して前記モジュラー乗算の結果値を計算する過程と、を含むことを特徴とする。
本発明の第1実施例によれば、モジュラー乗算装置の変換ロジックは、前記乗数のビットが順次的にシフトされて生成されたビット列の下位2ビットをブース変換(Booth recoding)し、前記ブース変換された結果と被乗数を多重化して(n+4)ビットの符号付き二進数を出力する。第1桁上げ保存加算器(CSA)は、(n+4)個の全加算器を備えており、(n+2)ビットの第1信号と、(n+3)ビットの第2信号と、前記変換ロジックからの(n+4)ビットの前記二進数を第3信号として入力し、前記第1信号の上位(n+2)番目のビットは前記全加算器のうち上位3個の全加算器に入力され、前記第2信号の上位(n+3)番目のビットは前記全加算器のうち上位2個の全加算器に入力され、前記(n+3)個の全加算器により(n+4)ビットの桁上げ値と和値を出力する。商ロジックは、前記第1 CSAからの前記(n+4)ビットの桁上げ値と和値の中から選択された下位2個の全加算器から出力される和値と下位1個の全加算器から出力される桁上げ値を入力し、モジュラー減少の倍数を決定するための3ビットの決定値を出力する。選択器は、前記決定値に基づいてあらかじめ定められたモジュロ数の集合のうち一つのモジュロ数を選択して出力する。第2桁上げ保存加算器(CSA)は、(n+4)個の全加算器を具備し、前記選択器から選択された(n+4)ビットのモジュロ数を第1信号として入力し、前記第1CSAからの前記(n+4)ビットの桁上げ値のうち最上位桁上げ値を除外した残りの(n+3)ビットの桁上げ値を第2信号として入力し、前記(n+4)ビットの和値のうち最下位桁上げ値を除外した残りの(n+3)ビットの和値を第3信号として入力し、前記第1信号の(n+4)ビットは前記全加算器の最下位全加算器から順次入力され、前記第2信号の(n+3)ビットは前記全加算器のうち下位2番目の全加算器から順次入力され、前記第3信号の(n+3)ビットは前記全加算器の下位2番目の全加算器から順次入力され、前記(n+4)個の全加算器により(n+4)ビットの桁上げ値と和値を出力する。全加算器は前記第2 CSAの最下位全加算器から出力される桁上げ値と下位2番目の全加算器から出力される和値を全加算して桁上げ入力値として前記商ロジックに提供する。桁上げ伝播加算器(CPA)は、前記第2CSAからの桁上げ値と和値を加算して出力する。
好ましくは、前記乗算装置は、前記乗数のビットを順次的にシフトさせて前記シフトされたビット列を生成するシフトレジスタと、前記被乗数を格納するためのレジスタとをさらに含む。
好ましくは、前記変換ロジックは、前記生成されたビット列の下位2ビットをブース変換する変換回路と、前記ブース変換された結果と前記被乗数を多重化する多重化器と、前記生成されたビット列の下位2ビットに基づいて前記多重化器の出力を選択的に1の補数化して前記(n+4)ビットの符号付き二進数を出力する補数化器を含む。
好ましくは、前記商ロジックは、前記桁上げ入力値と前記第1CSAの最下位全加算器から出力される和値を全加算する全加算器と、前記第1CSAの最下位全加算器から出力される桁上げ値と2番目の全加算器から出力される和値を排他的論理和する排他的論理和器と、前記全加算器と前記排他的論理和器の出力とあらかじめ設定された入力ビットを組合わせて前記3ビットの決定値として出力する組合回路とを含む。また、前記商ロジックは、前記桁上げ入力値を格納するためのDフリップフロップをさらに含み、前記商ロジックの前記全加算器及び前記排他的論理和器にはあらかじめ設定された補正用桁上げ値が提供され、前記商ロジックの前記全加算器には前記被乗数の符号ビットが提供され、前記商ロジックの前記全加算器の出力は前記第2 CSAの最下位全加算器に提供される。
本発明の第2実施例によれば、モジュラー乗算装置の変換ロジックは、前記乗数のビットが順次的にシフトされて生成されたビット列の下位2ビットをブース変換(Booth recoding)し、前記ブース変換された結果と被乗数を多重化して(n+3)ビットの二進数を出力する。第1桁上げ保存加算器(CSA)は、(n+3)個の全加算器を備えており、(n+1)ビットの第1信号と、(n+2)ビットの第2信号と、前記変換ロジックからの(n+3)ビットの前記二進数を第3信号として入力し、前記第1信号の上位(n+1)番目のビットは前記全加算器のうち上位3番目の全加算器に入力され、前記第2信号の上位(n+2)番目のビットは前記全加算器のうち上位2番目の全加算器に入力され、前記全加算器のうち最上位全加算器に“0”レベルの前記第1信号が入力され、前記(n+3)個の全加算器により(n+3)ビットの桁上げ値と和値を出力する。商ロジックは、前記第1CSAからの前記(n+3)ビットの桁上げ値と和値の中から選択された下位2個の全加算器から出力される和値と下位1個の全加算器から出力される桁上げ値を入力し、モジュラー減少の倍数を決定するための2ビットの決定値を出力する。選択器は、前記決定値に基づいてあらかじめ定められたモジュロ数の集合のうち一つのモジュロ数を選択して出力する。
第2桁上げ保存加算器(CSA)は、(n+3)個の全加算器を具備し、前記選択器から選択された(n+3)ビットのモジュロ数を第1信号として入力し、前記第1CSAからの前記(n+3)ビットの桁上げ値のうち最上位桁上げ値を除外した残りの(n+2)ビットの桁上げ値を第2信号として入力し、前記(n+3)ビットの和値のうち最下位桁上げ値を除外した残りの(n+2)ビットの和値を第3信号として入力し、前記第1信号の(n+3)ビットは前記全加算器の最下位全加算器から順次入力され、前記第2信号の(n+2)ビットは前記全加算器のうち下位2番目の全加算器から順次入力され、前記第3信号の(n+2)ビットは前記全加算器の下位2番目の全加算器から順次入力され、前記(n+3)個の全加算器により(n+4)ビットの桁上げ値と和値を出力する。論理積演算器は、前記第2CSAの最下位全加算器から出力される桁上げ値と下位2番目の全加算器から出力される和値を論理積演算して桁上げ入力値として前記商ロジックに提供する。桁上げ伝播加算器(CPA)は、前記第2CSAからの桁上げ値と和値を加算して出力する。
好ましくは、前記乗算装置は、前記乗数のビットを順次的にシフトさせて前記シフトされたビット列を生成するシフトレジスタと、前記被乗数を格納するためのレジスタとをさらに含む。
好ましくは、前記変換ロジックは、前記生成されたビット列の下位2ビットに基づいて前記被乗数を多重化する多重化器である。
好ましくは、前記商ロジックは、前記桁上げ入力値と前記第1CSAの最下位全加算器から出力される和値を半加算する半加算器と、前記第1CSAの最下位全加算器から出力される桁上げ値と2番目の全加算器から出力される和値を排他的論理和する排他的論理和器と、前記全加算器と前記排他的論理和器の出力とあらかじめ設定された入力ビットを組合わせて前記2ビットの決定値として出力する組合回路とを含む。また、前記商ロジックは、前記桁上げ入力値を格納するためのDフリップフロップをさらに含み、前記商ロジックの前記半加算器の出力は前記第2 CSAの最下位全加算器に提供される。
したがって、本発明は、暗号化/復号化及びデジタル署名を生成及び検証するのに応用することができる。つまり、本発明は、電子的文書あるいはデータを暗号化/復号化したり、その文書あるいはデータに署名機能を提供し得るデジタル署名を生成/検証する上で利用可能である。
前述した内容は、当該分野で通常の知識を持つ者が、後述される本発明の具体的な説明を通じてより理解できるようにするために本発明の特徴及び技術的な長所を多少広範囲に略述したものである。
本発明の請求範囲の主題を形成する本発明の追加的な特徴及び長所を述べるに先立って、当該技術分野で通常の知識を持つ者は、本発明の同一の目的を達成するために他の構造を変更したり、設計する基礎として発明の開示された概念及び具体的な実施例が容易に使用され得るという事実を認識する必要がある。また、当該技術分野で通常の知識を持つ者は、発明と均等な構造が本発明の最も広い形態の思想及び範囲を外れないという事実も認識されたい。
本発明は、A・B・2-(n+4)modNを計算する回路を記述したものであり、記述された回路を利用して一般のモジュラー乗算であるA・BmodNを計算できる。このような本発明に基づいて計算されたA・BmodNは、デジタル署名を生成及び検証するための機器に使用されるハードウェア的な装置に使用することができる。また、本発明は、ICカードに基づく電子署名、認証、暗/復号化のハードウェア装置に使用することができる。また、本発明は、モジュラー乗算を行う電子署名機器によって暗号及び復号化する機器を提供することができる。また、本発明は、電子署名機器に基づいて、NIST-DSS、RSA、ElGamal、Schnorr電子署名など既存の公開キー暗号システムを具現する上で利用することができる。
以下、本発明の好ましい実施例を添付図面を参照しつつ詳細に説明する。図面中、同一の構成要素にはな可能な限り同一の参照符号及び番号を共通使用するものとする。尚、以下に本発明を説明するにあたり、周知技術については適宜説明を省略するものとする。
A.本発明の概要
以下に説明される本発明はそれぞれnビットの、A = an-1・2n-1 + ・・・ +a1・2+a0、B = bn-1・2n-1 + ・・・ +b1・2+b0、N = nn-1・2n-1 + ・・・ +n1・2+n0についてモンゴメリー(Montgomery)アルゴリズムを利用してモジュラー乗算を行うための装置及びそれによる方法を提案している。この時、Aは乗数、Bは被乗数、Nはモジュラー数を表し、これらのビット大きさは512あるいは1024のように大きな数になり得る。
前記モジュラー乗算動作A・BmodNの具現は、後述される2つの実施例による。各実施例はそれぞれnビットのA、B、N(ここで、-N≦A,B<N)を入力として受けてm+2(ここで、m=n/2)クロック内にA・B・R-1modN(ここで、 R=4m+2)を計算するモジュラー乗算装置及び方法を提案する。このように提案されたモジュラー乗算装置による乗算結果を利用してA・BmodNが計算可能であり、また、RSA演算遂行に必要なモジュラー累乗memodNになり得ることが説明されるはずである。図1ないし図6は、本発明の第1実施例に係るモジュラー乗算装置を構成する要素の構成を示す図であり、図7ないし図13は本発明の第2実施例に係るモジュラー乗算装置を構成する要素の構成を示す図である。そして、図14は本発明の実施例に係るモジュラー乗算装置が利用されるICカードのブロック構成を示す図である。
後述する本発明の実施例に係るモジュラー乗算装置は、乗数のビットを順次的にシフトさせて変換されたビット列を生成し、前記変換されたビット列の値によって1の補数で示して部分和を計算することを特徴とする。つまり、従来技術に係るモジュラー乗算装置が乗数のビットを順次的にシフトさせながら生成される下位1ビットだけを処理したことに比べ、本発明では乗数の下位2ビットを処理することによって乗算動作がより高速で行われるようにする。言い換えれば、本発明の実施例に係るモジュラー乗算装置は変形された変換ロジックを備えており、モジュラー乗算装置を構成する残りの他の要素は、前記変形された変換ロジックに対応する形態に構成されてモンゴメリーアルゴリズムに基づくモジュラー乗算動作を行う。
B.第1実施例
B−1.発明の構成
図1は、本発明の第1実施例に係るモジュラー乗算装置の構成を示す図である。
図1を参照すれば、前記モジュラー乗算装置は、変換ロジック(Recoding Logic)110、第1桁上げ保存加算器(Carrier save Adder;以下“CSA”と称する)120、商ロジック(Quotient Logic)130、選択器140、第2CSA150、全加算器(FA;Full Adder)160から構成される。前記モジュラー乗算装置は、モンゴメリーアルゴリズムに基づいてそれぞれnビットのA、B、N(ここで、-N≦A,B<N)を入力として受けてm+2(ここで、m=n/2)クロック内にA・B・R-1modN(ここで、R=4m+2)を計算するモジュラー乗算装置に対するハードウェア的な構成である。つまり、このモジュラー乗算装置はA・B・2-(n+4)modNを計算するための構成を持つ。以下、Aを乗数、Bを被乗数、Nをモジュロと称することにする。
前記CSA120、150はそれぞれ(n+4)個の全加算器が並列に構成されるものであり、3ビット入力でそれぞれ桁上げビットと和ビットを出力する。前記変換ロジック110は、乗数Aを基盤にして変形されたブース変換(modified Booth recoding)された値とその値による選択的な1の補数化機能を遂行して、(n+4)ビットの符号付き拡張(signed extension)ビットとして0、±B、±2B値の中で一つを出力する。前記商ロジック130は、前記CSA1 120の最下位(LSB:Least Significant Bit)桁上げ値C1,0、和LSB 2ビットS1,1、S1,0と全加算器160から出力される桁上げ入力値(Carry-in)、Bの符号ビット(図4のB sign)を入力とし、モジュラー減少(Modular reduction)の倍数を決定するための値である3ビットのq2q1q0を出力する。前記選択器140は、前記決定されたq値(即ち、3ビットのq2q1q0)に基づいて0、N、2N、−N(図1参照)の中で一つの値を選択して出力するためのものであり、多重化器(MUX:Multiplexer)で具現可能である。前記全加算器160は、前記CSA2 150の出力2ビットであるS2,1、C2,0と現在クロットの補正用桁上げ値cinの入力を受けて全加算動作を行い、その全加算結果値を次のクロックに商ロジック130で使用される桁上がり(Carry-in)に提供する。
図1には示さなかったが、毎クロックごとに前記CSA2 150の出力である桁上げ値と和値をそれぞれ格納するための臨時格納レジスタが備えられ、また、前記臨時格納レジスタらに格納された値を加算してモジュラー乗算結果として出力するための桁上げ伝播加算器 (Carry Propagation Adder)が具備される。
図2は、図1に示す変換ロジック110のより具体的な構成を示す図である。
図2に示すように、前記変換ロジック110は、乗数Aのビットが順次的にシフトされながら前記乗数Aの下位2ビット(ai+1、a)と参照ビット(ai−1)をブース変換(Booth recoding)し、前記ブース変換された結果値(zi+1)によって被乗数Bを多重化して、(n+4)ビットの符号付き二進数を出力する。図1で、前記ブース変換された結果値(zi+1)は、各出力ビット別に、例えば、zi+1[2]、zi+1[1]、zi+1[0]に区分して図示した。ここで、被乗数Bは、zi+1[1]、zi+1[0]によって多重化され、多重化器114の出力は、1の補数化器116に入力されるzi+1[2]によって選択的に符号化される。したがって、前記zi+1[2]を符号ビットと称する。前記変換ロジック110の前段には前記乗数Aのビットを順次的にシフトさせて前記シフトされたビット列を生成するシフトレジスタ102と、前記被乗数を格納するためのレジスタ104が備えられる。前記変換ロジック110は、変換回路112と、多重化器(MUX)114と、1の補数化器116とから構成される。前記変換回路112は、前記生成されたビット列の下位2ビットai+1、ai と参照ビット(ai−1)をブース変換(Booth recoding)して、例えば、三つのビットで構成された結果値(zi+1[2]、zi+1[1]、zi+1[0];zi+1)を出力する。前記多重化器114は、前記ブース変換された結果(zi+1)によって前記被乗数Bを多重化し、多重化結果として0、B、2Bを出力する。また、前記1の補数化器116は前記生成されたビット列の下位2ビットを入力とする前記多重化器114の出力を選択的に1の補数化し、前記(n+4)ビットの符号付き二進数を出力する。前述した前記変換ロジック110は乗数Aを基盤にして変形されたブース変換(modified Booth recoding)を具現した回路であり、(n+4)ビットの符号付き拡張(signed extension)ビットを出力するが、この値は0、±B、±2B値のうち一つである。
図3は、図1に示すCSA1 120のより具体的な構成を示す図である。
図3を参照すれば、前記CSA1 120は、(n+4)個の全加算器121〜125を備えており、(n+2)ビットの第1信号(S2,2 〜S2,n+3)と、(n+3)ビットの第2信号(C2,1〜C2,n+3)と、前記変換ロジック110からの(n+4)ビットの前記二進数を第3信号(B0〜Bn+3)として入力し、前記(n+4)個の全加算器121〜125により全加算して(n+4)ビットの桁上げ値(C1,0〜C1,n+3)と和値(S1,0〜S1,n+3)を出力する。この時、前記第1信号の上位(n+2)番目のビットS2,n+3は、前記全加算器のうち上位3個の全加算器123〜125に入力され、前記第2信号の上位(n+3)番目のビットC2,n+3は前記全加算器のうち上位2個の全加算器124、125に入力される。
図4は、図1に示す商ロジック130のより具体的な構成を示す図である。
図4を参照すれば、前記商ロジック130は、前記CSA1 120からの前記(n+4)ビットの桁上げ値と和値の中から選択された下位2個の全加算器から出力される和値(S1,0、S1,1)と下位1個の全加算器から出力される桁上げ値(C1,0)を入力し、モジュラー減少の倍数を決定するための3ビットの決定値q2q1q0を出力する。前記商ロジック130は、ディー(D)フリップフロップ132と、全加算器134と、排他的論理和(XOR)器136と、組合回路138から構成される。前記Dフリップフロップ132は、図1の全加算器160から提供される桁上げ入力値Carry-inを入力して一時的に格納する。前記全加算器134は、 前記Dフリップフロップ132に格納された桁上げ入力値Carry-inと前記CSA1 120の最下位全加算器121から出力される和値(S1,0)を全加算する。前記排他的論理和器136は、前記CSA1 120の最下位全加算器121から出力される桁上げ値(C1,0)と前記CSA1の下位2番目の全加算器122から出力される和値(S1,1)を排他的論理和する。前記全加算器134は補正用桁上げ値(cin)を生成し、また、前記全加算器134には図示されなかったが、被乗数Bの符号ビット(B sign)が提供される。本発明は、上述したように全加算器134から現在クロックに出力された補正用桁上げ値(cin)は図1の全加算器160に入力され、全加算器160は補正用桁上げ値(cin)を基盤に次のクロックに商ロジック130で使用される桁上げ入力値(carry-in)を決定する。前記組合回路138は、前記全加算器134の出力(SO)と前記排他的論理和器136の出力(S1)とあらかじめ設定された入力ビット(n1)を組合わせてモジュラー減少(modular reduction)の倍数を決定するための値である3ビットの決定値(q2q1q0)として出力する。
図5は、図1に示すCSA2 150のより具体的な構成を示す図である。
図5を参照すれば、前記CSA2 150は、(n+4)個の全加算器151〜156を備えている。前記CSA2 150は前記選択器140から選択された(n+4)ビットのモジュラスN(N0 - Nn+3)を第1信号として入力し、前記CSA1 120からの(n+4)ビットの桁上げ値のうち最上位桁上げ値を除外した残りの(n+3)ビットの桁上げ値(C1,0〜C1,n+3)を第2信号として入力し、前記(n+4)ビットの和値の中で最下位和値を除外した残りの(n+3)ビットの和値(S1,1〜S1,n+3)を第3信号として入力し、前記(n+4)個の全加算器151〜156により(n+4)ビットの桁上げ値(C2,0〜C2,n+3)と和値(S2,0〜S2,n+3)を出力する。この時、前記第1信号の(n+4)ビットは前記モジュラスN(N0 - Nn+3)の(n+4)ビットがそれぞれ入力され、前記第2信号の(n+3)ビットの桁上げ値(C1,0〜C1,n+2)は前記全加算器のうち下位2番目の全加算器152から順次入力され、前記第3信号の(n+3)ビットの和値(S1,1〜S1,n+3)は前記全加算器の下位2番目の全加算器152から順次入力される。前記全加算器のうち最下位全加算器151には前記商ロジック130の全加算器134からの出力(S0)と、組合回路138の二番目の出力ビットであるq1,2と、モジュロ数(N)を表す最下位ビット(N0)が入力される。
図6は、図1に示す全加算器160のより具体的な構成を示す図である。
図6を参照すれば、前記全加算器160は、前記CSA2 150の最下位全加算器151から出力される桁上げ値(C2,0)と下位2番目の全加算器152から出力される和値 (S2,1)を全加算して桁上げ入力値(Carry-in)として出力する。また、前記全加算器160は全加算動作のためにあらかじめ設定された補正用桁上げ値(cin)を受け、その全加算結果として桁上げ入力値(Carry-in)を出力する。この桁上げ入力値(Carry-in)は前記商ロジック130に提供される。
B−2.発明の原理
本発明は、それぞれnビットのA、B、N(ここで、-N≦A,B<N)を入力として受けてm+2(ここで、m=n/2)クロック内にA・B・R-1modN (ここで、R=4m+2)を計算する装置に関するものである。このような本発明の具現に適用される次の三つの原理が説明される。第一に、モジュラー乗算のための乗数(A)及び被乗数(B)を表現する原理が説明される。第二に、モジュラー乗算のための乗数(A)の2ビットを用いた1の補数基盤部分積計算原理が説明される。第三に、ブース変換と本発明の1の補数基盤部分積の原理を利用したモンゴメリーアルゴリズムに対する原理が説明される。
<Number Representation>
本発明ではモジュラー乗算のために乗数(A)と被乗数(B)を符号付き二進数で表現(Signed binary representation)する。すなわち、それぞれnビットのA、Bは符号付き動作(signed operation)のためにそれぞれ(n+4)ビットに変換されるが、このような変換過程中に値が負数である場合には1の補数形態に変換される。
<Booth's Recoding>
本発明では、本発明が出願される前に当該分野で通常の知識を持つ者に周知されたブース変換(Booth Recoding)方式を変形して変形されたブース変換(Modified Booth Recoding)方式を使用することを特徴とする。このような本発明の特徴は、モジュラー乗算がより速い速度に行われるようにする効果を持つ。乗数Aは前記変形されたブース変換方式により2ビットずつzi(ここで、0≦i≦m+1)として変換される。この時、an+4 = an+3, a-1 = 0と仮定する。下記表1に、本発明による変形されたブース変換の規則を示す。そして、図2のように、zi+1[1]、zi+1[0]の二つのビット値によって被乗数0、B、または2B値が多重化器114を通じて出力される。図2のように、符号付き部分積(−Bまたは−2B)を求めるために、ブー変換(Booth Recoding)された結果値のうち、符号ビットzi+1[2]を基盤に多重化器の出力に対して1の補数演算を選択的に遂行する。
Figure 0004554239
<表1>でブール変換(Booth Recoding)された結果値zi+1は、zi+1[2]、zi+1[1]、zi+1[0]の三つのビットを符号が含まれた十進数で示したもので、zi+1を二進数で表現すると、[ ]うちの二進数のように表現される。
<Booth's Recodingを利用したRadix-4 Montgomery Algorithm>
下記のアルゴリズムは、本発明がradix-4 モンゴメリーモジュラー乗算のために前記変形されたブース変換方式と1の補数演算を利用していることを示している。元来モンゴメリーアルゴリズムでは、結果値とmodulus Nと比較して結果値がmodulus Nより大きければ一度減算をしなければならないが、下記に示すアルゴリズムではその手続きがないことがわかる。
Figure 0004554239
上記の式(1)〜(7)に示したアルゴリズムで、(3)手続きのAixBはブース変換された2ビットを意味する。(4)手続きは、(5)手続きの結果値のLSB(Least Significant Bit)2ビットが‘0’になるようにする関数を意味する。前記(4)手続きでの結果値は入力ビットs1, s0, n1,n0に依存し、下記数2に示すように決定される。モジュラー減少(modular reduction)に使用される値qiのMSB(Most Significant Bit)のqi2は符号ビットであり、残りの二つのビット(qili0)iは集合{0、±1、2}元素のうち一つである。qiは下記の表2によって計算される。
Figure 0004554239
Figure 0004554239
B−3.発明の動作
本発明はそれぞれnビットのA、B、N(ここで、-N≦A,B<N)を入力として受けてm+2 (ここで、m=n/2)クロック内にA・B・R-1modN(ここで、R=4m+2)を計算するためのものであり、図1に示すような装置によりその計算動作が行われる。
まず、図1に示す装置により A・B・R-1modN(ここで、R=4m+2)を計算する過程が説明される。下記のa)段階は初期化段階であり、b)〜h)段階は毎クロックごとに行われる段階であり、i)段階は、前記b)〜h)段階を(m+2)クロックを行った後に行われる段階である。
a)モジュラー乗算のために入力されるnビットのA、B、Nがそれぞれのレジスタ(あるいはメモリ)に貯蔵される。本発明の装置によれば、入力A、Bは、図2に示すレジスタ102、104に格納されるものとして示しており、Nを格納する別途のレジスタは示していないが、このようなレジスタが使用され得るという事実に留意すべきである。この時、Aを格納するためのレジスタ102は毎クロックごとに右に2ビット単位に移動させるシフトレジスタである。便宜上、Aを格納するためのレジスタはレジスタA、Bを格納するためのレジスタはレジスタBで説明される。仮に、メモリである場合には1ワード単位に値を読み出す。図1のCSA2 150による計算結果を臨時的に格納するための臨時レジスタ(あるいはメモリ)CとS(図示せず)が0に初期化される。
b)それぞれのレジスタら102、104に全てのデータらが入力された時、変換ロジック110のブース変換回路112はレジスタ102のLSB 2ビットを基盤にブース変換機能を行う。前記変換ロジック110のMUX114はレジスタ104に格納されたB値を入力し、レジスタ102のLSB 2ビット(ai+1、a)と参照ビット(ai-1)に基づいてブース変換された結果値zi+1を求める。ブース変換された結果値のうち、1の補数化器116に入力される符号ビットzi+1[2]に基づいて多重化器114の出力に対して1の補数演算を選択的に遂行し、その結果、1の補数化器116は、0, ±B, ±2B値のうち一つをCSA1 120の3個の入力のうち一つの入力として提供する。
c)CSA1 120はn+4ビットの符号付き二進数(binary signed number)3個を入力として受けて加算動作を行う。前記CSA1 120はn+4個の全加算器121〜125から構成される。この時、CSAI 120の全加算器から発生される桁上げは次の段階のCSA2の全加算器に提供されるが、MSBの全加算器125から発生される桁上げは無視される。
d)商ロジック130は、前記CSA1 120の出力値S1,1, C1,0, S1,0 と、全加算器160から提供されるCarry-in信号と、被乗数Bの符号ビット(B sign)を入力し、全加算器134と排他的論理和器136によりそれぞれS1 、S0を計算して出力する。この時、前記全加算器134は一種の補正用桁上げ値を出力する。この補正用桁上げ値cinは、前加算器160の入力として提供される。
e)前記商ロジック130の組合回路138は、前記d)段階で計算されたS1 ,S0を入力し、前記<表4>に示すような真理値表に基づいて3ビット値であるq値を決定する。たとえ前記<表4>に示した真理値表に基づいてq値を決定する回路に対する具体的な構成を示してはいないが、当該分野で通常の知識を持つ者ならこのような結果値を決定する回路を一般の論理組合回路により容易に具現できるわけである。
f)CSA2 150は、前記c)段階で求めたCSA1 120の出力である桁上げ値と和値、前記e)段階で求めたq値のLSB 2ビットに基づいて決定された0、±N、2N値のうち一つの値を選択してn+4ビットの符号付き二陣数(binary signed number)に入力してn+4ビット符号付き演算を行う。前記CSA2 150は前記CSA1 120と同様に、n+4個の全加算器151〜156から構成される。この時、前記CSA2 150の全加算器151〜156は最下位の全加算器151の桁上げ入力として、前記e)段階で計算されたq値の符号ビットであるMSB値がqi、2が入力され、和ビット入力としては、全加算器134の和出力ビットであるS値が入力される。
g)全加算器160は、CSA2 150の出力値のうちS2,1 ,C2,0 ビットと補正用桁上げ信号であるcinビットを入力し全加算してCarry-inビットを出力する。このような全加算動作は前述したように、2の補数を使用する既存のブース変換方式と違い本発明では1の補数を使用することによる両者の差を補正するためのものである。
h)前記CSA2 150の出力のうちMSBからの(n+2)個の和値と(n+3)個の桁上げ値がCSA1 120の入力としてフィードバックされる。この時、前記CSA2 150の最上位加算器156から出力される和値のMSBであるS2,n+3を複写して前に2ビットを追加し、桁上げ値のMSBであるC2,n+3を複写して1ビット追加してCSA1 120の入力値とする。すなわち、前記CSA2 150の加算器156から出力される和値S2,n+3はCSA1 120の最上位から3個の加算器123〜125に提供され、桁上げ値C2,n+3はCSA1 120の最上位から2個の加算器124、125に提供される。
i)(m+2)クロック中に前記b)〜h)段階が行われた後には次のような動作が行われる。すなわち、CPA(Carry Propagation Adder)(図示せず)は、前記CSA2 150の出力である桁上げ値と和値に対して加算動作を行う。この時、加算結果値が負数ならmodulus Nを足し、正数ならmodulus Nを足さない。
例えば、A、B、Nがそれぞれ下記の式(10)のように12ビットである時、前記手続きによるモンゴメリーモジュラーロシア演算結果は表3及び表4に示すとおりになる。
Figure 0004554239
Figure 0004554239
Figure 0004554239
次に、前述したような本発明の装置による演算結果値を利用してモジュラー乗算A・BmodNを計算する手続きを説明する。これに対する具体的なハードウェア構成が省略されていることに留意すべきである。
1)あらかじめP =22(n+4)modNを計算する。
2)本発明の装置を利用してC=A・B・2-(n+4)modNを計算する。
3)P・C・2-(n+4)modN = A・BmodNを計算する。
その後、前述したような本発明の装置による演算結果値を利用してRSA演算に必要なモジュラー累乗memodNを計算する手続きを説明する。
1)指数eをレジスタ(あるいはメモリ)に格納する。
2)レジスタにmodulus Nを格納する。
3)臨時レジスタCとSを0に初期化する。
4)モンゴメリーモジュラー乗算m’=fm(m,P,N)=m・P・R-1modNを行う。但し、累乗演算の基数Pは上記モジュラー乗算演算1)段階で定義したあらかじめ計算された値を表し、R=2n+4である。
5)m’をレジスタBにローディングする。
6)レジスタBにローディングした値を利用してモジュラー自乗演算を行う。この時、モンゴメリーモジュラー乗算に必要な乗数AはレジスタBからローディングし、変形されたブース変換回路を利用して値を得る。
7)指数eを左にシフトする。
8)指数eのMSB(Most Significant Bit)1を無視し、次のビットから次の9)〜10)段階を行う。
9)指数eの毎ビットが0または1に関らず段階4)〜5)を行いモジュラー自乗演算を行う。この時、自乗演算に必要な乗数はレジスタA、被乗数はレジスタBに格納される。
10)指数eの現在ビットが1の場合には段階9)を行った後、段階4)〜5)を行いモジュラー乗算を行う。この時、被乗数はレジスタBの内容であり、乗数は累乗演算の基数m'である。
11)指数eの全てのビットに対して段階8)〜10)を行った後、段階4)を利用してモジュラー乗算をもう一度行う。この時、被乗数はレジスタBの内容であり、乗数は1である。
前記段階1)〜11)を行った後、レジスタCとSに残っている値に対してCPA(Carry Propagation Adder)を行った値が負数ならmodulus Nを足し、正数ならmodulus Nを足さない値が最終的な累乗値memodNとなる。
B−4.発明の効果
前述した如く、本発明は、A・B・2-(n+4)modNを計算する回路を記述したものであり、記述された回路を利用して上述した一般のモジュラー乗算であるA・BmodNを計算できる。このような本発明に基づいて計算されたA・BmodNは、デジタル署名を生成及び検証するための機器に使用されるハードウェア的な装置に使用することができる。また、本発明は、ICカードに基づく電子署名、認証、暗/復号化のハードウェア装置に使用することができる。また、本発明は、モジュラー乗算を行う電子署名機器によって暗号及び復号化する機器を提供することができる。また、本発明は、電子署名機器に基づいて、NIST-DSS、RSA、ElGamal、Schnorr電子署名など既存の公開キー暗号システムを具現する上で利用することができる。
C.第2実施例
C−1.発明の構成
図7は本発明の第2実施例に係るモジュラー乗算装置の構成を示す図である。
図7を参照すれば、前記モジュラー乗算装置は、変換ロジック(Recoding Logic)210、第1桁上げ保存加算器(Carrier save Adder;以下“CSA”と称する)220、商ロジック(Quotient Logic)230、選択器240、第2CSA250、論理積算器(AND)260から構成される。前記モジュラー乗算装置は、モンゴメリーアルゴリズムに基づいてそれぞれnビットのA、B、N(ここで、-N≦A,B<N)を入力として受けてm+2(ここで、m=n/2)クロック内にA・B・R-1modN(ここで、R=4m+2)を計算するモジュラー乗算装置に対するハードウェア的な構成である。つまり、このモジュラー乗算装置はA・B・2-(n+4)modNを計算するための構成を持つ。
前記CSA220、250はそれぞれ(n+4)個の全加算器が並列に構成されるものであり、3ビット入力でそれぞれ桁上げビットと和ビットを出力する。前記変換ロジック210は、乗数Aを基盤にして変形されたブース変換(modified Booth recoding)動作を行い、(n+3)ビットの0、B、2B、3B値の中で一つを選択出力する。前記商ロジック230は、前記CSA1 220の最下位(LSB:Least Significant Bit)桁上げ値C1,0、和LSB 2ビットS1,1、S1,0とCarry-in、Bの符号ビットを入力とし、モジュラー減少(Modular reduction)の倍数を決定するための値である2ビットのq2q1を出力する。前記選択器240は、前記決定されたq値に基づいて0、N、2N、3Nの中で一つの値を選択して出力するためのものであり、多重化器(MUX:Multiplexer)で具現可能である。前記論理積演算器260は、前記CSA2 250の出力2ビットであるS2,1、C2,0を入力して論理積演算動作を行い、その演算結果値を桁上がり(Carry-in)信号として前記商ロジック230に提供する。
図7には示さなかったが、毎クロックごとに前記CSA2 250の出力である桁上げ値と和値をそれぞれ格納するための臨時格納レジスタ(C)、レジスタ(R)が備えられ、また、前記臨時格納レジスタら(C、R)に格納された値を加算してモジュラー乗算結果として出力するための桁上げ伝播加算器 (Carry Propagation Adder)が具備されるという事実に留意する必要がある。
図8は、図7に示す変換ロジック210のより具体的な構成を示す図である。
図8に示すように、前記変換ロジック210は、乗数(A)のビットが順次的にシフトされて生成されたビット列の下位2ビットをブース変換(Booth recoding)し、前記ブース変換された結果と被乗数(B)を多重化して(n+3)ビットの二進数を出力する。すなわち、前記変換ロジック210の前段には前記乗数のビットを順次的にシフトさせて前記シフトされたビット列を生成するシフトレジスタ202と、前記被乗数を格納するためのレジスタ204が備えられる。前記変換ロジック210は、多重化器(MUX)212から構成される。前記多重化器212は、前記生成されたビット列の下位2ビット(ai+1,ai)と前記被乗数を多重化し、多重化結果として0、B、2B、3Bを出力する。前述した前記変換ロジック210は乗数Aを基盤にして変形されたブース変換(modified Booth recoding)を具現した回路であり、(n+3)ビットの0、B、2B、3B値のうち一つを選択して出力する。
図9は、図7に示すCSA1 220のより具体的な構成を示す図である。
図9を参照すれば、前記CSA1 220は、(n+4)個の全加算器221〜225を備えており、(n+1)ビットの第1信号(S2,2 〜S2,n+2)と、(n+2)ビットの第2信号(C2,1〜C2,n+2)と、前記変換ロジック210からの(n+3)ビットの前記二進数を第3信号(B0〜Bn+2)として入力し、前記(n+3)個の全加算器221〜225により全加算して(n+3)ビットの桁上げ値(C1,0〜C1,n+2)と和値(S1,0〜S1,n+2)を出力する。前記第1信号及び第2信号は、前記CSA2 250から提供される信号であり、第3信号は、前記変換ロジック210から提供される信号である。この時、前記第1信号の最上位ビットS2,n+2は、前記全加算器のうち上位3番目の全加算器223に入力され、前記第2信号の最上位ビットC2,n+2は前記全加算器のうち上位2番目の全加算器224に入力される。前記全加算器のうち最上位全加算器225には第1信号及び第2信号として“0”が提供され、2番目の全加算器224には第1信号として“0”が提供される。すなわち、前記CSA1 220を構成する最下位の全加算器221から(n+1)番目の全加算器223まで(n+1)ビットの第1信号Sが順次入力され、(n+2)番目の全加算器224及び(n+3)番目の全加算器225には“0”の第1信号が入力される。また、前記CSA1 220を構成する最下位の全加算器221から(n+2)番目の全加算器224まで(n+2)ビットの第2信号(C2,1〜C2,n+2)が順次入力され、(n+3)番目の全加算器225には“0”の第2信号が入力される。また、前記CSA1 220を構成する最下位の全加算器221から(n+1)番目の全加算器223まで(n+3)ビットの第3信号(B0〜Bn+2)が順次入力される。
図10は、図7に示す商ロジック230のより具体的な構成を示す図である。
図10を参照すれば、前記商ロジック230は、前記CSA1 220からの前記(n+3)ビットの桁上げ値と和値の中から選択された下位2個の全加算器から出力される和値(S1,0、S1,1)と下位1個の全加算器から出力される桁上げ値(C1,0)を入力し、モジュラー減少の倍数を決定するための2ビットの決定値q1q0を出力する。前記商ロジック230は、ディー(D)フリップフロップ232と、半加算器(HA:Half Adder)234と、排他的論理和(XOR)器236と、組合回路238から構成される。前記Dフリップフロップ232は論理積(AND)演算器260から桁上げ入力値Carry-inを入力して一時的に格納する。前記半加算器234は、前記Dフリップフロップ232に格納された桁上げ入力値Carry-inと前記CSA1 220の最下位全加算器221から出力される和値(S1,0)を半全加算する。前記排他的論理和器236は、前記CSA1 220の最下位全加算器221から出力される桁上げ値(C1,0)と2番目の全加算器222から出力される和値(S1,1)を排他的論理和する。前記組合回路238は、前記半加算器234の出力(SO)と前記排他的論理和器236の出力(S1)とあらかじめ設定された入力ビット(n1)を組合わせて2ビットの決定値(q1q0)として出力する。
図11は、図7に示すCSA2 250のより具体的な構成を示す図である。
図11を参照すれば、前記CSA2 250は、(n+3)個の全加算器251〜256を備えている。前記CSA2 250は前記選択器240から選択された(n+3)ビットのモジュロ数N(N0 - Nn+2)を第1信号として入力し、前記CSA1 220からの(n+3)ビットの桁上げ値のうち最上位桁上げ値を除外した残りの(n+2)ビットの桁上げ値(C1,0〜C1,n+2)を第2信号として入力し、前記(n+3)ビットの和値の中で最下位桁上げ値を除外した残りの(n+2)ビットの和値(S1,1〜S1,n+2)を第3信号として入力し、前記(n+3)個の全加算器251〜256により(n+3)ビットの桁上げ値(C2,0〜C2,n+2)と和値(S2,0〜S2,n+2)を出力する。この時、前記第1信号の(n+3)ビットは前記全加算器の最下位全加算器251から順次入力され、前記第2信号の(n+2)ビットは前記全加算器のうち下位2番目の全加算器252から順次入力され、前記第3信号の(n+2)ビットは前記全加算器の下位2番目の全加算器252から順次入力される。前記全加算器のうち最下位全加算器251には前記商ロジック230の半加算器234からの出力(S0)と、論理積(AND)演算器260からの桁上げ入力値Carry-inが入力される。
図12は、図7に示す論理積演算器260のより具体的な構成を示す図である。
図12を参照すれば、前記論理積演算器260は、前記CSA2 250の最下位全加算器251から出力される桁上げ値(C2,0)と下位2番目の全加算器252から出力される和値(S2,1)を全加算して桁上げ入力値(Carry-in)として出力する。この桁上げ入力値(Carry-in)は前記商ロジック230に提供される。
C−2.発明の原理
本発明は、それぞれnビットのA、B、N(ここで、-N≦A,B<N)を入力として受けてm+2(ここで、m=n/2)クロック内にA・B・R-1modN (ここで、R=4m+2)を計算する装置に関するものである。このような本発明の具現に適用される次の2つの原理が説明される。第一に、モジュラー乗算のための乗数(A)及び被乗数(B)を表現する原理が説明される。第二に、本発明の変換原理を利用したモンゴメリーアルゴリズムに対する原理が説明される。
<2bit scanning>
本発明では乗数(A)を各クロックにLSBから2ビットずつスキャニング(scanning)(あるいはシフティング(shifting))して被乗数(B)とかけ、このような乗算結果をモンゴメリーアルゴリズムに利用する。したがって、毎ループから発生するaiは{0、1、2、3}の元素の中で一つであり、これを被乗数(B)とかけてCSA1 220の入力として利用する。
<Radix-4 Montgomery algorithm>
下記の式(11)〜(17)に示すようなアルゴリズムは、本発明がradix-4モンゴメリーモジュラー乗算を利用することを示す。元来モンゴメリーアルゴリズムでは結果値とmodulus Nと比較し、結果値がmodulus Nより大きいと一度減算をしなければならないが、下記に示すアルゴリズムではその手続きがないことがわかる。
Figure 0004554239
上記の式(11)〜(17)に示したアルゴリズムで、(13)手続きのAiは、Aを2ビットずつスキャンした値を意味する。(14)手続きは、(15)手続きの結果値のLSB(Least Significant Bit)2ビットが‘0’になるようにする関数を意味する。前記(4)手続きでの結果値は入力ビットs1, s0, n1,n0に依存するが、モンゴメリーモジュラー乗算のためにはNが奇数なのでこの時n0は常に1であり、したがって、実際に下記の表5に示すように決定される。モジュラー減少(modular reduction)に使用される値qiは集合{0、1、2、3}元素のうち一つである。qiは下記の式(18)によって計算される。
Figure 0004554239
Figure 0004554239
C−3.発明の動作
本発明はそれぞれnビットのA、B、N(ここで、-N≦A,B<N)を入力として受けてm+2 (ここで、m=n/2)クロック内にA・B・R-1modN(ここで、R=4m+2)を計算するためのものであり、図7に示すような装置によりその計算動作が行われる。
まず、図7に示す装置により A・B・R-1modN(ここで、R=4m+2)を計算する過程が説明される。下記のa)段階は初期化段階であり、b)〜h)段階は毎クロックごとに行われる段階であり、i)段階は、前記b)〜h)段階を(m+2)クロックを行った後に行われる段階である。
a)モジュラー乗算のために入力されるnビットのA、B、Nがそれぞれのレジスタ(あるいは、メモリ)に貯蔵される。また、n+2ビットの2B、3Bがそれぞれのレジスタ(あるいは、メモリ)に貯蔵される。本発明の装置によれば、入力されるビットA、Bは、図8に示すレジスタ202、204に格納されるものとして示しているし、2B及び3Bを格納する別途のレジスタは示してはいないが、このようなレジスタが使用可能であるという事実に留意すべきである。この時、Aを格納するためのレジスタ202は毎クロックごとに右に2ビット単位に移動させるシフトレジスタである。便宜上、Aを格納するためのレジスタはレジスタA、Bを格納するためのレジスタはレジスタBで説明される。仮に、メモリである場合には1ワード単位に値を読み出す。図7のCSA2 250による計算結果を臨時的に格納するための臨時レジスタ(あるいは、メモリ)CとS(図示せず)が0に初期化される。
b)それぞれのレジスタら202、204に全てのデータらが入力された時、変換ロジック210ではレジスタ202のLSB 2ビットを基盤にブース変換機能を行う。前記変換ロジック210のMUX212はBレジスタ204の値を入力し、Aレジスタ202のLSB 2ビットに基づいて0, B, 2B,3B値のうち一つを選択してCSA1 220の3個の入力のうち一つの入力として提供する。
c)CSA1 220はn+3ビットの二進数(binary unsigned number)3個を入力として受けて加算動作を行う。前記CSA1 220はn+3個の全加算器221〜225から構成される。
d)商ロジック230は、前記CSA1 220の出力値S1,1, C1,0, S1,0 と、論理積演算器260から提供されるCarry-in信号を入力し、半加算器234と排他的論理和器236によりそれぞれS1 、S0を計算して出力する。
e)前記商ロジック230の組合回路238は、前記d)段階で計算されたS1 ,S0を入力し、前記表5に示すような真理値表に基づいて2ビット値であるq値を決定する。たとえ前記表5に示した真理値表に基づいてq値を決定する回路に対する具体的な構成を示してはいないが、当該分野で通常の知識を持つ者ならこのような結果値を決定する回路を一般の論理組合回路により容易に具現できるわけである。
f)CSA2 250は、前記c)段階で求めたCSA1 220の出力である桁上げ値と和値、前記e)段階で求めたq値のLSB 2ビットに基づいて決定された0、N、2N、3N値のうち一つの値を選択してn+4ビットの二陣数を入力としてn+3ビット符号なし演算を行う。前記CSA2 250は前記CSA1 220と同様に、n+3個の全加算器251〜256から構成される。この時、前記全加算器251〜256は最下位の全加算器であるLSBの全加算器251の桁上げ入力として前段のCarry-in信号が入力されることに留意すべきである。
g)論理積演算器260は、CSA2 250の出力値のうちS2,1 ,C2,0 ビットを入力し論理積演算してCarry-inビットを出力する。
h)前記CSA2 250の出力のうちMSBからの(n+1)個の和値と(n+2)個の桁上げ値がCSA1 220の入力としてフィードバックされる。この時、前記CSA2 150の和値の上位2ビットと桁上げ値の上位1ビットには“0”入力し、2ビットが右にシフトされることによってCSA1 220にフィードバックされる。すなわち、前記CSA2 250の加算器256から出力される和値S2,n+2はCSA1 220の上位3番目の加算器223に提供され、最上位及び上位2番目の加算器224、225には“0”の和値が提供される。前記CSA2 250の加算器256から出力される桁上げ値C2,n+2はCSA1 220の上位2番目の加算器224に提供され、最上位加算器225には“0”の桁上げ値が提供される。
i)(m+2)クロック中に前記b)〜h)段階が行われた後には次のような動作が行われる。すなわち、CPA(Carry Propagation Adder)(図示せず)は、前記CSA2 250の出力である桁上げ値と和値に対して加算動作を行う。
例えば、A、B、Nがそれぞれ下記の式(19)のように12ビットである時、前記手続きによるモンゴメリーモジュラーロシア演算結果は表6及び表7に示すとおりになる。
FinalResult:0111.1100.0111(0x7C7)+0010.1000.0000(0x280)+1=1010.0100.1000(0xA448)
Figure 0004554239
Figure 0004554239
Figure 0004554239
次に、前述したような本発明の装置による演算結果値を利用してモジュラー乗算A・BmodNを計算する手続きを説明する。これに対する具体的なハードウェア構成が省略されていることに留意すべきである。
1)あらかじめP =22(n+4)modNを計算する。
2)本発明の装置を利用してC=A・B・2-(n+4)modNを計算する。
3)P・C・2-(n+4)modN = A・BmodNを計算する。
その後、前述したような本発明の装置による演算結果値を利用してRSA演算に必要なモジュラー累乗memodNを計算する手続きを説明する。
1)指数eをレジスタ(あるいはメモリ)に格納する。
2)レジスタCにmodulus Nを格納する。
3)臨時レジスタCとSを0に初期化する。
4)モンゴメリーモジュラー乗算m’=fm(m,P,N)= m・P・R-1modNを行う。但し、累乗演算の基数Pは上の手続きで定義したあらかじめ計算された値を表し、R=2n+4である。
5)m’をレジスタBにローディングする。
6)レジスタBにローディングした値を利用してモジュラー自乗演算を行う。この時、モンゴメリーモジュラー乗算に必要な乗数AはレジスタBからローディングし、radix-4 Recoding回路を利用して値を得る。
7)指数eを左にシフトする。
8)指数eのMSB(Most Significant Bit)1を無視し、次のビットから次の9)〜10)段階を行う。
9)指数eの毎ビットが0または1に関らず段階4)〜5)を行いモジュラー自乗演算を行う。この時、自乗演算に必要な乗数はレジスタA、被乗数はレジスタBに格納される。
10)指数eの現在ビットが1の場合には段階9)を行った後、段階4)〜5)を行いモジュラー乗算を行う。この時、被乗数はレジスタBの内容であり、乗数は累乗演算の基数m'である。
11)指数eの全てのビットに対して段階8)〜10)を行った後、段階4)を利用してモジュラー乗算をもう一度行う。この時、被乗数はレジスタBの内容であり、乗数は1である。
前記段階1)〜11)を行った後、レジスタCとSに残っている値に対してCPA(Carry Propagation Adder)を行った値が最終的な累乗値memodNとなる。
C−4.発明の効果
前述した如く、本発明は、A・B・2-(n+4)modNを計算する回路を記述したものであり、記述された回路を利用して上述した一般のモジュラー乗算であるA・BmodNを計算できる。このような本発明に基づいて計算されたA・BmodNは、デジタル署名を生成及び検証するための機器に使用されるハードウェア的な装置に使用することができる。また、本発明は、ICカードに基づく電子署名、認証、暗/復号化のハードウェア装置に使用することができる。また、本発明は、モジュラー乗算を行う電子署名機器によって暗号及び復号化する機器を提供することができる。また、本発明は、電子署名機器に基づいて、NIST-DSS、RSA、ElGamal、Schnorr電子署名など既存の公開キー暗号システムを具現する上で利用することができる。
D.発明の適用例
図13は、本発明で具現した暗号補助装置を利用して暗号化及び電子署名ができるICカードのブロック構成を表す図面である。
図13において、中央処理処置(CPU:Central Processing Unit)310は、暗号、認証及び電子署名を可能にする命令語を解読し、モジュラー演算プロセッサー(modular arithmetic coprocessor)330に必要な制御信号とデータを提供する。ROM(Read Only Memory)350の内部には暗号化及び電子署名などに必要なキー(key)のように保護しなければならないデータのための保安モジュラー(security module)が存在する。
一方、本発明の詳細な説明では具体的な実施例に上げて説明したが、本発明の範囲を外れない限度内で様々な変形が可能であることはもちろんである。したがって、本発明の範囲は、説明された実施例によって定められてはいけなく、特許請求の範囲及び請求範囲と均等なものによって定められるべきである。
本発明の第1実施例に係るモジュラー乗算装置の構成を示す図。 図1に示す変換ロジックのより具体的な構成を示す図。 図1に示す桁上げ保存加算器(CSA)1のより具体的な構成を示す図。 図1に示す商ロジックのより具体的な構成を示す図。 図1に示すCSA2のより具体的な構成を示す図。 図1に示す全加算器(FA)のより具体的な構成を示す図。 本発明の第2実施例に係るモジュラー乗算装置の構成を示す図。 図7に示す変換ロジックのより具体的な構成を示す図。 図7に示すCSA1のより具体的な構成を示す図。 図7に示す商ロジックのより具体的な構成を示す図。 図7に示すCSA2のより具体的な構成を示す図。 図7に示すFAのより具体的な構成を示す図。 本発明の実施例に係るモジュラー乗算装置の適用例を示す図。
102 シフトレジスタ
104 レジスタ
110 変換ロジック
112 変換回路
114 多重化器(MUX)
116 補数化器
120 第1桁上げ保存加算器(CSA)
130 商ロジック
140 選択器
150 第2CSA
160 全加算器

Claims (6)

  1. 信号処理システムで用いられるモジュラー乗算を遂行する信号処理装置であって、
    モジュラー乗算で乗数のブース変換結果によって被乗数に対して1の補数演算を選択的に遂行して符号付きの被乗数を出力する第1ロジックと、
    桁上げ入力値(Carry-in)と前記被乗数の符号ビット(Bsign)と第1の全加算演算により求められる和値(S)の最下位ビット(S 1,0 )とを全加算演算することにより以前クロックの補正用桁上げ値(cin)を生成すると共に、前記以前クロックの補正用桁上げ値(cin)から決定された現在クロックの桁上げ入力値(Carry-in)および前記被乗数の符号ビットに基づいてモジュラー乗算を行うことにより符号付きのモジュラス(modulus)を出力する第2ロジックと、
    前記第2ロジックから入力された前記以前クロックの補正用桁上げ値(cin)と前記被乗数の符号ビットを用いて第2の全加算演算を遂行して前記桁上げ入力値(Carry-in)を出力する全加算器を有すると共に、前記符号付きの被乗数と前記符号付きのモジュラスの入力を受けて、前記以前クロックで第1の全加算演算により求めた桁上げ値(C)と和値(S)に対して該第1の全加算演算を反復遂行して前記モジュラー乗算の結果値を計算する第3ロジックと、を含み、
    前記第1ロジックは、前記乗数のビットを順次的にシフトしながら前記乗数の下位2ビットと所定の参照ビットを入力にして前記ブース変換を遂行し、
    前記第2ロジックは、
    毎クロックごとに前記第3ロジックで計算された前記桁上げ値(C)と前記和値(S)の最下位ビットからそれぞれ所定ビットだけ抽出された第1ビット値と、前記桁上げ入力値(Carry-in)及び前記被乗数の符号ビットを入力にして前記モジュラー乗算でモジュラー減少の倍数を決定する第2のビット値を出力する商ロジックと、
    前記第2のビット値を基盤に前記符号化されたモジュラスを選択して出力する選択器と、を含み、
    前記第3ロジックは、複数の全加算器を備える少なくとも二以上の桁上げ保存加算器(CSA)を用いて前記桁上げ値(C)と和値(S)に対する前記第2の全加算演算を反復遂行し、前記乗数、被乗数及び前記モジュラスがそれぞれnビットである場合、m+2クロック(m=n/2)後に前記第3ロジックから出力される前記桁上げ値(C)と前記和値(S)に対して桁上げ伝播加算演算を遂行することを特徴とするモジュラー乗算を遂行する信号処理装置。
  2. 前記第1ロジックは、
    前記乗数の下位2ビットと前記参照ビットを用いて前記ブース変換を遂行するブース変換回路と、
    前記乗数の下位2ビットを基盤に前記被乗数を多重化して出力する多重化器と、
    前記ブース変換結果の符号ビットを基盤に前記多重化器の出力に対して前記1の補数化演算を選択的に遂行して前記符号化された被乗数を出力する1の補数化器と、を含むことを特徴とする請求項1記載の信号処理装置。
  3. ブース変換を遂行する変換ロジックとモジュラー減少の倍数を決定する商ロジック及び二つの桁上げ保存加算器を含む信号処理装置において、モジュラー乗算を遂行する信号処理方法であって、
    前記変換ロジックがモジュラー乗算で乗数のブース変換結果によって被乗数に対して1の補数演算を選択的に遂行して符号付きの被乗数を出力する過程と、
    桁上げ入力値(Carry-in)と前記被乗数の符号ビット(Bsign)と反復遂行される第1の全加算演算により得られる和値(S)の最下位ビット(S 1,0 )とを全加算演算することにより以前クロックの補正用桁上げ値(cin)を生成して商ロジックから出力すると共に、前記商ロジックから出力された前記以前クロックの補正用桁上げ値(cin)の入力を受けた全加算器が現在クロックの桁上げ入力値(Carry-in)を求める過程と、
    前記商ロジックを含むロジックが前記桁上げ入力値と前記被乗数の符号ビットに基づいて前記モジュラー乗算により符号付きのモジュラスを出力する過程と、
    前記二つの桁上げ保存加算器が前記符号付きの被乗数と前記符号付きのモジュラスの入力を受けて、前記以前クロックで求めた第1の全加算演算の桁上げ値(C)と和値(S)に対して第1の全加算演算を反復遂行して前記モジュラー乗算の結果値を計算する過程と、を含み、
    前記符号化された被乗数を出力する過程は、
    前記乗数のビットを順次的にシフトしながら前記乗数の下位2ビットと所定の参照ビットを入力にして前記ブース変換を遂行する過程を含むことを特徴とするモジュラー乗算を遂行し、
    前記桁上げ入力値(Carry-in)を求める過程は、
    前記補正用桁上げ値(cin)と前記被乗数の符号ビットを用いて全加算演算を遂行して前記桁上げ入力値(Carry-in)を出力する過程を含み、
    前記符号付きのモジュラスを出力する過程は、
    毎クロックごとに前記桁上げ値と前記和値の最下位ビットからそれぞれ所定のビットだけ第1ビット値を抽出する過程と、
    前記第1ビット値と、前記桁上げ入力値(Carry-in)、及び前記被乗数の符号ビットを入力にして前記モジュラー乗算でモジュラー減少の倍数を決定する第2のビット値を出力する過程と、
    前記第2のビット値を基盤に前記符号化されたモジュラスを選択して出力する過程と、を含み、
    前記乗数、被乗数及び前記モジュラスがそれぞれnビットである場合、m+2クロック(m=n/2)後に前記桁上げ値と前記和値に対して桁上げ伝播加算演算を遂行する過程をさらに含み、
    前記全加算演算は、複数の全加算器を備える少なくとも二以上の桁上げ保存加算器(CSA)を通じて遂行され、ることを特徴とする信号処理方法。
  4. 前記符号付きの被乗数を出力する過程は、
    前記乗数の下位2ビットと前記参照ビットを用いて前記ブース変換を遂行する過程と、
    前記乗数の下位2ビットを基盤に前記被乗数を多重化して出力する過程と、
    前記ブース変換結果の符号ビットを基盤に前記多重化された被乗数の出力に対して前記1の補数化演算を選択的に遂行して前記符号化された被乗数を出力する過程と、を含むことを特徴とする請求項記載の信号処理方法。
  5. 前記第1ロジックは、前記ブース変換結果の符号ビットを基盤に前記被乗数を多重化した出力に対して前記1の補数化演算を選択的に遂行して前記符号化された被乗数を出力することを特徴とする請求項1記載の信号処理装置。
  6. 前記符号化された被乗数を出力する過程は、
    前記ブース変換結果の符号ビットを基盤に前記被乗数を多重化した出力に対して前記1の補数化演算を選択的に遂行して前記符号化された被乗数を出力する過程を含むことを特徴とする請求項記載の信号処理方法。
JP2004069540A 2003-03-14 2004-03-11 モンゴメリー類型のモジュラー乗算装置及び方法 Expired - Lifetime JP4554239B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0016100A KR100458031B1 (ko) 2003-03-14 2003-03-14 몽고메리 유형의 모듈라 곱셈 장치 및 방법

Publications (2)

Publication Number Publication Date
JP2004280103A JP2004280103A (ja) 2004-10-07
JP4554239B2 true JP4554239B2 (ja) 2010-09-29

Family

ID=32768648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004069540A Expired - Lifetime JP4554239B2 (ja) 2003-03-14 2004-03-11 モンゴメリー類型のモジュラー乗算装置及び方法

Country Status (5)

Country Link
US (2) US7564971B2 (ja)
EP (1) EP1457875B1 (ja)
JP (1) JP4554239B2 (ja)
KR (1) KR100458031B1 (ja)
CN (1) CN100527072C (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG115534A1 (en) * 2003-04-04 2005-10-28 St Microelectronics Asia Method and apparatus for performing modular arithmetic
US7355562B2 (en) * 2004-02-17 2008-04-08 Thomas Schubert Electronic interlocking graphics panel formed of modular interconnecting parts
JP4170267B2 (ja) * 2004-07-09 2008-10-22 Necエレクトロニクス株式会社 乗算剰余演算器及び情報処理装置
KR101194837B1 (ko) 2005-07-12 2012-10-25 삼성전자주식회사 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법
JP4182226B2 (ja) * 2005-08-24 2008-11-19 国立大学法人名古屋大学 剰余系の計算方法及び装置並びにプログラム
US7849125B2 (en) * 2006-07-07 2010-12-07 Via Telecom Co., Ltd Efficient computation of the modulo operation based on divisor (2n-1)
KR100901280B1 (ko) 2006-12-07 2009-06-09 한국전자통신연구원 모듈러 3 연산 장치 및 방법
CA2701855C (en) * 2007-11-02 2016-10-11 Certicom Corp. Signed montgomery arithmetic
US8417756B2 (en) * 2007-11-29 2013-04-09 Samsung Electronics Co., Ltd. Method and apparatus for efficient modulo multiplication
US8386546B2 (en) * 2009-02-27 2013-02-26 George Mason Intellectual Properties, Inc. Montgomery multiplication architecture
KR101925868B1 (ko) * 2012-05-17 2018-12-06 삼성전자주식회사 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
CN102929575B (zh) * 2012-10-29 2015-04-15 电子科技大学 一种模(2n+3)乘法器
US10176121B2 (en) * 2013-07-15 2019-01-08 Infineon Technologies Ag Apparatus and method for memory address encryption
US10678709B2 (en) 2013-07-15 2020-06-09 Infineon Technologies Ag Apparatus and method for memory address encryption
CN103761068B (zh) * 2014-01-26 2017-02-01 上海交通大学 优化的蒙哥马利模乘硬件
US10591983B2 (en) * 2014-03-14 2020-03-17 Wisconsin Alumni Research Foundation Computer accelerator system using a trigger architecture memory access processor
KR102132261B1 (ko) * 2014-03-31 2020-08-06 삼성전자주식회사 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기
CN107766032A (zh) * 2016-08-15 2018-03-06 清华大学 多项式基GF(2^n)乘法器
CN109190414B (zh) * 2018-08-09 2021-06-15 宁波大学 一种用于乘法器的全同态混淆方法
US11068238B2 (en) * 2019-05-21 2021-07-20 Arm Limited Multiplier circuit
US11636224B2 (en) * 2019-12-19 2023-04-25 Micro Focus Llc Generating hash values for input strings
US20210263707A1 (en) * 2020-02-26 2021-08-26 Gsi Technology Inc. Iterative binary division with carry prediction
CN112486457B (zh) * 2020-11-23 2022-12-20 杭州电子科技大学 一种实现改进的fios模乘算法的硬件系统
WO2022115108A1 (en) * 2020-11-27 2022-06-02 Pqsecure Technologies, Llc An architecture for small and efficient modular multiplication using carry-save adders
WO2022271163A1 (en) * 2021-06-23 2022-12-29 Pqsecure Technologies, Llc Computer processing architecture and method for supporting multiple public-key cryptosystems based on exponentiation
TWI802095B (zh) 2021-11-22 2023-05-11 財團法人工業技術研究院 模數乘法電路與對應之計算模數乘法之方法
CN114063975B (zh) * 2022-01-18 2022-05-20 中科南京智能技术研究院 一种基于sram存内计算阵列的计算系统及方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62154029A (ja) 1985-12-27 1987-07-09 Hitachi Tobu Semiconductor Ltd 乗算回路
US4862405A (en) 1987-06-30 1989-08-29 Digital Equipment Corporation Apparatus and method for expediting subtraction procedures in a carry/save adder multiplication unit
US5247605A (en) * 1990-07-02 1993-09-21 General Electric Company Neural nets supplied synapse signals obtained by digital-to-analog conversion of plural-bit samples
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
US6317769B1 (en) * 1996-09-18 2001-11-13 International Business Machines Corporation Apparatus for calculating of Bc (mod n) with repeatedly shifting a holding value
EP1008026B1 (en) 1997-05-04 2007-09-05 M-Systems Flash Disk Pioneers Ltd. Improved apparatus & method for modular multiplication & exponentiation based on montgomery multiplication
US5847981A (en) * 1997-09-04 1998-12-08 Motorola, Inc. Multiply and accumulate circuit
US6223198B1 (en) * 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
US6275841B1 (en) * 1997-12-11 2001-08-14 Intrinsity, Inc. 1-of-4 multiplier
FR2791156B1 (fr) * 1999-03-17 2001-05-11 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
FR2791155B1 (fr) * 1999-03-17 2001-05-11 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
US7062657B2 (en) 2000-09-25 2006-06-13 Broadcom Corporation Methods and apparatus for hardware normalization and denormalization
US6963977B2 (en) * 2000-12-19 2005-11-08 International Business Machines Corporation Circuits and methods for modular exponentiation
FR2822260A1 (fr) * 2001-03-14 2002-09-20 Bull Sa Procedes et dispositifs pour accelerer le temps de calcul d'un produit de montgomery d'un multiplication et d'une exponentiation modulaire
JP4188571B2 (ja) * 2001-03-30 2008-11-26 株式会社日立製作所 情報処理装置の演算方法および耐タンパ演算攪乱実装方式
US20020172355A1 (en) * 2001-04-04 2002-11-21 Chih-Chung Lu High-performance booth-encoded montgomery module
US7174015B1 (en) * 2001-04-25 2007-02-06 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Methods and apparatus for variable radix scalable modular multiplication
US6973470B2 (en) * 2001-06-13 2005-12-06 Corrent Corporation Circuit and method for performing multiple modulo mathematic operations
US6973471B2 (en) * 2002-02-22 2005-12-06 Freescale Semiconductor, Inc. Method and apparatus for implementing signed multiplication of operands having differing bit widths without sign extension of the multiplicand
JP2004258141A (ja) * 2003-02-24 2004-09-16 Fujitsu Ltd モンゴメリ乗算剰余の多倍長演算のための演算装置
US20040252829A1 (en) * 2003-04-25 2004-12-16 Hee-Kwan Son Montgomery modular multiplier and method thereof using carry save addition
US7266580B2 (en) * 2003-05-12 2007-09-04 International Business Machines Corporation Modular binary multiplier for signed and unsigned operands of variable widths
KR20050088506A (ko) * 2004-03-02 2005-09-07 삼성전자주식회사 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기
US7386580B2 (en) * 2004-03-18 2008-06-10 Arm Limited Data processing apparatus and method for computing an absolute difference between first and second data elements
GB2419787B (en) * 2004-10-28 2007-07-04 Hewlett Packard Development Co Method and apparatus for providing short-term private keys in public-key cryptographic systems

Also Published As

Publication number Publication date
EP1457875B1 (en) 2011-07-06
EP1457875A3 (en) 2006-06-28
CN1530824A (zh) 2004-09-22
CN100527072C (zh) 2009-08-12
KR100458031B1 (ko) 2004-11-26
JP2004280103A (ja) 2004-10-07
US20080065713A1 (en) 2008-03-13
EP1457875A2 (en) 2004-09-15
US20040179681A1 (en) 2004-09-16
KR20040081581A (ko) 2004-09-22
US7564971B2 (en) 2009-07-21
US8209369B2 (en) 2012-06-26

Similar Documents

Publication Publication Date Title
JP4554239B2 (ja) モンゴメリー類型のモジュラー乗算装置及び方法
US8504602B2 (en) Modular multiplication processing apparatus
US6397241B1 (en) Multiplier cell and method of computing
US7805478B2 (en) Montgomery modular multiplier
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
WO2000005645A1 (en) Circuit and method of modulo multiplication
US20070185948A1 (en) Method for modular multiplication
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
Großschädl A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m)
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
Morita A fast modular-multiplication algorithm based on a higher radix
US20090006509A1 (en) High-radix multiplier-divider
WO2000038047A1 (en) Circuit and method of cryptographic multiplication
US7113593B2 (en) Recursive cryptoaccelerator and recursive VHDL design of logic circuits
JP3904421B2 (ja) 剰余乗算演算装置
US10318245B2 (en) Device and method for determining an inverse of a value related to a modulus
US7403965B2 (en) Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
Ko et al. Montgomery multiplication in
KR100858559B1 (ko) 잉여 이진수의 덧셈 방법, 잉여 이진수의 곱셈 방법, 잉여이진수 덧셈기 및 잉여 이진수 곱셈기
Nedjah et al. Simulation model for hardware implementation of modular multiplication
KR20000008153A (ko) 모듈러 연산장치 및 그 방법
Poldre Cryptoprocessor PLD001
JP2005316038A (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびプログラム
Kakde et al. Performance analysis of Montgomery multiplier for public key cryptosystem
KR20070105415A (ko) 부호화를 이용하는 곱셈 장치 및 그 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061017

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070117

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070417

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070919

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070926

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100514

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100714

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

Free format text: PAYMENT UNTIL: 20130723

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4554239

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250