Symmetric
當 IV 是從主密鑰派生的時,我們什麼時候需要大於 2 個字節的 IV?
例如,讓我們舉一個簡單的情況,其中使用帶有 IV + MAC 的 AES-256-CBC 來加密給定的明文以提供身份驗證並防止相同的密文。
iv.mac1.cipherText(plainText)
為了簡單起見,密鑰是使用 HMAC 派生的(也可以是 HKDF)
masterkey = [32 random bytes]; encryptionKey = hmac_sha256(masterkey,'encryption_key'); mac = hmac_sha256(masterkey,'mac_key'); ivInput = [2 random bytes]; iv = hmac_sha256(masterkey,ivInput);
這是否已經為幾乎任何消息傳遞系統提供了足夠的“隨機性”,因為使用 2 個字節到達具有相同消息的相同密文的機會已經大約為 0.002% (1/(256*256)*100)?
(每字節 256 種可能性,2 字節用於 IV)
這是否已經為幾乎任何消息傳遞系統提供了足夠的“隨機性”,因為使用 2 個字節到達具有相同消息的相同密文的機會已經大約為 0.002% (1/(256*256)*100)?
實際上,有 100 條消息,有 $ \binom{100}{2} = 4950 $ 消息對,因此具有相同 IV 的消息對的預期數量(與兩條消息具有相同 IV 的機率不完全相同)約為 0.0755。
而且,對於具有相同 IV 的任何此類消息對,無論前 16 個字節是否相同,它都會(至少)洩漏。
我認為洩露這麼多資訊的 7% 的可能性太高了,即使您僅限於加密 100 條消息(許多系統最終會加密更多)