エントロピープールの収集速度

/dev/randomはハードウェア乱数器を持たないPCなどで、OSレベルのイベント(Entropy Sources)を収集し、それをEntropy Poolに蓄積。そこから偏りとかを削って(暗号用途的にある程度強度な)乱数を発生させる機構だそうな。/dev/urandomはとりあえず足りなければローカルなので疑似乱数を返すようなんだけど、/dev/randomの方はより強力(真性に近い)な乱数を得るため、必要な量のエントロピーがたまるまでブロックする。GPGとかでgen-keyすると「なんかタイプして」とか「なんかディスクアクセスして」とか言われるのはこのため。
しかし結構な時間ごちゃごちゃやってないと動かない。いったいどのくらいの速度で収集されてるのか気になって試してみた。

やったこと

  1. h8-gcc-3.4.6をコンパイル
  2. キーを乱打
  3. find で / をフルトラバース

の3つをやってみた。ちなみに/proc/sys/kernel/random/entropy_availをみると現在の量がわかるらしいので、これを1秒間隔で拾ってみた。
キーを乱打は以下のような感じのをうちまくった。

tkuro@sawshark> dfja;lksdjflaksdjf;lkasdjf;lkasjdf;lkajsd;lfkja;ldksupojsfl;kajsd;flkajsd;flkajs;dlfkjas;dlfkj;lhij;kj;lkcjz;lkxcjv;lzkxjcvpoiua;skldfj;alskjdf;lkasjdfl;ksjdf;lkj;lzkxjcv;lkja;ldskjf;alksjdf;lkajsd;lgkja;slkdfj;alksdjf;laksjdf;laksjdf;lkajsd;lfkj;lzlkcxjv;zkljx;lckuvpoijalskdfj;laksdjf;lakj;lkje;lrkja;lkdsjf;ajsdflkjsadjf;laksjdg;iahgjaposdkfj;alskdfjaposdifuasdfja;lksdjpyiquepoeijtflkzxjb908cx7vopizxjfg;lkerwjrtlkj4l5j34,gmn/fdkbj@aopdgia:l;dkfl;akdfoeruiyw-098df@pzoxjkdlkfjqlk;ejroqpisufoiasdufpakdfjglkryjiu5poiu35jlktrjgiosifdug098zcv7bpoisdjf;lgkj;wlkrjylkjal;sdkfjpdoiugalskjg;akljd;flhjapodijflkajdsfaskdjfpoaisyugpioadjfknsdaklfjaopidsiuajfklsdjfa;lsdkjga;lksdfhpaisdyfipasjhdf,.mdnh,m.wnretkwhretpwiurytiadhsfja,sdjhfkabndsgm,zxchjioubyzidhfgmhyw;ruytpoidsjflkasdhfiutydsipjzkhxckljgakl;dfjhgl;aiduygfi0uasydfipaosdufj;lakghn;alkrejtroiqepuertiowuertoi;jgdfl;kgjal;fdgujuaoidfgupoc7gz9-8futjrkljykltjykrjutioadufoisdkfjlkdsfjaoeisjflkajsdpfouyadspofuas;ldkfja;sdutadsugjl;askdjfaosdpifuas;dklfja;lskdfja;sodifupaskdjlkyjrelkwuter08t7z980xf7vizxhcklfgjakldsjf;laksdjfadsif8yasdkfjhas;ldkfjklasdjgpaiofduwlekrlkrjgapoiidjfuoipasdufpoaisdjfal;kjsklerjwepoituporijg;lkdfjghud0iaiduyfpoajsdfkalsj;lkdfj;asdifyu0a98dsufoasdkjfk;lryju-e945u2oi3u589sd07fozijdlkzxcjv;lkdasjf;laksdjf;aigypaodsijfklajdsfioapidsygiufbjklzxcjvkljalkdsfja;lksdfjpiogusaotjlkertjaoksdfuaksdfkjlkasdufioasdfj;klt;qejufiopdsasdyfpu;laksdjf;lkasjd;iryupoeyjwe;lk5tj45oi6u3roipetuajls;kdfjgoicvub@zxjglk;jq;ksldjf;laksdfjiodfgbu;dklatjl;adksfjpoasdiufioklxjvb;zlkxdjgpioadfugtpaojtl;kryjr;leituwproitu;slkdfj;lkdjfal;ksdjf;apdoisfyoipzxcjfckvnasdipfguadlkjgkladjsflkasdjfi0aduyfgj;kladjsflk;adufioasdpfu;alksdjflasdufoipasduyfpasodjfklasdjfkalsdjfa;sdifhjasdiofayupdsfijl;kasdfgj;laksdjfalksdjfsipdpfyxopziujxkjvlkzxdjflk

全部で 1802文字。これを70秒間で打ち込み上げる、というそれどこの苦行モードでやってみました。

結果


ほう。ほとんど変わりませぬな。

結論

まあ手がだるいので find / で十分(ぉ *1

*1:本当はχ二乗検定と相関係数を調べるべきかな。気が向いたらやります・・・