Aes

使用 (key||plaintext) 的散列函式而不是 IV 的隨機值

  • February 27, 2017

對於在 CBC 模式下實現 AES 的協議, $ IV $ 每次加密都需要(初始化向量)。而不是挑選 $ IV $ 隨機,我們是否建議設置 $ IV $ 成為 $ \text{SHA1}(k||m) $ 在哪裡 $ k $ 是關鍵,並且 $ m $ 是個 $ 1^{st} $ 128 位的明文,例如這個方案在語義上是否安全?歡迎任何想法!謝謝!

不,它在語義上不安全。

證明:選擇兩個初始128位相同的明文;並將它們送出給 Oracle 進行加密。生成的密文也將具有相同的初始 128 位,因此可以將加密器與生成隨機輸出的東西區分開來。

如果你使用整個消息和一個抗衝突的散列函式,你可以獲得某種形式的安全性,但不是 IND-CPA(相當於語義安全性)。IND-CPA 遊戲主要與公鑰加密一起使用,通過對稱加密,攻擊者可以訪問加密預言機。然後任何類型的確定性加密都會自動失敗,因為攻擊者可以只要求預言機對兩個密文進行加密,而挑戰就是其中之一。

如果您通過不允許攻擊者查詢所選明文來使攻擊者更弱,這將起作用。‘但我不認為這實際上是一個常用的安全定義。

如果您只有原像抗性而沒有抗碰撞性,則可能存在其他問題 - 但這取決於如何找到碰撞,這使得正式分析變得困難。

但是關於抗碰撞性的觀點是反對 SHA-1 的有力案例,長期以來一直被認為是破壞抗碰撞性的。(現在在 2017 年 2 月,發現了一次碰撞)。一般來說,新協議永遠不應該建立在過時(幾乎過時)的加密功能上。

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