Encryption

什麼使開源加密算法安全?

  • June 23, 2016

以流行的 AES 算法為例,我們結合了替換、移位行、混合列,並添加了加密明文測試所涉及的關鍵步驟。

攻擊者應該知道 s-box、移位行和混合列中的所有數學運算,對嗎?我知道它們可能很難計算,但它們大部分不是靜態操作嗎?因為他們可以從字面上看到程式碼中計算的實現,以了解所有位是如何改變的。因此,唯一難以破解的步驟是添加密鑰階段,在該階段我們將密鑰與字節塊進行異或。

如果沒有我所理解的正確密鑰,XOR 狀態是不可逆的,那麼密鑰上發生的所有其他操作的意義何在?既然知道替換、移位行和混合列步驟如何工作的實現細節,那麼在加密方案中使用它們有什麼意義呢?

如果沒有我所理解的正確密鑰,XOR 狀態是不可逆的,那麼密鑰上發生的所有其他操作的意義何在?

假設我們只有密鑰和 XOR 操作。好吧,實際上,可以從中建構一種安全密碼,稱為一次性密碼。一次性墊提供完美的保密性,但存在致命的實際缺陷:

  1. 密鑰必須與消息一樣長。
  2. 您決不能使用相同的密鑰來加密兩個不同的消息,否則它會變得很容易被破解。

所以我們可以從這個角度來看你的問題:現代密碼的額外複雜性是我們為消除這些實際缺點而付出的代價。這使我們能夠一次又一次地使用單個 128 位密鑰來安全地加密千兆字節的數據。

我要強調的另一件事是:您假設僅僅因為您知道算法所做的操作,**撤消這些操作很容易。但現代密碼學的核心假設之一是這是錯誤的:有些操作很容易做,但**撤銷成本很高。最好的例子是乘法很容易(在多項式時間內執行),但因式分解成本很高(不在多項式時間內執行)。有可能證明,如果存在這樣的單向函式,那麼可以建構並完全公開密碼算法,其安全性完全取決於密鑰的保密性。

所以如果AES的設計者選對了他們的操作,那麼AES的加解密就是:

  1. 對於知道密鑰的各方來說很容易;
  2. 對於不這樣做的派對來說代價高昂

這對於像 AES 這樣的實際算法是否正確,以及為什麼這是困難的部分,並且不能以這樣的簡短問答格式來回答。

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