Entropy Source for Openssl 3.8
Dr Paul Dale
pauli at openssl.org
Wed Aug 30 22:51:23 UTC 2023
Manish,
The code there is somewhat confused by the way the FIPS provider gathers
it's entropy.
It doesn't access the seed source directly, instead it has call-backs
into libcrypto to request entropy.
The critical function is ossl_rand_get_entropy in
crypto/rand/prov_seed.c. This function satisfies the FIPS provider's
request for entropy and it doesn't access the seed source specified,
instead it goes directly to OpenSSL's internal entropy gathering.
So, no there isn't a way to do what you want.
It wasn't intended to operate this way and I'll look at producing a fix.
Pauli
On 31/8/23 03:59, Manish Patidar wrote:
> Hi Paul,
> I have created provider for entropy and set the seed source
> using RAND_set_seed_source_type(). This is working fine non-fips mode
> but its not working in fips mode.
>
> Look like, entropy provider can't be used in fips mode.
>
> RAND_bytes_ex - > RAND_get0_public - > RAND_get0_primary :
> Code which get entropy from provider is under #ifndef FIPS_MODULE
> #ifndef FIPS_MODULE
> If (dgbl->seed == NULL) {
> dgbl->seed = rand_new_seed(ctx)
> }
> #endif
> dbgl->primary = rand_new_drbg(ctx, dbgl->seed)
>
> In non-fips mode, dbgl->seed is not null (act as parent) but in fips
> mode it is NULL and parent is null.
>
> Is this correct?
> Is there any way to set custom entropy source in fips mode?
>
> Regards
> Manish
>
>
> On Wed, 12 Jul 2023, 5:10 am Dr Paul Dale, <pauli at openssl.org> wrote:
>
> Manish et al,
>
> If you create a provider that supplies an equivalent to
> EVP_RAND_seed that accesses your hardware entropy source, you can
> use this for both the FIPS and non-FIPS case. Call
> RAND_set_seed_source_type() early on to use your seed source
> instead of the built in ones. Alternatively, this can be done via
> configuration (search for "seed" in the config(5) man page for
> details).
>
>
> Paul Dale
>
>
> On 11/7/23 01:34, Manish Patidar wrote:
>> Thanks Pauli for your response.
>> Still I am not clear how to feed the h/w entropy to openssl.
>>
>> For Non-fips mode , as per your suggestion, we have two option:
>>
>> 1. RAND_set_rand_method/RAND_set_rand_engine
>> Need implement method using EVP_RAND (EVP_RAND_fetch ,
>> EVP_RAND_CTX_new, EVP_RAND_instantiate, EVP_RAND_seed,
>> EVP_RAND_generate)
>> and set the method(RAND_set_rand_method) to openssl
>> How to feed h/w entropy, using EVP_RAND_seed ?
>>
>> 2. Write a new provider, if we can't use the above method
>> We can refer to test/testutil/fake_random.c ?
>> Internally, can we use EVP_RAND (AES_CTR DRBG) in provider
>> implementation ?
>>
>> For Fips mode:
>> We need to use AES_CTR drbg, how to provide hardware entropy
>> to FIPS providers.
>> How to replace "seed" source, can you please provide more
>> details. ?
>>
>> Is it possible to have a common solution for both FIPS and
>> non-FIPS mode ?
>>
>> Regards
>> Manish
>>
>> On Mon, Jun 26, 2023 at 3:18 AM Dr Paul Dale <pauli at openssl.org>
>> wrote:
>>
>> Both RAND_set_rand_method and RAND_set_rand_engine exist in
>> 3.0.8. They
>> are deprecated but I doubt they'll be removed for a long time
>> -- per our
>> policies, they won't be before OpenSSL 4.0 is released.
>>
>> If you really want to avoid these two, you will have to write
>> a provider
>> that implements access to the entropy source. You can then
>> use this
>> provider instead of OpenSSL's default sources. I suggest
>> looking at the
>> "test" and "seed" randoms.
>>
>> For FIPS usage, it would be easiest to replace the "seed"
>> source and
>> this is outside the FIPS boundary. If you RNG is FIPS
>> validated, it
>> should be possible to use it directly, although the path is
>> more complex.
>>
>>
>> Pauli
>>
>> On 25/6/23 07:34, Manish Patidar wrote:
>> > Hi
>> > I am using Openssl 3.8 on rtos, we have harware random
>> entropy source
>> > for RNG. In our env, Openssl used entropy source is not
>> available.
>> >
>> > Look like entropy callback which used to available in earlier
>> > versions, is no more supported. I am wondering how to plungin
>> > hardware entropy to Openssl.
>> >
>> > We are going to use h/w entropy in fips mode also, so we
>> need solution
>> > which works for both mode.
>> >
>> > It will be really helpful if someone guide how to use h/w
>> entropy
>> > source in openssl 3.8
>> >
>> > Regards
>> > Manish
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mta.openssl.org/pipermail/openssl-users/attachments/20230831/1a9f4a01/attachment.htm>
More information about the openssl-users
mailing list