JP4660066B2 - 剰余乗算するための装置 - Google Patents

剰余乗算するための装置 Download PDF

Info

Publication number
JP4660066B2
JP4660066B2 JP2002571986A JP2002571986A JP4660066B2 JP 4660066 B2 JP4660066 B2 JP 4660066B2 JP 2002571986 A JP2002571986 A JP 2002571986A JP 2002571986 A JP2002571986 A JP 2002571986A JP 4660066 B2 JP4660066 B2 JP 4660066B2
Authority
JP
Japan
Prior art keywords
modulus
multiplication
transformed
reduction
value
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
Application number
JP2002571986A
Other languages
English (en)
Other versions
JP2004519017A (ja
JP2004519017A5 (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 JP2004519017A publication Critical patent/JP2004519017A/ja
Publication of JP2004519017A5 publication Critical patent/JP2004519017A5/ja
Application granted granted Critical
Publication of JP4660066B2 publication Critical patent/JP4660066B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/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

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)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Diaphragms For Electromechanical Transducers (AREA)
  • Paper (AREA)
  • Spinning Or Twisting Of Yarns (AREA)

Description

本発明は、暗号法アルゴリズム、ならびに、このような暗号法アルゴリズムを実施するための装置、そして、特に、乗算先読み方法(Multiplikations-Vorausschau-Verfahren)、および、リダクション先読み方法(Reduktions-Vorausschau-Verfahren)を用いた剰余乗算(modularenMultiplizieren)のための方法と装置に関するものである。
【0001】
暗号法は、法計算のための主な使用の1つである。暗号法のための主なアルゴリズムは、既知のRSAアルゴリズムである。RSAアルゴリズムは、べき乗剰余を基に構成されている。この累乗法は、以下のように示せる:
C=Mmod(N)
この際、Cは、符号化された情報、Mは、符号化されていない情報、dは、秘密鍵、Nは、法である。通常、法Nは、2つの素数pとqとの乗算によって生成される。べき乗剰余は、既知の平方および乗法アルゴリズム(Square-and-Multiply-Algorithmus)によって、乗法に分解される。さらに、べき指数dは、2の累乗に分解される。その結果、べき乗剰余を、複数の剰余乗算に分解できる。それゆえ、べき乗剰余を、計算によって効果的に実施できるように、べき乗剰余は、法加算法に分解可能な剰余乗算に分解される。
【0002】
ドイツ特許2次公報第3631992号(DE3631992C2)に、乗算先読み方法およびリダクション先読み方法を用いて、剰余乗算を速く行う暗号方法が開示されている。ドイツ特許2次公報第3631992号(DE3631992C2)に記載されている方法は、ZDN方法とも称され、図9を参照して詳しく説明する。アルゴリズムの開始工程900の後、広域変数M,C,およびNが初期化される。目的は、以下の剰余乗算を計算することである:
【0003】
【数1】
【0004】
Mは、乗数を示し、一方、Cは、被乗数を示している。Zは、剰余乗算の結果であり、一方、Nは、法である。
【0005】
次に、さしあたり詳しく説明する必要のない様々な局所変数が初期化される。続いて、2つの先読み方法が使用される。乗算先読み方法GEN−MULT−LAでは、様々な先読み規則を用いて、乗算桁送り値sおよび乗算先読みパラメータaが計算される(910)。次に、Zレジスタの現在の内容が、s だけ左桁送りされる(920)。
【0006】
これとほぼ並行して、リダクション桁送り値Sおよびリダクションパラメータbを計算するために、リダクション先読み方法GEN−Mod−LA(930)が実施される。次に、工程940では、桁送りされた法の値N′を生成するために、法レジスタの内容、つまり、Nの現在の内容が、s だけ左もしくは右に桁送りされる。ZDN方法の中央3演算数演算を、工程950に示す。この際、工程920の後、乗算先読みパラメータaが乗算された被乗数Cと、リダクション先読みパラメータbが乗算され桁送りされた法N’とに、中間結果Z’が加算される。実際の状態に応じて、先読みパラメータaおよびbは、+1、0、または−1の値を有していてもよい。
【0007】
乗算先読みパラメータaが、+1であり、リダクション先読みパラメータbが、−1であるのが典型的な場合である。その結果、被乗数Cが桁送りされた中間結果Z’に加算され、桁送りされた法N’が桁送りされた中間結果Z’から減算される。乗算先読み方法が初期設定されている個々の左桁送り数よりも多くを許容するとしたら、すなわち、sがkとしても記載されるsの最大許容値よりも大きい場合、aは値0を有するようになる。aが0であり、先行する法リダクション、すなわち、桁送りされた法の先行する減算のせいで、Z’がまだ非常に小さい、特に、桁送りされた法N’よりも小さい場合、リダクションを行う必要はない。その結果、パラメータbは0である。
【0008】
工程910から950は、被乗数の全てのが処理されるまで、すなわち、mは0であり、1つのパラメータnも0であるまでずっと実施される。このパラメータは、桁送りされた法N’が、まだ元々の法Nよりも大きいか、それとも被乗数の全てのが既に処理されているという事実にもかかわらず、Zから法を減算することにより、まださらなるリダクション工程を行われなければならないかを示している。
【0009】
最後に、Zが0よりも小さいかどうかさらに決定される。その場合には、最後のリダクションが達成されるように、法NがZに加算されなければならない。このことにより、最後に剰余乗算の正確な結果Zが得られる。工程960において、ZDN方法を用いる剰余乗算が終了される。
【0010】
工程910において乗算先読みアルゴリズムによって計算される乗算桁送り値sおよび乗算パラメータaは、乗数のトポロジー(Topologie)および先読み規則(Vorausschau-Regeln)によって生じ、この先読み規則はドイツ特許2次公報第3631992号(DE3631992C2)に記載されている。
【0011】
リダクション桁送り値sおよびリダクションパラメータbは、同じくドイツ特許2次公報第3631992号(DE3631992C2)に記載のように、Zレジスタの現在の内容を、値2/3×Nと比較することにより決定される。この比較により、ZDN方法は、その名称を有している(ZDN=Nの三分の二(ZweiDrittel N))。
【0012】
図9に記載のようなZDN方法は、剰余乗算を3演算数加算(図9のブロック950)に戻す。この際、演算時間効率を上昇させるため、乗算先読み方法およびリダクション先読み方法も共に使用される。従って、モンゴメリーリダクション(Montgomery-Reduktion)と比較して、有利な演算時間(Rechenzeitvorteil)が達成される。
【0013】
以下に、図10を基に、リダクション先読み方法について詳しく説明する。この方法は、図9のブロック930で行われているものである。まず、ブロック1000に局所変数、すなわち、リダクション先読みパラメータbおよびリダクション桁送り値sのための予約が行われる。ブロック1010では、リダクション桁送り値sがゼロに初期化される。次に、ブロック1020では、値ZDNが計算される。この値ZDNは法Nの2/3に等しい。ブロック1020において決定される値は、独自のレジスタつまり暗号法コプロセッサのZDNレジスタに格納される。
【0014】
次に、ブロック1030では、変数nが0であるかどうか、あるいは、桁送り値sが−kであるかどうかが決定される。kは、ハードウエアによって予め与えられている最大桁送り値を定義する値である。ブロック1030は、第1経路(ersten Durchgang)において「いいえ」を応答する。その結果、ブロック1040では、パラメータnが減少される。また、ブロック1060では、リダクション桁送り値も1だけ減少される。そしてブロック1080では、変数ZDNが新規に、つまり、変数ZDNの半分の値が割付られる。このことは、ZDNレジスタにある値の右桁送りにより簡単に得られる。次に、ブロック1100において現在の中間結果の絶対値がZDNレジスタにある値よりも大きいかどうかが決定される。
【0015】
ブロック1100での比較演算は、リダクション先読み方法の中央演算である。問い合わせに対し「はい」が応答されると、反復は終了し、リダクション先読みパラメータbは、ブロック1120において記載されたように割り付けられる。これに対し、ブロック1100において応答される問い合わせに対して、「いいえ」が応答されると、ブロック1030におけるnおよびsの現在の値を調査するために、反復が再び始まる(zurueckgesprungen)。ブロック1030が、反復のいつかの時点で「はい」によって応答されると、ブロック1140へと進む(gesprungen)。このブロック1140において、リダクションパラメータbがゼロに設定される。このことは、図9のブロック950に記載の3演算数演算では法が加算も減算もされないことに繋がる。このことは、中間結果Zが大変小さかったので、法リダクションは必要なかったということを意味している。次に、ブロック1160では変数nが新規に割付られる。この際、次にブロック1180において最後にリダクション桁送り値sが計算される。この値は、図9のブロック940において、桁送りされた法を得るために、法の左桁送りを行うのに必要である。
【0016】
最後に、ブロック1200,1220,1240では、記録超過(Registerueberschreitungen)が生じていないことを確実にするために、Nレジスタの現在の割付を調査するのに、さらなる変数MAXおよびcur−kを考慮しながら、nおよびkの現在の値が調査される。詳しい内容は、本発明には関係がないが、ドイツ特許2次公報第3631992号(DE3631992C2)に詳しく記載されている。
【0017】
図9および図10に記載のアルゴリズムは、図7に示すようなハードウエアとして実施されている。ブロック950に実施されている3演算数演算のためには、図7にAUで示す計算装置700が必要である。この計算装置が、被乗数用のレジスタC710、法用のレジスタN720、および、剰余乗算の現在の中間結果用のレジスタZ730に連結されている。さらに、図7から、3演算数演算の結果が逆連結矢印740を介して再びZレジスタ730に供給されることが分かる。さらに、図7から、レジスタが相互に接続されていることが分かる。図10のブロック1020において計算される値ZDNは、独自のZDNレジスタ750に格納されなければならない。ZDN比較、つまり図10に記載の反復ループは、さらに、独自のZDN比較のための制御論理760によって順序制御される。
【0018】
従って、Z:=M×C mod Nの計算のためのZDNアルゴリズムの主な作用は、以下の両方の演算から構成されている:
1.以下の方程式:
2/3N×2−si<|Z|≦4/3N×2−si
が満たされる、レジスタZおよびN用の桁送り値sおよびsの計算、および
2.3演算数合計の計算:
Z:=2sZZ+aC+b×2sz−si
乗算先読みパラメータaおよびリダクション先読みパラメータbは、知られているとおり、−1、0および+1の値であってもよい。
【0019】
中間結果Z,被乗数Cおよび法Nは、長い数、すなわち完全に512よりも大きなまたはビット数でもよい。この際、この数は2048に達するを有していてもよい。
【0020】
しかし、ブロック1100において行われる実際の中間結果Zと値ZDNとの比較は、演算時間の理由からZの全てのビットによって行われるのではなく、多数のZの最上位ビットによってのみ行われる。この際、比較結果のために非常に高い精度を得るには、32ビットの数で十分であることが判明した。
【0021】
この比較に必要な2/3Nの32個の最上位ビットのためには、参照番号750によって図7に示すように、ZDNレジスタと称される独自のレジスタが必要である。
【0022】
さらに、独自のハードウエア比較機が必要である。このハードウエア比較機は、Zレジスタにおける実際の値と、ZDNレジスタにおける実際の値とのために、以下の方程式が満たされるように正しいs値を計算する:
2/3 2−siN<|Z|≦4/3 2−si
従って、この方法において不都合なのは、一方では、付加的なZDNレジスタとハードウエア比較機との双方が、余分に集積回路領域を必要とすることである。他方では、図10に示す反復ループによって行われる2/3Nの計算とZDNアルゴリズムにおける補助桁送り値sの計算とは、全てのアルゴリズムのために臨界的な時間があり、アルゴリズムの全ての演算時間のために完全に決定的であってもよい。
【0023】
本発明の目的は、剰余乗算のための改善された構想を提供することであり、この構想は、一方では面積を節約して実施することができ、他方では必要とする演算時間が短いものである。
【0024】
本目的は、特許請求項1に記載の剰余乗算のための方法、または、特許請求項14に記載の剰余乗算のための装置によって達成される。
【0025】
本発明は、法Nが、変換された法Nにまず変換され、全ての剰余乗算が、実際の法の変わりに変換された法Nによって実施される場合には、更新された中間結果と、値ZDNと、すなわち法Nの2/3倍との演算時間の比較を簡単にできるという認識に基づいている。本発明に基づき、法は、変換された法の所定の分数、すなわち、好ましい実施例では、変換された法の2/3倍が、特定の数となるように変換される。この特定の数は、2/3Nと中間結果Zとの比較が簡単に(trivial)なるように選択される。本発明に基づけば、変換された法の所定の分数が所定の第1値を有する上位のを有し、その後に、所定の第2値を有している少なくとも1つの低位のが続くように変換が行われる。2進法表示(binaererDarstellung)と、最上位のビットが符号を示している2の補数規則(Zweier-Komplement-Konvention)とにおいて、2/3Nの第2最上位ビットが2進法で1であり、一方、第3の最上位ビットおよびさらに他の低位ビットがゼロであるように、変換された法へと変換される。
【0026】
この場合、桁送り値sを得るために数えなければならないのは、変換された法の所定の分数の最上位の1と、剰余乗算の実際の中間結果Zとの間の数のみであるので、比較は簡単である。そして、ZDN比較によって得られるいわゆる補助桁送り値sが、並行して行われている乗算先読み方法の乗算桁送り値から減算されることにより、桁送り値sからリダクション桁送り値sを簡単に査定することができる。
【0027】
全てのZDN方法は、従来技術と同じく処理される。しかしここでは法Nの代わりに変換された法Nが使用される。その結果、剰余乗算の「変換結果」が最後に獲得される。この変換結果は、変換された法Nの余剰群(Restklasse)にある。最後の逆変換は、剰余乗算の変換結果が、もともとの法Nを用いて法リダクションされることである。従って、法Nを用いて被乗数Cにより乗数Mを剰余乗算した実際の結果が提供される。
【0028】
本発明の好ましい実施例を以下に、添付の図を参照しながら詳しく説明する。
図1は、剰余乗算のための本発明の構想のフローチャートを示す。図2は、法Nの、ビットの第1部分N、および、ビットの第2部分Nへの分解を示す。図3は、変換された法Nの、長さL(N)を有するの第1部分、および、残りの桁(verbleibenden Stellen)への分解を示す。図4は、変換された法Nの2/3倍のの表示を示す。図5は、ランダム化により変換された法のの概略的な表示を示す。図6は、本発明に基づく剰余乗算を実施するための演算装置の概略的な表示を示す。図7は、公知のZDN方法のための演算装置の概略的な表示を示す。図8aから8cは、乗算桁送り値sと、補助桁送り値sと、リダクション桁送り値sとの間の関係を概略的に表示する図である。図9は、既知のZDN方法のフローチャートを示す。図10は、既知のリダクション先読み方法のフローチャートを示す。
【0029】
図1は、法Nを用いる、乗数Mによる被乗数Cの剰余乗算のための本発明の方法のフローチャートを示す。まず、工程10において、法Nが、以下の方程式:
=T×N
に基づいて、変換された法Nに変換される。
【0030】
次に、工程12において、剰余乗算は、変換された法Nと変換された法の所定の分数とを用いて処理される。本実施例では、この所定の分数が、2/3であることが好ましい
つまり、剰余乗算の結果は、法Nによって定義される余剰群においてではなく、変換された法Nによって定義される余剰群において計算される。本発明の構想は、変換された法Nを使用することにより、補助リダクション桁送り値s の計算が、非常に簡易化されることが特徴である。この補助リダクション桁送り値sは、既知のリダクション先読み方法の、図10の反復ループに相当している。
【0031】
次に、最後の工程14では、N からNへの逆変換が再び行われる
この際、変換された法Nの余剰群にある変換された結果は、簡単な桁送り/減算リダクション(Verschiebungs/Subtraktions-Reduktion)によって、法Nの余剰群にフィードバックされることが好ましい
【0032】
法Nの変換された法Nへの変換は、変換された法の所定の分数、すなわち、好ましい実施例では、変換された法の2/3倍が、所定の第1値を有するより上位のを有し、このより上位のに所定の第2値を有している少なくとも1つの低位のが続くように、工程10の変換子Tを用いて行われる。従って、つまり、同じく所定の値を有するZの一番上の探され、変換された法の所定の分数の、所定の第1値を有する上位のと、所定の第1値を有する中間結果Zの一番上のとの間の差が差sと同じであることにより、中間結果Zと変換された法の2/3倍との比較を、非常に簡単にできる。
【0033】
要するに、このことは、以下のように示される。Nは、暗号法コプロセッサ(Krypto-Coprozessor)においてではなく、32ビットCPUにおいて変換された法Nに変換されることが好ましく、その結果:
:=T×N
が適用する。このときTは自然数である。
【0034】
使用される全ての数が2進数の場合、Nのために、以下の形が生じる:
=1100...0 XX...XX
従って、変換された法の2/3倍のために、以下の値が生じる:
2/3N=100...0 X′X′...X′X′
と2/3Nとから、両方とも、例えば16ビットの第1部分を有し、そして、L(N)ビットのXもしくはX′の部分を有していることが分かる。いわゆるZDN比較のために、変換された法Nの2/3倍の一番上の16ビットだけが呼び出される。なぜなら、このとき既に、約2−10よりも良い誤り率が生じるからである。従って、変換された法の2/3倍の全ての512ビット、1024ビットまたは2048ビットを、ZDN比較のために呼び出す必要はなく、変換された法の一番上の16ビットと比較されれば十分である。当然、2/3Nのより少ないビットも、比較のためにさらに呼び出されてもよい。しかし、そうすると、誤り率が次第に上昇する。しかし、誤りは、危険ではなく非臨界的であり、リダクション先読み方法の副最適率(suboptimalenVerhalten)に繋がるだけなので、この方法を簡単に行える。
【0035】
従って、変換された法Nの2/3倍は、値1を有する上位のを有しており、このに値0、すなわち、所定の第2値を有する少なくとも1つの低位のが続く。既に記載された実施例の場合、低位の数は15である。当然、ここでも、中間結果Zと変換された法Nの2/3倍との間にどのような大きな差を期待、もしくは処理しなければならないかに応じて、より大きな、またはより小さな数も考慮できる。剰余乗算の中間結果Zの量、つまり、図9のブロック950における3演算数加算の結果の量は、以下の形を生じる:
|Z|=00...01YY...Y
補助桁送り値sは、以下の方程式に基づき計算される:
2/3N×2−si<|Z|≦4/3N×2−si
変換された法Nの2/3倍のトポロジーに基づいて、値sは常に変換された法Nの2/3倍の、1を有する最上位ビットと中間結果の量の最上位1との間の間隔である。
【0036】
本発明に基づき、の差もしくは値sは、簡単に求め得られる。反復は、もはや必要ない。
【0037】
そのうえ、法の2/3倍を格納するために、ZDNレジスタはもはや必要ない。なぜなら、定義により、変換された法Nの2/3倍の上側の、例えば、少なくとも16ビットが常に同じ形だからである。ビット比較機はもはや必要ない。「1」を有する変換された法Nの2/3倍の最上位の桁と、「1」を有するZの最上位の桁と間の価数差(Wertigkeits-differenz)は、例えば、変換された法用のレジスタ、および、中間結果Z用のレジスタのビットとしてのXOR接続により、簡単に実施できる。従って、sは、XOR接続が第1の「1」を出力すると、XOR接続が第2の「1」を出力するとの価数の差と同じである。
【0038】
ZDNレジスタもZDN比較機も必要ないという事実により、全ての演算装置は、より小さな集積回路領域に配置されている。
【0039】
とりわけ、暗号法制御部分、すなわちZDN比較のための制御論理(図7の760)は、あまり複雑ではない。なぜなら、図10の煩雑な反復ループを実施する必要がないからである。従って、計算が迅速になり、その結果、補助桁送り値sの計算によって、タイミング問題はもはや、全てのアルゴリズムに生じない。
【0040】
以下に図2から図5を参照しながら本発明の変換について詳細に説明する。
【0041】
すでに実施されたように、ZDNアルゴリズムの基本部分は、以下の方程式を満たすことである:
2/3 2−siN<|Z|≦4/3 2−si
は、補助桁送り値として示され、に応じて、Nと同一の位置にZを桁送りするのに必要である桁送り値である。従来技術では、sの計算のために、Zを2/3Nと比較する演算が必要である。
【0042】
本発明に基づき、法が、法N に変換されることにより、2/3との比較は簡易化される。この際、変換された法Nは、Nを用いた任意の演算が行われる前はNよりも大きい。そして、全ての計算法Nが実施される。しかし、計算の結果が余剰群N内でなければならない以上、本発明に基づきNによる最後のリダクションが実施される。
【0043】
図2に示すように、NをNビットの長さを有する整数とする。法Nは、常に正の整数、すなわち、2の補数表現(Zweier-Komplement-Darstellung)においてMSB=0であるので、符号のビットは0であり、法Nの第2の最上位ビット(MSB−1)は、常に1である。ZDN比較のために、上記法の全てのビットを中間結果の全てのビットと比較する必要はなく、ZDN比較のためにmビットの数を使用することで間に合う。法Nの最上位のmビットは法N の第1部分を定義する。一方、上記法の残りのN−mビットは法の第2部分N を定義する。好ましい実施例では、mは16である。当然、mがより大きな値、またはより小さな値であることも可能である。
【0044】
図3に示すように、変換は、変換された法Nが、図2の元々の法よりも16ビット長くなるように実施される。
【0045】
ZDN比較のために、Nの最初の16ビットを使用することで十分である。この際、本発明の好ましい実施例では、12ビットだけが比較のために使用される。一方、低位の4ビットは、より低位のビットから生じ得る繰り上げの可能性のためのバッファを構成する。
【0046】
この場合、比較が誤った結果を生じる可能性は、2−12よりも小さい。比較が、誤った結果を生じると、副最適リダクション桁送り値sのみが生じるが、結果として生じる法Nは、依然として正しい
【0047】
上記法が図2に示されるような2の補数表現として使用される場合には、法Nは以下のようにして分解される:
N=2n−m+N
このとき、Nは、変換子Tを用いてNに変換される。この際、Tは合同式のために(Kongruenzgruenden)必要な適切に選択された整数である。Nは、図3に示された形態、すなわち、Nの最上位ビット(MSB)が0でなけばならない。なぜなら、Nは、正の整数でなければならないからである。以下に実施されるように、変換された法の第2の最上位、および、第3の最上位ビットは1でなければならない。一方、変換された法Nの一番上の部分(図3に、参照番号33によって示す)にある他の全てのビットは、「0」の値を有していなければならない。この場合にのみ、つまり、Nの2/3倍のために、図4に示すようなNの2/3倍の一番上の部分は、「1」を有するビットのみを有し、一方、この一番上の部分44の他の全てのビットは0である。その結果、s を決定するための上記の簡単な比較が決定のために実施できる。
【0048】
しかし、まず図3を参照して、変換子Tを用いた、変換された法Nの計算について説明する。以下の定義が通用する:
=T N
=T(2n−m+N
変換子Tには、以下が通用する:
T=|2p−2+2p−3/N
この方程式を用いると、変換された法N に対して以下が生じる:
=|2p−2+2p−3/N|(2n−m+N
=(2n+p−m−2+2n+p−m−3)N/N
+(2p−2+2p−3)N/N
例えば、pおよびmのために典型的な値を考えた場合、つまりpが32ビット、mが16ビットの場合、Nのために以下が生じる:
=2n+14+2n+13+N{(2p−2+2p−3)/N
ただし、Nの計算は、暗号法コプロセッサではなく、ホストCPUにおいて行われることが好ましい。ホストCPUは、短い数の演算装置を備えており、このことは、しかし、Nの計算のために十分である。なぜなら、Tは整数でなければならず、法Nの代わりに法Nの暗号法コプロセッサ内部で計算が行われ、この際、NはNより大きいので、 の16ビットに等しい最初のp−mのみが、補助桁送り値sを計算するために、簡単なZDN比較に関連している。Nの他のnビットは、どのような数でもよく、補助桁送り値sの計算、すなわち、Zとの比較には関連していない。しかし、当然、変換された法Nの全てのビットは、3演算数加算のために必要であり、この3演算数加算は、この際、桁送りされた法を使用する代わりに、桁送りされ変換された法を使用することにより実施される。
【0049】
図17に示すように、変換子Tは、mおよびpのために選択された値のために16ビット整数(16-Bit-Ganzzahl)である。従って、Tの計算のために、もしくは、Nの計算のために必要な割り算は、最上位の32ビットのためにしか実施されない。従って、ホストCPUにおいて、迅速かつ簡単にプログラムできる。
【0050】
図4に、変換された法Nの2/3倍を示す。図3に示すように、NのMSB−1およびMSB−2は「1」であるので、以下が通用する:
(11)=(3)10および(2/3×3)=(2)10=(10)
簡単なビットパターンが変換された法Nの2/3倍のために生じる。この際、変換された法Nの2/3倍の長さはn−m+pである。
【0051】
2/3Nの特別な形式が理由で、このとき、|Z|との比較は非常に簡単となる。2/3Nの最上位の1が法演算の始めに位置n+p−m−2にあることが知られている。従って、レジスタZのためのポインタは、好ましい実施例では、ZのMSBで始められ、Zの最初の「1」を探す。ZのMSBが1である場合には、Zは負の数であり、「1」の代わりにZの最初のゼロを探す
【0052】
レジスタN、および、レジスタZにおける、最初の1のビット位置の差が補助桁送り値sを決定する。法演算の結果は、余剰群N内でなければならないので、本発明では、最終リダクションNが実施され、このことは、逆変換(図1の工程14)が実施されなければならないことを意味する。NからNへの変換は、既知のZDN比較と比較して以下の長所がある。
【0053】
暗号法コプロセッサの内部での2/3Nの計算の代わりに、ホストCPUにおいてNからNへの簡単な変換が行われる。
【0054】
集積回路上にZDNレジスタおよび比較論理は不要である。従って、集積回路の大きさはより小さくなり、集積回路プロセッサの複雑性がより減少する。
【0055】
続いて、NからNへの変換を、図5を参考に記載されているように、法Nのランダム化と組み合わせることができる。Rがsビットの長さの乱数である場合、ランダム化され変換された法Nは図5に示す形である。ランダム化数(Randomisierungszahl)Nによって、上記ランダム化され変換された法は、ランダム化が行われていない場合(図3)よりもsビットだけ、すなわち、Rの数だけ、長くなる。
【0056】
このことは、方程式として、以下のような式で示される:
=T N
=T(2n−m+N
従って、ランダム化された変換子Tは、以下のようである:
T=|2p−2−2p−3+R/N
従って、ランダム化された、変換された法に対して以下の式が生じる:
=|2p−2+2p−3+R/N|(2n−m+N
=(2n+p−m−2+2n+p−m−3+R 2n−m)N/N
+(2p−2+2p−3+R)N/N
pを144ビット、mを16ビット、sを112ビットとすると、ランダム化を含む変換された法Nのために、以下の値が生じる:
=2n+126+2n+125+R 2n−16+N(2144+2143+R/N
従って、Nのビットの長さは:
L(N)=n+p−m=n+m+s=n+16+112=n+128ビットである。図6は、本発明の演算装置を示す。この演算装置は、図7と比較すると、もはやZDNレジスタを有しておらず、計算装置700、Cレジスタ710、Nレジスタ720およびZレジスタ730のみを有している。この際、Nレジスタ720には、法もしくは桁送りされた法がもはや格納されておらず、変換された法、もしくは、桁送りされ変換された法、もしくは、ランダム化され変換された法、もしくは、桁送りされランダム化され変換された法が格納されている。
【0057】
以下に、補助桁送り値sリダクション桁送り値sとの間の関係を示すために、図8aから図8cについて説明する。
【0058】
以下に、補助リダクション桁送り値sを用いたリダクション桁送り値sの計算を示すため、図8aから図8cについて説明する。図8aでは、中間結果Zと、法Nとが示されている。単なる例として、中間結果は4ビットを有しており、一方、上記法は9ビットを有している。このとき、図2のブロック214において、桁送りされた中間結果Z’が計算されると考えられる。このことは、sを乗算することにより達成できる。従って、乗数8をゼロとすれば、このことは、乗算桁送り値sは8に繋がる。法リダクションを達成するために、法Nは、桁送りされた中間結果Z’の大きさ(Groessenordnung)にならなければならない。本発明では、法Nは、桁送りされた中間結果多項式(Zwischenergebnis-Polynoms)Z’の一番上のビットと、桁送りされた法Nの一番上のビットとが等しくなるまで桁送りされなければならない。このため、図8bから分かるように、sリダクション桁送り値が3であることが必要である。
【0059】
同じく、sから求め得るのに、実際にはsが計算されてから、初めて行うことができ、すなわち、本発明にとって好ましいように、図2のブロック210と212とを並行して行うことは不可能であるということが、図8bから分かる。この理由から、補助桁送りパラメータsが導入される。sの長所は、実際の工程のsが分からなくても、この値を計算できることである。
【0060】
図8cから、sは常にsとsとの和と同じであることが分かる。従ってsとsとは常に、以下の方程式が通用するように相関している:
=s−s
従って、sを決定するための時間のかかる反復方法は、sを決定するために時間のかかる反復方法と、迅速な差分演算(Differenz-Operation)とに分解される。従って、事実上、両方の先読み方法を並行して実施できる。この際、連続して行われる唯一のことは、計算の前に、乗算先読みアルゴリズムによってsの実際の値が既に計算されており、搬送されていることである(図2の矢印230)。
【0061】
要するに、本発明は、既知のZDN方法と比較して、2/3NとZの量との間の比較を簡易化して実施している。2/3Nの一番上の32ビットが暗号法コプロセッサにおいて計算され、別個の32ビットレジスタ、ZDNレジスタに格納される。この際、2/3NとZの量との比較は、既知のZDN方法に基づいて、ハードウエアにおいて、暗号法コプロセッサの制御部の構成部分である比較機を介して実施されていたようなこれまでに既知の方法に対して、ここでは、以下のようにして行われる。法Nは、ホストCPUによってNよりも大きな法N に変換される。この際、Nの最初のビットは、2/3NとZの量との比較が簡単になるように選択された定数である。例えば、SPA、DPA、タイミング作用、...のような情報漏洩作用(Informations-Leck-Attacken)に対する安全性を改善するため、NからNへの変換は、説明してきたように、法のランダム化と組み合わせられてもよい。
【0062】
従って、暗号法コプロセッサにおける2/3N計算が省かれる。ZDNレジスタと、比較機論理は、同じく省かれる、このことから、比較機論理を省くことにより、集積回路領域はより小さなり、暗号法コプロセッサにおける制御部分の複雑さが減少される。
【図面の簡単な説明】
【図1】 剰余乗算のための本発明の構想のフローチャートである。
【図2】 法Nの、ビットの第1部分N、および、ビットの第2部分Nへの分解を示す図である。
【図3】 変換された法Nの、長さL(N)を有するの第1部分、および、残りの桁への分解を示す図である。
【図4】 変換された法Nの2/3倍のの表示を示す図である。
【図5】 ランダム化により変換された法のの概略的な表示を示す図である。
【図6】 本発明に基づく剰余乗算を実施するための演算装置の概略的な表示を示す図である。
【図7】 公知のZDN方法のための演算装置の概略的な表示を示す図である。
【図8】 図8aから8cは、乗算桁送り値sと、補助桁送り値sと、リダクション桁送り値sとの間の関係を概略的に表示する図である。
【図9】 公知のZDN方法のフローチャートである。
【図10】 公知のリダクション先読み方法のフローチャートである。
【符号の説明】
10 法の変換
12 剰余乗算の反復処理
14 変換された結果の逆変換
33 変換された法の上位部分
44 変換された法の2/3倍の上位部分
700 計算装置
710 Cレジスタ
720 Nレジスタ
730 Zレジスタ
740 反復ループ
750 ZDNレジスタ
760 ZDN比較用制御論理
900 ZDN比較の開始
910 ZDNアルゴリズム用乗算先読み方法
920 左または右へのZの桁送り
930 ZDNアルゴリズム用リダクション先読み方法
940 左への法の桁送り
950 ZDNアルゴリズム用3演算数加算
960 ZDNアルゴリズムの終了
1000 広域変数
1010 リダクション桁送り値の初期化
1020 ZDNの計算
1030 nおよびsの調査
1040 nの減少
1060 リダクション桁送り値の減少
1080 ZDN/2の計算
1100 中間結果とZDNとの比較
1120 リダクション先読みパラメータの決定
1140 リダクション先読みパラメータの決定
1160 nの計算
1180 リダクション先読みパラメータの決定
1200 nの調査
1220 cur−kの計算
1240 cur−kの計算

Claims (4)

  1. 乗算先読み方法とリダクション先読み方法とにより、法(N)についての、乗数(M)の被乗数(C)に対する剰余乗算を行うためのプロセッサであって、
    変換された法(N)に所定の分数(2/3)を乗じた値が、所定の第1値を有する上位の桁と、上記上位の桁に続く、所定の第2値を有する少なくとも1つの低位の桁とを持つように、上記法(N)を上記法(N)よりも大きい変換された法(N)に変換(10)するための手段と、
    上記乗算先読み方法と上記リダクション先読み方法とにより、上記変換された法(N)を用いて、剰余乗算の反復処理(12)を行い、反復の最後に上記剰余乗算の変換された結果を得る手段と、
    上記変換された結果に対する上記法(N)を用いた法リダクションにより、上記変換された結果を逆変換(14)するための手段と
    を含む、プロセッサ。
  2. ホストCPUおよびコプロセッサを備え、この際、上記法を変換(10)するための上記手段が上記ホストCPUに配置されており、この際、剰余乗算の反復処理(12)を行うための上記手段が、上記コプロセッサに配置されている、請求項1に記載のプロセッサ。
  3. 上記ホストCPUが、64よりも小さい、あるいは64と等しい桁数を有する短い数の演算装置であり、上記コプロセッサが、512よりも大きい、あるいは512と等しい桁数を有する長い数の演算装置である、請求項2に記載のプロセッサ。
  4. 剰余乗算の反復処理を行うための上記手段が、変換された法のためのレジスタと、上記剰余乗算における中間結果のためのレジスタとを備えている、請求項1に記載のプロセッサ。
JP2002571986A 2001-03-13 2002-01-24 剰余乗算するための装置 Expired - Fee Related JP4660066B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10111987A DE10111987A1 (de) 2001-03-13 2001-03-13 Verfahren und Vorrichtung zum modularen Multiplizieren
PCT/EP2002/000734 WO2002073394A2 (de) 2001-03-13 2002-01-24 Verfahren und vorrichtung zum modularen multiplizieren

Publications (3)

Publication Number Publication Date
JP2004519017A JP2004519017A (ja) 2004-06-24
JP2004519017A5 JP2004519017A5 (ja) 2010-09-16
JP4660066B2 true JP4660066B2 (ja) 2011-03-30

Family

ID=7677246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002571986A Expired - Fee Related JP4660066B2 (ja) 2001-03-13 2002-01-24 剰余乗算するための装置

Country Status (8)

Country Link
US (2) US7120660B2 (ja)
EP (1) EP1370933B1 (ja)
JP (1) JP4660066B2 (ja)
CN (1) CN100437470C (ja)
AT (1) ATE299605T1 (ja)
CA (1) CA2418269A1 (ja)
DE (2) DE10111987A1 (ja)
WO (1) WO2002073394A2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
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
US7171544B2 (en) * 2003-12-15 2007-01-30 International Business Machines Corporation Run-time parallelization of loops in computer programs by access patterns
US7353364B1 (en) * 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7801937B1 (en) * 2004-09-01 2010-09-21 Altera Corporation Method and apparatus for implementing a look-ahead for low radix Montgomery multiplication
US20080114820A1 (en) * 2006-11-15 2008-05-15 Alaaeldin Amin Apparatus and method for high-speed modulo multiplication and division
KR100901280B1 (ko) * 2006-12-07 2009-06-09 한국전자통신연구원 모듈러 3 연산 장치 및 방법
WO2009084026A2 (en) * 2007-11-30 2009-07-09 Chandra Mohan Umapathy System and method for high speed modulo operations
US8626811B2 (en) * 2010-04-30 2014-01-07 Certicom Corp. Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
US10318308B2 (en) * 2012-10-31 2019-06-11 Mobileye Vision Technologies Ltd. Arithmetic logic unit

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3631992A1 (de) * 1986-03-05 1987-11-05 Holger Sedlak Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens
DE3763872D1 (de) * 1986-03-05 1990-08-30 Holger Sedlak Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens.
JP3525209B2 (ja) * 1996-04-05 2004-05-10 株式会社 沖マイクロデザイン べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
WO1999014880A2 (en) * 1997-09-16 1999-03-25 Koninklijke Philips Electronics N.V. A method and device for executing a decrypting mechanism through calculating a standardized modular exponentiation for thwarting timing attacks
US6917956B2 (en) * 2001-08-14 2005-07-12 Sun Microsystems, Inc. Apparatus and method for efficient modular exponentiation

Also Published As

Publication number Publication date
US20070185948A1 (en) 2007-08-09
US20040220989A1 (en) 2004-11-04
DE10111987A1 (de) 2002-09-26
JP2004519017A (ja) 2004-06-24
ATE299605T1 (de) 2005-07-15
US7831650B2 (en) 2010-11-09
CA2418269A1 (en) 2003-02-06
WO2002073394A2 (de) 2002-09-19
EP1370933A2 (de) 2003-12-17
CN100437470C (zh) 2008-11-26
WO2002073394A3 (de) 2002-11-07
EP1370933B1 (de) 2005-07-13
US7120660B2 (en) 2006-10-10
DE50203622D1 (de) 2005-08-18
CN1539103A (zh) 2004-10-20

Similar Documents

Publication Publication Date Title
JP3939658B2 (ja) モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置
JP3014391B2 (ja) 暗号法及びこの方法の実施のための暗号プロセツサ
US7831650B2 (en) Method for modular multiplication
US8977668B2 (en) Calculating unit for reducing an input number with respect to a modulus
CA2741698C (en) Method and apparatus for modulus reduction
JP4302640B2 (ja) 被乗数のシフトを用いて乗算を計算するための装置およびその方法、上記装置を実行するためのプログラムコードを格納した記録媒体
US8781112B2 (en) Signed montgomery arithmetic
KR20040067779A (ko) 정보 처리방법
US8364740B2 (en) Device and method for calculating a result of a modular multiplication with a calculating unit smaller than the operands
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
US8364737B2 (en) Device and method for calculating a result of a sum with a calculating unit with limited word length
JP4047816B2 (ja) 除算の結果を演算する装置および方法
US7016927B2 (en) Method and apparatus for modular multiplication
US7085791B2 (en) Method and apparatus for generating a pseudo random number
TW201802666A (zh) 非模數乘法器、用於非模數乘法的方法及計算裝置
JP2003216419A (ja) 計算装置及び計算方法
JP4223819B2 (ja) べき乗剰余演算装置及びそのプログラム
JP2006091086A (ja) モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド
JP4850884B2 (ja) べき乗剰余演算器
JP4306121B2 (ja) 除算回路,乗除算回路
Song et al. Division-less high-radix interleaved modular multiplication using a scaled modulus
JP2003216034A (ja) べき乗剰余演算器
JP2001202232A (ja) 剰余系演算装置及び方法
JP2003216032A (ja) 剰余演算装置及び方法
JP2005031472A (ja) 演算処理方法、および演算処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050816

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20051115

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20051115

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20051128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060216

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070620

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070726

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

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20070817

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090810

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090813

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091106

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20091106

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20091110

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100531

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100604

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100630

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100705

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20100730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101110

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101228

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

Free format text: PAYMENT UNTIL: 20140107

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4660066

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees