Trust-anchor rotation  / field guide
Practitioner field guide · 2026-10-10

Rotate the key while nothing is wrong

Every system delegates "whom do I trust" to a handful of long-lived keys: token signers, host keys, CA roots, the DNSSEC root KSK. This guide reconstructs, from six public incidents and the platforms that rotate on schedule, why the ability to replace those keys routinely is the control that decides whether a compromise is an afternoon or an era. Tomorrow, 11 October 2026, the root of the DNS rotates its key for only the second time in history; this page is the record of what happened the first time, and every time someone could not.

34 primary sources 12 production systems 6 incidents Evidence through October 2026 Read: 34 min
01

The territory

The problem, who has faced it in production, and the one finding to carry into your next design review before reading further.

State the problem without naming a technology: a verifier can only check a signature against a public key it already holds, so every distributed system ends in a small set of keys that are trusted by configuration rather than by proof. Those keys live in client trust stores, resolver config files, known_hosts entries, baked-in JWKS caches and firmware. Replacing one of them means changing state you do not control, on machines you have never seen, without breaking the traffic the key protects. That replacement is the operation this guide is about.

The headline finding, and the reason to read on: the Cyber Safety Review Board reports that Microsoft, as quoted in coverage of the report, "stopped key rotation entirely in 2021, following a major cloud outage linked to the manual rotation process" [CSRB, 2024]. The rotation was paused because rotation was dangerous; the pause left a 2016 consumer signing key alive in 2023, when Storm-0558 used it to forge tokens into 22 organisations' mailboxes. The availability fix created the security incident. Rotation is not hygiene you schedule when convenient. It is a capability, and like any capability it atrophies exactly when exercising it is scary, which is exactly when you will need it.

7 yrs
Age of the stolen MSA signing key when it was still forging valid tokens in 2023 (issued 2016, rotation paused 2021)
30 days
Minimum hold-down before a resolver may accept a new DNSSEC trust anchor introduced in-band
95%+
Reporting resolvers already signalling the new root key KSK-2024 ahead of the 2026-10-11 rollover
$1.60/hr
A dedicated cloud HSM instance (us-east-1), versus $1 per key per month in shared KMS: the custody cost spread

Figure 1 · The five anchor populations, and who must act when one changes

Who must act

The anchors

Token-signing keys
Entra ID, Kubernetes SA keys

SSH host keys
GitHub.com

CA roots and cross-signs
ISRG Root X1, DST Root CA X3

DNSSEC root KSK
KSK-2017 to KSK-2024

Artifact-signing roots
Sigstore TUF root

Relying apps' JWKS caches
refresh in minutes to hours

Every client's known_hosts
updates one prompt at a time

OS and device trust stores
update in months to never

Validating resolvers
RFC 5011, 30-day hold-down

Package verifiers
TUF metadata, chained roots

Who must act

The anchors

Token-signing keys
Entra ID, Kubernetes SA keys

SSH host keys
GitHub.com

CA roots and cross-signs
ISRG Root X1, DST Root CA X3

DNSSEC root KSK
KSK-2017 to KSK-2024

Artifact-signing roots
Sigstore TUF root

Relying apps' JWKS caches
refresh in minutes to hours

Every client's known_hosts
updates one prompt at a time

OS and device trust stores
update in months to never

Validating resolvers
RFC 5011, 30-day hold-down

Package verifiers
TUF metadata, chained roots

The verifier population on the right, not the key on the left, sets the difficulty of rotation; a JWKS cache refreshes in hours, a device trust store may never update. Sources: Microsoft, Let's Encrypt, ICANN.
Diagram source

Scope. This guide covers the keys at the top of a trust chain: how they are held, how a successor is introduced, and what happened when rotation was absent, late or botched. It deliberately does not cover leaf-certificate renewal (the machine-identity dig in this series), the first hour after a leaked secret (the secret-leak dig), or session-token binding (the stolen-session dig). Those are the keys below the anchor; this is the anchor itself.

02

How rotation is actually built

Across the DNS root, the web PKI, OpenSSH, Entra ID, Kubernetes and Sigstore, the same five-stage shape appears. The variation is in two places: how long the overlap runs, and whether anyone can measure uptake before cutting over.

Strip away the domain detail and every rotation-capable system in the corpus has the same anatomy. A custody layer holds the private key: Microsoft moved its token signing keys into Azure Managed HSM with rotation automated after 2023 [TechTarget, 2024]; the DNS root keeps its HSMs in two safes behind a filmed quorum ceremony, one safe for the HSMs and laptop, one for the smart cards that activate them [APNIC, 2020]; Sigstore spreads its root across five named community keyholders with hardware tokens and published terms [root-signing README]. A publication channel carries public keys to verifiers: a JWKS document, the DNSKEY RRset, an OS trust store, TUF metadata. An overlap window keeps old and new simultaneously valid. A cutover moves signing to the new key. A retirement revokes or deletes the old one.

The stage most architectures miss is the feedback edge: telemetry from verifiers back to the operator before cutover. The DNS root got it only in 2017, when RFC 8145 trust-anchor signalling, "only finalized in April, 2017" per ICANN, revealed that roughly 5% of reporting validators still carried only the old key, and the first rollover was postponed a year on that evidence [ICANN, 2017]. The web PKI has no equivalent: no CA can ask the world's TLS clients which roots they hold, which is why the DST Root CA X3 expiry surprised vendors who run TLS for a living. Where the feedback edge exists, rotation is an engineering project with a progress bar. Where it does not, rotation is a bet, and the overlap window is how much you hedge it.

Figure 2 · The reference shape of a rotatable trust anchor

Verifiers

Publication

Custody

vouches for successor
(RFC 5011, TUF chaining)

refresh: 1h JWKS poll,
30-day hold-down, OS update

uptake telemetry
(exists: RFC 8145; absent: web PKI)

Generation
HSM, ceremony, or threshold of holders

Current key
signs production traffic

Next key
published, not yet signing

Key metadata
JWKS / DNSKEY RRset / trust bundle / TUF root

Verifier cache
TTL, hold-down, trust store

Signature check

Verifiers

Publication

Custody

vouches for successor
(RFC 5011, TUF chaining)

refresh: 1h JWKS poll,
30-day hold-down, OS update

uptake telemetry
(exists: RFC 8145; absent: web PKI)

Generation
HSM, ceremony, or threshold of holders

Current key
signs production traffic

Next key
published, not yet signing

Key metadata
JWKS / DNSKEY RRset / trust bundle / TUF root

Verifier cache
TTL, hold-down, trust store

Signature check

The dashed telemetry edge is the divergence point: the DNS root has it (RFC 8145), Entra effectively has it (server-side token logs), the web PKI does not. Reconstructed from RFC 5011, Microsoft's rollover contract and the TUF specification.
Diagram source

Custody: online for frequent signers, offline for rare ones

A token issuer signs continuously, so its key must be online; the fix after Storm-0558 was not to take it offline but to put it in a managed HSM with automated rotation and, per coverage of the Secure Future Initiative, "no potential for human access". A root that signs a handful of times a year can afford air-gapped ceremony custody.

Runs this way at: Microsoft, IANA root zone, Sigstore

Introduction: the old key vouches for the new

RFC 5011 has resolvers accept a new anchor only after seeing it signed by the old one across a 30-day hold-down. TUF requires new root metadata signed by the previous root key. OpenSSH servers push replacement host keys to clients in-session via the hostkeys@openssh.com extension. Same idea, three protocols: continuity is proven in-band, cheaply, while the old key is still trustworthy.

Specified in: RFC 5011, TUF spec, ssh_config(5)

The verifier cache is the real system boundary

Microsoft's contract with relying apps is explicit: keys roll "on a periodic basis and, in an emergency, could be rolled over immediately", so apps must refresh JWKS every 24 hours and refetch on an unknown kid. Kubernetes shows the opposite pole: the KEP-740 design record states the API server loads signing keys at process start, so "rotating keys require a kube-apiserver to restart".

Contracts at: Microsoft, Kubernetes KEP-740

One structural observation the sources force on you: a trust anchor can outlive its own validity wherever the verifier chooses to let it. Let's Encrypt kept certificates working on old Android phones by having IdenTrust cross-sign ISRG Root X1 from the already-expiring DST Root CA X3, which works, in their words, because "Android intentionally does not enforce the expiration dates of trust anchors" [Let's Encrypt, 2020]. Expiry is not a property of the key. It is a property of each verifier's policy about the key, and in a population of verifiers you ship to, every policy exists at once.

03

The decisions that matter

Four forks recur in every system in the corpus. For each: what the production systems chose, what they rejected, and the condition that flips the answer.

Do we rotate on a schedule, or only when something is wrong?

Chosen
  • Scheduled, automated rotation: Entra keys roll "on a periodic basis"; Sigstore's machinery "proposes resigning when signatures are close to expiry"; post-2023 Microsoft automated MSA/Entra signing-key rotation in managed HSM.
Rejected
  • Rotate-on-demand only. Microsoft ran MSA this way, manually and infrequently, then stopped entirely in 2021 after a rotation-linked outage. The CSRB found no tooling existed to flag keys overdue for retirement.
Flips when
  • Never back to on-demand. The cadence, though, is set by your slowest verifier: rotate as fast as the 95th-percentile consumer refreshes, not as fast as the HSM allows. Entra's floor is the 24-hour JWKS cache it prescribes.

Where does the private key live: online custody or offline ceremony?

Chosen
  • Split by signing rate. Continuous signers (token issuers) sit in online HSMs with automated rotation. Rare signers (the root KSK, Sigstore's root, ISRG's root) sit offline behind a quorum: two safes and smart cards at IANA, five keyholders at Sigstore.
Rejected
  • One custody model for everything. An offline ceremony cannot sign millions of tokens an hour; an online key for a root that signs quarterly is pure exposure with no throughput gained.
Flips when
  • Signing latency requirements change class. The moment a "rare" key needs to sign on demand (an emergency re-issue), you discover the ceremony is your deploy pipeline: ICANN's February 2020 ceremony was postponed by a jammed safe and resumed only after drilling it open.

How long do old and new keys overlap?

Chosen
  • Overlap sized to verifier refresh latency. KSK-2024 was published in the root zone 21 months before it becomes the only signer (2025-01-11 to 2026-10-11). IdenTrust's cross-sign for ISRG Root X1 ran three years. Entra's overlap is hours, because JWKS caches refresh hourly.
Rejected
  • Hard cutover as the normal path. GitHub cut its RSA host key over at a stroke, at "approximately 05:00 UTC on March 24", breaking every pinned known_hosts entry at once, and did it anyway "out of an abundance of caution" because the key had been exposed.
Flips when
  • Compromise is suspected. Exposure converts the overlap window from a courtesy into attacker dwell time; GitHub accepted a planet of scary host-key warnings rather than extend it. Scheduled rotations buy gentleness that emergencies cannot.

Does the old key introduce the new one, or does trust arrive out-of-band?

Chosen
  • In-band chaining for routine rolls: RFC 5011 hold-down in DNS, previous-root signatures in TUF, UpdateHostKeys in OpenSSH, kid-triggered JWKS refetch in OIDC. It scales to verifiers nobody can enumerate.
Rejected
  • Out-of-band redistribution as the only path (new OS images, manual trust-store edits). Red Hat's 2018 advice shows its cost: operators configuring close to the rollover "no longer have 30 days for the hold timer" and must paste the key in by hand.
Flips when
  • The old key is the thing you distrust. In-band introduction is exactly the channel the attacker now holds, so a compromise forces the out-of-band path. Keep it rehearsed even if the in-band path handles every routine roll.

Figure 3 · The four forks as one decision path

continuously

a few times a year

yes: JWKS, RFC 5011,
TUF, UpdateHostKeys

no: devices, pinned keys,
frozen images

yes

no

How often does
the key sign?

Online custody: managed HSM,
automated scheduled rotation

Offline custody: quorum ceremony,
threshold of keyholders

Can every verifier
refresh itself in-band?

Short overlap,
cadence = slowest cache

Overlap in years:
cross-sign, dual-publish,
measure uptake first

Compromise
suspected?

Cut over now, out-of-band;
accept verifier breakage

Publish successor, watch telemetry,
cut over on evidence

continuously

a few times a year

yes: JWKS, RFC 5011,
TUF, UpdateHostKeys

no: devices, pinned keys,
frozen images

yes

no

How often does
the key sign?

Online custody: managed HSM,
automated scheduled rotation

Offline custody: quorum ceremony,
threshold of keyholders

Can every verifier
refresh itself in-band?

Short overlap,
cadence = slowest cache

Overlap in years:
cross-sign, dual-publish,
measure uptake first

Compromise
suspected?

Cut over now, out-of-band;
accept verifier breakage

Publish successor, watch telemetry,
cut over on evidence

Terminal nodes are actions. The compromise branch overrides everything above it, which is why the out-of-band path must exist even when the in-band path is routine. Derived from the decision blocks above and the incidents in section 4.
Diagram source
DecisionChosenRejectedBecauseEvidence
CadenceScheduled, automatedOn-demand, manualManual rotation caused an outage, so it stopped, so a 2016 key signed until 2023CSRB, 2024
CustodyOnline HSM for frequent signers, offline quorum for rare onesOne model for all keysSigning rate and exposure trade directly; the ceremony is the rare key's deploy pipelineAPNIC, 2020; SecurityWeek, 2023
OverlapSized to verifier refresh: hours (JWKS) to 21 months (root KSK) to 3 years (cross-sign)Hard cutover by defaultOverlap is free insurance until the old key is hostileICANN, 2026; Let's Encrypt, 2020
IntroductionIn-band: old key vouches for newOut-of-band onlyScales to unenumerable verifiers; flips to out-of-band on compromiseRFC 5011; TUF spec
Emergency pathPre-built and rehearsed (GitHub: days from exposure to swap)Improvised under fireGitHub published new fingerprints, staged the key, swapped at a stated hourGitHub, 2023
04

What broke in production

Three failure classes cover every incident in the corpus: the rotation muscle atrophied, the verifier population decided the blast radius, and the rotation apparatus itself failed. Naming the class tells you which control was missing.

Class one: rotation atrophy

Postmortem

The key nobody dared rotate signed for the attacker

AssumptionNot rotating is the safe option; rotation is the risky operation that causes outages.
What happenedStorm-0558 acquired a 2016 MSA consumer signing key, path unknown. A validation flaw let the consumer key mint tokens that enterprise Exchange Online accepted, per Microsoft "a validation issue allowed this key to be trusted for signing Azure AD tokens".
Blast radiusMore than 500 mailboxes across 22 organisations, including US government departments. The CSRB: "Microsoft does not know how or when Storm-0558 obtained the signing key."
FixSigning keys moved to Azure Managed HSM; rotation automated; by 2024 Microsoft reported Entra and MSA "generate, store, and automatically rotate" token signing keys there.
Design ruleA rotation that is too dangerous to perform is a standing incident, not a deferred chore. Automate rotation until it is boring, and alert on key age the way you alert on disk space.
Postmortem

The CA that could not rotate its way back to trust

AssumptionA breached issuer can revoke the bad certificates quietly and carry on under the same root.
What happenedDigiNotar's intrusion reached all eight CA-managing servers; 531 rogue certificates were issued between 10 and 20 July 2011, and Fox-IT counted at least 300,000 unique Iranian IP addresses using the rogue Google certificate.
Blast radiusTerminal. Mozilla performed "a complete removal from our trusted root program", citing that DigiNotar had revoked fraudulent certificates "without notifying Mozilla" six weeks earlier. The company was gone within months.
FixNone available to DigiNotar. The rotation was executed by its verifiers: browsers rotated the root out of their stores. Entrust's 2024 distrust by Chrome, after "a pattern of compliance failures" over six years, shows the same mechanism operating in slow motion.
Design ruleIf you operate a trust anchor for other people, your verifiers hold a rotation lever you do not control, and nondisclosure is the act most likely to make them pull it.

Class two: the verifier population decides the blast radius

Postmortem

The root expired on schedule; the verifiers broke anyway

AssumptionClients holding the replacement root (ISRG Root X1) would build a chain to it when DST Root CA X3 expired on 2021-09-30, a date known for years.
What happenedOpenSSL 1.0.2 "always prefers the untrusted chain", and when that chain leads to the expired root "it will be selected for the certificate verification", per the OpenSSL project. The valid path to the new root was never tried.
Blast radiusScott Helme's post-mortem confirmed failures at Palo Alto, Bluecoat, Cisco Umbrella, Google Cloud Monitoring, Auth0, Shopify, QuickBooks and Fortinet, mostly via outdated OpenSSL builds buried in appliances and pipelines.
FixRemove the expired root from trust stores and lean on the modern verifier behaviour (trusted-first). The 1.0.2 branch itself was end-of-life; upstream shipped no fix, and a client-side alternative-chains patch in jruby-openssl (PR #240) sits unmerged five years later.
Design ruleRotation planning is an inventory problem: enumerate verifier implementations and versions, not certificates. The chain you serve is a suggestion the verifier is free to ignore.
Near-miss

Telemetry arrived just in time to postpone the first root KSK roll

AssumptionResolvers implementing RFC 5011 would learn KSK-2017 automatically during the publication window, so the 2017-10-11 cutover would be safe.
What happenedRFC 8145 trust-anchor reporting, finalised months earlier, showed "approximately 5% of the total validators" signalling only the old key; "these validators would not resolve correctly after the planned root KSK roll". ICANN postponed days before the date.
Blast radiusZero user impact; one year of delay. The roll executed 2018-10-11 with "far fewer Internet users negatively affected... than anyone expected". The IMC 2019 measurement adds the honest footnote: fine for users, while "under the hood, a number of issues occurred".
FixTelemetry became a precondition: the 2026 KSK-2024 roll proceeds with "more than 95 percent of reporting resolvers" confirmed, and a published failure signature (SERVFAIL within 48 hours) for operators who miss it.
Design ruleMeasured uptake converts a potential outage into a schedule slip. Build the measurement before the rollover, not after; it is the cheapest component in the whole architecture.

Class three: the rotation apparatus itself fails

Postmortem

The ceremony blocked on a safe that would not open

AssumptionThe quorum ceremony that signs the root zone is always executable on its published calendar.
What happenedDays before the 40th root KSK ceremony in February 2020, "one of the security mechanisms that protects the contents of the secure safes was found to be malfunctioning". The ceremony was postponed and the safe ultimately drilled open on camera.
Blast radiusDays of delay with signatures pre-generated in reserve; no DNSSEC service interruption. The structural echo came in 2024: the HSM vendor exited the business, forcing a new key (KSK-2024) onto the calendar, and the planned three-year rotation cycle had already stretched to eight.
FixSpare capacity in the process itself: signing ceremonies run ahead of need, published back-out plans, and now a second rollover executed while the muscle still remembers the first.
Design ruleYour rotation process has its own dependencies: hardware vendors, safes, named humans with smart cards. Drill the process on a schedule, because its failure modes only surface when it runs.
Postmortem

The explanation of the key theft was itself rolled back

AssumptionThe postmortem of a key compromise can establish how the key left custody, so remediations can target the leak path.
What happenedMicrosoft's September 2023 investigation proposed that the key travelled in a crash dump out of the isolated signing environment. The March 2024 update withdrew the central claim: no crash dump containing the key was ever found, and the CSRB recorded "no evidence or logs showing the stolen key's presence in or exfiltration from a crash dump".
Blast radiusNot the mailboxes (already counted) but the engineering that followed: remediations were aimed at a hypothesis, and log retention gaps meant the real path may never be known.
FixTreat custody logging as part of the key: Microsoft's corrections closed the dump-redaction, detection and scanning gaps regardless of whether that path was the one used.
Design ruleWhen you cannot prove how a key left, you must rotate and remediate as if every plausible path was used. Audit-log retention on the signing path is a key-management control, not a compliance one.

Figure 4 · The Storm-0558 failure path: two stale controls lining up

"Exchange Online""MSA key (2016)""Storm-0558""Exchange Online""MSA key (2016)""Storm-0558"rotation paused 2021,key age 7 years, no age alertingconsumer key acceptedfor enterprise audiencedetected by a customer's audit logs,not by the issuerforge consumer token withstolen keypresent token against enterprise mailboxesmail access: 22 orgs, 500+ mailboxes
"Exchange Online""MSA key (2016)""Storm-0558""Exchange Online""MSA key (2016)""Storm-0558"rotation paused 2021,key age 7 years, no age alertingconsumer key acceptedfor enterprise audiencedetected by a customer's audit logs,not by the issuerforge consumer token withstolen keypresent token against enterprise mailboxesmail access: 22 orgs, 500+ mailboxes
Either control alone (a rotated key, or strict audience validation) breaks the chain; both had quietly lapsed. Reconstructed from the CSRB report and Microsoft's July 2023 analysis.
Diagram source

The quiet member of this catalogue is Kubernetes, where no public incident exists but the failure shape is documented in the project's own records: issue #22351 reports that "changing the key pair will not automatically regenerate service account tokens", and KEP-740 records that rotation requires an API-server restart. No postmortem names this as a root cause in the public record, which reads less as safety than as the Storm-0558 pattern pre-incident: rotation friction high enough that fleets simply do not rotate. That is an inference, flagged as one; the KEP shipping external signing (alpha in v1.32) suggests the maintainers read it the same way.

05

Numbers you can plan against

The quantities that recur in rotation planning: ages, windows, uptake percentages and custody costs, each with its context and date.

MetricValueAtContextAs ofSource
Age of signing key at compromise use7 yearsMicrosoft MSAIssued 2016, forging tokens 2023; rotation stopped 20212024CSRB
Blast radius of one signing key22 orgs, 500+ mailboxesExchange OnlineForged-token access, measured2024CSRB
Exposure-to-rotation, emergency host keydays (swap 05:00 UTC 2023-03-24)GitHub.comKey exposed "this week", replaced at an announced hour2023GitHub
In-band anchor acceptance delay30 days minimumAny RFC 5011 resolverAdd hold-down time; two validated sightings required2007RFC 5011
Root KSK publication-to-cutover overlap21 monthsDNS root, KSK-2024Published 2025-01-11, sole signer 2026-10-112026ICANN
Resolver uptake before second roll95%+DNS rootReporting resolvers signalling KSK-20242026ICANN
Stuck-resolver share that forced postponement~5% (6-8% daily)DNS root, 2017RFC 8145 reporters carrying only KSK-20102017ICANN
User failure window after a missed rollwithin 48 hValidating resolversSERVFAIL onset per ICANN's rollover guide; 99%+ of validating users expected unaffected2018ICANN guide
Cross-sign lifetime for legacy devices3 yearsIdenTrust / ISRGExpired-root cross-sign for pre-7.1.1 Android2020Let's Encrypt
JWKS cache contract24 h TTL, 1 h refresh, 5 min floorMicrosoft identity platformPrescribed relying-party behaviour, refetch on unknown kid2026 (living doc)Microsoft
Rogue certificates from one CA breach531; 300,000 client IPsDigiNotarIssued over 10 days; Iranian users of the rogue Google cert2011Fox-IT
Shared-KMS key custody$1/key/month + $0.03/10k requestsAWS KMSCustomer-managed key, prorated hourly2026AWS
Dedicated HSM custody$1.60/hr (~$1,152/mo), x2 for HAAWS CloudHSM, us-east-1Vendor's own worked example2026AWS
Issuance resting on one root's intermediates~10M certificates/dayLet's EncryptStated issuance rate, late 20252025ISRG

Figure 5 · Sixteen years of the root key: one key for eight years, then a capability

2010KSK-2010 entersservice2017Telemetry shows 5%stuckRollover postponed2018First rollover, 11 OctFewer affected thanexpected2024KSK-2024 generatedPublished Jan 20252026Only KSK-2024signs, 11 OctThe root KSK, 2010 to 2026
2010KSK-2010 entersservice2017Telemetry shows 5%stuckRollover postponed2018First rollover, 11 OctFewer affected thanexpected2024KSK-2024 generatedPublished Jan 20252026Only KSK-2024signs, 11 OctThe root KSK, 2010 to 2026
The gap between 2010 and 2018 is the atrophy risk this guide is about; the 2024-2026 cycle is what a maintained rotation capability looks like. Dates from ICANN and Verisign.
Diagram source
Read these carefully

The CSRB figures and the RFC values are measured or normative. ICANN's uptake percentages count only resolvers that report RFC 8145 signals, a self-selected modern subset, so the true stuck population is higher than the complement suggests; the IMC 2019 paper flags exactly this telemetry gap. "Far fewer affected than expected" and "overwhelming success" are ICANN's own assessments of its own rollover. AWS prices are vendor list prices, dated on the day checked. The Kubernetes rotation friction is documented behaviour, but its production incident rate is unpublished: nobody knows how many clusters have never rotated their service-account keys.

06

The evidence wall

Every source behind this page, graded. One honesty note: this guide was researched from an environment whose egress allows GitHub raw content and git but refuses direct fetches elsewhere; GitHub-hosted sources were fetched raw (and one PR's merge state verified by git), while all other pages were retrieved through web-search retrieval of their text. The ledger shipped beside this page records which was which, per source.

Postmortem Cyber Safety Review Board2024-04

Review of the Summer 2023 Microsoft Exchange Online Intrusion

The definitive account: rotation stopped entirely in 2021 after a rotation-linked outage, no tooling flagged overdue keys, the 2016 key stayed live, and the theft path was never established.

Carry forwardThe decision to stop rotating is itself an architectural decision, and it needs an owner, an expiry and an alert.
cisa.gov PDF
Postmortem Microsoft MSRC2023-09, upd. 2024-03

Results of Major Technical Investigations for Storm-0558 Key Acquisition

The crash-dump hypothesis, published with specifics, then withdrawn in the March 2024 update: no dump containing the key was found. The investigation outlived its own conclusion.

Carry forwardCustody logging must outlast the investigation horizon; a key you cannot trace is a key you must assume fully exposed.
msrc.microsoft.com
Postmortem GitHub2023-03

We updated our RSA SSH host key

Private key briefly exposed in a public repository; replaced days later at an announced hour, scoped to one algorithm, with new fingerprints published for verification. The rare public example of a rehearsed emergency anchor swap.

Carry forwardAn emergency rotation you can execute in days exists only if the mechanics (staging, comms, fingerprint publication) were built in peacetime.
github.blog
Postmortem Scott Helme2021-10

Let's Encrypt Root Expiration - Post-Mortem

The independent tally of who broke when DST Root CA X3 expired: Palo Alto, Cisco Umbrella, Google Cloud Monitoring, Auth0, Shopify, QuickBooks, Fortinet and more, overwhelmingly via outdated OpenSSL in appliances.

Carry forwardThe organisations that broke sell security products; verifier inventory is hard even for experts, so assume yours is incomplete.
scotthelme.co.uk
Postmortem Fox-IT / DigiNotar2011-09

Interim report, DigiNotar certificate authority breach ("Operation Black Tulip")

531 rogue certificates in ten days, all eight CA servers compromised, 300,000 Iranian IPs hitting the rogue Google certificate. The report that ended a certificate authority.

Carry forwardA trust anchor's operator who cannot rotate, detect and disclose will have the rotation done to them, permanently.
sec.gov (filed copy)
Postmortem ICANN2020-02

Root Key Signing Key ceremony postponed (the jammed safe)

A malfunctioning safe mechanism blocked access to ceremony material days before the 40th KSK ceremony. No DNSSEC interruption, but the signing calendar slipped and the safe was drilled open on camera.

Carry forwardThe rotation process has physical and human dependencies with their own failure modes; they surface only when the process runs.
icann.org
Source jruby/jruby-openssl2021-10

PR #240: alternative chain building, five years unmerged

A "minimalistic" port of modern alternative-chain verification, opened weeks after the DST Root X3 breakage. Its head commit is absent from master as of 2026-10 while master stays active (verified by git in this session).

Carry forwardDo not plan a rotation around a fix landing in your verifiers; the ecosystem's long tail does not merge on your schedule.
github.com/jruby/jruby-openssl/pull/240
Source Kubernetes2016-03

Issue #22351: rotated keys do not regenerate issued tokens

The thread that documents the friction: change the service-account key pair and existing tokens are not re-minted; the workaround is deleting token secrets so the controller recreates them.

Carry forwardRotating the signer is half the job; have an answer for every credential the old key already minted.
github.com/kubernetes/kubernetes/issues/22351
Source OpenSSHsince 6.8 (2015)

ssh_config(5): UpdateHostKeys

The protocol extension that "supports graceful key rotation by allowing a server to send replacement public keys" into clients' known_hosts after authentication, fetched raw from the portable tree.

Carry forwardIn-band introduction can be retrofitted onto a 25-year-old trust model; the constraint is deployment lag, not protocol design.
github.com/openssh/openssh-portable
Source Sigstorechecked 2026-10

root-signing: the trust root operated as pull requests

Five named keyholders with dated terms (two already emeritus), signing events as PRs, and machinery that "proposes resigning when signatures are close to expiry". Rotation designed in before the system had users.

Carry forwardKeyholder turnover is a scheduled event, not an emergency; term limits force the rotation muscle to stay warm.
github.com/sigstore/root-signing
ADR Kubernetes SIG-Authalpha v1.32

KEP-740: external signing of service account tokens

The design record that names the constraint flatly: keys load at process start, so "rotating keys require a kube-apiserver to restart", and moves signing behind an RPC so external key managers can rotate without one.

Carry forwardIf rotation requires a restart of the control plane, rotation will be deferred; decouple key lifecycle from process lifecycle.
KEP-740
ADR IETF2007-09

RFC 5011: automated updates of DNSSEC trust anchors

The standards answer to in-band anchor rotation: a new key is accepted only after the old one vouches for it across a hold-down of "30 days or the expiration time of the original TTL... whichever is greater", seen in at least two validated sets.

Carry forwardIn-band trust introduction needs a deliberate delay to blunt a compromised-key race; budget that delay into every rollover plan.
rfc-editor.org/rfc/rfc5011
ADR The Update Frameworkchecked 2026-10

TUF specification: the root role rotates keys by threshold

Roles hold multiple keys with thresholds; compromise below the threshold cannot reach clients; new root metadata is signed by the previous root key so continuity is provable offline.

Carry forwardDesign the key hierarchy so that rotation is a signed state transition, not an out-of-band migration.
theupdateframework.io/specification
Blog ICANN2017-09

Update on the Root KSK Rollover Project (the postponement)

Brand-new RFC 8145 telemetry showed ~5% of reporting validators carrying only the old key; ICANN postponed the first-ever root rollover days before the date, on data that had not existed six months earlier.

Carry forwardIf uptake telemetry can exist, build it before the rollover; it converts an outage into a schedule decision.
icann.org
Blog ICANN2018-10

The recent KSK rollover: summary and next steps

"The result was exceptionally good: There were far fewer Internet users negatively affected by the change... than anyone expected." The operator's own verdict on the first roll, written three weeks after it.

Carry forwardA rollover delayed on evidence and executed with telemetry beats a punctual one executed blind.
icann.org
Blog ICANN2026-07

Preparing for the root zone KSK rollover (2026-10-11)

KSK-2024 (key tag 38696) published since 2025-01-11; from 2026-10-11 the root signs only with it; more than 95% of reporting resolvers already signal the new key. The second roll, run as routine.

Carry forwardThe second rotation is the proof the first one built a capability rather than survived an event.
icann.org
Blog Cloudflare2026

The keys to the Internet change on October 11. Are you ready?

The operator's-eye view ahead of the second roll: in 2018 Cloudflare "had seen resolvers lose their learned trust in the new key during software upgrades or moves between machines", so publishing early is necessary but not sufficient.

Carry forwardAnchor state is mutable local state; it decays under rebuilds and migrations, so verify it, do not assume it.
blog.cloudflare.com
Blog APNIC / Kim Davies2020-03

Drilling for the KSK

The inside account of the jammed-safe ceremony: two safes, HSMs in one, activation smart cards in the other, and the decision process that ended with a drill and a locksmith under camera.

Carry forwardWrite down the break-glass path for the rotation process itself, including who may authorise the drill.
blog.apnic.net
Blog Let's Encrypt / ISRG2020-12

Extending Android device compatibility (the expired-root cross-sign)

IdenTrust issued a three-year cross-sign for ISRG Root X1 from the expiring DST Root CA X3, workable because "Android intentionally does not enforce the expiration dates of trust anchors". A verifier quirk, used deliberately, bought years of compatibility.

Carry forwardVerifier-policy diversity cuts both ways: it breaks clean rotations and enables clever ones. Know your population's quirks.
letsencrypt.org
Blog OpenSSL2021-09

Old Let's Encrypt root certificate expiration and OpenSSL 1.0.2

The project's own warning, seventeen days early, that 1.0.2 "always prefers the untrusted chain" and would follow it to the expired root; the fix is removing the dead root from the trust store, host by host.

Carry forwardA published warning does not reach the appliances; assume the long tail reads nothing and plan the chain you serve for them.
openssl-library.org mirror
Blog Mozilla2011-09

DigiNotar removal follow up

"A complete removal from our trusted root program", justified by the six-week nondisclosure. The verifier side of the DigiNotar story: trust-store operators executed the rotation the CA would not.

Carry forwardDisclosure latency, not breach size, is what converts a CA incident into a CA removal.
blog.mozilla.org
Blog Google Chrome Security2024-06

Sustaining digital certificate security: Entrust distrust

Chrome distrusted Entrust TLS issuance after "a pattern of compliance failures, unmet improvement commitments" across six years: the slow-motion version of the verifier-side rotation lever, with a dated SCT cutoff instead of an emergency removal.

Carry forwardRoot programs now rotate out operators, not just keys; remediation velocity is part of what keeps an anchor trusted.
security.googleblog.com
Blog CNCF / Sigstore2021-06

A new kind of trust root (the first ceremony)

Five community keyholders generated keys on hardware tokens during a live-streamed ceremony and signed the initial TUF root: a trust anchor born with its rotation protocol already public.

Carry forwardThe cheapest time to design rotation is before the first verifier exists.
cncf.io
Blog Let's Encrypt / ISRG2025-12

10 years (the issuance machine under one root)

"Frequently issuing ten million certificates per day" as of late 2025. The scale number that explains why root and intermediate hygiene at ISRG is an industrial process, not a ceremony-only affair.

Carry forwardThe more leaves a root carries, the more its rotation resembles a migration programme with a comms plan.
letsencrypt.org
Blog Red Hat2018

What you need to know about the first-ever DNSSEC root key rollover

Operator guidance from the resolver-vendor side, including the catch for late joiners: configure close to the roll and "you no longer have 30 days for the hold timer", so the new key goes in by hand.

Carry forwardAutomated trust acquisition has a minimum runway; systems built inside that runway need the manual path documented.
redhat.com
Paper Müller et al., IMC 20192019-10

Roll, Roll, Roll Your Root (Distinguished Paper)

Independent multi-vantage measurement of the 2018 rollover: "generally did not lead to problems for end users", but "under the hood, a number of issues occurred", including telemetry polluted by non-resolver signals.

Carry forwardInstrument the rollover independently of the operator's own dashboard; the operator's success metric is user harm, yours is mechanism health.
par.nsf.gov (PDF)
Paper Osterweil et al.2021 (TNSM 2022)

From the Beginning: key transitions in the first 15 years of DNSSEC

Fifteen years of measured key transitions show "measurable gaps relative to prescribed key management processes", and the authors argue noncompliant transitions are inevitable at ecosystem scale.

Carry forwardDesign rotation procedures that degrade safely when half-followed, because at scale they will be.
arxiv.org/abs/2109.08783
Paper Samuel, Mathewson, Cappos, Dingledine (CCS 2010)2010

Survivable Key Compromise in Software Update Systems

The TUF paper: start from the assumption that keys will be compromised, then derive thresholds, role separation and offline roots so that rotation, not secrecy, is the survival mechanism.

Carry forward"How do we rotate after compromise" is a design-time question; retrofitting it is what section 4 looks like.
uptane.org (PDF)
Talk Matt Larson (ICANN), DNS-OARC 282018-03

Update on root KSK rollover (or, We're really doing it this time)

The operator community briefing between postponement and execution: what the RFC 8145 data showed, what could and could not be inferred from it, and the plan to proceed in October 2018.

Carry forwardPublishing your telemetry readout to the people it measures is part of the rollover, not PR around it.
indico.dns-oarc.net
Talk Edward Lewis (ICANN), NLUUG2017-05

2017 DNSSEC KSK rollover

The plan as presented to operators while KSK-2017 sat published but idle: the key "ready for operations but not yet in use", and the staged schedule that the September telemetry would later interrupt.

Carry forwardA published-but-unused successor key is a cheap, reversible first step every anchor operator can take today.
nluug.nl
Vendor Microsoftliving doc

Signing key rollover in the Microsoft identity platform

The issuer's explicit contract: keys roll periodically and "in an emergency, could be rolled over immediately"; relying apps must handle it programmatically, cache JWKS for 24 hours, and refetch on an unknown kid.

Carry forwardPublish your rotation contract to consumers as documentation with numbers, then test consumers against it.
learn.microsoft.com
Vendor AWSchecked 2026-10

KMS pricing, and KMS versus CloudHSM

$1 per customer-managed key per month plus $0.03 per 10,000 requests; a dedicated CloudHSM instance at $1.60/hour, about $1,152 a month, doubled for HA. The three-orders -of-magnitude custody cost spread, from the vendor's own pages.

Carry forwardCustody cost is not the constraint for most teams; the constraint is which custody tier makes rotation automatic.
aws.amazon.com/kms/pricing
Blog SecurityWeek / TechTarget (on Microsoft SFI)2023-11 / 2024-09

The structural fix: automated rotation in managed HSM, shipped

At the Secure Future Initiative launch: "Key rotation will also be automated allowing high-frequency key replacement with no potential for human access." A year later the progress report lists Entra and MSA signing keys generated, stored and auto-rotated in Azure Managed HSM as complete.

Carry forwardThe post-incident fix for a seven-year-old key was not a better calendar reminder; it was removing humans from the rotation loop entirely.
securityweek.com
Vendor ICANN / Verisign2024-2026

KSK-2024: generated under vendor pressure, rolled on telemetry

The new root key was generated in April 2024 after the HSM supplier announced its exit; Verisign's observations note the planned three-year rotation cycle had stretched to eight via the pandemic and hardware end-of-support.

Carry forwardAnchor rotation schedules slip for boring reasons; the slippage, not the ceremony, is the risk to manage.
icann.org
07

Build a miniature, then productionise it

Six rungs from a toy issuer to a rotation drill with a measured recovery time. The line from reading to capability crosses at rung four.

Issue and verify with a key identifier

Build a JWT issuer that signs with a keypair, publishes a JWKS document with a kid, and a verifier service that fetches it. Rotate the keypair while the verifier is handling traffic, keeping the old key in the JWKS during overlap.

Done when: a rotation during steady traffic produces zero verification failures.  Teaches: overlap and kid-based selection, the mechanics under every OIDC provider.

Break your own verifier the Entra way

Make the verifier cache the JWKS forever, rotate, and watch everything fail. Then implement the published contract: 24-hour cache, hourly refresh, immediate refetch on unknown kid with a 5-minute floor, per Microsoft's rollover doc.

Done when: you can state your system's maximum tokens-rejected window after an emergency roll, and demonstrate it.  Teaches: the verifier cache, not the issuer, sets your rotation cadence.

Rotate a host key in-band

Run sshd with two host keys and UpdateHostKeys yes on a client; connect, then retire the old key and confirm the client carries on without a prompt. Then simulate the GitHub scenario: delete the server key outright and script the client-side recovery (ssh-keygen -R plus fingerprint verification against a published list).

Done when: graceful rotation needs no human, and emergency rotation needs one documented command.  Teaches: the difference between the scheduled and the compromised path, on a protocol you already run.

Chain a root rotation with TUF

Stand up a TUF repository (the reference implementation or tuf-on-ci, as Sigstore runs) with a 2-of-3 root threshold. Rotate one root keyholder: new root metadata signed by the old quorum. Verify a client accepts the chained root and rejects metadata signed below threshold.

Done when: a client that saw only root v1 safely reaches root v3 offline.  Teaches: rotation as a signed state transition the old key authorises.

Run the compromise drill, with a stopwatch

Declare rung one's current key compromised at an arbitrary moment. Execute: new key live, old key removed from JWKS (no overlap), all long-lived credentials the old key minted invalidated (the Kubernetes #22351 lesson). Measure time to full recovery and count what broke.

Done when: the drill has run twice and the second time was faster; key age and "last rotated" alerts exist.  Teaches: rotation as a capability with a number attached, which is what the CSRB found Microsoft lacked.

Add uptake telemetry and gate the cutover on it

Before the next scheduled rotation, make verifiers report which key set they hold (a label on a metrics endpoint is enough; RFC 8145 is the production-grade shape). Dashboard the percentage on the new key and write down the threshold that authorises cutover and the back-out that a miss triggers.

Done when: a rotation is postponed or executed because the dashboard said so, like ICANN in 2017.  Teaches: the feedback edge that separates a measured rollover from a bet.

08

Keep hunting

The queries that found this material, grouped by what they surface. The vocabulary that unlocks the field: rollover, hold-down, key ceremony, cross-sign, trust anchor, kid.

Incidents and postmortems

  • "stopped key rotation" signing key outage
  • "host key" rotation exposed "out of an abundance of caution"
  • "DST Root CA X3" expiration post-mortem OpenSSL 1.0.2
  • "key ceremony" postponed safe OR HSM malfunction
  • rogue certificates CA breach report "revoked" trust store removal

Rollover mechanics and telemetry

  • root KSK rollover postponed RFC 8145 telemetry validators
  • RFC 5011 "hold-down" trust anchor rollover
  • "signing key rollover" JWKS "unknown kid" cache
  • "cross-sign" expired root "trust anchors" Android

Design records and source

  • KEP "service account" signing key rotation restart site:github.com
  • sigstore root-signing "signing event" keyholder threshold
  • TUF "root role" rotation "previous root key" specification
  • UpdateHostKeys "graceful key rotation" hostkeys@openssh.com

Measurement and policy

  • "KSK rollover" measurement IMC paper resolvers
  • DNSSEC "key transitions" measurement longitudinal
  • Chrome root program distrust "pattern of compliance failures"
09

References

  1. Cyber Safety Review Board, Review of the Summer 2023 Microsoft Exchange Online Intrusion CISA, 2024-04-02. Checked 2026-10-10.
  2. Microsoft MSRC, Results of Major Technical Investigations for Storm-0558 Key Acquisition Microsoft, 2023-09-06, updated 2024-03-12. Checked 2026-10-10.
  3. Microsoft, Analysis of Storm-0558 techniques for unauthorized email access Microsoft Security Blog, 2023-07-14. Checked 2026-10-10.
  4. GitHub, We updated our RSA SSH host key GitHub Blog, 2023-03-24. Checked 2026-10-10.
  5. Scott Helme, Let's Encrypt Root Expiration - Post-Mortem scotthelme.co.uk, October 2021. Checked 2026-10-10.
  6. Fox-IT, DigiNotar Certificate Authority breach, interim report ("Operation Black Tulip") Filed copy at sec.gov, 2011-09-05. Checked 2026-10-10.
  7. Mozilla Security Blog, DigiNotar Removal Follow Up Mozilla, 2011-09-02. Checked 2026-10-10.
  8. ICANN, Update on the Root KSK Rollover Project ICANN blog, 2017-09. Checked 2026-10-10.
  9. ICANN, The recent KSK Rollover: Summary and Next Steps ICANN blog, 2018-10-30. Checked 2026-10-10.
  10. ICANN, Preparing for the Root Zone KSK Rollover: What You Need to Know ICANN blog, 2026-07-27. Checked 2026-10-10.
  11. ICANN, announcement of the guide "What to Expect During the Root KSK Rollover" ICANN At-Large announce list, 2018-08. Checked 2026-10-10.
  12. ICANN, Root Key Signing Key Ceremony Postponed ICANN blog, 2020-02-12. Checked 2026-10-10.
  13. Kim Davies, Drilling for the KSK APNIC blog, 2020-03-04. Checked 2026-10-10.
  14. ICANN, ICANN to Generate New DNS Cryptographic Key at April 2024 Ceremony ICANN announcement, 2024-02-28. Checked 2026-10-10.
  15. Verisign, The 2024-2026 Root Zone KSK Rollover: Updates and Observations Verisign blog, 2026. Checked 2026-10-10.
  16. Cloudflare, The keys to the Internet change on October 11. Are you ready? Cloudflare blog, 2026. Checked 2026-10-10.
  17. M. StJohns, RFC 5011: Automated Updates of DNS Security (DNSSEC) Trust Anchors IETF, September 2007. Checked 2026-10-10.
  18. Let's Encrypt, Extending Android Device Compatibility for Let's Encrypt Certificates ISRG, 2020-12-21. Checked 2026-10-10.
  19. Let's Encrypt, DST Root CA X3 Expiration (September 2021) ISRG documentation. Checked 2026-10-10.
  20. OpenSSL, Old Let's Encrypt root certificate expiration and OpenSSL 1.0.2 OpenSSL blog, 2021-09-13. Checked 2026-10-10 (project mirror).
  21. jruby/jruby-openssl, PR #240: try building alternative cert chains GitHub, opened 2021-10-17; unmerged as of 2026-10-10 (verified by git). Checked 2026-10-10.
  22. Kubernetes, issue #22351: service account tokens and key rotation GitHub, March 2016. Checked 2026-10-10.
  23. Kubernetes SIG-Auth, KEP-740: Support external signing of service account tokens kubernetes/enhancements, alpha in v1.32. Fetched raw 2026-10-10.
  24. OpenSSH, ssh_config(5): UpdateHostKeys openssh-portable manual. Fetched raw 2026-10-10.
  25. Sigstore, root-signing repository GitHub. Fetched raw 2026-10-10.
  26. Sigstore / CNCF, A New Kind of Trust Root CNCF blog, 2021-06-16. Checked 2026-10-10.
  27. The Update Framework specification TUF project. Checked 2026-10-10.
  28. Samuel, Mathewson, Cappos, Dingledine, Survivable Key Compromise in Software Update Systems ACM CCS 2010 (PDF mirror at uptane.org). Checked 2026-10-10.
  29. Müller, Thomas, Wessels, Hardaker, Chung, Toorop, van Rijswijk-Deij, Roll, Roll, Roll Your Root ACM IMC 2019, Distinguished Paper (PDF at NSF PAR). Checked 2026-10-10.
  30. Osterweil, Fotouhi Tehrani, Schmidt, Wählisch, From the Beginning: Key Transitions in the First 15 Years of DNSSEC arXiv 2109.08783; IEEE TNSM 2022. Checked 2026-10-10.
  31. Matt Larson, Update on root KSK rollover (or, We're really doing it this time) DNS-OARC 28, 2018-03-08. Checked 2026-10-10.
  32. Edward Lewis, 2017 DNSSEC KSK rollover NLUUG voorjaarsconferentie 2017. Checked 2026-10-10.
  33. Microsoft, Signing key rollover in the Microsoft identity platform Microsoft Learn, living document. Checked 2026-10-10.
  34. SecurityWeek, After Major Cloud Hacks, Microsoft Unveils Secure Future Initiative SecurityWeek, 2023-11-02. Checked 2026-10-10.
  35. TechTarget, Microsoft issues first Secure Future Initiative report TechTarget, September 2024. Checked 2026-10-10.
  36. Google Chrome Security Team, Sustaining Digital Certificate Security: Entrust Certificate Distrust Google Security Blog, 2024-06-27. Checked 2026-10-10.
  37. AWS, Key Management Service pricing AWS. Checked 2026-10-10.
  38. AWS, KMS or CloudHSM? Choose the right key management solution AWS Security Blog. Checked 2026-10-10.
  39. Let's Encrypt, 10 Years ISRG, 2025-12-09. Checked 2026-10-10.
  40. Red Hat, What you need to know about the first-ever DNSSEC root key rollover Red Hat blog, 2018. Checked 2026-10-10.