Re: mutual authentication fails when FIPS enabled
George <[email protected]> Mon, 1 Feb 2021 12:39:30 -0500
| Newsgroups | gmane.comp.encryption.opensc.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi,
  I had a closer look at this problem and confirmed that I have
successfully enabled FIPS in OpenSSL and am using the FIPS compliant
cipher suite TLS_RSA_WITH_AES_128_CBC_SHA.
(https://wiki.openssl.org/index.php/FIPS_mode_and_TLS#TLS_1.2)
However, LIBP11 still fails unless I make a modification to the source
code in p11_rsa.c. Does this mean there is indeed a bug in LIBP11?
I changed the line
RSA_meth_set_flags(ops, 0);
to
RSA_meth_set_flags(ops, *RSA_FLAG_FIPS_METHOD*);
in the code
RSA_METHOD *PKCS11_get_rsa_method(void)
{
   static RSA_METHOD *ops = NULL;
   if (!ops) {
      alloc_rsa_ex_index();
      ops = RSA_meth_dup(RSA_get_default_method());
      if (!ops)
         return NULL;
      RSA_meth_set1_name(ops, "libp11 RSA method");
      RSA_meth_set_flags(ops, RSA_FLAG_FIPS_METHOD);
      RSA_meth_set_priv_enc(ops, pkcs11_rsa_priv_enc_method);
      RSA_meth_set_priv_dec(ops, pkcs11_rsa_priv_dec_method);
      RSA_meth_set_finish(ops, pkcs11_rsa_free_method);
   }
   return ops;
}
(This was desribed in https://bugzilla.redhat.com/show_bug.cgi?id=1827535 )
The flag RSA_FLAG_FIPS_METHOD is defined to specify the RSA methods are
FIPS compliant:
/* If this flag is set the RSA method is FIPS compliant and can be used
* in FIPS mode. This is set in the validated module method. If an
* application sets this flag in its own methods it is its responsibility
* to ensure the result is compliant.
*/
#define RSA_FLAG_FIPS_METHODÂ Â Â Â Â Â Â Â Â Â Â 0x0400
Thanks,
George
On 2021-01-28 2:03 a.m., George wrote:
> Thanks for the information. Do you mean the line
> RSA_meth_set_flags(ops, RSA_FLAG_FIPS_METHOD);
> will allow the inclusion of non-FIPS compliant algorithms?
>
> Â Does this mean I should not be using LIBP11 if I want my code to be
> FIPS-compliant?
>
>
> Thanks,
> George
>
>
> On 2021-01-27 2:54 a.m., Petr Pisar wrote:
>> V Tue, Jan 26, 2021 at 11:25:13PM -0500, George napsal(a):
>>> Â When I attempt to do mutual authentication with a smart card, it
>>> fails. The problem appears to be related to enabling FIPS. I am using
>>> OpenSSL 1.0.2u(with FIPS) and LIBP11 0.4.11.
>>> The found the following Red Hat bug report, which describes the exact
>>> same problem I am seeing:
>>> https://bugzilla.redhat.com/show_bug.cgi?id=1827535
>>>
>>> Is this a known LIBP11 bug? Will it be fixed in future versions of LIBP11?
>>>
>>> A suggested workaround in the above link is to make a change in the file
>>> libp11-libp11-0.4.11\src\p11_rsa.c:
>>> Change the line
>>>
>>> RSA_meth_set_flags(ops, 0);
>>>
>>> to
>>>
>>> RSA_meth_set_flags(ops, RSA_FLAG_FIPS_METHOD);
>>>
>>>
>>> Once I did this, it fixed my problem. Is this a proper fix?
>>>
>> The flag disables exclusion of FIPS noncompliant algorithms (e.g. MD5) from
>> the OpenSSL routines and leaves the compliance to the application.
>>
>> In other words your system is not FIPS compliant anymore unless you get FIPS
>> certification for your patched libp11.
>>
>> The questions are:
>>
>> Do you really need FIPS compliance? If not, then do not enable FIPS mode.
>>
>> Does the mutual authentication protocol manadate use of noncompliant
>> algorithms? If yes, then it's broken by desisign and you simply cannot use the
>> authentication in FIPS mode. Otherwise libp11 and your smart card should use
>> a different, compliant algorithm instead.
>>
>> Is smart card mutual authentication subject of FIPS compliance? Technically
>> you can use non-compliant algorithms for non-cryprographical purposes even in
>> FIPS mode. E.g. MD5 for hash tables or data identification. But in my opinion
>> authentication falls into a FIPS realm, so this not the case. You should talk
>> to your security auditor about this.
>>
>> -- Petr
>>
>>
>> _______________________________________________
>> Opensc-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/opensc-devel
>
_______________________________________________
Opensc-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensc-devel