本文將解釋如何安裝 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 makeyum install binutils make
基於 SUSE 的系統:
zypper install binutils make
1.3 下載並析出源碼
下面的命令將使用 wget 和 tar 從 ncomputers.org 下載 pandom 的源代碼並將它們解壓出來:
wget http://ncomputers.org/pandom.tar.gztar 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-runningrunning
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++ makeyum install gcc-c++ make
基於 SUSE 的系統:
zypper install gcc-c++ make
2.3 下載並析出源碼
以下命令將使用 wget 和 tar 從 ncomputers.org 下載到 entropyarray 的源碼並進行解壓:
wget http://ncomputers.org/rearray.tar.gzwget 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 checkmeentropyarray 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.debdpkg -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 mainwget http://ncomputers.org/debian/wheezy.deb
dpkg -i wheezy.deb
rm wheezy.deb
Jessie:
#deb http://ncomputers.org/debian jessie mainwget http://ncomputers.org/debian/jessie.deb
dpkg -i jessie.deb
rm jessie.deb
Stretch:
#deb http://ncomputers.org/debian stretch mainwget 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-testpandom-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=512512+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 randomsystemctl start random
systemctl stop random
systemctl restart random
5 增強不可預測性或者性能
假如你想增加你編譯的 pandom 程序的不可預測性或者性能,你可以嘗試增加或刪減 CPU 時間測量選項。
5.1 編輯源文件
請按照自己的意願,在源文件 test.s 和 tRNG.s 中增加或者移除 measurement blocks 字段。
#measurement blockmov $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/