heads/modules
Thierry Laurion 0cef8e1edc cryptsetup2 toolstack version bump and script fixes to support multi-LUKS containers (BTRFS QubesOS 4.2)
cryptsetup2 2.6.1 is a new release that supports reencryption of Q4.2 release LUKS2 volumes created at installation.
 This is a critical feature for the Qubes OS 4.2 release for added data at rest protection

Cryptsetup 2.6.x internal changes:
 - Argon2 used externally and internally: requires a lot of RAM and CPU to derivate passphrase to key validated in key slots.
  - This is used to rate limit efficiently bruteforcing of LUKS key slots, requiring each offline brute force attempt to consume ~15-30 seconds per attempt
  - OF course, strong passphrases are still recommended, but bruteforcing LUKSv2 containers with Argon2 would require immense time, ram and CPU even to bruteforce low entropy passphrase/PINs.
 - passphrase change doesn't permit LUKS key slot specification anymore: key slot rotates (new one consusumed per op: then old one wiped internally. EG: LUKS key slot 1 created, then 0 deleted)
 - reencryption doesn't permit old call arguments. No more direct-io; inadmissively slow through AIO (async) calls, need workarounds for good enough perfs (arguments + newer kernel with cloudfare fixes in tree)

cryptsetup 2.6.1 requires:
 - lvm2 2.03.23, which is also included in this PR.
   - requires libaio, which is also included in this PR (could be hacked out but deep dependency at first sight: left in)
   - requires util-linux 2.39
 - patches for reproducible builds are included for above 3 packages.

luks-functions was updated to support the new cryptsetup2 version calls/changes
 - reencryption happen in direct-io, offline mode and without locking, requiring linux 5.10.9+ to bypass linux queues
   - from tests, this is best for performance and reliability in single-user mode
 - LUKS container ops now validate Disk Recovery Key (DRK) passphrase prior and DRK key slot prior of going forward if needed, failing early.
  - Heads don't expect DRK to be in static key slot anymore, and finds the DRK key slot dynamically.
  - If reencrytipn/passphrase change: make sure all LUKS containers on same block device can be unlocked with same DRK
 - Reencryption: requires to know which key slot to reencrypt.
   - Find LUKS key slot that unlocks with DRK passphrase unlock prior of reencrypt call
 - Passphrase change: no slot can be passed, but key slot of DRK rotates.

kexec-seal-key
 - TPM LUKS Disk Unlock Key key slots have changed to be set in max slots per LUKS version (LUKSv1:7 /LUKSv2: 31)
  - If key slot != default LUKS version's keyslot outside of DRK key slot: prompt the user before wiping that key slot, otherwise wipe automatically
    - This takes for granted that the DRK key slot alone is needed on the system and Heads controls the LUKS key slots.
      - If user has something else going on, ie: Using USB Security dongle + TPM DUK, then the user will need to say no when wiping keys.
      - It was suggested to leave LUKS key slots outside of DRK alone, but then: what to do when all key slots would be used?
        - Alternative implementation could be to only prompt users to wipe keyslots other then DRK when key slots are all used (LUKSv1: 0-7, LUKSv2: 0-31)
          - But then cleanup would need to happen prior of operations (LUKS passphrase change, TPM DUK setup) and could be problematic.
  - LUKS containers now checked to be same LUKS version prior of permitting to set TPM DUK and will refuse to go forward of different versions.

TODO:
- async (AIO) calls are not used. direct-io is used instead. libaio could be hacked out
  - this could be subject to future work

Notes:
- time to deprecated legacy boards the do not enough space for the new space requirements
 - x230-legacy, x230-legacy-flash, x230-hotp-legacy
 - t430-legacy, t430-legacy-flash, t430-hotp-legacy already deprecated

Unrelated:
- typos fixes found along the way

Signed-off-by: Thierry Laurion <insurgo@riseup.net>
2024-10-30 14:18:20 -04:00
..
bash modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
busybox Add external/usb disk encryption (adds exfatprogs and e2fsprogs) 2023-08-28 16:23:48 -04:00
cairo modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
coreboot modules/coreboot: Update Purism coreboot with latest JPEG decoder patch 2024-10-30 13:57:10 -04:00
coreboot-blobs reconfigure submodules if their config files ever change (issue #172) 2017-04-07 10:34:57 -04:00
cryptsetup Pass -O3 and -O2 (optimize for speed) to -Os (Optimize for space) 2023-03-07 18:05:39 -05:00
cryptsetup2 cryptsetup2 toolstack version bump and script fixes to support multi-LUKS containers (BTRFS QubesOS 4.2) 2024-10-30 14:18:20 -04:00
dropbear modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
e2fsprogs Add external/usb disk encryption (adds exfatprogs and e2fsprogs) 2023-08-28 16:23:48 -04:00
exfatprogs Add external/usb disk encryption (adds exfatprogs and e2fsprogs) 2023-08-28 16:23:48 -04:00
fbwhiptail modules/fbwhiptail: Update to 1.3 2023-09-29 15:29:18 -04:00
flashprog flashprog: use latest head commit of wp_cli branch which is experimental branch 2024-10-29 08:58:09 -04:00
flashrom modules/flashrom: Remove LIBS_BASE to stop linking in RPATH. 2024-05-09 12:20:17 -04:00
flashtools modules/* : Make sure MAKE_JOBS is passed down 2024-05-02 13:01:43 -04:00
frotz adventure module 2018-02-05 11:30:39 -05:00
gpg modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
gpg2 Fix key to card failing with invalid time when moving keys to smartcard on master (Opt: Authenticated Heads) 2024-05-17 09:27:29 -04:00
hidapi Rename libremkey-hotp-verification module 2020-06-11 15:54:10 +02:00
hotp-verification bump hotp version to 1.6 2024-05-21 17:03:05 +02:00
io386 modules/io386: fixate to latest commit id and optimize for space 2023-06-12 13:51:58 -04:00
ioport modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
json-c modules/* : Make sure MAKE_JOBS is passed down 2024-05-02 13:01:43 -04:00
kbd modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
kexec kexec: Update to 2.0.26, add framebuffer tracing 2023-04-19 14:16:38 -04:00
libaio cryptsetup2 toolstack version bump and script fixes to support multi-LUKS containers (BTRFS QubesOS 4.2) 2024-10-30 14:18:20 -04:00
libassuan Fix key to card failing with invalid time when moving keys to smartcard on master (Opt: Authenticated Heads) 2024-05-17 09:27:29 -04:00
libgcrypt Fix key to card failing with invalid time when moving keys to smartcard on master (Opt: Authenticated Heads) 2024-05-17 09:27:29 -04:00
libgpg-error Fix key to card failing with invalid time when moving keys to smartcard on master (Opt: Authenticated Heads) 2024-05-17 09:27:29 -04:00
libhidapi-libusb Support targeting PowerPC 64 2022-08-25 20:55:39 +03:00
libksba Fix key to card failing with invalid time when moving keys to smartcard on master (Opt: Authenticated Heads) 2024-05-17 09:27:29 -04:00
libnitrokey modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
libpng Pass -O3 and -O2 (optimize for speed) to -Os (Optimize for space) 2023-03-07 18:05:39 -05:00
libusb modules: Remove unrecognized configure options 2024-05-02 13:00:32 -04:00
libusb-compat ppc64le builder required changes 2024-01-10 18:28:24 -05:00
linux Bump 5.10.5 kernel to 5.10.214 2024-10-30 14:18:20 -04:00
linuxboot modules/linuxboot: $$CPUS --> $(CPUS) 2020-12-26 12:19:10 -08:00
lvm2 cryptsetup2 toolstack version bump and script fixes to support multi-LUKS containers (BTRFS QubesOS 4.2) 2024-10-30 14:18:20 -04:00
mbedtls Pass -O3 and -O2 (optimize for speed) to -Os (Optimize for space) 2023-03-07 18:05:39 -05:00
msrtools modules/msrtools : add missing MAKE_JOBS for parallel builds 2024-05-02 13:02:41 -04:00
musl-cross modules/musl-cross: use echo from the PATH to support NixOS 2023-01-18 12:42:41 -05:00
ncurses Build ncurses for terminfo definitions. 2024-06-25 17:26:18 +00:00
newt modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
nkstorecli add x230-nkstorecli board config (#817) 2020-10-19 10:47:22 -04:00
npth modules: Remove unrecognized configure options 2024-05-02 13:00:32 -04:00
openssl modules/openssl: remove hack: silences error on console when openssl is included for builds (affects tpm2 boards builds) 2024-05-17 14:56:11 -04:00
pciutils Support targeting PowerPC 64 2022-08-25 20:55:39 +03:00
pinentry modules/gpg2: Bump version 2.4.0 -> 2.4.2 2024-05-02 13:00:37 -04:00
pixman switch back from web.archive.org to cairographics.org (CircleCI is rate limited over web.archive.org:not a solution.... 2024-01-04 21:32:32 -05:00
popt modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
powerpc-utils modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
purism-blobs modules/coreboot,purism-blobs: Update to 4.20.1-Purism-1 2023-06-21 13:26:50 -04:00
qrencode modules: minor refactor/tweaks 2024-05-02 13:00:27 -04:00
slang modules/patches slang: bump to version 2.3.3 so we can disable termcap without hacking around 2024-05-02 13:02:55 -04:00
tpm2-tools modules/* : WiP for tpm2-* while having added MAKE_JOBS to modules that were missing it to propogate build optimizations per module, while still impossible to call make -j 12 on main make call 2024-05-02 13:01:48 -04:00
tpm2-tss Revert "modules/tpm2-tss: just remove LT_LIB_DLLOAD from aclocal generated file since there is no easy way of fixing this" 2024-05-02 13:03:04 -04:00
tpmtotp modules/* : Make sure MAKE_JOBS is passed down 2024-05-02 13:01:43 -04:00
u-root parallel make fixes and hacks, which seem to work and reduce excessive remaking (issue #394) 2018-05-02 11:38:39 -04:00
util-linux cryptsetup2 toolstack version bump and script fixes to support multi-LUKS containers (BTRFS QubesOS 4.2) 2024-10-30 14:18:20 -04:00
zlib Fix current builds 2022-04-01 09:47:39 -04:00
zstd Uniformize vocabulary: LUKS TPM Disk Unlock Key & LUKS Disk Recovery Key 2024-01-20 11:47:35 -05:00