Random-Number-Generator

gpg –gen-random 質量等級:越高“越好”嗎?

  • November 6, 2015

GNU Privacy Guard 手冊頁gpg --gen-random 0|1|2 count對使用命令有這樣的說法:

發出給定質量級別 0、1 或 2 的count隨機字節。如果**count未給出或為零,則將發出無限序列的隨機字節。如果與--armor輸出一起使用,則將進行 base64 編碼。請不要使用此命令,除非您知道自己在做什麼;它可能會從系統中移除寶貴的熵!

我想知道“質量水平”是什麼意思。2 比 0“更好”(即更隨機)嗎?一個級別比另一個級別有多少“更隨機”?

背景:我在 Linux Journal 上的一篇文章中遇到了這個命令,該文章說明了使用gpg--gen-random命令生成隨機密碼。我想擁有盡可能隨機的密碼,所以我想知道什麼“質量級別”最適合這個目的。

這是一個很難回答的問題。確切的答案只能在 的原始碼中找到gpg但是,我仍然可以使用我找到的郵件回答您的問題(從 2013 年開始,詳細資訊可能已更改)。


2 比 0“更好”(即更隨機)嗎?

是的,2 比 0 和 1“更好”。

根據連結的郵件,質量級別決定了讀取/dev/urandom/dev/random回答查詢的字節數。

正如郵件中顯示的那樣,0 和 1 實際上是相同的(這可能現在已經改變了)並且 gpg 只會用請求的新字節數來回答您的查詢/dev/urandom

2 但是不一樣。它使用/dev/random,這意味著您對輸出的質量和熵有更高的保證(因為您可能需要等待一段時間,如果這種權衡確實值得,那是另一個問題)。更重要的是,它請求的字節/dev/random數比您查詢的要多得多,即近 19 倍,並以某種方式對它們進行後處理。因此,即使/dev/random沒有為您提供高質量的隨機字節,結果的熵也很高。

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