Aes

AES 256 中的密鑰發現保護(隨機添加?)

  • March 17, 2022

我有一種情況,我需要發送用 AES-256 加密的消息。然而,消息的內容和長度可能會在之前被截獲(不要問;))並且我被問到的問題是“不是允許發現密鑰的漏洞嗎?”。我的第一種方法是估計破解密鑰所需的蠻力,我最終得到了大約 2^40 到 2^60 年的數字。

這很多,與潛在攻擊者不知道消息攔截內容的情況相比,它看起來並沒有更好。然而,添加一些隨機數的想法出現了,現在我想如果我想添加一些它應該有多大。

比如說,有效載荷是 40 位長。由於 AES 使用 16 字節長的塊,添加 11 字節的隨機唯一隨機數是否有意義,或者整個推測不值得努力?

該消息可能在之前被截獲。這不是一個允許發現密鑰的漏洞嗎?

,正確選擇鍵(參見下面的 1)。AES-256 旨在抵抗此類Known Plaintext Attack。這是一個標准假設,事實上 $ 2^{256} $ 如此巨大,以至於不用擔心可以通過搜尋找到密鑰(從長遠來看,到目前為止,被稱為比特幣挖礦的資源浪費所做的工作相當於不到 $ 2^{100} $ AES 加密)。即使我們假設與密碼學相關的量子電腦曾經成為一件事,我們也是安全的。

在 AES-256 中針對密鑰發現需要的唯一保護是

  1. 隨機均勻地選擇密鑰。密碼不行,key strechting也不能解決。
  2. 不公開;請參閱強制性 XKCD
  3. 防止它從它插入的任何設備中取出。這是困難的部分:您如何確定您的 PC 沒有被某些木馬感染?然後是側通道攻擊故障攻擊

比如說,有效載荷是 40 位長。由於 AES 使用 16 字節長的塊,添加 11 字節的隨機唯一隨機數是否有意義,或者整個推測不值得努力?

在加密消息中插入一些隨機性還有另一個很好的理由:有必要抵抗選擇明文攻擊,特別是防止對手僅通過比較它們的密文來測試兩個明文是否相同。

此外,請注意,需要明文機密性的典型應用程序也需要它的完整性,即經過身份驗證的加密,並且即使使用隨機 IV/nonce,使用常見的僅加密塊密碼操作模式的直接 AES 加密也不會提供。此外,某些應用程序需要防止重放,而直接經過身份驗證的加密不會做到這一點。

選擇加密算法並非易事。對不起,但不應該由不得不問目前問題的人來嘗試。

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