当前位置: 首页 > 科技观察

如何安装pandom:Linux版真随机数生成器

时间:2023-03-19 23:55:30 科技观察

本教程仅适用于amd64/x86_64架构Linux内核版本大于等于2.6.9系统。本文介绍如何安装pandom,这是一个由ncomputers.org维护的定时抖动真随机数生成器。简介在当今的计算环境中,例如配备固态硬盘(SSD)的PC和虚拟专用服务器(VPS),Linux内核中内置的真随机数生成器提供的吞吐量非常低。随着各种加密目的对真随机数的需求持续增长,这种低吞吐量问题在Linux实现中变得越来越严重。在与上述相同的物理或虚拟环境中,并假设没有其他进程以root身份写入/dev/random,则64ubits/64位的pandom可以以8KiB/s的速率生成随机数。1Pandom安装1.1获取root权限Pandom必须以root身份安装,所以必要时请运行以下命令:su-1.2安装和编译依赖为了下载和安装pandom,你需要GNU作为汇编器,GNUmake,GNUtar和GNUwget(***通常已经安装了两个工具)。然后您可以根据需要卸载它们。基于Arch的系统:pacman-Sbinutilsmake基于Debian的系统:apt-getinstallbinutilsmake基于RedHat的系统:dnfinstallbinutilsmakeyuinstallbinutilsmake基于SUSE的系统:zypperinstallbinutilsmake1.3下载并提取源代码以下命令将使用wget和tar从ncomputers下载pandom.org源代码并解压:wgethttp://ncomputers.org/pandom.tar.gztarxfpandom.tar.gzcdpandom/amd64-linux1.4安装前测试(推荐)此推荐测试将花费大约8分钟的时间,它将检查内核支持并生成一个名为checkme的文件(将在下一节中分析)。makecheck1.5确定系统的init程序在安装pandom之前,你需要知道你的系统使用的是哪个init程序。如果以下命令的输出包含running,则说明你的系统使用了systemd,否则你的系统可能使用了init.d实现(如upstart、sysvinit)。systemctlis-system-runningrunning1.6安装pandom一旦您知道您的系统使用哪种Linux实现,您就可以相应地安装pandom。使用基于init.d的初始化程序的系统(例如upstart、sysvinit):如果您的系统使用init.d实现(例如upstart、sysvinit),请运行以下命令来安装pandom:makeinstall-init.d系统以systemd作为初始化程序:如果你的系统使用systemd,请运行以下命令安装pandom:makeinstall-systemd2checkme文件分析在使用pandom加密之前,强烈建议分析之前安装过程中生成的checkme文件。通过分析,我们可以知道pandom生成的数字是否真的是随机的。本节介绍如何使用ncomputers.orgshell脚本entropyarray来测试pandom生成的输出的熵和序列相关性。注意:整个分析过程也可以在另一台计算机上完成,例如在笔记本电脑或台式机上。举个例子:如果您在资源受限的VPS上安装pandom,您可能更愿意将checkme复制到您的个人计算机上,稍后再进行分析。2.1获得root权限entropyarray程序也必须以root身份安装,所以如果需要请运行以下命令:su-2.2安装和编译依赖项为了下载和安装entropyarray,你需要GNUg++编译器、GNUmake和GNUtar和GNUwget。然后您可以随意卸载这些依赖项。Arch系统:pacman-SgccmakeDebian系统:apt-getinstallg++makeRedHat系统:dnfinstallgcc-c++makeyuinstallgcc-c++makeSUSE系统:zypperinstallsgcc-c++make2.3下载并解压源代码下面的命令将使用wget和tar从ncomputers.org下载entropyarray的源代码并解压:wgethttp://ncomputers.org/rearray.tar.gzwgethttp://ncomputers.org/entropy。tar.gzwgethttp://ncomputers.org/entropyarray.tar.gztarxfentropy.tar.gztarxfrearray.tar.gztarxfentropyarray.tar.gz2.4安装entropyarray注意:编译时如果报关于-std=c++11的错误,说明表示当前系统安装如果您的GNUg++版本不支持ISOC++2011标准,那么您可能需要在另一个支持它的系统上编译ncomputers.org/entropy和ncomputers.org/rearray(例如在其中一个您最喜欢的较新的Linux发行版进行编译)。然后使用makeinstall安装编译好的二进制文件,然后你可能想继续运行entropyarray程序,或者跳过运行程序,但是我仍然建议在使用pandom进行加密之前分析checkme文件。cdrearray;makeinstall;cd..cdentropy;makeinstall;cd..cdentropyarray;makeinstall;cd..2.5分析checkme文件注意:64ubits/64bitspandom实现产生的熵应该大于15.977,max字段应该低于70。如果您的结果差异很大,也许您应该增加pandom实施的不可预测性,如下面第5节所述。如果跳过生成checkme文件的步骤,还可以使用其他工具进行测试,比如伪随机数序列测试。entropyarraycheckmeentropyarrayin/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:672.6卸载entropyarray(可选)如果你打算不再使用entropyarray,那么你可以根据自己的需要卸载:cdentropyarray;makeuninstall;cd..cdentropy;makeuninstall;cd..cdrarray;makeuninstall;cd..3使用debian存储库安装如果您想在基于debian的系统上保持pandom最新,您可以使用ncomputers.org的debian存储库安装或重新安装它。3.1root权限下的debian软件包必须以root身份安装,如有必要请运行以下命令:su-3.2安装密钥下的debian软件包包含ncomputers.orgdebian软件仓库的公钥:wgethttp://ncomputers.org/debian/keyring.debdpkg-ikeyring.debrmkeyring.deb3.3安装软件源列表*Debian发行版(截至2017年)。注意:除了为您的debian发行版安装相应的debian软件包,您还可以将以下#注释行添加到/etc/apt/sources.list文件。但是,如果这些来源将来发生变化,您将需要手动更新它们。Wheezy:#debhttp://ncomputers.org/debianwheezymainwgethttp://ncomputers.org/debian/wheezy.debdpkg-iwheezy.debrmwheezy.debJessie:#debhttp://ncomputers.org/debianjessiemainwgethttp://ncomputers.org/debian/jessie.debdpkg-ijessie.debrmjessie.debStretch:#debhttp://ncomputers.org/debianstretchmainwgethttp://ncomputers.org/debian/stretch.debdpkg-istretch.debrmstretch.deb3.4升级存储库列表一次密钥和存储库列表安装完成后,可以使用以下命令进行更新:apt-getupdate3.5测试pandom测试后,可以随意卸载以下包。注意:如果你已经在你的Linux上测试过pandom,你可以跳过这一步。apt-getinstallpandom-testpandom-testgeneratingcheckmefile,请稍等8分钟...entropyarrayin/tmp/tmp.5SkiYsYG3h15.977366min:12med:32max:5715.977367min:13med:32max:5715.977328min:12med:32max:6115.9774med:134min.977431min:12min.9774314min:12min:12max11med:32max:5715.977298min:11med:32max:5915.977196min:10med:32max:573.6安装pandomapt-getinstallpandom4管理pandom安装pandom后,您可能需要对其进行管理。4.1性能测试pandom提供的随机数生成速率约为8kB/s,但其性能可能因环境而异。ddif=/dev/randomof=/dev/nullbs=8count=512512+0recordsin512+0recordsout4096bytes(4.1kB,4.0KiB)copied,0.451253s,9.1kB/s4.2entropyandserialcorrelationtestsexceptncomputers.org/entropyarray,许多存在更多测试,例如IljaGerhardt的NIST测试套件。entropyarray/dev/random1M4.3系统服务pandom也可以作为系统服务运行。基于init.d的初始化系统(如upstart、sysvinit):/etc/init.d/randomstatus/etc/init.d/randomstart/etc/init.d/randomstop/etc/init.d/randomrestart使用systemd作为初始化程序的系统:systemctlstatusrandomsystemctlstartrandomsystemctlstoprandomsystemctlrestartrandom5增强不可预测性或性能如果你想增加编译的pandom程序的不可预测性或性能,你可以尝试增加或减少CPU时间测量选项。5.1编辑源文件请根据您的意愿在源文件test.s和tRNG.s中添加或删除测量块字段。#measurementblockmov$35,%raxsyscallrdtsc[...]#measurementblockmov$35,%raxsyscallrdtsc[...]5.2测试不可预测性我们总是建议在将自定义pandom实现用于加密目的之前进行一些测试。makecheck5.3installcustompandom如果你对测试结果满意,你可以使用下面的命令来安装你的pandom实现。可以在http://ncomputers.org/pandom找到makeinstall的其他信息和更新。(标题图片:Pixabay,CC0)