Aes

如何執行 Rijndael 有限域的模歸約

  • October 17, 2016

我試圖了解如何計算 Rijndael 有限域的模減少。

頁面上的範例說明了這一點{53} • {CA} = {01},因為(11111101111110 mod 100011011) = {3F7E mod 11B} = {01} = 1.

我能夠達到我所擁有的地步3F7E mod 11B,但似乎無法弄清楚減少是如何工作的。

     11111101111110 (mod) 100011011
    ^100011011     
      1110000011110
     ^100011011    
       110110101110
      ^100011011   
        10101110110
       ^100011011  
         0100011010 
         ^100011011 <-- here, right shifted two places?
           00000001

從這個例子中,為什麼它在一個點右移兩個位置?

我還找到了一個0x1b*0xaa等於的例子0x8c。試圖自己解決這個問題,我明白了:0xE0E mod 0x11B

111000001110
^100011011
 11011010110
^100011011
  1010111010
 ^100011011
   010001100
  ^100011011
    10010111

這使它0x97

首先我們來看看分工 $ \mathtt{0x3f7e} $ 經過 $ \mathtt{0x11b} $

1      11111101111110 |    (mod) 100011011
2     ^100011011      +-----------------------
3     +-------------+ |          1?????
4       1110000011110 |                >> 1
5      ^100011011     |
6      +------------+ |          11????
7        110110101110 |                >> 1
8       ^100011011    |
9       +-----------+ |          111???
10        10101110110 |                >> 1
11       ^100011011   |
12       +----------+ |          1111??
13         0100011010 |                >> 1
14        ^000000000  |
15        +---------+ |          11110?
16          100011010 |                >> 1
17         ^100011011 |
18         +--------+ |          111101
19           00000001 |

因此,歐幾里得除法的結果是:

$$ \mathtt{0x3f7e} = \mathtt{0x11b} \times \mathtt{0x3d} + \mathtt{0x1} $$ 或者 : $$ \mathtt{11111101111110} = \mathtt{100011011} \times \mathtt{111101} + \mathtt{1} $$ 因此: $$ \mathtt{11111101111110} \equiv 1 \pmod{\mathtt{100011011}} $$ 由於我們不關心除法的結果,只關心餘數,我們直接忘記了它。

正如您所注意到的,每行減法中都有一個右移 ( >> 1)。但也要注意,當商的一部分為 0 時,在右移之後什麼都不做(見行 $ \texttt{12} $ 至 $ \texttt{15} $ ) (因為我們將除數乘以 0,所以減法後的結果顯然是相同的……乘以 0)。

因此我們可以分解線 $ \texttt{14} $ 至 $ \texttt{16} $ 通過雙右移 ( >> 2),我們得到了維基百科的劃分:

1      11111101111110 |    (mod) 100011011
2     ^100011011      +-----------------------
3     +-------------+ |          1?????
4       1110000011110 |                >> 1
5      ^100011011     |
6      +------------+ |          11????
7        110110101110 |                >> 1
8       ^100011011    |
9       +-----------+ |          111???
10        10101110110 |                >> 1
11       ^100011011   |
12       +----------+ |          1111??
13         0100011010 |                >> 2
17         ^100011011 |
18         +--------+ |          111101
19           00000001 |

TL;DR:雙右移對應於 $ \mathtt{0} $ es 在商中。

關於: $ \mathtt{0x1b} \times \mathtt{0xaa} \equiv \mathtt{0x8c} \pmod{\mathtt{0x11b}} $

在此處輸入圖像描述

回顧你的部門:

1     111000001110
2    ^100011011
3      11011010110
4     ^100011011
5       1010111010
6      ^100011011
7        010001100
8       ^100011011  <-- THIS IS VERY WRONG
9         10010111  <--

線條 $ \texttt{8} $ 和 $ \texttt{9} $ 根本不允許:

$$ \mathtt{10001100} < \mathtt{10001101} $$ 因此 $ \mathtt{10001100} $ 是結果和一個奇怪的巧合 $ \mathtt{10001100} = \mathtt{0x8c} $ .

引用自:https://crypto.stackexchange.com/questions/40742