Aes

IV 用於不同的 AES 加密模式

  • February 18, 2015

我想知道我的理解是否正確!我一直在閱讀 aes 加密和模式(特別是 CTR 和 CBC),我花了一些時間來理解 IV 的概念。如果 IV 是隨機生成的,則:

在 CBC 模式下,IV 通常在加密之後添加或附加,因此使用接收到的第一個數據塊(即 IV)對密文的第一個塊進行解密,從那裡在前一個密碼塊上是下一個塊的 IV。

我不確定 CTR 模式下的做法,但有一個計數器(或隨機數)增加每個塊的 IV 以進行解密和加密。

如果 IV 是生成值,那麼雙方需要就其生成方式達成一致。並且不建議使用恆定 IV 來對任何模式使用固定 IV。

我還想知道,在不同的 AES 模式下,兩方之間的 IV 通信還使用了哪些其他標準做法?

對於 CBC 模式,可以以任何方式生成 IV,攻擊者無法從一條消息到另一條消息。在實踐中,這意味著某種隨機數生成器。由於塊大小為 128 位,因此在密鑰到期之前 IV 重複的機率可以忽略不計。CBC IV 對查看您的密文的攻擊者是可見的;正如你所說,它附有一些方法。

關於生成它的方法,兩端不需要有任何協議。我知道的大多數實現都在密文前面加上 IV。

對於 CTR 模式,情況就不同了。IV 是 Nonce 和 Counter 的組合。需要雙方嚴格約定它們如何組合和遞增,否則對方將無法解密。此外,如果雙方使用相同的密鑰,他們需要確保兩者之間沒有 Nonce 重用。這可以通過強制一方始終將 Nonce 的特定位設置為 0 來實現,而另一方將該位設置為 1,例如 MSB。更好的選擇是擁有 2 個不同的鍵。由於 CTR 模式將分組密碼轉換為流密碼,因此 CTR 模式下的 IV 重用是災難性的。不要求 Nonce 是不可預測的,並且可以是一個簡單的消息計數器。

nonce 是 CTR IV 中唯一與消息一起傳輸的部分,並且再次對攻擊者可見。我知道的大多數實現都使用 Nonce 作為密文前綴,並且消息的塊計數器從 0 開始,但 AES-GCM 的情況除外。

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