makepasswd 在 Debian Stretch 中無法正常運作

makepasswd 在 Debian Stretch 中無法正常運作

我用來makepasswd在虛擬機器中產生一堆隨機密碼。

升級到 Stretch/Debian 9 後,該腳本要么產生一兩個密碼,然後停止,要么根本不生成。

再次產生另一個密碼似乎需要相當長的時間。

第一次調用它:

makepasswd
ndmBXpfp3

它立即按預期生成一個隨機字串。

第二次:

makepasswd

它一直在那裡等待……一直等待。

答案1

它似乎makepasswd從使用 openssl API 生成(偽)隨機數,變成了現在使用基於/dev/random.

問題是虛擬機器和物聯網(可能)活動度較低,並且無法產生足夠的熵來滿足腳本/makepasswd飲用/dev/random

雖然我試圖找到一個選項讓它從 中獲取隨機數/dev/urandom,但它沒有。

所以我只得到了一個舊版本makepasswd,因為它是一個 perl 腳本,並將該腳本指向/opt/bin/makepasswd我的系統;該腳本現在可以正常工作,在幾秒鐘內產生我需要的 +100 個密碼。

從原始碼可以看出:

新的makepasswd

 my $buf = $RNG->bytes($bytes);

老的makepasswd

 my $buf = Crypt::OpenSSL::Random::random_pseudo_bytes($bytes);

有趣的是,版權附近的數據和版本都沒有改變,這讓我一度偏離了軌道。

在他們兩個中:

$Program        = 'makepasswd';
$Version        = '1.10';
$Author         = 'Rob Levin <[email protected]>';
$Date           = "Monday, 7 April 1999 at 22:56 (UCT)";
$Copyright      = '1997-1999';

然而,從changelog.Debian.gz

Convert from Crypt::OpenSSL::Random to Bytes::Random::Secure (closes:
#792535).

 -- Colin Watson <[email protected]>  Thu, 16 Jul 2015 11:45:20 +0100

答案2

haveged另一個替代方案是安裝守護程式來加速金鑰產生過程,而不是修改 makepasswd 來源。要安裝它:

sudo apt-get install haveged

安裝後,makepasswd也可以正常運作。

haveged現在,VM 和 iOT(例如樹莓派)中需要守護進程,其中熵為通常情況下低的。

來自 Debian man haveged,:

NAME
haveged- 產生隨機數並提供給 Linux 的隨機裝置。

描述
haveged 使用HAVEGE(硬體易失性熵收集和擴展)演算法產生不可預測的隨機數流,該隨機數流是從硬體事件對隱藏處理器狀態(快取、分支預測器、記憶體轉換錶等)的間接影響中獲取的。該演算法在用戶空間中運行,檔案系統存取輸出流不需要特殊權限。

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

相關內容