JP3726966B2 - 乗算器及び暗号回路 - Google Patents
乗算器及び暗号回路 Download PDFInfo
- Publication number
- JP3726966B2 JP3726966B2 JP2003015301A JP2003015301A JP3726966B2 JP 3726966 B2 JP3726966 B2 JP 3726966B2 JP 2003015301 A JP2003015301 A JP 2003015301A JP 2003015301 A JP2003015301 A JP 2003015301A JP 3726966 B2 JP3726966 B2 JP 3726966B2
- Authority
- JP
- Japan
- Prior art keywords
- carry
- multiplier
- multiplication
- addition
- adder
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/722—Modular multiplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5318—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、コンピュータのプロセッサなどに用いられる演算装置に関し、特に有限体演算を行う乗算装置に関する。
【0002】
【従来の技術】
今日、公開鍵暗号の方式としては、べき乗剰余演算(有限体GF(p)上の演算、なおGF(p)は整数を素数pで除算した余りの集合)を利用したRSA(Rivest Shamir Adleman)方式が主流となっている。公開鍵暗号では鍵長(ビット数)が長いほど安全性が向上するが、このRSA方式の暗号では実用上十分な安全性を得るために必要な鍵長が512ビットから、1024ビット、2048ビットと増加してきており、演算時間と回路実装におけるリソースの増大が問題となっている。これに対し、楕円暗号を用いた公開鍵暗号方式(以下、楕円暗号方式)では、160ビットや224ビットの演算で、1024ビットや2048ビットのRSA方式と同等の安全性を確保することが可能である。
【0003】
楕円暗号の基本演算は、RSA暗号と同じGF(p)をベースにした演算と、2の拡大体GF(2n)による演算の2つに大別される。GF(2n)の演算は、XOR(eXclusive OR排他的論理和)が基本であり、加算時に桁上がりを生じないため、整数の剰余演算によるGF(p)に対して高速である。しかしながら、GF(2n)上の楕円暗号方式においても、最も重要なアルゴリズムの1つである、楕円DSA(デジタル署名アルゴリズム)による署名をサポートするためにはGF(p)上の乗剰余演算も必要とされる(例えば、非特許文献1参照)。
【0004】
なお、乗剰余演算を高速に実行するアルゴリズムにモンゴメリ乗算がある(例えば、非特許文献2参照)。初期のアルゴリズムはGF(p)に対するものであり、加算器ベースのアルゴリズムであったが、今日では乗算器を使用したアルゴリズムやGF(2n)上の演算への拡張がなされている。
【0005】
【非特許文献1】
今井秀樹著、「符号理論」、電子情報通信学会、1990年
【非特許文献2】
Johann Groszschaedl, "A Bit-Serial United Multiplier Architecture for Finite Fields GF(p) and GF(2m)", C.K. Koc, D. Naccache, and C. Paar (Eds.): CHES 2001, LNCS 2162, p.202-219, 2001. Springer-Verlag Berlin Heidelberg 2001.
【非特許文献3】
I.F.Blake、N.P.Smart、G.Seroussi著、鈴木治郎訳、「楕円曲線暗号」、ピアソンエデュケーション、2001年
【非特許文献4】
江藤良純、金子敏信 監修、「誤り訂正符号とその応用」、オーム社、1996年
【0006】
【発明が解決しようとする課題】
上述したように、公開鍵暗号を楕円暗号にて実現する場合、GF(p)による演算とGF(2n)による演算とを行うことが必要となる。したがって、暗号回路においては、GF(p)の演算を行う乗算器とGF(2n)の演算を行う乗算器とが必要となる。
ここで、8ビット程度の乗算器を用いる回路であれば、GF(p)の演算を行う乗算器とGF(2n)の演算を行う乗算器との両方を載せて、セレクタで切り替える構成としても回路規模に与える影響は小さい。しかし、高速化のために32ビットや64ビットの乗算器を使用する場合、乗算器のゲート数が増加するビット数の自乗のオーダーで増加し、またセレクタや配線も増大するため、GF(p)の演算を行う乗算器とGF(2n)の演算を行う乗算器とを両方搭載するとすれば、回路規模の増大が無視できない。
したがって、公開鍵暗号で扱われる160ビットや1024ビットといった数の演算を行う暗号回路の場合、暗号回路を搭載する機器や暗号回路自体の小型化を図るには、GF(p)の演算を行う乗算器とGF(2n)の演算を行う乗算器とを個別に搭載することは好ましくない。
【0007】
ところで、モンゴメリ乗算や楕円演算においては、GF(p)上の演算とGF(2n)上の演算とのアルゴリズムはほとんど同じである。そのため、回路化した場合のデータパスも、乗算コア自体を除けばほとんどそのまま共有することが可能である。上記の非特許文献2には、GF(p)上の演算とGF(2n)上の演算とに共用可能な乗算器が開示されている。
しかし、かかる従来の乗算器は、加算器をビット数分繰り返して使用し積を計算するシリアル乗算器であり、単にGF(2n)の演算時にキャリー(carry:桁上がり)をゲートして無視(Disable)するものである。シリアル乗算器で整数乗算を行うためには、毎サイクル毎に、キャリーを最下位ビット(LSB:Least Significant Bit)から最上位ビット(MSB:Most Significant Bit)まで伝播させるか、冗長2進数のまま途中結果をビット数の2倍のレジスタに保存する必要がある。そのため、演算の高速化が困難であり、高速化するためには回路規模を大幅に増大しなければならない。
【0008】
また上述したように、公開鍵暗号では160ビットや1024ビットといった数が扱われ、その暗号回路では高速化のために非常に長い加算器が用いられる。そのため、データを高速に転送するためには、バス幅を加算器のビット長まで広げる必要があるため、物理的なチップサイズの増大を招来する。また、入力が1024ビット×2、出力が1024ビットのバスともなると、汎用のASIC用ライブラリによる自動論理合成および配置配線では実装することができず、人手によるカスタムレイアウトという繁雑な作業を要することもある。一方、バス幅を広げないとすれば、処理の実行時に演算対象のデータがそろうまで加算器を待たせる制御を行わなくてはならず、実行性能の低下を招く。
【0009】
以上、公開鍵暗号における暗号回路に用いられる乗算回路について論じたが、暗号に限らず、GF(p)上の演算とGF(2n)上の演算とが要求される、符号理論を応用した種々のアプリケーションに関しても同様のことが言える。符号理論を応用した他のアプリケーションの例としては、誤り訂正符号による誤り訂正回路がある(例えば、非特許文献3、4参照)。
【0010】
そこで本発明は、回路規模を増大することなく、通常の整数乗算器およびGF(2n)上の乗算器として使用することが可能なパラレル乗算回路を提供することを目的とする。
また本発明は、GF(p)及びGF(2n)の2つの演算を要する楕円暗号やRSA方式を初めとする乗剰余系の公開鍵暗号を1つのアクセラレータコアで実現する暗号回路を提供することを他の目的とする。
【0011】
【課題を解決するための手段】
上記の目的を達成する本発明は、次のように構成された乗算器として実現される。すなわち、この乗算器は、乗算対象である2つの入力値に対して部分積を求め、この当該部分積を冗長2進形式で加え合わせるワラスツリー部と、このワラスツリー部から出力される冗長2進数を2の補数形式に変換する桁上げ加算器とを備え、ワラスツリー部は、部分積の値を桁ごとに加算する合計値計算部と、この合計値計算部による加算における桁上がり値を加算する桁上がり値計算部とを備えることを特徴とする。
かかる乗算器において、2の拡大体(有限体GF(2n))に対する乗算を行う場合には、合計値計算部の計算結果のうち桁上がりを除く各桁の加算結果を当該乗算の結果として出力することができる。また、桁上げ加算器は、合計値計算部の計算結果と桁上がり値計算部の計算結果とを加算し、整数に対する乗算を行う場合には、この桁上げ加算器の計算結果を当該乗算の結果として出力することができる。
【0012】
また、本発明は、乗算対象である2つの入力値に対して部分積を求め、半加算器及び全加算器を用いて部分積を加算し、入力値の乗算を行う、次のように構成された乗算器としても実現される。すなわち、この乗算器は、部分積における合計値を各桁別に計算し、入力値が2の拡大体である場合に乗算結果として出力する乗算手段と、この乗算手段の計算において生じる桁上がり値を加算する桁上がり値加算手段と、乗算手段の計算結果と桁上がり値加算手段の計算結果とを加算し、入力値が整数である場合に乗算結果として出力する加算手段とを備えることを特徴とする。
この乗算器において、乗算手段は、前記半加算器及び全加算器から出力されるXOR演算による加算項のみを集めて外部へ出力する。また桁上がり値加算手段は、乗算手段にて加算される加算項以外の全ての項を集めて半加算器及び全加算器により桁上がり項と加算項とを含めた加算を行う。
【0013】
さらに本発明は、これらの乗算器を演算手段として搭載した種々の回路(アプリケーション)としても実現される。典型的な例としては、暗号回路における暗号化または復号化処理のための演算を行う演算器として搭載することができる。
【0014】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
本実施の形態は、パラレル乗算器において、GF(p)上の演算とGF(2n)上の演算とを実現する。GF(p)上の乗算(整数乗算)を行うパラレル乗算器は、部分積(各桁の数ごとの積)をキャリーセーブ形式(冗長2進形式)で加え合わせていくワラスツリー(Wallace tree)部と、ワラスツリー出力の冗長2進数を2の補数形式に変換する桁上げ加算器とによって構成される。
【0015】
乗算器へのnビットの2入力をA=(an-1,・・・,a1,a0)、B=(bn-1,・・・,b1,b0)とするとき、ワラスツリー部ではビットごとの部分積を半加算器(HA)と全加算器(FA)とによって加え合わせていく。
図1は共に8ビットの入力A、Bを例とした乗算のイメージを示す図、図2は図1の乗算において部分積を計算するための回路構成を示す図、図3は図2の回路で計算された部分積を加え合わせるための回路構成を示す図である。
図2に示す回路によって、n2個の部分積aibj(i,j=0,1,2,3,4,5,6,7)がそれぞれ算出され、図3に示す回路の対応する桁の全加算器または半加算器へ送られる。そして、図3に示す回路の出力(d0,d1,〜,d15)が、桁上げ加算器を経て乗算結果として出力される。
【0016】
図4は半加算器の構成を示す図、図5は全加算器の構成を示す図である。
半加算器は、次の数1式のように2ビットの入力に対してcarry(桁上がり値)とsum(合計値)の2ビットを計算する。
【数1】
また、全加算器は、数2式のように3入力に対してcarryとsumの2ビットを計算する。
【数2】
上の各式において、「・」、「+」は、それぞれAND(論理積)、OR(論理和)を意味している。また「○」に「+」の演算記号はXOR(排他的論理和)を意味している。
【0017】
上記のような整数乗算回路に対して、GF(2n)上の乗算を行うパラレル乗算器は、carryは発生せず、ワラスツリー部において、部分積を桁ごとに全てXORするだけである。すなわち、図1と同様の8ビットの入力A、Bに対する演算を行う乗算回路において、ワラスツリー部は、部分積を計算する図2と同様の回路と、得られた部分積を桁ごとにXOR演算する回路とを備える。また、GF(2n)上の乗算ではcarryが発生しないため、ワラスツリー部による部分積のXOR演算の結果が直ちに乗算結果であり、桁上げ加算器による変換を必要としない。
図6は、図2の回路で計算された部分積をXOR演算するための回路構成を示す図である。
【0018】
以上の点に鑑み、本実施の形態による乗算器は、上の数1、2式におけるsumHA()及びsumFA()のXORを用いて、この部分にGF(2n)の乗算器を埋め込む構成とする。
図7は、本実施の形態による乗算器の構成を示す図である。
図7を参照すると、本実施の形態による乗算器100はワラスツリー部110と桁上げ加算器120とを備え、ワラスツリー部110は、入力値に対して桁ごとに合計値(sum)と桁上がり値(carry)とを計算するsum計算部111と、sum計算部111の計算による桁上がり値を加算するcarry計算部112と、sum計算部111及びcarry計算部112の計算結果を加算して桁上げ加算器120に渡すHA/FAアレイ113とを備える。sum計算部111は、部分積の加算において半加算器及び全加算器から出力されるXOR演算による加算項だけを集めて出力するものである。また、carry計算部112は、sum計算部111にて加算される加算項以外の全ての項を集めて半加算器及び全加算器により桁上がり項と加算項とを含めた加算を行うものである。桁上げ加算器120は、HA/FAアレイ113の出力を補数形式に変換して出力するもので、通常のパラレル乗算器における桁上げ加算器と同様である。
【0019】
すなわち、本実施の形態の乗算器100は、まず通常の整数乗算器と同様に、半加算器と全加算器とのアレイ(HA/FA array)からなるsum計算部111によりcarryとsumとを生成する。そして、通常の整数乗算器のワラスツリー部では、同じ桁にあるcarryとsumとは区別せずに順次加算するのに対し、本実施の形態の乗算器100におけるワラスツリー部110では、carry計算部112とsum計算部111とを用いて、carryとsumとを別のツリーで加算していく。
sum計算部111にてsumだけを加算(つまりXOR)していくことにより、2n−1ビットのGF(2n)の乗算結果が得られる。最も深いパスでは、nビットの部分積を1ビットにXOR加算される。全加算器は3ビット入力に対して1ビットのsumを出力するので、sum計算部111全体の遅延は、FA換算で
【数3】
段となる。
【0020】
一方、carry計算部112の回路構成は、様々な組み方が可能であるが、3ビット入力に対して全加算器は2ビットのcarryとsumとを出力するので、最大遅延はFA換算で凡そ
【数4】
段となる。
【0021】
図7を参照して明らかなように、本実施の形態による乗算器100は、GF(p)の乗算器の内部にGF(2n)の乗算器に相当するsum計算部111が埋め込まれた構成となっている。したがって、GF(2n)の乗算を行う場合は、図7に示すように、sum計算部111の計算結果をそのまま出力すれば良い。
上述したsum計算部111の遅延とcarry計算部112の遅延とから、sum計算部111の計算に要する時間の方が圧倒的に短い。そのため、図7に示すようにsum計算部111(GF(2n)の乗算器に相当する部分)を分離したことによりcarry計算部112が処理を待たされることはない。また、sum計算部111は、もともと整数乗算器に含まれていたXOR項を集めたものであるので、乗算器100全体を構成する回路が増加することもない。
すなわち、本実施の形態による乗算器100は、処理速度を低下させることなく、かつ回路規模を増大することなく、GF(p)の乗算およびGF(2n)の乗算が可能となっている。
【0022】
図8は、図1に示した8ビット×8ビットの乗算を行う本実施の形態の乗算器100におけるワラスツリー部110の構成例を示す図である。なお、図8では、半加算器を「H」と記述したブロック、全加算器を「F」と記述したブロックで表現しているが、これは図4、5にしたがっている。
図8に示すワラスツリー部110は、5つのステージからなる。また図8において、三角印(△)の入力は部分積、白丸印(○)の入出力はGF(p)及びGF(2n)の演算における合計値(sum、以下、第1sumと称す)、黒丸印(●)の入出力はGF(p)の演算のみにおける合計値(sum、以下、第2sumと称す)、四角印(■)の入出力はGF(p)の演算における桁上がり値(carry)を意味する。なお、図8に示すワラスツリー部110の構成は、説明の簡単のため、多少の無駄を含んで表現されている。
【0023】
したがって、第1ステージでは各桁の部分積が入力され、carryと第1sumとが出力される。
また、第2ステージでは第1ステージで得られたcarryが加算されて第2sumが出力されると共に、第1ステージで得られた第1sumが加算されてcarryと第1sumとが出力される。ここで、第1ステージと第2ステージにおける第1sumを加算する段とが、図7に示したワラスツリー部110のsum計算部111に対応している。すなわち、この第2ステージで出力される第1sumが、GF(2n)の乗算結果である。
【0024】
また、第3ステージでは第2ステージで得られたcarry及び第2sumが加算されて、加算結果のcarry及び第2sumが出力される。そして、第2ステージで得られた第1sumが通過している。この第3ステージにおけるcarry及び第2sumを加算する段が、図7に示したワラスツリー部110のcarry計算部112に対応している。
第4ステージでは、第3ステージで得られたcarry及び第2sumと、第2ステージで得られ第3ステージを通過した第1sumとが加算され、加算結果のcarry及び第2sumが出力される。また、下位のいくつかの桁では第1sumあるいは第2sumが加算されずに通過している。この第4ステージが、図7に示したワラスツリー部110のHA/FAアレイ113に対応している。
第5ステージでは、第4ステージで得られたcarry及び第2sumと、第4ステージを通過した第1sum及び第2sumとが加算されて、加算結果である第2sumが出力される。この第5ステージが、図7に示した桁上げ加算器120に対応している。すなわち、この第5ステージで出力される第2sumが、GF(p)の乗算結果である。
【0025】
次の数5式は、任意のnビット乗算において、本実施の形態の乗算器100における第1ステージの部分を表現したものである。
【数5】
【0026】
なお、上記のように構成された本実施の形態の乗算器100は、演算対象である入力A(an-1,・・・,a1,a0)、B(bn-1,・・・,b1,b0)の部分積aibj以外に別の加算項を1つあるいは複数組み込んで、ワラスツリー部110を構成することが容易である。したがって、例えば入力A、Bの乗算に入力Cを加算する積和演算機能も簡単に実現することができる。
図9は、図1に示した8ビットの入力A、Bの乗算に、同じく8ビットの入力Cを対応する桁ごとに加算する積和演算のイメージを示す図である。また図10は、図9に示した8ビットの積和演算を行う本実施の形態の乗算器におけるワラスツリー部110の構成例を示す図である。図10における半加算器および全加算器の表現は図8の場合と同様である。
図10のワラスツリー部110と図8のワラスツリー部110とを比較すると、A×Bにおける下位8桁の部分積に入力C=(c7,c6,・・・,c0)を加算するための加算器が追加されているものの、各ステージでの処理の内容は同様であることが分かる。
【0027】
以上説明した本実施の形態の乗算器100は、1つの乗算器100でGF(p)及びGF(2n)の2つの演算を行うことができるため、乗算器100を組み込む回路では、回路規模を増大することなく、これらの演算を実装することが可能である。
また本実施の形態の乗算器100は、nビット×nビットのパラレル乗算器であるため、例えばn=32ビットバスとした場合、1024ビット加算器によるシリアル乗算器と同程度の処理を、より高速に行うことが可能である(32×32=1024)。したがって、演算対象であるデータのサイズ(データビット長)の変化に対して柔軟性及び回路量当たりの処理能力が非常に高い。
【0028】
さらに本実施の形態の乗算器100は、GF(p)及びGF(2n)の2つの演算を1つの乗算器100で行うことが可能であるため、符号理論を応用した種々のアプリケーションにて使用可能である。最も典型的な例としては、楕円暗号方式による公開鍵暗号を実現する暗号回路の演算器として用いられる。
図11は、本実施の形態による乗算器100を組み込んだ公開鍵暗号回路の構成例を示す図である。
図11に示す暗号回路は、データの暗号化または復号化の処理(以下、暗号処理)における制御手段としてのデータ長カウンタ210、暗号制御回路220、鍵シフトレジスタ221、アドレスレジスタ230及びメモリ制御回路240と、処理対象であるデータを保持する保持手段としてのメモリ251、252と、暗号処理の実行手段である積和演算器260とを備える。
【0029】
この暗号回路では、データ長カウンタ210にて指定されるデータサイズで、暗号制御回路220及び鍵シフトレジスタ221により、データの暗号化または復号化に用いられるパラメータ(鍵等)が設定される。そして、アドレスレジスタ230及びメモリ制御回路240の制御により、メモリ251、252に保持されている入力データ及び暗号制御回路220にて設定されたパラメータが積和演算器260に渡される。積和演算器260は、当該入力データの暗号化または復号化のための演算処理を行う。この積和演算器260として、本実施の形態の乗算器100を用いることができる。
【0030】
この暗号回路において、積和演算器260は、暗号処理において、GF(p)上の演算とGF(2n)上の演算とを実行するものとする。例えば、楕円暗号方式においてDSA署名をサポートする場合や、楕円暗号方式とRSA方式を併用する場合などである。
RSA方式の暗号処理における演算や楕円暗号方式のDSA署名ではGF(p)上の演算を要するので、積和演算器260を構成する乗算器100の桁上げ加算器120の出力が演算結果として出力される。
一方、楕円暗号方式の暗号処理における演算ではGF(2n)上の演算を要するので、積和演算器260を構成する乗算器100のsum計算部111の出力が演算結果として出力される。
【0031】
また、本実施の形態の乗算器100を使用可能な他のアプリケーションとして、誤り訂正回路がある。
図12は、本実施の形態による乗算器100を組み込んだ誤り訂正回路の構成例を示す図である。
図12に示す誤り訂正回路は、シンドローム計算部310と、多項式生成部320と、誤り位置評価部330と、誤り値評価部340と、誤り訂正部350とを備える。ここで、シンドローム計算部310は、データの誤りパターンに応じたシンドロームを生成する。また、データの消失があった場合はその位置を決定する。多項式生成部320は、シンドロームとデータ消失位置の情報から、誤り位置を求める多項式(誤り位置多項式)と誤りのパターンを求めるための多項式(誤り値多項式)とを生成する。誤り位置評価部330は、多項式生成部320にて生成された誤り位置多項式に基づいて誤り位置を計算する。誤り値評価部340は、誤り位置評価部330で求めた誤り位置と多項式生成部320にて生成された誤り値多項式とに基づいて誤り値を計算する。誤り訂正部350は、誤り位置評価部330で求めた誤り位置に対応するデータに、誤り値評価部340で求めた誤り値を排他的論理和することによって、誤りを訂正する。
【0032】
この誤り訂正回路において、シンドローム計算部310、多項式生成部320、誤り位置評価部330及び誤り値評価部340を構成する積和演算回路311、321、322、331、341、342及び除算回路343として、本実施の形態の乗算器100を用いることができる。そして、GF(2n)上の演算結果が乗算器100のsum計算部111から出力される。
【0033】
【発明の効果】
以上説明したように、本発明によれば、回路規模を増大することなく、通常の整数乗算器およびGF(2n)上の乗算器として使用することが可能な乗算回路を提供することができる。
【0034】
また、本発明による乗算回路は、符号理論を応用した種々のアプリケーションにて使用可能であり、この乗算回路を実装することにより、例えば、GF(p)及びGF(2n)の2つの演算を要する楕円暗号やRSA方式を初めとする乗剰余系の公開鍵暗号を1つのアクセラレータコアで実現する暗号回路を提供することができる。
【図面の簡単な説明】
【図1】 8ビットの入力を例とした乗算のイメージを示す図である。
【図2】 図1の乗算において部分積を計算するための回路構成を示す図である。
【図3】 図2の回路で計算された部分積を加え合わせるための回路構成を示す図である。
【図4】 半加算器の構成を示す図である。
【図5】 全加算器の構成を示す図である。
【図6】 図2の回路で計算された部分積をXOR演算するための回路構成を示す図である。
【図7】 本実施の形態による乗算器の構成を示す図である。
【図8】 図1に示した8ビット×8ビットの乗算を行う本実施の形態の乗算器におけるワラスツリー部の構成例を示す図である。
【図9】 図1に示した8ビットの乗算に、他の8ビットの入力を加算する積和演算のイメージを示す図である。
【図10】 図9に示した8ビットの積和演算を行う本実施の形態の乗算器におけるワラスツリー部の構成例を示す図である。
【図11】 本実施の形態による乗算器を組み込んだ暗号回路の構成例を示す図である。
【図12】 本実施の形態による乗算器を組み込んだ誤り訂正回路の構成例を示す図である。
【符号の説明】
100…乗算器、110…ワラスツリー部、111…sum計算部、112…carry計算部、113…HA/FAアレイ、120…桁上げ加算器
【発明の属する技術分野】
本発明は、コンピュータのプロセッサなどに用いられる演算装置に関し、特に有限体演算を行う乗算装置に関する。
【0002】
【従来の技術】
今日、公開鍵暗号の方式としては、べき乗剰余演算(有限体GF(p)上の演算、なおGF(p)は整数を素数pで除算した余りの集合)を利用したRSA(Rivest Shamir Adleman)方式が主流となっている。公開鍵暗号では鍵長(ビット数)が長いほど安全性が向上するが、このRSA方式の暗号では実用上十分な安全性を得るために必要な鍵長が512ビットから、1024ビット、2048ビットと増加してきており、演算時間と回路実装におけるリソースの増大が問題となっている。これに対し、楕円暗号を用いた公開鍵暗号方式(以下、楕円暗号方式)では、160ビットや224ビットの演算で、1024ビットや2048ビットのRSA方式と同等の安全性を確保することが可能である。
【0003】
楕円暗号の基本演算は、RSA暗号と同じGF(p)をベースにした演算と、2の拡大体GF(2n)による演算の2つに大別される。GF(2n)の演算は、XOR(eXclusive OR排他的論理和)が基本であり、加算時に桁上がりを生じないため、整数の剰余演算によるGF(p)に対して高速である。しかしながら、GF(2n)上の楕円暗号方式においても、最も重要なアルゴリズムの1つである、楕円DSA(デジタル署名アルゴリズム)による署名をサポートするためにはGF(p)上の乗剰余演算も必要とされる(例えば、非特許文献1参照)。
【0004】
なお、乗剰余演算を高速に実行するアルゴリズムにモンゴメリ乗算がある(例えば、非特許文献2参照)。初期のアルゴリズムはGF(p)に対するものであり、加算器ベースのアルゴリズムであったが、今日では乗算器を使用したアルゴリズムやGF(2n)上の演算への拡張がなされている。
【0005】
【非特許文献1】
今井秀樹著、「符号理論」、電子情報通信学会、1990年
【非特許文献2】
Johann Groszschaedl, "A Bit-Serial United Multiplier Architecture for Finite Fields GF(p) and GF(2m)", C.K. Koc, D. Naccache, and C. Paar (Eds.): CHES 2001, LNCS 2162, p.202-219, 2001. Springer-Verlag Berlin Heidelberg 2001.
【非特許文献3】
I.F.Blake、N.P.Smart、G.Seroussi著、鈴木治郎訳、「楕円曲線暗号」、ピアソンエデュケーション、2001年
【非特許文献4】
江藤良純、金子敏信 監修、「誤り訂正符号とその応用」、オーム社、1996年
【0006】
【発明が解決しようとする課題】
上述したように、公開鍵暗号を楕円暗号にて実現する場合、GF(p)による演算とGF(2n)による演算とを行うことが必要となる。したがって、暗号回路においては、GF(p)の演算を行う乗算器とGF(2n)の演算を行う乗算器とが必要となる。
ここで、8ビット程度の乗算器を用いる回路であれば、GF(p)の演算を行う乗算器とGF(2n)の演算を行う乗算器との両方を載せて、セレクタで切り替える構成としても回路規模に与える影響は小さい。しかし、高速化のために32ビットや64ビットの乗算器を使用する場合、乗算器のゲート数が増加するビット数の自乗のオーダーで増加し、またセレクタや配線も増大するため、GF(p)の演算を行う乗算器とGF(2n)の演算を行う乗算器とを両方搭載するとすれば、回路規模の増大が無視できない。
したがって、公開鍵暗号で扱われる160ビットや1024ビットといった数の演算を行う暗号回路の場合、暗号回路を搭載する機器や暗号回路自体の小型化を図るには、GF(p)の演算を行う乗算器とGF(2n)の演算を行う乗算器とを個別に搭載することは好ましくない。
【0007】
ところで、モンゴメリ乗算や楕円演算においては、GF(p)上の演算とGF(2n)上の演算とのアルゴリズムはほとんど同じである。そのため、回路化した場合のデータパスも、乗算コア自体を除けばほとんどそのまま共有することが可能である。上記の非特許文献2には、GF(p)上の演算とGF(2n)上の演算とに共用可能な乗算器が開示されている。
しかし、かかる従来の乗算器は、加算器をビット数分繰り返して使用し積を計算するシリアル乗算器であり、単にGF(2n)の演算時にキャリー(carry:桁上がり)をゲートして無視(Disable)するものである。シリアル乗算器で整数乗算を行うためには、毎サイクル毎に、キャリーを最下位ビット(LSB:Least Significant Bit)から最上位ビット(MSB:Most Significant Bit)まで伝播させるか、冗長2進数のまま途中結果をビット数の2倍のレジスタに保存する必要がある。そのため、演算の高速化が困難であり、高速化するためには回路規模を大幅に増大しなければならない。
【0008】
また上述したように、公開鍵暗号では160ビットや1024ビットといった数が扱われ、その暗号回路では高速化のために非常に長い加算器が用いられる。そのため、データを高速に転送するためには、バス幅を加算器のビット長まで広げる必要があるため、物理的なチップサイズの増大を招来する。また、入力が1024ビット×2、出力が1024ビットのバスともなると、汎用のASIC用ライブラリによる自動論理合成および配置配線では実装することができず、人手によるカスタムレイアウトという繁雑な作業を要することもある。一方、バス幅を広げないとすれば、処理の実行時に演算対象のデータがそろうまで加算器を待たせる制御を行わなくてはならず、実行性能の低下を招く。
【0009】
以上、公開鍵暗号における暗号回路に用いられる乗算回路について論じたが、暗号に限らず、GF(p)上の演算とGF(2n)上の演算とが要求される、符号理論を応用した種々のアプリケーションに関しても同様のことが言える。符号理論を応用した他のアプリケーションの例としては、誤り訂正符号による誤り訂正回路がある(例えば、非特許文献3、4参照)。
【0010】
そこで本発明は、回路規模を増大することなく、通常の整数乗算器およびGF(2n)上の乗算器として使用することが可能なパラレル乗算回路を提供することを目的とする。
また本発明は、GF(p)及びGF(2n)の2つの演算を要する楕円暗号やRSA方式を初めとする乗剰余系の公開鍵暗号を1つのアクセラレータコアで実現する暗号回路を提供することを他の目的とする。
【0011】
【課題を解決するための手段】
上記の目的を達成する本発明は、次のように構成された乗算器として実現される。すなわち、この乗算器は、乗算対象である2つの入力値に対して部分積を求め、この当該部分積を冗長2進形式で加え合わせるワラスツリー部と、このワラスツリー部から出力される冗長2進数を2の補数形式に変換する桁上げ加算器とを備え、ワラスツリー部は、部分積の値を桁ごとに加算する合計値計算部と、この合計値計算部による加算における桁上がり値を加算する桁上がり値計算部とを備えることを特徴とする。
かかる乗算器において、2の拡大体(有限体GF(2n))に対する乗算を行う場合には、合計値計算部の計算結果のうち桁上がりを除く各桁の加算結果を当該乗算の結果として出力することができる。また、桁上げ加算器は、合計値計算部の計算結果と桁上がり値計算部の計算結果とを加算し、整数に対する乗算を行う場合には、この桁上げ加算器の計算結果を当該乗算の結果として出力することができる。
【0012】
また、本発明は、乗算対象である2つの入力値に対して部分積を求め、半加算器及び全加算器を用いて部分積を加算し、入力値の乗算を行う、次のように構成された乗算器としても実現される。すなわち、この乗算器は、部分積における合計値を各桁別に計算し、入力値が2の拡大体である場合に乗算結果として出力する乗算手段と、この乗算手段の計算において生じる桁上がり値を加算する桁上がり値加算手段と、乗算手段の計算結果と桁上がり値加算手段の計算結果とを加算し、入力値が整数である場合に乗算結果として出力する加算手段とを備えることを特徴とする。
この乗算器において、乗算手段は、前記半加算器及び全加算器から出力されるXOR演算による加算項のみを集めて外部へ出力する。また桁上がり値加算手段は、乗算手段にて加算される加算項以外の全ての項を集めて半加算器及び全加算器により桁上がり項と加算項とを含めた加算を行う。
【0013】
さらに本発明は、これらの乗算器を演算手段として搭載した種々の回路(アプリケーション)としても実現される。典型的な例としては、暗号回路における暗号化または復号化処理のための演算を行う演算器として搭載することができる。
【0014】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
本実施の形態は、パラレル乗算器において、GF(p)上の演算とGF(2n)上の演算とを実現する。GF(p)上の乗算(整数乗算)を行うパラレル乗算器は、部分積(各桁の数ごとの積)をキャリーセーブ形式(冗長2進形式)で加え合わせていくワラスツリー(Wallace tree)部と、ワラスツリー出力の冗長2進数を2の補数形式に変換する桁上げ加算器とによって構成される。
【0015】
乗算器へのnビットの2入力をA=(an-1,・・・,a1,a0)、B=(bn-1,・・・,b1,b0)とするとき、ワラスツリー部ではビットごとの部分積を半加算器(HA)と全加算器(FA)とによって加え合わせていく。
図1は共に8ビットの入力A、Bを例とした乗算のイメージを示す図、図2は図1の乗算において部分積を計算するための回路構成を示す図、図3は図2の回路で計算された部分積を加え合わせるための回路構成を示す図である。
図2に示す回路によって、n2個の部分積aibj(i,j=0,1,2,3,4,5,6,7)がそれぞれ算出され、図3に示す回路の対応する桁の全加算器または半加算器へ送られる。そして、図3に示す回路の出力(d0,d1,〜,d15)が、桁上げ加算器を経て乗算結果として出力される。
【0016】
図4は半加算器の構成を示す図、図5は全加算器の構成を示す図である。
半加算器は、次の数1式のように2ビットの入力に対してcarry(桁上がり値)とsum(合計値)の2ビットを計算する。
【数1】
また、全加算器は、数2式のように3入力に対してcarryとsumの2ビットを計算する。
【数2】
上の各式において、「・」、「+」は、それぞれAND(論理積)、OR(論理和)を意味している。また「○」に「+」の演算記号はXOR(排他的論理和)を意味している。
【0017】
上記のような整数乗算回路に対して、GF(2n)上の乗算を行うパラレル乗算器は、carryは発生せず、ワラスツリー部において、部分積を桁ごとに全てXORするだけである。すなわち、図1と同様の8ビットの入力A、Bに対する演算を行う乗算回路において、ワラスツリー部は、部分積を計算する図2と同様の回路と、得られた部分積を桁ごとにXOR演算する回路とを備える。また、GF(2n)上の乗算ではcarryが発生しないため、ワラスツリー部による部分積のXOR演算の結果が直ちに乗算結果であり、桁上げ加算器による変換を必要としない。
図6は、図2の回路で計算された部分積をXOR演算するための回路構成を示す図である。
【0018】
以上の点に鑑み、本実施の形態による乗算器は、上の数1、2式におけるsumHA()及びsumFA()のXORを用いて、この部分にGF(2n)の乗算器を埋め込む構成とする。
図7は、本実施の形態による乗算器の構成を示す図である。
図7を参照すると、本実施の形態による乗算器100はワラスツリー部110と桁上げ加算器120とを備え、ワラスツリー部110は、入力値に対して桁ごとに合計値(sum)と桁上がり値(carry)とを計算するsum計算部111と、sum計算部111の計算による桁上がり値を加算するcarry計算部112と、sum計算部111及びcarry計算部112の計算結果を加算して桁上げ加算器120に渡すHA/FAアレイ113とを備える。sum計算部111は、部分積の加算において半加算器及び全加算器から出力されるXOR演算による加算項だけを集めて出力するものである。また、carry計算部112は、sum計算部111にて加算される加算項以外の全ての項を集めて半加算器及び全加算器により桁上がり項と加算項とを含めた加算を行うものである。桁上げ加算器120は、HA/FAアレイ113の出力を補数形式に変換して出力するもので、通常のパラレル乗算器における桁上げ加算器と同様である。
【0019】
すなわち、本実施の形態の乗算器100は、まず通常の整数乗算器と同様に、半加算器と全加算器とのアレイ(HA/FA array)からなるsum計算部111によりcarryとsumとを生成する。そして、通常の整数乗算器のワラスツリー部では、同じ桁にあるcarryとsumとは区別せずに順次加算するのに対し、本実施の形態の乗算器100におけるワラスツリー部110では、carry計算部112とsum計算部111とを用いて、carryとsumとを別のツリーで加算していく。
sum計算部111にてsumだけを加算(つまりXOR)していくことにより、2n−1ビットのGF(2n)の乗算結果が得られる。最も深いパスでは、nビットの部分積を1ビットにXOR加算される。全加算器は3ビット入力に対して1ビットのsumを出力するので、sum計算部111全体の遅延は、FA換算で
【数3】
段となる。
【0020】
一方、carry計算部112の回路構成は、様々な組み方が可能であるが、3ビット入力に対して全加算器は2ビットのcarryとsumとを出力するので、最大遅延はFA換算で凡そ
【数4】
段となる。
【0021】
図7を参照して明らかなように、本実施の形態による乗算器100は、GF(p)の乗算器の内部にGF(2n)の乗算器に相当するsum計算部111が埋め込まれた構成となっている。したがって、GF(2n)の乗算を行う場合は、図7に示すように、sum計算部111の計算結果をそのまま出力すれば良い。
上述したsum計算部111の遅延とcarry計算部112の遅延とから、sum計算部111の計算に要する時間の方が圧倒的に短い。そのため、図7に示すようにsum計算部111(GF(2n)の乗算器に相当する部分)を分離したことによりcarry計算部112が処理を待たされることはない。また、sum計算部111は、もともと整数乗算器に含まれていたXOR項を集めたものであるので、乗算器100全体を構成する回路が増加することもない。
すなわち、本実施の形態による乗算器100は、処理速度を低下させることなく、かつ回路規模を増大することなく、GF(p)の乗算およびGF(2n)の乗算が可能となっている。
【0022】
図8は、図1に示した8ビット×8ビットの乗算を行う本実施の形態の乗算器100におけるワラスツリー部110の構成例を示す図である。なお、図8では、半加算器を「H」と記述したブロック、全加算器を「F」と記述したブロックで表現しているが、これは図4、5にしたがっている。
図8に示すワラスツリー部110は、5つのステージからなる。また図8において、三角印(△)の入力は部分積、白丸印(○)の入出力はGF(p)及びGF(2n)の演算における合計値(sum、以下、第1sumと称す)、黒丸印(●)の入出力はGF(p)の演算のみにおける合計値(sum、以下、第2sumと称す)、四角印(■)の入出力はGF(p)の演算における桁上がり値(carry)を意味する。なお、図8に示すワラスツリー部110の構成は、説明の簡単のため、多少の無駄を含んで表現されている。
【0023】
したがって、第1ステージでは各桁の部分積が入力され、carryと第1sumとが出力される。
また、第2ステージでは第1ステージで得られたcarryが加算されて第2sumが出力されると共に、第1ステージで得られた第1sumが加算されてcarryと第1sumとが出力される。ここで、第1ステージと第2ステージにおける第1sumを加算する段とが、図7に示したワラスツリー部110のsum計算部111に対応している。すなわち、この第2ステージで出力される第1sumが、GF(2n)の乗算結果である。
【0024】
また、第3ステージでは第2ステージで得られたcarry及び第2sumが加算されて、加算結果のcarry及び第2sumが出力される。そして、第2ステージで得られた第1sumが通過している。この第3ステージにおけるcarry及び第2sumを加算する段が、図7に示したワラスツリー部110のcarry計算部112に対応している。
第4ステージでは、第3ステージで得られたcarry及び第2sumと、第2ステージで得られ第3ステージを通過した第1sumとが加算され、加算結果のcarry及び第2sumが出力される。また、下位のいくつかの桁では第1sumあるいは第2sumが加算されずに通過している。この第4ステージが、図7に示したワラスツリー部110のHA/FAアレイ113に対応している。
第5ステージでは、第4ステージで得られたcarry及び第2sumと、第4ステージを通過した第1sum及び第2sumとが加算されて、加算結果である第2sumが出力される。この第5ステージが、図7に示した桁上げ加算器120に対応している。すなわち、この第5ステージで出力される第2sumが、GF(p)の乗算結果である。
【0025】
次の数5式は、任意のnビット乗算において、本実施の形態の乗算器100における第1ステージの部分を表現したものである。
【数5】
【0026】
なお、上記のように構成された本実施の形態の乗算器100は、演算対象である入力A(an-1,・・・,a1,a0)、B(bn-1,・・・,b1,b0)の部分積aibj以外に別の加算項を1つあるいは複数組み込んで、ワラスツリー部110を構成することが容易である。したがって、例えば入力A、Bの乗算に入力Cを加算する積和演算機能も簡単に実現することができる。
図9は、図1に示した8ビットの入力A、Bの乗算に、同じく8ビットの入力Cを対応する桁ごとに加算する積和演算のイメージを示す図である。また図10は、図9に示した8ビットの積和演算を行う本実施の形態の乗算器におけるワラスツリー部110の構成例を示す図である。図10における半加算器および全加算器の表現は図8の場合と同様である。
図10のワラスツリー部110と図8のワラスツリー部110とを比較すると、A×Bにおける下位8桁の部分積に入力C=(c7,c6,・・・,c0)を加算するための加算器が追加されているものの、各ステージでの処理の内容は同様であることが分かる。
【0027】
以上説明した本実施の形態の乗算器100は、1つの乗算器100でGF(p)及びGF(2n)の2つの演算を行うことができるため、乗算器100を組み込む回路では、回路規模を増大することなく、これらの演算を実装することが可能である。
また本実施の形態の乗算器100は、nビット×nビットのパラレル乗算器であるため、例えばn=32ビットバスとした場合、1024ビット加算器によるシリアル乗算器と同程度の処理を、より高速に行うことが可能である(32×32=1024)。したがって、演算対象であるデータのサイズ(データビット長)の変化に対して柔軟性及び回路量当たりの処理能力が非常に高い。
【0028】
さらに本実施の形態の乗算器100は、GF(p)及びGF(2n)の2つの演算を1つの乗算器100で行うことが可能であるため、符号理論を応用した種々のアプリケーションにて使用可能である。最も典型的な例としては、楕円暗号方式による公開鍵暗号を実現する暗号回路の演算器として用いられる。
図11は、本実施の形態による乗算器100を組み込んだ公開鍵暗号回路の構成例を示す図である。
図11に示す暗号回路は、データの暗号化または復号化の処理(以下、暗号処理)における制御手段としてのデータ長カウンタ210、暗号制御回路220、鍵シフトレジスタ221、アドレスレジスタ230及びメモリ制御回路240と、処理対象であるデータを保持する保持手段としてのメモリ251、252と、暗号処理の実行手段である積和演算器260とを備える。
【0029】
この暗号回路では、データ長カウンタ210にて指定されるデータサイズで、暗号制御回路220及び鍵シフトレジスタ221により、データの暗号化または復号化に用いられるパラメータ(鍵等)が設定される。そして、アドレスレジスタ230及びメモリ制御回路240の制御により、メモリ251、252に保持されている入力データ及び暗号制御回路220にて設定されたパラメータが積和演算器260に渡される。積和演算器260は、当該入力データの暗号化または復号化のための演算処理を行う。この積和演算器260として、本実施の形態の乗算器100を用いることができる。
【0030】
この暗号回路において、積和演算器260は、暗号処理において、GF(p)上の演算とGF(2n)上の演算とを実行するものとする。例えば、楕円暗号方式においてDSA署名をサポートする場合や、楕円暗号方式とRSA方式を併用する場合などである。
RSA方式の暗号処理における演算や楕円暗号方式のDSA署名ではGF(p)上の演算を要するので、積和演算器260を構成する乗算器100の桁上げ加算器120の出力が演算結果として出力される。
一方、楕円暗号方式の暗号処理における演算ではGF(2n)上の演算を要するので、積和演算器260を構成する乗算器100のsum計算部111の出力が演算結果として出力される。
【0031】
また、本実施の形態の乗算器100を使用可能な他のアプリケーションとして、誤り訂正回路がある。
図12は、本実施の形態による乗算器100を組み込んだ誤り訂正回路の構成例を示す図である。
図12に示す誤り訂正回路は、シンドローム計算部310と、多項式生成部320と、誤り位置評価部330と、誤り値評価部340と、誤り訂正部350とを備える。ここで、シンドローム計算部310は、データの誤りパターンに応じたシンドロームを生成する。また、データの消失があった場合はその位置を決定する。多項式生成部320は、シンドロームとデータ消失位置の情報から、誤り位置を求める多項式(誤り位置多項式)と誤りのパターンを求めるための多項式(誤り値多項式)とを生成する。誤り位置評価部330は、多項式生成部320にて生成された誤り位置多項式に基づいて誤り位置を計算する。誤り値評価部340は、誤り位置評価部330で求めた誤り位置と多項式生成部320にて生成された誤り値多項式とに基づいて誤り値を計算する。誤り訂正部350は、誤り位置評価部330で求めた誤り位置に対応するデータに、誤り値評価部340で求めた誤り値を排他的論理和することによって、誤りを訂正する。
【0032】
この誤り訂正回路において、シンドローム計算部310、多項式生成部320、誤り位置評価部330及び誤り値評価部340を構成する積和演算回路311、321、322、331、341、342及び除算回路343として、本実施の形態の乗算器100を用いることができる。そして、GF(2n)上の演算結果が乗算器100のsum計算部111から出力される。
【0033】
【発明の効果】
以上説明したように、本発明によれば、回路規模を増大することなく、通常の整数乗算器およびGF(2n)上の乗算器として使用することが可能な乗算回路を提供することができる。
【0034】
また、本発明による乗算回路は、符号理論を応用した種々のアプリケーションにて使用可能であり、この乗算回路を実装することにより、例えば、GF(p)及びGF(2n)の2つの演算を要する楕円暗号やRSA方式を初めとする乗剰余系の公開鍵暗号を1つのアクセラレータコアで実現する暗号回路を提供することができる。
【図面の簡単な説明】
【図1】 8ビットの入力を例とした乗算のイメージを示す図である。
【図2】 図1の乗算において部分積を計算するための回路構成を示す図である。
【図3】 図2の回路で計算された部分積を加え合わせるための回路構成を示す図である。
【図4】 半加算器の構成を示す図である。
【図5】 全加算器の構成を示す図である。
【図6】 図2の回路で計算された部分積をXOR演算するための回路構成を示す図である。
【図7】 本実施の形態による乗算器の構成を示す図である。
【図8】 図1に示した8ビット×8ビットの乗算を行う本実施の形態の乗算器におけるワラスツリー部の構成例を示す図である。
【図9】 図1に示した8ビットの乗算に、他の8ビットの入力を加算する積和演算のイメージを示す図である。
【図10】 図9に示した8ビットの積和演算を行う本実施の形態の乗算器におけるワラスツリー部の構成例を示す図である。
【図11】 本実施の形態による乗算器を組み込んだ暗号回路の構成例を示す図である。
【図12】 本実施の形態による乗算器を組み込んだ誤り訂正回路の構成例を示す図である。
【符号の説明】
100…乗算器、110…ワラスツリー部、111…sum計算部、112…carry計算部、113…HA/FAアレイ、120…桁上げ加算器
Claims (13)
- 乗算対象である2つの入力値に対して部分積を求め、当該部分積を冗長2進形式で加え合わせるワラスツリー部と、
前記ワラスツリー部から出力される冗長2進数を2の補数形式に変換する桁上げ加算器とを備え、
前記ワラスツリー部は、
前記部分積の値を桁ごとに加算する合計値計算部と、
前記合計値計算部による加算における桁上がり値を加算する桁上がり値計算部と
を備えることを特徴とする乗算器。 - 前記合計値計算部の計算結果を2の拡大体に対する乗算結果として出力することを特徴とする請求項1に記載の乗算器。
- 前記桁上げ加算器は、前記合計値計算部の計算結果と前記桁上がり値計算部の計算結果とを加算して整数に対する乗算結果として出力することを特徴とする請求項1に記載の乗算器。
- 前記合計値計算部は、前記部分積と共に他の所定の値を対応する桁ごとに加算することによって積和演算を行うことを特徴とする請求項1に記載の乗算器。
- 乗算対象である2つの入力値に対して部分積を求め、半加算器及び全加算器を用いて当該部分積を加算し、当該入力値の乗算を行う乗算器において、
前記部分積における合計値を各桁別に計算し、前記入力値が2の拡大体である場合に乗算結果として出力する乗算手段と、
前記乗算手段の計算において生じる桁上がり値を加算する桁上がり値加算手段と、
前記乗算手段の計算結果と前記桁上がり値加算手段の計算結果とを加算し、前記入力値が整数である場合に乗算結果として出力する加算手段と
を備えることを特徴とする乗算器。 - 前記乗算手段は、前記半加算器及び前記全加算器から出力されるXOR(排他的論理和)演算による加算項のみを集めて外部へ出力することを特徴とする請求項5に記載の乗算器。
- 前記桁上がり値加算手段は、前記乗算手段にて加算される加算項以外の全ての項を集めて半加算器及び全加算器により桁上がり項と加算項とを含めた加算を行うことを特徴とする請求項6に記載の乗算器。
- 前記乗算手段における部分積の加算項に他の加算項を加えることによって積和演算を行うことを特徴とする請求項6に記載の乗算器。
- データの暗号化または復号化のための演算を行う演算手段と、
前記演算手段による演算を制御する制御手段とを備え、
前記演算手段は、
半加算器及び全加算器を用いた乗算器であって、
演算対象である2つの入力値に対して部分積を求め、当該部分積を冗長2進形式で加え合わせるワラスツリー部と、
前記ワラスツリー部から出力される冗長2進数を2の補数形式に変換する桁上げ加算器とを備え、
前記ワラスツリー部は、
前記部分積の値を桁ごとに加算する合計値計算部と、
前記合計値計算部による加算における桁上がり値を加算する桁上がり値計算部と
を備えることを特徴とする暗号回路。 - 前記演算手段は、有限体GF(2n)上の演算を行う場合に前記合計値計算部の計算結果を出力し、有限体GF(p)上の演算を行う場合に前記桁上げ加算器の計算結果を出力することを特徴とする請求項9に記載の暗号回路。
- 前記合計値計算部は、前記半加算器及び前記全加算器から出力されるXOR(排他的論理和)演算による加算項のみを集めて前記演算手段の外部へ出力することを特徴とする請求項9に記載の暗号回路。
- 前記桁上がり値計算部は、前記乗算手段にて加算される加算項以外の全ての項を集めて半加算器及び全加算器により桁上がり項と加算項とを含めた加算を行うことを特徴とする請求項9に記載の暗号回路。
- データの暗号化または復号化のための演算を行う演算手段と、
前記演算手段による演算を制御する制御手段とを備え、
前記演算手段は、
乗算対象である2つの入力値に対して部分積を求め、半加算器及び全加算器を用いて当該部分積を加算し、当該入力値の乗算を行う乗算器であって、
前記部分積における合計値を各桁別に計算し、前記入力値が有限体GF(2n)である場合に乗算結果として出力する乗算手段と、
前記乗算手段の計算において生じる桁上がり値を加算する桁上がり値加算手段と、
前記乗算手段の計算結果と前記桁上がり値加算手段の計算結果とを加算し、前記入力値が整数である場合に乗算結果として出力する加算手段と
を備えることを特徴とする暗号回路。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003015301A JP3726966B2 (ja) | 2003-01-23 | 2003-01-23 | 乗算器及び暗号回路 |
US10/762,174 US8244790B2 (en) | 2003-01-23 | 2004-01-21 | Multiplier and cipher circuit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003015301A JP3726966B2 (ja) | 2003-01-23 | 2003-01-23 | 乗算器及び暗号回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004227344A JP2004227344A (ja) | 2004-08-12 |
JP3726966B2 true JP3726966B2 (ja) | 2005-12-14 |
Family
ID=32903097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003015301A Expired - Fee Related JP3726966B2 (ja) | 2003-01-23 | 2003-01-23 | 乗算器及び暗号回路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8244790B2 (ja) |
JP (1) | JP3726966B2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4237109B2 (ja) * | 2004-06-18 | 2009-03-11 | エルピーダメモリ株式会社 | 半導体記憶装置及びリフレッシュ周期制御方法 |
US7424507B1 (en) * | 2004-09-30 | 2008-09-09 | National Semiconductor Corporation | High speed, low power, pipelined zero crossing detector that utilizes carry save adders |
US8271570B2 (en) * | 2007-06-30 | 2012-09-18 | Intel Corporation | Unified integer/galois field (2m) multiplier architecture for elliptic-curve crytpography |
WO2009140142A1 (en) * | 2008-05-12 | 2009-11-19 | Sandbridge Technologies, Inc. | Implementation of arbitrary galois field arithmetic on a programmable processor |
JP5603609B2 (ja) * | 2010-02-02 | 2014-10-08 | 矢崎総業株式会社 | ロジスティック写像の演算装置 |
US9141831B2 (en) | 2010-07-08 | 2015-09-22 | Texas Instruments Incorporated | Scheduler, security context cache, packet processor, and authentication, encryption modules |
US9563401B2 (en) | 2012-12-07 | 2017-02-07 | Wave Computing, Inc. | Extensible iterative multiplier |
US10289382B2 (en) | 2012-12-20 | 2019-05-14 | Wave Computing, Inc. | Selectively combinable directional shifters |
US9933996B2 (en) | 2012-12-20 | 2018-04-03 | Wave Computing, Inc. | Selectively combinable shifters |
KR102057648B1 (ko) | 2013-01-04 | 2019-12-20 | 삼성전자주식회사 | 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기 |
US10140090B2 (en) | 2016-09-28 | 2018-11-27 | International Business Machines Corporation | Computing and summing up multiple products in a single multiplier |
US10496373B2 (en) * | 2017-12-28 | 2019-12-03 | Intel Corporation | Unified integer and carry-less modular multiplier and a reduction circuit |
CN109474268B (zh) * | 2018-12-19 | 2024-02-06 | 北京比特大陆科技有限公司 | 电路结构、电路板和超算设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5257217A (en) * | 1992-05-01 | 1993-10-26 | Seiko Epson Corporation | Area-efficient multiplier for use in an integrated circuit |
US7483935B2 (en) * | 1995-08-16 | 2009-01-27 | Microunity Systems Engineering, Inc. | System and method to implement a matrix multiply unit of a broadband processor |
US5943250A (en) * | 1996-10-21 | 1999-08-24 | Samsung Electronics Co., Ltd. | Parallel multiplier that supports multiple numbers with different bit lengths |
US5847981A (en) * | 1997-09-04 | 1998-12-08 | Motorola, Inc. | Multiply and accumulate circuit |
US6421699B1 (en) * | 1999-03-19 | 2002-07-16 | International Business Machines Corporation | Method and system for a speedup of a bit multiplier |
US6442582B1 (en) * | 1999-06-17 | 2002-08-27 | Ati International Srl | Multiplier carry bit compression apparatus and method |
-
2003
- 2003-01-23 JP JP2003015301A patent/JP3726966B2/ja not_active Expired - Fee Related
-
2004
- 2004-01-21 US US10/762,174 patent/US8244790B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20040177105A1 (en) | 2004-09-09 |
JP2004227344A (ja) | 2004-08-12 |
US8244790B2 (en) | 2012-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Satoh et al. | A scalable dual-field elliptic curve cryptographic processor | |
US7320015B2 (en) | Circuit and method for performing multiple modulo mathematic operations | |
US9146708B2 (en) | Implementation of arbitrary galois field arithmetic on a programmable processor | |
JP3784156B2 (ja) | モジュラ掛け算方法 | |
US8380777B2 (en) | Normal-basis to canonical-basis transformation for binary galois-fields GF(2m) | |
US20120057695A1 (en) | Circuits for modular arithmetic based on the complementation of continued fractions | |
JP3726966B2 (ja) | 乗算器及び暗号回路 | |
Jafri et al. | Towards an optimized architecture for unified binary huff curves | |
Liu et al. | New speed records for Montgomery modular multiplication on 8-bit AVR microcontrollers | |
Oliveira et al. | The Montgomery ladder on binary elliptic curves | |
US8380767B2 (en) | Polynomial-basis to normal-basis transformation for binary Galois-Fields GF(2m) | |
Großschädl | A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m) | |
Crowe et al. | A scalable dual mode arithmetic unit for public key cryptosystems | |
Schinianakis et al. | Residue number systems in cryptography: Design, challenges, robustness | |
Moon et al. | Fast VLSI arithmetic algorithms for high-security elliptic curve cryptographic applications | |
Ghoreishi et al. | High speed RSA implementation based on modified Booth's technique and Montgomery's multiplication for FPGA platform | |
KR100670780B1 (ko) | 유한체 GF(2^m)에서의 하이브리드 곱셈 연산 장치및 연산 방법 | |
Nti et al. | Asic design of low area rsa cryptocore based on montgomery multiplier | |
Wu | An efficient common-multiplicand-multiplication method to the Montgomery algorithm for speeding up exponentiation | |
KR100946256B1 (ko) | 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기 | |
Huzaifa et al. | Low latency Montgomery multiplier for cryptographic applications | |
Lórencz et al. | Subtraction-free almost Montgomery inverse algorithm | |
Sudhakar et al. | New and improved architectures for Montgomery modular multiplication | |
Lou et al. | An efficient Montgomery exponentiation algorithm by using signed-digit-recoding and folding techniques | |
Ozturk et al. | Polynomial-basis to normal-basis transformation for binary Galois-Fields GF (2 m) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20050913 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20050915 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050921 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |