Debian

makepasswd 在 Debian Stretch 中無法正常工作

  • February 13, 2018

我正在使用makepasswd在 VM 中生成一堆隨機密碼。

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

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

第一次呼叫它:

makepasswd
ndmBXpfp3

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

第二次:

makepasswd

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

另一種替代解決方案是安裝守護程序haveged以加快密鑰生成過程,而不是修改 makepasswd 源。要安裝它:

sudo apt-get install haveged

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

現在,在熵通常較低haveged的虛擬機和物聯網(例如樹莓)中需要該守護程序。

來自 Debian man haveged,:

NAME

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

描述

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

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

似乎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 <levin@openproject.net>';
$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 <cjwatson@debian.org>  Thu, 16 Jul 2015 11:45:20 +0100

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