如何生成一個好的對稱密鑰
我想生成一個好的密鑰,稍後將用於對稱加密數據。我不確定如何生成一個好的密鑰。
我使用 Linux,我不確定有哪些熵源。現在的想法如下:我可以使用它訪問目前時間戳和種子 PRNG 以獲得一些偽隨機值 R。將此 R 輸入一些 KDF,例如 HKDF 並將結果用作對稱密鑰。這樣的方案是否存在一些漏洞?
如果您可以訪問 Linux 機器,則不需要任何奇怪的熵或時間戳來源。它已經在那裡,安全地內置了。只需執行以下操作:-
dd if=/dev/random of=random_bits bs=1 count=32 iflag=fullblock
在您使用機器幾分鐘後。用法很重要,因為它會讀取您的 I/O 活動並從中安全地提取資訊熵。您將在名為
random_bits
. 這是在沒有單獨的 TRNG 硬體的情況下使用 TRNG 最接近的方法 PC 是硬體。鑰匙將與您所見的一樣好。然後只需在您的設備中進行硬編碼。您可以通過以下方式查看它們:-
xxd random_bits
硬編碼在零售/消費設備中非常常見,您家中會有好幾個(智能門鈴、智能電視、錄像機、寵物 ID 等)。它不像密鑰交換那樣安全(或複雜),但它會可能會。
dd: https ://www.geeksforgeeks.org/dd-command-linux/
/dev/random:https://askubuntu.com/questions/192203/how-to-use-dev-urandom _
xxd:http ://www.tutorialspoint.com/unix_commands/xxd.htm
請注意,此答案與此問題的一次性/少數鍵要求特別相關。更頻繁的密鑰請求可能會導致 /dev/random 阻塞。然而,有趣的是,我每小時僅處理我的電子郵件(在 Ubuntu 18 上)就可以獲得約 56kbits 的輸出。