表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
8/16

機械はサイコロを振らない

 まずはわかるところから、というわけで/dev/randomを調べるよー!


 ド直球にrandom.cというファイルがあったのでこれを選んだよ、適当だね!


 ソースによると環境ノイズを使用して乱数を生成しているらしい。

 どうやら線形合同法はじめ数学的に擬似乱数を作ると攻撃者に推測しやすくなってしまうらしい。


 そこで攻撃者が予想しようがない物理的な環境から乱数を生成しているようだ。


 なにはともあれ、/dev/randomがを読み込んで見れば多分乱数になっていることがわかるはず。


 そういうわけで読み込むコードを書いてみた。

--------

#include <stdio.h>


int main(){

FILE *rnd;

int r;

rnd = fopen("/dev/random","r");

for(int i = 0;i <= 10;i++){

r = fgetc(rnd);

printf("%d\n",r);

}

return 0;

}

--------

 単純に/dev/randomから読み込んで表示している。

 結果の一例を見てもらおう。

--------

178

242

169

233

16

147

119

5

114

167

105

-------

 読み込むたびに値が変わっていることがわかる。

 この結果は一例でもちろん次に実行すると値は変わる。

 あんまり書くのもアレなので興味があればコピペでソースを作って実行してみてほしい、ちゃんと変わっているのがわかるはずだ。


 そしてソースの関数一覧を見るとrandom_readという関数がある、いかにもな名前だな。

 関数を表示すると内部で_random_read関数を呼び出してそれを返していた。


 お目当ての関数本体を覗くとそこにはnにエントロピー(乱雑さ)といういかにもな関数を呼び出している。

 ここが核だと思われるが現在のところこれ以上の追跡は観察者の精神が耐えられないので本日の報告はここまでにしておく。


評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ