華文網

如何安裝pandom:一個針對Linux的真亂數產生器

本文將解釋如何安裝 pandom,這是一個由 ncomputers.org 維護的定時抖動真亂數產生器。

-- Oliver

本文導航

-簡介 …… 02%

-1 pandom 的安裝 …… 07%

-1.1 獲得 root 許可權 …… 07%

-1.2 安裝編譯所需的依賴 …… 08%

-1.4 在安裝前進行測試 (推薦) …… 17%

-1.5 確定系統的初始化程式 …… 19%

-1.6 安裝 pandom …… 22%

-2 checkme 檔的分析 …… 27%

-2.1 獲取 root 許可權 …… 32%

-2.2 安裝編譯所需的依賴 …… 34%

-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 安裝編譯所需的依賴

基於 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 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 安裝編譯所需的依賴

基於 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 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 安裝 pandomapt-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/

則說明當前系統安裝的 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 安裝 pandomapt-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/