Debian Stretch で makepasswd が正しく動作しない

Debian Stretch で makepasswd が正しく動作しない

makepasswdVM 内でランダムなパスワードを大量に生成するために使用しています。

Stretch/Debian 9 にアップグレードすると、スクリプトは 1 つまたは 2 つのパスワードを生成して停止するか、まったく生成しなくなります。

別のパスワードを再度生成するには、かなり時間がかかるようです。

初めて呼び出す場合:

makepasswd
ndmBXpfp3

予想どおりにランダムな文字列がすぐに生成されます。

2回目:

makepasswd

そしてそれはそこで待ち続けます...そして待ち続けます。

答え1

makepasswd(疑似)乱数を生成するために openssl API を使用する方法から、現在は に基づく API を使用する方法に変更されたようです/dev/random

問題は、VMとIoTのアクティビティが低く、スクリプトを満たすのに十分なエントロピーを生成できないことです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

もう 1 つの代替ソリューションは、makepasswd ソースを変更する代わりに、デーモンをインストールしてhavegedキー生成プロセスを高速化することです。インストールするには、次の手順を実行します。

sudo apt-get install haveged

インストール後makepasswdも正常に動作します。

デーモンhavegedは、エントロピーが重要なVMやIoT(ラズベリーなど)で必要になります。通常は低い。

Debian からman haveged:

NAME
haveged- 乱数を生成し、Linux のランダム デバイスに入力します。

説明は
haveged 、HAVEGE (HArdware Volatile Entropy Gathering and Expansion) アルゴリズムを使用して、隠れたプロセッサ状態 (キャッシュ、分岐予測子、メモリ変換テーブルなど) に対するハードウェア イベントの間接的な影響から収集された予測不可能な乱数ストリームを生成します。このアルゴリズムはユーザー空間で動作し、出力ストリームへのファイル システム アクセスに特別な権限は必要ありません。

/dev/randomLinux は、および デバイス インターフェイスによる配布用にランダム性をプールします /dev/urandom 。プールを埋める標準的なメカニズム /dev/randomでは、ニーズが高いシステムやユーザー操作が限られているシステムの需要を満たすのに十分でない場合があります。そのような状況では、デバイスのランダム ビットの供給が最低水準点を下回るたびに、haveged を特権デーモンとして実行してプールを埋めることができます。/dev/random/dev/random

関連情報