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