Block-Cipher

靜脈輸液短的後果是什麼?在這種情況下,一種模式更好嗎?

  • August 22, 2014

我讀過很多關於空長度 IV 對大多數模式都不好的文章。在無法將 128 位 IV 與每條消息一起傳遞的情況下,從較小的傳遞值生成 IV 將如何影響安全強度?

每個使用者都有自己的對稱密鑰,該對稱密鑰會定期重新生成(每個密鑰可能只有數百或數千條消息,每條消息可能有數百或很少數千字節)。如果我隨機生成 16 位或 20 位,使用 SHA-256 對其進行雜湊處理並將前 128 位用作 IV,這對整體安全性有何影響?現在是 16 位還是 20 位?

將伺服器和使用者都知道的附加資訊添加到散列中是否有幫助?在這種情況下,是否有比其他模式更好的模式?我讀過關於即使沒有 IV 的合成初始化向量 (SIV) 模式也是有抵抗力的,但是據我了解,它會生成一個塊大小的標籤,這違背了我的目的。我不能發送標籤並仍然加密,而只會失去身份驗證嗎?

IV 的要點是防止在實踐中將相同的 (key,IV) 用於兩個不同的消息。這對於流密碼或分組密碼模式(例如 CTR)是有效的流密碼的絕對要求,因為重複使用相同的 (key,IV) 對可以讓竊聽者輕鬆獲得兩個明文消息的 XOR,這意味著它們是有效的解密。其他模式的行為略有不同,但模式的 IV 要求通常是不可協商的,如果不遵守,安全性就會被破壞。

使用較小的 IV,使用相同 (key,IV) 的機會顯著增加。按照您的建議散列一個低位值根本不能解決這個問題,因為 16 位計數器可能只有 65k IV。

如果您的應用程序無法處理每條消息至少 96 個額外位的傳輸,則應在協議開始時交換“IV 種子”,然後每一方都可以將其用作 CSPRNG 的狀態並為每個數據包生成 IV在其自己的。使用像 HASH-DRBG 這樣的東西可能是最簡單的,你從你的 IV 種子開始,連接一個值為 N 的計數器,散列並使用輸出作為數據包編號 N 的 IV。讓這個方案容忍封包遺失,同時永遠不會重複(關鍵, IV) 留給讀者作為練習;請參閱 ChaCha TLS RFC 草案作為如何使用數據包序列號生成 IV 的範例。 https://datatracker.ietf.org/doc/html/draft-mavrogiannopoulos-chacha-tls-02

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