JP2012234199A - フォールディングを用いるモジュール削減 - Google Patents

フォールディングを用いるモジュール削減 Download PDF

Info

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
Application number
JP2012167841A
Other languages
English (en)
Other versions
JP5378579B2 (ja
Inventor
Hasenplaugh William
ハセンプラフ,ウイリアム
Gopal Vindoh
ゴパル,ビンドー
Gaubatz Gunnar
ガウバツ,ガンナー
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2012234199A publication Critical patent/JP2012234199A/ja
Application granted granted Critical
Publication of JP5378579B2 publication Critical patent/JP5378579B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04KSECRET COMMUNICATION; JAMMING OF COMMUNICATION
    • H04K1/00Secret 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’=NmodM+Nを決定することに続いてN’modMを決定することを含む。一例では、フォールディング操作を用いた畳み込み技術により、モジュール演算のコストを削減する。
【選択図】図4

Description

本発明は、暗号演算に関し、さらに詳しくは暗号演算においてフォールディングを用いるモジュール削減に関する。
暗号は、望まれないアクセスからデータを保護する。暗号は、典型的にはデータに対して数学的な操作(暗号化)を行ない、元のデータ(平文)を理解できなくする(暗号文)。逆の数学的な操作(解読)は、暗号文から元のデータを復元する。暗号は、データの暗号化および解読を越えた広範囲の様々な応用をカバーする。例えば、暗号は、認証(つまり、通信エージェントの同一性を信頼して決定)、デジタル署名の生成などでしばしば使用される。
現在の暗号技術は、集約的な数学的操作に極度に依存する。例えば、多くのスキームは、べき剰余(modular exponentiation)として知られる一種のモジュール演算を用い、それは大きな数にある数の累乗を行ない、モジュラ(modulus:法数)(つまり、剰余は所与のモジュラで除したときの余り)に関してそれを削減することを含む。数学上、べき剰余は、eが指数でMがモジュラである場合、gmodMとして表現される。
概念的に、乗法およびモジュール削減は直線的な演算である。しかしながら、多くの場合、これらのシステムで使用される数のサイズは極めて大きく、プロセッサの固有の語長を著しく越えてしまう。例えば、暗号プロトコルは、1024から4096あるいはそれより大きいビット長に対するモジュラ演算を要求する一方で、多くのプロセッサは32あるいは64ビットの固有の語長を有するに過ぎない。このような大きな数を操作するには、時間の観点から、および演算資源の観点から非常に高価なものになるであろう。
特開2000−530713号公報
カラツバ乗算を示す。 カラツバ乗算を示す。 カラツバ乗算の実行例を示すフローチャートである。 数値Nを数値N’へフォールディングする例を示し、N≡Nである。 数値Nを数値N’へフォールディングする例を示し、N≡Nである。 NmodMの決定を示す。 数値Nの反復フォールディングを示す。 カラツバ乗算および/またはモジュール削減を実行するアーキテクチャを示す。
上述のように、広範囲の様々な暗号演算は、非常に大きな数および/またはモジュール削減の乗算を含む。計算集中的な演算および暗号システムの高速演算の負担を軽減する様々な技術がここに記述される。これらの技術は、より汎用的な目的、非暗号的な計算設定に適用することもできる。そのような技術の1つは、カラツバ(Karatsuba)乗算として知られている大きな数を乗算するための技術の効率性を改善することを含む。別の技術は、モジュール削減の効率性を改善することを含む。
カラツバ乗算
2つの数の乗算を行なうために広範囲の様々なアプローチが行なわれてきている。教科書的な乗算として知られている共通のアプローチは、オペランドをセグメントに分けて、より小さなセグメント上で乗算操作を行なうことを含む。例として、2つのnビット幅の数AおよびBを、次のような一組のより小さなサイズのサブセグメントとして表現することができる。
A=a1s+a [1]
B=b1s+b [2]
ここで、aおよびb項は、AとBのs最下位ビットを、aおよびb項は、残余の上位ビットを表わす。この表記法では、aとb中の添字xは、数字内のセグメントの順序を表わす(例えば、aは、Aの最下位ビットを、aは次の上位ビット表わすなど)。
従来の教科書的な乗算を用いると、AおよびBの乗算は、4回のより小さな乗算を用いて計算される。
A×B=a2s+(a+b1)2s+a [3]
カラツバ乗算として知られている乗算技術は、セグメント乗算の回数を削減することができる。例えば、上記AおよびBの乗算における[3]中の項、
(a+b1) [4]
の結果は、
[(a+a1)(b+b)]−a1−a [5]
として計算することができる。
1とaが方程式[3]中で別の項を形成するので、方程式[5]中でa1とaの値を使用することは、追加計算を強いることを表わすものではない。方程式[3]中の方程式[4]に方程式[5]を代入すると、A×Bのカラツバ乗算は次のように計算することができる。
A×B=a12s+([(a+a1)(b+b)]−a1−a)2s+a [6]
この代入によって、2回の乗算に対して2回の加算と1回の乗算で済ませられる。大抵の場合、これは計算効率の上で極めて大きな利益をもたらす。
上記の例において、カラツバ法は、2つのセグメントへ分けた数を乗算した(つまり「2つの項のカラツバ乗算」)。しかしながら、カラツバ法は、他の数のセグメントに適用することもできる。例えば、3つの項のカラツバ乗算は、数値AおよびBに対して次のように定義することができる。
A=a2s+a1s+a [7]
B=b2s+b1s+b [8]

A×B=a4s+a12s+a+[(a+a1)(b+b)−a−a]23s+[(a+a)(b+b)−a−a]22s+[(a+a)(b+b)−a−a]2s [9]
ここで、AおよびBは、それぞれ3つのs−ビット・セグメントに分割される。
2項のカラツバ乗算[6]と同様に、3項のカラツバ乗算[9]は、異なる順序のセグメント間の乗算(つまり、a)の代わりに同じ順序のセグメント上の乗算(つまり、a)および同じ数のセグメントの加算(つまり、a+a)を用いた。方程式は5項のカラツバ乗算に対しても定義された。これらのカラツバ方程式は、多くても(t+t)/2回の乗算を要求するという属性を共有し、ここでtは項数である。
カラツバ乗算は、帰納を使用して実行することができる。例えば、次の2項のカラツバ乗算では、
A×B=a12n+((a+a1)(b+b)−a1−a)2+a [6]
より小さいセグメント乗算は、それぞれカラツバ法を使用して順番に実行することができる。例えば、A×Bのカラツバ乗算の実行は、a1,a,(a+a1)(b+b)のカラツバ乗算を含めることができる。これらの乗算は、さらに小さなサブセグメントのカラツバ乗算を含めてもよい。例えば、a1の決定はサブセグメントの複数の項へa1とbをセグメントに分けてもよい。
しかしながら、このアプローチにおける潜在的な問題は、異なるサイズのオペランドが生成されるということである。すなわち、(a+a1)項および(b+b)項は両方とも、加算操作からのキャリー(けた上げ)を生成することがある。(a+a1)と(b+b)の結果に続く乗算が追加の固有ワードにあふれ出すことがある。これは、カラツバ法の実行効率の高さを弱めることになる。
「キャリー」問題に取り組むために、図1−図3は、2つのオペランドの最下位ビッツ(bits)上でカラツバ乗算を行ない、次に最上位ビッツ(bits)に基づいて結果を修正するサンプル実行例を示す。図1は、乗算される2つのオペランドA100,B102をより詳細に示す。この例において、各オペランドは、n+1ビット長であり、ここでnはあるプロセッサの固有ワードサイズsの2倍である。この例において、各オペランドは、2つの項と付加的な高位ビットのセグメントに分けられる。例えば、Aの最下位sビッツはaを形成し、次の上位sビッツはa1を形成する一方、Aの最上位ビットは、aを形成する。
図示されるように、カラツバ乗算は、sサイズの項上で次のように実行される。
2s+2s[(a1+a)(b+b)−a1−a]+a [10]
その後、その結果は、最上位ビットa,bの値に基づいて調整される。例えば、図示されるように、その結果は、
B[b:b] 106[11]
および
A[a:a] 108[12]
だけ増やされる場合がある。
言い換えれば、aが「1」である場合、その結果は、nビットだけシフトしたbl:b0のn−ビットによって増加させられる。同様に、bが「1」である場合、その結果は、nビットだけシフトしたal:a0のn−ビットによって増加させられる。例えば、これらの調整は追加の操作として実行される。
result=result+2B[b:b
result=result+2A[a:a
あるいは加算に続く分岐として、
if(a)then result=result+2B[b:b
if(b)then result=result+2A[a:a
が実行される。
最後に、もしa,b両方が「1」である場合、その結果は2(つまり、a)だけ増加させられる。これは、例えば、ブランチを使用して次のように実行される。
if(a)then result=result+22n
加算および1またはそれ以上のブランチ・ステートメントのこのコンビネーションは、キャリーがより低いレベルの帰納へ下流伝搬するのを防ぐことができる。
図2は、469の値を有するA100を369の値を有するB102と乗算させる上述した手続の操作を示す。図示されるように、最上位a,bビットを除いて、A[2s−1:0]とB[2s−1:0]のカラツバ乗算は、24,069の値を生成する。この値は、最初にaのために107,525に調整され、それからbのために78,597に調整される。最後に、a,b両方が「1」であるので、22n=16に対する最上位ビットが最終的な答えである173,061を生成するために加えられる。再び、aの値は、カラツバ技術の再帰的な適用によって決定することができる。a,bビットを切り取ることによって、その再帰は、便利な同じサイズのオペランド上で操作する。
図3は、再帰的なスキームでのこのカラツバ技術の実行を示す。上述するように、オペランドA,Bのカラツバ乗算は、A[n:0]とB[n:0]の乗算によって行なわれ(114)、AとBの最上位ビットa,bに対する訂正116が続く。その演算結果値は、再帰スタックに返される(118)。
オペランドの長さがプロセッサ固有のワードサイズよりはるかに長い場合、カラツバ乗算は特に望ましい。例えば、プロセッサは、より長いオペランドと比較して単にsのワードサイズを有している。nがsに接近する場合、カラツバの効率は低下し、教科書的な乗算がより魅力的になる。このように、図3に示されるように、再帰112の現在の深さに依存して、教科書的乗算120,122あるいはカラツバ114,116,118のいずれかの手順を使用することになるであろう。実際上、教科書的乗算を使用して、最終2レベル(つまりL=2)を再帰的に行なうことにより、最良の総合特性を提供するであろう。
図1−図3は、実行例を示すが、一方多くの変形が可能である。例えば、図1−図3において、各カラツバ項は、s−ビット長として示されている。しかしながら、その項は、同じビット長である必要がなく、単一の固有ワードを占有する必要もない。同様に、a,bが単一のビットとして示されているが、他の実行例では、a,bが複数のビットを含んでいてもよい。
上述するように、異なる項数(例えば、2,3,5)に対して異なるカラツバ方程式が定義される。標準カラツバ分解(canonical Karatsuba decomposition)は、次の6つの長さの数値である。
n=2
n=3・2
n=3・2
n=3・2
n=3・2
n=5・2
ここで、nは数値の長さであり、kは整数である。
カラツバ分解を最適化するために、数値にゼロを付加し、より大きな標準形に適合するようにしてもよい。どの標準カラツバ分解を作業wに使用すべきかを識別するために、各々に対し計算され、最小のものが選択される。
Figure 2012234199
w値は、異なるn値に対して計算されてもよい。その結果は、例えば、所与のnに対する最小のw値に基づいて、所与の数値を付与する量を示すルックアップ表を形成するために使用してもよい。
フォールディングを用いるモジュール削減
乗算に加えて、多くの暗号スキームにはモジュール削減(例えば、NmodMの計算)を含む。モジュール削減操作の費用を削減するために、いくつかのシステムは、バレット(Barrett)のモジュール削減として知られている技術を使用する。バレットは、本質的に、商の推定を計算する。
q=floor(floor(N/2)μ/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をより高位のNおよびより低位のNの部分へ線引きをする。例えば、フォールディング・ポイントfは、モジュラの長さおよびNの長さの中央ポイントになるように選ばれてもよい。例えば、Nが2m(モジュラ幅の2倍)の幅を有すると仮定すると、フォールディング・ポイントは、21.5mによって識別されるビット位置にあってもよい。このようなフォールディング・ポイントは、N’の結果幅を最小限にすることができる。すなわち、NまたはNを拡張あるいは縮小するいずれかの方向へフォールディング・ポイントを移動させることにより、実際にN’のサイズが増加することになる。
フォールディング・ポイントに基づいて、N’は次のように決定することができる。
N’=NmodM+N 212[15]
その後、より小さなN’は、例えば古典的バレット技術を使用して、モジュール削減を行なうために使用される。
図示されるように、N’の決定212は、2modM208(M’と称される)の項を含む。2modMの値は、特定のN値に配慮をせずに事前に計算することができる。Mとfの様々な値に対するこの値を事前に計算しておくことは、高価な乗算を時間的に重要でない期間へ移すことにより、N’のリアルタイム計算を促進させる。Mとfの値に対して事前に計算された値は、高速アクセスのためにメモリ中のテーブルに格納することができる。N(2modM)の乗算は、上述するように、例えば、カラツバ乗算を使用して達成される。
図示するように、図5は、Nが252(1111,1100b)の値を有する8ビット長の数で、Mが13(1101b)の値を有する4ビット長の数である場合のフォールディング例を示す。図示されるように、フォールディング・ポイントはf=21.5m=2として選択される。N’の計算は、96の値を生成する。図示されるように、Nとそのフォールドされた対N’はモジュラ13に対するのと同じモジュラの残余5を生成する。N’のモジュール削減は、バレットのような様々なモジュール削減・アプローチのうちのどれでも使用して行なうことができる。
図6は、上述の技術を使用して、NmodMの完全な決定例を示す。この例において、N202は幅n=4sであり、また、M204は幅m=2sである。図示のように、フォールディング・ポイントfは23sである。図示されるように、M’=23smodM222に対する事前の計算は、(M’)(N)224を決定するにために用いられる。図6は、Nをfloor(N/23s)の値として表現する一方で、Nの値は、N=N[4s−1:3s]を設定することによってより速く獲得することができる。(M’)(N)の値224は、N’の計算を完了するためにN226に加えられる。再び、図6は、Nmod23sとしてNを表現しているが、Nの値は、N=N[3s−1:0]を設定することによってより速く獲得することができる。
N’の決定の後に、N’modMは、古典的バレット・リダクションを使用して計算することができる。この場合、バレット・リダクションは、230,234で次式のように計算される。
R=N’−floor(floor(N’/22s)(μ/2)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’−(M2)の減算操作は、必ずしも必要ではないが、N’を「整える(trim)」ために使用されてもよい。図示されるように、付加的なフォールディング操作は、N’をN”206に変形し、ここでN”modM=N’modMである。この第2のフォールディングは、再び計算上の効率を向上させる。
異なるフォールディングの反復中に使用されるフォールディング・ポイントは、第1の反復に対する21.5mから第2に対する21.25mへ移動する。より一般的には、所与の反復に対するフォールディング・ポイントは、2(1+2∧−i)mとして決定され、ここでiは反復番号である。
図7は、2つのフォールディングを示すが、付加的なフォールディングも可能である。しかしながら、付加的なフォールディングは、リターンを減らし、および/または、実際に乗算操作の回数を増加させるかもしれない。
べき剰余の実行例
上述された技術は、様々な暗号演算を行なうために使用することができる。例えば、上述されたカラツバ乗算およびフォールディング技術は、べき剰余を実行するために組み合わせることができる。
べき剰余はgmodMを決定することを含む。べき剰余の実行は、様々な暗号アルゴリズムの中心にある。例えば、RSAでは、公開鍵は、公開指数、e−公開、およびモジュラMによって形成される。秘密鍵は、秘密指数、e−秘密、およびモジュラMによって形成される。メッセージ(例えば、パケットまたはパケットのペイロード)を暗号化するために、次の操作が行なわれる。
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である。


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を決定するために、この手続きは以下のように進む。


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 32 =9
AmodM 4
特定の実行にもかかわらず、2乗および「g」乗算の双方に、上述されたカラツバ乗算技術を使用することにより、べき剰余を著しく促進させることができる。加えて、フォールディングを使用することで、リダクション操作は、処理資源の使用を著しく軽減させる。
付加的な計算効率は、繰り返し用いられる値を格納することにより獲得することができる。例えば、例として、gの値が2つの異なる乗算に必要とされているとする。2048ビット指数という現実の世界での例では、gを使用する数の乗算ははるかに大きくなる。gを含むカラツバ乗算の効率を改善するために、g=(gH(i)+gL(i))という異なる値が反復使用のためにテーブルに格納され、ここで、iは、カラツバ再帰の深さを表わす。このキャッシングは、同じ加算を重複して実行する極めて大きいサイクル回数を削減することができる。モジュール削減が同じモジュラを使用して複数回発生する場合、フォールディングで使用されるM’およびμのような他で頻繁に用いられる値をキャッシングすることは、さらに特性を向上させるであろう。
1kサイズの数を2kサイズの数で乗算するような不均等なサイズの数の乗算を行なう場合、付加的な最適化が使用されてもよい。このような乗算が、バレットのqM値を決定する際に、またNmodMを決定する際に生じることがある。カラツバを利用するために、1k*2kの乗算をq*mおよびq*mのような2つの1k*1kの操作へ分割することができる。qが両方の操作中で使用されるので、(q+q)の値を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 乗算器

Claims (2)

  1. データ(D)をメモリ回路からアクセスする段階と、
    N=Dを、回路によって、計算する段階であって、kは、暗号キーの整数の一部である、段階と、
    モジュラMに関して前記計算されたNの値のモジュラ剰余を、前記回路によって、決定する段階であって、
    少なくとも1つの定数からなるセットを、前記回路によって、アクセスする段階であって、前記少なくとも1つの定数からなるセット中の各定数は、2fimodMの値に対応し、fiは、データの高位部と低位部との境界を画定するビット位置を示す整数である、段階、
    i-1の低位部に前記少なくとも1つからなる定数のセット中の定数の1つの定数が乗じられたNi-1の高位部を加えることによって、複数のiの値に対するNを、前記回路によって、決定する段階であって、NmodM=Ni-1modMが成り立ち、かつNは、Ni-1より小さい幅を有し、iは、連続した決定段階における前記数値Nの決定段階を示す整数である、段階、
    前記モジュラMに関して最終決定されたNのモジュラ剰余を、前記回路によって、決定する段階、および
    前記モジュラMに関して前記最終決定されたNの決定モジュラ剰余を、前記回路によって、メモリ回路に格納する段階、からなる決定する段階と、
    前記決定されたNmodMに基づいて、
    (1)パケット内に含まれるデータの暗号化、および
    (2)パケット内に含まれるデータの解読化、
    の内の少なくとも1つを、前記回路によって、実行する段階と、
    からなることを特徴とする方法。
  2. 前記モジュラMに関して前記最終決定されたNのモジュラ剰余の決定は、
    (1)Nに関連するモジュラ剰余のルックアップ表、および
    (2)前記モジュラMに関して前記最終決定されたNのバレット・モジュール削減、
    の内の少なくとも1つを含むことを特徴とする請求項1記載の方法。
JP2012167841A 2006-06-27 2012-07-28 フォールディングを用いるモジュール削減 Expired - Fee Related JP5378579B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
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