Isolate BOS signing from privileged Actions runners #75
No reviewers
Labels
No labels
P0
P1
P2
P3
audio
bakery
boot
breadbug
bug
build
ci
dependencies
design
disk
docs
encryption
final
firewall
graphics
hardware
idle
installer
keybinds
nvidia
packages
phase-1
polish
recovery
reliability
reproducibility
secure-boot
security
shell
signing
snapshots
supply-chain
swap
tech-debt
theming
ux
website
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Breadway/bos!75
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/bos-39-isolate-signing"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Actions currently imports one shared private key on the privileged ISO builder and uses it for pacman repository signing. This change prepares unsigned repository artifacts and ISO draft candidates instead. Separate offline signers pin the public identity, require finite future expiry, reject reuse of the repository identity for ISO checksums, and refuse Actions environments. The ISO signer verifies one BOS ISO checksum before signing SHA256SUMS. Candidates are immutable: any existing tag release or draft makes the builder refuse all mutations. Every new upload checks draft state. Offline publication must wait for the associated build run to complete successfully, with the documented exclusive handoff.
Verified with temporary unrelated signing identities: real ISO checksum signature, rejection of altered bytes and extra checksum entries, rejection of a shared or non-expiring identity, real pacman package/database signatures, and Actions refusal. Workflow YAML, every workflow shell block, Python compilation, and diff checks pass.
Activation remains required before production adoption: provision the distinct expiring ISO public key and record its actual fingerprint, move repository private material to a dedicated non-runner signer, remove the former shared Actions secret everywhere, and independently approve candidate publication. Existing installed repository trust and production secrets are unchanged. New ISO publication/GitHub announcement/stable promotion now follow offline approval. docs/signed-repo.md records these steps explicitly; this PR does not claim that production migration has happened.
Closes #39
Independent source and isolated integration review PASS at
1c6e242f6e. Offline signing tests independently verify distinct expiring temporary identities, ISO checksum-only signing, tamper rejection, signed pacman packages/database, and Actions refusal. Reviewed and requested removal of mutable draft rebuilds; revised workflow refuses all existing candidates and checks draft state before each fresh upload. Mocked workflow checks confirm existing tags and API failures cause no mutation, fresh candidates upload exactly two assets, and a changed draft state stops the next upload. YAML, every workflow shell block, signing Python/shell and diff checks pass. No configured CI statuses.This is a reviewed migration implementation, with production activation outstanding. The second ISO public fingerprint is not provisioned; private material relocation, deletion of old Actions secrets, protected policy/source, provenance approval and publication exclusion remain required as explicitly documented. No production keys or trust were changed, and this review does not claim the security migration is activated.