[go: up one dir, main page]

JP2004519052A - 係数乗算を行うための方法と装置、および、係数乗算を行うための算術演算装置 - Google Patents

係数乗算を行うための方法と装置、および、係数乗算を行うための算術演算装置 Download PDF

Info

Publication number
JP2004519052A
JP2004519052A JP2002566769A JP2002566769A JP2004519052A JP 2004519052 A JP2004519052 A JP 2004519052A JP 2002566769 A JP2002566769 A JP 2002566769A JP 2002566769 A JP2002566769 A JP 2002566769A JP 2004519052 A JP2004519052 A JP 2004519052A
Authority
JP
Japan
Prior art keywords
polynomial
coefficient
multiplication
shift value
shifted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2002566769A
Other languages
English (en)
Other versions
JP3939658B2 (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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of JP2004519052A publication Critical patent/JP2004519052A/ja
Application granted granted Critical
Publication of JP3939658B2 publication Critical patent/JP3939658B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/722Modular multiplication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/724Finite 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)

Abstract

係数(N)を使用して、被乗数(C)に乗数(M)を係数乗算するための方法では、被乗数、乗数、および、係数が、変数の多項式であり、乗算予測方法(210)が、乗算桁送り値(s)を得るために実施される。中間結果多項式(Z)は、桁送りされた中間結果多項式(Z´)を得るために、乗算桁送り値(s)の桁数だけ、左へ桁送り(214)される。さらに、換算桁送り値(s)を得るために、換算予測方法(212)が実施される。換算桁送り値は、桁送りされた中間結果多項式(Z´)の次数と、係数多項式(N)の次数との差に等しい。係数多項式は、桁送りされた係数多項式を得るために、換算桁送り値(216)に等しい桁数だけ桁送りされる。3演算数加算器(218)において、桁送りされた中間結果多項式(Z´)、および、被乗数(C)が加算され、桁送りされた係数多項式(N´)は、更新された中間結果多項式(Z)を得るために、減算される。上記工程を反復して実施すること(226)により、係数乗算は、乗算多項式の全ての累乗が処理されるまで、徐々に行われる。桁上げ遮断機能により、Z/NZ算術と、GF(2)算術との双方を、唯一の長い数の算術演算装置により行える。

Description

本発明は、係数乗算、例えば、GF(2)の楕円曲線の係数乗算を実施するための方法および装置に関するものである。
【0001】
暗号化は、係数算術のための主な応用の1つである。基本的には、係数Nの形態に応じて、2つの暗号化方法に区別される。係数が整数の場合は、Z/NZ算術(Z/NZArithmetik)のことを言う。パラメータNは、素数、または、素数の組み合わせを表している。パラメータZは、整数を表している。係数が2つの素数の組み合わせである場合の例として、RSA等式がある:
C=Mmod(N)
ただし、知られているように、Cは、符号化された情報、Mは、符号化されていない情報、Eは、公開鍵(oeffentliche Schluessel)、そして、Nは、係数である。
【0002】
一方、GF(2)算術は、係数N(x)が変数xの多項式であることにより特徴づけられている。多項式は、累乗されたxの和を含み、累乗されたxには、それぞれ係数が割り当てられている。累乗されたxの最大指数は、多項式の次数(Grad)として示される。係数が、体(Korper)GF(2)からのものである場合、GF(2)係数、または、より一般的にはGF(2)算術という。GF(2)算術は、例えば、楕円曲線暗号化(Elliptische−Kurven−Kryptographie)に対して使用される。
【0003】
次数n−1の多項式
【0004】
【数1】
Figure 2004519052
【0005】
は、n個の係数an−1,..., aにより規定され、aは、集合(Menge)GF(2)からのものである必要があり、an−1は、定義により1であるので、
f(x)=1n−1+an−2 n−2+...+a +a
となる。
【0006】
体GF(2)は、次数nの既約多項式、および、n−1未満またはn−1に等しい次数のGF(2)の多項式により規定される。
【0007】
GF(2)に関する2つの要素、すなわち、多項式の加算は、長さnをもつ上記2つの要素の、係数ベクトルのXOR結合(XOR−Verknuepfung)によって規定されている。
【0008】
GF(2)に関する2つの要素、すなわち多項式の乗算は、多項式をGF(2)について乗算すること、および、続いて、得られる積を、次数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(2)との双方についての係数乗算を効果的に実施するための様々な方法を説明する前に、Z/NZと、GF(2)との双方に関する係数累乗法は、知られている平方および乗算アルゴリズム(Square−and−Multiply−Algorithm)を用いて、乗算に分解できる。これにより、以下の等式を解くことができる:
C(x)=(M(x))modN(x)
平方および乗算アルゴリズムは、指数Eが2の累乗の和に分解されるということに基づいている:
【0011】
【数2】
Figure 2004519052
【0012】
以下の例は、このことを明らかにする。二進法表示では、
E=1011
となる。
従って、以下の関係となる。
C(x)=M(x)^(1+0+1+1)modN(x)
従って、
C(x)=(M(x))8*(M(x))0*(M(x))2*(M(x))modN(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(2)に拡張する(Erweiterung)ことも知られている。この拡張は、「GF(2)におけるモンゴメリー乗算」(”Montgomery Multiplicationin GF(2)”, Koc, Azar, Designs, Codes and Cryptography、14巻、1998年、57〜69ページ)に記載されている。この拡張は、さらに、「有限体Z/NZおよびGF(2)のための測定可能な統合乗算設計」(”A Scalable and Unified Multiplier Architecture for Finite Fields Z/NZandGF(2)”,Erkay Savas他、Cryptographic Hardware and Embedded Systems (CHESS2000),281〜289ページ,Springer Lecture Notes)に記載されている。
【0016】
Z/NZまたはGF(2)のモンゴメリー乗算の不利な点は、係数換算のためにハードウェアで実施する係数換算のための除算演算は、桁送り演算により回避することができるが、ハードウェアの係数乗算演算の速度を上げるための先見越し方法(Look−Ahead−Verfahren)または予測方法(Vorausschau−Verfahren)は使用されないことにある。
【0017】
ドイツ特許第3631992号C2(DE3631992C2)に、Z/NZの係数乗算を、乗算予測方法(Multiplikations−Vorausschau−Verfahrens)と、換算予測方法(Reduktions−Vorausschau−Verfahrens)とを使用することで速く行う方法が開示されている。ドイツ特許第3631992号C2に記載されている方法は、ZDN方法とも表され、図9を参考にして詳しく説明する。アルゴリズムの開始工程900の後、広域変数(globalen Variablen)M,C,およびNを初期化する。この目的は、以下の係数乗算を計算するためである:
Z=MCmodN
Mは、乗数を表し、一方、Cは、被乗数を示している。Zは、係数乗算の結果であり、一方、Nは、係数である。
【0018】
このとき、次にすぐ処理する必要のない様々な局所変数(lokale Variablen)は初期化される。続いて、2通りの予測方法を用いる。乗算予測方法GEN_MULT_LAでは、様々な先見越し規則を用いて、乗算桁送り値sおよび乗算予測パラメータaを計算する(910)。このとき、Z記録器(Z−Registers)の最新の内容は、左桁送り演算(Links−Verschiebungs−Operation)によりs桁(s−Stellen)桁送りされる(920)。
【0019】
これとほぼ並行して、換算桁送り値sおよび換算パラメータbを計算するための換算予測方法GEN_Mod_LA(930)を実施する。工程940において、係数記録器の最新の内容、すなわち、Nが、桁送りされた係数値N´を生成するために、s桁だけ桁送りされる。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´が減算される。乗算予測方法が、予め設定されている数より多くの個々の左への桁送りを許可するなら、つまり、sが、kとしても示される、sの最大許容値よりも大きい場合、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において、乗算予測アルゴリズムにより計算される乗算桁送り値sおよび乗算パラメータaは、乗数の位相幾何学(Topologie des Multiplikators)、および、ドイツ特許第3631992号C2に記載の予測規則によって生じる。
【0024】
換算桁送り値sおよび換算パラメータ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(2)算術には適していない。従って、現在のところ、GF(2)算術の、GF(2)に関する係数乗算の速度を速くするために用いられる、計算時間の速い先見越し方法はない。
【0027】
本発明の目的は、GF(2)の係数乗算を迅速に行うための概念を提供することにある。
【0028】
この目的は、特許請求項1に記載の係数乗算を行うための方法、特許請求項7に記載の係数乗算を行うための装置、または、特許請求項11に記載の算術演算装置により達成される。
【0029】
本発明は、乗算予測方法と換算予測方法との双方を使用することにより、GF(2)の係数乗算を速く行えるということに基づいている。乗算予測方法では、乗算桁送り値が計算される。乗算予測方法と並行して行われることが有利である換算予測方法では、換算桁送り値が計算される。この場合、換算桁送り値は、乗算桁送り値だけ桁送りされた中間結果の多項式の次数と、実際の係数多項式の次数との差に等しい。乗算桁送り値により累乗されている変数を、中間結果の多項式に乗算する一方、換算桁送り値により累乗されている変数を、係数多項式に乗算する。これにより、GF(2)算術の3演算数加算が公式化される。そうして、乗算桁送り値だけ桁送りされた最後の中間結果の多項式を被乗数に足し合わせ、次に、更新された中間結果の多項式を得るために、この足し合わされたものから、換算桁送り値だけ桁送りされた係数多項式を減算することにより、新しい中間結果の多項式を計算することができる。次に、全ての工程を繰り返す。ただし、今度は更新された中間結果の多項式および最後の工程において桁送りされた係数多項式を用いて、全ての部分の積を続けて加算するため、すなわち、乗数の全ての累乗が処理されてしまうまで、全ての工程を繰り返す。
【0030】
GF(2)算術における変数xの累乗の係数が、「0」または「1」のどちらかの値を有していてもよいということにより、3演算数加算は、とりわけ簡易化される。これにより、加算と減算との双方は、簡単なXOR結合となる。その結果、単にGF(2)の加算のための算術装置としての算術演算装置は、加算器を必要とせず、3演算数のビット毎の(bitweise)XOR結合のみを必要とする。
【0031】
双数の算術演算装置、すなわち、Z/NZの係数乗算と、GF(2)の係数乗算との双方を行う算術演算装置の場合、加算器の各ビットのための桁上げを行わない、つまり考慮しないことによって、ZDN方法のために、既存の3演算数加算器を、GF(2)演算用に簡単に変更できる。
【0032】
ただし、GF(2)の係数乗算を計算するための本発明に基づく方法は、直列並列構造(Seriell−Parallel−Architektur)を有している。3演算数加算は、好ましくは、常に並行して行われる、すなわち、一般的に、幅150〜1100ビットを有する、加数の全てのビットに対して行われることである。従って、次の連続した、本発明に基づく方法の反復において、新しい部分積が計算され、続く並行した3演算数加算において、既存の中間結果に加えられる。
【0033】
係数乗算を計算するための本発明に基づく概念は、GF(2)のためのモンゴメリー乗算と比較して、2桁の因数により、速度を最大にできるという長所がある。
【0034】
本発明に基づく概念の他の長所は、既に提供したGF(2)の係数乗算のための効果的な方法により、例えば、GF(2)のECDSAアルゴリズム(ECDSA=楕円曲線デジタル署名アルゴリズム(ECDSA=Elliptic Curve Digital Signature Algorithm))を計算できることにある。このアルゴリズムは、「金融サービス産業のための公開鍵暗号法:楕円曲線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(2)に簡単に適合できるからである。GF(2)のための、換算予測アルゴリズム算術装置および乗算予測アルゴリズム算術装置は、Z/NZのための、換算予測アルゴリズム算術装置および乗算予測アルゴリズム算術装置とは異なっているが、このことは、算術演算装置の全体的な特性に対しては決定的に重要なことではない。なぜなら、ここでは、たった8または16ビット幅程度の小さな数の加算、桁送り、または、減算の結果、制御装置とも称される算術装置の集積回路領域(die Chipflaeche)は、長い数を演算する算術演算装置と比較して、すなわち、2048ビット幅を十分に越えていてもよい(Z/NZおよびGF(2)のための双数の実施)3演算数加算器と比較して、あまり重要ではないからである。
【0037】
GF(2)についての係数乗算のための本発明に基づく概念の他の長所は、Z/NZ算術にのみ機能するZDN方法と比べ、多数の演算を簡易化できることにある。それゆえ、本発明に基づくGF(2)係数乗算では、係数の2/3倍との比較を行う必要がない。中間結果の多項式の次数と係数多項式の次数との比較により、GF(2)についての比較を簡単に行える。乗算桁送り値の期待値、および、換算桁送り値の期待値が同一なので、2つの予測方法は相互に切り離されており、その結果、2つの予測方法は、相互に独立して作用することが可能であり、これに伴って、計算時間は速くなる。
【0038】
本発明の好ましい実施例を、以下に、添付の図を参考にして詳しく説明する。
【0039】
図1は、GF(2)についての係数累乗法を具体的に説明するためのフローチャートを示す。図2は、本発明に基づく方法の高レベルのフローチャートを示す。図3は、乗算桁送り値を計算するための、乗算予測方法のフローチャートを示す。図4は、換算桁送り値を計算するための、換算予測方法のフローチャートを示す。図5は、GF(2)算術またはZ/NZ算術のための3演算数加算器の一部を示す。図6は、桁上げ遮断機能(Carry−Abschalt−Funktion)の詳細な図を示す。図7は、Z/NZ−GF(2)算術演算装置のブロック図を示す。図8a〜図8bは、換算桁送り値の計算を具体的に説明するための概略的な図を示す。図9は、Z/NZについての係数乗算を行うためのZDN方法の概要を示す図である。
【0040】
図1は、係数累乗法
C(x)=(M(x))modN(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とを、好ましくは並行して実施する。乗算桁送り値sを計算するために、乗算予測方法を用いる。好ましくは、乗算予測パラメータaを計算するために、同様に、乗算予測方法を用いることである。
【0043】
換算桁送り値sを計算するために、換算予測方法を用いる。好ましくは、換算予測パラメータbを計算するために、換算予測方法を用いることである。
【0044】
ブロック214において、乗算桁送り値sにより累乗されている変数xを、実際の中間結果の多項式Zに乗算することによって、桁送りされた中間結果の多項式Z´を計算する。
【0045】
好ましくはこれと並行して、ブロック216において、換算桁送り値sにより累乗されている変数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はもはや無く、換算桁送り値sだけ桁送りされた係数多項式N´がある。従って、ブロック202で定義されたもともとの係数N(x)は、第1初期化工程の間だけ、N記録器にある。この場合、反復工程(折り返し線226)の間に、係数記録器には常に桁送りされた係数多項式、すなわち、換算桁送り値sにより累乗されている変数xが乗算されている係数多項式が存在する。
【0051】
以下に図3について説明する。図3は、乗算予測方法、すなわち、図2のブロック210の詳細な図を示している。この乗算予測方法は、ブロック300から始まる。広域変数として、図2のパラメータm、後でさらに説明する他の制御変数cur、および、乗数Mが含まれている。このことを、図3のブロック302に示す。次に、ブロック304において、乗算桁送り値sを0に初期化する。さらに、後でさらに説明する乗算予測パラメータaを、値=1に初期化する(ブロック306)。
【0052】
次に、ブロック308において、現在論議の対象となっているビット、または、現在処理されているxの累乗の係数が、0に等しいかどうか調べる。ブロック308において、現在処理されている乗数のビットが0に等しくないと決定されると、すなわち、ブロック308で「はい」を応答すると、制御変数mは、ブロック310において、1だけ上昇される。さらに、乗算桁送り値sは、同じくブロック312において、1だけ上昇される。次に、ブロック314において、乗算予測方法、すなわち、乗算予測パラメータaおよび乗算桁送り値sの結果パラメータが出力される。
【0053】
ブロック308において、「いいえ」を応答すると、他の判断ブロック316に進む。ここで、制御変数mが、乗数Mの長さ、つまり、次数よりもさらに小さいかどうかを決定する。さらに、現在の乗算桁送り値sがより小さいか、あるいは、パラメータcurに等しくないかどうかを調べる。2つの質問に対して「はい」が応答されると、パラメータmを1だけ上昇させるために、ブロック318に進む。さらに、ブロック320において、乗算桁送り値sも1だけ上昇される。これに続いて、乗数Mの次数のビットを調べる。このことを、図3において、折り返し線322で表している。
【0054】
これに対し、ブロック316にて、ブロック316の2つの質問のうち1つに対して、「いいえ」を応答すると、ブロック324に進む。このブロック324において、乗算予測パラメータaを0に設定する。それゆえ、ブロック314に出力される乗算予測パラメータaは、0であっても1であってもよい。そして、乗算予測方法は、ブロック326にて終了する。
【0055】
以下に、乗算予測パラメータの機能形態について説明する。本発明に基づいて使用される乗算予測方法は、0を上回る変数の桁送りによるGF(2)乗算のための先見越しアルゴリズムであり、変数の桁送り数を任意に増やすことはできず、多くても、値CURに等しいはずである。「CUR」は、「現在のk(”Current k”)」を表し、すなわち、「パラメータkの現在の値」を意味している。
【0056】
以下に、例として、係数「10001」を有する乗数多項式を調査する。まず、その最上位ビットを調べる。このビットは、「1」の値を有している。その結果、ブロック308では「はい」を応答する。すると、パラメータmが1だけ上昇されることになり、乗算桁送り値sも同じく1だけ上昇されることになる。これにより、乗算予測アルゴリズムは終了してしまう。なぜなら、調べた乗数のビットは、被乗数Cの3演算数加算により加算される必要のある「1」の値を有していたからである。
【0057】
次に乗算予測アルゴリズムを実施する際に、第2ビットを調べる。このビットは、0の値を有している。その結果、ブロック308において、「いいえ」が応答される。調べられたビットは、ちょうど被乗数の第2ビットであり、乗算桁送り値sは、ブロック304における初期化により、このとき0であるので、ブロック316では「はい」を応答する。その結果、制御変数mは、1だけ上昇され(318)、同じく、乗算桁送り値は、1だけ上昇され(320)、次に、折り返し線322を介して、ブロック308に進む。次のビットは、同じく値「0」を有しているので、このブロックでもまた「いいえ」を応答し、ブロック316では、CURである。Mは、L(M)よりまだ小さいので、質問に対して「はい」が応答される。sは、ちょうど1の値を有している。CURの値が2であっても、この質問に対して、「はい」が応答される。その結果、ブロック318および320において、mおよびsの上昇が改めて行われる。ブロック320を通った後、このとき、sは、2の値を有している。それから、支線320を介して、次のビットが1を有しているか0を有しているか決定するために、改めてブロック308に進む。上記実施例では、ブロック308で改めて「いいえ」を応答する。なぜなら、ここでは、0が連続した第3ビットが調べられるからである。しかし、ブロック316では、この場合、「いいえ」を応答する。なぜなら、sは2であり、変数CURは同じく2であるからである。第3の0が新しい桁送りのために使用できるとしても、このことは、乗算予測方法が実際は取り消されていることを意味している。しかし、sの上限は決められている必要がある。そうでなければ、図2の工程214において計算される、桁送りされる中間結果の多項式Z´を格納できるように、無限に長いZ記録器を備える必要があるからである。従って、CURは、Z記録器の現在の動きに応じて、つまり、速い速度が得られるようなできるだけ大きな桁送り値sが許容されるように、しかし、同時に、桁送りされた中間結果の多項式Z´のために制限されている記録器の長さで事足りるように設定される。図2のブロック218における3演算数演算は、演算数演算になる。なぜなら、図3のブロック324のパラメータaが0に設定されているからである。
【0058】
図3から分かるように、ブロック324の支線において、mはこれ以上、上昇されない。その結果、乗算予測アルゴリズムを改めて実施するときには、第3番目の0ビットを、ブロック308で連続して調べる。このビットは、0の値を有しているので、ブロック308では、再び「いいえ」を応答する。その結果、乗算桁送り値sは、1だけ増加され、制御変数も、ブロック318において上昇される。このとき、乗数の最後のビット、つまり「1」が調べられる。このビットは、0ではないので、ブロック308では、「はい」を応答し、制御変数が最後に増加され、この反復のための乗算予測アルゴリズムが終了するまで(ブロック326)、乗算桁送り値sは、同じくもう一度増加される。このとき、被乗数の全てのビットは調べられているので、その結果、図2の繰り返し線226は終了する。なぜなら、この例では、ブロック220において、mが0に等しいかどうか調べられるからである。
【0059】
以下に、図2に参照番号212により示す換算予測方法を説明するため、図4について説明する。ブロック400から換算予測方法を開始する。ブロック402において、様々な広域変数を定義する。これら広域変数のうち、特に、NおよびZに注目する。Nは、先の工程の係数多項式の記録値であり、一方、Zは、同じく先の工程の更新された中間結果の多項式である。kは、Zの最大桁送り値、CURは、Zの現在の桁送り値、および、MAXは、長さ、すなわち、左へ桁送りされた多項式NおよびZを格納するために存在している過剰緩衝記憶装置(overflow buffer)のビット数を表している。図2のブロック216を考慮すれば、任意の大きな換算桁送り値sが存在する場合、乗算予測方法の場合と同じように、Nのための任意に大きな記録器を備える必要があるということが分かる。しかし、このことは、空間および効率を考えた場合、望ましくない。その結果、パラメータMAXにより、係数多項式は、同じく、特定のビット数だけ左へ、すなわち、上へ桁送りされてもよいことも考慮される。
【0060】
次に、ブロック404において、後に説明するパラメータSを、0に初期化する。これにより、ブロック406において、過剰緩衝記憶装置にある、Nのビット数を示しているパラメータnが、0に等しいかどうか、あるいは、Sがkに等しいかどうかが決定される。ブロック406で「はい」を応答すると、ブロック408に進む。ブロック408において、換算予測パラメータbを、0に設定する。これに対し、ブロック406の質問に対して「いいえ」を応答すると、パラメータnは、1だけ増加する(ブロック410)。同時に、パラメータSも、ブロック412に示すように、1だけ増加する。続いて、ブロック414において、中央比較が行われる。この中央比較により、3演算数演算(図2のブロック218)において、中間結果の多項式の係数換算を行うために、係数多項式をどれだけ桁送りしなければならないかを決定する必要がある。このため、補助換算桁送り値Sは、xの乗算(ただし、xは、Sにより累乗されている)の多項式の次数に、先の工程の更新された中間結果の多項式を乗算して、現在の係数多項式の次数に等しくなるように特定される。このことは、段階的に、折り返し線416が示すように、ブロック406において、「はい」という結果が得られるまで、あるいは、ブロック414において、「はい」という結果が得られるまでの間ずっと実施される。ブロック414で、「はい」を応答すると、ブロック418において、換算予測パラメータbを、1に設定する。次に、ブロック420において、新しいパラメータnを、乗算桁送り値sと、実際の値nとの差から計算する。次に、事実上の換算桁送り値Sが、乗算桁送り値sと補助換算桁送り値sとの差を形成することによって、ブロック422において計算される。
【0061】
ただし、乗算桁送り値sは、図2の矢印230に示すような、実際に並行して行われる乗算予測アルゴリズムにより与えられる。補助換算パラメータsを導入しなければ、実際には乗算予測方法とこれに続く換算予測方法とを連続して実施できるのみであり、効率のうえからはこれは望ましくない。従って、補助換算パラメータsを使用し、この補助換算パラメータsにより、換算桁送り値sの事実上の計算をする限り、費用のかかる折り返し線(図4の折り返し416)を、乗算予測アルゴリズムと実際に並行して処理でき、一方で、換算桁送り値Sの実際の計算は、2つの短い数sとsとの差を得ることにより、迅速に行うことができる。従って、順序は以下のようにある。sとsとを並行して計算する。次に、sを、図2の支線230(図4にも示されている)を介して、乗算予測アルゴリズムから、換算予測アルゴリズムへと供給する。その結果、次の周期において、換算桁送り値sもすぐ利用できる。これについては、後で、図8a〜図8cを参考にして詳しく説明する。
【0062】
ブロック422の後、ブロック424において、nが、MAX−kよりも大きいかどうかを決定する。この質問に対して「はい」が応答されると、ブロック426において、新しいcurを計算する。ブロック424の質問に対して、「いいえ」が応答されると、ブロック428において、curがkに等しくなるように設定される。次に、ブロック430において、換算予測方法の結果値、すなわち、bおよびsが出力される。そうして、換算予測方法は、ブロック432で終了する。
【0063】
乗算予測パラメータaおよび換算予測パラメータb、ならびに、メモリー管理パラメータn、MAX、k、およびcurの詳細な説明について、ドイツ特許3631992号C2が参照される。パラメータaおよびbが+1、0、および−1の値をとってもよいZ/NZのためのZDN方法とは異なり、本発明に基づく方法における相当するパラメータa、bは、0および1の値のみをとることができる。予測パラメータaおよびbは、本発明にかかる係数乗算のためには、任意にのみ必要である。つまり、任意に大きくない格納場所をNおよびZのために使用できる。しかし、本発明の方法は、任意の大きさの記録器を使用できるという条件下において、一般的に何の困難もなく実施される。この場合、乗算予測方法が取り消されてしまうことはなく、乗数の「1」が再び見出されるまでの間ずっと実施されている。そのときまで、図2のブロック214を参照すると、sは、特定のできる限り大きな数を有している。その結果、桁送りされた中間結果の多項式Z´は、極めて大きな値を取ることが可能である。次に、ブロック218において、乗数1が見出されたという事実に基づき、被乗数を、桁送りされた中間結果多項式Z´に加える。
【0064】
しかし、重要な特徴は、それぞれの乗算工程と同時に、係数換算も行われることであり、これにより、数値全てを許容限度(ertraeglichen Grenzen)に含むことができる。
【0065】
このため、本発明に基づく換算桁送り値sは、桁送りされた係数多項式の次数が、実際の中間結果の多項式の次数に等しくなるように択される。桁送りされた係数多項式が、Z´(x)とC(x)との和から減算される場合、通常、更新された中間結果Zは、Z´よりもずっと小さい。これにより換算が行われ、図2の工程218で計算される、更新された中間結果の多項式Zは、ブロック202のもともとの係数多項式と必ずしも関連して換算されるのではなく、例えば、全ての反復の間に、左へと桁送りされた係数多項式、すなわち、より高い次数を有する係数多項式にのみ関連して換算されていてもよいことが分かる。しかし、必ずしもそうである必要はない。しかし、このような場合が生じると、nが0に等しいかどうか、すなわち、Nビットが過剰緩衝記録装置にあるかどうかを決定する工程220により、更新された中間結果から係数の他の減算を行い、その結果、次に、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(2)算術の場合、すなわち、多項式の係数が、0または1だけでよい場合、加算演算は、減算演算に相当し、一般的に、XOR結合として実施できる。しかし、多項式の係数が、他の数の方式、例えば、8進数方式(Oktal−System)、または、10進数方式(Dezimal−System)に含まれている場合、当然、減算は加算に相当していない。
【0070】
補助換算桁送り値sを用いる換算桁送り値sの計算を示すために、以下に、図8a〜図8cについて説明する。図8aには、中間結果の多項式Zおよび係数多項式Nを示す。単なる例として、中間結果の多項式は、次数4、すなわち、4ビットを有しており、一方、係数多項式は、次数9、すなわち、9ビットを有している。図2のブロック214において、桁送りされた中間結果の多項式Z´を計算する。この計算は、sにより累乗されている変数xを乗算することにより行う。従って、乗数に8個の0があり、これにより、乗算桁送り値sは8となる。係数換算を行うためには、係数Nは、桁送りされた中間結果の多項式Z´の桁数(Groessenordnung)になっている必要がある。本発明に基づき、係数多項式Nは、桁送りされた中間結果の多項式Z´の次数と、桁送りされた係数多項式Nの次数とが同じくなる程度にまで桁送りされている。このためには、図8bから分かるように、sの換算桁送り値は3に等しくなければならない。
【0071】
図8bから、同じく、sの調査は、実際には、sが計算されている場合にはじめて行えることが分かる。すなわち、本発明にとって好ましいように、図2のブロック210と212とを並行して実施することはできない。この理由により、補助予測パラメータsが挿入される。図8aから分かるように、補助桁送りパラメータsは、中間結果の多項式Zと、係数多項式Nとの次数の差に等しい。実際の工程のsを知らなくてもこの値を計算できることがsの利点である。
【0072】
図8cから、sは、sとsとの和に常に等しいということが分かる。従って、sは、以下の等式が当てはまるようにsおよびsと常に関連している。
=s−s
従って、sを決定するための時間のかかる反復方法を、sを決定するための時間のかかる反復方法(折り返し線416)と、迅速な差演算(図4のブロック422)とに分解できる。これにより、2つの予測方法をほぼ並行して実施できる。この際、唯一の連続している構成部分は、ブロック422の(図4)の計算の前に、sの実際の値が乗算予測アルゴリズムにより既に計算され、供給されている(図2の矢印230)ことである。
【0073】
既に説明したように、GF(2)についての係数乗算を計算するための本発明に基づく概念の重要な利点は、この概念を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(2)のために変更するために、図5に示すように、UND格子520を、3ビット計数器の上側の出力部と、次に高い段階の全加算器の下から2番目の入力部との間に挿入する必要がある。0が、イネーブル入力部530に格納されると、xの値は、常に0になっている。次に、yおよび0の加算のために、全加算器510の機能は常に衰退する。これに対して、Z/NZの場合、UND格子のイネーブル入力部に、「1」が提供される。その結果、UND格子は、他の作用を有していない。
【0076】
従って、GF(2)では、UND格子の出力が0に等しい。これに対し、Z/NZでは、Xが必要であり、UND格子の出力が0に等しくなくてもよい。それゆえ、イネーブルは、UND格子により実現される。これに対し、GF(2)、つまり、イネーブル入力部530において0の場合、全加算器における加算は些細なことである。
【0077】
図6は、UND格子520の状態を示す。図5に部分的に示す算術演算装置は、イネーブル信号SC=1である場合、標準加算器として機能する。これに対し、算術演算装置は、イネーブル信号SC=0である場合、XOR回路として機能する。
【0078】
図7は、Z/NZおよびGF(2)のための算術演算装置の概略的なブロック図を示す。算術演算装置は、長い数の算術装置700の周りに分類されている。この算術装置700は、既述の3演算数演算を、Z/NZまたはGF(2)のために実施する。
【0079】
算術演算装置は、Z/NZ制御装置710、GF(2)制御装置720、および、モード選択装置730をさらに含んでいる。算術演算装置が、演算に、整数の係数を計算する場合、モード選択730は、算術装置700を、第8番目の加算演算が実施され、この場合、算術装置は、Z/NZ制御装置710と出力部側および入力部側において接続されているように駆動する。これに対し、算術演算装置は、GF(2)算術を行う場合、モード選択730は、算術装置700を、加算の代わりにXOR演算が実施されるように起動し、算術装置の入力部と出力部とは、GF(2)制御装置と接続されている。
【0080】
それゆえ、整数係数算術と、多項式係数算術との双方を算術演算装置に組み込むために、別個の算術装置を必要とはしない。
【0081】
ただし、3演算数演算が、全てのビットのために並行して行われるという事実に基づき、ほとんどの集積回路領域は、算術装置700によって消費され、一方で、制御装置710および720では、より短い数で、より小さな計算が実施されるのでビット領域は特に重要ではなくなる。
【0082】
従って、整数算術と多項式算術との双方のために、独自の算術演算装置を必要とする算術演算装置とは反対に、係数乗算を計算するための本発明に基づく概念によれば、集積回路領域を50%近く減少できる。特にスマートカードに対して、この集積回路領域の節約は、競争上の優位性を導く。
【図面の簡単な説明】
【図1】
GF(2)における係数累乗法を具体的に説明するためのフローチャートである。
【図2】
本発明に基づく方法の高レベルのフローチャートである。
【図3】
乗算桁送り値を計算するための、乗算予測方法のフローチャートである。
【図4】
換算桁送り値を計算するための、換算予測方法のフローチャートである。
【図5】
GF(2)算術またはZ/NZ算術のための3演算数加算器の一部を示す図である。
【図6】
桁上げ遮断機能の詳細な図である。
【図7】
Z/NZ−GF(2)算術演算装置のブロック図である。
【図8】
a〜bは、換算桁送り値の計算を具体的に説明するための概略的な図である。
【図9】
Z/NZにおいて係数乗算を行うためのZDN方法の概要を示す図である。
【符号の説明】
200 係数乗算のための方法の開始
202 広域変数
204 中間結果多項式の初期化
206 mの初期化
208 nの初期化
210 乗算予測方法
212 換算予測方法
214 中間結果多項式の生成
216 桁送りされた係数多項式の生成
218 3演算数加算
220 アルゴリズムが終了したかどうかの調査
222 Zの出力
224 係数乗算するための方法の終了
226 折り返し線
230 s桁上げ
300 乗算予測方法の開始
302 広域変数
304 sの初期化
306 aの初期化
308 処理されたビットが0または1であるかどうかの決定
310 mの増加
312 sの増加
314 aおよびsの出力
316 さらに桁送りできるかどうかの決定
318 mの増加
320 sの増加
322 折り返し線
324 aの設定
326 乗算予測方法の終了
400 換算予測方法の開始
402 広域変数
404 Siの初期化
406 換算できるかどうかの決定
408 bの設定
410 nの増加
412 Siの増加
414 桁送りされた中間結果の多項式の次数の調査
416 折り返し線
418 bの設定
420 nの設定
422 sの計算
424 nの調査
426 curkの設定
428 curkの設定
430 b、sの出力
432 換算予測方法の終了
500 3ビット計数器
510 全加算器
520 スイッチ
530 制御
700 3演算数算術演算装置
710 Z/NZ制御装置
720 GF(2)制御装置
730 モード選択
900 ZDN方法の開始
910 ZDNアルゴリズムのための乗算予測方法
920 Zの左への桁送り
930 ZDNアルゴリズムのための換算予測方法
940 係数の左または右への桁送り
950 ZDNアルゴリズムのための3演算数加算
960 ZDNアルゴリズムの終了

Claims (13)

  1. 係数(N)を使用して、被乗数(C)に乗数(M)を係数乗算するための方法において、
    上記被乗数(C)、上記乗数(M)、および、上記係数(N)は、変数(x)の多項式であり、
    (a)乗算桁送り値(s)を得るために、乗算予測方法を実施(210)し、上記乗数多項式に存在していない乗数の累乗で、上記乗算桁送り値sが増加される工程と、
    (b)桁送りされた中間結果の多項式(Z´)を得るために、上記乗算桁送り値(s)により累乗されている上記変数(x)に、中間結果の多項式(Z)を乗算する(214)工程と、
    (c)換算桁送り値(s)を得るために換算予測方法(212)を実施し、上記換算桁送り値(s)は、上記桁送りされた中間結果の多項式(Z)の次数と上記係数多項式(N)の次数との差に等しい工程と、
    (d)桁送りされた係数多項式(N´)を得るために、上記換算桁送り値(s)により累乗されている上記変数(x)に、上記係数多項式(N)を乗算する(216)工程と、
    (e)更新された中間結果の多項式(Z)を得るために、上記桁送りされた中間結果の多項式(Z´)と上記被乗数(C)とを加算し(218)、上記桁送りされた係数多項式(N´)を減算する工程と、
    (f)上記乗数(M)の全ての累乗が処理されるまで、工程(a)〜(e)を繰り返す(226)工程とを含み、
    上記工程(a)〜(e)を繰り返す場合に、
    上記工程(d)において、上記中間結果の多項式(Z)として、先の上記工程(e)の上記更新された中間結果の多項式(Z)を使用し、
    上記工程(c)において、係数多項式(N)として、先の上記工程(d)の上記桁送りされた係数多項式を使用する方法。
  2. 上記乗算桁送り値(s)に等しい桁数で、上記中間結果の多項式(Z)を桁送りすることで、工程(d)における上記乗算(210)を実施し、
    上記換算桁送り値(s)に等しい桁数で、上記係数多項式(M)を桁送りすることにより、上記工程(d)における乗算(216)を実施する、請求項1に記載の方法。
  3. 上記多項式の係数は、「0」または「1」の値のみを有することができ、
    上記工程(e)における加算および減算(218)は、上記中間結果の多項式(Z´)、上記被乗数(C)、および、上記桁送りされる係数多項式(N´)のビット毎のXOR結合により実施される、請求項1または2に記載の方法。
  4. 上記換算予測方法(212)において換算桁送り値(s)を得るための工程は、
    上記係数多項式(N)の次数と、上記補助桁送り値(s)により累乗されている変数が乗算されている、上記先の工程(e)の上記更新された中間結果の多項式(Z)との次数とが等しくなるように、補助桁送り値(s)を決定する(414)工程と、
    上記換算桁送り値(s)を得るために、上記乗算桁送り値(s)と、上記補助桁送り値(s)との差を形成する(422)工程とを含む、請求項1〜3のいずれかに記載の方法。
  5. 上記乗算予測方法を実施する上記(210)工程と、上記補助桁送り値(s)を決定する上記(414)工程とを相互に並行して実施する、請求項4に記載の方法。
  6. 上記乗算桁送り値(s)は、最大乗算桁送り値(k)に制限されており、
    上記乗算桁送り方法を実施する上記(210)工程は、
    上記乗算桁送り値が、上記最大乗算桁送り値(k)に等しい場合、上記乗算桁送り値(s)を、上記最大桁送り値(k)に等しく設定し、所定の値を有する乗算予測パラメータ(a)を生成する(306,324)工程を含み、
    上記加算工程は、
    上記乗算予測パラメータ(a)が、所定の値を有している場合、
    上記所定の中間結果の多項式(Z´)および上記桁送りされた係数多項式(N´)のみを加算する工程を含む、請求項1〜5のいずれかに記載の方法。
  7. 係数(N)を使用して、被乗数(C)に乗数(M)を係数乗算するための装置において、
    上記被乗数(C)、上記乗数(M)、および、上記係数(N)は、変数(x)の多項式であり、
    (a)乗算桁送り値(s)を得るために、乗算予測方法を実施(210)し、上記乗数多項式に存在していない乗数の累乗で、上記乗算桁送り値sを増加させる装置と、
    (b)桁送りされた中間結果の多項式(Z´)を得るために、上記乗算桁送り値(s)により累乗されている上記変数(x)に、中間結果の多項式(Z)を乗算する(214)装置と、
    (c)換算桁送り値(s)を得るために換算予測方法(212)を実施し、上記換算桁送り値(s)は、上記桁送りされた中間結果の多項式(Z)の次数と上記係数多項式(N)の次数との差に等しい装置と、
    (d)桁送りされた係数多項式(N´)を得るために、上記換算桁送り値(s)により累乗されている上記変数(x)に、上記係数多項式(N)を乗算する(216)装置と、
    (e)更新された中間結果の多項式(Z)を得るために、上記桁送りされた中間結果の多項式(Z´)と上記被乗数(C)とを加算し(218)、上記桁送りされた係数多項式(N´)を減算する装置と、
    (f)上記乗数(M)の全ての累乗が処理されるまで、上記装置(a)〜(e)を繰り返し駆動する(226)装置とを含み、
    上記装置(a)〜(e)を繰り返し駆動する場合に、
    上記中間結果の多項式(Z)として、上記加算する(218)ための装置を先行して駆動することにより生じる更新された中間結果の多項式(Z)を使用するために、桁送りされた中間結果の多項式を得るための乗算をする(214)装置が配置されており、
    桁送りされた係数多項式を得るために、上記の繰り返し駆動の際に、係数多項式(N)として、乗算をする(216)ための装置を先行して駆動することにより生じる桁送りされた係数多項式を使用するために、換算予測方法(212)を実施するための装置とが配置されている装置。
  8. 桁送りされた中間結果の多項式(Z´)を得るために乗算をするための上記装置(214)、および、桁送りされた係数多項式(N´)を得るために乗算をするための上記装置(216)は、上記乗算桁送り値(s)または上記換算桁送り値(s)に関係なく、相当する桁数だけ記録内容を桁送りするために制御可能な桁送り記録装置として実施されている、請求項7に記載の装置。
  9. 加算および減算するための上記装置(218)は、上記中間結果の多項式(Z´)、上記被乗数(C)、および、上記桁送りされた係数多項式(N´)のビット毎のXOR結合として実施されている、請求項7または8に記載の装置。
  10. 加算および減算するための上記装置(218)は、
    第1入力部配線に、上記中間結果の多項式(Z)のビットを印加でき、第2入力部配線に、上記被乗数(C)のビットを印加でき、第3入力部配線に、上記桁送りされた係数多項式(N´)のビットを印加できる、3つの入力部配線および2つの出力部配線を有する計数器(500)と、
    上記計数器(500)の低い値の出力部が、全加算器(510)の高い値の入力部配線に接続されている、3つの入力部および1つの出力部を有する全加算器(510)と、
    上記計数器(500)の高い値の出力部配線と、全加算器(510)の中間入力部との間に、高い値のビットのために接続されているスイッチ(520)と、
    多項式を処理できる場合、スイッチ(520)を開けるための、制御装置(530)とを有する、請求項7または8に記載の装置。
  11. 係数多項式を使用して、被乗数多項式に乗数多項式を乗算するための算術演算装置において、
    上記被乗数多項式、上記乗数多項式、および、上記係数多項式は、変数の多項式であるか、あるいは、選択的に、係数整数を使用して、被乗数整数に乗数整数を乗算するために、
    (a)乗算桁送り値(s)を得るために、乗算予測方法を実施(210)し、上記乗数の累乗が上記乗数多項式に存在していない場合、上記乗算桁送り値(s)を増加させる装置と、
    (b)桁送りされた中間結果の多項式を得るために、上記乗算桁送り値(s)により累乗されている上記変数に、中間結果の多項式を乗算する(214)装置と、
    (c)換算桁送り値(s)を得るために換算予測方法(212)を実施し、上記換算桁送り値(s)は、上記桁送りされた中間結果の多項式の次数と上記係数多項式の次数との差に等しい装置と、
    (d)桁送りされた係数多項式を得るために、上記換算桁送り値(s)により累乗されている上記変数(x)に、上記係数多項式を乗算する(216)装置と、
    (e)整数の中間結果、および、桁送りされた整数係数を得るために、整数演算数用の乗算予測方法、および、換算予測方法を実施するための装置(710)と、
    (f)上記整数演算数または上記多項式の中間結果、上記桁送りされた係数多項式、および、上記多項式被乗数を組み合わせるために、桁上げ遮断装置(730)を有する3演算数加算器(700)と、
    (g)多項式演算数を処理する場合、桁上げは行われず、整数演算数を処理する場合、桁上げが行われるよう、上記桁上げ遮断装置を制御するための制御装置(730)とを有する装置。
  12. 桁上げ遮断装置を有する上記3演算数加算器は、
    第1入力部配線に、上記中間結果多項式のビットを印加でき、第2入力部配線に、上記被乗数(C)のビットを印加でき、第3入力部配線に、上記桁送りされた係数多項式のビットを印加できる、3つの入力部配線および2つの出力部配線を有する計数器(500)と、
    上記計数器(500)の低い値の出力部が上記全加算器(510)の高い値の入力部配線に接続されている、3つの入力部および1つの出力部を有する全加算器(510)と、
    上記計数器(500)の高い値の出力部配線と、全加算器(510)の中間入力部との間に、高い値のビットのために接続されているスイッチ(520)と、
    多項式を処理できる場合、上記スイッチ(520)を開くための、制御装置(530)とを有する、請求項11に記載の算術演算装置。
  13. 存在する3演算数加算器の数が、上記係数整数または上記多項式整数の桁数よりも大きいかあるいは同じである、複数の3演算数加算を備える、請求項12に記載の算術演算装置。
JP2002566769A 2001-02-16 2002-01-24 モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置 Expired - Lifetime JP3939658B2 (ja)

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 true JP2004519052A (ja) 2004-06-24
JP3939658B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011528810A (ja) * 2008-07-21 2011-11-24 シーメンス アクチエンゲゼルシヤフト 標数2の乗算を実現するための方法およびプロセッサ装置

Families Citing this family (29)

* Cited by examiner, † Cited by third party
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
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
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
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 北京天碁科技有限公司 一种实现二进制多项式运算的硬件配置方法及硬件系统
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的高基模乘器
CN107004072A (zh) * 2014-12-12 2017-08-01 皇家飞利浦有限公司 电子生成设备
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
US20220121424A1 (en) * 2020-10-21 2022-04-21 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)

* Cited by examiner, † Cited by third party
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
DE3763872D1 (de) * 1986-03-05 1990-08-30 Holger Sedlak Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens.
DE3631992A1 (de) * 1986-03-05 1987-11-05 Holger Sedlak Kryptographie-verfahren und kryptographie-prozessor 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 张胤微 高速模乘法装置
AU3286399A (en) * 1998-12-18 2000-07-12 Motorola, Inc. Circuit and method of cryptographic multiplication

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011528810A (ja) * 2008-07-21 2011-11-24 シーメンス アクチエンゲゼルシヤフト 標数2の乗算を実現するための方法およびプロセッサ装置
US8732227B2 (en) 2008-07-21 2014-05-20 Siemens Aktiengesellschaft Method and processor unit for implementing a characteristic-2-multiplication

Also Published As

Publication number Publication date
DE10107376A1 (de) 2002-08-29
US20040019622A1 (en) 2004-01-29
CN1489726A (zh) 2004-04-14
JP3939658B2 (ja) 2007-07-04
CN1296817C (zh) 2007-01-24
WO2002067108A2 (de) 2002-08-29
DE50209713D1 (de) 2007-04-26
EP1360579B1 (de) 2007-03-14
WO2002067108A3 (de) 2002-12-12
EP1360579A2 (de) 2003-11-12
TW550498B (en) 2003-09-01
ATE357016T1 (de) 2007-04-15
US6920473B2 (en) 2005-07-19

Similar Documents

Publication Publication Date Title
JP3939658B2 (ja) モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置
Satoh et al. A scalable dual-field elliptic curve cryptographic processor
EP0801345B1 (en) Circuit for modulo multiplication and exponentiation arithmetic
US7831651B2 (en) Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method
CN101194457B (zh) 随机模数化多项式约简方法及其硬件
JP4302640B2 (ja) 被乗数のシフトを用いて乗算を計算するための装置およびその方法、上記装置を実行するためのプログラムコードを格納した記録媒体
US7831650B2 (en) Method for modular multiplication
Großschädl A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2m)
EP0984357A1 (en) Apparatus and method for elliptic-curve multiplication and recording medium having recorded thereon a program for implementing the method
EP0952697B1 (en) Elliptic curve encryption method and system
Chang et al. Low complexity bit-parallel multiplier for GF (2/sup m/) defined by all-one polynomials using redundant representation
CN100382011C (zh) 蒙哥马利乘法器中的流水线内核
WO2002003608A1 (en) Method and apparatus for incomplete modular arithmetic
JP3726966B2 (ja) 乗算器及び暗号回路
US7698357B2 (en) Modular multiplication with parallel calculation of the look-ahead parameters
JP2000010479A (ja) モンゴメリ・リダクション装置及び記録媒体
EP1273124A1 (en) Cryptographic methods and apparatus using word-wise montgomery multiplication
JP4662802B2 (ja) 計算方法、計算装置及びコンピュータプログラム
US7016929B2 (en) Method and device for calculating a result of an exponentiation
US7016927B2 (en) Method and apparatus for modular multiplication
EP1600852B1 (en) Method and apparatus for calculating a modular inverse
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
Gutub Fast 160-bits GF (p) elliptic curve crypto hardware of high-radix scalable multipliers
JPH11282351A (ja) セキュリティ技術における逆元演算方法、その方法を使った演算装置、及びその方法を実行するプログラムを記録した記録媒体
Erdem et al. Efficient and Constant Time Modular Reduction With Generalized Mersenne Primes

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