Pseudo-Random-Generator
腳本執行時間是偽隨機數生成的一個不錯的來源嗎?
這是用於生成密碼的 PHP 腳本。自然在生成密碼之前還有其他的計算。但我認為腳本初始化和排隊所需的時間會使其相當偽隨機。
是否有研究將腳本執行時間作為偽隨機數生成的來源?
如果沒有,有關如何對此進行密碼分析的任何提示?
AFAIK,有一些論文表明,例如,處理時間並不像看起來那麼隨機。這是在作業系統為 /dev/random 等設備收集熵的情況下。我在很多地方都讀過這篇文章,但我無法提供任何參考(如果有人可以的話,那就太好了;-))。
話雖如此,如果您有其他熵來源,那麼腳本時間當然可以是額外的輸入。我想到的一些考慮是:
- 注意時間源的解析度:如果最大解析度是分鐘,它可能總是返回 0。
- 執行一些測試,看看你得到了什麼結果以及它們是如何分佈的。通常的分佈可能是 20% 的時間返回 1,例如,2 30%、3 30%、4 20%。
根據您計劃如何使用這些“隨機值”,這些考慮因素可能會以一種或另一種方式改變結果。
我的建議是你使用一個像樣的熵生成算法,而不是試圖發明你自己的。例如,您可以在此處開始您的任務:
https://en.wikipedia.org/wiki/Fortuna_(PRNG)
有關更多算法,請參閱參考連結。