Encryption
7zip:為什麼用 AES-256 加密相同的文件不會給出相同的輸出?
使用 7-zip 19.00,在 Windows 10 1909 上建構 18363.592,我使用 AES-256 和密碼“123”加密了一個文本文件,內容為“hello there”。我這樣做了兩次,完全相同的程序,但如下所示,輸出不同:
為什麼?
這是預期的行為,因為7zip使用密碼塊連結(CBC) 模式進行加密。為此,您需要初始化向量 (IV) 是唯一且不可預測的。
它使用的是 64 位 IV,但幸運的是,它已更改為 128;
7z檔案的加密強度增加:隨機初始化向量的大小從64位增加到128位,並改進了偽隨機數生成器。
如果同一個文件的加密結果是相同的密文,那麼我們就會認為IV生成有問題。希望從這裡我們看到沒有。
注1: 7zip使用 $ 2^{19} $ -times 迭代 SHA256 以從密碼中派生 AES-256 密鑰。這對於大規模並行化是不安全的。推薦使用像diceware這樣的高熵密碼。
注 2:問題中的第一條評論聲稱 CBC 操作模式具有IND-CCA實際上它不能,它具有IND-CPA。請參閱 Rogaway 對一些分組密碼操作模式的模式評估的開創性工作