Rui*_*iro 5 debian random openssl
我正在使用makepasswd在 VM 中生成一堆随机密码。
升级到 Stretch/Debian 9 后,脚本要么生成一个或两个密码,然后停止,要么根本不生成。
再次生成另一个密码似乎需要相当(好)的时间。
第一次调用它:
makepasswd
ndmBXpfp3
Run Code Online (Sandbox Code Playgroud)
它按预期立即生成一个随机字符串。
第二次:
makepasswd
Run Code Online (Sandbox Code Playgroud)
它一直在那里等待……等待。
似乎makepasswd已从使用 openssl API 生成(伪)随机数更改为现在使用基于/dev/random.
问题是 VM 和 iOT(可能)活动性低,并且不会产生足够的熵来满足脚本/makepasswd从/dev/random
虽然我试图找到一个选项,让它从 中喝随机数/dev/urandom,但它没有。
所以我得到了一个旧版本的makepasswd,因为它是一个 perl 脚本,并将该脚本指向/opt/bin/makepasswd我的系统;并且脚本现在像往常一样工作,在几秒钟内生成我需要的 +100 个密码。
从源码可以看出:
新makepasswd:
my $buf = $RNG->bytes($bytes);
Run Code Online (Sandbox Code Playgroud)
旧makepasswd:
my $buf = Crypt::OpenSSL::Random::random_pseudo_bytes($bytes);
Run Code Online (Sandbox Code Playgroud)
有趣的是,版权附近的数据和版本并没有改变,这让我暂时偏离了轨道。
在他们两个中:
$Program = 'makepasswd';
$Version = '1.10';
$Author = 'Rob Levin <levin@openproject.net>';
$Date = "Monday, 7 April 1999 at 22:56 (UCT)";
$Copyright = '1997-1999';
Run Code Online (Sandbox Code Playgroud)
然而,从 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
Run Code Online (Sandbox Code Playgroud)
另一种替代解决方案是安装守护进程haveged来加速密钥生成过程,而不是修改 makepasswd 源。要安装它:
sudo apt-get install haveged
Run Code Online (Sandbox Code Playgroud)
安装后,makepasswd也可以正常工作。
haveged现在,在熵通常较低的 VM 和 iOT(例如树莓派)中需要该守护进程。
来自 Debian man haveged,:
NAME
haveged- 生成随机数并提供给 Linux 的随机设备。描述
haveged使用 HAVEGE(硬件易失性熵收集和扩展)算法生成不可预测的随机数流,该随机数流是从硬件事件对隐藏处理器状态(缓存、分支预测器、内存转换表等)的间接影响中获取的。该算法在用户空间中运行,文件系统访问输出流不需要特殊权限。
/dev/randomLinux 汇集随机性以通过和 设备接口进行分配/dev/urandom。填充池的标准机制/dev/random可能不足以满足对高需求或有限用户交互的系统的需求。在这些情况下,每当随机位的供应低于设备的低水位线时haveged,可以作为特权守护进程运行以填充池。/dev/random/dev/random
| 归档时间: |
|
| 查看次数: |
509 次 |
| 最近记录: |