Bob 如何快速隨機生成數千個字母,同時大大降低洩露風險?
Bob 想要生成 4000 個英文字母作為適當的一次性便箋簿,而無需借助手擲骰子,儘管有這些優勢。擲骰子太慢太累了。
Bob 不信任市售的 TRNG 軟體,他希望監督該過程。儘管如此,他仍然希望使用電腦來提高速度和易用性,使用一些附加設備(通過 USB)和感測器執行和記錄隨機數生成。
這台氣隙電腦上的軟體將是TAILS。假設硬體或軟體受到損害。如果是這樣,這將無關緊要(或者可以嗎?)Bob 認為,因為他將控制參數並從頭到尾時刻觀察隨機數生成過程,然後分析結果。他不想要一個僅僅吐出一個他應該信任的完整文件的過程。
密鑰生成的速度應該是:不能太慢,不能太快,目測剛剛好。
如上所述,Bob 可以使用哪些簡單、廉價的設備和軟體在非笨重的電腦上以比擲骰子更快、更容易的方式生成高質量的隨機數?對手,被動和主動地運作,高度參與,資源豐富且敏捷。
如果您可以生成隨機數,則可以進行私人對話。——惠特菲爾德迪菲
這個想法是使用一個不能、不會、也從來沒有接觸過網路的氣隙電腦。它必須消除任何可能與密鑰生成相關的元內容;它必須是低成本的;硬體和軟體必須是通用的;必須減少或消除偏見;顛覆或對它進行主動攻擊必須非常困難且成本高昂——這是一個主要目標,一個起點;最重要的是,它必須比擲骰子非常簡單和快速。
目標是解決一次性密鑰生成的棘手問題。
創建一些帶有條碼的六面骰子,編號為 1 到 6。找到一個條碼掃描器。使用 OpenOffice Calc 或具有您在上圖中看到的功能的類似程序(或根據您認為合適的方式對其進行更改)。當您掃描骰子時,文件將填充 A 列。停止並填充 B 列。一次性填充值將在 C 列中彈出。有三十個左右的骰子,一個帶蓋的鞋盒,大量的搖晃,和一個手持式條碼掃描器,你可以比擲骰子更快地生成墊料。
- 擲硬幣 256 次並將結果寫為 tthttttthhhtthhtttht……。
- 通過您最喜歡的現代 KDF(例如 HKDF-SHA256 或 SHAKE128,或 SHA-256 後跟 ChaCha)將其擴展為 4000 個字元。
(使用 KDF 或散列首先消除拋硬幣的任何輕微不均勻性。) 3. 您可以通過在另一台電腦上重做計算來驗證計算是否正確完成,這比您可能用於採樣的任何特定設備都多。
如果您願意,您可以替換骰子:擲骰子 50 次並將結果寫為 52632113351226463416…。無論哪種方式,破壞該系統的成本都將大大高於您直接從物理觀察中對所有 4000 個字元進行採樣的任何笨拙的計劃。
或者:聘請Raphael Weldon,他顯然比你或我需要更長的時間才能感到無聊。但要小心,因為他的骰子顯然有點偏頗——正如卡爾·皮爾森發明了統計領域來確定(免付費牆)。