JP2007520729A - 改良された低減計算 - Google Patents
改良された低減計算 Download PDFInfo
- Publication number
- JP2007520729A JP2007520729A JP2006516560A JP2006516560A JP2007520729A JP 2007520729 A JP2007520729 A JP 2007520729A JP 2006516560 A JP2006516560 A JP 2006516560A JP 2006516560 A JP2006516560 A JP 2006516560A JP 2007520729 A JP2007520729 A JP 2007520729A
- Authority
- JP
- Japan
- Prior art keywords
- bit
- modulus
- section
- overflow
- reduction operation
- 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.)
- Withdrawn
Links
- 230000009467 reduction Effects 0.000 title claims abstract description 40
- 238000004364 calculation method Methods 0.000 title claims description 16
- 238000000034 method Methods 0.000 claims abstract description 33
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
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)
- Executing Machine-Instructions (AREA)
Abstract
楕円曲線暗号における低減技術が、最上位ワード(Most Significant Word)が1である状態の第1セクションを含む素数を、N = nm-1 + N1B + n0と共に利用する。
Description
本発明は、低減演算を行う方法及び低減演算を行う装置に関する。
楕円曲線暗号(ECC: Elliptic Curve Cryptography)は、GF(p)における楕円曲線関係に基づく計算の使用を含み、例えば、暗号化プロセッサにおける公開鍵アルゴリズムの実装において、繰り返し実行されるlong型整数の乗算を必要とする。
一般に、暗号処理又は復号処理を完了するには、何百回となく乗算演算が行われなければならない。そして、これらの演算を行う暗号化デバイスは、高速の乗算器を用いてlong型の乗算を高速に実行することが重要である。
次第に、このような暗号アルゴリズムは、例えばスマートカードのような、アプリケーション処理能力や消費電力に厳しい制限が課される電子デバイスにおいて使用されるようになっている。
従来技術の計算法としては、次式を用いて最上位ワード(Most Significant Word)に対する演算を行うQuisquaterシステムがある。
R’= R + (-N’* MSW)
ここで、N’はNの特殊な倍数である。-N’は、2の補数表記で使用されている。
ここで、N’はNの特殊な倍数である。-N’は、2の補数表記で使用されている。
低減演算が不十分であり、結果がとても大きくなるやもしれず、-N’をR’に加算する必要が生じる。
別の従来技術の計算法としては、次式を用いて最下位ワード(Least Significant Word)に対する演算を行うMongomeryシステムがある。
R’= R + N * Q
ここで、Q = LSW * M mod 2n である。
ここで、Q = LSW * M mod 2n である。
ここでも低減演算は不十分であり、1ビット分余計に大きいために、Nの減算をもう一度行う必要があるかもしれない。
そこで、本発明の目的は、より効率的な低減演算を提供することにある。
また、本発明の目的は、より乗算演算回数の少ない低減演算を提供することにある。
また、本発明の目的は、計算演算においてよりオーバーフローが少ない低減演算を提供することにある。
また、本発明の目的は、低減演算の完了がより速い低減演算を提供することにある。
1つの側面によれば、本発明は、暗号化計算において低減演算を行う方法であって、最上位ワードが「1」である状態を複数備える第1セクションと、「1」又は「0」の状態を複数備える第2セクションとを持つモジュラスを、その2つのセクションにより形成される数が、モジュラス又はモジュラスの倍数となるよう選択し、前述のモジュラス/倍数に対する低減演算を行うことを有する方法を提供する。
計算に使用するモジュラス/倍数を特定の形式で選択するこの方法により、その低減演算は乗算演算がより少なくて済む。
こうして、本発明により提供される重要な利点は、全体の計算演算を完了するのにかかる時間が短縮されることである。
更に、本発明の方法により提供される安全度は、既存の暗号化法と比較しても、同程度が維持される。
好ましくは、上記方法は、先導する「1」の個数が(k-2)未満であるかどうかを決定するため、その個数を監視することを含む。有利には、先導する「1」の個数が(k-2)未満であるとき、次回の計算が開始される。
こうして、本発明の更なる利点は、多数の乗算演算が同時に処理されることであり、それにより計算演算を完了するのにかかる時間が短縮されることである。
本発明のある実施形態によれば、192ビットECCと64ビットのワードサイズに対して、上記モジュラスが、138ビットの第1セクションと54ビットの第2セクションとを含む。
本発明の別の実施形態によれば、128ビットECCと64ビットのワードサイズに対して、上記モジュラスが、74ビットの第1セクションと54ビットの第2セクションとを含む。
本発明の別の実施形態によれば、256ビットECCと64ビットのワードサイズに対して、上記モジュラスが、202ビットの第1セクションと54ビットの第2セクションとを含む。
本発明はまた、ワードサイズの倍数分より少ない数のビットを持つ複数のモジュラスと共に機能することができる。その場合、そのシステムは、先導する「1」を必要な数含む倍数のモジュラスと共に機能する。
ある好ましい変形例によれば、本発明の方法は最下位ワード(LSW: Least Significant Word)以外のすべてのワードが「1」であるm個のワードからなるモジュラスを利用する。そのLSWは、例えば、10個の先導する「1」を持ち、いくつでもよいが、大きくすればするほど、追加的な低減が要求される回数は少なくなることを覚えておくとよい。
別の側面によれば、本発明は、デジタルコンピュータの内部メモリに直接ロード可能なコンピュータプログラムプロダクトであって、そのプロダクトがコンピュータ上で実行されるとき、本発明の方法を実行するためのソフトウェアコード部分を含むプログラムプロダクトを提供する。
別の側面によれば、本発明は、デジタルコンピュータの内部メモリに直接ロード可能なコンピュータプログラムであって、そのプログラムがコンピュータ上で実行されるとき、本発明の方法を実行するためのソフトウェアコード部分を含むプログラムを提供する。
別の側面によれば、本発明は、電気信号を含む、本発明を具体化するコンピュータプログラム用のキャリアを提供する。
別の側面によれば、本発明は、本発明のコンピュータプログラムプロダクト、又はコンピュータプログラム、又はキャリアの電子配布を提供する。
別の側面によれば、本発明は、暗号化計算において低減演算を行う装置であって、「1」である状態を複数備える第1セクションと、「1」又は「0」の状態を複数備える第2セクションとを持つモジュラスを、その2つのセクションにより形成される数が、モジュラス又はモジュラスの倍数となるよう選択する手段を含む装置を提供する。
以下、本発明が容易に理解されるように、実施例に過ぎないものを介し、対応する図面を参照しながら、詳細な説明が与えられる。
図1は、スマートカード50を搭載する、本発明のハードウェアによる実装のブロック図を示し、以下の要素を含む。
・一般的な制御のため、インタフェースを介して外部世界と通信を行うマイクロコントローラ51。それは、RAM/ROMのデータへのポインタをセットし、コプロセッサを起動する。
・例えばISO-7816-3などに基づきスマートカードと通信するための、外部世界へのインタフェース。
・マイクロコントローラのプログラム用のリードオンリメモリ(ROM)52。
・データ又はプログラム用の不揮発性ストレージであるプログラム可能リードオンリメモリ(フラッシュ又はEEPROM)53。
・揮発データ、例えば、計算中の中間結果を格納するストレージであるRAM54。
・ECCやRSAの計算用の特別な高速タスクを実行する専用のコプロセッサ55。タスクが実行可能(ready)にされると、制御がマイクロコントローラに戻される。
・一般的な制御のため、インタフェースを介して外部世界と通信を行うマイクロコントローラ51。それは、RAM/ROMのデータへのポインタをセットし、コプロセッサを起動する。
・例えばISO-7816-3などに基づきスマートカードと通信するための、外部世界へのインタフェース。
・マイクロコントローラのプログラム用のリードオンリメモリ(ROM)52。
・データ又はプログラム用の不揮発性ストレージであるプログラム可能リードオンリメモリ(フラッシュ又はEEPROM)53。
・揮発データ、例えば、計算中の中間結果を格納するストレージであるRAM54。
・ECCやRSAの計算用の特別な高速タスクを実行する専用のコプロセッサ55。タスクが実行可能(ready)にされると、制御がマイクロコントローラに戻される。
変形例では、マイクロプロセッサと、制御論理を与えるコントローラのプログラミングに用いる、加算、減算、シフト演算を提供するALUと、そしてシフトレジスタによる次数検出とにより、本発明はソフトウェアで実装される。
図2は、複数のワードを含み、全体で192ビットのモジュラスを用いて行われる本発明の低減演算を示す。モジュラスは、64ビットワード2つ分に10ビットを加えた部分がすべて「1」の状態である第1セクションを含む。モジュラスの第2セクションは、54ビットであり、全体の数が素数であればいくつであってもよい。数が大きくなればなるほど、追加的な低減が必要とされる機会は少なくなる。
一般的に、Nは次式のように表現できる。
N = nm-1 Bm-1 + … n1B + n0 (B = 264)
N = nm-1 Bm-1 + … n1B + n0 (B = 264)
Nの選択にあたり特別に要求されることは、以下の通り。
・n1…nm-1は、定数であり、「1」だけを含む (n1 = … nm-1 = B-1)。
・n0は最上位からkビットが1であることを除けば、残りの64-kビットは自由に選択でき、一般的である。
・n1…nm-1は、定数であり、「1」だけを含む (n1 = … nm-1 = B-1)。
・n0は最上位からkビットが1であることを除けば、残りの64-kビットは自由に選択でき、一般的である。
するとNは、次式のように書き直すことができる。
N = Bm - B + n0 = Bm - n0’ここで、n0’= B - n0
N = Bm - B + n0 = Bm - n0’ここで、n0’= B - n0
Rを1ワード分低減されるべき結果であるとする。
R = rm Bm + rm-1 Bn-1 + … r1B + r0
その結果Rから積rm Nを減算することにより、次のように低減する。
R’= R - rm N
= rm Bm + rm-1 Bm-1 + … r1B + r0 - rm(Bm - B + n0)
= rm-1 Bm-1 + … + r2B2 + r1B + r0 + rm(B - n0) = (R - rm Bm) + rm.n0’
R’= R - rm N
= rm Bm + rm-1 Bm-1 + … r1B + r0 - rm(Bm - B + n0)
= rm-1 Bm-1 + … + r2B2 + r1B + r0 + rm(B - n0) = (R - rm Bm) + rm.n0’
これは、低減のためには、ワードrmを省き、最下位ワードr0に積rmn0’を加算することを意味する。この低減では、通常m回の乗算を行う代わりに、乗算を1回だけ行えばよいことを意味する。
n0 < B より、n0’は常に正である。結果もまた常に正である。
n0の代わりに、n0’を格納して使用する。
場合によっては、結果が1ビット分余計に大きなものになる。その場合、再度Nを減算する必要がある。
R’= (Bm + rm-1 Bm-1 + … + r1B + r0) - (Bm - n0’) = rm-1 Bm-1 + … + r1B + (r0 + n0’) = (R - Bm) + n0’
すると、オーバーフロービットBm を捨て、n0’を加算しさえすればよいことになる。
すべての乗算に対して1ワードずつ、このような低減を行う。あるいは、最初にすべての乗算を行い、それから低減を行う。後者の方法をここで説明する。下記に示す例は、192ビットECCと64ビットワードサイズ(m=3)の例である。
N = B3 - B + n0 = B3 - n0’ここで、29 ≦ n0 < B (B = 264)
Rは、64ビットワード3つ分と、同じく64ビットワード3つ分との乗算の結果であり、結果6ワード(r0…r5)が生じる。
低減は次のように行われる。
・n0’とr4との積にr1を加える(ステップS1)。
・n0’とr5との積に、r2と、前の乗算でのキャリーcとを加える。更に、r3が乗算の上位部分に加えられる。その結果は、下位半分が再度r2となり、上位半分がqとなる(ステップS2)。
・n0’とqとの積にr0を加え、上位部分に新しいr1を加える(ステップS3)。
・直近の乗算でオーバーフローが生じたら、そのオーバーフローは、例えば、(0とするために)n0’と0との積がr2に加算される。r1の加算(下位半分としてr1を与える)とr2の上位部分(即ちオーバーフロービット)への加算を行う(ステップS4)。
・この演算でもオーバーフローが生じるなら(もっとも、r2がすべて1からなる場合(確率2-64)のみだが)、n0’が加算される(ステップS5)。
・これは、n0’に1を掛け、r0を下位半分に、r1を上位半分にそれぞれ加えることによりなされる。
・n0’とr4との積にr1を加える(ステップS1)。
・n0’とr5との積に、r2と、前の乗算でのキャリーcとを加える。更に、r3が乗算の上位部分に加えられる。その結果は、下位半分が再度r2となり、上位半分がqとなる(ステップS2)。
・n0’とqとの積にr0を加え、上位部分に新しいr1を加える(ステップS3)。
・直近の乗算でオーバーフローが生じたら、そのオーバーフローは、例えば、(0とするために)n0’と0との積がr2に加算される。r1の加算(下位半分としてr1を与える)とr2の上位部分(即ちオーバーフロービット)への加算を行う(ステップS4)。
・この演算でもオーバーフローが生じるなら(もっとも、r2がすべて1からなる場合(確率2-64)のみだが)、n0’が加算される(ステップS5)。
・これは、n0’に1を掛け、r0を下位半分に、r1を上位半分にそれぞれ加えることによりなされる。
2番目の乗算におけるキャリー(q)は、次回の乗算における被乗数として使用され、1ビット分拡張されることができる。
積n0’qへの入力r1が、先導する8つの1を持たないなら(その確率は、256分の1未満である)、オーバーフローは発生しない。というのも、n0’の存在によりn0’qは少なくとも8つの先導する0を持つからである。その場合、プログラムはオーバーフローが処理されるのを待つことはない。
オーバーフローの処理には時間を要するので、できるだけ最小にしなければならない。従って、n0はたくさんの先導する1を持ち(例えばその個数をk個とおく)、そして、n0’は少なくともk-1個の先導する0を持つ。
こうして、qは1ビット分拡張されてよいため、積n0’c2は少なくともk-2個の先導する0を持つ。
オーバーフローを発生させるためには、B.c0 + r0の加算が少なくともk-2個の先導する1と下位ビットからのキャリーcを持っていなければならない。
これが起きる確率は2-(k-2)未満である。そこでkを大きくすると、オーバフローが発生する確率はとても小さくなる。
r2は完全に1からなるため、2番目のオーバフローの確率は極度に小さい(2-64)。
実際、パイプライン化された乗算器は効率的な計算演算を提供するために用いられ、多数の乗算が同時に処理されている。その乗算器から結果を得るには数クロックサイクルしか消費しない。オーバーフローが生じるかを決定するために待つことが必要な場合、そのオーバーフローが計算されるまで次回の乗算は開始することができない。こうして、r1が監視され、先導する1がk-2個ない場合、今後数サイクルにわたりオーバーフローはないと判断され、次回の乗算が開始される。
図3は、128ビットECCと、64ビットのワードサイズに対し、128ビットのモジュラスNを組み込む新たな実施形態を示す図である。
この実施形態では、
N = B2 - B + n0 = B2 - n0’; 29≦ n0 < B
N = B2 - B + n0 = B2 - n0’; 29≦ n0 < B
オペランドは、正規空間内になければならない。
すると、低減は以下のように行われる。
・n0’とr3との積にr1を加える。また、乗算の上位部分にr2が加算される(ステップS10)。その結果は、下位半分が再びr1となり、上位半分がqとなる。
・n0’とqとの積にr0を加え、上位部分に新しいr1を加える(ステップS11)。
・直近の乗算でオーバーフローが生じたら、例えば、乗算/加算 n0’.1 + B.r1 + r0により、n0’を加算する(ステップS12)。
・n0’とr3との積にr1を加える。また、乗算の上位部分にr2が加算される(ステップS10)。その結果は、下位半分が再びr1となり、上位半分がqとなる。
・n0’とqとの積にr0を加え、上位部分に新しいr1を加える(ステップS11)。
・直近の乗算でオーバーフローが生じたら、例えば、乗算/加算 n0’.1 + B.r1 + r0により、n0’を加算する(ステップS12)。
図4は、256ビットECCと、64ビットのワードサイズに対し、256ビットの素数を組み込む新たな実施形態を示す図である。
この実施形態では、
N = B4 - B + n0 + B4 - n0’; 29 < n0 < B
N = B4 - B + n0 + B4 - n0’; 29 < n0 < B
オペランドは、正規空間内になければならない。
すると、低減は以下のように行われる。
・n0’とr5との積にr1を加える(ステップS20)。その新しい結果がr1となる。
・n0’とr6との積に、r2と、前の乗算でのキャリーcとを加える(ステップS21)。その新しい結果がr2となる。
・n0’とr7との積に、r3と、前の乗算でのキャリーcとを加える。
・n0’とr5との積にr1を加える(ステップS20)。その新しい結果がr1となる。
・n0’とr6との積に、r2と、前の乗算でのキャリーcとを加える(ステップS21)。その新しい結果がr2となる。
・n0’とr7との積に、r3と、前の乗算でのキャリーcとを加える。
更に、その乗算の上位部分にr4が加算される(ステップS22)。その結果は、下位半分が再度r3となり、上位半分がqとなる。
・n0’とqとの積にr0を加え、上位部分に新しいr1を加える(ステップS23)。
・直近の乗算でオーバーフローが生じたら、そのオーバーフローがr2に加算される(ステップS24)。
・これが再度オーバーフローを生じさせるときは、それがr3に加算される(ステップS25)。
・それでもなおオーバーフローが生じるときは、n0’が加算される(ステップS26)。
・n0’とqとの積にr0を加え、上位部分に新しいr1を加える(ステップS23)。
・直近の乗算でオーバーフローが生じたら、そのオーバーフローがr2に加算される(ステップS24)。
・これが再度オーバーフローを生じさせるときは、それがr3に加算される(ステップS25)。
・それでもなおオーバーフローが生じるときは、n0’が加算される(ステップS26)。
3番目の乗算のキャリー(q)は、次回の乗算における被乗数として使用され、1ビット分拡張されることができる。
図5は、本発明のハードウェアによる実装を示し、以下の要素を含む。
・それぞれ、入力オペランドX、Y、U、Rを格納するX-、Y-、U-、そしてZ-レジスタ10〜13。
・出力C及びRを格納するC-及びR-レジスタ14、15。
・中間結果を格納するRAM16。
・演算B.C + R = X*Y + B*U + Z + cを実行する乗算器17。
・演算を制御し、RAMとレジスタとの間又はレジスタ同士の間の運搬を制御するステートマシン18。
・それぞれ、入力オペランドX、Y、U、Rを格納するX-、Y-、U-、そしてZ-レジスタ10〜13。
・出力C及びRを格納するC-及びR-レジスタ14、15。
・中間結果を格納するRAM16。
・演算B.C + R = X*Y + B*U + Z + cを実行する乗算器17。
・演算を制御し、RAMとレジスタとの間又はレジスタ同士の間の運搬を制御するステートマシン18。
乗算器17は、XとYの積を計算し、必要ならば、内部に格納された、過去のキャリーcを更に加算する。結果は2つの均等な部分に分割され、下位半分にはZが加算され、上位半分にはUが加算される。
C-レジスタ14の出力はYへの入力として直接使用される(例えば、図2におけるqのように)。
本発明の異なる形態は、加算、減算そしてシフト演算を提供する適切なALUとシフトレジスタとを備えるマイクロプロセッサ上で稼動するソフトウェアにより実装される。
Claims (33)
- 暗号化計算において低減演算を行う方法であって、
最上位ワードが「1」である状態を複数備える第1セクションと、「1」又は「0」の状態を複数備える第2セクションとを持つモジュラスを、該2つのセクションにより形成される数が、モジュラス又はモジュラスの倍数となるよう選択し、
前記モジュラス/倍数に対する低減演算を行うことを有する方法。 - 複数の乗算演算を実行することを有する請求項1に記載の方法。
- 複数の乗算演算を実行し、後に低減演算を実行することを有する請求項2に記載の方法。
- 前記乗算演算と前記低減演算とを組み合わせたものを繰り返すことを有する請求項3に記載の方法。
- 前記モジュラス/倍数の倍数を使用することを有する請求項1乃至4のいずれかに記載の方法。
- 直近の乗算がオーバーフローを与えるとき、前記オーバーフローが前記選択された数の一部に加えられる、請求項1乃至5のいずれかに記載の方法。
- 前記オーバーフロー追加ステップがオーバーフローを与えるとき、n0’が該オーバーフローに加えられる、請求項6に記載の方法。
- 2つの隣接する乗算間でのキャリーが、次回の乗算において加数として与えられる、請求項1乃至7のいずれかに記載の方法。
- 先導する「1」の個数が(k-2)未満であるかどうかを決定するため、該個数を監視することを有する請求項1乃至8のいずれかに記載の方法。
- 前記先導する「1」の個数が(k-2)未満であるとき、次回の計算を開始することを有する請求項6に記載の方法。
- 192ビットECCと64ビットのワードサイズとを演算することを有し、前記モジュラスは、138ビットの第1セクションと54ビットの第2セクションとを含む、請求項1乃至10のいずれかに記載の方法。
- 128ビットECCと64ビットのワードサイズとを演算することを有し、前記モジュラスは、74ビットの第1セクションと54ビットの第2セクションとを含む、請求項1乃至10のいずれかに記載の方法。
- 256ビットECCと64ビットのワードサイズとを演算することを有し、前記モジュラスは、202ビットの第1セクションと54ビットの第2セクションとを含む、請求項1乃至10のいずれかに記載の方法。
- デジタルコンピュータの内部メモリに直接ロード可能なコンピュータプログラムプロダクトであって、
前記プロダクトがコンピュータ上で実行されるとき、請求項1乃至13のいずれか1つ又は複数に記載された前記方法を実行するためのソフトウェアコード部分を有するプログラムプロダクト。 - デジタルコンピュータの内部メモリに直接ロード可能なコンピュータプログラムであって、
前記プログラムがコンピュータ上で実行されるとき、請求項1乃至13のいずれか1つ又は複数に記載された前記方法を実行するためのソフトウェアコード部分を有するプログラム。 - 電気信号を有する、請求項15に記載のコンピュータプログラム用のキャリア。
- 請求項14に記載のコンピュータプログラムプロダクト、又は請求項15に記載のコンピュータプログラム、又は請求項16に記載のキャリアの電子配布。
- 暗号化計算において低減演算を行う装置であって、
「1」である状態を複数備える第1セクションと、「1」又は「0」の状態を複数備える第2セクションとを持つモジュラスを、該2つのセクションにより形成される数が、モジュラス又はモジュラスの倍数となるよう選択する手段と、
前記モジュラス/倍数に対する低減演算を行う手段とを有する装置。 - 複数の乗算演算を実行する手段を有する請求項18に記載の装置。
- 複数の乗算演算を実行し、後に低減演算を実行する手段を有する請求項19に記載の装置。
- 前記乗算演算と前記低減演算とを組み合わせたものを繰り返す手段を有する請求項20に記載の装置。
- 前記モジュラス/倍数の倍数を使用する手段を有する請求項18乃至21のいずれかに記載の装置。
- 直近の乗算がオーバーフローを与えるとき、前記オーバーフローを前記選択された数の一部に加える手段を有する請求項18乃至22のいずれかに記載の装置。
- 前記オーバーフロー追加ステップがオーバーフローを与えるとき、n0’を該オーバーフローに加える手段を有する請求項23に記載の装置。
- 2つの隣接する乗算間でのキャリーを、次回の乗算において加数として与える手段を有する請求項18乃至24のいずれかに記載の装置。
- 先導する「1」の個数が(k-2)未満であるかどうかを決定するため、該個数を監視する手段を有する請求項18乃至25のいずれかに記載の装置。
- 前記先導する「1」の個数が(K-2)未満であるとき、次回の計算を開始する手段を有する請求項18乃至26のいずれかに記載の装置。
- 192ビットECCと64ビットのワードサイズとに対する手段を有し、前記モジュラスは、74ビットの第1セクションと54ビットの第2セクションとを含む、請求項18乃至27のいずれかに記載の装置。
- 128ビットECCと64ビットのワードサイズとに対する手段を有し、前記モジュラスは、74ビットの第1セクションと54ビットの第2セクションとを含む、請求項18乃至27のいずれかに記載の装置。
- 256ビットECCと64ビットのワードサイズとに対する手段を有し、前記モジュラスは、202ビットの第1セクションと54ビットの第2セクションとを含む、請求項18乃至27のいずれかに記載の装置。
- 図1乃至図5のうちの1つ又は複数において示される対応図面を参照して説明される内容、及び/又は前記対応図面において説明される内容と実質的に同一の低減演算を行う方法。
- 暗号化計算において低減演算を行う装置であって、図1乃至図5のうちの1つ又は複数において示される対応図面を参照して説明される内容、及び/又は前記対応図面において説明される内容と実質的に同一の低減演算を行う装置。
- 暗号化計算を行う低減演算を行う方法であって、図1乃至図5のうちの1つ又は複数において示される対応図面を参照して説明される内容、及び/又は前記対応図面において説明される内容と実質的に同一の低減演算を行う方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0314557.0A GB0314557D0 (en) | 2003-06-21 | 2003-06-21 | Improved reduction calculations |
PCT/IB2004/002011 WO2004114124A1 (en) | 2003-06-21 | 2004-06-10 | Improved reduction calculations |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007520729A true JP2007520729A (ja) | 2007-07-26 |
Family
ID=27637125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006516560A Withdrawn JP2007520729A (ja) | 2003-06-21 | 2004-06-10 | 改良された低減計算 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7590235B2 (ja) |
EP (1) | EP1639449A1 (ja) |
JP (1) | JP2007520729A (ja) |
CN (1) | CN1809806A (ja) |
GB (1) | GB0314557D0 (ja) |
WO (1) | WO2004114124A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9545813B2 (en) | 2012-06-07 | 2017-01-17 | Mitsubishi Pencil Company, Limited | Ball pen |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7978846B2 (en) * | 2007-06-30 | 2011-07-12 | Intel Corporation | Scale-invariant barrett reduction for elliptic-curve cyrptography |
US8005210B2 (en) * | 2007-06-30 | 2011-08-23 | Intel Corporation | Modulus scaling for elliptic-curve cryptography |
US7986779B2 (en) * | 2007-06-30 | 2011-07-26 | Intel Corporation | Efficient elliptic-curve cryptography based on primality of the order of the ECC-group |
US8626811B2 (en) * | 2010-04-30 | 2014-01-07 | Certicom Corp. | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine |
EP2385461A1 (en) * | 2010-04-30 | 2011-11-09 | Certicom Corp. | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine |
ITMI20111052A1 (it) | 2011-06-10 | 2012-12-11 | Planium S R L | Sistema di pavimentazione |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0792739B2 (ja) * | 1989-05-22 | 1995-10-09 | 甲府日本電気株式会社 | 浮動小数点データ正規化方式 |
US5271061A (en) * | 1991-09-17 | 1993-12-14 | Next Computer, Inc. | Method and apparatus for public key exchange in a cryptographic system |
DE69837036T2 (de) * | 1997-09-16 | 2007-10-18 | Koninklijke Philips Electronics N.V. | Verfahren und vorrichtung zur ausführung einer entschlüsselung mittels einer standardisierten modularen potenzierung zum vereiteln eines zeitangriffs |
US6240436B1 (en) * | 1998-03-30 | 2001-05-29 | Rainbow Technologies, Inc. | High speed montgomery value calculation |
US6691143B2 (en) * | 2000-05-11 | 2004-02-10 | Cyberguard Corporation | Accelerated montgomery multiplication using plural multipliers |
WO2002003608A1 (en) * | 2000-06-29 | 2002-01-10 | The State Of Oregon Acting By And Through The State Board Of Higher Education On Befalf Of The University Of Oregon | Method and apparatus for incomplete modular arithmetic |
-
2003
- 2003-06-21 GB GBGB0314557.0A patent/GB0314557D0/en not_active Ceased
-
2004
- 2004-06-10 JP JP2006516560A patent/JP2007520729A/ja not_active Withdrawn
- 2004-06-10 CN CNA2004800172981A patent/CN1809806A/zh active Pending
- 2004-06-10 EP EP04736554A patent/EP1639449A1/en not_active Ceased
- 2004-06-10 US US10/561,896 patent/US7590235B2/en active Active
- 2004-06-10 WO PCT/IB2004/002011 patent/WO2004114124A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9545813B2 (en) | 2012-06-07 | 2017-01-17 | Mitsubishi Pencil Company, Limited | Ball pen |
Also Published As
Publication number | Publication date |
---|---|
US20070168411A1 (en) | 2007-07-19 |
US7590235B2 (en) | 2009-09-15 |
CN1809806A (zh) | 2006-07-26 |
GB0314557D0 (en) | 2003-07-30 |
WO2004114124A1 (en) | 2004-12-29 |
EP1639449A1 (en) | 2006-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6064740A (en) | Method and apparatus for masking modulo exponentiation calculations in an integrated circuit | |
EP1293891B1 (en) | Arithmetic processor accomodating different finite field size | |
US11983280B2 (en) | Protection of cryptographic operations by intermediate randomization | |
US20050198093A1 (en) | Montgomery modular multiplier | |
JP2001527673A (ja) | モントゴメリー乗算に基づくモジュラ乗算及び累乗の改善された装置と方法 | |
US6209016B1 (en) | Co-processor for performing modular multiplication | |
US7831650B2 (en) | Method for modular multiplication | |
CA2225899A1 (en) | A method and apparatus for finite field multiplication | |
JPH06202850A (ja) | データ処理装置 | |
EP0938790B1 (en) | A method and device for executing a decrypting mechanism through calculating a standardized modular exponentiation for thwarting timing attacks | |
US9098381B2 (en) | Modular arithmatic unit and secure system including the same | |
CN113032797A (zh) | 在处理设备中执行加密操作的方法 | |
US6917956B2 (en) | Apparatus and method for efficient modular exponentiation | |
GB2287331A (en) | Electronic multiplying and adding apparatus. | |
JP2007520729A (ja) | 改良された低減計算 | |
CN113141255A (zh) | 用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法 | |
JP4047816B2 (ja) | 除算の結果を演算する装置および方法 | |
US6766346B2 (en) | System and method for computing a square of a number | |
US8995651B1 (en) | Multiple algorithm cryptography system | |
KR20040045152A (ko) | 모듈러 곱셈 장치 | |
EP1639448B1 (en) | Improved inversion calculations | |
CN111213122A (zh) | 模逆运算器、模逆运算方法及安全系统 | |
US20100208883A1 (en) | Protection of a modular exponentiation calculation performed by an integrated circuit | |
KR19990021768A (ko) | 디지탈신호처리기 | |
Chiou et al. | Parallel modular multiplication with table look-up |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070608 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20070608 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20080424 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090925 |