什麼是隨機數脆弱性?
計算機確定性,因此,可以預測的。 電腦不能,其本身,產生真正的隨機數。
在沒有外部輸入,計算機只能創建偽隨機數。
一個隨機數脆弱性時,就會發生程序使用方式產生隨機號碼可以是:
- 不是隨機的
- 可預測
創造良好的隨機數,計算機必須有兩件事:
- 一個良好的隨機數生成算法
- 隨機和unpredicatable種子的隨機數生成算法
隨機數漏洞實例
考慮下面的代碼片斷:
x =蘭特( ) ;
此代碼產生不良隨機數,因為當您呼叫蘭特( )之前的種子已經建立起來, srand ( ) ,它使用了價值1作為缺省種子。 其他人在同一台機器上使用相同的編譯器誰呼籲蘭特( )與1號種子將得到相同的隨機數作為你只是做。
讓我們來看看另一個代碼段:
srand (時間( 0 ) ) ; x =蘭特( ) ;
此代碼並調用srand ( )與當前時間作為種子。 但是,此代碼仍然是不安全的,因為:
- 系統時間是一個非常壞的種子,因為它是可預見的範圍內,且幅度較小。
- 是的ANSI C蘭特( )函數本身並不創造良好的隨機數。
讓我們檢查三分之一代碼段:
srandom (時間( 0 ) ) ; x =隨機( ) ;
此代碼使用BSD的隨機( )和srandom ( )函數,將產生更好的隨機數的ANSI C比他們的前輩。 但是,此代碼仍然使用的時間( )來生成的種子數量。 更好的隨機數源上的BSD和Linux系統是的/ dev /隨機裝置。
一些種子和隨機數漏洞
良好的種子數量來自不可預測的事件,如用戶按鍵或鼠標移動。 這些都不是完美的來源的隨機性,但是。 有些人的行為是可預見的和電腦硬件可以緩衝鍵盤和鼠標中斷,減少隨意性。
許多其他隨機數字產生器可用於各種平台和開發環境。 這是極其困難的創造一個良好的人,更難以確定,如果隨機數發生器中創建真正產生隨機和不可預測的數字。 的最佳途徑對於大多數應用,是落實現有的隨機數發生器一直受到公眾的安全。
隨機數漏洞的興趣時,黑客可以利用,以確定輸入值,以加密的功能。 這可以利用的安全性。
不當使用函數調用蘭特( )和隨機( )是正常的原因,隨機數漏洞。
額外的信息來源生成隨機數
欲了解更多有關生成隨機數,閱讀的RFC 1750 -隨機性的建議安全 。
|
書籤什麼是隨機數脆弱性?





