|
|
Log in / Subscribe / Register

Re: DRBG seeding

From:  Herbert Xu <herbert-AT-gondor.apana.org.au>
To:  Stephan Mueller <smueller-AT-chronox.de>
Subject:  Re: DRBG seeding
Date:  Sat, 18 Apr 2015 10:16:24 +0800
Message-ID:  <20150418021624.GA2653@gondor.apana.org.au>
Cc:  Andreas Steffen <andreas.steffen-AT-strongswan.org>, Linux Crypto Mailing List <linux-crypto-AT-vger.kernel.org>, Theodore Ts'o <tytso-AT-mit.edu>, Linux Kernel Mailing List <linux-kernel-AT-vger.kernel.org>
Archive‑link:  Article

On Sat, Apr 18, 2015 at 04:04:14AM +0200, Stephan Mueller wrote:
> 
> However, the only serious solution I can offer to not block is to use my 
> Jitter RNG which delivers entropy in (almost all) use cases. See [1]. The code 
> is relatively small and does not have any dependencies. In this case, we could 
> perform the initialization of the DRBG as follows:
> 
> 1. pull buffer of size entropy + nonce from get_random_bytes
> 
> 2. pull another buffer of size entropy + nonce from my Jitter RNG
> 
> 3. XOR both

Don't xor them.  Just provide them both as input to the seed
function.

> 4. seed the DRBG with it
> 
> 5. trigger the async invocation of the in-kernel /dev/random
> 
> 6. return the DRBG instance to the caller without waiting for the completion 
> of step 5
> 
> This way, we will get entropy during the first initialization without 
> blocking. After speaking with mathematicians at NIST, that Jitter RNG approach 
> would be accepted. Note, I personally think that the Jitter RNG has sufficient 
> entropy in almost all circumstances (see the massive testing I conducted on 
> all more widely used CPUs).
> 
> [1] http://www.chronox.de/jent.html

OK this sounds like it should satisfy everybody.

Thanks,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



to post comments


Copyright © 2015, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds