Cryptanalysis
使用 MD5 初始化隨機數生成器是否安全?
對於散列算法的大多數應用程序,MD5 算法不再被認為是安全的。但是,通過密碼初始化 PRNG 是否安全?
如果不是,它怎麼能被利用呢?
這對於 MD5 來說不是問題,因為它是使用可以快速計算的密碼功能初始化 PRNG 的問題。SHA-256幾乎一樣糟糕。將密碼轉換為密鑰/種子時,我們需要使用密鑰/熵拉伸,為此使用具有合理參數的Argon2等記憶硬函式。否則,我們將面臨密碼破解的風險。
此外,函式的輸入應盡可能包含鹽(例如使用者名、電子郵件、文件名)。
怎麼可能被利用?
攻擊者將散列一個常用密碼字典,並使用結果初始化 PRNG,生成一些 PRNG 輸出,並測試該輸出是否正確。該測試取決於 PRNG 的使用情況。例如,如果 PRNG 用作流密碼的流生成器,並且已知的明文/密文對可用,則測試歸結為將 PRNG 輸出與適當長度的明文和密文的 XOR 進行比較。如果只有密文可用,但正確的明文是可辨識的(例如高度冗餘),攻擊仍然可能。