cryptsetup built with argon2 as the default key derivation function instead of PBKDF2
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
cryptsetup |
New
|
Undecided
|
Unassigned |
Bug Description
By default libargon2 is the chosen key derivation algorithm used by cryptsetup.
Unfortunately, this algorithm is not FIPS-compatible, so its use affects Canonical's claims of FIPS compliance for disk encryption after installing FIPS packages and enabling FIPS mode on kernel.
Proposed fix for this issue is to use OpenSSL's PBKDF2 algorithm, which, when the system is in FIPS mode, derives the keys using a FIPS-compliant algorithm.
Detailed proposal to fix:
1. Remove '--enable-
2. Add '--with-
This issue affects Bionic and Focal distributions, which provide FIPS-compliant packages, but probably affects Impish as well, which is planned to become FIPS-compliant.
description: | updated |
To provide more context in terms of business need. We use cryptsetup for full disk encryption, and cryptsetup correctly delegates its cryptography to other components such as openssl and kernel. However for key derivation cryptsetup switched to argon in 18.04 via a 3rd party library, and as this is not a FIPS validated library (as well as the algorithm is prohibited), the problem starts.
To comply with the regulations we need to be offering PBKDF by default because disk encryption currently is done at the installer that is not aware of the FIPS mode. It may be possible for the user to override, and cryptsetup should continue to be able to decrypt old volumes that use argon2 of course.
The ideal state is that in FIPS mode, cryptsetup should not allow to create a new volume with argon2, though it should be able to use it (see here about detecting fips mode https:/ /ubuntu. com/security/ certifications/ docs/fips- devel).
Note that there is an --enable-fips flag that may be helpful towards that goal, though I haven't verified.