Aes

AES 密鑰計劃是否弱?

  • January 28, 2021

在閱讀題為AES Variants with Up To 10 Rounds 的實際複雜性的密鑰恢復攻擊的論文後,我想知道為什麼 AES 的密鑰調度是可逆的。

在論文中,作者使用相關密鑰攻擊來恢復輪密鑰,一點一點地進行一些猜測,但他們最終能夠通過簡單地將輪密鑰通過逆密鑰調度來恢復原始密鑰。

如果輪密鑰是從密鑰的某個單向函式派生的,那麼這種攻擊是不可能的。為什麼要使密鑰調度可逆?這不會降低密碼的強度嗎?

現在,AES 密鑰計劃可能很弱(它確實似乎是 AES 中最薄弱的部分);但是,我不認為可逆性真的是問題所在。

如果有人有辦法獲得關於 N 輪密碼的最後一輪子密鑰的一些資訊,那麼,如果密鑰調度是可逆的,那麼他就有一些關於原始密鑰的資訊;如果他確定 $ k $ 該子鍵的位,相當於知道 $ k $ 位的關鍵。使用它來完成攻擊是攻擊密鑰的最簡單方法,這就是對 AES(和 AES 變體)的攻擊所做的。

另一方面,如果密鑰調度是不可逆的,則還有另一種攻擊途徑;獲得最後一輪子密鑰的資訊也為我們提供了 N-1 輪後密碼狀態的資訊。使用這些資訊,我們大概可以使用相同的攻擊方式來獲取有關 N-1 輪子密鑰的資訊。而且,由於我們要求區分器少經過一輪,它可能會更強大,因此可以預期比恢復 N 輪子密鑰花費更少的努力。然後,在恢復第 N-1 輪子密鑰後,我們可以開始攻擊第 N-2 輪子密鑰,以此類推。

使用這種揮手的方法,攻擊者可以獲得整個子密鑰集,其努力僅比獲得單個輪子密鑰大一個常數因子。而且,即使所有子密鑰的知識無法為我們提供真實密鑰的資訊,也足以使用密鑰進行加密/解密(這通常是我們首先對密鑰感興趣的原因)。

同樣,針對 AES 和 AES 變體的已發布攻擊沒有採用這種方法,因為它比反轉密鑰計劃需要更多的工作(並且更難指定);然而,它確實表明,使密鑰調度不可逆本身不會使事情變得更加安全。如果它確實使事情更安全,那是因為該更改會阻止某人找到最後一輪子密鑰,而不是阻止他將這些知識轉化為原始密鑰的知識。

此外,使密鑰調度可逆在實踐中確實具有以下好處:

  • 很容易證明每個子鍵都是無偏的(即每個可能的 $ 2^{128} $ 值是等機率的),假設原始密鑰是無偏的。如果密鑰調度是不可逆的,那麼這可能不成立(事實上,對於 128 位密鑰,可能會有特定輪密鑰無法保持的值)。如果具有不統一的子密鑰會導致弱點,這一點並不明顯,但是對於可逆的密鑰調度,我們不必擔心。
  • 我看到一些 AES 硬體採用的一種實現方法是,如果要使用 AES 密鑰進行解密,我們給硬體最後一輪子密鑰(對於 192 位和 256 位 AES,可能是倒數第二個)。然後,當數據被解密時,硬體將反向執行密鑰調度,根據需要導出前一輪密鑰。這允許硬體在開始解密之前不執行完整的 AES 密鑰計劃,也無需預先程式完整的 AES 子輪密鑰。對於不可逆的密鑰調度,這種方法可能會更棘手(當然,取決於它如何工作的細節)。

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