Aes

將 AES-256 密鑰一分為二?

  • July 6, 2021

我知道這裡已經有幾個類似的問題,但我的有點不同,因為我想將 AES 256 位拆分為兩個 128 位密鑰,然後使用不同的 128 位 AES 密鑰來加密兩個 128 位密鑰以傳輸兩個處理器之間的關鍵。這是安全的嗎?由於我的系統設計,我目前受到限制。以下是我需要的:

  • 我需要將 AES 256 傳輸到另一個處理器。
  • 其中一個處理器在建立更強的公共密鑰方面沒有那麼強大。因此,我需要能夠使用較弱的密鑰來傳輸它

我知道這裡已經有幾個類似的問題,但我的有點不同,因為我想將 AES 256 位拆分為兩個 128 位密鑰,然後使用不同的 128 位 AES 密鑰來加密兩個 128 位密鑰以傳輸兩個處理器之間的關鍵。這是安全的嗎?

它只提供 128 位安全性,因為攻擊者只需要破解 128 位傳輸密鑰。這是安全的,但您不會從使用 256 位密鑰中獲得任何安全性。


如果您使用兩個單獨的 128 位密鑰,它實際上會變得有點棘手。如果攻擊者有某種方法可以獨立驗證他們是否正確解密了 256 位密鑰的每一半——例如,如果密鑰加密算法經過身份驗證——那麼他們可以通過以下方式解密

  1. 通過蠻力找到第一個 128 位密鑰 ( $ 2^{128} $ 腳步);
  2. 通過蠻力找到第二個 128 位密鑰 ( $ 2^{128} $ 腳步);

這是 $ 2^{128} + 2^{128} = 2 \times 2^{128} = 2^{129} $ 步驟,因此您只能獲得 129 位安全性。

但是,如果密鑰加密算法無法驗證正確的解密,並且 256 位密鑰是隨機的,則該攻擊不起作用,因為在第 1 步無法驗證您是否獲得了正確的密鑰上半場。蠻力算法則變為:

  • 對於每個可能的值(出 $ 2^{128}) $ 第一個鍵:

    • 對於每個可能的值(出 $ 2^{128} $ ) 的第二個鍵:

      • 嘗試使用該組合解密每個傳輸的密鑰,然後使用您獲得的 256 位密鑰解密消息。

這是 $ 2^{128} \times 2^{128} = 2^{128 + 128} = 2^{256} $ 步驟,並沒有比僅僅通過蠻力攻擊 256 位密鑰更好。

這些天通常推薦的加密算法稱為“AEADs”(帶有關聯數據的經過身份驗證的加密),它屬於第一類,因此您只能獲得 129 位強度。您必須使用較舊的非 AEAD 算法來傳輸密鑰的一半。

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