JP2004519017A - 係数乗算するための方法および装置 - Google Patents

係数乗算するための方法および装置 Download PDF

Info

Publication number
JP2004519017A
JP2004519017A JP2002571986A JP2002571986A JP2004519017A JP 2004519017 A JP2004519017 A JP 2004519017A JP 2002571986 A JP2002571986 A JP 2002571986A JP 2002571986 A JP2002571986 A JP 2002571986A JP 2004519017 A JP2004519017 A JP 2004519017A
Authority
JP
Japan
Prior art keywords
coefficient
value
transformed
multiplication
converted
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
JP2002571986A
Other languages
English (en)
Other versions
JP2004519017A5 (ja
JP4660066B2 (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

Images

Classifications

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

Abstract

本発明は、乗算先見方法を乗算桁送り値を計算するために使用し、換算先見方法を換算桁送り値を計算するために使用する係数乗算法に関するものである。上記方法では、係数が、係数よりも大きな変換された係数にまず変換される(10)。変換された係数の所定の部分は、所定の第1値を有する上位の順位を有している。このより上位の順位に、所定の第2値を有するより低位の順位が続く。乗算先見方法と換算先見方法とを用いる係数乗算の反復方法(12)の間に、変換された係数が、反復の最後に係数変換のための変換された結果を得るために使用される。最後に、変換された結果は、元々の係数を用いた係数換算により逆変換される(14)。本発明にかかる変換によれば、係数乗算法の反復が簡単になることで、係数乗算は速く実行される。

Description

本発明は、暗号法アルゴリズム、ならびに、このような暗号法アルゴリズムを実施するための装置、そして、特に、乗算先見方法(Multiplikations−Vorausschau−Verfahren)、および、換算先見方法(Reduktions−Vorausschau−Verfahren)を用いた係数乗算(modularen Multiplizieren)のための方法と装置に関するものである。
【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】
Figure 2004519017
【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の三分の二(Zwei Drittel N))。
【0012】
図9に記載のようなZDN方法は、係数乗算を3演算数加算(図9のブロック950)に戻す。この際、演算時間効率を上昇させるため、乗算先見方法および換算先見方法も共に使用される。従って、モンゴメリー換算法(Montgomery−Reduktion)と比較して、有利な演算時間(Rechenzeitvorteil)が達成される。
【0013】
以下に、図10を基に、換算先見方法について詳しく説明する。この方法は、図9のブロック930で行われているものである。まず、ブロック1000に局所変数、すなわち、換算先見パラメータbおよび換算桁送り値sのための予約が行われる。ブロック1010では、換算桁送り値sがゼロに初期化される。次に、ブロック1020では、値ZDNが計算される。この値ZDNは2/3の係数Nに等しい。ブロック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:=MxCmodNの計算のための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進法表示(binaerer Darstellung)と、最上位のビットが符号を示している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であることが好ましい。係数乗累法に関連し、このことは、以下の形状のRSA方程式が計算されることを意味している:
:=MmodN
つまり、係数累乗法Cの結果は、係数Nによって定義される余剰群においてではなく、変換された係数Nによって定義される余剰群において計算される。従って、上記方程式の左側には、CではなくCがある。本発明の構想は、変換された係数Nを使用することにより、補助換算桁送り値sが、非常に簡易化されることが特徴である。この補助換算桁送り値sは、既知の換算先見方法の、図10の反復ループに相当している。
【0031】
次に、最後の工程14では、以下の方程式に相当する操作が行われることによってNからNへの逆変換が再び行われる:
C:=CmodN
この際、変換された係数Nの余剰群にある変換された結果Cは、簡単な桁送り/減算換算法(Verschiebungs/Subtraktions−Reduktion)によって、係数Nの余剰群にフィードバックされることが好ましい。その結果、Cは係数乗累法の結果である。
【0032】
係数Nの変換された係数Nへの変換は、変換された係数の所定の分数、すなわち、好ましい実施例では、変換された係数の2/3倍が、所定の第1値を有するより上位の順位を有し、このより上位の順位に所定の第2値を有している少なくとも1つの低位の順位が続くように、工程10の変換機Tを用いて行われる。従って、つまり、同じく所定の第1値を有する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のより少ないビットも、比較のためにさらに呼び出されてもよい。しかし、そうすると、誤り率が次第に上昇する。しかし、誤りは、危険ではなく非臨界的であり、換算先見方法の副最適率(suboptimalen Verhalten)に繋がるだけなので、この方法を簡単に行える。
【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部分NRを定義する。好ましい実施例では、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
方程式17を用いて、変換された係数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より大きいので、最初のp−mがNの16ビットのみが、補助桁送り値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を決定するために時間のかかる反復方法(ループ416)と、迅速な差分操作(Differenz−Operation)(図4のブロック422)とに分解される。従って、事実上、両方の先見方法を並行して実施できる。この際、連続して行われる唯一のことは、ブロック422(図4)の計算の前に、乗算先見アルゴリズムによって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 (13)

  1. 係数(N)を使用するとともに乗算先見方法と換算先見方法とを用いて被乗数(C)を乗数(M)により係数乗算するための方法であって、
    変換された係数の所定の分数(2/3)が、所定の第1値を有する上位の順位を有し、所定の第2値を有している少なくとも1つの低位の順位が該上位の順位に続くように、上記係数(N)を上記係数(N)よりも大きい変換された係数(N)へ変換する工程(10)と、
    反復の最後に係数乗算のための変換された結果を得るために、上記乗算先見方法、上記換算先見方法、および上記変換された係数(N)を使用して係数乗算の反復処理をする工程(12)と、
    上記係数(N)を用い、変換された結果の係数換算により、変換された結果を逆変換する工程(14)とを有する方法。
  2. 上記反復処理(12)の工程において、多数の反復工程が実施され、この際、上記反復工程において、乗算中間結果および換算桁送り値(s)が求め得られ、この際、上記換算桁送り値(s)は、上記変換された係数(N)の上記所定の第1値を有する上位の順位と、該所定の第1値を有する中間結果(Z)の最上位の順位との間の順位数(s)を決定することにより計算される、請求項1に記載の方法。
  3. 上記乗算桁送り値(s)が、上記乗算先見方法において求め得られ、上記換算先見方法のための上記換算桁送り値(s)が、上記順位の特定の数(s)を上記乗算桁送り値(s)から減算することにより計算される、請求項2に記載の方法。
  4. 上記反復処理の工程が、以下の工程を備え、
    第1反復工程において、
    (a)乗算桁送り値(s)を得るために、乗算先見方法を実施し、
    (b)桁送りされた中間結果(Z’)を得るために、上記乗算桁送り値が累乗されている基数に、実際の中間結果(Z)を乗算し、
    (c)変換された係数(N)の所定の分数の所定の第1値を有する上位の順位と、上記所定の第1値を有する上記中間結果の最上位の順位との間の順位数と同じである補助桁送り値(s)を決定すること、および、上記補助桁送り値と上記乗算桁送り値(s)とを用いて上記換算桁送り値を計算することにより、換算桁送り値(s)を得るために換算先見方法を実施し、
    (d)桁送りされ変換された係数(NT’)を得るために、上記変換された係数(N)に、上記換算桁送り値が累乗されている基数を乗算し、
    (e)更新された中間結果(Z)を得るために、上記中間結果(Z’)と上記被乗数(C)とを加算し、桁送りされ変換された係数(NT’)を減算する、上記いずれかに記載の方法。
  5. 上記係数の所定の分数が2/3である、上記いずれかに記載の方法。
  6. 上記被乗数(C)、上記乗数(M)および上記係数(N)が、基数が2である2進数であり、上記変換された係数(N)の所定の分数の上位の順位は1の所定の第1値を有し、少なくとも1つの低位の順位は0の所定の第2値を有している、請求項5に記載の方法。
  7. 上記変換された係数の最上位ビットが、指示ビットであり、上記係数の所定の分数の上位の部分が、
    01000xx...xx
    であり、この際、xxで示すビットは任意の値を有していてもよい、請求項6に記載の方法。
  8. 上記変換された係数(N)の上位の部分が、
    01100...00
    である、請求項7に記載の方法。
  9. 上記係数を変換(10)する工程において、上記係数の無作為化が行われ、その結果、変換された係数は無作為化されている、請求項1ないし8のいずれかに記載の方法。
  10. 係数(N)を使用し、乗算先見方法と換算先見方法とを用い、被乗数(C)を乗数(M)によって係数乗算するためのプロセッサーであって、
    変換された係数の所定の分数が、所定の第1値を有する上位の順位を有し、この上位の順位に、所定の第2値を有している少なくとも1つの低位の順位が続くように、係数(N)を係数(N)よりも大きな変換された係数(N)へ変換するための手段(10)と、
    反復の最後に係数乗算のための変換結果を得るために、上記変換された係数(N)を使用するとともに乗算先見方法と換算先見方法とを用いて係数乗算法の反復処理(12)を行うための手段と、
    上記係数(N)の使用して、変換された結果の係数換算により、変換された結果を逆変換(14)するための手段とを有するプロセッサー。
  11. ホストCPUおよびコプロセッサーを備え、この際、係数の変換のための上記手段(10)がホストCPUに配置されており、この際、係数乗算の反復処理を行うための上記手段(12)が、コプロセッサーに配置されている、請求項10に記載のプロセッサー。
  12. 上記ホストCPUが、64よりも小さい、あるいは64と等しい順位数を有する短い数の演算装置を備え、上記コプロセッサーが、512よりも大きい、あるいは512と等しい順位数を有する長い数の演算装置を備えている、請求項11に記載のプロセッサー。
  13. 係数乗算の反復処理を行うための上記手段が、変換された係数のための記録器と、係数乗算の中間結果のための記録器とを備えている、請求項10ないし12のいずれかに記載のプロセッサー。
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 true JP2004519017A (ja) 2004-06-24
JP2004519017A5 JP2004519017A5 (ja) 2010-09-16
JP4660066B2 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
ATE299605T1 (de) 2005-07-15
US7831650B2 (en) 2010-11-09
CA2418269A1 (en) 2003-02-06
JP4660066B2 (ja) 2011-03-30
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
US7831650B2 (en) Method for modular multiplication
JP3939658B2 (ja) モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置
US8977668B2 (en) Calculating unit for reducing an input number with respect to a modulus
EP0381161A2 (en) Modular multipication method and the system
US20040167952A1 (en) Method and apparatus for carrying out efficiently arithmetic computations in hardware
JP4302640B2 (ja) 被乗数のシフトを用いて乗算を計算するための装置およびその方法、上記装置を実行するためのプログラムコードを格納した記録媒体
US6567832B1 (en) Device, method, and storage medium for exponentiation and elliptic curve exponentiation
US8417760B2 (en) Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication
JP3551113B2 (ja) 除算器
US8364740B2 (en) Device and method for calculating a result of a modular multiplication with a calculating unit smaller than the operands
KR20040067779A (ko) 정보 처리방법
US8364737B2 (en) Device and method for calculating a result of a sum with a calculating unit with limited word length
US6662201B1 (en) Modular arithmetic apparatus and method having high-speed base conversion function
US7016927B2 (en) Method and apparatus for modular multiplication
US7607165B2 (en) Method and apparatus for multiplication and/or modular reduction processing
WO2003096182A1 (en) “emod” a fast modulus calculation for computer systems
US7472154B2 (en) Multiplication remainder calculator
JP2006091086A (ja) モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド
JP2004226516A (ja) べき乗剰余演算方法及びそのプログラム
JP3673785B2 (ja) 最大公約数演算装置及び逆元演算装置及び演算プログラム記録媒体
JP4080754B2 (ja) 剰余演算装置及び方法
US5831882A (en) Orthogonal transformation processing device
US20040143618A1 (en) Method for multiplying two binary numbers
Großschädl High-Speed RSA Hardware Based on
JP2006500615A (ja) 向上したQuisquaterReduction

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