Re: [BLFS Trac] #23633: cryptsetup-2.8.7
BLFS Trac ([email protected] via blfs-book Mailing List) <[email protected]> Wed, 22 Jul 2026 23:53:30 -0000
| Newsgroups | gmane.linux.lfs.beyond.book |
|---|---|
| Message-ID | <[email protected]> |
#23633: cryptsetup-2.8.7
-------------------------+--------------------------
Reporter: Bruce Dubbs | Owner: Bruce Dubbs
Type: enhancement | Status: assigned
Priority: normal | Milestone: 13.1
Component: BOOK | Version: git
Severity: normal | Resolution:
Keywords: |
-------------------------+--------------------------
Comment (by Bruce Dubbs):
Cryptsetup 2.8.7 Release Notes
Changes since version 2.8.6
* Changes related to Linux kernel AF_ALG crypto userspace interface
deprecation
Linux kernel maintainers decided to deprecate the AF_ALG interface,
which was
heavily used by cryptsetup, with the plan to remove it (or severely
limit it)
for security reasons. Libcryptsetup uses userspace (primarily via
AF_ALG)
for processing LUKS keyslots and for on-disk metadata handling for other
formats. Using AF_ALG ensured that the same set of algorithms is present
in
userspace and later in-kernel for device activation.
While libcryptsetup has a concept of fallback to userspace library, it
was
not used in all situations.
In this version, libcryptsetup can use a userspace crypto library,
AF_ALG (if
present), and in some situations (LUKS keyslots), fallback to a
temporary
dm-crypt mapping. The last option requires root privileges. This ensures
that
most operations will continue to work even when AF_ALG is disabled or
limited.
Unfortunately, removing the AF_ALG could cause severe compatibility
issues if
the required algorithm (or encryption mode) is not implemented in the
userspace library. A typical example is the Adiantum cipher, which is
implemented only in the kernel. Also, ciphers like Serpent or Twofish
(in XTS
mode) are missing from several userspace libraries. The cryptsetup
benchmark
for ciphers is no longer available if the AF_ALG interface is
unavailable.
* Keyring handling changes.
Libcryptsetup can use the kernel keyring to transfer the volume key into
the
kernel, avoiding sending it as a parameter to system calls.
In previous versions, the volume key could be stored in the thread
keyring,
which should be removed when the process exits. Unfortunately, the
thread
keyring can remain active in some situations (such as when allocating a
loop
device). This could be a problem after calling luksSuspend when the
volume
key could remain in memory.
Instead of loading volume keys directly into the thread keyring,
cryptsetup
now creates an intermediary keyring linked into the thread keyring and
loads
volume keys there. The intermediary keyring is now removed in the
libcryptsetup context destructor (usually on application exit).
Note that in previous versions, volume keys persisted until the process
exited (even after the context destructor was called).
* Changes related to possible LUKS volume key digest collisions.
LUKS on-disk metadata uses a volume key digest generated by the PBKDF2
key-derivation algorithm to verify that the decrypted volume key is
valid.
The use of PBKDF2 (instead of a more suitable cryptographic digest
algorithm)
is part of the original LUKS design. It was retained for LUKS2 for
compatibility (it allows easy in-place conversion).
However, PBKDF2 has several design flaws. As it is based on HMAC (Hash-
based
Message Authentication Code), it also inherits the weak-key HMAC issue.
In
HMAC, the key can be arbitrarily long. If the key is shorter than the
hash
internal block size, it is padded with zeroes to a full block size. This
flawed padding causes any HMAC key (shorter than the specified block
size) to
collide with keys that have added trailing zeroes. A collision means
that
HMAC (and PBKDF2) has the same output for colliding keys.
In LUKS, a PBKDF2 collision is not a security issue; it cannot
compromise
data confidentiality. Moreover, the colliding key has a different
length and
should be rejected by the underlying block cipher. Unfortunately, in
some
reencryption scenarios (e.g., a header without keyslots), a collision
key
could be accepted, leading to possible data corruption.
Code now always validates the expected key length. This validation is
now
strictly implemented in LUKS metadata processing.
In the long term, LUKS will need to upgrade to a better volume key
digest
algorithm, but that will make the format backward-incompatible.
* Support Aria and Camellia ciphers in the libgcrypt cryptographic
backend.
* Fix pkg-config library entry for the Mbed TLS cryptographic backend.
* Better document CRYPT_VOLUME_KEY_NO_SEGMENT and
CRYPT_VOLUME_KEY_DIGEST_REUSE
* API flags.
The keyslot created with the CRYPT_VOLUME_KEY_NO_SEGMENT flag must
always be
unbound (not assigned to the default data segment). The use of the
CRYPT_VOLUME_KEY_DIGEST_REUSE flag does not make sense without the
CRYPT_VOLUME_KEY_NO_SEGMENT or CRYPT_VOLUME_KEY_SET flags.
* Fix several possible corner cases in OpenSSL cryptographic backend
(based on
* AI analysis).
These include checking before casting from size_t to int, checking
return
values for the old OpenSSL HMAC API, avoiding sending a partial buffer
to the
caller if the operation fails, and explicitly checking for buffer length
overflow. Most of these cannot happen in the libcryptsetup context, but
the
cryptographic backend can be used for other projects.
* Code hardening based on various AI analysis reports.
Including a fix for snprintf truncation in libdevmapper code, avoiding
possible leak of JSON keyslot object on error path, and a fix for
reencryption temporary device name.
* Fix jq (JSON commandline processor) use in testing scripts.
After the security update for jq, it no longer processes JSON with
trailing
zeroes. Regression test scripts were updated to avoid using this
scenario.
* Add support for --integrity-legacy-hmac in integritysetup open command.
Integritysetup open command incorrectly configured options for legacy
HMAC
devices. To use --integrity-legacy-hmac, it must now be used both on
format
and open.
* Fix cryptsetup --tries option not to overflow for high values.
--
Ticket URL: <https://wiki.linuxfromscratch.org/blfs/ticket/23633#comment:2>
BLFS Trac <https://wiki.linuxfromscratch.org/blfs/>
Beyond Linux From Scratch
--
http://lists.linuxfromscratch.org/sympa/info/blfs-book
Unsubscribe: See the above information page