


計算機雖然效能卓越,但有些事情卻做不好,隨機性就是其中之一。
你可能會問,計算機一直在輸出資料,為什麼不能輸出隨機數呢?
問題在於,計算機依賴的內部機制在某種程度上是可預測的,這意味著計算機演算法的輸出最終也會變得可預測。對經營賭場的人來說,這肯定不是他們想要的。
同樣的問題也讓密碼專家感到頭疼。當你對資訊進行加密時,你希望程式碼的金鑰儘可能隨機,這樣就不會有人知道你是如何對原始文字進行亂碼處理的,因為這可能會讓他們讀取到秘密資訊。

長期以來,人們一直在尋找隨機性的外部來源作為隨機數發生器的基礎。在這種尋找真正隨機性的過程中,計算機專家們幾乎找遍了那些無法預測或操作的混亂現象。包括聆聽電子風暴的喧囂聲,拍攝玻璃上雨滴的照片,玩弄已知宇宙中最微小的粒子……
1997年,Mads Haahr和他的夥伴們在加利福尼亞州伯克利的 Radio Shack 專賣店閒逛,他們在找一臺古早的收音機,就是那種當你在調臺時,電臺之間會發出一陣陣靜電噼啪聲的那種。店裡當時在售的收音機都有噪聲濾波器,剛好可以濾掉他們正在尋找的靜電噼啪聲。經過一番勸說,售貨員同意讓他們試聽店後面的一款最便宜的裝置。
當他們把幾塊電池裝進這臺 10 美元的灰色小收音機時,一陣嗡嗡聲突然響起。吵得要命。他們高興得上躥下跳,這臺小收音機可能會讓他們發財。Haahr 和他的三個朋友當時正在開發數字老虎機和二十一點遊戲,他們想把這些遊戲放在網上。

Haahr知道,他們需要能夠生成可靠的隨機數。無窮無盡的數字流將決定當你拉動虛擬搖桿時會出現什麼老虎機,或者在線上撲克遊戲中會發什麼牌。如果這些東西不是隨機的,遊戲就不會非常公平,玩家甚至可以透過尋找遊戲中的可預測模式來攻克系統。
因此,他們一直在尋找一個他們都認為值得信賴的隨機性來源。顧名思義,就是不能帶有偏見的系統。他們想到的就是一臺土掉渣的收音機發出的嘶嘶聲。
這種裝置發出的噪音實際上是由地球大氣層中的閃電和電磁活動形成的雜亂訊號。這就是產生難以預測的靜電噼啪聲的原因。Haahr計劃讓一臺計算機聆聽所有這些胡言亂語,將這些起伏轉換成 1 和 0,也就是位元,然後利用這些位元產生一串串的隨機數——比如 4107567387。

最終,灰色小收音機並沒有讓Haahr和他的朋友們致富。當時,線上遊戲業務還處於起步階段,年輕的創業者們無法從中大賺一筆。但他們認為,他們製造的隨機數發生器仍然有用。於是,他們在 random.org 上公開,從那時起,它就開始產生隨機數。訪問者絡繹不絕。
比如政府辦公室使用他們的服務來抽取獲得經濟適用房的幸運獲獎者,經營地方社群彩票的人會在他們的網站上選擇中獎號碼,還有科學家來用他們的數字生成器對實驗參與者進行隨機化。也有音樂發燒友每週都用它來幫助自己從700多張CD收藏中選擇要放入車內的CD。
所有這些結果,包括在某些情況下,改變生活的抽籤或選擇過程的結果,都來自於一堆無線電接收器接收到的大氣活動。
隨機數比你以為的更重要
如果你從不參與彩票或無意參加臨床試驗,你可能會認為隨機數對你來說並不重要。
但你錯了。
每次你選擇一個新密碼,即使是你自己想出來的密碼,計算機也會在其中新增另一大段資料。這就意味著,如果有人入侵資料庫並竊取了你的密碼,他們就無法輕易解開密碼並用它訪問你的賬戶。新增到密碼中的資料塊稱為鹽,它來自一個隨機數。

在敏感資料在計算機網路上飛來飛去的當下,確保資訊安全就顯得至關重要。
提供雲安全服務的技術公司 Cloudflare 在其資料中心使用了大量隨機數。該公司尋求了一些引人注目的生成隨機數的方法,其中包括一組熔岩燈。
首席技術官John Graham-Cumming說:“這一開始幾乎是一個玩笑,然後我們說,’等一下,我們好像真的可以這樣做’。”

在 Cloudflare 位於舊金山的辦公室裡,天花板上的一個攝像頭正對著牆上五顏六色的熔岩燈。
這些熔岩燈的運動,也就是燈內那團油狀蠟質的東西,是無法預測的。這就意味著,相機可以每隔一段時間拍下圓球的照片,然後根據圓球的形狀和位置將其轉換成一系列數字。
這一想法由一家名為 Silicon Graphics 的公司在 20 世紀 90 年代末首次展示,是 Cloudflare 用於生成隨機數以確保資訊安全的多種方法之一。
人們為了追求隨機數而求助於的東西真是千奇百怪。

一位軟體工程師在一個潮溼的日子外出散步時意識到,雨滴落在他的眼鏡上可能會提供一個合適的隨機性來源,於是他透過一段簡短的程式碼來模擬這種模式,作為一項實驗。
有人嘗試捕捉魚缸中氣泡的活動作為隨機數生成的基礎。
還有人則依賴於網路攝像頭捕捉到的小貓不可預測的行為。
一組研究人員甚至透過研究所有生物體內 DNA 分子中包含的獨特基因序列來尋求隨機性。
此外,還有許多工作涉及檢測放射性衰變的 “咔嗒” 聲,例如用蓋革計數器檢測。你無法準確預測原子什麼時候會衰變,什麼時候會釋放出讓蓋革計數器受驚的亞原子粒子,也就是說,這被認為是一個很好的隨機性來源。
甚至有一個專案用香蕉來製作數字發生器——因為眾所周知,這種彎曲的水果具有輕微的放射性。

2016 年,《紐約時報》提到了一位11歲的遊戲玩家的例子,他找到了一種在 Minecraft 中製作隨機數生成器的方法。他想在 Minecraft 世界中為他的朋友們構建了一種行為難以預測的陷阱,但他希望能夠隨機觸發。於是,他決定建造圍欄,並在其中奴役名為“蘑菇”的虛擬奶牛,因為它們會以隨機模式走動。每當“蘑菇”踩到遊戲者安裝在圍欄地板上的壓力板時,就會觸發他設計的“遊戲中的遊戲”中的陷阱。正如《紐約時報》所說,這是一個“巧妙”的解決方案。
隨機數生成器還有許多更普通的輸入。例如,可以使用計算機螢幕上滑鼠游標的移動、鍵盤上按鍵之間的時間延遲或計算機網路上的通信噪音。
倫敦大學學院安全工程教授Steven Murdoch說,我們知道足夠的知識來生成適當的隨機數,但往往沒有足夠的驗證來確保所謂的隨機輸出確實是不可預測的。
對於真正大的數字集,隨機性的統計檢驗會變得非常複雜,但你永遠無法證明某件事是真正隨機的,只能根據你的最佳分析,證明它與隨機無異。

當隨機數生成器無法正常工作時,你可以預料到惡意人員可能會試圖利用它們。
2017年,《連線》報道了一名俄羅斯駭客的案例,據稱他讓人拍攝賭場老虎機的活動。根據每次遊戲的結果,他能夠預測老虎機內部隨機數生成器的工作原理,從而確定下一次支付的時間。
即使考慮到糟糕的工程設計,上面提到的大多數隨機數生成器仍然可以更穩健一些。如果我們對宇宙的每一個細節都瞭如指掌,並能對其進行完美的建模,那麼我們很可能就能預測出大氣噪音的細節,或者雨滴落在玻璃上的形態。
因此,有些人認為最好的隨機數發生器是量子隨機數發生器,即依賴於量子力學效應的隨機數發生器。例如,亞原子粒子的怪異行為或熵,包括單個放射性原子的衰變時間,都是完全不可預測的。關於真正的隨機性是否真的存在還有一些討論,但我們可以把這個問題留給理論物理學家去解決。

隨著量子技術的發展,我們有望在未來看到更多別出心裁的隨機數生成器,並希望它們是可靠的。
與此同時,還有 random.org。有時,人們會寫信給 Mads Haahr,抱怨他們在該網站的輸出結果中發現了一些看似可預測的數字序列。他說,這實際上是因為人類非常不擅長識別隨機性。我們似乎傾向於從任何事物中發現規律。
計算機天生擅長計算,難以做到真正的“隨機”,而我們在生存壓力、社會標準、他人眼光、自我意識、責任、理想等層層包袱的牽制之下,做不到真正的“鬆弛”也是不可避免的。
良倉今日好物
👇

