Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Rng-toolsのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Rng-tools
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:暗号]] [[en:Rng-tools]] {{Related articles start}} {{Related|Haveged}} {{Related|Trusted Platform Module}} {{Related|乱数生成}} {{Related articles end}} {{Note|rng-tools は Kernel 5.6 以降、{{ic|/dev/random}} がブロックしなくなったので不要になりました [https://github.com/torvalds/linux/commit/30c08efec8884fb106b8e57094baa51bb4c44e32]}} [https://git.kernel.org/cgit/utils/kernel/rng-tools/rng-tools.git/ rng-tools] はカーネルの乱数生成に関するユーティリティのセットです。メインのプログラムは '''rngd''' で、ハードウェアデバイスからカーネルのエントロピープールにランダムなデータを入力するために開発されたデーモンになります。 rng-tools は主にカーネルのエントロピーを増やして {{ic|/dev/random}} を高速するために使われます。デフォルトでは、{{ic|/dev/random}} は[[wikipedia:/dev/random|デバイスドライバなどの (遅い) ソース]]からしかエントロピーを収集しないため、極めて遅くなっています。''rngd'' は高速なエントロピーソースを利用することが可能です。[[wikipedia:RdRand|最新の AMD/Intel プロセッサ]], [https://jve.linuxwall.info/blog/index.php?post/2013/08/19/Hardware-RNG-from-Via-CPU-(on-debibox) Via Nano], あるいは [http://scruss.com/blog/2013/06/07/well-that-was-unexpected-the-raspberry-pis-hardware-random-number-generator/ Raspberry Pi] などの新しいハードウェアに搭載されている[[wikipedia:Hardware_random_number_generator|ハードウェア乱数生成器 (TRNG)]] を主に利用します。 Linux 自体も TRNG からの情報を {{ic|/dev/random}} に活かすようにしていますが、あくまで [https://www.lvh.io/posts/2013/10/thoughts-on-rdrand-in-linux.html カーネルが収集したエントロピーの XOR] にしか使われていません。そのため、たとえ TRNG が搭載されていても、デフォルトでは {{ic|/dev/random}} はかなり低速です。''rngd'' は利用可能なエントロピーを大幅に増やして {{ic|/dev/random}} に流し込みます。 == インストール == {{pkg|rng-tools}} パッケージを[[インストール]]してください。 == 設定 == 設定ファイルは {{ic|/etc/conf.d/rngd}} です。ただしオプションは {{ic|RNGD_OPTS}} しかありません。付属している [[systemd]] サービス ({{ic|rngd.service}}) でデーモンを起動したときに {{ic|RNGD_OPTS}} のパラメータが渡されます。大抵の場合はデフォルトのパラメータ ({{ic|""}} つまり空白) で問題ありません。 デフォルトで、''rngd'' は TRNG を自動的に検出して使用します。''rng-tools'' の最新版で Raspberry Pi や Intel Ivy Bridge CPU の自動検出が機能することが報告されています。自動で検出されない場合、手動で TRNG が使用する[[wikipedia:Device_file|デバイスファイル]]を指定することができます。例: RNGD_OPTS="-o /dev/random -r /dev/my_hw_random_device" {{Warning|インターネット上にある文章や、あるいは rng-tools の古いバージョンでは、TRNG を搭載していないシステムでは以下の行を使うことが推奨されていることがあります: <nowiki>RNGD_OPTS="-o /dev/random -r /dev/urandom"</nowiki> 当たり前ですが、上記は [https://lwn.net/Articles/525459/ 本当に悪い考え] です。カーネルのエントロピープールを満杯にするのに、そのカーネルのエントロピーを使うのは馬鹿げています。あなたの使っているコンピュータに TRNG が搭載されていないのであれば [[haveged]] を使ってください。詳しくは {{Bug|34580}} を参照。}} コンピュータに [[wikipedia:Trusted_Platform_Module|TPM モジュール]]が載っていない場合は、{{ic|RNGD_OPTS}} に {{ic|1="--no-tpm=1"}} を指定することで、ログに以下の警告メッセージが表示されないようにすることができます: Unable to open file: /dev/tpm0 デフォルトでは ''rngd'' はエントロピープールに2048バイトまでしかエントロピーを貯めません。プールの中身が TRNG だけになるのを防ぐためです。TRNG から弾き出される値が絶対にランダムだと'''信用'''できるというのであれば、この設定は上書きすることが可能です。{{ic|RNGD_OPTS}} に {{ic|1="--fill-watermark=4096"}} などと指定してください (デフォルトでは4096がカーネルのエントロピープールの最大サイズです。最大値より大きい値は指定しないでください)。TRNG を使用する割合を高めることで {{ic|/dev/random}} のパフォーマンスはさらに上がりますが、乱数の品質が低くなるかもしれません。普通の使い方であれば、デフォルト設定で十分です。 == テストと使い方 == サービスを有効にする前に、以下のコマンドを実行することで ''rngd'' が動作するかどうかテストできます: # rngd -f (''rngd'' が動作しているのとは別のターミナルで) 以下のコマンドを使えば簡単な乱数生成のテストが可能です: $ dd if=/dev/random of=/dev/null bs=1024 count=1 iflag=fullblock ''rngd'' を使わなかった場合、上記のコマンドの実行には長い時間がかかることになるでしょう。''rngd'' が正しく動作していれば、あっという間に実行が完了するはずです: 1+0 records in 1+0 records out 1024 bytes (1.0 kB) copied, 0.0199623 s, 51.3 kB/s ''dd'' の出力が '''50 kB/s''' ほどの速度を出していれば問題ありません。比較として、''rngd'' を使わなかった場合 (速度があまりにも遅くて) 0.0 kB/s になるでしょう。 また、'''rngtest''' を実行することで、[[wikipedia:FIPS_140-2|FIPS 140-2 テスト]]を使ってランダム性をチェックすることもできます: {{hc|<nowiki>$ rngtest -c 1000 </dev/random</nowiki>|2= rngtest 5 Copyright (c) 2004 by Henrique de Moraes Holschuh This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. rngtest: starting FIPS tests... rngtest: bits received from input: 20000032 rngtest: FIPS 140-2 successes: 999 rngtest: FIPS 140-2 failures: 1 rngtest: FIPS 140-2(2001-10-10) Monobit: 1 rngtest: FIPS 140-2(2001-10-10) Poker: 0 rngtest: FIPS 140-2(2001-10-10) Runs: 0 rngtest: FIPS 140-2(2001-10-10) Long run: 0 rngtest: FIPS 140-2(2001-10-10) Continuous run: 0 rngtest: input channel speed: (min=301.394; avg=417.091; max=693.187)Kibits/s rngtest: FIPS tests speed: (min=64.656; avg=91.010; max=123.055)Mibits/s rngtest: Program run time: 47037492 microseconds }} どんな乱数生成器でも1000個のテストで少しばかり通らないことがあるのは普通です。ただし failures の数があまりに大きい場合 (10以上など)、何かがおかしいと思ってください。 テストが終わったら、{{ic|rngd.service}} を[[起動]]・[[有効化]]してください。
このページで使用されているテンプレート:
テンプレート:Bug
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:META Related articles start
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Related
(
ソースを閲覧
)
テンプレート:Related articles end
(
ソースを閲覧
)
テンプレート:Related articles start
(
ソースを閲覧
)
テンプレート:Warning
(
ソースを閲覧
)
Rng-tools
に戻る。
検索
検索
Rng-toolsのソースを表示
話題を追加