pki.sgit.ai / failure

Why good public key repositories don't exist

They did — and they were destroyed, by an attack whose cause was a stated design goal rather than a bug. Anyone proposing a key registry today should be able to show they designed it with this history in hand. This page is that history, in five minutes, with sources.

June 2019: the certificate-flooding attack

The three abused properties

Each one becomes a design rule for any registry built afterwards — which is the only reason this history is worth a page:

Abused propertyRule it produces
A certificate may carry unlimited signaturesBound the size of a record
Anyone may append to anybody's certificateOnly the owner may write to their own record
Nothing distinguishes a legitimate signature from garbageEvery entry is signed by something you can check

Why it could not be repaired

The fatal property was not an oversight. It was a design goal stated at the outset: a key server could add information to a certificate but could never delete either a certificate or information about a certificate. Everything downstream follows from that — including the impossibility of a fix, because a design goal is not a bug you patch.

The precise lesson about append-only

That design goal is append-only — a pattern this project itself uses in five places (write-only telemetry, staging folders, event ledgers, vault inboxes, relay channels), and rightly. A documented catastrophe caused by append-only deserves a precise resolution, not a shrug:

OUR CHANNELS            a component appends to ITS OWN inbox or log
                        nobody writes into another's record
                        -> append-only is a guarantee

THE KEY SERVERS         anyone appends to ANYBODY'S certificate
                        and nothing can be removed
                        -> append-only is an attack surface

Append-only is safe when a writer appends only to objects it owns. It is fatal when anyone may append to somebody else's object.

The rule to carry forward is therefore not "append-only" — it is the writer owns what it writes. Stated that way, the pattern survives the history intact, and rule 1 is what carries it.

The same property, both ways

Append-only, owner-writesAppend-only, anyone-writes
Who may write to a recordOnly its ownerAnybody
Can a stranger grow your record?NoWithout limit
Is every entry attributable?Yes — signed by the ownerNo — garbage is indistinguishable
Can something be withdrawn?Yes — a signed append supersedesNever — by design
Failure modeA record grows slowly, in the owner's own handDestroyed the network

One word separates the column that works from the column that ended a global network — and it is not "append-only". The four rules this produces →

What the replacement gave up

The key server built to replace the broken network (keys.openpgp.org) strips all third-party signatures and unverified identities. That stops the attack completely — third-party signatures were the vector. It also removes the web of trust, the entire model by which one person's endorsement of another's key conveyed confidence. Commentary at the time noted this was not a full solution for exactly that reason, and that no good global answer existed.

The trade, stated plainly. Third-party attestations are what made the old system valuable and what made it attackable. A registry that permits them needs the size bound and the ownership rule enforced hard; a registry that forbids them is safe and carries no social trust signal at all. For agent identity that choice matters more than usual, because an agent's key is only useful if somebody vouches for what the agent is allowed to do — the mandate.

Why this page leads the site

Two reasons, both practical. It is useful on its own — a reader who never touches an agent registry still leaves knowing why the public key ecosystem is in the state it is in. And it is the evidence that whatever comes next was designed with the history in hand: the rules are not four preferences, they are three abused properties plus the deletion problem, turned around one at a time.

Sources