Trng
用分組密碼調節有偏源?
我正在研究 Stallings 的《密碼學和網路安全》一書。我在加密方面自學成才,從未上過課,但我已經在工作中的硬體中實現了一些加密加速器功能,並且有興趣了解更多資訊。
第 8 章介紹了隨機位的生成。真正隨機數生成器的討論討論了偏差以及如何使用條件算法消除偏差。一種這樣的選擇是將真正的 rng 輸出饋送到諸如 AES 之類的分組密碼中。什麼?
我了解這將如何產生看似隨機的數據並通過隨機性測試。但是,如果已知輸入以某種方式存在偏差,則可以使用蠻力來嘗試重現隨機比特流。極端情況下,如果真正的 rng 很少提供 1 會怎樣。攻擊者可以在分組密碼中嘗試少量的一鍵、二鍵等密鑰,並且某些內容會匹配。
當然我錯過了一些東西……
通常,調節算法的輸出比輸入要小得多,這對於解決問題中的真正問題大有幫助:如果輸入中沒有足夠的熵,就不可能有相同長度的輸出。
作為一個使用 AES-256 的簡單範例,將 384 位輸入位串拆分為 128 位和 256 位位串,然後使用密鑰對第一個每個 AES-256 進行加密,第二個將輸出 128 位條件輸出。
如果每個輸入位至少有 0.5 位熵(對於獨立位:平均
$$ 0.11…, 0.89… $$),256位密鑰有128位熵;而 128 位塊的 64 位熵進一步使得建構一個單獨處理輸出的實用區分器變得無望。