Trng

合理地“清洗”受感染的 TRNG 有多少隨機性?

  • August 20, 2021

假設我有一個生成的物理 RNG 模組 $ n $ -通過隨機性測試的位隨機數,例如 Dieharder 套件。由於它是一個具有未知隨機源的黑盒設備,我們還假設它可能被部分破壞:知道 RNG 模組工作原理的攻擊者,給定一個先前的狀態,可以正確猜測下一個狀態 $ 2^{n-m} $ 步驟 $ 1 \leq m \leq n $ .

讓我們也假設我可以訪問另一個,可驗證的不妥協但質量差的熵源 $ x - p $ 每個熵位 $ x $ 輸出位 $ 0 < p < x $ . 我們還假設這個熵源比前面提到的 RNG 模組慢得多。

  1. 要“清洗”第一個 RNG 源,使其產生真正不可預測的數字,我需要做多少工作?
  • 取消效果 $ m $ 在輸出數上,我必須從熵源中提取和提供多少位熵?
  • 我必須執行哪些操作來確保我不會得到洩露的號碼?使用加密安全散列函式進行連接 + 散列會“成功”嗎?
  • 相反,如果我想“洗掉”篡改,我必須避免哪些操作?
  • 我需要做多少截斷?
  1. 假如說 $ m $ 足夠大/接近 $ n $ ,最好從第二個源中提取隨機位並將它們連接成一個數字,繞過潛在受損模組的使用?

我的假設:

  1. 我將不得不使用 $ m $ 位不妥協的隨機輸出,將其與第一個輸出連接並對其進行雜湊處理。如果我不確切知道哪些位被洩露,或者我不知道哪個位被洩露的機率,我認為截斷連接的輸出或輸入數字不會有太大幫助。在應用雜湊之前,我應該避免對輸入進行異或。
  2. 我認為“洗錢”是合理的 $ m = n/2 $ ,除此之外,我可能應該只從第二個源中提取隨機性並將隨機位連接成一個 $ n $ - 位數,完全繞過可能受損的模組。

轉儲 TRNG1。RC4 和 Marsienne Twister 都通過了 Dieharder。

這是加密貨幣,就像懷孕一樣,沒有“一點”妥協的概念。如果它被破壞了,你可以在幾個步驟中預測下一個輸出,如果它是從等時間播種的(常見的),沒關係 $ 2^{da, da ,da}. $ 計算不可區分性意味著除非您自己建構 RNG,否則您永遠不會發現它實際上在做什麼。因此擺脫它。(或者假裝使用它,但這有點嚴重)。

您不會連接來自 TRNG2 的位。您將熵測量為 $ 1 - \epsilon $ 位/位(潛在的蠕蟲罐頭)。 $ \epsilon $ 是“貧窮”指標;偏離完美隨機性的偏差。然後使用 Toeplitz 矩陣、標準散列(Pearson、CRC16、SHAx)、通用散列函式等標準技術從 TRNG2 中提取,或者如果幸運的話,只需 von Neumann。速度將取決於 $ \epsilon $ .

引用自:https://crypto.stackexchange.com/questions/93650