Skip to content

Releases: rurogge/coldiron-os

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 20:54

v0.3.0 — the security pass · first product release

Status: released — all product acceptance criteria met (see
docs/THREAT-MODEL.md):
GPG-signed release artifacts + demonstrated byte-reproducible build.

⚠️ Signing-key caveat: the artifacts are signed with a one-shot key
(fingerprint 63EA 0A22 C16A D051 8237 8B9B 7F53 97DF 4477 C2BD), generated in
an air-gapped VM and revoked immediately after signing — a deliberate
custody compromise (no physical air-gap available). The signatures verify as
"Good", the key shows as revoked by design, and the fingerprint is the trust
anchor. See docs/SIGNING.md.

Security impact

  • Networkless monolithic kernel (6.12.101-coldiron): compiled from Debian
    trixie source with no network device drivers (CONFIG_NETDEVICES=n,
    wireless/BT/NFC/CAN off) and no loadable modules (CONFIG_MODULES=n).
    There is no driver that could reach the network and no module subsystem to
    load one.
  • Verified boot chain: GRUB (BIOS + EFI) verifies kernel/initramfs PGP
    signatures (check_signatures=enforce) before executing them — a tampered
    image refuses to boot.
  • AppArmor enforced at boot: confinement profiles for the appliance scripts
    load and enforce; coldiron-check (menu option 8) proves the posture at
    runtime.
  • Full GPG verification of every staged binary: Sparrow manifest + Bitcoin
    Core SHA256SUMS.asc verified against keyrings you import out-of-band (the
    build refuses to auto-download keys).

New / changed user-visible behavior

  • New menu option 8 — System security check (coldiron-check).
  • GRUB auto-boots after 10 s (no more hanging on Enter on some machines).
  • Vault enumeration fixed on PCI-based USB hosts.

Test suite

  • Host-side script tests: 27/27.
  • QEMU/KVM E2E: 19/19 steps across 3 boots (fresh vault, Sparrow window,
    real GRUB path).
  • Byte-reproducible ISO: 9bebf36f… — local build == CI build, verified
    with cmp.

Verify before writing to USB

sha256sum -c SHA256SUMS
gpg --keyserver keyserver.ubuntu.com --recv-keys 63EA0A22C16AD05182378B9B7F5397DF4477C2BD
gpg --verify SHA256SUMS.asc SHA256SUMS
sudo dd if=coldiron-os-0.3.0-amd64.iso of=/dev/sdX bs=4M status=progress

Note on this release's docs

This tag (v0.3.0) is the frozen snapshot the ISO was built and signed from.
The PROTOTYPE banner was lifted and SECURITY.md / INSTALL.md were aligned
after the tag, on main — see the current
README and
docs for the
up-to-date state.

v0.2.0 — dice-seed wallet + beginner guidance

Choose a tag to compare

@rurogge rurogge released this 11 Aug 17:05

v0.2.0 — dice-seed wallet + beginner guidance

New: generate a wallet from physical dice (Coldcard-style)

  • Menu option 1 — roll two dice → bias-free entropy (rejection sampling) → BIP39 seed words → write on paper
  • 12 words = 52 rolls · 24 words = 104 rolls (roll math corrected: the checksum bits are computed, never rolled)
  • In-app self-check — derives your first receive address (BIP84 m/84'/0'/0'/0/0) and the master fingerprint before you ever touch Sparrow; both must match what Sparrow shows after import
  • Derived with python3-mnemonic + python3-ecdsa; verified byte-exact against the official BIP39/BIP84 test vectors

New: beginner guidance layer

  • Every menu entry has a plain-language description (→ what it does)
  • Menu option 7: First-time guide — what a seed / vault / address are, the 3 first-time steps, the safety rules
  • Every option script opens with What this does / What you need / What happens next
  • Contextual tip — "no seed backups in the vault yet" appears when the vault is mounted but empty
  • Menu fully reordered around the user lifecycle: create → secure → recover → use → off

Fixes

  • coldiron-shutdown now always powers off even if the vault device is busy (unmount/close failure no longer leaves the machine on)
  • coldiron-dice-seed --test robust against short/odd roll files (found by the E2E)

Testing (all green)

  • 19/19 host-side tests — BIP39/BIP84 vectors, roll rejection, menu failure-survival harness
  • 16/16 QEMU E2E steps — every menu option (1–7 + q) exercised on the real ISO: abort paths, vault unlock via keyboard, age-encrypted backup, byte-exact restore, Sparrow window, clean shutdown with the vault mounted

Assets

  • coldiron-os-0.2.0-amd64.iso (633 MB) + SHA256SUMS
  • CI independently rebuilds the tag (second-machine build)

⚠️ Prototype. Do not trust this ISO with a valuable seed yet — see the README's honest limitations (kernel-level networking is still compiled in; only driver-blacklisted).

v0.1.1 — fix: menu black screen on option failure

Choose a tag to compare

@rurogge rurogge released this 10 Aug 17:49

Fix

The launcher menu (coldiron-menu) ran with set -e: any option that failed (abort at consent, no vault USB, wrong passphrase) killed the menu → xterm closed → black screen. The menu is now a true launcher loop (set -uo pipefail), so failures return to the menu.

Verified end-to-end in QEMU (all 5 options)

  1. Unlock vault — LUKS2 open + ext4 mount ✓
  2. Create encrypted seed backup — consent → unlock → seed ×2 → spot check → age-encrypt → backup file + sha256 ✓ (abort path returns to menu ✓)
  3. Restore — DECRYPT → age decrypt → original seed printed ✓
  4. Sparrow Wallet — launches ✓
  5. Shut down securely — clean poweroff with mounted vault ✓

ISO sha256: 3a8412f01ce73774e468926660161d8096aeea49962777fff2f9caa50bd1fb1f

COLDIRON OS v0.1.0 (prototype)

Choose a tag to compare

@rurogge rurogge released this 09 Aug 18:22

COLDIRON OS v0.1.0 — prototype. Offline-by-design, RAM-only cold-storage appliance for Bitcoin air-gapped signing.

What's inside the ISO: hardened Debian 13 (trixie) live image, boots entirely from RAM (toram), no usable networking (driver blacklist + loopback-only + restrictive sysctls), autologin desktop with the COLDIRON launcher menu, Sparrow Wallet 2.5.3 (GPG-verified against the maintainer keyring), Bitcoin Core 31.1 CLI tools (pinned sha256 + official SHA256SUMS cross-check), QR/age/paperkey tools, pcscd+OpenSC for hardware wallets.

Verify: sha256sum -c SHA256SUMS after downloading.

⚠️ Prototype warning: do NOT store a valuable seed with this yet. The kernel still contains its networking subsystem (v0.2 removes it), no secure boot, no reproducible build yet. See docs/THREAT-MODEL.md and the roadmap.

Tested: QEMU/KVM smoke test — boots to the desktop with the launcher menu, root autologin, only loopback network, overlay rootfs on RAM, vault USB detected. See docs/TESTING.md for the full procedure.