Encryption

哪些分組密碼操作模式允許可預測的 IV?

  • August 16, 2012

最近我發現在 CBC 和 PCBC 模式下,IV 可能以明文形式傳遞,但絕不能是可預測的。然而,對於我的應用程序的這一部分,我寧願讓 IV 是可預測的和唯一的(即從“接收者”和對手已知的其他數據生成,而不是與密文一起儲存/傳輸)而不是隨機的。

作為密碼模式,我有哪些選擇?我如何在它們之間進行選擇?OFB和CFB之間的主要區別是什麼?

該模式的簡短答案:使用EAX

EAX 好的原因有幾個,但特別是:

  • 它包括完整性檢查,這是必須的(是的,真的;對主動攻擊者的防禦經常被忽視,這同樣經常是致命的)。
  • 它需要一個唯一的 IV(一個隨機數),但可以容忍可預測的隨機數。

至於 OFB 和 CFB,請參閱Wikipedia 頁面,該頁面有很好的示意圖。但是,由於兩者都沒有任何完整性檢查,因此您必須添加某種 HMAC,因此選擇像 EAX 這樣的良好集成模式更簡單(而且簡單性有利於安全性)。


如果由於某種原因您真的不能使用 EAX(或其他類似模式),您可以通過以下方式生成不可預測的 IV 來生存 CBC:使用您的“唯一、可預測的 IV”源來生成塊大小的值,並使用加密每個值分組密碼,使用不同的密鑰(您不必與其他任何人共享)。這就像使用分組密碼作為 PRNG。在某些時候(當您生成額外的密鑰時)您仍然需要一些隨機性,但不像以前那樣多。

計數器模式允許可預測的 IV。

您通常將櫃檯分成兩部分。一部分保證計數器是唯一的,另一部分是您增加的部分。

因此,當使用 128 位塊密碼時,您可以對其進行分區,以便 64 位是您的唯一性部分,其餘 64 位是計數器。

可以通過您喜歡的任何方案來完成獨特性。如果您將數據儲存在數據庫中,您可能可以在這部分中使用行計數器。如果不是,一個建議是您可以將其設置為加密主機的 MAC 地址,然後是自 1970 年以來的毫秒數,其餘位隨機選擇。

剩餘的 64 位在底層分組密碼的每個時鐘上從零開始計數。

如果您想要一個允許可預測 IV 的加密/身份驗證模式,請嘗試 GCM。

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