linux/fs/ecryptfs
Eric Biggers 0bbb838f38
ecryptfs: Use MD5 library instead of crypto_shash
eCryptfs uses MD5 for a couple unusual purposes: to "mix" the key into
the IVs for file contents encryption (similar to ESSIV), and to prepend
some key-dependent bytes to the plaintext when encrypting filenames
(which is useless since eCryptfs encrypts the filenames with ECB).

Currently, eCryptfs computes these MD5 hashes using the crypto_shash
API.  Update it to instead use the MD5 library API.  This is simpler and
faster: the library doesn't require memory allocations, can't fail, and
provides direct access to MD5 without overhead such as indirect calls.

To preserve the existing behavior of eCryptfs support being disabled
when the kernel is booted with "fips=1", make ecryptfs_get_tree() check
fips_enabled itself.  Previously it relied on crypto_alloc_shash("md5")
failing.  I don't know for sure that this is actually needed; e.g., it
could be argued that eCryptfs's use of MD5 isn't for a security purpose
as far as FIPS is concerned.  But this preserves the existing behavior.

Tested by verifying that an existing eCryptfs can still be mounted with
a kernel that has this commit, with all the files matching.  Also tested
creating a filesystem with this commit and mounting+reading it without.

Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Link: https://patch.msgid.link/20251011200010.193140-1-ebiggers@kernel.org
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
History 2025-10-31 10:12:35 +01:00
..
crypto.c ecryptfs: Use MD5 library instead of crypto_shash 2025-10-31 10:12:35 +01:00
debug.c ecryptfs: debug: Demote a couple of kernel-doc abuses 2021-04-19 04:42:13 +00:00
dentry.c ecryptfs: get rid of pointless mount references in ecryptfs dentries 2025-09-15 21:26:44 -04:00
ecryptfs_kernel.h ecryptfs: Use MD5 library instead of crypto_shash 2025-10-31 10:12:35 +01:00
file.c ecryptfs: get rid of pointless mount references in ecryptfs dentries 2025-09-15 21:26:44 -04:00
inode.c ecryptfs: Use MD5 library instead of crypto_shash 2025-10-31 10:12:35 +01:00
Kconfig ecryptfs: Use MD5 library instead of crypto_shash 2025-10-31 10:12:35 +01:00
keystore.c ecryptfs: Use MD5 library instead of crypto_shash 2025-10-31 10:12:35 +01:00
kthread.c ecryptfs: kthread: Demote file header and provide description for 'cred' 2021-04-19 04:42:13 +00:00
main.c ecryptfs: Use MD5 library instead of crypto_shash 2025-10-31 10:12:35 +01:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
messaging.c eCryptfs: Use DEFINE_MUTEX() for mutex lock 2021-04-19 04:42:13 +00:00
miscdev.c ecryptfs: miscdev: File headers are not good kernel-doc candidates 2021-04-19 04:42:13 +00:00
mmap.c fs: change write_begin/write_end interface to take struct kiocb * 2025-07-16 14:48:18 +02:00
read_write.c ecryptfs: Convert ecryptfs_encrypt_page() to take a folio 2024-11-05 17:19:59 +01:00
super.c ecryptfs: Use MD5 library instead of crypto_shash 2025-10-31 10:12:35 +01:00