JP3939658B2 - モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置 - Google Patents
モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置 Download PDFInfo
- Publication number
- JP3939658B2 JP3939658B2 JP2002566769A JP2002566769A JP3939658B2 JP 3939658 B2 JP3939658 B2 JP 3939658B2 JP 2002566769 A JP2002566769 A JP 2002566769A JP 2002566769 A JP2002566769 A JP 2002566769A JP 3939658 B2 JP3939658 B2 JP 3939658B2
- Authority
- JP
- Japan
- Prior art keywords
- polynomial
- multiplication
- modulo
- shift value
- intermediate result
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Spinning Or Twisting Of Yarns (AREA)
- Electrophonic Musical Instruments (AREA)
Description
【0001】
暗号化は、モジュラー算術のための主な応用の1つである。基本的には、モジュロNの形態に応じて、2つの暗号化方法に区別される。モジュロが整数の場合は、Z/NZ算術(Z/NZArithmetik)のことを言う。パラメータNは、素数、または、素数の組み合わせを表している。パラメータZは、整数を表している。モジュロが2つの素数の組み合わせである場合の例として、RSA等式がある:
C=MEmod(N)
ただし、知られているように、Cは、符号化された情報、Mは、符号化されていない情報、Eは、公開鍵(oeffentliche Schluessel)、そして、Nは、モジュロである。
【0002】
一方、GF(2 n )算術は、モジュロN(x)が変数xの多項式であることにより特徴づけられている。多項式は、累乗されたxの和を含み、累乗されたxには、それぞれ係数が割り当てられている。累乗されたxの最大指数は、多項式の次数(Grad)として示される。係数が、体(Korper)GF(2)からのものである場合、GF(2n)係数、または、より一般的にはGF(2n)算術という。GF(2n)算術は、例えば、楕円曲線暗号化(Elliptische-Kurven-Kryptographie)に対して使用される。
【0003】
次数n−1の多項式
【0004】
【数1】
【0005】
は、n個の係数an−1,..., a0により規定され、aiは、集合(Menge)GF(2)からのものである必要があり、an−1は、定義により1であるので、
f(x)=1*xn−1+an−2 *xn−2+...+a1 *x1+a0 *x0
となる。
【0006】
体GF(2n)は、次数nの既約多項式、および、n−1未満またはn−1に等しい次数のGF(2n)の多項式により規定される。
【0007】
GF(2n)に関する2つの要素、すなわち、多項式の加算は、長さnをもつ上記2つの要素の、係数ベクトルのXOR結合(XOR-Verknuepfung)によって規定されている。
【0008】
GF(2n)に関する2つの要素、すなわち多項式の乗算は、多項式をGF(2n)について乗算すること、および、続いて、得られる積を、次数nの既約多項式N(x)をモジュロ(法)として約分すること(Reduzieren)により達成される。この多項式N(x)は、相当する体を定義する。
【0009】
それゆえ、積としての多項式、つまり、第1多項式f(x)と第2多項式g(x)との乗算により生じる多項式に対してモジュラー演算を実施するためには、除数としてモジュロ多項式N(x)を用いた多項式の除算を行う必要がある。それゆえ、f(x)*g(x)modN(x)の結果は、多項式の除算により生じる残りの多項式(Restpolynom)となる。
【0010】
Z/NZと、GF(2n)との双方についてのモジュラー乗算を効果的に実施するための様々な方法を説明する前に、Z/NZと、GF(2n)との双方に関するモジュラー累乗法は、知られている平方および乗算アルゴリズム(Square-and-Multiply-Algorithm)を用いて、乗算に分解できる。これにより、以下の等式を解くことができる:
C(x)=(M(x))EmodN(x)
平方および乗算アルゴリズムは、指数Eが2の累乗の和に分解されるということに基づいている:
【0011】
【数2】
【0012】
以下の例は、このことを明らかにする。二進法表示では、
E=1011
となる。
従って、以下の関係となる。
C(x)=M(x)^(1*23+0*22+1*21+1*20)modN(x)
従って、
C(x)=(M(x))8*(M(x))0*(M(x))2*(M(x))0modN(x)
となる。
【0013】
Z/NZ算術においても上述の等式は当てはまるが、その場合、M(x)の代わりにMであり、N(x)の代わりにNである点で異なる。
【0014】
モジュラー乗算を計算するために知られている、効果的で頻繁に使用される方法は、モンゴメリー乗算として知られており、例えば、「応用暗号化誌」("Handbook of Applied Cryptography", Menezes, von Oorschot, Vanstone, CRC Press, 600〜603ページ)に記載されている。モンゴメリー簡約(Montgomery-Reduktion)は、古典的なモジュラーの簡約工程を明示的に行うことなく、モジュラー乗算を効果的に実施できる技術である。一般的に、モンゴメリー簡約では、除算演算は、簡単な桁送り演算(Verschiebungsoperationen)によって表現される。
【0015】
一方、モンゴメリー乗算演算を有限体のGF(2n)に拡張する(Erweiterung)ことも知られている。この拡張は、「GF(2k)におけるモンゴメリー乗算」("Montgomery Multiplicationin GF(2k)", Koc, Azar, Designs, Codes and Cryptography、14巻、1998年、57〜69ページ)に記載されている。この拡張は、さらに、「有限体Z/NZおよびGF(2n)のための測定可能な統合乗算設計」("A Scalable and Unified Multiplier Architecture for Finite Fields Z/NZandGF(2n)",Erkay Savas他、Cryptographic Hardware and Embedded Systems (CHESS2000),281〜289ページ,Springer Lecture Notes)に記載されている。
【0016】
Z/NZまたはGF(2n)のモンゴメリー乗算の不利な点は、モジュラー簡約のための除算演算は、桁送り演算により回避することができるがハードウェアへの実装が困難であって、ハードウェアのモジュラー乗算演算の速度を上げるための先読み法が使用されないことにある。
【0017】
ドイツ特許第3631992号C2(DE3631992C2)(日本国特許第3014391号)に、Z/NZのモジュラー乗算を、乗算予測方法(乗算の先読み法)(Multiplikations-Vorausschau-Verfahrens)と、簡約予測方法(モジュロの先読み法)(Reduktions-Vorausschau-Verfahrens)とを使用することで速く行う方法が開示されている。ドイツ特許第3631992号C2に記載されている方法を、本明細書ではZDN方法(後述)と称することにし、図9を参考にして詳しく説明する。アルゴリズムの開始工程900の後、広域変数(globalen Variablen)M,C,およびNを初期化する。この目的は、以下のモジュラー乗算を計算するためである:
Z=M*CmodN
Mは、乗数を表し、一方、Cは、被乗数を示している。Zは、モジュラー乗算の結果であり、一方、Nは、モジュロである。
【0018】
このとき、次にすぐ処理する必要のない様々な局所変数(lokale Variablen)は初期化される。続いて、2通りの予測方法を用いる。乗算予測方法GEN_MULT_LAでは、様々な先読み規則を用いて、乗算桁送り値SZおよび乗算予測パラメータaを計算する(910)。このとき、Z用レジスタ(Z−Registers)の最新の内容は、左桁送り演算(Links-Verschiebungs-Operation)によりSZ桁(SZ-Stellen)桁送りされる(920)。
【0019】
これとほぼ並行して、簡約桁送り値SNおよび簡約パラメータbを計算するための簡約予測方法GEN_Mod_LA(930)を実施する。工程940において、N用レジスタの最新の内容、すなわち、Nが、桁送りされたモジュロ値N´を生成するために、SN桁だけ桁送りされる。ZDN方法の中央3演算数演算(Die zentrale Drei-Operanden-Operation)は、工程950において行われる。このとき、工程920の後の中間結果Z´は、乗算予測パラメータaが乗算されている被乗数Cと、簡約予測パラメータbが乗算されているモジュロN´とに加算される。現状に応じて、予測パラメータaおよびbは、+1、0、または、−1の値を有していてもよい。
【0020】
乗算予測パラメータaが+1であり、簡約予測パラメータbが−1である場合には、桁送りされた中間結果Z´に被乗数Cが加算され、それから桁送りされたモジュロN´が減算される。乗算予測方法が、予め設定されている数より多くの個々の左への桁送りを許可するなら、つまり、SZが、kとしても示される、SZの最大許容値よりも大きい場合、aは、0に等しい値を有することになる。aが0に等しく、Z´が、先のモジュラー簡約、つまり、桁送りされたモジュロの先の減算が原因で、まだかなり小さく、特に、桁送りされたモジュロN´よりも小さい場合には、簡約を行う必要がない。その結果、パラメータbは、0に等しくなる。
【0021】
工程910〜950は、被乗数の全ての桁が処理される、すなわち、mが0に等しく、パラメータnも0に等しくなるまでずっと実施される。パラメータnは、桁送りされたモジュロN´が、もとのモジュロNよりもまだ大きいかどうか、あるいは、すでに被乗数の全ての桁が処理されているという事実にもかかわらず、Zからモジュロを減算することにより、さらに他の簡約工程を実施する必要があるかどうかを示している。
【0022】
最後に、Zが0よりも小さいかどうかが決定される。Zが0よりも小さい場合には、簡約が終了するように、モジュロNをZに加える必要がある。これにより、モジュラー乗算の正の結果Zが得られる。工程960において、ZDN方法を用いるモジュラー乗算を終了する。
【0023】
工程910において、乗算予測アルゴリズムにより計算される乗算桁送り値SZおよび乗算パラメータaは、乗数の位相幾何学(Topologie des Multiplikators)、および、ドイツ特許第3631992号C2に記載の予測規則によって生じる。
【0024】
簡約桁送り値SNおよび簡約パラメータbは、同じくドイツ特許第3631992号C2に記載されているように、Z用レジスタの最新の内容を、値2/3×Nと比較することにより決定される。本明細書では、この比較方法に、ZDN方法という名前を付けている(ZDN=Nの3分の2(ZDN=Zwei Drittel N))。
【0025】
ZDN方法では、図9に示すように、モジュラー乗算を、3演算数加算(図9のブロック950)に戻す。この場合、計算時間を速めるために、乗算予測方法と同時に簡約予測方法が用いられる。従って、Z/NZのモンゴメリー簡約と比べて、3桁の大きさ(Groessenordnung von 3)の因数によって、計算時間を有利にすることができる。
【0026】
既に説明したように、ドイツ特許3631992号C2に記載されているZDN方法は、Z/NZ算術に対してのみ有効に作用するものであり、GF(2n)算術には適していない。従って、現在のところ、GF(2n)算術の、GF(2n)に関するモジュラー乗算の速度を速くするために用いられる、計算時間の速い先読み方法はない。
【0027】
本発明の目的は、GF(2n)のモジュラー乗算を迅速に行うための概念を提供することにある。
【0028】
この目的は、特許請求項に記載のモジュラー乗算を行うための装置、または、算術演算装置により達成される。
【0029】
本発明は、乗算予測方法と簡約予測方法との双方を使用することにより、GF(2n)のモジュラー乗算を速く行えるということに基づいている。乗算予測方法では、乗算桁送り値が計算される。乗算予測方法と並行して行われることが有利である簡約予測方法では、簡約桁送り値が計算される。この場合、簡約桁送り値は、乗算桁送り値だけ桁送りされた中間結果の多項式の次数と、実際のモジュロ多項式の次数との差に等しい。乗算桁送り値により累乗されている変数を、中間結果の多項式に乗算する一方、簡約桁送り値により累乗されている変数を、モジュロ多項式に乗算する。これにより、GF(2n)算術の3演算数加算が公式化される。そうして、乗算桁送り値だけ桁送りされた最後の中間結果の多項式を被乗数に足し合わせ、次に、更新された中間結果の多項式を得るために、この足し合わされたものから、簡約桁送り値だけ桁送りされたモジュロ多項式を減算することにより、新しい中間結果の多項式を計算することができる。次に、全ての工程を繰り返す。ただし、今度は更新された中間結果の多項式および最後の工程において桁送りされたモジュロ多項式を用いて、全ての部分の積を続けて加算するため、すなわち、乗数の全ての累乗が処理されてしまうまで、全ての工程を繰り返す。
【0030】
GF(2n)算術における変数xの累乗の係数が、「0」または「1」のどちらかの値を有していてもよいということにより、3演算数加算は、とりわけ簡易化される。これにより、加算と減算との双方は、簡単なXOR結合となる。その結果、単にGF(2n)の加算のための算術装置としての算術演算装置は、加算器を必要とせず、3演算数のビット毎の(bitweise)XOR結合のみを必要とする。
【0031】
双数の算術演算装置、すなわち、Z/NZのモジュラー乗算と、GF(2n)のモジュラー乗算との双方を行う算術演算装置の場合、加算器の各ビットのための桁上げを行わない、つまり考慮しないことによって、ZDN方法のために、既存の3演算数加算器を、GF(2n)演算用に簡単に変更できる。
【0032】
ただし、GF(2n)のモジュラー乗算を計算するための本発明に基づく方法は、直列並列構造(Seriell-Parallel-Architektur)を有している。3演算数加算は、好ましくは、常に並行して行われる、すなわち、一般的に、幅150〜1100ビットを有する、加数の全てのビットに対して行われることである。従って、次の連続した、本発明に基づく方法の反復において、新しい部分積が計算され、続く並行した3演算数加算において、既存の中間結果に加えられる。
【0033】
モジュラー乗算を計算するための本発明に基づく概念は、GF(2n)のためのモンゴメリー乗算と比較して、2桁の因数により、速度を最大にできるという長所がある。
【0034】
本発明に基づく概念の他の長所は、既に提供したGF(2n)のモジュラー乗算のための効果的な方法により、例えば、GF(2n)のECDSAアルゴリズム(ECDSA=楕円曲線デジタル署名アルゴリズム(ECDSA=Elliptic Curve Digital Signature algorism)を計算できることにある。このアルゴリズムは、「金融サービス産業のための公開鍵暗号法:楕円曲線D.S.A.」("Public Key Cryptography for the Financial Services Industry: The Elliptic Curve D.S.A.", ANSI X9.62-1998)に記載されている。
【0035】
楕円曲線暗号化は、整数に関連したモジュラー算術を基礎とする暗号化と比べ、非常に小さな数であっても、類似した安全基準を得られるという点で、好まれている。Z/NZについてのRSA方法では、1024ビット幅数で、確かな安全基準が得られる一方で、GF(2)についての多項式では、変数xの150〜300累乗の次数で、十分に確かな安全基準が得られる。
【0036】
本発明に基づく他の長所は、モジュラー乗算を計算するための本発明の概念を、ZDN方法のための既存の算術演算装置に難なく簡単に統合できることにある。なぜなら、実際に長い数の算術演算装置(Langzahlrechenwerk)、つまり、3演算数加算器を、ビット毎の桁上げを抑制することにより、GF(2n)に簡単に適合できるからである。GF(2n)のための、簡約予測アルゴリズム算術装置および乗算予測アルゴリズム算術装置は、Z/NZのための、簡約予測アルゴリズム算術装置および乗算予測アルゴリズム算術装置とは異なっているが、このことは、算術演算装置の全体的な特性に対しては決定的に重要なことではない。なぜなら、ここでは、たった8または16ビット幅程度の小さな数の加算、桁送り、または、減算の結果、制御装置とも称される算術装置の集積回路領域(die Chipflaeche)は、長い数を演算する算術演算装置と比較して、すなわち、2048ビット幅を十分に越えていてもよい(Z/NZおよびGF(2n)のための双数の実施)3演算数加算器と比較して、あまり重要ではないからである。
【0037】
GF(2n)についてのモジュラー乗算のための本発明に基づく概念の他の長所は、Z/NZ算術にのみ機能するZDN方法と比べ、多数の演算を簡易化できることにある。それゆえ、本発明に基づくGF(2n)モジュラー乗算では、モジュロの2/3倍との比較を行う必要がない。中間結果の多項式の次数とモジュロ多項式の次数との比較により、GF(2n)についての比較を簡単に行える。乗算桁送り値の期待値、および、簡約桁送り値の期待値が同一なので、2つの予測方法は相互に切り離されており、その結果、2つの予測方法は、相互に独立して作用することが可能であり、これに伴って、計算時間は速くなる。
【0038】
本発明の好ましい実施例を、以下に、添付の図を参考にして詳しく説明する。
【0039】
図1は、GF(2n)についてのモジュラー累乗法を具体的に説明するためのフローチャートを示す。図2は、本発明に基づく方法の高レベルのフローチャートを示す。図3は、乗算桁送り値を計算するための、乗算予測方法のフローチャートを示す。図4は、簡約桁送り値を計算するための、簡約予測方法のフローチャートを示す。図5は、GF(2n)算術またはZ/NZ算術のための3演算数加算器の一部を示す。図6は、桁上げ遮断機能(Carry-Abschalt-Funktion)の詳細な図を示す。図7は、Z/NZ-GF(2n)算術演算装置のブロック図を示す。図8a〜図8bは、簡約桁送り値の計算を具体的に説明するための概略的な図を示す。図9は、Z/NZについてのモジュラー乗算を行うためのZDN方法の概要を示す図である。
【0040】
図1は、モジュラー累乗法
C(x)=(M(x))EmodN(x)
を、一続きの乗算に分解するための一般的なフローチャートを示す。M(x)およびN(x)は、変数xの多項式である。Eは、ビット長L(E)を有する二進法表示の指数である。
【0041】
アルゴリズムは、基本的には、指数Eのビット、すなわちE(e)が1に等しいかどうかを調べるものである。E(e)=1である場合、結果として生じるレジスタの現在の内容に、M(x)を掛け算する。続いてすぐに、モジュロ多項式N(x)を用いてモジュラー簡約を行う。これに対し、指数のビットが0に等しい場合には、M(x)を掛け算しない。E(e)=1である場合もそうでない場合も、レジスタ内のC(x)の最新の内容を、それ自身により乗算、すなわち、2乗し、これに基づいてモジュラー簡約を行う。その結果、指数の桁の標数、すなわちeは、1だけ上昇される。そうして、繰り返し、指数Eのビットが1に等しいかどうかを調べる。このことを、指数Eの全ての桁を処理してしまうまで、つまり、e=L(E)となるまでずっと実施する。そうしてからアルゴリズムを終了すると、C(x)用のレジスタには、モジュラー累乗法の結果が生じている。従って、モジュラー累乗法の中央演算は、被乗数C(x)に乗数M(x)を掛けるモジュラー乗算である。
【0042】
図2は、被乗数に乗数をモジュラー乗算するための本発明に基づく方法の高レベルのブロック図を示す。この方法は、開始ブロック200から始める。ブロック202において、変数xの多項式である広域変数M、C、および、Nを初期化する。次に、ブロック204において、中間結果の多項式Zを、0に初期化する。ブロック206において、制御変数(Laufvariable)mを、L(M)に初期化する。L(M)は、乗数Mの長さをビットで表している。従って、L(M)は、乗数多項式の次数に相当している。さらに、ブロック208において、制御変数nを0に初期化する。制御変数nの意味については、後で説明する。続いて、乗算予測方法210と簡約予測方法212とを、好ましくは並行して実施する。乗算桁送り値SZを計算するために、乗算予測方法を用いる。好ましくは、乗算予測パラメータaを計算するために、同様に、乗算予測方法を用いることである。
【0043】
簡約桁送り値SNを計算するために、換算予測方法を用いる。好ましくは、換算予測パラメータbを計算するために、換算予測方法を用いることである。
【0044】
ブロック214において、乗算桁送り値SZにより累乗されている変数xを、実際の中間結果の多項式Zに乗算することによって、桁送りされた中間結果の多項式Z´を計算する。
【0045】
好ましくはこれと並行して、ブロック216において、換算桁送り値SNにより累乗されている変数xを、実際のモジュロ多項式Nに乗算することによって、桁送りされたモジュロ多項式N´を計算する。
【0046】
次に、ブロック218において、本発明に基づく乗算方法の中央演算である、いわゆる3演算数加算を実施する。ブロック218において、更新された中間結果の多項式Zを計算する。この多項式Zは、中間結果多項式Z´を、乗算予測パラメータaが乗算されている被乗数C、および、換算予測パラメータbが乗算されている桁送りされたモジュロ多項式N´に加算することによって得られる。
【0047】
ブロック220において、制御変数mが0に等しいかどうか、および、制御変数nが0に等しいかどうかを同時に調べる。制御変数mが0に等しい場合は、乗数M(x)の全てのビットが処理されていることを意味している。制御変数nが0に等しい場合は、桁送りされたモジュロ多項式N´が、ブロック202のもともとの多項式Nと同じであることを意味している。
【0048】
制御変数mが0に等しく、制御変数nが0に等しければ、ブロック220では、「はい」を応答し、その結果、モジュラー乗算の結果、すなわち、Z(x)を、ブロック222に出力できる。従って、モジュラー乗算のためのこの方法は、ブロック224で終了する。
【0049】
これに対し、ブロック220にて「いいえ」が応答されれば、このことは、処理されていない乗数のビットがまだ存在しているか、あるいは、モジュロ多項式用のレジスタに保たれるモジュロ多項式N´が、ブロック202で定義されたもともとのモジュロ多項式よりもさらに大きいということを意味している。言い換えれば、このことは、モジュロ多項式用のレジスタに保たれている、最新の多項式の次数は、ブロック202で定義されたもともとのモジュロ多項式Nの次数よりも大きいことを意味している。この場合には、図2に折り返し線226として示すように、乗算予測方法と、簡約予測方法とを改めて実施するために、もとに戻る。Z用レジスタがブロック204における初期化により0に設定されている第1工程とは逆に、この場合には、Z用レジスタには、先の工程における3演算数演算218の結果が生じている。
【0050】
この場合、同じく、N用レジスタには、ブロック202で定義されたもともとのモジュロNはもはや無く、換算桁送り値SNだけ桁送りされたモジュロ多項式N´がある。従って、ブロック202で定義されたもともとのモジュロN(x)は、第1初期化工程の間だけ、N用レジスタにある。この場合、反復工程(反復ループ226)の間に、N用レジスタには常に桁送りされたモジュロ多項式、すなわち、簡約桁送り値SNにより累乗されている変数xが乗算されているモジュロ多項式が存在する。
【0051】
以下に図3について説明する。図3は、乗算予測方法、すなわち、図2のブロック210の詳細な図を示している。この乗算予測方法は、ブロック300から始まる。広域変数として、図2のパラメータm、後でさらに説明する他の制御変数CURk、および、乗数Mが含まれている。このことを、図3のブロック302に示す。次に、ブロック304において、乗算桁送り値SZを0に初期化する。さらに、後でさらに説明する乗算予測パラメータaを、値=1に初期化する(ブロック306)。
【0052】
次に、ブロック308において、現在論議の対象となっているビット、または、現在処理されているxの累乗の係数が、0に等しいかどうか調べる。ブロック308において、現在処理されている乗数のビットが0に等しくないと決定されると、すなわち、ブロック308で「はい」を応答すると、制御変数mは、ブロック310において、1だけ上昇される。さらに、乗算桁送り値SZは、同じくブロック312において、1だけ上昇される。次に、ブロック314において、乗算予測方法、すなわち、乗算予測パラメータaおよび乗算桁送り値SZの結果パラメータが出力される。
【0053】
ブロック308において、「いいえ」を応答すると、他の判断ブロック316に進む。ここで、制御変数mが、乗数Mの長さ、つまり、次数よりもさらに小さいかどうかを決定する。さらに、現在の乗算桁送り値S Z が、パラメータCURkより小さいか、すなわち、現在の乗算桁送り値S Z が、パラメータCURkに一致してないか否かを調べる。2つの質問に対して「はい」が応答されると、パラメータmを1だけ上昇させるために、ブロック318に進む。さらに、ブロック320において、乗算桁送り値SZも1だけ上昇される。これに続いて、乗数Mの次数のビットを調べる。このことを、図3において、折り返し線322で表している。
【0054】
これに対し、ブロック316にて、ブロック316の2つの質問のうち1つに対して、「いいえ」を応答すると、ブロック324に進む。このブロック324において、乗算予測パラメータaを0に設定する。それゆえ、ブロック314に出力される乗算予測パラメータaは、0であっても1であってもよい。そして、乗算予測方法は、ブロック326にて終了する。
【0055】
以下に、乗算予測パラメータの機能形態について説明する。本発明に基づいて使用される乗算予測方法は、0を上回る変数の桁送りによるGF(2n)乗算のための先読みアルゴリズムであり、変数の桁送り数を任意に増やすことはできず、多くても、値CURkに等しいはずである。「CURk」は、「現在のk("Current k")」を表し、すなわち、「パラメータkの現在の値」を意味している。
【0056】
以下に、例として、係数「10001」を有する乗数多項式を考察する。まず、その最上位ビットを調べる。このビットは、「1」の値を有している。その結果、ブロック308では「はい」を応答する。すると、パラメータmが1だけ上昇されることになり、乗算桁送り値SZも同じく1だけ上昇されることになる。これにより、乗算予測アルゴリズムは終了してしまう。なぜなら、調べた乗数のビットは、被乗数Cの3演算数加算により加算される必要のある「1」の値を有していたからである。
【0057】
次に乗算予測アルゴリズムを実施する際に、第2ビットを調べる。このビットは、0の値を有している。その結果、ブロック308において、「いいえ」が応答される。調べられたビットは、ちょうど被乗数の第2ビットであり、乗算桁送り値SZは、ブロック304における初期化により、このとき0であるので、ブロック316では「はい」を応答する。その結果、制御変数mは、1だけ上昇され(318)、同じく、乗算桁送り値は、1だけ上昇され(320)、次に、折り返し線322を介して、ブロック308に進む。次のビットは、同じく値「0」を有しているので、このブロックでもまた「いいえ」を応答し、ブロック316が再び実行対象ブロックとなる。mは、L(M)よりまだ小さいので、質問に対して「はい」が応答される。SZは、ちょうど1の値を有している。CURkの値が2であっても、この質問に対して、「はい」が応答される。その結果、ブロック318および320において、mおよびSZの上昇が改めて行われる。ブロック320を通った後、このとき、SZは、2の値を有している。それから、支線322を介して、次のビットが1を有しているか0を有しているか決定するために、改めてブロック308に進む。上記実施例では、ブロック308で改めて「いいえ」を応答する。なぜなら、ここでは、0が連続した第3ビットが調べられるからである。しかし、ブロック316では、この場合、「いいえ」を応答する。なぜなら、SZは2であり、変数CURkは同じく2であるからである。第3の0が新しい桁送りのために使用できるとしても、このことは、乗算予測方法が実際は取り消されていることを意味している。しかし、SZの上限は決められている必要がある。そうでなければ、図2の工程214において計算される、桁送りされる中間結果の多項式Z´を格納できるように、無限に長いZ用レジスタを備える必要があるからである。従って、CURkは、Z用レジスタの現在の動きに応じて、つまり、速い速度が得られるようなできるだけ大きな桁送り値SZが許容されるように、しかし、同時に、桁送りされた中間結果の多項式Z´のために制限されているレジスタの長さで事足りるように設定される。図2のブロック218における3演算数演算は、被演算数が2つの演算になる。なぜなら、図3のブロック324のパラメータaが0に設定されているからである。
【0058】
図3から分かるように、ブロック324の支線において、mはこれ以上、上昇されない。その結果、乗算予測アルゴリズムを改めて実施するときには、第3番目の0ビットを、ブロック308で連続して調べる。このビットは、0の値を有しているので、ブロック308では、再び「いいえ」を応答する。その結果、乗算桁送り値SZは、1だけ増加され、制御変数も、ブロック318において上昇される。このとき、乗数の最後のビット、つまり「1」が調べられる。このビットは、0ではないので、ブロック308では、「はい」を応答し、制御変数が最後に増加され、この反復のための乗算予測アルゴリズムが終了するまで(ブロック326)、乗算桁送り値SZは、同じくもう一度増加される。このとき、被乗数の全てのビットは調べられているので、その結果、図2の繰り返し線226は終了する。なぜなら、この例では、ブロック220において、mが0に等しいかどうか調べられるからである。
【0059】
以下に、図2に参照番号212により示す簡約予測方法を説明するため、図4について説明する。ブロック400から簡約予測方法を開始する。ブロック402において、様々な広域変数を定義する。これら広域変数のうち、特に、NおよびZに注目する。Nは、先の工程のモジュロ多項式の記録値であり、一方、Zは、同じく先の工程の更新された中間結果の多項式である。kは、Zの最大桁送り値、CURkは、Zの現在の桁送り値、および、MAXは、長さ、すなわち、左へ桁送りされた多項式NおよびZを格納するために存在しているオーバーフローバッファ(overflow buffer)のビット数を表している。図2のブロック216を考慮すれば、任意の大きな簡約桁送り値SNが存在する場合、乗算予測方法の場合と同じように、Nのための任意に大きなレジスタを備える必要があるということが分かる。しかし、このことは、空間および効率を考えた場合、望ましくない。その結果、パラメータMAXにより、モジュロ多項式は、同じく、特定のビット数だけ左へ、すなわち、上へ桁送りされてもよいことも考慮される。
【0060】
次に、ブロック404において、後に説明するパラメータSiを、0に初期化する。それから、ブロック406において、オーバーフローバッファにある、Nのビット数を示しているパラメータnが、0に等しいかどうか、あるいは、Siがkに等しいかどうかが決定される。ブロック406で「はい」を応答すると、ブロック408に進む。ブロック408において、簡約予測パラメータbを、0に設定する。これに対し、ブロック406の質問に対して「いいえ」を応答すると、パラメータnは、1だけ増加する(ブロック410)。同時に、パラメータSiも、ブロック412に示すように、1だけ増加する。続いて、ブロック414において、中心的な比較が行われる。この中心的な比較により、3演算数演算(図2のブロック218)において、中間結果の多項式のモジュラー簡約を行うために、モジュロ多項式をどれだけ桁送りしなければならないかが決定される。このため、補助簡約桁送り値Siは、S i 乗されたxを先の工程で更新された中間結果の多項式Zに乗算して得られる多項式の次数と、現在のモジュロ多項式の次数とが、等しくなるように決められる。このことは、ブロック406において、「はい」という結果が得られるまで、あるいは、ブロック414において、「はい」という結果が得られるまで繰り返される反復ループ416により示されているように、段階的に実行される。ブロック414で、「はい」を応答すると、ブロック418において、簡約予測パラメータbを、1に設定する。次に、ブロック420において、新しいパラメータnを、乗算桁送り値SZと、実際の値nとの差から計算する。次に、実際の簡約桁送り値SNが、乗算桁送り値SZと補助簡約桁送り値Siとの差を形成することによって、ブロック422において計算される。
【0061】
ただし、乗算桁送り値SZは、図2の矢印230に示すような、実際に並行して行われる乗算予測アルゴリズムにより与えられる。補助簡約桁送り値Siを導入しなければ、実際には乗算予測方法とこれに続く簡約予測方法とを連続して実施できるのみであり、効率のうえからはこれは望ましくない。従って、補助簡約桁送り値Siを使用し、この補助簡約桁送り値Siにより、実際の簡約桁送り値SN の計算をする限り、時間のかかるループ(図4の折り返し416)を、乗算予測アルゴリズムと実際に並行して処理でき、一方で、簡約桁送り値SNの実際の計算は、2つの短い数SZとSiとの差を得ることにより、迅速に行うことができる。従って、順序は以下のようにある。SZとSiとを並行して計算する。次に、SZを、図2の支線230(図4にも示されている)を介して、乗算予測アルゴリズムから、簡約予測アルゴリズムへと供給する。その結果、次の周期において、簡約桁送り値SNもすぐ利用できる。これについては、後で、図8a〜図8cを参考にして詳しく説明する。
【0062】
ブロック422の後、ブロック424において、nが、MAX−kよりも大きいかどうかを決定する。この質問に対して「はい」が応答されると、ブロック426において、新しいCURkを計算する。ブロック424の質問に対して、「いいえ」が応答されると、ブロック428において、CURkがkに等しくなるように設定される。次に、ブロック430において、簡約予測方法の結果値、すなわち、bおよびSNが出力される。そうして、簡約予測方法は、ブロック432で終了する。
【0063】
乗算予測パラメータaおよび簡約予測パラメータb、ならびに、メモリー管理パラメータn、MAX、k、およびCURkの詳細な説明について、ドイツ特許3631992号C2が参照される。パラメータaおよびbが+1、0、および−1の値をとってもよいZ/NZのためのZDN方法とは異なり、本発明に基づく方法における相当するパラメータa、bは、0および1の値のみをとることができる。予測パラメータaおよびbは、本発明にかかるモジュラー乗算のためには、場合により必要となる。つまり、任意に大きくない格納場所をNおよびZのために利用する場合に必要となる。しかし、本発明の方法は、一般的に言えば、任意の大きさのレジスタを使用できるという条件下においても、何の困難もなく実施される。この場合、乗算予測方法が省略されてしまうことはなく、乗数の「1」が再び見出されるまでの間ずっと実施されている。そのときまで、図2のブロック214を参照すると、SZは、特定のできる限り大きな数を有している。その結果、桁送りされた中間結果の多項式Z´は、極めて大きな値を取ることが可能である。次に、ブロック218において、乗数1が見出されたという事実に基づき、被乗数を、桁送りされた中間結果多項式Z´に加える。
【0064】
しかし、重要な特徴は、それぞれの乗算工程と同時に、モジュラー簡約も行われることであり、これにより、数値全てを許容限度(ertraeglichen Grenzen)に含むことができる。
【0065】
このため、本発明に基づく簡約桁送り値SNは、桁送りされたモジュロ多項式の次数が、実際の中間結果の多項式の次数に等しくなるように選択される。桁送りされたモジュロ多項式が、Z´(x)とC(x)との和から減算される場合、通常、更新された中間結果Zは、Z´よりもずっと小さくなり、これにより簡約が完了する。図2の工程218で計算される、更新された中間結果の多項式Zは、必ずしも、ブロック202のもともとのモジュロ多項式により簡約される必要はなく、反復工程全体を通して、左へと桁送りされた1つのモジュロ多項式、すなわち、より高い次数を有する1つのモジュロ多項式により簡約されてもよいことが分かる。しかし、必ずしも、そうである必要はない。この場合には、工程220において、nが0に等しいかどうか、すなわち、Nがオーバーフローバッファにビットを有するかどうかが判定され、更新された中間結果からモジュロ多項式の更なる減算を行ってZを本来の余剰群( Restklasse )に漸進的に簡約していくことによって、簡約が達成される。nが0に等しい場合は、Nのビットが、もはやオーバーフローバッファに存在しないことを意味している。このことは、最終的に得られる桁送りされたモジュロ多項式が、ブロック202のもともとのモジュロ多項式に等しいことを同じく意味している。
【0066】
従って、モジュラー乗算をするための本発明に基づく方法は、基本的には、予測パラメータaおよびbを用いることなく実施できる。しかし、任意の乗数が想定されている場合には、ZおよびNのための、論理的に無限のレジスタが必要となる。
【0067】
ZおよびNの格納限界がある場合、すなわち、予測パラメータaおよびbが0を取り得る場合には、乗算予測パラメータaが0に等しいことは、被乗数が桁送りされたZ´に加えられないことを意味する。これと同じように、0に等しい簡約予測パラメータbは、桁送りされたモジュロ多項式が、桁送りされた中間結果の多項式Z´よりも大きく、もう簡約する必要がないことを意味する。従って、モジュロ減算を、同じく省略することができる。このような場合には、3演算数演算は、完全になくなる。
【0068】
ただし、この際、Z用レジスタおよびN用レジスタのオーバーフローバッファが制限されている場合、変数mが、0の値に達しない限り、Nは、そのもともとのMSB(Home-MSB)から少なくともkビット遠ざかっているということにも注意しなければならない。
【0069】
さらに、GF(2n)算術の場合、すなわち、多項式の係数が、0または1だけでよい場合、加算演算は、減算演算に相当し、一般的に、XOR結合として実施できる。しかし、多項式の係数が、他の数の方式、例えば、8進数方式(Oktal-System)、または、10進数方式(Dezimal-System)に含まれている場合、当然、減算は加算に相当していない。
【0070】
補助簡約桁送り値Siを用いる簡約桁送り値SZの計算を示すために、以下に、図8a〜図8cについて説明する。図8aには、中間結果の多項式Zおよびモジュロ多項式Nを示す。単なる例として、中間結果の多項式は、次数4、すなわち、4ビットを有しており、一方、モジュロ多項式は、次数9、すなわち、9ビットを有している。図2のブロック214において、桁送りされた中間結果の多項式Z´を計算する。この計算は、SZにより累乗されている変数xを乗算することにより行う。従って、乗数に8個の0があり、これにより、乗算桁送り値SZは8となる。モジュラー簡約を行うためには、モジュロNは、桁送りされた中間結果の多項式Z´の桁数(Groessenordnung)になっている必要がある。本発明に基づき、モジュロ多項式Nは、桁送りされた中間結果の多項式Z´の次数と、桁送りされたモジュロ多項式Nの次数とが同じくなる程度にまで桁送りされている。このためには、図8bから分かるように、SNの簡約桁送り値は3に等しくなければならない。
【0071】
図8bから、同じく、SNの調査は、実際には、SZが計算されている場合にはじめて行えることが分かる。すなわち、本発明にとって好ましいように、図2のブロック210と212とを並行して実施することはできない。この理由により、補助予測パラメータSiが挿入される。図8aから分かるように、補助桁送りパラメータSiは、中間結果の多項式Zと、モジュロ多項式Nとの次数の差に等しい。実際の工程のSZを知らなくてもこの値を計算できることがSiの利点である。
【0072】
図8cから、SZは、SiとSNとの和に常に等しいということが分かる。従って、SNは、以下の等式が当てはまるようにSZおよびSiと常に関連している。
SN=SZ−Si
従って、SNを決定するための時間のかかる反復方法を、Siを決定するための時間のかかる反復方法(折り返し線416)と、迅速な差演算(図4のブロック422)とに分解できる。これにより、2つの予測方法をほぼ並行して実施できる。この際、唯一の連続している構成部分は、ブロック422の(図4)の計算の前に、SZの実際の値が乗算予測アルゴリズムにより既に計算され、供給されている(図2の矢印230)ことである。
【0073】
既に説明したように、GF(2n)についてのモジュラー乗算を計算するための本発明に基づく概念の重要な利点は、この概念をZDN方法のための既存の長い数の算術演算装置に統合できることである。図5は、本発明に基づき適合されている、Z、aC、および、bNによる3演算数加算を行うための3演算数算術演算装置の一部を示す。
【0074】
図5に、相互に接続されている3つのビット片[i]、[i−1]、[i−2]を示す。各ビット片は、出力部側において、更新された中間結果多項式の1ビットZ[i]、Z[i−1]、または、Z[i−2]を得るために、3ビット計数器500および、全加算器510を備えている。全加算器は、さらに、次に高い全加算器の桁上げ入力部のための桁上げ出力部(キャリー(Carry)=桁上げ)を備えている。例えば、200次の多項式を処理する場合、図5のビット片の全加算器が並列に200個接続される必要がある。
【0075】
図5のビット片を、GF(2n)のために変更するために、図5に示すように、ANDゲート520を、3ビット計数器の上側の出力部と、次に高い段階の全加算器の下から2番目の入力部との間に挿入する必要がある。(ANDゲート520の)イネーブル入力部530に0が入力されると、(全加算器510に供給される)値xは、常に0になる。すなわち、全加算器510の機能は、yと0とを加算するだけになる。これに対して、Z/NZの場合、ANDゲートのイネーブル入力部に、「1」が提供される。その結果、ANDゲートは、他の作用を有していない。
【0076】
従って、GF(2n)では、ANDゲートの出力が0に等しい。これに対し、Z/NZでは、Xが必要であり、ANDゲートの出力が0に等しくなくてもよい。それゆえ、イネーブルは、ANDゲートにより実現される。これに対し、GF(2n)、つまり、イネーブル入力部530に0が与えられる場合、全加算器における加算は自明な演算になる。
【0077】
図6は、ANDゲート520の状態を示す。図5に部分的に示す算術演算装置は、イネーブル信号SC=1である場合、標準加算器として機能する。これに対し、算術演算装置は、イネーブル信号SC=0である場合、XOR回路として機能する。
【0078】
図7は、Z/NZおよびGF(2n)のための算術演算装置の概略的なブロック図を示す。上記算術演算装置は、長い数の算術装置700の周りに集約されている。この算術装置700は、既述の3演算数演算を、Z/NZまたはGF(2n)のために実施する。
【0079】
算術演算装置は、Z/NZ制御装置710、GF(2n)制御装置720、および、モード選択装置730をさらに含んでいる。上記算術演算装置が整数のモジュロに対する演算を行う場合、モード選択部730は、真の加算演算を実行するように算術装置700を制御し、該算術装置700の入力側と出力側とをZ/NZ制御装置710に接続する。一方、上記算術演算装置がGF(2 n )算術を行う場合、モード選択部730は、加算の代わりにXOR演算を実行するよう算術装置700を制御し、該算術装置700の入力側と出力側とをGF(2 n )制御装置に接続する。
【0080】
それゆえ、整数モジュラー算術と、多項式モジュラー算術との双方を算術演算装置に組み込むために、別個の算術装置を必要とはしない。
【0081】
ただし、3演算数演算が、全てのビットのために並行して行われるという事実に基づき、ほとんどの集積回路領域は、算術装置700によって消費され、一方で、制御装置710および720では、より短い数で、より小さな計算が実施されるのでビット領域は特に重要ではなくなる。
【0082】
従って、整数算術と多項式算術との双方のために、独自の算術演算装置を必要とする算術演算装置とは反対に、モジュラー乗算を計算するための本発明に基づく概念によれば、集積回路領域を50%近く減少できる。特にスマートカードに対して、この集積回路領域の節約は、競争上の優位性を導く。
【図面の簡単な説明】
【図1】 GF(2n)におけるモジュラー累乗法を具体的に説明するためのフローチャートである。
【図2】 本発明に基づく方法の高レベルのフローチャートである。
【図3】 乗算桁送り値を計算するための、乗算予測方法のフローチャートである。
【図4】 簡約桁送り値を計算するための、簡約予測方法のフローチャートである。
【図5】 GF(2n)算術またはZ/NZ算術のための3演算数加算器の一部を示す図である。
【図6】 桁上げ遮断機能の詳細な図である。
【図7】 Z/NZ-GF(2n)算術演算装置のブロック図である。
【図8】 A〜Cは、簡約桁送り値の計算を具体的に説明するための概略的な図である。
【図9】 Z/NZにおいてモジュラー乗算を行うためのZDN方法の概要を示す図である。
【符号の説明】
200 モジュラー乗算のための方法の開始
202 広域変数
204 中間結果多項式の初期化
206 mの初期化
208 nの初期化
210 乗算予測方法
212 簡約予測方法
214 中間結果多項式の生成
216 桁送りされたモジュロ多項式の生成
218 3演算数加算
220 アルゴリズムが終了したかどうかの調査
222 Zの出力
224 モジュラー乗算するための方法の終了
226 折り返し線
230 SZ桁上げ
300 乗算予測方法の開始
302 広域変数
304 SZの初期化
306 aの初期化
308 処理されたビットが0または1であるかどうかの決定
310 mの増加
312 SZの増加
314 aおよびSZの出力
316 さらに桁送りできるかどうかの決定
318 mの増加
320 SZの増加
322 折り返し線
324 aの設定
326 乗算予測方法の終了
400 簡約予測方法の開始
402 広域変数
404 Siの初期化
406 簡約できるかどうかの決定
408 bの設定
410 nの増加
412 Siの増加
414 桁送りされた中間結果の多項式の次数の調査
416 折り返し線
418 bの設定
420 nの設定
422 SNの計算
424 nの調査
426 CURkの設定
428 CURkの設定
430 b、SNの出力
432 簡約予測方法の終了
500 3ビット計数器
510 全加算器
520 スイッチ
530 制御
700 3演算数算術演算装置
710 Z/NZ制御装置
720 GF(2n)制御装置
730 モード選択
900 ZDN方法の開始
910 ZDNアルゴリズムのための乗算予測方法
920 Zの左への桁送り
930 ZDNアルゴリズムのための簡約予測方法
940 モジュロの左または右への桁送り
950 ZDNアルゴリズムのための3演算数加算
960 ZDNアルゴリズムの終了
Claims (12)
- モジュロ(N)を用いて、被乗数(C)に乗数(M)をモジュラー乗算するための装置において、
上記被乗数(C)、上記乗数(M)、および、上記モジュロ(N)は、体GF(2 n )の要素、すなわち、0または1を係数とする変数 ( x ) の多項式であり、
(a)乗算の先読み法(210)を実施する装置であって、上記乗数多項式(M)の注目項の係数が0であるときに乗算桁送り値S Z を増加させることにより乗算桁送り値S Z を得る装置と、
(b)桁送りされた中間結果の多項式(Z´)を得るために、上記乗算桁送り値(SZ)により累乗されている上記変数(x)に、中間結果の多項式(Z)を乗算する(214)装置と、
(c)モジュロの先読み法(212)を実施する装置であって、上記桁送りされた中間結果の多項式(Z´)の次数と上記モジュロ多項式(N)の次数との差に一致する簡約桁送り値(S N )を、上記乗算先読み法(210)を実施する装置にて得られた乗算桁送り値S Z と上記モジュロ多項式(N)とに基づいて算出する装置と、
(d)桁送りされたモジュロ多項式(N´)を得るために、上記簡約桁送り値(SN)により累乗されている上記変数(x)に、上記モジュロ多項式(N)を乗算する(216)装置と、
(e)更新された中間結果の多項式(Z)を得るために、上記桁送りされた中間結果の多項式(Z´)と上記被乗数(C)とを加算し(218)、上記桁送りされたモジュロ多項式(N´)を減算する装置と、
(f)上記乗数(M)の全ての項が処理されるまで、上記装置(a)〜(e)を繰り返し駆動する(226)装置とを含み、
上記繰り返しにおいて、上記中間結果の多項式(Z)を乗算する(214)装置は、上記加算する(218)装置が前回生成した、更新された中間結果の多項式(Z)を乗算するように構成されており、上記モジュロの先読み法(212)を実施する装置は、上記モジュロ多項式(N)を乗算する(216)装置が前回生成した、桁送りされたモジュロ多項式(N´)を上記モジュロ多項式(N)として使用するように構成されている、装置。 - 桁送りされた中間結果の多項式(Z´)を得るために乗算をするための上記装置(214)、および、桁送りされたモジュロ多項式(N´)を得るために乗算をするための上記装置(216)は、上記乗算桁送り値(SZ)または上記簡約桁送り値(SN)に関係なく、相当する桁数だけ記録内容を桁送りするために制御可能なシフトレジスタとして実装されている、請求項1に記載の装置。
- 加算および減算するための上記装置(218)は、上記中間結果の多項式(Z´)、上記多項式被乗数(C)、および、上記桁送りされたモジュロ多項式(N´)のXOR結合のためのビット毎のXOR結合装置を含む、請求項1または2に記載の装置。
- 加算および減算するための上記装置(218)は、
第1入力部配線に、上記中間結果の多項式(Z)のビットを印加でき、第2入力部配線に、上記被乗数(C)のビットを印加でき、第3入力部配線に、上記桁送りされたモジュロ多項式(N´)のビットを印加できる、3つの入力部配線および2つの出力部配線を有する計数器(500)と、
上記計数器(500)の低い値の出力部が、全加算器(510)の高い値の入力部配線に接続されている、3つの入力部および1つの出力部を有する全加算器(510)と、
上記計数器(500)の高い値の出力部配線と、全加算器(510)の中間入力部との間に、高い値のビットのために接続されているスイッチ(520)と、
多項式が処理される場合、スイッチ(520)を開けるための、制御装置(530)とを有する、請求項1または2に記載の装置。 - モジュロを使用して、被乗数に乗数を乗算するための算術演算装置として構成されており、
上記算術演算装置は、さらに、モジュロ整数を使用して、被乗数整数に乗数整数を乗算するために構成されており、
上記加算するための装置は、桁上げ遮断装置(730)を有する3演算数加算器(700)として形成され、
上記加算するための装置は、整数演算数または多項式演算数を組み合わせるために構成されており、
上記算術演算装置は、上記加算するための装置によって上記多項式演算数を処理する場合、桁上げが行われず、上記加算するための装置によって上記整数演算数を処理する場合、桁上げが行われるよう、上記桁上げ遮断装置を制御するための制御装置(730)をさらに備える請求項1に記載の装置。 - 桁上げ遮断装置を有する上記3演算数加算器は、
第1入力部配線に、中間結果の多項式のビットを印加でき、第2入力部配線に、上記多項式被乗数(C)のビットを印加でき、第3入力部配線に、上記桁送りされたモジュロ多項式のビットを印加できる、3つの入力部配線および2つの出力部配線を有する計数器(500)と、
上記計数器(500)の低い値の出力部が上記全加算器(510)の高い値の入力部配線に接続されている、3つの入力部および1つの出力部を有する全加算器(510)と、
上記計数器(500)の高い値の出力部配線と、全加算器(510)の中間入力部との間に、高い値のビットのために接続されているスイッチ(520)と、
多項式が処理される場合、上記スイッチ(520)を開くための、制御装置(530)とを有する、請求項5に記載の装置。 - 存在する3演算数加算器の数が、上記モジュロ整数または上記モジュロ多項式の桁数よりも大きいかあるいは同じである、複数の3演算数加算を備える、請求項6に記載の装置。
- 上記(b)における乗算(214)のための装置は、上記乗算桁送り値(SZ)に等しい桁数で、上記中間結果の多項式(Z)を桁送り可能であって、
上記(d)における乗算のための装置(216)は、上記簡約桁送り値(SN)に等しい桁数で、上記モジュロ多項式(N)を桁送り可能である、請求項1に記載の装置。 - 上記多項式の係数は、「0」または「1」の値のみを有することができ、
上記(e)における加算および減算のための装置(218)は、上記中間結果の多項式(Z´)、上記被乗数(C)、および、上記桁送りされるモジュロ多項式(N´)のビット毎のXOR結合を実施可能となっている、請求項1に記載の装置。 - 上記モジュロの先読み法(212)を実施する装置は、
上記モジュロ多項式(N)の次数と、補助桁送り値(Si)により累乗されている変数(x)が乗算された、上記更新された中間結果の多項式(Z)の次数とが等しくなるように、補助桁送り値(Si)を決定する(414)装置と、
上記簡約桁送り値(SN)を得るために、上記乗算桁送り値(SZ)と、上記補助桁送り値(Si)との差を形成する(422)装置とを含んでいる、請求項1に記載の装置。 - 上記乗算の先読み法(210)を実施する装置と、上記補助桁送り値(Si)を決定する(414)装置とを相互に並行して動作させることが可能となっている、請求項10に記載の装置。
- 上記乗算桁送り値(SZ)は、最大乗算桁送り値(k)に制限されており、
上記乗算の先読み法(210)を実施する装置は、
上記乗算桁送り値が、上記最大乗算桁送り値(k)に等しい場合、上記乗算桁送り値(SZ)を、上記最大桁送り値(k)に等しく設定し、所定の値を有する乗算予測パラメータ(a)を生成する(306,324)工程を実施可能となっており、
上記加算する(218)装置は、
上記乗算予測パラメータ(a)が、所定の値を有している場合、上記所定の中間結果の多項式(Z´)および上記桁送りされたモジュロ多項式(N´)のみを加算する工程を実施可能となっている、請求項1に記載の装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE10107376A DE10107376A1 (de) | 2001-02-16 | 2001-02-16 | Verfahren und Vorrichtung zum modularen Multiplizieren und Rechenwerk zum modularen Multiplizieren |
| PCT/EP2002/000719 WO2002067108A2 (de) | 2001-02-16 | 2002-01-24 | Verfahren und vorrichtung zum modularen multiplizieren und rechenwerk zum modularen multiplizieren |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2004519052A JP2004519052A (ja) | 2004-06-24 |
| JP3939658B2 true JP3939658B2 (ja) | 2007-07-04 |
Family
ID=7674338
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002566769A Expired - Lifetime JP3939658B2 (ja) | 2001-02-16 | 2002-01-24 | モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置 |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US6920473B2 (ja) |
| EP (1) | EP1360579B1 (ja) |
| JP (1) | JP3939658B2 (ja) |
| CN (1) | CN1296817C (ja) |
| AT (1) | ATE357016T1 (ja) |
| DE (2) | DE10107376A1 (ja) |
| TW (1) | TW550498B (ja) |
| WO (1) | WO2002067108A2 (ja) |
Families Citing this family (30)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7277540B1 (en) * | 1999-01-20 | 2007-10-02 | Kabushiki Kaisha Toshiba | Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography |
| US7337437B2 (en) * | 1999-12-01 | 2008-02-26 | International Business Machines Corporation | Compiler optimisation of source code by determination and utilization of the equivalence of algebraic expressions in the source code |
| US8176108B2 (en) * | 2000-06-20 | 2012-05-08 | International Business Machines Corporation | Method, apparatus and computer program product for network design and analysis |
| US6973470B2 (en) * | 2001-06-13 | 2005-12-06 | Corrent Corporation | Circuit and method for performing multiple modulo mathematic operations |
| US7895253B2 (en) * | 2001-11-30 | 2011-02-22 | Analog Devices, Inc. | Compound Galois field engine and Galois field divider and square root engine and method |
| US7558817B2 (en) * | 2002-04-29 | 2009-07-07 | Infineon Technologies Ag | Apparatus and method for calculating a result of a modular multiplication |
| US7426529B2 (en) * | 2002-06-06 | 2008-09-16 | Infineon Technologies Ag | Processor and method for a simultaneous execution of a calculation and a copying process |
| US7724898B2 (en) * | 2002-10-17 | 2010-05-25 | Telefonaktiebolaget L M Ericsson (Publ) | Cryptography using finite fields of odd characteristic on binary hardware |
| DE10260660B3 (de) | 2002-12-23 | 2004-06-09 | Infineon Technologies Ag | Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung |
| US20040120516A1 (en) * | 2002-12-23 | 2004-06-24 | International Business Machines Corporation | Modular reduction method which recognizes special conditions |
| DE10260655B3 (de) * | 2002-12-23 | 2004-06-24 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung |
| KR100459732B1 (ko) | 2002-12-30 | 2004-12-03 | 삼성전자주식회사 | 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법 |
| FR2859030B1 (fr) * | 2003-08-21 | 2005-11-04 | Gemplus Card Int | Procede de realisation d'une multiplication modulaire et procede de realisation d'une multiplication euclidienne sur des nombres de 2n bits |
| FR2862454A1 (fr) * | 2003-11-18 | 2005-05-20 | Atmel Corp | Methode de reduction modulaire aleatoire et equipement associe |
| US7171544B2 (en) * | 2003-12-15 | 2007-01-30 | International Business Machines Corporation | Run-time parallelization of loops in computer programs by access patterns |
| FR2885711B1 (fr) * | 2005-05-12 | 2007-07-06 | Atmel Corp | Procede et materiel modulaire et aleatoire pour la reduction polynomiale |
| US7826612B2 (en) * | 2006-06-29 | 2010-11-02 | Intel Corporation | System, method and apparatus for an incremental modular process including modular multiplication and modular eduction |
| US8024391B2 (en) * | 2006-11-06 | 2011-09-20 | Atmel Rousset S.A.S. | Modular multiplication method with precomputation using one known operand |
| CN100517214C (zh) * | 2007-05-30 | 2009-07-22 | 北京天碁科技有限公司 | 一种实现二进制多项式运算的硬件配置方法及硬件系统 |
| DE102008033962B4 (de) | 2008-07-21 | 2011-11-24 | Siemens Aktiengesellschaft | Verfahren und Prozessor-Einrichtung zum Implementieren einer Charakteristik-2-Multiplikation |
| EP2480440B1 (en) * | 2009-09-25 | 2020-03-04 | Volvo Lastvagnar AB | Method for forecasting the evolution of the magnitude of a data for a vehicle journey |
| CN104375801A (zh) * | 2013-08-16 | 2015-02-25 | 瑞昱半导体股份有限公司 | 参数产生装置与方法 |
| CN103645883A (zh) * | 2013-12-18 | 2014-03-19 | 四川卫士通信息安全平台技术有限公司 | 基于fpga的高基模乘器 |
| RU2710310C2 (ru) | 2014-12-12 | 2019-12-25 | Конинклейке Филипс Н.В. | Электронное устройство формирования |
| FR3050847B1 (fr) * | 2016-05-02 | 2019-04-05 | Morpho | Procede d'optimisation d'ecritures en memoire dans un dispositif |
| US10496373B2 (en) * | 2017-12-28 | 2019-12-03 | Intel Corporation | Unified integer and carry-less modular multiplier and a reduction circuit |
| DE102018209901A1 (de) * | 2018-06-19 | 2019-12-19 | Robert Bosch Gmbh | Recheneinheit, Verfahren und Computerprogramm zum Multiplizieren zumindest zweier Multiplikanden |
| US12585433B2 (en) * | 2020-10-21 | 2026-03-24 | PUFsecurity Corporation | Device and method of handling a modular multiplication |
| CN115934029B (zh) * | 2023-02-20 | 2023-05-30 | 辰星(天津)自动化设备有限公司 | 乘法运算资源转换逻辑资源方法、装置、乘法器及介质 |
| CN118778922B (zh) * | 2024-09-12 | 2024-11-22 | 深圳市纽创信安科技开发有限公司 | 约减装置及方法 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6042965B2 (ja) * | 1979-06-01 | 1985-09-26 | 愛介 片山 | 複数法形高速乗算装置 |
| US4625076A (en) * | 1984-03-19 | 1986-11-25 | Nippon Telegraph & Telephone Public Corporation | Signed document transmission system |
| DE3631992A1 (de) * | 1986-03-05 | 1987-11-05 | Holger Sedlak | Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens |
| ATE55033T1 (de) * | 1986-03-05 | 1990-08-15 | Holger Sedlak | Kryptographie-verfahren und kryptographieprozessor zur durchfuehrung des verfahrens. |
| US5251164A (en) * | 1992-05-22 | 1993-10-05 | S-Mos Systems, Inc. | Low-power area-efficient absolute value arithmetic unit |
| JP3525209B2 (ja) * | 1996-04-05 | 2004-05-10 | 株式会社 沖マイクロデザイン | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 |
| CN1085862C (zh) * | 1996-09-20 | 2002-05-29 | 张胤微 | 高速模乘法装置 |
| WO2000038047A1 (en) * | 1998-12-18 | 2000-06-29 | Motorola Inc. | Circuit and method of cryptographic multiplication |
-
2001
- 2001-02-16 DE DE10107376A patent/DE10107376A1/de not_active Withdrawn
-
2002
- 2002-01-24 CN CNB028044916A patent/CN1296817C/zh not_active Expired - Fee Related
- 2002-01-24 EP EP02714108A patent/EP1360579B1/de not_active Expired - Lifetime
- 2002-01-24 JP JP2002566769A patent/JP3939658B2/ja not_active Expired - Lifetime
- 2002-01-24 AT AT02714108T patent/ATE357016T1/de not_active IP Right Cessation
- 2002-01-24 DE DE50209713T patent/DE50209713D1/de not_active Expired - Lifetime
- 2002-01-24 WO PCT/EP2002/000719 patent/WO2002067108A2/de not_active Ceased
- 2002-02-08 TW TW091102434A patent/TW550498B/zh not_active IP Right Cessation
-
2003
- 2003-07-21 US US10/623,830 patent/US6920473B2/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| TW550498B (en) | 2003-09-01 |
| ATE357016T1 (de) | 2007-04-15 |
| EP1360579B1 (de) | 2007-03-14 |
| US20040019622A1 (en) | 2004-01-29 |
| EP1360579A2 (de) | 2003-11-12 |
| US6920473B2 (en) | 2005-07-19 |
| WO2002067108A2 (de) | 2002-08-29 |
| CN1489726A (zh) | 2004-04-14 |
| DE10107376A1 (de) | 2002-08-29 |
| CN1296817C (zh) | 2007-01-24 |
| DE50209713D1 (de) | 2007-04-26 |
| WO2002067108A3 (de) | 2002-12-12 |
| JP2004519052A (ja) | 2004-06-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3939658B2 (ja) | モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置 | |
| Satoh et al. | A scalable dual-field elliptic curve cryptographic processor | |
| JP5378579B2 (ja) | フォールディングを用いるモジュール削減 | |
| JP4302640B2 (ja) | 被乗数のシフトを用いて乗算を計算するための装置およびその方法、上記装置を実行するためのプログラムコードを格納した記録媒体 | |
| JP5182364B2 (ja) | サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法 | |
| WO2010048719A1 (en) | Method and apparatus for modulus reduction | |
| US5121429A (en) | Digital signal processing | |
| CN100437470C (zh) | 模数增值方法及装置 | |
| KR20100123361A (ko) | 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법 | |
| JP3302043B2 (ja) | 暗号通信方法及びそのシステム | |
| US7698357B2 (en) | Modular multiplication with parallel calculation of the look-ahead parameters | |
| WO2007080652A1 (ja) | モンゴメリ法用乗算剰余計算装置 | |
| JP2004227344A (ja) | 乗算器及び暗号回路 | |
| US7016927B2 (en) | Method and apparatus for modular multiplication | |
| EP1600852B1 (en) | Method and apparatus for calculating a modular inverse | |
| JP2000207387A (ja) | 演算装置及び暗号処理装置 | |
| JP3904421B2 (ja) | 剰余乗算演算装置 | |
| Erdem et al. | Efficient and Constant Time Modular Reduction With Generalized Mersenne Primes | |
| JP4223819B2 (ja) | べき乗剰余演算装置及びそのプログラム | |
| JP2009003479A (ja) | べき乗剰余演算方法 | |
| Shirase et al. | An architecture for elliptic curve cryptograph computation | |
| JP2002236581A (ja) | 演算回路、演算方法、及びプログラム記録媒体 | |
| JP2003316262A (ja) | 乗算剰余演算方法及び演算装置 | |
| JP2004170642A (ja) | 乗算剰余演算方法および乗算剰余演算装置 | |
| JPH10260818A (ja) | BのC乗のnを法とした剰余を計算する回路 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050425 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050510 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050810 |
|
| RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050810 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050817 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051109 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060801 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20061101 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20061109 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070131 |
|
| 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: 20070227 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070328 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 3939658 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110406 Year of fee payment: 4 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120406 Year of fee payment: 5 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120406 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130406 Year of fee payment: 6 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130406 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140406 Year of fee payment: 7 |
|
| 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 |