random32: add periodic reseeding
authorHannes Frederic Sowa <hannes@stressinduktion.org>
Mon, 11 Nov 2013 11:20:33 +0000 (12:20 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 11 Nov 2013 19:32:14 +0000 (14:32 -0500)
commit6d31920246a9fc80be4f16acd27c0bbe8d7b8494
tree59cf494b43a77fd528c77364c2376e65975a128a
parent51c37a70aaa3f95773af560e6db3073520513912
random32: add periodic reseeding

The current Tausworthe PRNG is never reseeded with truly random data after
the first attempt in late_initcall. As this PRNG is used for some critical
random data as e.g. UDP port randomization we should try better and reseed
the PRNG once in a while with truly random data from get_random_bytes().

When we reseed with prandom_seed we now make also sure to throw the first
output away. This suffices the reseeding procedure.

The delay calculation is based on a proposal from Eric Dumazet.

Joint work with Daniel Borkmann.

Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
lib/random32.c