既約多項式を法として多項式を減らすIntelのアルゴリズムを理解する


7

キャリーレス乗算に関するこのIntelホワイトペーパーを読んでいます。の多項式の乗算について説明し。高レベルでは、これは2つのステップで実行されます:(1)上の多項式の乗算、および(2)既約多項式を法として結果を削減します。多項式の「標準」ビット文字列表現、つまります。GF2GF2バツ+バツ+1=[1011]

この論文では、アルゴリズム3の16ページの剰余多項式の計算アルゴリズムを示しています。しかし、16〜17ページの削減アルゴリズム(アルゴリズム4)を理解できません。基本的に、私たちの結果または部分的な結果が128ビットに適合しない場合、より大きなフィールドにはアルゴリズム4が必要だと思います。の2つの多項式の乗算の例を示し。GF2128

右シフトの「マジック定数」63、62、57と、左シフトの「マジック定数」1、2、7はどこから来るのですか?

たとえば、\ text {GF}(2 ^ {32})のように、より小さなフィールドのアルゴリズムを一般化するにはどうすればよいGF232ですか?次に、対応するシフト値は15、14、9および1、2、7になりますか?

最後のステップ4で、アルゴリズムは「XOR [E1E0][F1F0]、および[G1G0][X_3:D]との相互関係[バツD]」を示します。

なぜこれを行うのですか?私の知る限り、このXOR演算の結果はどこにも保存されず、どこでも使用されません。[H_1:H_0]の計算に何らかの形で使用されてい[H1H0]ますか?

回答:


6

ガロア体は、さまざまな「コンクリート」表現があります。1つの一般的表現はの多項式を使用している(すなわちにおける係数の)程度の一部既約多項式モジュロ、言う。マジック定数は、この特定の既約多項式に由来します。シフトする必要がないため、は表示されません。同様に、マジック定数は、に関する上記の定数の補数です。繰り返しになりますが、レジスタは、シフトする必要はありません。GF2128GF2[バツ]GF2128バツ128+バツ7+バツ2+バツ1+バツ072100057626364646464ビット幅。他の既約多項式を使用した場合、定数は異なっていたでしょう。

ステップ4に関して、から結果排他的論理和。これはによるMODの操作を実装し。アイデアは、この多項式を法として、 ; さらに、ここにXORがあります。さまざまな加数はこれらのさまざまな単項式に対応しています–対応を見つけることができるかどうかを確認してください。[H1H0][E1E0][F1F0][G1G0][バツD]バツ128+バツ7+バツ2+バツ1+バツ0バツ128=バツ7+バツ2+バツ1+0


4

完全を期すために、の2つの多項式との乗算の例を通して、Yuvalの答えをもう少し具体化し。LET および に対すると の乗算は、 BGF216

=[0001|1100|1110]=バツ8+バツ7+バツ6+バツ+バツ2+バツ
B=[0100|0101|0111]=バツ10+バツ6+バツ4+バツ2+バツ+1。
BGF2
C=[0000|0000|0000|0111|0101|0010|0000|1010]

次に、に対して多項式を計算しここで、にの上位ビットを乗算し、この計算の上位32ビットを後で処理するために保持します。この目的のために、アルゴリズム4(ステップ1-2)を使用します。私たちは表すとによって、各 8ビット長です。次に、を、最後に11で右シフトします。つまり、7つの「一時変数」があり、それらをとXORします。これにより、得られます。GF216

q+=バツ32+バツ21+バツ19+バツ18+バツ16+バツ10+バツ6+バツ4+1。
q+CC[バツバツ2バツ1バツ0]バツバツバツ21112

次のステップの積の下部については、16ページで定義されているからの左シフトが得られることに注意してください。g

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.