SECOND MEASUREMENT SM-015

Certificate Transparency’s new tiled logs publish in seconds. The old ones take up to an hour, and the browsers’ own log lists are the slowest part

Markovian ProtocolMeasured 2026-10-02 and 2026-10-03Status: published 2026-10-03; questions sent to Apple’s and Chrome’s CT programs 2026-10-03, responses pendingDOI: 10.5281/zenodo.23123269

Every certificate a browser trusts has to be written into public logs first, so that anyone can see which certificates exist for a name. The logs come in two generations now. The original design, RFC 6962 from 2013, lets a log promise to include a certificate “soon”, with a maximum merge delay that most logs set at 24 hours. The new design, static-ct-api, serves the log as plain files and hands out a certificate’s position at the moment it is accepted, so there is nothing left to wait for. We tested both the same way: our own certificate, submitted to every log Chrome trusts, each log polled until it served the entry. All 43 tiled logs served it inside six seconds, most in a fifth of one. The 21 older logs took between ten seconds and an hour. Then we read what the two big browsers’ log lists say, because a list is what a certificate authority and a browser actually consult. Apple’s list hasn’t changed since 31 March and still marks twelve logs “usable” whose windows closed three months ago. Chrome’s list admits four shards whose windows run two weeks past Chrome’s own one-year rule, and declares a 24-hour merge delay for 21 logs under a policy that caps it at four. The logs have become fast. The paperwork around them has not.

The short version

Disclosure: Markovian Protocol holds no financial position in any organisation named here, was paid by no one for this work, and showed it to no one before publication except the organisations measured. We operate a witness that cosigns several of these logs. How we work.

Details

Merge delay: we hold a certificate chain for one of our own names and submitted it on 2 October to every usable and qualified log in the union of Chrome’s and Apple’s lists that would take it: 61 of Chrome’s 64 (three shards accept no certificate we hold) and Cloudflare’s three Raio shards, which only Apple lists, through add-chain for RFC 6962 logs and add-pre-chain where a precertificate was needed, then polled each log on its own thread until it served the entry: an inclusion proof by leaf hash for RFC 6962 logs, a checkpoint whose tree size passes the leaf index the SCT carried for tiled logs. The delay is the time from the SCT’s timestamp to the first poll that found the entry, which overstates it by up to one polling interval; the lower bound from the last poll that didn’t is recorded too. Where a log had already seen the chain and returned an old SCT, we detect that from the timestamp and used a fresh chain. Roots: /ct/v1/get-roots from all 64 logs, SHA-256 of each DER certificate, compared with the 101 roots the CCADB marks as included in Chrome and with the 100 trust anchors in Chromium’s root_store.textproto (the CCADB’s extra one is Certum Trusted Network CA 2). Lists: Chrome’s log_list.json v93.2 and Apple’s current_log_list.json v511, with each log’s temporal interval against the calendar and against the other list.

What they said, what we found

The ruleWe found
Chrome CT Log Policy: “Incorporate a certificate for which an SCT has been issued by the log within the MMD.”164 of 64. Tiled logs in 0.1 to 5.7 s against a 60-second MMD; RFC 6962 logs in 10 s to 61 min against 24 hours.
Chrome CT Log Policy: “RFC 6962 logs must not specify a MMD greater than 4 hour.”1Chrome’s own list specifies 86,400 seconds, 24 hours, for every one of the 21 RFC 6962 logs it trusts.
Chrome CT Log Policy: “The certificate expiry ranges for CT logs must be no longer than one calendar year.”1Four TrustAsia shards at 379 and 380 days, all usable. The other 60 are at 181 to 365.
Chrome CT Log Policy: “CT logs are expected to accept logging submissions from CAs that are trusted by default in Chrome.”130 logs accept all 101; 29 miss one; Sphinx misses 6; Nimbus misses 25.
Apple: “Usable: SCTs from the log can be relied on to meet Apple’s client CT policy.”212 usable logs on Apple’s list stopped accepting certificates on 17 June, 18 June or 1 July. An SCT from them cannot be obtained today; the list is 186 days old.
static-ct-api: the leaf index in the SCT “by design this encourages a null Merge Delay, since entries must be sequenced before an SCT is returned”.3It does. Median 0.2 s across 43 logs, the slowest 5.7 s.

How long each log took

OperatorLogsDesignServed our certificate in
GeomysTuscolo ×5, Trastevere ×5tiled0.07 to 0.10 s
GoDaddyAquamarine ×5tiled0.09 to 0.12 s
Let’s EncryptSycamore ×2, Willow ×3tiled0.15 to 0.26 s
CloudflareRaio ×3 (Apple’s list; not in Chrome’s)tiled0.7 to 1.0 s
GoogleParcelYard ×3, PlumbersArms ×3tiled1.0 to 2.2 s
TrustAsiaLuoshu2027tiled1.2 s
MicrosecEszigno ×5tiled0.1 to 4.2 s
IPng NetworksHalloumi ×5, Gouda ×3tiledup to 5.7 s
DigiCertWyvern ×3, Sphinx ×3RFC 696210 to 11 s
GoogleArgon ×2, Xenon ×2RFC 69621.2 to 1.6 min
SectigoElephant ×3, Tiger ×3RFC 69620.7 to 1.7 min
TrustAsialog2026a, log2026b, HETU2027RFC 69620.7 to 2.5 min
CloudflareNimbus2027, Nimbus2026RFC 696246.0 and 60.6 min

Cloudflare’s two Nimbus logs are the only ones in Chrome’s list that took longer than three minutes (its three tiled Raio logs, on Apple’s list, answered in about a second), and the hour they take is also the gap Firefox’s revocation reader waits on (SM-009). Nothing here breaks a rule; 24 hours is the rule. The point is the distance between what the rule allows and what everyone but Cloudflare now does.

The lists

A certificate authority doesn’t read a log’s API to decide where to submit; it reads the browsers’ lists. Apple publishes one JSON file and Chrome another, and both carry a state per log and a window of certificate expiry dates the log accepts. When the window closes the log stops taking submissions. Chrome’s list no longer carries them; Apple’s list has not been touched since 31 March.

Apple “usable” logWindow closedDays agoChrome’s list
Let’s Encrypt Willow 2026h12026-06-17108removed
Let’s Encrypt Sycamore 2026h12026-06-18107removed
Google Argon 2026H1, Xenon 2026H1; DigiCert Wyvern 2026h1, Sphinx 2026h1; Sectigo Elephant 2026h1, Tiger 2026h1; Cloudflare Raio2026h1a; Geomys Tuscolo2026h1; IPng Gouda 2026h1, Halloumi2026h12026-07-0194removed

Apple’s program page, updated 3 September, defines usable as a log whose SCTs “can be relied on to meet Apple’s client CT policy” and says nothing about when a closed shard leaves that state. The list it governs was built on 31 March. Chrome’s list, fetched the day after Apple’s, was version 93.2, stamped 2 October at 13:40 UTC.

The four TrustAsia shards are the other list finding. Chrome’s policy says a window “must be no longer than one calendar year”; log2026a and log2026b run from 24 December 2025 to 8 January 2027, 380 days, and the two 2027 shards the same. The convenience is obvious, a week either side of the year boundary. So is the word “must”. And the policy’s four-hour cap on an RFC 6962 log’s MMD sits beside a list that declares 24 hours for all 21 of them; whichever is current, the other is wrong.

How this ends

Three small acts, each visible on the daily recheck: Apple publishes a new log list and the twelve closed shards leave “usable”; Chrome’s list and its policy say the same merge delay for RFC 6962 logs; the four 380-day shards reach their end and no successor exceeds a year. The logs themselves need nothing; the lists do.

The evidence

Every quote below was copied from the source and checked against a saved copy, fetched 2 or 3 October 2026. Both lists, the policy pages, the per-log measurements and the scripts are published next to this page (SHA256SUMS).

Exhibit 1 · Chrome’s rules

“Insofar as is possible, Chrome’s requirements are equivalent between static-ct-api and RFC 6962 logs, however, static-ct-api logs must not specify a MMD greater than 1 minute and RFC 6962 logs must not specify a MMD greater than 4 hour.” … “The certificate expiry ranges for CT logs must be no longer than one calendar year and should be no shorter than three months.” … “CT logs are expected to accept logging submissions from CAs that are trusted by default in Chrome across all its supported platforms”

googlechrome.github.io/CertificateTransparency/log_policy.html · saved copy log_policy.html

Exhibit 2 · Chrome’s list

log_list.json v93.2, 2026-10-02T13:40:14Z: 64 usable or qualified logs
  tiled_logs: 43, "mmd": 60
  logs (RFC 6962): 21, "mmd": 86400
  TrustAsia 'log2026a'  temporal_interval 2025-12-24 → 2027-01-08   380 days
  TrustAsia 'log2026b'  2025-12-24 → 2027-01-08   380      HETU2027  2026-12-25 → 2028-01-08   379      Luoshu2027  2026-12-24 → 2028-01-08   380

log_list.json · lists.json (analyze_lists.py)

Exhibit 3 · Apple’s list

valid.apple.com/ct/log_list/current_log_list.json   version 511
Last-Modified: Tue, 31 Mar 2026 16:17:29 GMT   Content-Length: 148409
"usable" with temporal_interval.end_exclusive in the past: 12
  log.willow.ct.letsencrypt.org/2026h1    end 2026-06-17   Google 'Argon 2026H1' log   end 2026-07-01   …

apple_log_list.json, response headers · program page apple_ct_program.html (“Published Date: September 03, 2026”)

Exhibit 4 · The measurements

merge delay (ct_mmd.py, 2026-10-02): 64 logs, our chain, polled until served
  tiled      43   max 5.7 s   median 0.2 s
  RFC 6962   21   DigiCert 10–11 s · Google 1.2–1.6 min · Sectigo 0.7–1.7 min · TrustAsia 0.7–2.5 min · Cloudflare 46.0 / 60.6 min
accepted roots (get_roots.py, 2026-10-03): 64 logs vs 101 Chrome-included roots
  all 101: 30 logs   missing 1: 29   missing 6: Sphinx ×3   missing 25: Nimbus2026, Nimbus2027   Merge Delay Monitor Root: 64/64

merge_delays_merged.json · roots_by_log.json · ccadb_all_included.csv, root_store.textproto

Our questions

Sent on 3 October 2026 to Apple’s Certificate Transparency program and to Chrome’s. Answers will be printed here as written.

  1. Apple: twelve logs on the current list are marked usable although their windows closed in June and July. When does a closed shard leave the usable state, and is the list’s 31 March build date intended?
  2. Chrome: the policy caps an RFC 6962 log’s MMD at four hours; the list declares 24 hours for all 21. Which governs, and will the list change?
  3. Chrome: four TrustAsia shards run 379 and 380 days against “no longer than one calendar year”. Was an exception granted, and is the rule read as inclusive of the boundary weeks?
  4. Both: Cloudflare’s Nimbus logs accept 76 of the 101 Chrome roots. Is “expected to accept” monitored, and at what shortfall does it matter?

Their reply, scored

Waiting for replies. When they come, each question gets marked answered, partly answered or not answered, and the replies go here in full.

Disclosure timeline

2 OctMerge delays measured.
3 OctRoots fetched; Cloudflare and DigiCert told the same day about the roots their logs don’t accept (service notes, no finding claimed).
3 OctPublished; questions sent to Apple and Chrome.

Waiting since 3 Oct.

What we can’t be sure of

Run it yourself

Python 3 standard library plus the cryptography package for the chain. A certificate you control, submitted to 64 logs; a few minutes for the fast ones, an hour for Cloudflare.

python3 ct_mmd.py --chain chain.pem           # submit to every usable/qualified log, poll until served
python3 get_roots.py                           # accepted roots per log vs the CCADB's Chrome-included set
python3 analyze_lists.py                       # shard windows and Apple's closed-but-usable shards

Reproduced from the public repository on 3 October 2026 on a clean machine: the root and list results are exact (30 logs accept all 101 roots, four 380-day shards, 12 closed shards usable on Apple's list). The merge-delay measurement needs a publicly trusted certificate chain of your own. Full table on the track record.

What you can do with this

References

  1. Google. Chrome Certificate Transparency Log Policy. googlechrome.github.io/CertificateTransparency/log_policy.html.
  2. Apple. Apple’s Certificate Transparency log program, support article 103703. support.apple.com/en-us/103703.
  3. C2SP. static-ct-api. c2sp.org/static-ct-api.
  4. B. Laurie, A. Langley, E. Kasper. Certificate Transparency, RFC 6962, 2013. rfc-editor.org/rfc/rfc6962.
  5. Google. Chrome CT log list v3. gstatic.com/ct/log_list/v3/log_list.json. Apple. Current log list. valid.apple.com.

Cite as

@misc{markovian-sm015,
  author = {{Markovian Protocol}},
  title  = {Merge delay, accepted roots and list hygiene across the 64 Chrome-trusted CT logs, October 2026},
  number = {SM-015},
  doi    = {10.5281/zenodo.23123269},
  year   = {2026},
  month  = oct,
  url    = {https://markovianprotocol.com/measurements/sm-015.html}
}