什麼是隨機數脆弱性?

計算機確定性,因此,可以預測的。 電腦不能,其本身,產生真正的隨機數。

在沒有外部輸入,計算機只能創建偽隨機數。

一個隨機數脆弱性時,就會發生程序使用方式產生隨機號碼可以是:

  1. 不是隨機的
  2. 可預測

創造良好的隨機數,計算機必須有兩件事:

  1. 一個良好的隨機數生成算法
  2. 隨機和unpredicatable種子的隨機數生成算法

隨機數漏洞實例

考慮下面的代碼片斷:

  x =蘭特( ) ; 

此代碼產生不良隨機數,因為當您呼叫蘭特( )之前的種子已經建立起來, srand ( ) ,它使用了價值1作為缺省種子。 其他人在同一台機器上使用相同的編譯器誰呼籲蘭特( )與1號種子將得到相同的隨機數作為你只是做。

讓我們來看看另一個代碼段:

  srand (時間( 0 ) ) ; 
  x =蘭特( ) ; 

此代碼並調用srand ( )與當前時間作為種子。 但是,此代碼仍然是不安全的,因為:

  1. 系統時間是一個非常壞的種子,因為它是可預見的範圍內,且幅度較小。
  2. 是的ANSI C蘭特( )函數本身並不創造良好的隨機數。

讓我們檢查三分之一代碼段:

  srandom (時間( 0 ) ) ; 
  x =隨機( ) ; 

此代碼使用BSD的隨機( )和srandom ( )函數,將產生更好的隨機數的ANSI C比他們的前輩。 但是,此代碼仍然使用的時間( )來生成的種子數量。 更好的隨機數源上的BSD和Linux系統是的/ dev /隨機裝置。

一些種子和隨機數漏洞

良好的種子數量來自不可預測的事件,如用戶按鍵或鼠標移動。 這些都不是完美的來源的隨機性,但是。 有些人的行為是可預見的和電腦硬件可以緩衝鍵盤和鼠標中斷,減少隨意性。

許多其他隨機數字產生器可用於各種平台和開發環境。 這是極其困難的創造一個良好的人,更難以確定,如果隨機數發生器中創建真正產生隨機和不可預測的數字。 的最佳途徑對於大多數應用,是落實現有的隨機數發生器一直受到公眾的安全。

隨機數漏洞的興趣時,黑客可以利用,以確定輸入值,以加密的功能。 這可以利用的安全性。

不當使用函數調用蘭特( )和隨機( )是正常的原因,隨機數漏洞。

額外的信息來源生成隨機數

欲了解更多有關生成隨機數,閱讀的RFC 1750 -隨機性的建議安全

“任何人都試圖產生隨機數的算法是指純粹的,當然是在一國的罪孽。 ” -約翰馮諾依曼。
書寫安全的代碼 建設安全的軟件 安全編碼 安全編程食譜
購買這些優秀的書籍安全編程在Amazon.com


最常見的5個免費網絡工具

書籤什麼是隨機數脆弱性?

最新的博客帖子


英文 英文 德語 德語 西班牙語 西班牙語 法文 法文 意大利語 意大利語 葡萄牙語 葡萄牙語 俄文 俄文 荷蘭文 荷蘭文
希臘語 希臘語 印地文 印地文 日語 日語 韓文 韓文 中文 中文 中文(簡體) 中文(簡體) 阿拉伯語 阿拉伯語

版權所有2009年技術常見問題解答 保留所有權利。 隱私政策。