Some things should take more than one person to open.
When a Canary ever does seal raw evidence, it's locked in a vault the device itself can't read back — and that no one can open alone. Not an admin, not a court order served on one person, not us. It takes a quorum of trustees, turning their keys together — and every attempt, opened or refused, goes on an unforgeable record. Here's how, and you can break the glass yourself below with real cryptography.
Three ideas do all the work
Sealed
Evidence is encrypted so the device that wrote it structurally cannot read it back.
Quorum
It takes a set number of trustees, signing together, to authorize opening it. One is never enough.
On the record
Every attempt — granted or denied — is signed into an append-only log no one can quietly edit.
Like the little fire-alarm box — but it takes several keys at once.
“Break-glass” is the emergency door: a way to reach sealed raw evidence when there's a real reason — an insurance claim, an incident. But unlike a fire alarm any one person can smash, this door only opens when a quorum of trustees approve it together, and breaking it is loud and logged, never quiet.
In plain terms: think of a bank's safe-deposit box that needs two keys turned at once — yours and the bank's. Sealed Canary evidence is like that, but you pick how many keys and who holds them. The camera can drop things into the box; it has no key to take anything back out. And every time someone tries the door, the attempt is written down and signed — success or failure.
Why that's different — and useful to you: “we promise not to look” is a policy, and policies bend under pressure — a rogue employee, a breach, a subpoena aimed at one person. Here, a single person physically cannot open the vault. The safeguard is arithmetic, not trust.
First — where do the keys even come from?
A quorum only means something if you know whose keys count. So before anything is sealed, you choose your trustees — the people or roles you'd trust with a hard call — and each one brings their own key. Nobody hands out keys from on high: there's no master key, and we're not one of the holders.
In plain terms: each trustee makes their own pair of keys on their own device — a secret half that never leaves them, and a public half that's safe to share (it's just a fingerprint). They give you only the public half. You pin those fingerprints, pick the threshold — say 2 of 3 — and that's the policy. From then on, only those exact keys can ever approve; a stranger's key does nothing.
Your trustee roster
real keys, made hereEach fingerprint below is a genuine Ed25519 public key generated in your browser — the very keys the trustees sign with in the demo just below.
🔒 The secret half of each key never leaves its trustee — the vault stores only the public halves. Adding or swapping a trustee is a deliberate, logged change to this policy, never a silent one.
# pin the trustees' PUBLIC keys and pick the threshold (2 of 3)
break_glass policy set --threshold 2 \\
--trustee avery:<avery-ed25519-pubkey> \\
--trustee bailey:<bailey-ed25519-pubkey> \\
--trustee cameron:<cameron-ed25519-pubkey>
That's the whole enrollment. Only the public keys are ever registered; every trustee keeps their own secret key. Change your mind later and the policy update is itself signed into the record.
Why that matters: because the keyholders are yours, no one upstream — not the maker, not a cloud account, not a lone admin — is quietly on the list. You can even make one trustee a lawyer or a friend in another city, so a single local pressure point can't turn every key at once.
Try it: gather the trustees, or fail to force it open.
Now put the roster to work. It takes two of your three trustees to open this vault. Each “Approve” makes a genuine Ed25519 signature — with the same key you saw enrolled above — over the exact request, and the vault counts distinct valid signatures with the same rule the kernel uses. Try forcing it open with too few — you can't.
Break-glass request
real Ed25519 quorumpreparing request…
—
// count DISTINCT trustee keys carrying a valid approval
function countDistinct(approvals) {
const keys = new Set();
for (const a of approvals)
if (a.valid) keys.add(a.keyHex);
return keys.size; // granted iff >= n
}
// re-derived at the unseal gate — never trusts a recorded outcome,
// so a device-key holder can't forge Granted with too few approvals
for approval in approvals {
if !verify_approval(&t.public_key, request_hash, &approval.signature) { continue; }
distinct.insert(t.public_key); // dedup on the KEY
}
distinct.len() >= policy.n // → Granted
Same rule, both sides. Deduping on the key means one trustee can't fill two slots by approving twice, and a stolen device key can't mint a grant with zero real approvals — the kernel re-derives the quorum from the signatures every time, exactly like the demo above.
Five rules that make single-person access impossible.
The quorum is the headline, but four more rules close the loopholes an attacker (or a well-meaning insider) would reach for.
No solo access
The old single-approval code path is deprecated and now returns an error. The quorum is the only way through — there is no self-service door for raw evidence.
defeats · a rogue admin acting alone
A grant can't be forged
The kernel re-derives the quorum from the trustees' signatures at the moment of unsealing. A validly device-signed “granted” is refused if the real approvals aren't there.
defeats · a stolen device / signing key
Single-use
Each authorization mints a token with a random nonce that's burned before any plaintext exists. Replaying the same token is refused.
defeats · replay & token re-use
Expires fast
A token is bound to a specific envelope, ruleset, and a 10-minute time bucket. It goes stale almost immediately — no stockpiling access for later.
defeats · a hoarded, reusable key
Always receipted
Every decision — granted or denied — is signed into an append-only, hash-chained log. You can't open the vault quietly, and you can't erase that you tried.
defeats · silent, deniable access
Not even us
The makers hold no master key to your vault. The trustees are whoever you choose; the quorum is yours to set. We can't be compelled to open what we can't open.
defeats · a subpoena aimed at the vendor
How it actually works under the hood — no hand-waving.
The key isn't split into pieces. This isn't “chop the password into shards” (Shamir) or a fancy joint signature. It's simpler and sturdier: several trustees each sign an approval, and enough distinct valid signatures authorize a single-use token that unlocks the vault. The vault's own encryption key is never divided — it's held by the kernel and wrapped under the device's master key.
- The seal — each sealed object is encrypted with ChaCha20-Poly1305 using a fresh random key, which is then wrapped under the device's master key. Tampering with a single header byte breaks the seal.
- Trustees & operator — trustees hold their own Ed25519 signing keys (which never leave them); an operator runs the request → approve → authorize → unseal flow but can't approve on anyone's behalf.
- The device's own snapshots go a step further: they're sealed to an operator's public key, so the Canary is write-only — it stores only the public half and cannot decrypt what it wrote. Opening happens off-device.
Status, honestly: the classical seal (ChaCha20-Poly1305) and the N-of-M quorum are implemented and tested. A post-quantum mode (ML-KEM-768) exists behind a build flag and is optional/experimental. And the demo above is real Ed25519 in your browser — the bulk encryption step is illustrated, because browsers don't expose that exact cipher (the live lab page says so too).
Not “we promise not to peek.” No one can peek alone.
A promise can be broken by one person under pressure. A quorum can't — the math needs more keys than any one hand can turn, and every attempt is signed into a record you can check. That's the whole idea.