Bug 2164763

Summary: In FIPS mode, openssl should reject short KDF input or output keys or provide an indicator
Product: Red Hat Enterprise Linux 9 Reporter: Clemens Lang <cllang>
Component: opensslAssignee: Clemens Lang <cllang>
Status: CLOSED ERRATA QA Contact: Alicja Kario <hkario>
Severity: high Docs Contact:
Priority: high    
Version: 9.0CC: cllang, dbelyavs, hkario, ssorce
Target Milestone: rcKeywords: Triaged, ZStream
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: openssl-3.0.7-17.el9 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of:
: 2175864 2175865 2175866 (view as bug list) Environment:
Last Closed: 2023-11-07 08:52:59 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2175864, 2175865, 2175866    

Description Clemens Lang 2023-01-26 12:34:54 UTC
Description of problem:
In bug 2141695, we implemented an indicator for short input key lengths used in the KBKDF for OpenSSL, since we assumed that the restriction defined in SP 800-131Ar2 section 8 refers to SP 800-108 KDFs (which are what's implemented by OpenSSL as "KBKDF").

Further communication with our lab suggests that this limitation should apply to all KDFs (except PBKDF2 where we already have different limits implemented), and should also apply to KDF output key lengths.

Specifically, FIPS 140-3 IG D.B has a table that shows that any algorithm at a security strength < 112 bits is legacy use only, and SP 800-131Ar2 section 1.2.1 has similar wording.


Version-Release number of selected component (if applicable):
openssl-3.0.1-44.el9_0.1

How reproducible:
Run the kdf2.c reproducer from https://bugzilla.redhat.com/show_bug.cgi?id=2160733 with short input key lengths or short output key lengths.

Actual results:
Explicit FIPS indicator is not present or still approved despite short key length.

Expected results:
Explicit FIPS indicator marks these uses as not approved.

Additional info:
Note that the length of the derived key is only passed on invocation of EVP_KDF_derive() and not available in the parameters earlier. This means that the indicator will only indicate that this operation was not approved *after* the operation.

Comment 2 Clemens Lang 2023-02-16 13:22:24 UTC
For calls to EVP_KDF_derive() with short output lengths, we decided to also change the explicit indicator queried from the EVP_KDF_CTX. We will set the indicator to unapproved when any EVP_KDF_derive() invocation uses a short key length, and will not re-set it when a subsequent call uses a longer output key length.

Comment 17 errata-xmlrpc 2023-11-07 08:52:59 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (openssl bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2023:6627