Aes
在 CBC 模式下使用 AES 密鑰作為 IV 的問題
我是一名滲透測試人員,目前正在分析一個使用一些奇怪加密方案的 Web 應用程序。
關鍵是:他們使用 AES-128 加密,生成(非加密安全)密鑰並將其用作加密密鑰和初始化向量。
我不是加密專家,但我知道這很糟糕(除了密鑰的不安全生成)。問題是,我不知道具體的後果是什麼?
有人可以啟發我,以便我可以向開發人員解釋這很糟糕嗎?謝謝
CBC模式加密如下:
$$ C_0 = E_K(IV\oplus P_0);\ C_i = E_K(C_{i-1}\oplus P_i), $$ 在哪裡 $ P_i $ 是明文塊和 $ C_i $ 是密文塊。傳統上,IV 必須是隨機的,並且與密文一起發布以啟用解密。如果它也在您的案例中發布,那麼這會揭示密鑰並且非常不安全。 如果 $ IV=K $ 沒有附加到密文,那麼你會得到一個確定性(與機率相反)的加密方案。它具有許多不安全的屬性,例如
- 如果相同的明文被多次加密,密文不會改變。
- 如果兩個明文具有相同的前綴,則密文將具有相同的屬性。
也許還有其他的,但這些足以避免使用這種方案來保護任何合理數量的數據的機密性,除了可能非常短(16 字節或更少)的明文。