Symmetric
PBE 和對稱密鑰加密有什麼區別?
PBE(基於密碼的加密)和對稱密鑰算法有什麼區別?
我的理解是在 PBE 中使用了AES和Twofish等對稱密鑰算法。因此,PBE 只是一種採用對稱密鑰算法來完成工作的技術。所以兩者比較沒有意義。這是正確的,還是我錯過了什麼?
正如通常實現的那樣,PBE 採用使用者提供的低熵密碼,為其添加一些熵,從而在將其變成密鑰之前對其進行強化。然後,此密鑰可用於對稱加密。
問題是使用者的密碼通常只有很少的熵。如果攻擊者知道了 salt、digest 方法和迭代次數,他需要不斷嘗試猜測預強化密碼,將匹配的 PBE-強化應用於他的猜測,然後使用生成的密鑰與創建的密文匹配用那把鑰匙。
如果程序員使用了不錯的摘要方法(例如帶有 HMAC SHA 256 的 PBKDF2)、由密碼安全的偽隨機數生成器 (CSPRNG) 生成的鹽和相當數量的迭代(200,000 或更多),那麼他可以讓它變得漂亮攻擊者猜測密鑰的成本很高。
但是,如果使用者的密碼非常容易猜到(例如“密碼”),那麼即使是一個好的摘要方法和大量的迭代也不會產生太大的影響。您仍然需要強制使用者選擇足夠複雜的密碼,以在任何強化發生之前最大化熵。
OWASP 有一些強制密碼複雜性的最佳實踐。