【譯】安全系統(tǒng)為什么需要隨機數(shù)

原文鏈接滴劲,介紹隨機數(shù)對安全的重要性酿雪。如發(fā)現(xiàn)錯誤,請留言或者發(fā)送郵件到zwzm85@gmail.com贡耽。未經(jīng)授權(quán)衷模,請勿轉(zhuǎn)載。

如果你最近關(guān)注關(guān)于美國國家安全局和英國政府通信總部技術(shù)間諜的新聞蒲赂,你可能聽說過有聲明稱NSA參與了弱化隨機數(shù)生成器的活動(譯者語:如果你沒看到過阱冶,并不奇怪。因為這篇文章寫于2013年9月13日)滥嘴。那么問題來了...為什么要弄亂隨機數(shù)的生成呢木蹬?

答案很簡單:優(yōu)良的隨機數(shù)是幾乎所有安全的計算機系統(tǒng)的基礎。要是沒有它們若皱,從二戰(zhàn)的密碼(比如Lorenz)到瀏覽器進行安全網(wǎng)絡訪問的SSL都會陷入困境镊叁。

為了理解背后的原因,和糟糕的隨機數(shù)導致的危險走触,需要了解一些隨機數(shù)自身的知識(比如“那么什么是好的隨機數(shù)呢晦譬?”)和安全系統(tǒng)如何使用它們。

黑客新聞網(wǎng)站被入侵

我用廣受歡迎的編程和技術(shù)網(wǎng)站黑客新聞被入侵作為隨機數(shù)如何出錯的例子互广。

image

四年前敛腌,我在網(wǎng)站上提到它的隨機數(shù)生成器很容易被用來攻擊網(wǎng)站。不久以后惫皱,另一個完全獨立的網(wǎng)站投稿人在獲取網(wǎng)站所有者的許可下真正執(zhí)行了攻擊像樊。

這里是其工作原理。當你登陸一個網(wǎng)站旅敷,你會被分配一個代表該會話(你登陸的那段時間)的唯一ID生棍。那個唯一ID必須唯一且不能被其他人猜測出來。如果其他人能猜出來媳谁,那他就可以冒充你涂滴。

在黑客新聞的例子中,唯一ID是一串隨機字符類似lBGn0tWMcx7380gZyrUO9B韩脑。每個用戶都有一個不同的字符串氢妈,并且字符串應該非常非常難以猜出或者計算出粹污。

偽隨機數(shù)

在內(nèi)部段多,那些ID使用偽隨機數(shù)生成器生成。那是一個可以被反復調(diào)用以生成表面上隨機的數(shù)字的數(shù)學函數(shù)壮吩。我之所以說表面上进苍,是因為正如偉大的數(shù)學家約翰.馮.諾伊曼所說:“任何想要用算數(shù)方法產(chǎn)生隨機數(shù)字的人都應該是罪惡的”加缘。計算機科學家高德納曾說過一個故事:他自己發(fā)明了一個偽隨機數(shù)生成器,結(jié)果被其糟糕的結(jié)果震撼住了觉啊。

盡管偽隨機數(shù)生成器可以生成表面上的隨機數(shù)序列拣宏,但是它們有缺陷。

馮.諾伊曼

馮.諾伊曼使用過的一個簡單偽隨機數(shù)生成器被稱為平方取中法杠人,工作原理如下勋乾。開始你有一個數(shù)字(被稱為種子),然后計算它的平方嗡善。你取中間的四個數(shù)作為你的隨機數(shù)辑莫,然后再計算它的平方來獲取下一個隨機數(shù)等等。

比如罩引,你選擇4181作為種子各吨,那么將會生成如下的序列4807,1072袁铐,1491揭蜒,2230,9279....:

隨機數(shù) 它的平方 中間數(shù)字
4181 17480761 4807
4807 23107249 1072
1072 1149184 1491
1491 2223081 2230
2230 4972900 9729
9729 94653441 6534
等等

這個偽隨機數(shù)早已被更好的替代剔桨,比如梅森旋轉(zhuǎn)法其輸出更加難以預測屉更。平方取中法很容易預測:下一個生成的數(shù)字完全取決于上一個生成的數(shù)字。梅森旋轉(zhuǎn)法就難預測的多领炫,因為它用內(nèi)部狀態(tài)來生成隨機數(shù)(譯者語:外部不可見)偶垮。

在密碼學中有密碼學安全偽隨機數(shù)生成器,它們被設計成不管你請求生成多少次隨機數(shù)都不可預測(梅森旋轉(zhuǎn)不是密碼學安全的帝洪,因為當有足夠多的隨機數(shù)可以觀察的時候似舵,它是可預測的)。

對于安全系統(tǒng)來說葱峡,隨機數(shù)生成器不可預測性至關(guān)重要砚哗。

從種子開始

所有的偽隨機數(shù)生成器都需要從某個地方開始,它們需要被種下種子砰奕,這就是黑客新聞失敗的地方蛛芥。隨機數(shù)生成器使用黑客新聞網(wǎng)站上次啟動時間的毫秒格式作為種子。通過某些仔細的工作军援,攻擊者可以讓黑客新聞宕機從而可以預測一分鐘長度的重啟時間窗口仅淑。通過這個時間窗口,攻擊者能夠預測分配給登錄用戶的唯一ID胸哥,進而可以冒充他們(類似的隨機數(shù)問題讓有些人群可以在在線撲克中作弊)涯竟。

黑客新聞被入侵的所有細節(jié)都在這里。攻擊成功是因為:一旦黑客新聞宕機,攻擊者等待它重啟然后記錄下當前時間庐船。有趣的是银酬,黑客新聞服務器愿意提供這些信息。那么攻擊者就有了60秒的可能種子(60000種子筐钟,因為種子是毫秒揩瞪,譯者語:60秒等于60000毫秒,也就是60000個種子)篓冲。

所以李破,攻擊者登錄網(wǎng)站查看自己的唯一ID。它是由黑客新聞服務器生成的隨機數(shù)壹将。攻擊者然后對這60000個種子逐一執(zhí)行黑客新聞使用的隨機數(shù)生成算法喷屋,直到他發(fā)現(xiàn)和自己唯一ID相匹配的ID。那就會告訴他哪個是被使用的種子瞭恰,他可以通過和黑客新聞一樣的隨機數(shù)序列持續(xù)生成后續(xù)的唯一ID屯曹。從那以后他就可以預測出分配給登錄用戶的唯一ID,進而可以假冒他們惊畏。

黑客新聞的代碼改為使用Linux的/dev/urandom源來生成隨機數(shù)恶耽,這意味著現(xiàn)在使用一個優(yōu)秀的隨機數(shù)生成器來生成唯一ID,不會再有原來的弱種子颜启。

所以偷俭,偽隨機數(shù)生成會在兩方面失敗:種子可能是糟糕的缰盏,或者算法本身可以被預測涌萤。

無處不在的隨機數(shù)

黑客新聞的例子并不涉及到密碼學,但是隨機數(shù)對密碼技術(shù)至關(guān)重要口猜。比如负溪,任何HTTPS會話都會以如下方式開始:

  1. 瀏覽器發(fā)送信息給服務器,告知其想要使用的SSL版本和其他信息济炎。
  2. 服務器回復類似的SSL版本信息和SSL證書(譯者語:關(guān)于證書的更多知識請看這里)川抡。
  3. 瀏覽器校驗證書是否合法。如果合法须尚,它會生成一個隨機的'pre-master密鑰'崖堤,其會被用來保證連接的安全。

后續(xù)的交換信息都依賴于隨機選取的pre-master密鑰耐床。為了保證連接的安全性密幔,它不能被預測。

以下是計算機如何使用WPA2協(xié)議與接入點建立安全的無線連接的過程的一部分:

  1. 接入點生成一個隨機nonce撩轰,然后把它發(fā)送給計算機胯甩。
  2. 計算機生成一個隨機nonce淤年,然后發(fā)送給接入點。

接入點和計算機從此以后會持續(xù)使用這些隨機nonce來保證連接的安全蜡豹。

同樣,隨機數(shù)會出現(xiàn)在以下場景:當用戶登錄網(wǎng)站(和其他系統(tǒng))溉苛,使用SSH創(chuàng)建安全連接镜廉,進行Skype(譯者語:微軟開發(fā)的一款通信軟件)視頻聊天,發(fā)送加密郵件還有很多愚战。

image

唯一完全安全的密碼系統(tǒng)--一次性密碼本的致命缺點就是密碼本必須完全隨機地生成娇唯。使用的隨機數(shù)有任何可被預測性或非均勻性都會導致一次性密碼本會被破解(一次性密碼本的另一個問題是復用:它們必須只被使用一次)。

CloudFlare的隨機數(shù)源

在CloudFlare寂玲,我們需要大量隨機數(shù)來加密:我們需要它們來建立安全的SSL連接塔插、Railgun(譯者語:CloudFlare的一個動態(tài)內(nèi)容緩存服務)、生成密鑰對拓哟、和身份驗證系統(tǒng)想许。它們也是我們向客戶推出的向前安全性的重要組成部分。

我們目前基本上通過OpenSSL的隨機數(shù)生成系統(tǒng)或者Linux內(nèi)核獲取隨機數(shù)断序。兩者都會從不同源向隨機數(shù)生成器種入種子流纹,使它們盡可能不能被預測。這些源包括網(wǎng)絡數(shù)據(jù)或者磁盤的尋道時間违诗。但是我們認為我們可以通過增加一些真正隨機的數(shù)據(jù)來優(yōu)化它們漱凝。結(jié)果就是提升我們客戶的安全性。

image

我們已經(jīng)啟動一個項目诸迟,通過提供不是來源于數(shù)學計算的真正隨機數(shù)源來進一步優(yōu)化我們的隨機數(shù)茸炒。可以借助類似放射性衰變阵苇,流體運動壁公,大氣噪聲,和其他混亂來實現(xiàn)绅项。

當新系統(tǒng)在線運行了贮尖,我們會發(fā)布它的詳細信息。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末趁怔,一起剝皮案震驚了整個濱河市湿硝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌润努,老刑警劉巖关斜,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異铺浇,居然都是意外死亡痢畜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丁稀,“玉大人吼拥,你說我怎么就攤上這事∠呱溃” “怎么了凿可?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長授账。 經(jīng)常有香客問我枯跑,道長,這世上最難降的妖魔是什么白热? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任敛助,我火速辦了婚禮,結(jié)果婚禮上屋确,老公的妹妹穿的比我還像新娘纳击。我一直安慰自己,他們只是感情好攻臀,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布评疗。 她就那樣靜靜地躺著,像睡著了一般茵烈。 火紅的嫁衣襯著肌膚如雪百匆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天呜投,我揣著相機與錄音加匈,去河邊找鬼。 笑死仑荐,一個胖子當著我的面吹牛雕拼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播粘招,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼啥寇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了洒扎?” 一聲冷哼從身側(cè)響起辑甜,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎袍冷,沒想到半個月后磷醋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡胡诗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年邓线,在試婚紗的時候發(fā)現(xiàn)自己被綠了淌友。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡骇陈,死狀恐怖震庭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情你雌,我是刑警寧澤器联,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站匪蝙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏习贫。R本人自食惡果不足惜逛球,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苫昌。 院中可真熱鬧颤绕,春花似錦、人聲如沸祟身。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袜硫。三九已至氯葬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間婉陷,已是汗流浹背帚称。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秽澳,地道東北人闯睹。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像担神,于是被迫代替她去往敵國和親楼吃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容