Re: いつも使う shell script
Yoshitaka Ikeda <ikeda@4bn.ne.jp> writes:
> 乱数の話なので、fj.comp.securityに振っちゃいます。
>
>
> kono@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
>
> > 河野真治 @ 琉球大学情報工学です。
> >
> > In article <86ver9j4z2.fsf@bsd2.4bn.ne.jp>, Yoshitaka Ikeda <ikeda@4bn.ne.jp> writes
> > > /dev/randomって実際にどう実装されているのか興味があります。
> > > pgpみたいに、キーボードのタイプ間隔とかをりようしてるんですかね?
> >
> > そういう時は、source でしょ!
> >
> > http://www.intel.com/design/chipsets/manuals/298029.htm
> >
> > つう感じでハードウェアで生成することも出来るようです。熱雑音
> > かなんかを使うんじゃなかったかな。
>
> とりあえず、FreeBSDのサーバのmanあたりからつらつらと探してみました。
>
> /dev/randomの初期化の部分で、ident_hardware()という関数を呼んでます。
> /usr/src/sys/dev/randomを呼んでみると、
> 1.とりあえずデフォルトはYarrow(PRNG)を使う。
> 2.CyrixのC3(Nehemiahコア)ならCPUのハードウェア乱数発生機能を使う。
> という感じになってます。(ちゃんと読みきってはいませんが。)
補足。FreeBSD 5.4-RELEASEの random(4) のHISTORYに記述がありました。
それによると
・randomデバイスはFreeBSD2.2で登場
・初期のバージョンはTheodore Ts'o'sのLunx用エントロピドライバの移植
・現在のバージョンはFreeBSD5.0でかきなおされたもの。
・Yarrowアルゴリズム(Schneierが設計)を実装
・ハードウェア実装は、現在のところVIAのC3 Nehemiahのみ
となっています。
一方、FreeBSD2.2.5-RELEASEの random(4) では、
・PGPのものをベースとしたエントロピ生成器
・キー入力間隔をベースとした入力と割り込み間隔をベースとした入力
・割り込み間隔は物によってはランダムではない
・エントロピを元にMD5で乱数生成
という記述があります。
ここらへん、
J. Viega et.al, "C/C++ セキュアプログラミングクックブック Volume.2",
オライリー・ジャパン, 2004
の4章 レシピII-4.19「エントロピーの評価と管理を行なう」が非常に参考に
なります。
--
I LOVE SNOOPY! でつ
Yoshitaka Ikeda mailto:ikeda@4bn.ne.jp
My Honeypot: honey@4bn.ne.jp <-don't send this address
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735