什麼是真隨機數生成器?
真隨機數生成器 (TRNG) 使用非確定性源來產生隨機性。大多數透過測量不可預測的自然過程來實現,包括電離輻射活動的脈衝檢測器、氣體放電管和漏電電容器。
英特爾開發了一種商業上可用的晶片,透過測量未驅動電阻器兩端的電壓來取樣熱噪聲。TRNG 生成真隨機數,通常透過硬體方法產生。
由於 TRNG 產生的隨機數難以預測,因為 TRNG 基於難以預測隨機值的物理源。因此,TRNG 產生的隨機數是一種安全的方法,因為很難生成相同的數值。
以下是一些可能的隨機性來源,如果小心謹慎,可以簡單地用於計算機上生成真隨機序列。
聲音/影片輸入 - 許多計算機都配備了將某些現實世界模擬源數字化為輸入的裝置,包括來自麥克風的聲音或來自攝像機的影片輸入。
未插入任何裝置的聲音數字化儀的“輸入”,或鏡頭蓋蓋上的攝像機的“輸入”,基本上是熱噪聲。如果系統具有足夠的增益來檢測任何東西,則此類輸入可以支援相當高質量的隨機位。
磁碟驅動器 - 已知磁碟驅動器由於混沌氣流而導致其旋轉速度存在小的隨機波動。低階磁碟尋道時間儀器的擴充套件建立了一系列包含此隨機性的測量值。
此類資料通常高度相關,因此需要進行大量的處理。然而,十年前的實驗表明,透過這種處理,即使在那一天較慢的計算機上的慢速磁碟驅動器也可以輕鬆地每分鐘建立 100 位或更多優秀的隨機資訊。
TRNG 可以產生以某種方式有偏差的輸出,包括 1 比 0 多或反之亦然。已經開發出各種改變位元流以減少或消除偏差的方法。這些被稱為去偏演算法。
一種去偏的方法是將位元流透過雜湊函式。雜湊函式從任意長度的輸入建立 n 位輸出。對於去偏,可以將 m 個輸入位(其中 m ≥ n)的塊透過雜湊函式。
TRNG 太單調乏味,並且大量的偽隨機數生成器(公式)可用。TRNG 可以使用諸如物理或非物理噪聲源。
在邏輯器件中,物理噪聲源非常有限,因為邏輯器件應該始終處於清晰的狀態。它可以生成隨機數,並且需要一個不可控的隨機現象。
邏輯器件中通常用於生成隨機數的物理現象如下:
時鐘抖動 - 這是時鐘邊緣與其理想位置的偏差。
亞穩態 - 這是電路能夠在不確定的時間段內持續處於不穩定狀態的能力。
混沌 - 這是確定性系統的不可預測行為,它對其初始條件高度敏感。
模擬訊號 - 模擬訊號包括二極體的散粒噪聲、熱噪聲等。