- @ThothChildren
- 2018.5.20
- PV 150
Unix系列のOSで真の乱数が欲しい
ー 概要 ー
Unix系列のOSにおいて真の乱数を得る方法についてまとめています.Unixにおいて/dev/randomのデバイスファイルにシステム全体からかき集めたノイズやイベント等を利用して生成した真の乱数を得ることができます.
この章を学ぶ前に必要な知識
条件
- UnixのOSの話になります
効果
- 真の乱数を得ることができます
ポイント
- /dev/randomを読み込むことで真の乱数を得る
- /dev/randomはシステムから自然なノイズを集め乱数を生成するため、高速に使用しすぎると枯渇します
- /dev/urandomはrandomと対をなし、こちらは擬似乱数よりです.しかし枯渇はしないようになっています.
- 上記枯渇を"ブロック"と言います
- Linuxではgetrandomのシステムコールが用意されている
- 真の乱数を得る実装が怪しければ一般的な擬似乱数よりも劣る場合がある./dev/randomが本当によいかは議論が残る.
解 説
Unix系列のOSにおいては(Mac OSも含む)、/dev/randomが真の乱数を提供します.
通常の擬似乱数はどうしても特定のアルゴリズムによって生成するため不規則性が払拭できない.
しかし、システムの特定の時間間隔やノイズなどを収集することでそこから作られる乱数はより真の乱数に近い数となる. | Unix系列における真の乱数 | |||||||||||||||
Unix系列のOSにおいて乱数を得られるデバイスファイルは以下の二つがあります.
このうち、真の乱数を得られるのは先に記述した/dev/randomです. 以下にこれら二つの違いについて簡単に記述しました. ブロックとは乱数を取り出すプールが枯渇したときに乱数が生成されるまで待つことになるかどうかです.
| /dev/randomと/dev/urandomについて | |||||||||||||||
/dev/randomで真の乱数を取得できるかどうかはそのOSの実装に依存するため、下手をしたら擬似乱数よりも悪いものしか得られないかもしれないことは考慮しておいた方がよい. | /dev/randomについての注意 |
この章を学んで新たに学べる
Comments