入力付き乱数生成器2. SUMMARY
• 自己紹介
• 乱数の話
• 入力付き乱数生成器の話
• 問題A
:
エントロピー推定器問題
• 問題B
:
Premature
Next問題
• まとめ
7. (一様)乱数とは?(2)
• 無作為性
• 予測不可能
• 周期が無限大
ホワイトノイズ
それ白色雑音や
※平均、分散が与えられると正規分布になるが、
ボックスミュラー法を用いれば一様分布と正規分布は変換可能
実際、ハードウェア乱数生成器は
熱雑音や量子ゆらぎなどによって
実現されている。
17. そんな中、こんな論文が出る
「Yevgeniy
Dodis,
David
Pointcheval,
Sylvain
Ruhault,
Damien
Vergnaud,
Daniel
Wichs:
Security
analysis
of
pseudo-‐random
number
generators
with
input:
/dev/random
is
not
robust.
ACM
Conference
on
Computer
and
CommunicaTons
Security
2013:
647-‐658」(以下[DPRVW13]とする)
要約:
入力付き乱数生成器の理論モデルつ
くって検証してみたら、そもそもLinuxの
「/dev/random」「/dev/urandom」はどっ
ちもエントロピー推定器に問題があって
ロバストとまでは言えないっぽい。
俺がもっと良い実装考えたから使って
みれば良いと思うよ。
サーバーがロックする
↘
/dev/urandomに変更
↙
[DPRVW13]が発表される
↘
心ぴょんぴょんできない
↙
_人人人人人人_
> 突然の死 <
 ̄^Y^Y^Y^Y^ ̄
25. 問題B
:
Premature
Next問題
(1)
エントロピー
源
• デタラメなビット列を出力
エントロピー
推定器
• デタラメなビット列からランダムネスな部分(エント
ロピーが高い)を切り取る
エントロピー
プール
• 集めたエントロピーを蓄える
エクストラク
タ
• エントロピープールからビット列を出力
エントロ
ピーI
状態
Sn-1
状態
Sn
refresh
乱数
R
状態
Sn+1
next
条件
1
乱数Rから次の状態Snを
推測することができる
か?
エントロピーによって、状態Sn+1
は再びランダムネスを取り戻す
問題
B
26. 問題B
:
Premature
Next問題 (2)
エントロピー
源
• デタラメなビット列を出力
エントロピー
推定器
• デタラメなビット列からランダムネスな部分(エント
ロピーが高い)を切り取る
エントロピー
プール
• 集めたエントロピーを蓄える
エクストラク
タ
• エントロピープールからビット列を出力
エントロ
ピーI
状態
Sn-1
状態
Sn
refresh
乱数
R
状態
Sn+1
next
条件
1
問題
B
エントロピーが0であれば
乱数Rから新しい
状態Snを取得可能
エントロピーによって、状態Sn+1
は再びランダムネスを取り戻す
27. 問題B
:
Premature
Next問題 (3)
エントロピー
源
• デタラメなビット列を出力
エントロピー
推定器
• デタラメなビット列からランダムネスな部分(エント
ロピーが高い)を切り取る
エントロピー
プール
• 集めたエントロピーを蓄える
エクストラク
タ
• エントロピープールからビット列を出力
エントロ
ピーI
状態
Sn-1
状態
Sn
refresh
乱数
R
状態
Sn+1
next
条件
1
問題
B
エントロピーを0に近づけるこ
とは可能か?
蓄えるより
早く……
乱数を出力
させまくる!
最終的には
次の状態Snを予測可能
(Premature
Next攻撃)
エクストラクタが
一定の値を出力
=エントロピーが0
30. 安心して欲しいこと!
安全性が破られる≠攻撃可能
• エントロピー推定器やPremature
Nextを用いた現実的
な攻撃法はまだ存在しない(ことになっている)
• しかし、1980年末に発表された差分解読法のときのよ
うに、発表されてない可能性も十分ある。(1970年台
にはIBMが知っており、NSAと協議した結果、第3者に
よる発表があるまで沈黙を守った)
31. まとめ
• 乱数は暗号に不可欠なのであり、その質を保つことは
急務である
• 入力付き乱数生成器には問題がある
– エントロピー推定器問題
– Premature
Next問題
• Linuxのエントロピー推定器には問題がある
([DPRVW13])が、乱数を判定するという方法では対策
が本質的に困難である
• Premature
Next問題に関するロバストネスな運用法は、
[DSSD14]で理論的に示された
• 理論的な攻撃を秘密裏に研究することで、サイバース
ペースを支配することが可能かも
32. 参考論文
• [DPRVW13]Yevgeniy
Dodis,
David
Pointcheval,
Sylvain
Ruhault,
Damien
Vergnaud,
Daniel
Wichs:
Security
analysis
of
pseudo-‐random
number
generators
with
input:
/dev/random
is
not
robust.
ACM
Conference
on
Computer
and
CommunicaTons
Security
2013:
647-‐658
• [DSSD14]
Yevgeniy
Dodis,
Adi
Shamir,
Noah
Stephens-‐Davidowitz,
Daniel
Wichs:
How
to
Eat
Your
Entropy
and
Have
it
Too
-‐
OpTmal
Recovery
Strategies
for
Compromised
RNGs.
IACR
Cryptology
ePrint
Archive
2014:
167
(2014)
34. Appendix:実装について
(2014/07/12現在)
• /dev/random(Linux)
–
エントロピープールは実質的に1本
• 4096ビットのエントロピープールを1本(入力プール)
• 1024ビットの内部プールが2本(出力プール)
– /dev/randomは入力プールのエントロピーが十分でないとき、ロックする。
– /dev/urandomは入力プールのエントロピーが十分でないとき、出力プールを
再利用して擬似乱数を返す。つまり、ロックフリー。
• Yarrow-‐160(FreeBSD/Mac
OS
X)
–
エントロピープールは2本。ロックフリー。
• Fast
pool
–頻繁にリシード可・エントロピー抽出機の質は低い
• Slow
pool–頻繁にリシード不可・エントロピー抽出機の質は高い
• Fortuna(Windows
8から?)
– エントロピープールは32本。ロックフリー?(一応Yarrowベース)
– InjecTon攻撃に耐性あり
– Premature
Next攻撃へ対策済み(エントロピープールのスケジューラが存在)