高階加密標準



目前最流行和廣泛採用的對稱加密演算法是高階加密標準 (AES)。它的速度至少比三重DES快六倍。

由於DES的金鑰長度太短,需要對其進行替換。隨著計算能力的提高,它被認為容易受到窮舉金鑰搜尋攻擊。三重DES旨在克服這一缺點,但速度較慢。

AES的特點如下:

  • 對稱金鑰對稱分組密碼
  • 128位資料,128/192/256位金鑰
  • 比三重DES更強大更快
  • 提供完整的規範和設計細節
  • 可在C和Java中實現的軟體

AES的操作

AES是一種迭代密碼,而不是Feistel密碼。它基於“替換-置換網路”。它包括一系列連結操作,其中一些操作涉及用特定輸出替換輸入(替換),而另一些操作則涉及重新排列位(置換)。

有趣的是,AES在其所有計算中使用位元組而不是位。因此,AES將明文塊的128位視為16個位元組。這16個位元組被排列成四列四行,作為矩陣進行處理:

與DES不同,AES中的輪數是可變的,並且取決於金鑰的長度。對於128位金鑰,AES使用10輪;對於192位金鑰,使用12輪;對於256位金鑰,使用14輪。每一輪都使用不同的128位輪金鑰,該金鑰由原始AES金鑰計算得出。

AES結構的示意圖如下所示:

AES Structure

加密過程

這裡,我們只描述AES加密的典型輪次。每一輪包含四個子過程。第一輪過程如下圖所示:

First Round Process

位元組替換 (SubBytes)

透過查詢設計中給定的固定表(S盒)來替換16個輸入位元組。結果是一個四行四列的矩陣。

行移位 (Shiftrows)

矩陣的四行中的每一行都向左移動。任何“掉落”的條目都重新插入到行的右側。移位如下進行:

  • 第一行不移位。

  • 第二行向左移動一個(位元組)位置。

  • 第三行向左移動兩個位置。

  • 第四行向左移動三個位置。

  • 結果是一個新的矩陣,它包含相同的16個位元組,但彼此之間發生了移位。

列混淆 (MixColumns)

現在使用特殊的數學函式變換四個位元組的每一列。此函式以一列的四個位元組作為輸入,並輸出四個全新的位元組,這些位元組替換原始列。結果是另一個新的包含16個新位元組的矩陣。需要注意的是,在最後一輪中不執行此步驟。

輪金鑰加 (Addroundkey)

矩陣的16個位元組現在被視為128位,並與輪金鑰的128位進行異或運算。如果這是最後一輪,則輸出為密文。否則,將生成的128位解釋為16個位元組,然後我們開始另一輪類似的輪次。

解密過程

AES密文的解密過程與加密過程類似,但順序相反。每一輪都包含四個以相反順序進行的子過程:

  • 輪金鑰加
  • 列混淆
  • 行移位
  • 位元組替換

由於每一輪中的子過程都是反向的,因此與Feistel密碼不同,加密和解密演算法需要分別實現,儘管它們非常密切相關。

AES分析

在當今的密碼學中,AES被廣泛採用並在硬體和軟體中都得到支援。到目前為止,尚未發現針對AES的任何實際密碼分析攻擊。此外,AES具有內建的金鑰長度靈活性,這使得它能夠在一定程度上“防範未來”,以應對窮舉金鑰搜尋能力的進步。

但是,與DES一樣,只有在正確實現AES並採用良好的金鑰管理時,才能保證其安全性。

廣告
© . All rights reserved.