51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2715|回复: 0
打印 上一主题 下一主题

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

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-11-15 15:26:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


    本文将解释如何安装 pandom,这是一个由 ncomputers.org 维护的定时抖动真随机数生成器。 -- Oliver
    本文导航

      -简介 …… 02%
      -1 pandom 的安装 …… 07%


      -1.1 获得 root 权限 …… 07%
      -1.2 安装编译所需的依赖 …… 08%
      -1.3 下载并析出源码 …… 14%
      -1.4 在安装前进行测试 (推荐) …… 17%
      -1.5 确定系统的初始化程序 …… 19%
      -1.6 安装 pandom …… 22%


      -2 checkme 文件的分析 …… 27%


      -2.1 获取 root 权限 …… 32%
      -2.2 安装编译所需的依赖 …… 34%
      -2.3 下载并析出源码 …… 39%
      -2.4 安装 entropyarray …… 43%
      -2.5 分析 checkme 文件 …… 49%
      -2.6 卸载 entropyarray (可选) …… 55%


      -3 使用 debian 的软件仓库来进行安装 …… 58%


      -3.1 获取 root 权限 …… 59%
      -3.2 安装密钥 …… 61%
      -3.3 安装软件源列表 …… 63%
      -3.4 升级软件源列表 …… 71%
      -3.5 测试 pandom …… 73%
      -3.6 安装 pandom …… 77%


      -4 管理 pandom …… 78%


      -4.1 性能测试 …… 79%
      -4.2 熵和序列相关性检验 …… 81%
      -4.3 系统服务 …… 83%


      -5 增强不可预测性或者性能 …… 87%


      -5.1 编辑源文件 …… 89%
      -5.2 测试不可预测性 …… 91%
      -5.3 安装定制的 pandom …… 93%
    编译自: https://www.howtoforge.com/tutorial/how-to-install-pandom-a-true-random-number-generator/
    作者: Oliver
    译者: FSSlc

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

    在现在的计算机状况下,比如说配置了固态硬盘(SSD)的个人电脑和虚拟专用服务器(VPS)的环境中,Linux 内核内置的真随机数发生器提供的吞吐量很低。
    而出于各种不同的加密目的使得对真随机数的需求持续增长,从而使得这个低吞吐量问题在 Linux 实现中变得越来越严重。
    在与上述相同的物理或者虚拟环境下,并假设没有其它进程以 root 身份向 /dev/random 进行写操作的话,64 ubits[2]/64 bits 的 pandom 可以以 8 KiB/s 的速率生成随机数。
    1 pandom 的安装

    1.1 获得 root 权限

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

    1.2 安装编译所需的依赖

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

    基于 Debian 的系统:
    apt-get install binutils make

    基于 Red Hat 的系统:
    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 确定系统的初始化程序

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

    1.6 安装 pandom

    一旦你知道了你的系统使用何种 Linux 实现,那么你就可以相应地安装 pandom 了。
    使用基于 init.d 作为初始化程序(如: upstart、sysvinit)的系统:
    假如你的系统使用了一个 init.d 的实现(如: upstart、sysvinit),请运行下面的命令来安装 pandom:
    make install-init.d

    以 systemd 作为初始化程序的系统:
    假如你的系统使用 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 的系统:
    pacman -S gcc make

    基于 Debian 的系统:
    apt-get install g++ make

    基于 Red Hat 的系统:
    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/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[3] / 64 bits 的 pandom 实现所生成的结果中熵应该高于 15.977 且 max 字段低于 70。假如你的结果与之相差巨大,或许你应该按照下面第 5 节介绍的那样增加你的 pandom 实现的不可预测性。假如你跳过了生成 checkme 文件的那一步,你也可以使用其他的工具来进行测试,例如 伪随机数序列测试[4]。
    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 获取 root 权限

    以下的 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 软件包含有 ncomputers.org debian 软件仓库的软件源列表,这些软件源列表对应最新的 debian 发行版本(截至 2017 年)。
    注:你也可以将下面的以 # 注释的行加入 /etc/apt/sources.list 文件中,而不是为你的 debian 发行版本安装对应的 debian 软件包。但假如这些源在将来改变了,你就需要手动更新它们。
    Wheezy:
    #deb http://ncomputers.org/debian wheezy main
    wget http://ncomputers.org/debian/wheezy.deb
    dpkg -i wheezy.deb
    rm wheezy.deb

    Jessie:
    #deb http://ncomputers.org/debian jessie main
    wget http://ncomputers.org/debian/jessie.deb
    dpkg -i jessie.deb
    rm jessie.deb

    Stretch:
    #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 测试 pandom

    测试完毕后,你可以随意卸载下面的软件包。
    注:假如你已经在你的 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 安装 pandom

    apt-get install pandom

    4 管理 pandom

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

    pandom 提供大约 8 kB/s 的随机数生成速率,但它的性能可能根据环境而有所差异。
    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 测试套件[5]。
    entropyarray /dev/random 1M

    4.3 系统服务

    pandom 还可以以系统服务的形式运行。
    基于 init.d 的初始化系统(如 upstart、sysvinit):
    /etc/init.d/random status
    /etc/init.d/random start
    /etc/init.d/random stop
    /etc/init.d/random restart

    以 systemd 作为初始化程序的系统:
    systemctl status random
    systemctl start random
    systemctl stop random
    systemctl restart random

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

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

    请按照自己的意愿,在源文件 test.s 和 tRNG.s 中增加或者移除 measurement blocks 字段。
    #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 。
    (题图:Pixabay,CC0)
    via: https://www.howtoforge.com/tutorial/how-to-install-pandom-a-true-random-number-generator/
    作者:Oliver[6] 译者:FSSlc 校对:wxy
    本文由 LCTT 原创编译,Linux中国 荣誉推出

      [1]: pandom - http://ncomputers.org/pandom
      [2]: ubits - http://ncomputers.org/ubit
      [3]: ubits - http://ncomputers.org/ubit
      [4]: 伪随机数序列测试 - http://www.fourmilab.ch/random/
      [5]: Ilja Gerhardt 的 NIST 测试套件 - https://gerhardt.ch/random.php
      [6]: Oliver - https://www.howtoforge.com/tutorial/how-to-install-pandom-a-true-random-number-generator/


    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 16:04 , Processed in 0.057706 second(s), 33 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表