如何安装 pandom : 一个针对 Linux 的真随机数生成器
2017-05-19 11:22
316 查看
本教程只针对 amd64/x86_64 架构 Linux 内核版本大于等于 2.6.9 的系统。本文将解释如何安装 pandom,这是一个由 ncomputers.org 维护的定时抖动真随机数生成器。
而出于各种不同的加密目的使得对真随机数的需求持续增长,从而使得这个低吞吐量问题在 Linux 实现中变得越来越严重。
在与上述相同的物理或者虚拟环境下,并假设没有其它进程以 root 身份向
基于 Arch 的系统:
使用基于 init.d 作为初始化程序(如: upstart、sysvinit)的系统:
假如你的系统使用了一个 init.d 的实现(如: upstart、sysvinit),请运行下面的命令来安装 pandom:
假如你的系统使用
注:整个分析过程也可以在另一台电脑上完成,例如在一个笔记本电脑或台式机上。举个例子:假如你正在一个资源受到限制的 VPS 上安装 pandom 程序,或许你更倾向于将
基于 Arch 的系统:
注:你也可以将下面的以
Wheezy:
注:假如你已经在你的 Linux 中测试了 pandom , 则你可以跳过这一步。
基于 init.d 的初始化系统(如 upstart、sysvinit):
(题图:Pixabay,CC0)
via: https://www.howtoforge.com/tutorial/how-to-install-pandom-a-true-random-number-generator/
简介
在现在的计算机状况下,比如说配置了固态硬盘(SSD)的个人电脑和虚拟专用服务器(VPS)的环境中,Linux 内核内置的真随机数发生器提供的吞吐量很低。而出于各种不同的加密目的使得对真随机数的需求持续增长,从而使得这个低吞吐量问题在 Linux 实现中变得越来越严重。
在与上述相同的物理或者虚拟环境下,并假设没有其它进程以 root 身份向
/dev/random进行写操作的话,64 ubits/64 bits 的 pandom 可以以 8 KiB/s 的速率生成随机数。
1 pandom 的安装
1.1 获得 root 权限
Pandom 必须以 root 身份来安装,所以在必要的时候请运行如下命令:su -
1.2 安装编译所需的依赖
为了下载并安装 pandom,你需要 GNUas汇编器、GNU
make、GNU
tar和 GNU
wget(最后两个工具通常已被安装)。随后你可以按照你的意愿卸载它们。
基于 Arch 的系统:
基于 Debian 的系统:pacman -S binutils make
基于 Red Hat 的系统:apt-get install binutils make
基于 SUSE 的系统:dnf install binutils makeyum install binutils make
zypper install binutils make
1.3 下载并析出源码
下面的命令将使用wget和
tar从 ncomputers.org 下载 pandom 的源代码并将它们解压出来:
wget http://ncomputers.org/pandom.tar.gztar xf pandom.tar.gzcd pandom/amd64-linux
1.4 在安装前进行测试 (推荐)
这个被推荐的测试将花费大约 8 分钟的时间,它将检查内核支持情况并生成一个名为checkme的文件(在下一节中将被分析)。
make check
1.5 确定系统的初始化程序
在安装 pandom 之前,你需要知道你的系统使用的是哪个初始化程序。假如下面命令的输出中包含running,则意味着你的系统使用了
systemd,否则你的系统则可能使用了一个
init.d的实现(例如 upstart、sysvinit)。
systemctl is-system-runningrunning
1.6 安装 pandom
一旦你知道了你的系统使用何种 Linux 实现,那么你就可以相应地安装 pandom 了。使用基于 init.d 作为初始化程序(如: upstart、sysvinit)的系统:
假如你的系统使用了一个 init.d 的实现(如: upstart、sysvinit),请运行下面的命令来安装 pandom:
以 systemd 作为初始化程序的系统:make install-init.d
假如你的系统使用
systemd,则请运行以下命令来安装 pandom:
make install-systemd
2 checkme 文件的分析
在使用 pandom 进行加密之前,强烈建议分析一下先前在安装过程中生成的checkme文件。通过分析我们便可以知道用 pandom 生成的数是否真的随机。本节将解释如何使用 ncomputers.org 的 shell 脚本
entropyarray来测试由 pandom 产生的输出的熵及序列相关性。
注:整个分析过程也可以在另一台电脑上完成,例如在一个笔记本电脑或台式机上。举个例子:假如你正在一个资源受到限制的 VPS 上安装 pandom 程序,或许你更倾向于将
checkme复制到自己的个人电脑中,然后再进行分析。
2.1 获取 root 权限
entropyarray程序也必须以 root 身份来安装,所以在必要时请运行如下命令:
su -
2.2 安装编译所需的依赖
为了下载并安装entropyarray, 你需要 GNU g++ 编译器、GNU
make、GNU
tar和 GNU
wget。在随后你可以任意卸载这些依赖。
基于 Arch 的系统:
基于 Debian 的系统:pacman -S gcc make
基于 Red Hat 的系统:apt-get install g++ make
基于 SUSE 的系统:dnf install gcc-c++ makeyum install gcc-c++ make
zypper install gcc-c++ make
2.3 下载并析出源码
以下命令将使用wget和
tar从 ncomputers.org 下载到 entropyarray 的源码并进行解压:
wget http://ncomputers.org/rearray.tar.gzwget http://ncomputers.org/entropy.tar.gzwget http://ncomputers.org/entropyarray.tar.gztar xf entropy.tar.gztar xf rearray.tar.gztar xf entropyarray.tar.gz
2.4 安装 entropyarray
注:如果在编译过程中报有关-std=c++11的错误,则说明当前系统安装的 GNU g++ 版本不支持 ISO C++ 2011 标准,那么你可能需要在另一个支持该标准的系统中编译 ncomputers.org/entropy 和 ncomputers.org/rearray (例如在一个你喜爱的较新的 Linux 发行版本中来编译)。接着使用
make install来安装编译好的二进制文件,再接着你可能想继续运行
entropyarray程序,或者跳过运行该程序这一步骤,然而我还是建议在使用 pandom 来达到加密目地之前先分析一下
checkme文件。
cd rearray; make install; cd ..cd entropy; make install; cd ..cd entropyarray; make install; cd ..
2.5 分析 checkme 文件
注:64 ubits / 64 bits 的 pandom 实现所生成的结果中熵应该高于15.977且
max字段低于
70。假如你的结果与之相差巨大,或许你应该按照下面第 5 节介绍的那样增加你的 pandom 实现的不可预测性。假如你跳过了生成
checkme文件的那一步,你也可以使用其他的工具来进行测试,例如 伪随机数序列测试。
entropyarray checkmeentropyarray in /tmp/tmp.mbCopmzqsg15.977339min:12med:32max:5615.977368min:11med:32max:5815.977489min:11med:32max:5915.977077min:12med:32max:6015.977439min:8med:32max:5915.977374min:13med:32max:6015.977312min:12med:32max: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 获取 root 权限
以下的 debian 软件包必须以 root 身份来安装,所以在必要时请运行下面这个命令:su -
3.2 安装密钥
下面的 debian 软件包中包含 ncomputers.org debian 软件仓库的公匙密钥:wget http://ncomputers.org/debian/keyring.debdpkg -i keyring.debrm keyring.deb
3.3 安装软件源列表
下面这些 debian 软件包含有 ncomputers.org debian 软件仓库的软件源列表,这些软件源列表对应最新的 debian 发行版本(截至 2017 年)。注:你也可以将下面的以
#注释的行加入
/etc/apt/sources.list文件中,而不是为你的 debian 发行版本安装对应的 debian 软件包。但假如这些源在将来改变了,你就需要手动更新它们。
Wheezy:
Jessie:#deb http://ncomputers.org/debian wheezy mainwget http://ncomputers.org/debian/wheezy.debdpkg -i wheezy.debrm wheezy.deb
Stretch:#deb http://ncomputers.org/debian jessie mainwget http://ncomputers.org/debian/jessie.debdpkg -i jessie.debrm jessie.deb
#deb http://ncomputers.org/debian stretch mainwget http://ncomputers.org/debian/stretch.debdpkg -i stretch.debrm stretch.deb
3.4 升级软件源列表
一旦密钥和软件源列表安装完成,则可以使用下面的命令来更新:apt-get update
3.5 测试 pandom
测试完毕后,你可以随意卸载下面的软件包。注:假如你已经在你的 Linux 中测试了 pandom , 则你可以跳过这一步。
apt-get install pandom-testpandom-testgenerating checkme file, please wait around 8 minutes ...entropyarray in /tmp/tmp.5SkiYsYG3h15.977366min:12med:32max:5715.977367min:13med:32max:5715.977328min:12med:32max:6115.977431min:12med:32max:5915.977437min:11med:32max:5715.977298min:11med:32max:5915.977196min:10med:32max:57
3.6 安装 pandom
apt-get install pandom
4 管理 pandom
在 pandom 安装完成后,你可能想对它进行管理。4.1 性能测试
pandom 提供大约 8 kB/s 的随机数生成速率,但它的性能可能根据环境而有所差异。dd if=/dev/random of=/dev/null bs=8 count=512512+0 records in512+0 records out4096 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 的初始化系统(如 upstart、sysvinit):
以 systemd 作为初始化程序的系统:/etc/init.d/random status/etc/init.d/random start/etc/init.d/random stop/etc/init.d/random restart
systemctl status randomsystemctl start randomsystemctl stop randomsystemctl restart random
5 增强不可预测性或者性能
假如你想增加你编译的 pandom 程序的不可预测性或者性能,你可以尝试增加或删减 CPU 时间测量选项。5.1 编辑源文件
请按照自己的意愿,在源文件test.s和
tRNG.s中增加或者移除
measurement blocks字段。
#measurement blockmov $35,%raxsyscallrdtsc[...]#measurement blockmov $35,%raxsyscallrdtsc[...]
5.2 测试不可预测性
我们总是建议在使用个人定制的 pandom 实现来用于加密目地之前,先进行一些测试。make check
5.3 安装定制的 pandom
假如你对测试的结果很满意,你就可以使用下面的命令来安装你的 pandom 实现。更多额外信息及更新详见 http://ncomputers.org/pandom 。make install
(题图:Pixabay,CC0)
via: https://www.howtoforge.com/tutorial/how-to-install-pandom-a-true-random-number-generator/
相关文章推荐
- 重新安装一个linux系统后如何快速搭建可用于开发板nfs挂载根文件系统的过程
- C语言中如何写一个简单可移植而又足够随机的随机数生成器
- Linux 基础:如何在Ubuntu上检查一个软件包是否安装
- Linux下如何查看一个下载的包被安装在什么位置
- linux下如何查看一个命令的安装路径
- 如何在 Linux 中不安装软件测试一个软件包
- linux下如何为刚安装好的Eclipse在桌面建一个启动图标???(QtCreator 也可以类似去做)
- 如何在linux中用命令产生一个范围内的随机数?
- 如何在linux中用命令产生一个范围内的随机数?
- C语言中如何写一个简单可移植而又足够随机的随机数生成器
- Linux下如何为刚安装好的Eclipse在桌面建一个启动图标?
- Linux 基础:如何在Ubuntu上检查一个软件包是否安装
- linux下安装idle和运行(linux下有两个python版本如何运行其中一个)
- 如何让一个没有安装GUI环境的Linux机器访问U盘
- C语言中如何写一个简单可移植而又足够随机的随机数生成器