Skip to content

v1.5.0 — two /boot unlock architectures, and a hard 1 GiB GRUB rule

Choose a tag to compare

@doug445 doug445 released this 23 Aug 03:55
· 85 commits to main since this release
Immutable release. Only release title and notes can be modified.

v1.5.0 — two /boot unlock architectures, and a hard 1 GiB GRUB rule

Documentation release. No behavioural change to the deploy script; the
/boot work it describes is still design-only and gated on hardware
testing.

Two unlock options for encrypted /boot, instead of one imposed choice

  • Option 1, one unlock: a passphrase at the GRUB prompt opens /boot, and
    a keyfile inside the encrypted initramfs opens root with no second
    prompt. Its cost is stated exactly - root's parameters are untouched
    but stop being load-bearing, since the keyfile opens root and the
    1 GiB /boot keyslot becomes the cheapest way in. If root is already at
    1 GiB there is no reduction at all.
  • Option 2, two unlocks: no keyfile is generated, and root is opened by
    its own passphrase at its full KDF. Carries the warning it cannot ship
    without - this only works with a DIFFERENT passphrase for root, since
    reusing one hands an attacker root the moment they break the weaker
    /boot keyslot.
  • /boot is pinned at 1 GiB / 10 iterations. Measured here, cryptsetup's
    own defaults with no KDF flags are argon2id 1 GiB / t=8, so fewer than
    8 iterations would ship a /boot weaker than a plain luksFormat.

The 1 GiB GRUB ceiling is now a prohibition, not a soft cap

  • Every mention read as a performance note, which invites treating it as
    a number to tune toward. All of them now state it as a rule: 1 GiB is
    the hard ceiling for any volume GRUB itself must unlock, root excepted.
  • Both failure modes are spelled out wherever the rule appears. Above
    1 GiB GRUB fails to allocate, which is not a slow boot but no boot. At
    exactly 4 GiB it is worse: argon2_init computes
    xtrymalloc (1024 * memory_blocks) in 32-bit unsigned arithmetic, so
    1024 * 4194304 wraps to 0 and GRUB proceeds instead of rejecting the
    parameters cleanly.

Also in this release

  • luks-tune.sh offers the paranoid tier (4 GiB / 12) and gained --help
    plus an argument guard. Previously a mistyped --dry-run was silently
    ignored, which would re-cost a keyslot for real while the caller
    believed it was a rehearsal.