Encryption

隨機性在創建密鑰中的重要性

  • May 26, 2020

為什麼在密鑰生成過程中使用什麼樣的隨機數生成很重要?

例如這個答案狀態7-8 words selected truly at random make a strong password。我的問題在於這裡的“真實”。我的想法是——無論我用什麼隨機數生成器選擇了任何密鑰,之後資訊都不可用,攻擊者永遠無法知道我使用了哪個隨機數生成器,所以他不能用它來破解密鑰。另一方面,我可以使用“只是計數”或超級複雜的硬體生成器,兩者都可能會提出“12345678”作為鍵。當然,攻擊者會從嘗試“111111”或“3456789”之類的密鑰開始,因此他會在“93298762”之前破解“12345678”,但“使用好的隨機數生成器”或“真正隨機選擇”並不意味著我不能將“12345678”作為密鑰。

當人類生成隨機密鑰時,存在一些偏差。例如,在您的範例“93298762”中,只有 2 個轉折點,通常應該有 4 個(您可以爭辯說它是一個單一的序列,而且還不足以認真談論統計數據,但儘管如此……)

即使攻擊者不知道您使用的是什么生成器,他首先(在字典之後)檢查人類將生成的密鑰也是有意義的。這基本上減少了熵,從而減少了暴力破解密鑰所需的資源。這就是為什么生成器有很多熵很重要。

在可能有人參與的情況下,例如密碼生成,一個好的生成器將消除由人生成的機率相對較高的密鑰(字典密鑰,具有人類特定異常的密鑰)。這就是為什麼當這樣的生成器生成一個密鑰“12345678”時,它會消除它並繼續生成,直到人工生成的密鑰的可能性低於某個門檻值。

在某些情況下,真正隨機是必要的;例如,在密鑰交換協議的一部分期間,永久主密鑰用於加密成本較低的會話密鑰以發送過來。

如果密鑰生成過程是“確定性的”,那麼攻擊者可能會猜測我們將使用的下一個會話密鑰,或者甚至可能操縱使用者選擇他們選擇的會話密鑰。

編輯:順便說一句,以偽隨機生成為例。發現和重現偽隨機序列所需的只是用於生成它的算法和初始種子。因此,整個數字序列僅與“隨機”選擇的部分一樣強大 - 但給定的種子將始終確定相同的偽隨機數!

看:

隨機 V 偽隨機

用於加密應用程序的隨機數的生成和測試

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