[英]Security of AES encryption with constant salt
AES是一種分組密碼。 分組密碼的輸入密鑰和明文塊 。 分組密碼通常用於分組密碼操作模式 。 所有安全操作模式均使用初始化向量或IV。 否則,相同的純文本將被加密為相同的密文(用於相同的密鑰),這將泄漏信息。
AES或操作模式不使用鹽。 它通常用作密鑰派生功能(KDF)的輸入,尤其是基於密碼的密鑰派生功能(PBKDF)。 NET的Rfc2898DeriveBytes
實現了PBKDF2功能,如RFC 2898:“ PKCS#5:基於密碼的密碼規范2.0版”中所定義 。
如果在PBKDF2中使用靜態鹽,則將獲得與輸出相同的密鑰(對於相同的迭代次數)。 現在,如果您泄漏了生成的密鑰,那么您所有的密文都將受到攻擊。 而且,如果您使用多個密碼,那么攻擊者將可以建立彩虹表; PBKDF2的工作因素將變得不那么重要; 攻擊者只需建立一張表,然后對所有可能的密文嘗試所有生成的密鑰。
因此,由於鹽實際上並未用於AES,因此在安全性上沒有多大差別。 但是,這仍然是一個可怕的錯誤,甚至比使用PBKDF2 / Rfc2898DeriveBytes
的默認迭代計數還要糟糕。
請注意,每天都有許多人犯下可怕的安全罪。 有很多很多錯誤的人並不能告訴你你在“好公司”中。 有289個投票只是告訴您,基於投票計數,不應信任有關加密的SO答案。
有鹽是有原因的。 這樣就可以對同一輸入進行不同的加密。 如果攻擊者真的堅持,他可以找到一些模式,這些模式可以在加密過程中不斷重復,而不會加鹽,最終可以更輕松地獲取您的密鑰。 攻擊者仍然必須非常努力。 使用恆鹽等於根本不使用鹽。 強烈建議使用它,因為它對解密過程沒有影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.