日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
RANDOM(4) FreeBSD カーネルインタフェースマニュアル RANDOM(4) 名称 random -- エントロピデバイス 書式 device random options RANDOM_LOADABLE options RANDOM_ENABLE_UMA 解説 random デバイスは、読み込まれるとき、乱数バイトを無限に供給して返します。 また、それは、あらゆる通常のファイルとしてデータを受け付けて、読み込みま す。 ジェネレータは、シードがない (unseeded) 状態で開始し、初めてシードされる まで、読み込みをブロックします。これは、キーと random から生成されるよう なとき、システムブートでトラブルを起こすかもしないので、ステップは、でき るだけ早くシードを保証するために取られるべきです。 また、KERN_ARND sysctl を使用することによって乱数バイトを読み込むことが可 能です。コマンド行で、これは、次によって行われます。 sysctl -x -B 16 kern.arandom この sysctl は、random デバイスがシードされないなら、乱数バイトを返しませ ん。 乱数発生器のこの初期のシードは、非常に注意深い対処を必要とするブートスト ラップの問題です。ある場合には、システムが完全に操作可能であるが、システ ムが完全に操作可能になる乱数に要求するまで、乱数発生器をシードするのに十 分な乱数を見つけることは難しいかもしれません。それ (またはより正確である べき) が、はじめて使用される前に、random デバイスがシードされることは、と ても重要です。ダミーまたは "ブロッキングのみ" のデバイスが使用される場合 に、それは、読み込みのブロックが重大なプロセスを維持されないことを保証す ることは、システムの構築者の責任です。 ソフトウェア random デバイスの現在の設定を見るためには、次のコマンド行を 使用します: sysctl kern.random その結果は、次のようになります: kern.random.fortuna.minpoolsize: 64 kern.random.harvest.mask_symbolic: [HIGH_PERFORMANCE], ... ,CACHED kern.random.harvest.mask_bin: 00111111111 kern.random.harvest.mask: 511 kern.random.random_sources: 'Intel Secure Key RNG' kern.random.fortuna.minpoolsize と kern.random.harvest.mask 以外、すべての設定は、読み込み専用です。 kern.random.fortuna.minpoolsize sysctl は、シードのしきい値を設定するため に使用されます。小さい数は、速いシードを与えますが、安全性は、小さくなり ます。実際に、64 から 256 までの値が、受け付け可能です。 kern.random.harvest.mask ビットマスクは、可能なエントロピのソースを選択す るために使用されます。0 の値は、対応しているソースが、エントロピのソース と見なされないことを意味します。利用者が、そのソースを使用したいなら、 ビットを 1 に設定します。kern.random.harvest.mask_bin と kern.random.harvest.mask_symbolic sysctl は、選択が正しいことを確認するた めに使用することができます。後者の項目の無効の項目は、角括弧でリストされ ることに注意してください。エントロピのハーベスト (収穫) の詳細について は、random_harvest(9) を参照してください。 options RANDOM_LOADABLE が使用されるとき、/dev/random デバイスは、"アルゴ リズムモジュール" がロードされるまで、作成されません。これらのモジュール の 2 つは、デフォルトの random_fortuna と random_yarrow によって構築され ます。random_yarrow モジュールは、推奨されず、FreeBSD 12.0 で削除されま す。Yarrow アルゴリズムの使用は、推奨されませんが、options RANDOM_YARROW カーネルオプションで選択することができる、カーネルソースにまだ存在してい ます。これらのロード可能なモジュールは、それらのコンパイル済の組み込み相 当のものより少し効率的ではないことに注意してください。いくつかの関数は、 ロードとアンロードイベントに対してロックされなければならないので、これ は、また、削除のために許可された間接的な呼び出しでなければなりません。 options RANDOM_ENABLE_UMA が使用されるとき、/dev/random デバイスは、ゾー ンアロケータからエントロピを取得します。これは、潜在的に非常に高いレート であり、そうであるなら、不確かな使用となります。これが本当であるなら、こ のオプションの使用は、推奨されません。これを決定することは、ささいなこと ではないので、dtrace(1) のようなツールを使用する実験と測定が、要求されま す。 乱数 計算の分野での乱数の使用は、乱数が異なった人々に異なった物を意味するの で、かなり微妙な問題です。ランダムにパスワードを生成する、コインを投げる 実験をシミュレートする、またはサーバが反応しないとき乱数バックオフ (訳注: 意味不明) 期間を選択すると考えてください。それぞれに関するこれらのタスク は、乱数を必要としますが、乱数には、その都度異なった要件があります。 パスワード、セッションキー、および同様のものの生成は、暗号の乱数を必要と します。暗号の乱数発生器は、(いつシード (種) とされたか、以後や以前の出力 などのような) 多くの補助的な情報が知られていたとしても、その出力を推測す るのが難しいように設計されるべきです。FreeBSD では、暗号の乱数発生器のた めのシードは、本当の乱数を提供する random デバイスによって提供されます。 arc4random(3) ライブラリ呼び出しは、一般的に簡単な暗号の使用に適している と考えられる擬似乱数シーケンスを提供します。また、OpenSSL ライブラリは、 RAND_bytes(3) と RAND_add(3) のような関数を通して乱数を管理するための関数 を提供します。OpenSSL が自動的にシード (種と) するために random デバイス を使用することに注意してください。 シミュレーションのための乱数は、工学または科学的ソフトウェアとゲームで必 要とされます。これらのアプリケーションの最初の要件は、生産された乱数がか なり周知で、通常均一で、配布に適合することです。また、数のシーケンスは、 シミュレーションがしばしば乱数の入力から独立していると仮定するような相互 に関連のない数として現れるべきです。しばしば、ジェネレータが同様に種を蒔 かれるなら、発生器が同じ方法でシードされるなら同じ結果を生産すべきである ように、正確にシミュレーションの結果を再生産することは望ましいことです。 シミュレーションに関して重要でないことは乱数発生器の速度です。 シミュレーションにおける別の問題は、乱数発生器と関連している状態のサイズ と、どのくらいそれ自体を頻繁に繰り返しするかです。例えば、トランプ一組を シャッフルするプログラムは、乱数発生器には、52! の始めの状態がある必要と する 52! の可能な出力があるべきです。これは、プログラムがすべての可能な シーケンスを出力する可能性があるか、プログラムがこれらのビットを発生させ る何らかの不遍の方法を必要とするなら、シードは、少なくとも log_2(52!) ~ 226 ビットの状態があるべきであることを意味します。また一方、random デバイ スは、ここでシードするために使用することができましたが、実際のところは、 小さいシードは、通常受け付けできると見なされます。 FreeBSD は、シミュレーションに適していると考えられる 2 つの関数ファミリを 提供します。random(3) 関数ファミリは、0 と (2**31)-1 の間の乱数の整数を提 供します。関数 srandom(3), initstate(3) と setstate(3) は、発生器の状態の 確定的な設定を提供し、関数 srandomdev(3) は、random デバイスを通して状態 の設定を提供します。また、drand48(3) 関数ファミリは、様々な範囲で乱数の浮 動小数点数を提供します。 (例えば特定のネットワークプロトコルで) 衝突回避のために使われる乱数は、再 びわずかに異なったセマンティクスがあります。これが低い衝突の機会を生み出 すとき、通常、数が均一になると予想されます。また一方ここで、発生器のシー ドは、独立したシーケンスを生産する発生器の異なったインスタンスが必要であ るときに、たいへん重要です。しかしながら、シーケンスの推測可能性または再 現性は、前の場合と異なって重要ではありません。 また、FreeBSD は、互換性の目的のための伝統的な rand(3) ライブラリ呼び出し も提供しています。しかしながら、シミュレーションが貧弱で、暗号の目的ため には、絶対に不適当であることが知られているので、使用は、お勧めできませ ん。 関連ファイル /dev/random 関連項目 arc4random(3), drand48(3), rand(3), RAND_add(3), RAND_bytes(3), random(3), sysctl(8), random(9) Ferguson, Schneier, and Kohno, Cryptography Engineering, Wiley, ISBN 978-0-470-47424-2. 歴史 random デバイスは、FreeBSD 2.2 で登場しました。FreeBSD 10.0 で導入された 現在のソフトウェアの実装は、Mark R V Murray によって行われ、Ferguson 他に よって Fortuna アルゴリズムが実装されました。それは、FreeBSD 5.0 で導入さ れた以前の Yarrow 実装を置き換えました。Yarrow アルゴリズムは、もはやその 作者によってサポートされず、したがって推奨されません。 FreeBSD 11.4 August 17, 2015 FreeBSD 11.4