本教程适用于大于等于2.6.9的amd64 / x86_64 linux内核版本。 它解释了如何安装pandom :由ncomputers.org维护的定时抖动真随机数发生器
介绍
内置的Linux内核真随机数生成器在现代情况下提供了低吞吐量,例如:具有固态硬盘(SSD)和虚拟专用服务器(VPS)的个人计算机。
这个问题在linux实现中变得越来越流行,因为对于真正的随机数的需求不断增加,主要是通过不同的加密目的。
Pandom输出大约8位KiB / s熵64位/ 64位,与物理和虚拟环境兼容,并假设没有其他作为root用户运行的进程写入/ dev / random。
1安装pandom
1.1获得根访问权限
Pandom必须以root身份安装,如果需要,请运行此命令。
su -
1.2安装构建依赖项
为了下载和安装pandom,您需要:GNU 作为 sembler,GNU make ,GNU tar和GNU wget (最后两个通常已经安装)。 您可以随意卸载它们。
拱形系统
pacman -S binutils make
基于Debian的系统
apt-get install binutils make
基于红帽的系统
dnf install binutils make
yum install binutils make
基于SUSE的系统
zypper install binutils make
1.3下载并提取资料
这些命令使用wget和tar从ncomputers.org下载并提取pandom的源码。
wget http://ncomputers.org/pandom.tar.gz
tar xf pandom.tar.gz
cd pandom/amd64-linux
1.4安装前的测试(推荐)
这个推荐的测试大约需要8分钟。 它检查内核支持,并生成一个名为checkme的文件(在下一节分析)。
make check
1.5确定init系统
在安装pandom之前,您需要知道系统使用哪个init软件。 如果以下命令输出运行的字,则表示您的系统正在使用systemd ,否则可能是系统正在使用init.d实现(例如:upstart,sysvinit)。 可能有一些例外,这些unix.stackexchange.com答案中有更多的信息。
systemctl is-system-running
running
1.6安装熊猫
一旦你知道你的linux实现使用哪个系统,那么你可以相应地安装pandom。
基于init.d的init系统(例如:upstart,sysvinit)
如果您的系统正在使用init.d实现(例如:upstart,sysvinit),请安装运行此命令的pandom。
make install-init.d
systemd作为init系统
如果您的系统正在使用systemd ,请安装运行此命令的pandom。
make install-systemd
2检查文件分析
在使用pandom进行加密之前,强烈建议在本教程前一部分中分析在安装过程中生成的checkme文件。 这个任务对于知道数字是否真的是随机的是有用的。 本节介绍如何使用ncomputers.org/ entropyarray来分析checkme文件:一个shell脚本,用于测试其输入的熵和串行相关性。
注意 :此分析可能会在另一台计算机上运行,如笔记本电脑或台式机。 例如:如果您在受限资源虚拟专用服务器(VPS)中安装pandom,则可以选择将checkme文件复制到个人计算机,以便在那里进行分析。
2.1获得根访问权限
Entropyarray必须以root身份安装,如果需要,请运行此命令。
su -
2.2安装构建依赖项
为了下载和安装entropyarray,您需要:GNU g ++编译器,GNU make ,GNU tar和GNU wget (最后两个通常已经安装)。 您可以随意卸载它们。
拱形系统
pacman -S gcc make
基于Debian的系统
apt-get install g++ make
基于红帽的系统
dnf install gcc-c++ make
yum install gcc-c++ make
基于SUSE的系统
zypper install gcc-c++ make
2.3下载并提取资料
这些命令使用wget和tar从ncomputers.org下载并提取entropyarray的来源。
wget http://ncomputers.org/rearray.tar.gz
wget http://ncomputers.org/entropy.tar.gz
wget http://ncomputers.org/entropyarray.tar.gz
tar xf entropy.tar.gz
tar xf rearray.tar.gz
tar xf entropyarray.tar.gz
2.4安装entropyarray
注意 :关于-std = c ++ 11的错误意味着GNU g ++编译器版本不支持ISO C ++ 2011标准。 您可以尝试在支持它的另一个系统中编译ncomputers.org/ 熵和ncomputers.org/ rearray (例如:在最喜欢的linux发行版的较新版本中使用GNU g ++),然后使用系统中的make install安装编译的二进制文件想要运行entropyarray ,或跳过这一步,尽管强烈建议您在使用pandom进行任何加密目的之前分析checkme文件。
cd rearray; make install; cd ..
cd entropy; make install; cd ..
cd entropyarray; make install; cd ..
2.5分析检查文件
注意 :64 ubits / 64位pandom实现应该导致这个测试,熵高于15.977 , 最大频率低于70 。 如果您的结果差异太大,您可能会尝试增加您的pandom实现的不可预测性,如本教程第五部分所述。 如果您跳过最后一步,您可以使用其他工具,如伪随机数序列测试 。
entropyarray checkme
entropyarray in /tmp/tmp.mbCopmzqsg
15.977339
min:12
med:32
max:56
15.977368
min:11
med:32
max:58
15.977489
min:11
med:32
max:59
15.977077
min:12
med:32
max:60
15.977439
min:8
med:32
max:59
15.977374
min:13
med:32
max:60
15.977312
min:12
med:32
max:67
2.6卸载entropyarray(可选)
如果您打算不再使用entropyarray,那么您可能希望随意卸载它。
cd entropyarray; make uninstall; cd ..
cd entropy; make uninstall; cd ..
cd rearray; make uninstall; cd ..
3使用debian存储库安装
如果您希望在您的基于debian的系统上更新pandom,您可以选择使用ncomputers.org debian存储库安装/重新安装。
3.1获得根访问权限
以下debian软件包必须以root身份安装,如果需要,请运行此命令。
su -
3.2安装密钥环
这个debian软件包包括ncomputers.org debian存储库的公共密钥。
wget http://ncomputers.org/debian/keyring.deb
dpkg -i keyring.deb
rm keyring.deb
3.3安装源列表
这些debian软件包包括根据最新debian发行版(2017年)的ncomputers.org debian存储库的源列表。
注意 :还可以在/etc/apt/sources.list中写下以下注释行,而不是为您的debian发行版安装相应的debian软件包,但是如果以后这些资源发生变化,那么您需要更新它们手动
会议
#deb http://ncomputers.org/debian wheezy main
wget http://ncomputers.org/debian/wheezy.deb
dpkg -i wheezy.deb
rm wheezy.deb
杰西
#deb http://ncomputers.org/debian jessie main
wget http://ncomputers.org/debian/jessie.deb
dpkg -i jessie.deb
rm jessie.deb
伸展
#deb http://ncomputers.org/debian stretch main
wget http://ncomputers.org/debian/stretch.deb
dpkg -i stretch.deb
rm stretch.deb
3.4更新源列表
一旦安装了密钥环和源列表。
apt-get update
3.5测试熊猫
经过测试,您可以随意卸载下列软件包。
注意 :如果您已经在linux实现中测试了pandom,可以跳过此步骤。
apt-get install pandom-test
pandom-test
generating checkme file, please wait around 8 minutes ...
entropyarray in /tmp/tmp.5SkiYsYG3h
15.977366
min:12
med:32
max:57
15.977367
min:13
med:32
max:57
15.977328
min:12
med:32
max:61
15.977431
min:12
med:32
max:59
15.977437
min:11
med:32
max:57
15.977298
min:11
med:32
max:59
15.977196
min:10
med:32
max:57
3.6安装熊猫
apt-get install pandom
4管理熊猫
安装pandom之后,您可能需要管理它。
4.1性能测试
Pandom每秒提供约8千字节,但其性能可能因环境而异。
dd if=/dev/random of=/dev/null bs=8 count=512
512+0 records in
512+0 records out
4096 bytes (4.1 kB, 4.0 KiB) copied, 0.451253 s, 9.1 kB/s
4.2熵和串行相关检验
除了ncomputers.org/ entropyarray 之外 ,还有更多的测试,例如Ilja Gerhardt的NIST测试。
entropyarray /dev/random 1M
4.3系统服务
Pandom作为系统服务运行。
基于init.d的init系统(例如:upstart,sysvinit)
/etc/init.d/random status
/etc/init.d/random start
/etc/init.d/random stop
/etc/init.d/random restart
systemd作为init系统
systemctl status random
systemctl start random
systemctl stop random
systemctl restart random
5增加不可预测性或性能
如果您想尝试增加您的pandom实现的不可预测性或性能,您可以尝试添加或删除CPU时间测量。
5.1编辑源文件
在源文件test.s和tRNG.s中随意添加或删除测量块。
#measurement block
mov $35,%rax
syscall
rdtsc
[...]
#measurement block
mov $35,%rax
syscall
rdtsc
[...]
5.2测试不可预测性
我们建议在将其用于加密目的之前,始终测试任何个性化的pandom实现。
make check
5.3安装个性化的pandom
如果您对结果感到满意,那么您可以安装个性化的pandom实现。
make install
附加信息和更新: http : //ncomputers.org/pandom