2011-10-19 47 views

回答

3

當人們談論關於預測隨機數發生器的輸出,他們甚至不需要獲得實際的「下一個數字」。即使像注意到隨機數不均勻分佈,或者它們從不連續兩次產生相同數字,或者「始終設置位5」這樣的細微事情,可以在基於猜測轉變攻擊方面有很長的路要走一個「隨機」數字需要花費數年時間,而不是數天。

通常也有一個折衷。如果沒有特定的硬件來完成這項工作,快速生成大量的隨機數字可能非常困難,因爲計算機沒有足夠的「隨機性」,因此必須將其僞造。

如果你沒有使用隨機性的安全性(密碼學,密碼等),而是模擬或數值工作,那麼如果它們是可預測的,它並不重要,重新統計學隨機。

+0

所以像'sha256(str(random.randomint()* 1000000000)).hexdigest()'就是要求安全威脅嗎?這將通過生成一個隨機字符串salt並將其包含在散列輸入中來緩解嗎? –

+0

我對加密技術不夠好,不敢自信地說,但我認爲這取決於特定實現如何生成隨機數。 (例如,我認爲默認的python是確定性的)。鑑於散列輸出,鹽對於讓人們更難猜測輸入是有用的,但與隨機數的優勢有一點不同。 –

1

幾乎每個隨機數發生器都是'僞隨機',因爲它使用隨機數或可預測公式表。種子有時用於在特定點「開始」隨機序列,例如, seedRandom(定時器)。

這在BAsIC編程的日子裏特別流行,因爲它的隨機數發生器始終以完全相同的數字序列開始,使其無法用於任何類型的GUID生成。早在當天,Z-80微處理器就有一個真正的隨機數發生器,雖然它只是一個介於0到127之間的數字。它使用了處理器循環功能,並且是不可預知的。

0

隨機數的可預測性是一個大問題。大多數「隨機」函數從時間推導出它們的價值。給定一組正確的條件,你最終可以得到兩個相同數值的「隨機」數字。

於Windows .NET中的世界CPRNG(加密安全僞隨機數生成器)可以通過System.Security.Cryptography.RandomNumberGenerator底層的Win32 API 發現在Linux中有一個隨機的「設備」

相關問題