最近、Linux サーバーのエントロピーが低くなりすぎて、/dev/urandom の読み取りが期待されるバイト数よりも少ない値を返したときに、適切に処理できないというバグがありました。
これをテストで再現するにはどうすればよいですか? システムのエントロピーを下げる方法や、確実に /dev/urandom を空にする方法はありますか?
修正を検証する回帰テストを実行できるようにしたいと考えています。Ubuntu 12.04 を使用しています。
random(4)のマニュアルページによると、
read from the /dev/urandom device will not block
ブロックしたい場合は、 /dev/random
(なしで)から多くのバイトを読み取る必要があります。u
(ハードウェアとシステムに依存する数)。
/dev/urandom
だから、あなたは「吐き出す」ことができません。
A read from the /dev/urandom device will not block waiting for more entropy. As a result, if there is not sufficient entropy in the entropy pool, the returned values are theoretically vulnerable to a cryptographic attack on the algorithms used by the driver.
/dev/random
ブロッキングすることで、実際に使い果たされる可能性のあるものを使用する必要があると思います。ただし、そこから約256ビットを超えて読み取ることはできません。