On 26.06.2017 20:51, Salz, Rich via openssl-dev wrote:
>
>> Constructive suggestion: If you want to see what a RNG looks like when
>> designed by cryptographers, take a look at:
>> Elaine Barker and John Kelsey,
>> “Recommendation for Random Number Generation Using Deterministic
>> Random Bit Generators”
>> http://csrc.nist.gov/publications/nistpubs/800-90A/SP800-90A.pdf
>>
>> That design may look complicated, but if you think you can leave out some of
>> the blocks in their diagram, proceed with caution. Every one of those blocks
>> is there for a reason.
> Well maybe I can ignore section 10.3?
>
That's a nice joke Rich, but the Dual_EC_DRBG chapter has been dropped in
SP800-90Ar1, which supersedes SP800-90A:
http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90Ar1.pdf
But seriously: OpenSSL already has an implementation of the SP800-90A DRBG, but
unfortunately it is only part of the
FIPS object module (see reference [1] below). I always wondered why the code
was never migrated to OpenSSL master,
(say, replacing the FIPS_drbg_* names by e.g. RAND_drbg_*). Then the SP800-90A
DRBG would be usable by everyone
and could be activated by
RAND_set_rand_method(RAND_drbg_method());
To me, the design and implementation of the DRBG appeals sophisticated and I
like its concept for reseeding which is highly
configurable using
FIPS_drbg_set_reseed_interval() and
FIPS_drbg_set_callbacks()
In fact, we are currently using the AES-CTR DRBG in our product (see [2])
because we had the requirement that the random generator
should be seeded periodically from an external entropy source, for example a
smart card or a cryptographic acceleration unit.
This was easily achieved using the aforementioned DRBG callback mechanism.
So I have two questions:
- Do you intend to continue supporting RAND_set_rand_method() or will there
only be one 'perfect' random generator and no choice anymore?
- Do you consider the SP800-90A DRBG outdated or will there be a chance that it
will be added to the OpenSSL master as
officially supported RAND method?
- Will the new OpenSSL RNG support a way to configure reseed intervals and
external entropy sources in a similar fashion
as the FIPS DRBG did?
Best regards,
Matthias St. Pierre
[1] Section 6.1 of the OpenSSL FIPS User Guide 2.0
https://www.openssl.org/docs/fips/UserGuide-2.0.pdf
[2] We link against a FIPS capable OpenSSL 1.0.2 crypto library and use the
FIPS DRBG even in the case where FIPS mode
is not enabled globally: In that case, during initialization we check
whether FIPS mode initialization is successfull, then
and then turn FIPS mode off again and only keep the random generator by
calling RAND_set_rand_method(FIPS_drbg_method()).
For Windows, we had to add some FIPS_drbg_* symbols to libeay.num to
make this work.
--
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev