プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Linux、「/dev/random」「/dev/urandom」とはなんぞや?
ちょっくらLinuxの基礎を学び直そうと思いましてね。
気になったことを取りとめもなく調べていくことにしました。

次に調べたのが「/dev/random」「/dev/urandom」。

乱数系なのは分かるけど、どうやって使うの?というのが調べたきっかけです。

ふむふむ(--)

「/dev/random」「/dev/urandom」はその名の通り、乱数を生成してくれる擬似デバイスだそうです。
確かに

cat /dev/urandom

とか打つと、ごちゃごちゃな文字がわちゃわちゃ~と表示されます。
こいつを入力として取って、あれこれしろってことですね。

ちなみに「/dev/random」と「/dev/urandom」の違いは妥協するかしないかの違いだそうな。
Linuxさんでは、人間がキーボードをペチペチ叩くタイミングとかの
「何がどーなるかわかんねーぞ」な要素を材料として乱数を生成するんですってさ。

そのため「何がどーなるかわかんねーぞ」な要素(エントロピー源)が足りていないと
いー感じにランダムな乱数を生成できないのだそうな。

このエントロピー源が足りていない状態で「乱数ちょーだい」とあなたが言いました。
「/dev/random」さんは「まだ十分な乱数を作れないから待ってろ」とお返事します。
乱数を作ってくれないのです。
一方「/dev/urandom」さんは「ん~まだ十分じゃないけど仕方ないな~」とお返事します。
完全にランダムじゃないかもしれませんが、乱数っぽいのを作ってくれるのです。

例えば

head -c 200 /dev/random > hoge.txt

を実行した場合、乱数が十分でないと応答が返ってきません。
一方

head -c 200 /dev/urandom > hoge.txt

を実行すると、状況に寄らず応答は返ります。
もちろん中身がランダムなファイルも作成されます。

これが「/dev/random」と「/dev/urandom」の違いです。
「/dev/random」は妥協しません。
バッチリ乱数が作れる状況にないときは乱数を作ってくれないのです。
一方「/dev/urandom」は妥協してくれます。
状況に合わせてそれなりに乱数っぽい何かを作ってくれます。
「/dev/urandom」の方が融通が利く感じですね。

まとめると「/dev/random」「/dev/urandom」は、乱数を作るお仕事をしているそうです。
「/dev/random」は十分にランダムな乱数が作れないときは乱数を作ってくれません。
「/dev/urandom」はどんな状況でも何となくの乱数を作ってくれます。

完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:ファイル/ディレクトリ  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事