Random-Number-Generator
安全隨機性的家庭來源?
在我的家裡,我有一枚硬幣。我可以用那個硬幣來生成隨機位。這些位大多是安全的,除非有人看著我翻轉它。他們也只是隨機的……也許我是一個“壞腳蹼”?
我也有電腦。我可以用它來生成有點隨機的位,但不是真的。如果您信任算法和機器,這些都是安全的。/聳聳肩
我想用我手頭的材料生成隨機數,並確保它們的安全。在安全性或隨機性方面,我能比拋硬幣做得更好嗎?
基於PC;
- 如果您
/dev/urandom
在 Linux 或Windows 上使用它們,您可以使用它們在離線系統file:/dev/urandom
中導出隨機性。像 Python 這樣的程式語言有一個模組密碼,可以訪問系統的安全隨機性。請參閱其他程式語言文件。
使用時要小心,
/dev/random
它有一些細節需要考慮。而且,如果程序要求您,請不要成為派生隨機性的猴子。
物理對象
- 熔岩燈
- 6面或24面骰子。
- 正如Kodlu在評論中所說的魚缸。
- 老實說,如果你有這樣的拋硬幣機,拋硬幣是顯而易見的選擇
- 白雜訊電視- 可能需要特別注意;
- 來自頻道的隨機圖片;用於電影 Johnny Mnemonic。
額外的體力
- 如果你有足夠的錢、熱情和知識,你也可以使用基於 Quantum 的隨機數生成器。
以心靈為基礎
- 成為俄羅斯人來生成(不是真正的)隨機數。他們曾經為 OTP 密鑰生成。
- 請記住,人類不擅長生成隨機數。
我建議除非你特別偏執並且不信任現代密碼算法,如塊和流密碼或雜湊,否則你應該使用你的 PC。這是迄今為止最簡單的方法。
它要麼具有
\dev\urandom
*nix 機器,要麼具有來自新 Windows(Windows Server 2008 和 Windows Vista 及更高版本)的隨機數生成器Cryptography API: Next Generation (CNG)。許多程式語言將這兩個源包裝成更易於使用的函式/庫。兩者都是偽隨機數生成器,提供完全可接受的安全級別。而且它們的輸出幾乎是無窮無盡的,因此對於所有非一次性墊應用程序來說應該足夠了。計算不可區分性意味著將它們的輸出與真正的隨機分佈區分開來是不可行的。
如果你是錫紙帽型(我是),我建議你複習一下隨機數生成器、隨機性和一次性填充標籤。該案例涉及太多,無法作為單個通用答案發布。