[PATCH] crypto: testmgr - block Crypto API xxhash64 in FIPS mode

Thomas Huth thuth at redhat.com
Fri Oct 2 04:06:58 PDT 2026


On 11/09/2026 04.53, Joachim Vandersmissen wrote:
> Hi Eric,
> 
> On 9/10/26 9:14 AM, Eric Biggers wrote:
>> On Thu, Sep 10, 2026 at 10:57:32AM +0200, Thomas Huth wrote:
>>> On 10/09/2026 05.24, Joachim Vandersmissen wrote:
>>>> Hi Thomas,
>>>>
>>>> On 9/9/26 9:36 AM, Thomas Huth wrote:
>>>>> On 15/03/2026 01.43, Joachim Vandersmissen wrote:
>>>>>> Hi Herbert,
>>>>>>
>>>>>> I don't think this one can be applied yet since dm-integrity
>>>>>> still uses xxhash64 through the crypto API. This would break
>>>>>> fips=1 systems that use it.
>>>>> Out of curiosity: Wouldn't such a system be FIPS-incompliant anyway?
>>>>> If xxhash64 isn't FIPS-compliant, nobody should use it for
>>>>> dm-integrity there, right? So I doubt that there are any systems out
>>>>> there that use fips=1 and use xxhash64 at the same time?
>>>> There is a risk that users may not know that xxhash64 is not FIPS
>>>> compliant and would still use it. Especially considering it was marked
>>>> as "fips_allowed = 1" for a while.
>>> So isn't that a very bad situation? They think they are FIPS compliant, but
>>> actually they are not since they use an unapproved algorithm by accident.
>>> Maybe it would be better to include this patch so that they are aware of the
>>> mistake? If there is really somebody running into this issue, they could
>>> boot once with fips=0, fix their system, reboot again with fips=1 and
>>> finally be really compliant. Sounds like the better solution to me. WDYT?
>> As described in the dm-integrity documentation, dm-integrity supports
>> non-cryptographic checksums for protection from accidental corruption.
>> That use case is no different from any other use case of a checksum.
>>
>> It's also no different from using crc32 or crc32c, which similarly have
>> fips_allowed=1 and this patch completely ignores.
>>
>> The solution is not banning checksums or making any other code change,
>> but rather just doing what it seems everyone has already been doing:
>> documenting in their FIPS security policy that checksums are only for
>> use cases that are not "security functions".
> 
> Unfortunately, this is not an option anymore due to the opinion of the CMVP 
> that was issued back in March. If you have an account (you can sign up for 
> free), you can read it in full here: https://cmuf-workspace.org/Products/ 
> Projects/Messages.aspx?prjID=3&id=559. I can also send a copy of the PDF 
> file privately, if necessary.
> 
> The relevant text is:
> 
>      1.a. Can xxhash64 be used in approved mode as non-security function 
> without any further action (in this case FIPS IG 2.4.A will not be applicable)?
> 
>      Answer: No, xxhash64 cannot be understood as a non-security function 
> because:
>      1) It is offered as an equivalent hash alternative to approved hash 
> algorithms (i.e., SHA) using the same interface/API and therefore appears to 
> an operator that it can provide cryptographic protection (i.e., security).
>      2) Its return value (i.e., mode indicator) is the same as for approved 
> cryptographic functions that provide security.
>      3) It is accessed by an interface/API that has “crypto” in the name and 
> thus implies security.
>      4) It is an available hash function (i.e. PRF) of HMAC, which is a 
> keyed algorithm that implies security.

Ok, thanks for making this clear. So that means for FIPS certification, 
xxhash64 *has* to be disabled in fips_enabled mode, right? Thus every distro 
that cares for FIPS certification has to include this patch. Every other 
distro doesn't care for fips_enabled anyway, so they should not care about 
this patch whether it's applied or not. I.e. there cannot be any user who 
uses xxhash64 in a fips_enabled system (unless someone is masochistic enough 
to turn it on with an upstream kernel in a environment that does not need 
FIPS compliance). So I think we really should include this patch into the 
upstream kernel now, too. WDYT?

> crc32 and crc32c were not explicitly called out in the resolution, which is 
> why this patch didn't target them. Though following the same rationale, they 
> should also be disabled.
Sounds reasonable to me, but maybe this can wait 'til the CMVP explicitely 
asks for it?

  Thomas




More information about the linux-arm-kernel mailing list