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

相关内容