Commit Graph

4222 Commits

Author SHA1 Message Date
Milan Broz
1eb3df45dd Opal: Do not allow format if device and Opal logical block size disagrees
Some Opal devices contain a bug that device reports different logical
size for block device and Opal SED layer.

This can happen for NVMe after reformatting with different LBAF (512/4096).

We will not support such configuration as Opal then calculates sizes
differently for locking range (that could lead to data corruption or
a partially unecrypted area).
2024-06-03 11:14:27 +00:00
Daniel Zatovic
af99b9b9d9 CI: Add Samsung 980 PRO OPAL test on trantor machine 2024-05-30 16:30:01 +02:00
Milan Broz
6859993ea7 Fix string.h, strings.h and stdio.h include in crypto backend.
String.h and stdbool.h are already included in main backend header,
no need to include them again.

Stdio.h is missing for OpenSSL and NSS backed (for sprintf).

Strings.h is missing for cipher_generic, gcrypt and OpoenSSL (strcasecmp).

Fixes: #885
2024-05-23 06:29:47 +00:00
Milan Broz
bd8cfe1efb Mention need for possible PSID reset for some OPAL drives in man page.
Fixes: #879
2024-05-23 06:29:20 +00:00
Milan Broz
c2c1d59ff2 bitlk: Ignore TPM key metadata
Using TPM entry on Linux is impossible, as we will never have
the same PCRs, so we can quietly ignore these entries without
warnings.
2024-05-21 11:27:14 +02:00
Milan Broz
dca99f7dc1 bitlk: Ignore unknown VMK entry 24
This VMK value looks like a password hint (masked email?)
we can safely ignore it.

Fixes: #886
2024-05-21 11:25:06 +02:00
Milan Broz
9b822800b3 tests: Use only PBKDF2 in api-test-2 images (FIPS with OpenSSL 3.2+)
For compatimage2 also add keyslot 1 that uses Argon2id PBKDF2 to keep
check for compatibility on non-fips system.
2024-05-13 10:22:02 +00:00
Milan Broz
0d6d4e4255 tests: Use only PBKDF2 in luks2_keyslot_unassigned.img (FIPS with OpenSSL 3.2+) 2024-05-13 10:22:02 +00:00
Milan Broz
a8e5bb0ebe tests: Fix redundant test number in compat-test2 2024-05-13 10:22:02 +00:00
Milan Broz
aa69fc342a tests: Skip zoned test if kernel does not support it
Zoned block device support can be disabled (as in RHEL8),
skip particular test if scsi_Debug does not create device.
(Modprobe does not return any error code, just kernel message
as parameter is actually supported, but block layer lack
support for zoned device.)
2024-05-13 10:22:02 +00:00
Milan Broz
d0678c208d tests: Remove leftover debug parameter. 2024-05-13 10:22:02 +00:00
Milan Broz
c21ccd89e3 Add tests for --key-description and --new-key-description. 2024-05-10 10:56:20 +02:00
Milan Broz
0f20e14c67 Rename TOKEN to KEY_DESC to be used in different context later. 2024-05-10 10:55:03 +02:00
Milan Broz
1e58ad570e Add --key-description and --new-key-description for luksAddKey command. 2024-05-10 10:54:59 +02:00
Milan Broz
73975857a3 Add --key-description for luksResume command. 2024-05-10 10:54:55 +02:00
Milan Broz
3c79fd6c4b Add --key-description for open command. 2024-05-10 10:54:50 +02:00
Milan Broz
82118bdd5f Add --key-description for resize command. 2024-05-10 10:54:47 +02:00
Milan Broz
3e01e151f8 Add --key-description for luksFormat command. 2024-05-10 10:54:43 +02:00
Milan Broz
e085ae461f Add --key-description for luksDump command. 2024-05-10 10:54:37 +02:00
Milan Broz
4a40d79322 Fix --key-description actions and define --new-key-description. 2024-05-10 10:54:32 +02:00
Daniel Zatovic
ea32731e5b CI: make OPAL tests run at the end
Once OPAL tests run, the whole pipeline gets marked as uninterruptible
(because of the uninterruptible OPAL job). Therefore a duplicate
pipeline gets started on e.g. MR change. Move OPAL jobs to test-opal
stage which runs at the end.
2024-05-07 14:32:41 +00:00
Ondrej Kozina
42a073c0cb Use crypt_wipe to zero rest of data device. 2024-05-07 12:30:05 +00:00
Ondrej Kozina
738b9ee645 Use proper write_buffer in LUKS1 reencryption code.
The raw write() syscal may write less bytes than requested. We
have write_buffer in utils_io.c that handles it properly.
2024-05-07 12:30:05 +00:00
Ondrej Kozina
94ef8a7610 Use proper read_buffer function from utils.
Legacy LUKS1 reencryption used custom read buffer
function. Use implementation from utils_io instead.
2024-05-07 12:30:05 +00:00
Milan Broz
410a586284 Detect unsupported zoned devices for LUKS header device.
Zoned device cannot be written with direct-io
and cannot be used for LUKS header logic without
significant changes. Do not allow to use them for LUKS header
but allow it for data device, as dm-crypt supports it.

Fixes: #877
2024-05-03 14:03:47 +00:00
Milan Broz
40e5c7d095 Use crypt_safe_memcpy for operations with key. 2024-05-03 11:52:09 +00:00
Milan Broz
4322ddbcb3 Add crypt_safe_memcpy to libcryptsetup.h. 2024-05-03 11:52:09 +00:00
Milan Broz
7b3a341809 Use crypt_backend_memcpy in crypt backend for sensitive data. 2024-05-03 11:52:09 +00:00
Milan Broz
40e56e969c Use backend memory utils in safe memory functions. 2024-05-03 11:52:09 +00:00
Milan Broz
c5d4b845df Use zero_call_used_regs and noinline for backend memory utils and introduce crypt_backend_memcpy. 2024-05-03 11:52:09 +00:00
Milan Broz
aae5cba2b9 Add memutils.c for backend and move existing mem helpers there.
Also remove inline definitions.
2024-05-03 11:52:09 +00:00
Ondrej Kozina
bede116926 Fix various coverity issues.
Mostly INTEGER_OVERFLOW (CWE-190).
2024-05-03 11:58:35 +02:00
Milan Broz
33e26be58b Avoid divide by zero in uint64_mult_overflow.
This function is used with block size, where 0 does
not make sense, so failing the check is the simple way
to avoid sividion by zero.

In reality, this should never happen, but it was seen
in (unreproducible) fuzzing input.
2024-04-18 08:39:52 +02:00
Milan Broz
842d9e6e6e Update README for version 2.7.2. 2024-04-09 12:12:56 +02:00
Milan Broz
bc62204a41 Add warning about OPAL admin PIN to man page and release notes. 2024-04-09 10:46:13 +02:00
Milan Broz
4bd64eed82 Add 2.7.2 release notes. 2024-04-04 18:34:49 +00:00
Milan Broz
4b0ae54379 tests: print OPAL device parameters in test envirenment if specified 2024-04-04 18:34:19 +00:00
Daniel Zatovic
69920581a3 CI: add WD PC SN740 OPAL drive job 2024-04-04 14:49:27 +02:00
Antonio Ceballos
4bf6db5ce8 po: update es.po (from translationproject.org) 2024-04-04 14:08:50 +02:00
Ondrej Kozina
a89485924c Compile --disable-hw-opal variant. 2024-04-03 16:26:02 +00:00
Ondrej Kozina
0cbeb35a93 Do not check passphrase quality in-before erase.
The passphrase (Admin PIN) already exists and there's no
reason to check quiality of it.
2024-04-03 11:51:35 +00:00
Milan Broz
e17ec37341 Relicense older script to LGPL fro GPL2.0 only.
(As I am sole author here.)
2024-04-03 11:49:33 +00:00
Milan Broz
1ba758cde1 FAQ: update license version to CC BY-SA 4.0.
With email approval from Arno Wagner dated March 29, 2024:

 From: Arno Wagner
 To: Milan Broz
 Subject: Re: cryuptsetup FAQ license

  Hi Milan,

  fine for me. You can change it directly.

  Arno

  On Wed, Mar 27, 2024 at 13:38:36 CET, Milan Broz wrote:
  > Hi Arno,
  >
  > the FAQ in cryptsetup is licensed under CC-BY-SA-3.0 that is no longer a recent version - https://creativecommons.org/licenses/by-sa/3.0/
  >
  > I use CC-BY-SA-4.0 (https://creativecommons.org/licenses/by-sa/4.0/deed.en) for LUKS2 docs and think it is the best option for docs.
  >
  > Do you agree with updating the license to CC-BY-SA-4.0 for the FAQ.md file? (I, as coauthor, obviously agree :-)
  >
  > Thanks,
  > Milan
2024-04-03 11:49:33 +00:00
Ondrej Kozina
87bf39f71e Fix invalid assert for hw-opal data segment keys.
hw-opal segment does not receive volume key for data
encryption, unlike crypt segment or hw-opal-crypt segment.
It gets key encryption key that is passed to device fw which
later unlocks the locking range key sealed in the device.

The assert may be skipped while volume key is not set.

Fixes: #875.
2024-04-03 11:48:56 +00:00
Ondrej Kozina
1ae70b8c16 Fix data segment length compensation on misaligned partitions.
While properly calculated data segment needed compensation due to
misaligned partition (locking range had to be truncated),
we passed wrong value (original partition size) to LUKS2 metadata.

It has to use calculated locking range length in bytes.

Fixes: #873.
2024-04-02 14:21:01 +02:00
Daniel Zatovic
3d82771418 CI: make OPAL jobs uninterruptible 2024-03-26 16:09:22 +01:00
Ondrej Kozina
3e29dbe6f2 Add --hw-opal-factory-reset switch in erase options explicitly. 2024-03-26 12:01:27 +00:00
Ondrej Kozina
a462dbeb4e Check HW OPAL range parameters in proper units.
The opal_range_check_attributes_fd function expected both
offset and length parameters of a LR to be passed in sectors (512B).
During format we passed it wrongly in OPAL blocks which caused
bogus check provided OPAL block size was not 512B.

Fixes: #871.
2024-03-26 11:55:31 +01:00
Daniel Zatovic
8655093cb7 tests: run systemd tests using meson only when requested 2024-03-21 16:42:06 +01:00
Milan Broz
25b543d371 Update Readme for 2.7.1. 2024-03-07 15:53:23 +01:00