JP2012234199A - フォールディングを用いるモジュール削減 - Google Patents
フォールディングを用いるモジュール削減 Download PDFInfo
- Publication number
- JP2012234199A JP2012234199A JP2012167841A JP2012167841A JP2012234199A JP 2012234199 A JP2012234199 A JP 2012234199A JP 2012167841 A JP2012167841 A JP 2012167841A JP 2012167841 A JP2012167841 A JP 2012167841A JP 2012234199 A JP2012234199 A JP 2012234199A
- Authority
- JP
- Japan
- Prior art keywords
- modular
- multiplication
- value
- karatsuba
- folding
- 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
Links
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04K—SECRET COMMUNICATION; JAMMING OF COMMUNICATION
- H04K1/00—Secret communication
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
- Storage Device Security (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Dc Digital Transmission (AREA)
Abstract
【課題】NmodMを決定するための技術を提供する。なお、Nはn−ビット幅を有する数値で、また、Mはm−ビット幅を有する数値である。
【解決手段】モジュール演算の高速化は、一般に、N’=NH2fmodM+NLを決定することに続いてN’modMを決定することを含む。一例では、フォールディング操作を用いた畳み込み技術により、モジュール演算のコストを削減する。
【選択図】図4
【解決手段】モジュール演算の高速化は、一般に、N’=NH2fmodM+NLを決定することに続いてN’modMを決定することを含む。一例では、フォールディング操作を用いた畳み込み技術により、モジュール演算のコストを削減する。
【選択図】図4
Description
本発明は、暗号演算に関し、さらに詳しくは暗号演算においてフォールディングを用いるモジュール削減に関する。
暗号は、望まれないアクセスからデータを保護する。暗号は、典型的にはデータに対して数学的な操作(暗号化)を行ない、元のデータ(平文)を理解できなくする(暗号文)。逆の数学的な操作(解読)は、暗号文から元のデータを復元する。暗号は、データの暗号化および解読を越えた広範囲の様々な応用をカバーする。例えば、暗号は、認証(つまり、通信エージェントの同一性を信頼して決定)、デジタル署名の生成などでしばしば使用される。
現在の暗号技術は、集約的な数学的操作に極度に依存する。例えば、多くのスキームは、べき剰余(modular exponentiation)として知られる一種のモジュール演算を用い、それは大きな数にある数の累乗を行ない、モジュラ(modulus:法数)(つまり、剰余は所与のモジュラで除したときの余り)に関してそれを削減することを含む。数学上、べき剰余は、eが指数でMがモジュラである場合、gemodMとして表現される。
概念的に、乗法およびモジュール削減は直線的な演算である。しかしながら、多くの場合、これらのシステムで使用される数のサイズは極めて大きく、プロセッサの固有の語長を著しく越えてしまう。例えば、暗号プロトコルは、1024から4096あるいはそれより大きいビット長に対するモジュラ演算を要求する一方で、多くのプロセッサは32あるいは64ビットの固有の語長を有するに過ぎない。このような大きな数を操作するには、時間の観点から、および演算資源の観点から非常に高価なものになるであろう。
上述のように、広範囲の様々な暗号演算は、非常に大きな数および/またはモジュール削減の乗算を含む。計算集中的な演算および暗号システムの高速演算の負担を軽減する様々な技術がここに記述される。これらの技術は、より汎用的な目的、非暗号的な計算設定に適用することもできる。そのような技術の1つは、カラツバ(Karatsuba)乗算として知られている大きな数を乗算するための技術の効率性を改善することを含む。別の技術は、モジュール削減の効率性を改善することを含む。
カラツバ乗算
2つの数の乗算を行なうために広範囲の様々なアプローチが行なわれてきている。教科書的な乗算として知られている共通のアプローチは、オペランドをセグメントに分けて、より小さなセグメント上で乗算操作を行なうことを含む。例として、2つのnビット幅の数AおよびBを、次のような一組のより小さなサイズのサブセグメントとして表現することができる。
A=a12s+a0 [1]
B=b12s+b0 [2]
ここで、a0およびb0項は、AとBのs最下位ビットを、a1およびb1項は、残余の上位ビットを表わす。この表記法では、axとbx中の添字xは、数字内のセグメントの順序を表わす(例えば、a0は、Aの最下位ビットを、a1は次の上位ビット表わすなど)。
2つの数の乗算を行なうために広範囲の様々なアプローチが行なわれてきている。教科書的な乗算として知られている共通のアプローチは、オペランドをセグメントに分けて、より小さなセグメント上で乗算操作を行なうことを含む。例として、2つのnビット幅の数AおよびBを、次のような一組のより小さなサイズのサブセグメントとして表現することができる。
A=a12s+a0 [1]
B=b12s+b0 [2]
ここで、a0およびb0項は、AとBのs最下位ビットを、a1およびb1項は、残余の上位ビットを表わす。この表記法では、axとbx中の添字xは、数字内のセグメントの順序を表わす(例えば、a0は、Aの最下位ビットを、a1は次の上位ビット表わすなど)。
従来の教科書的な乗算を用いると、AおよびBの乗算は、4回のより小さな乗算を用いて計算される。
A×B=a1b122s+(a0b1+b0a1)2s+a0b0 [3]
A×B=a1b122s+(a0b1+b0a1)2s+a0b0 [3]
カラツバ乗算として知られている乗算技術は、セグメント乗算の回数を削減することができる。例えば、上記AおよびBの乗算における[3]中の項、
(a0b1+b0a1) [4]
の結果は、
[(a0+a1)(b0+b1)]−a1b1−a0b0 [5]
として計算することができる。
a1b1とa0b0が方程式[3]中で別の項を形成するので、方程式[5]中でa1b1とa0b0の値を使用することは、追加計算を強いることを表わすものではない。方程式[3]中の方程式[4]に方程式[5]を代入すると、A×Bのカラツバ乗算は次のように計算することができる。
A×B=a1b122s+([(a0+a1)(b0+b1)]−a1b1−a0b0)2s+a0b0 [6]
この代入によって、2回の乗算に対して2回の加算と1回の乗算で済ませられる。大抵の場合、これは計算効率の上で極めて大きな利益をもたらす。
(a0b1+b0a1) [4]
の結果は、
[(a0+a1)(b0+b1)]−a1b1−a0b0 [5]
として計算することができる。
a1b1とa0b0が方程式[3]中で別の項を形成するので、方程式[5]中でa1b1とa0b0の値を使用することは、追加計算を強いることを表わすものではない。方程式[3]中の方程式[4]に方程式[5]を代入すると、A×Bのカラツバ乗算は次のように計算することができる。
A×B=a1b122s+([(a0+a1)(b0+b1)]−a1b1−a0b0)2s+a0b0 [6]
この代入によって、2回の乗算に対して2回の加算と1回の乗算で済ませられる。大抵の場合、これは計算効率の上で極めて大きな利益をもたらす。
上記の例において、カラツバ法は、2つのセグメントへ分けた数を乗算した(つまり「2つの項のカラツバ乗算」)。しかしながら、カラツバ法は、他の数のセグメントに適用することもできる。例えば、3つの項のカラツバ乗算は、数値AおよびBに対して次のように定義することができる。
A=a222s+a12s+a0 [7]
B=b222s+b12s+b0 [8]
A×B=a2b224s+a1b122s+a0b0+[(a2+a1)(b2+b1)−a2b2−a1b1]23s+[(a2+a0)(b2+b0)−a2b2−a0b0]22s+[(a0+a1)(b0+b1)−a0b0−a1b1]2s [9]
ここで、AおよびBは、それぞれ3つのs−ビット・セグメントに分割される。
A=a222s+a12s+a0 [7]
B=b222s+b12s+b0 [8]
A×B=a2b224s+a1b122s+a0b0+[(a2+a1)(b2+b1)−a2b2−a1b1]23s+[(a2+a0)(b2+b0)−a2b2−a0b0]22s+[(a0+a1)(b0+b1)−a0b0−a1b1]2s [9]
ここで、AおよびBは、それぞれ3つのs−ビット・セグメントに分割される。
2項のカラツバ乗算[6]と同様に、3項のカラツバ乗算[9]は、異なる順序のセグメント間の乗算(つまり、axby)の代わりに同じ順序のセグメント上の乗算(つまり、axbx)および同じ数のセグメントの加算(つまり、ax+ay)を用いた。方程式は5項のカラツバ乗算に対しても定義された。これらのカラツバ方程式は、多くても(t2+t)/2回の乗算を要求するという属性を共有し、ここでtは項数である。
カラツバ乗算は、帰納を使用して実行することができる。例えば、次の2項のカラツバ乗算では、
A×B=a1b122n+((a0+a1)(b0+b1)−a1b1−a0b0)2n+a0b0 [6]
より小さいセグメント乗算は、それぞれカラツバ法を使用して順番に実行することができる。例えば、A×Bのカラツバ乗算の実行は、a1b1,a0b0,(a0+a1)(b0+b1)のカラツバ乗算を含めることができる。これらの乗算は、さらに小さなサブセグメントのカラツバ乗算を含めてもよい。例えば、a1b1の決定はサブセグメントの複数の項へa1とb1をセグメントに分けてもよい。
A×B=a1b122n+((a0+a1)(b0+b1)−a1b1−a0b0)2n+a0b0 [6]
より小さいセグメント乗算は、それぞれカラツバ法を使用して順番に実行することができる。例えば、A×Bのカラツバ乗算の実行は、a1b1,a0b0,(a0+a1)(b0+b1)のカラツバ乗算を含めることができる。これらの乗算は、さらに小さなサブセグメントのカラツバ乗算を含めてもよい。例えば、a1b1の決定はサブセグメントの複数の項へa1とb1をセグメントに分けてもよい。
しかしながら、このアプローチにおける潜在的な問題は、異なるサイズのオペランドが生成されるということである。すなわち、(a0+a1)項および(b0+b1)項は両方とも、加算操作からのキャリー(けた上げ)を生成することがある。(a0+a1)と(b0+b1)の結果に続く乗算が追加の固有ワードにあふれ出すことがある。これは、カラツバ法の実行効率の高さを弱めることになる。
「キャリー」問題に取り組むために、図1−図3は、2つのオペランドの最下位ビッツ(bits)上でカラツバ乗算を行ない、次に最上位ビッツ(bits)に基づいて結果を修正するサンプル実行例を示す。図1は、乗算される2つのオペランドA100,B102をより詳細に示す。この例において、各オペランドは、n+1ビット長であり、ここでnはあるプロセッサの固有ワードサイズsの2倍である。この例において、各オペランドは、2つの項と付加的な高位ビットのセグメントに分けられる。例えば、Aの最下位sビッツはa0を形成し、次の上位sビッツはa1を形成する一方、Aの最上位ビットは、ahを形成する。
図示されるように、カラツバ乗算は、sサイズの項上で次のように実行される。
22sa1b1+2s[(a1+a0)(b1+b0)−a1b1−a0b0]+a0b0 [10]
その後、その結果は、最上位ビットah,bhの値に基づいて調整される。例えば、図示されるように、その結果は、
2nahB[b1:b0] 106[11]
および
2nbhA[a1:a0] 108[12]
だけ増やされる場合がある。
言い換えれば、ahが「1」である場合、その結果は、nビットだけシフトしたbl:b0のn−ビットによって増加させられる。同様に、bhが「1」である場合、その結果は、nビットだけシフトしたal:a0のn−ビットによって増加させられる。例えば、これらの調整は追加の操作として実行される。
result=result+2nahB[b1:b0]
result=result+2nbhA[a1:a0]
あるいは加算に続く分岐として、
if(ah)then result=result+2nB[b1:b0]
if(bh)then result=result+2nA[a1:a0]
が実行される。
最後に、もしah,bh両方が「1」である場合、その結果は2n(つまり、ahbh)だけ増加させられる。これは、例えば、ブランチを使用して次のように実行される。
if(ahbh)then result=result+22n
加算および1またはそれ以上のブランチ・ステートメントのこのコンビネーションは、キャリーがより低いレベルの帰納へ下流伝搬するのを防ぐことができる。
22sa1b1+2s[(a1+a0)(b1+b0)−a1b1−a0b0]+a0b0 [10]
その後、その結果は、最上位ビットah,bhの値に基づいて調整される。例えば、図示されるように、その結果は、
2nahB[b1:b0] 106[11]
および
2nbhA[a1:a0] 108[12]
だけ増やされる場合がある。
言い換えれば、ahが「1」である場合、その結果は、nビットだけシフトしたbl:b0のn−ビットによって増加させられる。同様に、bhが「1」である場合、その結果は、nビットだけシフトしたal:a0のn−ビットによって増加させられる。例えば、これらの調整は追加の操作として実行される。
result=result+2nahB[b1:b0]
result=result+2nbhA[a1:a0]
あるいは加算に続く分岐として、
if(ah)then result=result+2nB[b1:b0]
if(bh)then result=result+2nA[a1:a0]
が実行される。
最後に、もしah,bh両方が「1」である場合、その結果は2n(つまり、ahbh)だけ増加させられる。これは、例えば、ブランチを使用して次のように実行される。
if(ahbh)then result=result+22n
加算および1またはそれ以上のブランチ・ステートメントのこのコンビネーションは、キャリーがより低いレベルの帰納へ下流伝搬するのを防ぐことができる。
図2は、469の値を有するA100を369の値を有するB102と乗算させる上述した手続の操作を示す。図示されるように、最上位ah,bhビットを除いて、A[2s−1:0]とB[2s−1:0]のカラツバ乗算は、24,069の値を生成する。この値は、最初にahのために107,525に調整され、それからbhのために78,597に調整される。最後に、ah,bh両方が「1」であるので、22n=16に対する最上位ビットが最終的な答えである173,061を生成するために加えられる。再び、axbxの値は、カラツバ技術の再帰的な適用によって決定することができる。ah,bhビットを切り取ることによって、その再帰は、便利な同じサイズのオペランド上で操作する。
図3は、再帰的なスキームでのこのカラツバ技術の実行を示す。上述するように、オペランドA,Bのカラツバ乗算は、A[n:0]とB[n:0]の乗算によって行なわれ(114)、AとBの最上位ビットah,bhに対する訂正116が続く。その演算結果値は、再帰スタックに返される(118)。
オペランドの長さがプロセッサ固有のワードサイズよりはるかに長い場合、カラツバ乗算は特に望ましい。例えば、プロセッサは、より長いオペランドと比較して単にsのワードサイズを有している。nがsに接近する場合、カラツバの効率は低下し、教科書的な乗算がより魅力的になる。このように、図3に示されるように、再帰112の現在の深さに依存して、教科書的乗算120,122あるいはカラツバ114,116,118のいずれかの手順を使用することになるであろう。実際上、教科書的乗算を使用して、最終2レベル(つまりL=2)を再帰的に行なうことにより、最良の総合特性を提供するであろう。
図1−図3は、実行例を示すが、一方多くの変形が可能である。例えば、図1−図3において、各カラツバ項は、s−ビット長として示されている。しかしながら、その項は、同じビット長である必要がなく、単一の固有ワードを占有する必要もない。同様に、ah,bhが単一のビットとして示されているが、他の実行例では、ah,bhが複数のビットを含んでいてもよい。
上述するように、異なる項数(例えば、2,3,5)に対して異なるカラツバ方程式が定義される。標準カラツバ分解(canonical Karatsuba decomposition)は、次の6つの長さの数値である。
n=2k
n=3・2k
n=32・2k
n=33・2k
n=33・2k
n=5・2k
ここで、nは数値の長さであり、kは整数である。
n=2k
n=3・2k
n=32・2k
n=33・2k
n=33・2k
n=5・2k
ここで、nは数値の長さであり、kは整数である。
カラツバ分解を最適化するために、数値にゼロを付加し、より大きな標準形に適合するようにしてもよい。どの標準カラツバ分解を作業wに使用すべきかを識別するために、各々に対し計算され、最小のものが選択される。
w値は、異なるn値に対して計算されてもよい。その結果は、例えば、所与のnに対する最小のw値に基づいて、所与の数値を付与する量を示すルックアップ表を形成するために使用してもよい。
フォールディングを用いるモジュール削減
乗算に加えて、多くの暗号スキームにはモジュール削減(例えば、NmodMの計算)を含む。モジュール削減操作の費用を削減するために、いくつかのシステムは、バレット(Barrett)のモジュール削減として知られている技術を使用する。バレットは、本質的に、商の推定を計算する。
q=floor(floor(N/2m)μ/M) [13]
ここで、mはモジュラMの幅で、μは次式で決定される定数である。
μ=floor(22n/M) [14]
ここでnは数値Nの幅である。NmodMの値は、N−qMを計算することにより決定され、最終値がM未満であることを保証するために必要な場合、Mだけ減じる最終減算が続く。バレットの効率への寄与はμに対する予め計算された値にアクセスする能力である。すなわち、μの値は、Nの特定の値にアクセスしなくても、Nのサイズのみに基づいて決定される。
乗算に加えて、多くの暗号スキームにはモジュール削減(例えば、NmodMの計算)を含む。モジュール削減操作の費用を削減するために、いくつかのシステムは、バレット(Barrett)のモジュール削減として知られている技術を使用する。バレットは、本質的に、商の推定を計算する。
q=floor(floor(N/2m)μ/M) [13]
ここで、mはモジュラMの幅で、μは次式で決定される定数である。
μ=floor(22n/M) [14]
ここでnは数値Nの幅である。NmodMの値は、N−qMを計算することにより決定され、最終値がM未満であることを保証するために必要な場合、Mだけ減じる最終減算が続く。バレットの効率への寄与はμに対する予め計算された値にアクセスする能力である。すなわち、μの値は、Nの特定の値にアクセスしなくても、Nのサイズのみに基づいて決定される。
バレットのモジュール削減のような技術は、モジュール削減の費用を減少させることができる。図4−図6は、モジュール削減の計算上のコストをさらに低減することができる技術を示す。図4は、特に、数値N202をより小さな幅数N’206に「畳込む(fold)」技術を示す。より小さな幅数にもかかわらず、フォールディング(folding)操作は、N’modMがNmodMと同じであるようなN’を決定する。その後、古典的なバレット・モジュール削減のような従来の操作は、より小さなN’上で行なわれる。オペランドNを「縮める(shrinking)」ことによって、後続の操作は、モジュラの剰余を決定するために使用される乗算を削減することができる、より小さなサイズの数値を含む。加えて、数値Nがより大きくなれば、効率がよくなることがより明白になる。例えば、サンプルテストでは、512ビットサイズのNに対しては速度が27%増加し、4096ビットサイズのNに対しては177%の速度増加にジャンプすると推定される。
より詳細には、図4は、nの幅を有する数値N202、および、mの幅を有するモジュラM200を示す。NmodMを決定するために、「フォールディング」操作212は、NからN’を生成する。図示されるように、フォールディング212がフォールディング・ポイントfで生じ、それは、Nをより高位のNHおよびより低位のNLの部分へ線引きをする。例えば、フォールディング・ポイントfは、モジュラの長さおよびNの長さの中央ポイントになるように選ばれてもよい。例えば、Nが2m(モジュラ幅の2倍)の幅を有すると仮定すると、フォールディング・ポイントは、21.5mによって識別されるビット位置にあってもよい。このようなフォールディング・ポイントは、N’の結果幅を最小限にすることができる。すなわち、NHまたはNLを拡張あるいは縮小するいずれかの方向へフォールディング・ポイントを移動させることにより、実際にN’のサイズが増加することになる。
フォールディング・ポイントに基づいて、N’は次のように決定することができる。
N’=NH2fmodM+NL 212[15]
その後、より小さなN’は、例えば古典的バレット技術を使用して、モジュール削減を行なうために使用される。
N’=NH2fmodM+NL 212[15]
その後、より小さなN’は、例えば古典的バレット技術を使用して、モジュール削減を行なうために使用される。
図示されるように、N’の決定212は、2fmodM208(M’と称される)の項を含む。2fmodMの値は、特定のN値に配慮をせずに事前に計算することができる。Mとfの様々な値に対するこの値を事前に計算しておくことは、高価な乗算を時間的に重要でない期間へ移すことにより、N’のリアルタイム計算を促進させる。Mとfの値に対して事前に計算された値は、高速アクセスのためにメモリ中のテーブルに格納することができる。NH(2fmodM)の乗算は、上述するように、例えば、カラツバ乗算を使用して達成される。
図示するように、図5は、Nが252(1111,1100b)の値を有する8ビット長の数で、Mが13(1101b)の値を有する4ビット長の数である場合のフォールディング例を示す。図示されるように、フォールディング・ポイントはf=21.5m=26として選択される。N’の計算は、96の値を生成する。図示されるように、Nとそのフォールドされた対N’はモジュラ13に対するのと同じモジュラの残余5を生成する。N’のモジュール削減は、バレットのような様々なモジュール削減・アプローチのうちのどれでも使用して行なうことができる。
図6は、上述の技術を使用して、NmodMの完全な決定例を示す。この例において、N202は幅n=4sであり、また、M204は幅m=2sである。図示のように、フォールディング・ポイントfは23sである。図示されるように、M’=23smodM222に対する事前の計算は、(M’)(NH)224を決定するにために用いられる。図6は、NHをfloor(N/23s)の値として表現する一方で、NHの値は、NH=N[4s−1:3s]を設定することによってより速く獲得することができる。(M’)(NH)の値224は、N’の計算を完了するためにNL226に加えられる。再び、図6は、Nmod23sとしてNLを表現しているが、NLの値は、NH=N[3s−1:0]を設定することによってより速く獲得することができる。
N’の決定の後に、N’modMは、古典的バレット・リダクションを使用して計算することができる。この場合、バレット・リダクションは、230,234で次式のように計算される。
R=N’−floor(floor(N’/22s)(μ/2s)M [16]
ここで、μは、floor(23s/M)として決定される。M’の値のように、μの値は、sやMの様々な値に対して事前に計算される。この事前計算は、高価な操作をリアルタイム処理が必要でない期間へ再び時間シフトすることができる。
R=N’−floor(floor(N’/22s)(μ/2s)M [16]
ここで、μは、floor(23s/M)として決定される。M’の値のように、μの値は、sやMの様々な値に対して事前に計算される。この事前計算は、高価な操作をリアルタイム処理が必要でない期間へ再び時間シフトすることができる。
結果R236は、モジュラM200より大きくてもよい。この比較的まれな場合に、R=R−Mの減算は、R<Mを保証するために使用される。
単一のフォールディング操作は、モジュール削減の効率およびリアルタイム特性を著しく改善する。図7に示されるように、反復フォールディングは、乗算の総数およびALU操作(つまり、加算、減算、およびシフト)に関して一層の効率改善を提供する。図示されるように、N 202はN’204に再びフォールディングされる。その結果N’は、多くの場合幅fのものである。N’が幅f+1のものである場合、N’=N’−(M2m)の減算操作は、必ずしも必要ではないが、N’を「整える(trim)」ために使用されてもよい。図示されるように、付加的なフォールディング操作は、N’をN”206に変形し、ここでN”modM=N’modMである。この第2のフォールディングは、再び計算上の効率を向上させる。
異なるフォールディングの反復中に使用されるフォールディング・ポイントは、第1の反復に対する21.5mから第2に対する21.25mへ移動する。より一般的には、所与の反復に対するフォールディング・ポイントは、2(1+2∧−i)mとして決定され、ここでiは反復番号である。
図7は、2つのフォールディングを示すが、付加的なフォールディングも可能である。しかしながら、付加的なフォールディングは、リターンを減らし、および/または、実際に乗算操作の回数を増加させるかもしれない。
べき剰余の実行例
上述された技術は、様々な暗号演算を行なうために使用することができる。例えば、上述されたカラツバ乗算およびフォールディング技術は、べき剰余を実行するために組み合わせることができる。
上述された技術は、様々な暗号演算を行なうために使用することができる。例えば、上述されたカラツバ乗算およびフォールディング技術は、べき剰余を実行するために組み合わせることができる。
べき剰余はgemodMを決定することを含む。べき剰余の実行は、様々な暗号アルゴリズムの中心にある。例えば、RSAでは、公開鍵は、公開指数、e−公開、およびモジュラMによって形成される。秘密鍵は、秘密指数、e−秘密、およびモジュラMによって形成される。メッセージ(例えば、パケットまたはパケットのペイロード)を暗号化するために、次の操作が行なわれる。
ciphertext=cleartexte−publicmodM [17]
メッセージを解読するために、次の操作が行なわれる.
cleartext=ciphertexte−privatemodM [18]
ciphertext=cleartexte−publicmodM [17]
メッセージを解読するために、次の操作が行なわれる.
cleartext=ciphertexte−privatemodM [18]
べき剰余を行なうための1つの手続きは、指数e中のビットを左から右へ順に処理する。A=1の初期値から始めて、その手続きは、遭遇した各「0」ビットに対する値を2乗する(つまり、A=A*A)。各「1」ビットに対して、この手続きは、その値を2乗し、gを乗じる両方を行なう(つまり、A=A*A*g)。最終結果は、モジュール削減操作で使用することができる。例えば、31010bmod5を決定するために、この手続きは、以下のように開始する、ここでg=3、e=「1010」、またM=5である。
A
1
exponent bit1−1 1*1*3 =3
exponent bit2−0 3*3 =9
exponent bit3−1 9*9*3 =243
exponent bit4−0 243*243 =59049
AmodM 4
非常に大きな数値が乗算された際の終わりでモジュール削減を実行する代わりに、すべての指数ビットあるいはいくつかの指数ビット毎に処理した後にモジュール削減を乗算操作内に挿入するようにしてもよい。例えば、31010bmod5を決定するために、この手続きは以下のように進む。
A
1
exponent bit1−1 1*1*3 =3
AmodM 3
exponent bit2−0 3*3 =9
AmodM 4
exponent bit3−1 4*4*3 =48
AmodM 3
exponent bit4−0 3∧2 =9
AmodM 4
特定の実行にもかかわらず、2乗および「g」乗算の双方に、上述されたカラツバ乗算技術を使用することにより、べき剰余を著しく促進させることができる。加えて、フォールディングを使用することで、リダクション操作は、処理資源の使用を著しく軽減させる。
A
1
exponent bit1−1 1*1*3 =3
exponent bit2−0 3*3 =9
exponent bit3−1 9*9*3 =243
exponent bit4−0 243*243 =59049
AmodM 4
非常に大きな数値が乗算された際の終わりでモジュール削減を実行する代わりに、すべての指数ビットあるいはいくつかの指数ビット毎に処理した後にモジュール削減を乗算操作内に挿入するようにしてもよい。例えば、31010bmod5を決定するために、この手続きは以下のように進む。
A
1
exponent bit1−1 1*1*3 =3
AmodM 3
exponent bit2−0 3*3 =9
AmodM 4
exponent bit3−1 4*4*3 =48
AmodM 3
exponent bit4−0 3∧2 =9
AmodM 4
特定の実行にもかかわらず、2乗および「g」乗算の双方に、上述されたカラツバ乗算技術を使用することにより、べき剰余を著しく促進させることができる。加えて、フォールディングを使用することで、リダクション操作は、処理資源の使用を著しく軽減させる。
付加的な計算効率は、繰り返し用いられる値を格納することにより獲得することができる。例えば、例として、gの値が2つの異なる乗算に必要とされているとする。2048ビット指数という現実の世界での例では、gを使用する数の乗算ははるかに大きくなる。gを含むカラツバ乗算の効率を改善するために、gi=(gH(i)+gL(i))という異なる値が反復使用のためにテーブルに格納され、ここで、iは、カラツバ再帰の深さを表わす。このキャッシングは、同じ加算を重複して実行する極めて大きいサイクル回数を削減することができる。モジュール削減が同じモジュラを使用して複数回発生する場合、フォールディングで使用されるM’およびμのような他で頻繁に用いられる値をキャッシングすることは、さらに特性を向上させるであろう。
1kサイズの数を2kサイズの数で乗算するような不均等なサイズの数の乗算を行なう場合、付加的な最適化が使用されてもよい。このような乗算が、バレットのqM値を決定する際に、またNH2fmodMを決定する際に生じることがある。カラツバを利用するために、1k*2kの乗算をq*mhおよびq*mlのような2つの1k*1kの操作へ分割することができる。qが両方の操作中で使用されるので、(qh+ql)の値を2度演算する必要はなく、その代り、先の使用のために格納される。
上記は単に例であり、カラツバおよびフォールディング技術を広範囲の様々な他の暗号演算を実行するだけでなく他の汎用的な目的の数学的な適用に使用することができる。
本技術は、様々な方法で、また様々なシステムで実行することができる。例えば、本技術は、専用デジタルまたはアナログ・ハードウェア(例えば、Verilog(tm)のようなハードウェア記述言語に上述されたプログラミング技法によって決定される)、ファームウェア、および/またはASIC(特定用途向けIC)またはプログラム可能なゲート・アレイ(PGA)中で実行されてもよい。本技術は、またプロセッサ実行のために、コンピュータ読取り可能な媒体上に配置されたコンピュータ・プログラムとして実行されてもよい。例えば、そのプロセッサは、汎用プロセッサであってもよい。
図8に示されるように、本技術は、暗号演算を処理することができるプロセッサ・モジュール300によって実行されるコンピュータ・プログラムで実現される。図示されるように、モジュール300は、複数のプログラム可能な処理ユニット306−312および専用ハードウェア乗算器316を含む。処理ユニット306−312は、コア302によって管理される共有メモリ・ロジック304からダウンロードされるデータ上でプログラムを実行する。他のプロセッサおよび/またはプロセッサ・コアは、データおよび実行すべき命令を指定してモジュール300へ命令を送出する。例えば、プロセッサ・コアは、RAM314に格納されたg,e,およびM値でのべき剰余を行なうためにモジュール300へ命令を送出する。コア302は、べき剰余プログラムを処理ユニット306−312にダウンロードし、かつ操作されるべきデータをRAM314から共有メモリ・ロジック304へ、そして最後に処理ユニット306−312へダウンロードするための命令を共有メモリ304へ送出することによって応答する。処理ユニット306−312は、順番に、プログラム命令を実行する。特に、処理ユニット306−312は、2乗あるいは「g」乗算を行なうために使用されるカラツバ乗算のような掛け算を行なうために乗算器316を使用する。最後に、処理ユニット306−312は、要求コアへ転送するために共有メモリ・ロジック304にその結果を戻す。プロセッサ・モジュール300は、プログラム可能なコアとして同じダイ上に、あるいは異なるダイ上に集積されてもよい。
図8は、上述されたカラツバおよびフォールディング技術を実行するために使用するアーキテクチャ例を単に示す。しかしながら、本技術は、プログラムされた従来の汎用プロセッサのような広範囲の様々な他のアーキテクチャ中で使用することができる。
他の実施例は、次の請求項の範囲内にある。
300 プロセッサ・モジュール
302 コア
304 共有メモリ・ロジック
306−312 処理ユニット
314 RAM
316 乗算器
302 コア
304 共有メモリ・ロジック
306−312 処理ユニット
314 RAM
316 乗算器
Claims (2)
- データ(D)をメモリ回路からアクセスする段階と、
N=Dkを、回路によって、計算する段階であって、kは、暗号キーの整数の一部である、段階と、
モジュラMに関して前記計算されたNの値のモジュラ剰余を、前記回路によって、決定する段階であって、
少なくとも1つの定数からなるセットを、前記回路によって、アクセスする段階であって、前記少なくとも1つの定数からなるセット中の各定数は、2fimodMの値に対応し、fiは、データの高位部と低位部との境界を画定するビット位置を示す整数である、段階、
Ni-1の低位部に前記少なくとも1つからなる定数のセット中の定数の1つの定数が乗じられたNi-1の高位部を加えることによって、複数のiの値に対するNiを、前記回路によって、決定する段階であって、NimodM=Ni-1modMが成り立ち、かつNiは、Ni-1より小さい幅を有し、iは、連続した決定段階における前記数値Niの決定段階を示す整数である、段階、
前記モジュラMに関して最終決定されたNiのモジュラ剰余を、前記回路によって、決定する段階、および
前記モジュラMに関して前記最終決定されたNiの決定モジュラ剰余を、前記回路によって、メモリ回路に格納する段階、からなる決定する段階と、
前記決定されたNmodMに基づいて、
(1)パケット内に含まれるデータの暗号化、および
(2)パケット内に含まれるデータの解読化、
の内の少なくとも1つを、前記回路によって、実行する段階と、
からなることを特徴とする方法。 - 前記モジュラMに関して前記最終決定されたNiのモジュラ剰余の決定は、
(1)Niに関連するモジュラ剰余のルックアップ表、および
(2)前記モジュラMに関して前記最終決定されたNiのバレット・モジュール削減、
の内の少なくとも1つを含むことを特徴とする請求項1記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/476,432 US8229109B2 (en) | 2006-06-27 | 2006-06-27 | Modular reduction using folding |
US11/476,432 | 2006-06-27 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009530713A Division JP5116770B2 (ja) | 2006-06-27 | 2007-06-21 | フォールディングを用いるモジュール削減 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012234199A true JP2012234199A (ja) | 2012-11-29 |
JP5378579B2 JP5378579B2 (ja) | 2013-12-25 |
Family
ID=38846425
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009530713A Expired - Fee Related JP5116770B2 (ja) | 2006-06-27 | 2007-06-21 | フォールディングを用いるモジュール削減 |
JP2012167841A Expired - Fee Related JP5378579B2 (ja) | 2006-06-27 | 2012-07-28 | フォールディングを用いるモジュール削減 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009530713A Expired - Fee Related JP5116770B2 (ja) | 2006-06-27 | 2007-06-21 | フォールディングを用いるモジュール削減 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8229109B2 (ja) |
EP (1) | EP2033357A2 (ja) |
JP (2) | JP5116770B2 (ja) |
KR (1) | KR101062558B1 (ja) |
CN (1) | CN101097511B (ja) |
TW (1) | TWI350094B (ja) |
WO (1) | WO2008002828A2 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8229109B2 (en) | 2006-06-27 | 2012-07-24 | Intel Corporation | Modular reduction using folding |
US7827471B2 (en) * | 2006-10-12 | 2010-11-02 | Intel Corporation | Determining message residue using a set of polynomials |
US8689078B2 (en) | 2007-07-13 | 2014-04-01 | Intel Corporation | Determining a message residue |
US8042025B2 (en) * | 2007-12-18 | 2011-10-18 | Intel Corporation | Determining a message residue |
US7886214B2 (en) * | 2007-12-18 | 2011-02-08 | Intel Corporation | Determining a message residue |
US9052985B2 (en) * | 2007-12-21 | 2015-06-09 | Intel Corporation | Method and apparatus for efficient programmable cyclic redundancy check (CRC) |
US8144864B2 (en) * | 2007-12-28 | 2012-03-27 | Intel Corporation | Method for speeding up the computations for characteristic 2 elliptic curve cryptographic systems |
US8312363B2 (en) * | 2008-12-16 | 2012-11-13 | Intel Corporation | Residue generation |
US8392494B2 (en) * | 2009-06-26 | 2013-03-05 | Intel Corporation | Method and apparatus for performing efficient side-channel attack resistant reduction using montgomery or barrett reduction |
CN102761414B (zh) * | 2011-04-26 | 2015-06-10 | 航天信息股份有限公司 | 一种sm3密码杂凑算法及确定其中的变量字的方法 |
US9778910B2 (en) | 2015-03-20 | 2017-10-03 | Intel Corporation | Multiplier pipelining optimization with a bit folding correction |
US9753692B2 (en) | 2015-03-25 | 2017-09-05 | Intel Corporation | Multiplier pipelining optimization with a postponed estimation correction |
GB2546352B (en) * | 2015-05-27 | 2018-04-11 | Imagination Tech Ltd | Efficient modulo calculation |
US9942039B1 (en) * | 2016-09-16 | 2018-04-10 | ISARA Corporation | Applying modular reductions in cryptographic protocols |
FR3070814B1 (fr) | 2017-09-05 | 2019-09-13 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Dispositif de reduction modulaire |
CN109710308B (zh) | 2017-10-25 | 2023-03-31 | 阿里巴巴集团控股有限公司 | 任务的处理方法、装置和系统 |
US11662978B2 (en) | 2020-06-04 | 2023-05-30 | PUFsecurity Corporation | Modular operation circuit adopting iterative calculations |
TWI784406B (zh) * | 2020-06-04 | 2022-11-21 | 熵碼科技股份有限公司 | 採用迭代計算的模數運算電路 |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3980874A (en) | 1975-05-09 | 1976-09-14 | Burroughs Corporation | Binary to modulo M translation |
JP2577914B2 (ja) | 1987-06-11 | 1997-02-05 | クラリオン株式会社 | m系列符号発生器 |
FR2622713A1 (fr) | 1987-10-30 | 1989-05-05 | Thomson Csf | Circuit de calcul utilisant une arithmetique residuelle |
FR2658932A1 (fr) | 1990-02-23 | 1991-08-30 | Koninkl Philips Electronics Nv | Procede de codage selon la methode dite rsa, par un microcontroleur et dispositif utilisant ce procede. |
US5384786A (en) | 1991-04-02 | 1995-01-24 | Cirrus Logic, Inc. | Fast and efficient circuit for identifying errors introduced in Reed-Solomon codewords |
US5274707A (en) | 1991-12-06 | 1993-12-28 | Roger Schlafly | Modular exponentiation and reduction device and method |
US5642367A (en) | 1994-02-07 | 1997-06-24 | Mitsubishi Semiconductor America, Inc. | Finite field polynomial processing module for error control coding |
US5671377A (en) | 1994-07-19 | 1997-09-23 | David Sarnoff Research Center, Inc. | System for supplying streams of data to multiple users by distributing a data stream to multiple processors and enabling each user to manipulate supplied data stream |
US7190681B1 (en) | 1996-07-10 | 2007-03-13 | Wu William W | Error coding in asynchronous transfer mode, internet and satellites |
US6128766A (en) | 1996-11-12 | 2000-10-03 | Pmc-Sierra Ltd. | High speed cyclic redundancy check algorithm |
US5942005A (en) | 1997-04-08 | 1999-08-24 | International Business Machines Corporation | Method and means for computationally efficient error and erasure correction in linear cyclic codes |
KR100684134B1 (ko) | 1997-05-04 | 2007-02-16 | 엠시스템스 리미티드 | 몽고메리 승산에 기초한 모듈의 승산 및 누승을 위한 개선된 장치와 방법 |
US6484192B1 (en) | 1998-01-29 | 2002-11-19 | Toyo Communication Equipment Co., Ltd. | Root finding method and root finding circuit of quadratic polynomial over finite field |
US6223320B1 (en) | 1998-02-10 | 2001-04-24 | International Business Machines Corporation | Efficient CRC generation utilizing parallel table lookup operations |
CA2267721C (en) | 1998-03-26 | 2002-07-30 | Nippon Telegraph And Telephone Corporation | Scheme for fast realization of encryption, decryption and authentication |
US6530057B1 (en) | 1999-05-27 | 2003-03-04 | 3Com Corporation | High speed generation and checking of cyclic redundancy check values |
GB2360177B (en) | 2000-03-07 | 2003-08-06 | 3Com Corp | Fast frame error checker for multiple byte digital data frames |
JP3926532B2 (ja) | 2000-03-16 | 2007-06-06 | 株式会社日立製作所 | 情報処理装置、情報処理方法、及びカード部材 |
GB0013355D0 (en) | 2000-06-01 | 2000-07-26 | Tao Group Ltd | Parallel modulo arithmetic using bitwise logical operations |
US6721771B1 (en) | 2000-08-28 | 2004-04-13 | Sun Microsystems, Inc. | Method for efficient modular polynomial division in finite fields f(2{circumflex over ( )}m) |
US6609410B2 (en) | 2000-09-29 | 2003-08-26 | Spalding Sports Worldwide, Inc. | High strain rate tester for materials used in sports balls |
US6732317B1 (en) | 2000-10-23 | 2004-05-04 | Sun Microsystems, Inc. | Apparatus and method for applying multiple CRC generators to CRC calculation |
JP3785044B2 (ja) | 2001-01-22 | 2006-06-14 | 株式会社東芝 | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 |
US20020144208A1 (en) | 2001-03-30 | 2002-10-03 | International Business Machines Corporation | Systems and methods for enabling computation of CRC' s N-bit at a time |
US7027597B1 (en) | 2001-09-18 | 2006-04-11 | Cisco Technologies, Inc. | Pre-computation and dual-pass modular arithmetic operation approach to implement encryption protocols efficiently in electronic integrated circuits |
US7027598B1 (en) | 2001-09-19 | 2006-04-11 | Cisco Technology, Inc. | Residue number system based pre-computation and dual-pass arithmetic modular operation approach to implement encryption protocols efficiently in electronic integrated circuits |
US6904558B2 (en) | 2002-02-22 | 2005-06-07 | Agilent Technologies, Inc. | Methods for computing the CRC of a message from the incremental CRCs of composite sub-messages |
US7458006B2 (en) | 2002-02-22 | 2008-11-25 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Methods for computing the CRC of a message from the incremental CRCs of composite sub-messages |
WO2003090362A1 (fr) | 2002-04-22 | 2003-10-30 | Fujitsu Limited | Codeur et decodeur de detection d'erreur, et diviseur |
US7512230B2 (en) * | 2002-04-30 | 2009-03-31 | She Alfred C | Method and apparatus of fast modular reduction |
US7346159B2 (en) | 2002-05-01 | 2008-03-18 | Sun Microsystems, Inc. | Generic modular multiplier using partial reduction |
US7187770B1 (en) | 2002-07-16 | 2007-03-06 | Cisco Technology, Inc. | Method and apparatus for accelerating preliminary operations for cryptographic processing |
US7343541B2 (en) | 2003-01-14 | 2008-03-11 | Broadcom Corporation | Data integrity in protocol offloading |
US7243289B1 (en) | 2003-01-25 | 2007-07-10 | Novell, Inc. | Method and system for efficiently computing cyclic redundancy checks |
US7058787B2 (en) * | 2003-05-05 | 2006-06-06 | Stmicroelectronics S.R.L. | Method and circuit for generating memory addresses for a memory buffer |
US7373514B2 (en) | 2003-07-23 | 2008-05-13 | Intel Corporation | High-performance hashing system |
DE602004018187D1 (de) | 2003-11-19 | 2009-01-15 | Honeywell Int Inc | Nachrichtfehlerverifikation durch verwendung von prüfung mit verborgenen daten |
US7543142B2 (en) | 2003-12-19 | 2009-06-02 | Intel Corporation | Method and apparatus for performing an authentication after cipher operation in a network processor |
US20050149744A1 (en) | 2003-12-29 | 2005-07-07 | Intel Corporation | Network processor having cryptographic processing including an authentication buffer |
US7171604B2 (en) | 2003-12-30 | 2007-01-30 | Intel Corporation | Method and apparatus for calculating cyclic redundancy check (CRC) on data using a programmable CRC engine |
US7529924B2 (en) | 2003-12-30 | 2009-05-05 | Intel Corporation | Method and apparatus for aligning ciphered data |
US7543214B2 (en) | 2004-02-13 | 2009-06-02 | Marvell International Ltd. | Method and system for performing CRC |
US20060059219A1 (en) | 2004-09-16 | 2006-03-16 | Koshy Kamal J | Method and apparatus for performing modular exponentiations |
US7590930B2 (en) | 2005-05-24 | 2009-09-15 | Intel Corporation | Instructions for performing modulo-2 multiplication and bit reflection |
US7707483B2 (en) | 2005-05-25 | 2010-04-27 | Intel Corporation | Technique for performing cyclic redundancy code error detection |
US20070083585A1 (en) | 2005-07-25 | 2007-04-12 | Elliptic Semiconductor Inc. | Karatsuba based multiplier and method |
US7958436B2 (en) | 2005-12-23 | 2011-06-07 | Intel Corporation | Performing a cyclic redundancy checksum operation responsive to a user-level instruction |
US20070157030A1 (en) | 2005-12-30 | 2007-07-05 | Feghali Wajdi K | Cryptographic system component |
US8229109B2 (en) | 2006-06-27 | 2012-07-24 | Intel Corporation | Modular reduction using folding |
US7827471B2 (en) | 2006-10-12 | 2010-11-02 | Intel Corporation | Determining message residue using a set of polynomials |
US7925011B2 (en) | 2006-12-14 | 2011-04-12 | Intel Corporation | Method for simultaneous modular exponentiations |
US8689078B2 (en) | 2007-07-13 | 2014-04-01 | Intel Corporation | Determining a message residue |
US7886214B2 (en) | 2007-12-18 | 2011-02-08 | Intel Corporation | Determining a message residue |
US8042025B2 (en) | 2007-12-18 | 2011-10-18 | Intel Corporation | Determining a message residue |
US9052985B2 (en) | 2007-12-21 | 2015-06-09 | Intel Corporation | Method and apparatus for efficient programmable cyclic redundancy check (CRC) |
US8189792B2 (en) | 2007-12-28 | 2012-05-29 | Intel Corporation | Method and apparatus for performing cryptographic operations |
-
2006
- 2006-06-27 US US11/476,432 patent/US8229109B2/en not_active Expired - Fee Related
- 2006-12-30 CN CN2006101728399A patent/CN101097511B/zh not_active Expired - Fee Related
-
2007
- 2007-06-21 JP JP2009530713A patent/JP5116770B2/ja not_active Expired - Fee Related
- 2007-06-21 WO PCT/US2007/071829 patent/WO2008002828A2/en active Application Filing
- 2007-06-21 KR KR1020087031396A patent/KR101062558B1/ko not_active IP Right Cessation
- 2007-06-21 EP EP07812243A patent/EP2033357A2/en not_active Withdrawn
- 2007-06-23 TW TW096122784A patent/TWI350094B/zh not_active IP Right Cessation
-
2012
- 2012-07-28 JP JP2012167841A patent/JP5378579B2/ja not_active Expired - Fee Related
Non-Patent Citations (4)
Title |
---|
JPN6011039441; Chin-bou Liu, Chua-huang Huang, Chin-laung Lei: '"Design and Implementation of Long-Digit Karatsuba's Multiplication Algorithm Using Tensor Product' The Ninth Workshop on Compiler Techniques for High-Performance Computing , 2003, p.1-8 * |
JPN6011039444; Antoon Bosselaers, Rene Govaerts and Joos Vandewalle: 'Comparison of three modular reduction functions' Lecture Notes in Computer Science, Advances in Cryptology-CRYPTO' 93 Volume 773/1994, 1994, p.175-186, Springer * |
JPN6013047033; Paul Barrett: '"IMPLEMENTING THE RIVEST SHAMIR AND ADLEMAN PUBLIC KEY ENCRYPTION ALGORITHM ON A STANDARD DIGITAL S' Lecture Notes in Computer Science, Advances in cryptology - CRYPTO '86 Vol.263, 1986, p.311-323 * |
JPN6013047034; William Hasenplaugh, Gunnar Gaubatz, Vinodh Gopal: '"Fast Modular Reduction"' 18th IEEE Symposium on Computer Arithmetic 2007 (ARITH '07) , 20070625, p.225-229 * |
Also Published As
Publication number | Publication date |
---|---|
TWI350094B (en) | 2011-10-01 |
US20070297601A1 (en) | 2007-12-27 |
CN101097511A (zh) | 2008-01-02 |
CN101097511B (zh) | 2011-07-27 |
JP5116770B2 (ja) | 2013-01-09 |
JP2009540394A (ja) | 2009-11-19 |
TW200822664A (en) | 2008-05-16 |
KR101062558B1 (ko) | 2011-09-06 |
US8229109B2 (en) | 2012-07-24 |
EP2033357A2 (en) | 2009-03-11 |
WO2008002828A2 (en) | 2008-01-03 |
WO2008002828A3 (en) | 2008-02-21 |
JP5378579B2 (ja) | 2013-12-25 |
KR20090017637A (ko) | 2009-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5378579B2 (ja) | フォールディングを用いるモジュール削減 | |
US7930337B2 (en) | Multiplying two numbers | |
JP4875700B2 (ja) | ランダム化されたモジュラー多項式のリダクション方法およびそのためのハードウェア | |
JP3939658B2 (ja) | モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置 | |
US8666062B2 (en) | Method and apparatus for performing finite field calculations | |
EP2350811A1 (en) | Method and apparatus for modulus reduction | |
TWI553548B (zh) | 加密計算方法、裝置以及電腦軟體產品 | |
JP5182364B2 (ja) | サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法 | |
US6546104B1 (en) | Montgomery reduction apparatus | |
JP2011512556A (ja) | 楕円曲線上の多数の点を計算する装置及び方法 | |
JP5147085B2 (ja) | 演算方法及び演算装置 | |
Will et al. | Computing mod without mod | |
KR101548174B1 (ko) | 모듈러스의 음의 역원을 구하는 방법 | |
US10318245B2 (en) | Device and method for determining an inverse of a value related to a modulus | |
CN117134917B (zh) | 一种用于椭圆曲线加密的快速模运算方法和装置 | |
KR101805840B1 (ko) | 암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체 | |
JP2004226516A (ja) | べき乗剰余演算方法及びそのプログラム | |
JP4629972B2 (ja) | ベクトル演算装置及び分割値演算装置及び楕円曲線スカラー倍演算装置及び楕円暗号演算装置及びベクトル演算方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
CN114706557A (zh) | 一种asic芯片及蒙哥马利模乘的实现方法和装置 | |
JP2002196671A (ja) | 暗号プロトコル実行用計算装置 | |
JP2006091086A (ja) | モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド | |
JP2007510171A (ja) | 一定の時間間隔で乱数を生成するための方法および関連デバイス | |
JP2004334126A (ja) | Rsa用鍵生成方法、その装置、そのプログラム及びその記録媒体 | |
JP2004151234A (ja) | べき乗演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20130924 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130925 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |