受限於許多現實的限制,一般電腦並無法自行生成真正的隨機亂數,妥協之道只能使用程式產生具有偽隨機性的偽亂數,會增加破解的容易度,進而影響加密的安全性。OneRNG就是款利用特殊元件產生亂數的裝置,能提供結果更趨近於隨機分部的亂數,相當適合用於使用SSL等加密的網站伺服器。
亂數是加密重要元素
在密碼學的領域中,亂數是個很重要關建元素,舉個例子來說,如果我們有1000種鎖,每次都從中選1個鎖上寶藏箱,但是如果我們靠「直覺」選擇鎖,很可能會陷入某種特定選擇模式,讓有心人士容易猜到我們所使用的鎖,所以比較容易被解開。如果我們是以隨機的方式選擇鎖,就比較不容易被猜到,對安全性有正面的幫助。
由於電腦的程式是由人設計出來的,所以它只會死板地執行被賦予的工作,雖然說不少程式語言都有產生亂數的功能,但那個功能並非產生真正隨機(Random)的亂數,而是透過透定程式產生具有偽隨機性(Pseudorandomness)的偽亂數。
原則上以統計的角度觀察偽亂數,可以發現它的分布近似於隨機分布,但是由於它的產生會受到隨機函數與亂數種子的影響,然而隨機函數是固定的,能夠控制的要素只有亂數種子。最簡單的方式就是把時間當做亂數種子,由於每次執行程式的時間都不一樣,所以產生的偽亂數也會不一樣。但是需要注意的是,基本上電腦的時間格式為yyyy:mm:dd:hh:mm:ss(西元年、月、日、時、分、秒),只有14個10進位數字,且有其規律性(比方西元年大概都是2015,而時只有00到23等少數組合),因此相當容易破解,當要在密碼學領域使用偽亂數的時候,就需要尋找更為隨機分布的亂數種子,舉例來說使用者按下鍵盤某特定按鍵的時間長度,或是分析滑鼠移動的軌跡轉等數值。
▲骰子是最典型的隨機代表,在不失一般性的情況下,丟出骰子所獲得的結果為隨機分佈。(圖片來源:維基百科,本圖採用創用CC姓名標示分享,作者為Liam Quin)
靠電子元件產生亂數
由Paul Campbell所開發的OneRNG是款特殊的亂數產生裝置,它具有2種產生亂數的方式,首先它可以透過搭載的突崩二極體(avalanche diode)產生量子雜訊(quantum noise),透過測量這些雜訊產生亂數。另一種方式就是可以透過2.4GHz頻段的RF接收器,接收Wi-Fi無線網路在內的各種訊號,當他接收訊息並解調失敗後,就會能夠收集到亂數分佈的解碼時間、訊號頻道等數值,並以這西些數據為基礎產生亂數。
OneRNG大約每秒可以產生320kbit的亂數,很適合需要建立許多SSL加密連線的網站伺服器使用,不但更加安全也可以降低處理器的負擔,如果需要更大量的亂數,也可以連接多個OneRNG提高亂數產量。
另一個值得注意的特點,就是OneRNG無論軟體或是硬體都採開源方式開發,使用者可以隨意修改所有軟體與硬體的設計。在密碼學的觀點中,「開放」不應影響加密的安全性,根據荷蘭密碼學家奧古斯特‧柯克霍夫(Auguste Kerckhoffs)提出的柯克霍夫原則,在設計軍用保密系統時,應該注意6項要點,其中包括「系統本身不應包含任何機密,即便落入敵人手中也不會影響安全性」,所以不適合將安全性建立在不透明的機構中,在設計時如果能公開機構反而有利安全性。
OneRNG已經在Kickstarter集資網站中達成募款目標,預定售價為紐西蘭幣50元(約合新台幣1,185元),預定上市時間為2015年4月。
▲OneRNG採用USB介面,具有可以透過突崩二極體與RF接收器產生亂數。(圖片來源:集資專頁)
▲OneRNG也可以同時使用2種方式產生亂數,並儲存在亂數池中備用。(圖片來源:集資專頁)
▲OneRNG的硬體與軟體都採開源方式開發,所有人都可以看到所有設計細節。(圖片來源:集資專頁)
▲使用者可以自行編寫OneRNG的軟體,設計適合自己使用的程式。(圖片來源:集資專頁)
▲寫好的程式可以直接透過傳輸線燒錄到OneRNG。(圖片來源:集資專頁)
延伸閱讀:
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!