密碼學 - AES金鑰擴充套件演算法



為了用於AES加密,可以使用AES(高階加密標準)金鑰擴充套件技術將單個初始金鑰擴充套件為一系列輪金鑰。這些輪金鑰在AES加密和解密的每一輪中都是必需的。

AES金鑰擴充套件方法接收一個四字(16位元組)金鑰並返回一個包含44個字(176位元組)的線性陣列。這足以提供初始的輪金鑰加步驟以及密碼的十輪中的每一輪的四字輪金鑰。

AES Key Expansion

演算法如何工作?

簡單來說,AES金鑰擴充套件演算法的工作原理如下:

  • 初始金鑰 - 演算法使用初始金鑰。此金鑰的長度可以從128位到256位不等,具體取決於所需的安全性級別。
  • 輪常數 - 該方法使用一組輪常數,這些常數是在金鑰擴充套件過程中使用的預定義值。
  • 字大小 - 金鑰將單詞劃分為單獨的塊。一個字通常包含32位。例如,從128位金鑰建立四個32位字。
  • 金鑰排程 - “金鑰排程”是指使用金鑰擴充套件過程生成的一組輪金鑰。此排程表中包含初始輪金鑰以及從中派生的其他輪金鑰。
  • 擴充套件輪 - 演算法在每一輪擴充套件中執行多項任務,例如:
    • RotWord - 此函式旋轉單詞中的位元組。
    • SubWord - 使用預定的S盒應用替換操作。
    • Rcon - 使用輪常數對單詞進行異或運算。
  • 輪金鑰 - 在所有擴充套件輪之後仍然存在的輪金鑰的順序定義了金鑰排程。每個輪金鑰都用於AES加密或解密的相應輪中。

總的來說,金鑰擴充套件方法透過確保AES加密和解密的每一輪都有一個唯一的輪金鑰來提高安全性並防止密碼攻擊。

數學表示

讓我們表示:

  • K是第一個金鑰,其長度為N位。
  • 金鑰的字數(Nk)是其總字數(例如,128位金鑰為4,192位金鑰為6,256位金鑰為8)。
  • Nr,AES輪識別符號,對於AES-128為10,對於AES-192為12,對於AES-256為14。

金鑰擴充套件過程

  • 步驟1:首先建立輪金鑰。在單詞陣列W中建立第一個單詞K。迭代生成(Nr + 1)個輪金鑰:
for i = N_k to (4 * (N_r + 1) - 1):
   if i mod N_k == 0:
      temp = RotWord(W[i-1]) ^ SubWord(W[i-1]) ^ Rcon(i / N_k)
   else:
      temp = W[i-1] ^ W[i-N_k]
   W[i] = temp
  • 步驟2:完成輪金鑰:迴圈結束後,陣列W包含所有輪金鑰。

符號

  • RotWord(w) - 以迴圈方式旋轉單詞w的位元組。
  • SubWord(w) - 使用AES S盒替換單詞w中的每個位元組。
  • Rcon(i) - 生成當前第i輪的輪常數,或Rcon。

計算輪常數Rcon

可以透過計算Rcon(i)=(RC[i],0,0,0)找到第i輪的輪常數,其中RC[i]是輪常數陣列的第i個元素。

此表示提供了關於如何將原始金鑰轉換為用於AES加密和解密的一組輪金鑰的數學描述。

AES金鑰擴充套件示例

現在我們將討論AES(高階加密標準)金鑰擴充套件演算法的一個示例。對於此示例,我們將使用AES-128,因此我們的初始金鑰將為128位(16位元組)。

第一個金鑰可以被認為是一組位元組:

2b 7e 15 16 28 ae d2 a6 ab f7 97 66 76 15 13 1

此金鑰長128位。

讓我們看看金鑰擴充套件過程的每個步驟:

初始金鑰

2b 7e 15 16
28 ae d2 a6
ab f7 97 66
76 15 13 1

擴充套件輪

我們首先將第一個金鑰新增到我們的輪金鑰列表中。然後,我們迭代生成更多輪金鑰,直到達到總共11個。

第1輪

在RotWord、SubWord和XOR運算中,我們使用輪常數:

RotWord: 7e 15 16 2b
SubWord: 63 cb e7 8c
Rcon: 01 00 00 00
Round 1 Key: 63 cb e7 8c 09 cf 4f 3c 3b a9 82 fb 11 13 d8 2c

第2輪

前一輪金鑰中的單詞向後異或四個位置:

Round 2 Key: a0 fa fe 17 88 54 2c b1 23 a3 39 39 2a 6c 76 05

後續輪

以這種方式生成輪金鑰,直到生成總共11個金鑰。

最終輪金鑰

Round 0 (Initial Key): 2b 7e 15 16 28 ae d2 a6 ab f7 97 66 76 15 13 1
Round 1: 63 cb e7 8c 09 cf 4f 3c 3b a9 82 fb 11 13 d8 2c
Round 2: a0 fa fe 17 88 54 2c b1 23 a3 39 39 2a 6c 76 05
...
Round 10: 3d 47 0e 52 77 37 2e 10 1f 7e 0e 20 6a 51 7f a7

在此示例中,使用AES金鑰擴充套件技術將原始金鑰擴充套件為多個輪金鑰。每個輪金鑰都是使用輪常數以及XOR、RotWord和SubWord等運算從前一個輪金鑰建立的。然後,這些輪金鑰用於AES加密的每一輪中,以提高安全性並防止密碼攻擊。

總結

AES金鑰擴充套件方法建立初始金鑰和一組輪金鑰,這些金鑰是AES加密和解密所必需的。它使用輪常數在諸如RotWord、SubWord和XOR之類的運算中。安全性得到了提高,因為每個輪金鑰都確保了每輪加密都有一個唯一的金鑰。該過程增強了安全性並透過AES加密防止密碼攻擊。

廣告

© . All rights reserved.