The evidence vault

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

What "break-glass" means
01what break-glass means

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.

02who holds the keys

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 here

Each fingerprint below is a genuine Ed25519 public key generated in your browser — the very keys the trustees sign with in the demo just below.

policy: — of 3 · pinning keys…

🔒 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.

setting the policy — one line, on your own kernelshell · securaCV
# 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.

03break the glass

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 quorum

preparing request…

cam-porch-0007 · sealed evidence
purpose: insurance claim · encrypted, device can't read it back
🔒 sealed
0 of 2 approvals

the receipt log — every attempt, signed & append-only
No attempts yet. Approve, then break the glass — or try to force it.
what the vault counts, in your browserJavaScript · this page
// 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
}
the same rule, in the kernelRust · src/break_glass/core.rs
// 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.

04the guardrails

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

05the honest details

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.

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.