Linux

GPG 密鑰生成器使用熵

  • May 20, 2017

我正在嘗試在 Ubuntu 16.10 上生成 GPG 密鑰,而 G​​PG 將永遠佔用。

我搜尋了一下,發現一些網站,包括 StackExchange 上的一些問題,建議執行一個熵生成器,rngd以幫助系統更快地生成隨機數。

其中一些網站還鼓勵檢查/proc/sys/kernel/random/entropy_avail,指出在他們的系統上,它在執行 GPG 之前報告了四位數的數字,在執行時報告了兩到一位數字。

我目前正在我的電腦上執行 GPG;它已經執行了至少半個小時,我得到了這個

$ cat /proc/sys/kernel/random/entropy_avail 
3644

這個數字會隨著時間的推移而增加,並且很少會少量減少(寫完這句話後,它是 3801)。我沒有執行任何隨機數生成器。實際上,如果我嘗試執行一個(例如sudo rngd -fr /dev/random,它會下降到 50 左右;如果我使用/dev/urandom它,它會保持在 3000 左右)。

誰能幫我弄清楚我的系統到底出了什麼問題?

我在 Linux 4.8.0-37-generic、gpg (GnuPG) 2.1.15、libgcrypt 1.7.2-beta 上。

在升級到 Debian 9 後,我最近遇到了類似的問題。一些依賴隨機數的程序在最近的 Linux 版本中更改了它們的原始碼/隨機生成器常式,這使得它們更加依賴於系統的熵。

安裝守護程序haveged似乎提供了一個一致的隨機數池。這樣做:

sudo apt-get install haveged

haveged現在,需要熵的不同程序都需要該守護程序,尤其是在熵通常較低的 VM 和 iOT(例如,raspberry 等)中。

來自man haveged

NAME

haveged- 生成隨機數並提供給 Linux 的隨機設備。

描述

haveged 使用 HAVEGE(硬體易失熵收集和擴展)算法從硬體事件對隱藏處理器狀態(記憶體、分支預測器、記憶體轉換錶等)的間接影響中生成不可預測的隨機數流。該算法在使用者空間執行,文件系統訪問輸出流不需要特殊權限。

Linux 匯集隨機性以通過 /dev/random/dev/urandom 設備介面進行分發。填充 /dev/random池的標準機制可能不足以滿足對具有高需求或有限使用者互動的系統的需求。在這些情況下,只要隨機位的供應低於設備的低水位線,haveged 就可以作為特權守護程序執行以填充池。/dev/random``/dev/random

引用自:https://unix.stackexchange.com/questions/346040