]> git.baikalelectronics.ru Git - kernel.git/commit
crypto: drbg - Mix a time stamp into DRBG state
authorStephan Mueller <smueller@chronox.de>
Sun, 6 Jul 2014 00:25:36 +0000 (02:25 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 8 Jul 2014 13:18:25 +0000 (21:18 +0800)
commitb0c81490f3501e8ef00d3e1cf56a1069e2f02070
tree4f392026252cb1f1fb0a94a84204e424b0001b65
parentfabb7bbac9818e7738d9c31037a1b0e78ebbdd29
crypto: drbg - Mix a time stamp into DRBG state

The current locking approach of the DRBG tries to keep the protected
code paths very minimal. It is therefore possible that two threads query
one DRBG instance at the same time. When thread A requests random
numbers, a shadow copy of the DRBG state is created upon which the
request for A is processed. After finishing the state for A's request is
merged back into the DRBG state. If now thread B requests random numbers
from the same DRBG after the request for thread A is received, but
before A's shadow state is merged back, the random numbers for B will be
identical to the ones for A. Please note that the time window is very
small for this scenario.

To prevent that there is even a theoretical chance for thread A and B
having the same DRBG state, the current time stamp is provided as
additional information string for each new request.

The addition of the time stamp as additional information string implies
that now all generate functions must be capable to process a linked
list with additional information strings instead of a scalar.

CC: Rafael Aquini <aquini@redhat.com>
Signed-off-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/drbg.c
include/crypto/drbg.h