Encryption

怎麼ñbñbNb(列數)以 AES(Rijndael)計算?

  • November 11, 2022

AES的NIST 出版物定義 $ Nb $ 作為:

組成狀態的列數(32 位字)。對於本標準,Nb = 4。

第 5.2 節:密鑰擴展中, $ Nb $ 已用於計算要生成的輪密鑰數。

第 6.3 節規定:

該標準明確定義了密鑰長度 (Nk)、塊大小 (Nb) 和輪數 (Nr) 的允許值——參見圖 4。但是,該標準的未來重申可能包括對允許值的更改或添加對於那些參數。因此,實施者可以選擇在設計 AES 實施時考慮到未來的靈活性。

很明顯, $ Nk $ 是密鑰的長度,以 4 字節字為單位,因此可以計算為: $$ Nk = {(Key Size) \over (Bits Per Byte) * (Bytes Per Word)} $$ 在哪裡,

$$ Bits Per Byte = 8 $$

$$ Bytes Per Word = 4 $$

因此,對於 128、192 和 256 位密鑰,它將分別為 4、6 和 8。和 $ Nr $ (輪數)是: $$ Nr = (Nk) + 6 $$

同樣,是否有明確的計算公式 $ Nb $ 或者它是一個常數值( $ 4 $ ) 對於像 AES-512 這樣的可能更高長度的密鑰也保持不變?

$ N_b $ 是固定的,正如FIPS AES 標準的許多部分所述。

在此處輸入圖像描述

正如您所指出的,唯一的規定是實施者可能會牢記未來的變化。

AES 狀態(對於所有變體)為 128 位或 16 字節,初始化為明文或密文(取決於加密或解密)。出於視覺化的目的,這 16 個字節排列在一個 $ 4\times4 $ 網格(列專業)。

輪函式的成分作用於這個狀態。特別是 shiftRows 和 mixColumns 作用於 $ 4\times4 $ 數組以名稱建議的方式,而 subBytes 和 addRoundKey 作用於數組的各個字節,後者以鍵相關的方式。(對於解密中的反函式也是如此。)

在任何情況下,對於 AES 的所有變體,列數都是 4。AES 版本之間的變化是密鑰大小、密鑰時間表和輪數。

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