如何安装 pandom : 一个针对 Linux 的真随机数生成器

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

本教程只针对 amd64/x86_64 架构 Linux 内核版本大于等于 2.6.9 的系统。本文将解释如何安装 pandom,这是一个由 ncomputers.org 维护的定时抖动真随机数生成器。

简介

在现在的计算机状况下,比如说配置了固态硬盘(SSD)的个人电脑和虚拟专用服务器(VPS)的环境中,Linux 内核内置的真随机数发生器提供的吞吐量很低。

而出于各种不同的加密目的使得对真随机数的需求持续增长,从而使得这个低吞吐量问题在 Linux 实现中变得越来越严重。

在与上述相同的物理或者虚拟环境下,并假设没有其它进程以 root 身份向 /dev/random 进行写操作的话,64 ubits/64 bits 的 pandom 可以以 8 KiB/s 的速率生成随机数。

1 pandom 的安装

1.1 获得 root 权限

Pandom 必须以 root 身份来安装,所以在必要的时候请运行如下命令:

 
  1. su -

1.2 安装编译所需的依赖

为了下载并安装 pandom,你需要 GNU as 汇编器、GNU make、GNU tar 和 GNU wget (最后两个工具通常已被安装)。随后你可以按照你的意愿卸载它们。

基于 Arch 的系统:

 
  1. pacman -S binutils make

基于 Debian 的系统:

 
  1. apt-get install binutils make

基于 Red Hat 的系统:

 
  1. dnf install binutils make
  2. yum install binutils make

基于 SUSE 的系统:

 
  1. zypper install binutils make

1.3 下载并析出源码

下面的命令将使用 wget 和 tar 从 ncomputers.org 下载 pandom 的源代码并将它们解压出来:

 
  1. wget http://ncomputers.org/pandom.tar.gz
  2. tar xf pandom.tar.gz
  3. cd pandom/amd64-linux

1.4 在安装前进行测试 (推荐)

这个被推荐的测试将花费大约 8 分钟的时间,它将检查内核支持情况并生成一个名为 checkme 的文件(在下一节中将被分析)。

 
  1. make check

1.5 确定系统的初始化程序

在安装 pandom 之前,你需要知道你的系统使用的是哪个初始化程序。假如下面命令的输出中包含 running,则意味着你的系统使用了 systemd,否则你的系统则可能使用了一个 init.d 的实现(例如 upstart、sysvinit)。

 
  1. systemctl is-system-running
  2. running

1.6 安装 pandom

一旦你知道了你的系统使用何种 Linux 实现,那么你就可以相应地安装 pandom 了。

使用基于 init.d 作为初始化程序(如: upstart、sysvinit)的系统:

假如你的系统使用了一个 init.d 的实现(如: upstart、sysvinit),请运行下面的命令来安装 pandom:

 
  1. make install-init.d

以 systemd 作为初始化程序的系统:

假如你的系统使用 systemd,则请运行以下命令来安装 pandom:

 
  1. make install-systemd

2 checkme 文件的分析

在使用 pandom 进行加密之前,强烈建议分析一下先前在安装过程中生成的 checkme 文件。通过分析我们便可以知道用 pandom 生成的数是否真的随机。本节将解释如何使用 ncomputers.org 的 shell 脚本entropyarray 来测试由 pandom 产生的输出的熵及序列相关性。

:整个分析过程也可以在另一台电脑上完成,例如在一个笔记本电脑或台式机上。举个例子:假如你正在一个资源受到限制的 VPS 上安装 pandom 程序,或许你更倾向于将 checkme 复制到自己的个人电脑中,然后再进行分析。

2.1 获取 root 权限

entropyarray 程序也必须以 root 身份来安装,所以在必要时请运行如下命令:

 
  1. su -

2.2 安装编译所需的依赖

为了下载并安装 entropyarray, 你需要 GNU g++ 编译器、GNU make、GNU tar 和 GNU wget。在随后你可以任意卸载这些依赖。

基于 Arch 的系统:

 
  1. pacman -S gcc make

基于 Debian 的系统:

 
  1. apt-get install g++ make

基于 Red Hat 的系统:

 
  1. dnf install gcc-c++ make
  2. yum install gcc-c++ make

基于 SUSE 的系统:

 
  1. zypper install gcc-c++ make

2.3 下载并析出源码

以下命令将使用 wget 和 tar 从 ncomputers.org 下载到 entropyarray 的源码并进行解压:

 
  1. wget http://ncomputers.org/rearray.tar.gz
  2. wget http://ncomputers.org/entropy.tar.gz
  3. wget http://ncomputers.org/entropyarray.tar.gz
  4. tar xf entropy.tar.gz
  5. tar xf rearray.tar.gz
  6. tar 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 文件。

 
  1. cd rearray; make install; cd ..
  2. cd entropy; make install; cd ..
  3. cd entropyarray; make install; cd ..

2.5 分析 checkme 文件

:64 ubits / 64 bits 的 pandom 实现所生成的结果中熵应该高于 15.977 且 max 字段低于 70。假如你的结果与之相差巨大,或许你应该按照下面第 5 节介绍的那样增加你的 pandom 实现的不可预测性。假如你跳过了生成 checkme 文件的那一步,你也可以使用其他的工具来进行测试,例如 伪随机数序列测试

 
  1. entropyarray checkme
  2. entropyarray in /tmp/tmp.mbCopmzqsg
  3. 15.977339
  4. min:12
  5. med:32
  6. max:56
  7. 15.977368
  8. min:11
  9. med:32
  10. max:58
  11. 15.977489
  12. min:11
  13. med:32
  14. max:59
  15. 15.977077
  16. min:12
  17. med:32
  18. max:60
  19. 15.977439
  20. min:8
  21. med:32
  22. max:59
  23. 15.977374
  24. min:13
  25. med:32
  26. max:60
  27. 15.977312
  28. min:12
  29. med:32
  30. max:67

2.6 卸载 entropyarray (可选)

假如你打算不再使用 entropyarray,那么你可以按照你自己的需求卸载它:

 
  1. cd entropyarray; make uninstall; cd ..
  2. cd entropy; make uninstall; cd ..
  3. cd rearray; make uninstall; cd ..

3 使用 debian 的软件仓库来进行安装

假如你想在你基于 debian 的系统中让 pandom 保持更新,则你可以使用 ncomputers.org 的 debian 软件仓库来安装或者重新安装它。

3.1 获取 root 权限

以下的 debian 软件包必须以 root 身份来安装,所以在必要时请运行下面这个命令:

 
  1. su -

3.2 安装密钥

下面的 debian 软件包中包含 ncomputers.org debian 软件仓库的公匙密钥:

 
  1. wget http://ncomputers.org/debian/keyring.deb
  2. dpkg -i keyring.deb
  3. rm keyring.deb

3.3 安装软件源列表

下面这些 debian 软件包含有 ncomputers.org debian 软件仓库的软件源列表,这些软件源列表对应最新的 debian 发行版本(截至 2017 年)。

:你也可以将下面的以 # 注释的行加入 /etc/apt/sources.list 文件中,而不是为你的 debian 发行版本安装对应的 debian 软件包。但假如这些源在将来改变了,你就需要手动更新它们。

Wheezy:

 
  1. #deb http://ncomputers.org/debian wheezy main
  2. wget http://ncomputers.org/debian/wheezy.deb
  3. dpkg -i wheezy.deb
  4. rm wheezy.deb

Jessie:

 
  1. #deb http://ncomputers.org/debian jessie main
  2. wget http://ncomputers.org/debian/jessie.deb
  3. dpkg -i jessie.deb
  4. rm jessie.deb

Stretch:

 
  1. #deb http://ncomputers.org/debian stretch main
  2. wget http://ncomputers.org/debian/stretch.deb
  3. dpkg -i stretch.deb
  4. rm stretch.deb

3.4 升级软件源列表

一旦密钥和软件源列表安装完成,则可以使用下面的命令来更新:

 
  1. apt-get update

3.5 测试 pandom

测试完毕后,你可以随意卸载下面的软件包。

:假如你已经在你的 Linux 中测试了 pandom , 则你可以跳过这一步。

 
  1. apt-get install pandom-test
  2. pandom-test
  3. generating checkme file, please wait around 8 minutes ...
  4. entropyarray in /tmp/tmp.5SkiYsYG3h
  5. 15.977366
  6. min:12
  7. med:32
  8. max:57
  9. 15.977367
  10. min:13
  11. med:32
  12. max:57
  13. 15.977328
  14. min:12
  15. med:32
  16. max:61
  17. 15.977431
  18. min:12
  19. med:32
  20. max:59
  21. 15.977437
  22. min:11
  23. med:32
  24. max:57
  25. 15.977298
  26. min:11
  27. med:32
  28. max:59
  29. 15.977196
  30. min:10
  31. med:32
  32. max:57

3.6 安装 pandom

 
  1. apt-get install pandom

4 管理 pandom

在 pandom 安装完成后,你可能想对它进行管理。

4.1 性能测试

pandom 提供大约 8 kB/s 的随机数生成速率,但它的性能可能根据环境而有所差异。

 
  1. dd if=/dev/random of=/dev/null bs=8 count=512
  2. 512+0 records in
  3. 512+0 records out
  4. 4096 bytes (4.1 kB, 4.0 KiB) copied, 0.451253 s, 9.1 kB/s

4.2 熵和序列相关性检验

除了 ncomputers.org/entropyarray,还存在更多的测试,例如 Ilja Gerhardt 的 NIST 测试套件

 
  1. entropyarray /dev/random 1M

4.3 系统服务

pandom 还可以以系统服务的形式运行。

基于 init.d 的初始化系统(如 upstart、sysvinit):

 
  1. /etc/init.d/random status
  2. /etc/init.d/random start
  3. /etc/init.d/random stop
  4. /etc/init.d/random restart

以 systemd 作为初始化程序的系统:

 
  1. systemctl status random
  2. systemctl start random
  3. systemctl stop random
  4. systemctl restart random

5 增强不可预测性或者性能

假如你想增加你编译的 pandom 程序的不可预测性或者性能,你可以尝试增加或删减 CPU 时间测量选项。

5.1 编辑源文件

请按照自己的意愿,在源文件 test.s 和 tRNG.s 中增加或者移除 measurement blocks 字段。

 
  1. #measurement block
  2. mov $35,%rax
  3. syscall
  4. rdtsc
  5. [...]
  6. #measurement block
  7. mov $35,%rax
  8. syscall
  9. rdtsc
  10. [...]

5.2 测试不可预测性

我们总是建议在使用个人定制的 pandom 实现来用于加密目地之前,先进行一些测试。

 
  1. make check

5.3 安装定制的 pandom

假如你对测试的结果很满意,你就可以使用下面的命令来安装你的 pandom 实现。

 
  1. make install

原文发布时间为:2014-05-17

本文来自云栖社区合作伙伴“Linux中国”

相关文章
|
2天前
|
Linux Python
Linux 安装python3.7.6
本教程介绍在Linux系统上安装Python 3.7.6的步骤。首先使用`yum`安装依赖环境,包括zlib、openssl等开发库。接着通过`wget`下载Python 3.7.6源码包并解压。创建目标文件夹`/usr/local/python3`后,进入解压目录执行配置、编译和安装命令。最后设置软链接,使`python3`和`pip3`命令生效。
|
5天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
57 20
|
5天前
|
Unix Linux 编译器
UNIX/Linux 上的安装
UNIX/Linux 上的安装。
21 2
|
1月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
59 4
|
1月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
46 5
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
70 2
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
45 3
|
1月前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
164 0
|
1月前
|
关系型数据库 MySQL Linux
Linux-安装Mariadb
本文介绍了在 Alibaba Cloud Linux 系统上安装和配置 MariaDB 10.5 的步骤。包括下载安装、初始化数据库、启动服务、处理启动失败的常见问题(如权限问题),以及如何连接数据库、设置密码和允许外部连接。通过这些步骤,您可以顺利完成 MariaDB 的安装和基本配置。
60 0
|
2月前
|
Linux 网络安全 虚拟化
适用于Linux的Windows子系统(WSL1)的安装与使用记录
并放到启动文件夹,就可以开机自动启动了。
79 0
下一篇
DataWorks