Skip to content

Keep source ciphertext off the hosts - #24

Merged
ocfox merged 1 commit into
masterfrom
keep-source-ciphertext-off-hosts
Aug 2, 2026
Merged

Keep source ciphertext off the hosts#24
ocfox merged 1 commit into
masterfrom
keep-source-ciphertext-off-hosts

Conversation

@ocfox

@ocfox ocfox commented Aug 2, 2026

Copy link
Copy Markdown
Owner

A host carried two ciphertexts of every secret it used: the cache entry, encrypted to its own key, and the source .age, encrypted to the admin identity — the one that opens every secret on every host. Nothing on a host can read the second. It was there only so deploy could hash it into the name of the first, and it travelled with the system closure to wherever that closure goes, a binary cache included.

Cache entries are now named <id>-<hash>. deploy finds one by the id it already has, and the profile it reads names no source file at all. seal and check keep a profile that does, which is theirs to hold: seal runs where the identity already is, and system.checks are build dependencies that stay out of the closure.

Verified on the store paths themselves — the profile a host installs now references only its own sealed cache, while the source .age appears in the admin profile alone.

Entry names change, so this needs one nix run .#kix-seal before the next rebuild. check blocks the build until then.

Fixes #23

A host carried two ciphertexts of every secret it used: the cache entry,
encrypted to its own key, and the source .age, encrypted to the admin
identity that opens every secret on every host. Nothing on a host can read
the second one. It was there so deploy could hash it into the name of the
first, and it travelled with the system closure to wherever that goes, a
binary cache included.

Cache entries are now named <id>-<hash>, so deploy finds one by the id it
already has, and the profile it reads names no source file at all. seal and
check keep a profile that does, which is theirs to hold: seal runs where
the identity is, and system.checks are build dependencies that stay out of
the closure.

Entry names change, so this needs one `seal` before the next rebuild.
@ocfox
ocfox merged commit 9a6dcd8 into master Aug 2, 2026
1 check passed
@ocfox
ocfox deleted the keep-source-ciphertext-off-hosts branch August 2, 2026 15:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Source .age files should never reach a host

1 participant