使用 AES-CFB 為 PBE 公開 IV 和 salt
是否可以同時公開 AES-CFB 的 IV 和 PBKDF2 的鹽?我的這種行為是否會以任何方式損害安全性?
我有一個這個密碼的實現,並且之前在堆棧溢出時問過一個關於這個密碼的問題。一位回答我的問題的使用者告訴我,可以同時公開密碼鹽和 IV。並不是說我不相信他,只是想加倍確保糾正我的實施。
在密碼學中,初始化向量或 IV 是隨機化密碼原語的輸出所需的固定大小的輸入。它並不意味著保密,因此在加密後將其提供給攻擊者是沒有問題的。IV 的關鍵在於它的獨特性,並且對於某些操作模式,它的不可預測性。因此,如果您的實現使用正確的隨機數生成器正確生成了 IV,那麼在加密之後將其公開是沒有問題的。引用雨披:
這意味著如果你對 IV 保密,它不會以任何方式真正阻礙任何特定的攻擊。看到這一點的一種方法是假設相反。讓我們假設,如果我們將 IV 暴露給攻擊者,他可以利用一些弱點。如果我們假設,那麼攻擊者可以利用該弱點來攻擊沒有 IV 的 CFB 模式加密文本;他所做的是獲取密文(沒有IV),並將初始密文塊視為IV,並將其餘密文視為“真實”密文;這對應的明文是省略了初始塊的普通明文。
因此,如果用 CFB 模式暴露 IV 會導致弱點,那麼 CFB 模式通常是弱點。現在,這樣寫,這聽起來可能不是很令人欣慰;但是該語句在邏輯上等同於“如果CFB模式強,則暴露IV模式的CFB模式強”,這才是我們真正想要展示的。
鹽是作為附加輸入添加到散列函式或密鑰派生函式以保護構造免受字典攻擊的隨機值,攻擊者應該為每個鹽創建一個字典。與 IV 情況一樣,關鍵屬性是唯一性。您不希望所有密碼共享相同的鹽(否則攻擊者可能會建構一個字典來同時攻擊多個密碼)。
在這兩種情況下,您都應該驗證這些值。
因此,您的問題的答案是“不,它不會損害安全性”。您應該更加關注用於生成 IV 和鹽的算法(可能還有鹽的大小)。並添加一種模式以在解密之前檢查密文(+ IV)的完整性。