国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 基礎常識 > 正文

電腦隨機數是如何生成的?

2019-10-30 20:36:56
字體:
來源:轉載
供稿:網友

   不論是維持著你余額寶安全的加密過程還是你在玩《戰地4》,電腦都會產生隨機數。目前有兩類隨機數——“真”隨機數和偽隨機數——兩者的區別關乎加密系統的安全度。

  對于隨機數的討論日漸升溫,許多人懷疑英特爾內置于各種硬件內的隨機數生成芯片是不是靠得住。要理解為什么這種隨機數不太可靠,你必須理解隨機數的生成原理。

  隨機數的作用

  隨機數的使用歷史已經有數千年。無論是拋硬幣還是搖色子,目的是讓隨機概率決定結果。電腦中的隨機數生成器的目的也是如此——生成隨機不可預測的結果。

  加密法要求數字不能被攻擊者猜到,不能多次使用同樣的數字。所以需要一種機制產生攻擊者無法預測的數字,這些隨機數對加密法至關重要,無論你是加密文件還是訪問https協議網站,都需要用到隨機數。

電腦隨機數是如何生成的?  三聯

  真隨機數

  如果電腦是靠代碼生成隨機數,是不是意味著隨機數可以被預測?

  根據隨機數的生成原理,我們把電腦隨機數分為兩類:“真”隨機數和偽隨機數。

  要生成一個“真”隨機數,電腦會檢測電腦外部發生的某種物理現象。比如說,電腦可以測量某個原子的放射性衰變。根據量子理論,原子衰變是隨機而不可測的,所以這就是宇宙中的“純粹”隨機性。攻擊者永遠無法預測原子衰變的發生時間,也就不可能猜出隨機值。

  舉個更實際的例子,電腦會根據環境中的噪音或者采取你敲擊鍵盤的精確時間作為隨機數據或熵的生成依據。舉個例子,你的電腦監測到你某天下午2點以后敲擊鍵盤的精確時間是0.23423523秒,有足夠的這些特定長數字你就能得到一個熵源,也就可以生成“真”隨機數。由于人不是機器,所以攻擊者無法掌握你的敲擊時間。Linux中的/dev/隨機設備生成隨機數,“阻攔”訪問直到熵積累量足夠才返回一個真隨機數。

  偽隨機數

  偽隨機數這個概念是相對于“真”隨機數而言。電腦通過發送種子數值,運用算法產生某個看起來像隨機數的數字,但是實際上這個數字是可以預測的。因為電腦沒有從環境中收集到任何隨機信息。

  雖然是偽隨機數,但是并不是所有領域都不需要偽隨機數。比如,如果你在玩電子游戲,那么游戲過程中是靠偽隨機數還是真隨機數并不重要。另一方面,如果你的應用正在加密,情況就不同了,因為你不希望攻擊者能夠猜到你的隨機數。

  舉個例子,如果攻擊者掌握了某隨機數生成器使用的種子數值和加密算法,如果隨機數生成器完全依靠種子數值和加密算法生成密文,這個過程中不添加任何額外隨機性,如果攻擊者掌握的情報足夠多,他們可以逆推來確定加密算法一定會用到的偽隨機數,也就能破譯密文。

  NSA和Intel的硬件隨機數生成器

  為了幫助程序開發者更簡單的生成隨機數,也為了幫助生成安全的隨機數,Intel的芯片組中包括一個硬件隨機數生成器,名叫RdRand,這塊芯片利用處理器的熵源向軟件提供隨機數。

  問題是這個隨機數生成器是個黑盒,我們不清楚里面的工作原理。如果RdRand藏有NSA的后門,那么政府就可以破譯依靠隨機數生成器提供的唯一數據產生的密鑰。

  這個問題非常嚴重。在2013年12月,FreeBSD的開發者們取消了對直接采用RdRand作為隨機數源的支持,理由是無法信任Intel。RdRand設備的輸出結果會用另一套加密算法增加額外熵,確保隨機數服務器中即便有后門程序也不會產生影響。Linux已經這么做了,在RdRand的隨機數基礎上再次進行隨機處理,以確保后門程序不可能從中作祟。Intel總裁Brian Krzanich在Reddit上沒有直接回答關于是否裝有后門的問題。

  當然這不是Intel一家的問題,FreeBSD的開發者們也點了Via芯片的名。從這場爭論中我們可以看出為什么不可預測的真隨機數如此重要。

  而隨機數生成器生成“真”隨機數只需要搜集熵或者從真實世界搜集看似隨機的數據。對于某些不需要真正隨機的應用,隨機生成器可能會通過算法和種子數值算出隨機數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松江区| 惠州市| 乾安县| 惠安县| 仙游县| 桦川县| 徐汇区| 蓬溪县| 将乐县| 如皋市| 明水县| 邵武市| 军事| 松原市| 东城区| 平昌县| 阿尔山市| 布拖县| 齐河县| 昌图县| 横山县| 洪泽县| 上蔡县| 望奎县| 西华县| 双峰县| 高清| 长治市| 海城市| 舒城县| 浮梁县| 饶河县| 垣曲县| 威宁| 巴楚县| 鹤峰县| 运城市| 金山区| 文水县| 敦化市| 麻栗坡县|