Block-Cipher
鹽和初始化向量有何不同?
閱讀NodeJS API 文件,我第一次遇到 IV。據我所知,它與密碼散列中的鹽具有相同的作用?它們是等價的嗎?
術語鹽和 IV 確實主要用於提供相同的功能。它們的區別主要在於算法的類型。兩者都用於確保輸出不完全由輸入決定。
IV 或鹽不一定必須是隨機的,它們可能只是唯一的。在這種情況下,函式輸出是偽隨機的;隨機性取自密鑰材料(或密碼)中的熵。salt 和 IV 的要求(輸出大小,是否需要隨機化)取決於所使用的算法。
術語 IV - 初始化向量 - 通常與分組密碼操作模式相關聯。這些模式中的大多數都使用某種操作連結。顧名思義,IV 只是“第一個向量”。這可以通過查看 CBC 操作模式最容易地顯示出來:這裡每個明文塊在被饋送到塊密碼之前與前一個密文塊(向量)進行異或,但第一個明文塊是異或用 IV 代替。
Salt 是一個更通用的術語,通常與 KDF 和 KDF 相關算法結合使用。您經常會看到與密碼散列(即 PBKDF)和基於密碼的加密 (PBE) 結合使用的術語。然後使用鹽來導出唯一的密鑰材料。您可能還會看到用於其他偽隨機函式的術語鹽,例如用於現代 RSA 加密 (RSA-OAEP) 和簽名生成 (RSA-PSS) 的 MGF1。