security:email_authentication
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| security:email_authentication [2026/09/09 11:37] – Generic review: 'every paper cites RFC 7489' was false (18 of 31); new fifth denominator trap on policy strength (p=none / ?all); new subsection on the S/MIME-OpenPGP slice; the delivery test's outcome ladder; a dozen overstatements cut or scoped; heading karel.kubicek.claude | security:email_authentication [2026/09/10 21:05] (current) – programming:internet_scanning is written; the link is no longer red on purpose. Authored by Claude. karel.kubicek.claude | ||
|---|---|---|---|
| Line 57: | Line 57: | ||
| ===== Denominators: | ===== Denominators: | ||
| - | This is the whole reason the page exists. Below are adoption figures for six mechanisms, from papers in the same corpus, each correct in its own paper and almost none comparable with any other. | + | This is the whole reason the page exists. Below are adoption figures for six mechanisms, from papers in the same corpus, each correct in its own paper and almost none comparable with any other. Two of the rows are the same scan on the same day and differ by 18.5 points. |
| ^ Mechanism ^ Figure ^ **Population it is a share of** ^ Source ^ | ^ Mechanism ^ Figure ^ **Population it is a share of** ^ Source ^ | ||
| Line 71: | Line 71: | ||
| | DMARC | 13.6% // 22.6% | 12 million domains // the top 1 million of those 12 million, 2023 | {[czybik2023_lazy]} | | | DMARC | 13.6% // 22.6% | 12 million domains // the top 1 million of those 12 million, 2023 | {[czybik2023_lazy]} | | ||
| | SPF | 60.9% published, 55.9% **valid** | Tranco top million, 2023–24 | {[wang2024_breakspf]} | | | SPF | 60.9% published, 55.9% **valid** | Tranco top million, 2023–24 | {[wang2024_breakspf]} | | ||
| + | | SPF, **same scan, same day** | 79.4% published, 72.7% valid | the 738,310 of that same top million that have an MX record //or// answer with an SMTP banner on port 25 | {[wang2024_breakspf]} | | ||
| | MTA-STS | 68,030 domains, 0.07%–0.13% by TLD | domains **with MX records** in the '' | | MTA-STS | 68,030 domains, 0.07%–0.13% by TLD | domains **with MX records** in the '' | ||
| Five traps are visible in that table, or visible by their absence from it: | Five traps are visible in that table, or visible by their absence from it: | ||
| - | - **" | + | - **" |
| - **A top list is not a sample of the web, and the list changed.** Alexa is the frame in 7 of the 31 papers; Tranco in 9; TLD zone files in 3. The **last Alexa use in this population is 2023 and no paper from 2024 onwards uses it** — Alexa' | - **A top list is not a sample of the web, and the list changed.** Alexa is the frame in 7 of the 31 papers; Tranco in 9; TLD zone files in 3. The **last Alexa use in this population is 2023 and no paper from 2024 onwards uses it** — Alexa' | ||
| - **"Top 1M" and "top 10M" and "all of a zone" give different answers to the same question, in the same year.** SPF is 60.2% of the top million and 56.5% of twelve million in one 2023 paper; 41.7% of a top-ten-million list in another 2023 paper. The gradient is real — popular domains deploy more — so a percentage without its rank window says nothing. | - **"Top 1M" and "top 10M" and "all of a zone" give different answers to the same question, in the same year.** SPF is 60.2% of the top million and 56.5% of twelve million in one 2023 paper; 41.7% of a top-ten-million list in another 2023 paper. The gradient is real — popular domains deploy more — so a percentage without its rank window says nothing. | ||
| Line 94: | Line 95: | ||
| That 6.8% is the number to remember. It is a **2024** measurement of whether receiving mail servers so much as look SPF up before accepting the message body — and within these 31 papers it is the only figure that measures inbound enforcement at internet scale rather than at 20–50 hand-picked providers. Deployment-rate papers count the left column of a two-column problem. | That 6.8% is the number to remember. It is a **2024** measurement of whether receiving mail servers so much as look SPF up before accepting the message body — and within these 31 papers it is the only figure that measures inbound enforcement at internet scale rather than at 20–50 hand-picked providers. Deployment-rate papers count the left column of a two-column problem. | ||
| + | |||
| + | ==== Deployed is not the same as correct ==== | ||
| + | |||
| + | Every one of these papers has a second half, and it is always this: a large share of what //is// deployed is broken. If your study stops at the adoption rate you are reporting the good news only. | ||
| + | |||
| + | ^ What is wrong ^ Share ^ Population ^ Source ^ | ||
| + | | DKIM keys of at most 1024 bits | **84%** | 3,627,871 domains with DKIM keys in passive DNS | {[wang2022_longitudinal]} | | ||
| + | | DKIM public keys shared across domains | 66.9% (2,427,682) | the DKIM-publishing domains in that passive-DNS set | {[wang2022_longitudinal]} | | ||
| + | | SPF authorising more than 100,000 IPv4 addresses | 34.7% | the SPF-publishing domains of 12 million scanned | {[czybik2023_lazy]} | | ||
| + | | SPF with no restrictive '' | ||
| + | | SPF needing more than 10 DNS lookups to evaluate | 6.5% | 55 million domains with SPF records | {[ashiq2024_beyond]} | | ||
| + | | STARTTLS certificates failing validation | **30.0%** | 2,112,682 connectable MXs, 2023 | {[blechschmidt2023_hello]} | | ||
| + | | TLSA records invalid | over 22% | SMTP servers serving '' | ||
| + | | MTA-STS records misconfigured | 29.6% (20,144) | the 68,030 domains publishing one, Sep 2024 | {[ashiq2025_unraveling]} | | ||
| + | | External DMARC '' | ||
| + | | Auto-configuration deployed at all | 7.52% (79,212) | 1,053,469 domains scanned for Autodiscover / Autoconfig / SRV | {[wen2025_automatic]} | | ||
| + | |||
| + | Two of these are exploitable rather than merely untidy. {[czybik2023_lazy]} rented about €30 of shared web hosting and could send mail passing SPF for **26,095** domains. {[li2026_coordmail]} found that **77.89%** of reflections off 10,079 exploitable bounce servers pass SPF or DKIM — the authentication is working exactly as specified and authenticating the attacker. | ||
| + | |||
| + | ==== What it looks like from inside an operator ==== | ||
| + | |||
| + | Six of the 31 papers got logs, headers or mailboxes from a real mail operator, and they are the only source on this page for base rates — what fraction of mail fails, why, and how concentrated the delivery path is. You almost certainly cannot reproduce these; read them so you know what your scan is a proxy for. | ||
| + | |||
| + | ^ Figure ^ Population ^ Source ^ | ||
| + | | 94.40% of inbound messages authenticated by SPF, DKIM or both | Gmail' | ||
| + | | 8.11% hard-bounced, | ||
| + | | 2.19% (701,347) of bounces caused by **sender authentication failure** | the **32 million bounced** messages that paper' | ||
| + | | 31.10% (9,975,329) of bounces caused by the sender **hitting a spam blocklist** | the same 32 million bounced messages — **fourteen times** the authentication row, like for like | {[li2024_bounce]} | | ||
| + | | 82.7% of delivery paths rely entirely on third-party relaying | 105 million messages whose intermediate path could be reconstructed from '' | ||
| + | | HHI of 40% for the relay market | middle nodes across those reconstructed paths | {[li2025_characterizing]} | | ||
| + | | 5.46% of users ever used S/MIME or PGP; 0.06% of messages encrypted | 81.6 million messages from 37,089 accounts at one university over 27 years | {[stransky2022_years]} | | ||
| + | |||
| + | The two '' | ||
| ===== Methods, and Which Ones Are Current ===== | ===== Methods, and Which Ones Are Current ===== | ||
| Line 105: | Line 139: | ||
| * **Shared infrastructure as the unit of analysis.** {[wang2024_breakspf]} (2024), {[wang2025_email]} (SMTP smuggling, 2025) and {[li2026_coordmail]} (2026) all ask what an attacker can do by //renting// a piece of infrastructure that thousands of domains have already authorised. This is the newest coherent line in the population and it is three papers old. | * **Shared infrastructure as the unit of analysis.** {[wang2024_breakspf]} (2024), {[wang2025_email]} (SMTP smuggling, 2025) and {[li2026_coordmail]} (2026) all ask what an attacker can do by //renting// a piece of infrastructure that thousands of domains have already authorised. This is the newest coherent line in the population and it is three papers old. | ||
| * **Operator surveys alongside the scan.** None before 2020; five by 2025, with 39, 74, 16, 95 and 117 respondents ({[lee2022_under]}, | * **Operator surveys alongside the scan.** None before 2020; five by 2025, with 39, 74, 16, 95 and 117 respondents ({[lee2022_under]}, | ||
| - | * **Notification-and-rescan as a built-in second phase.** {[bennett2022_spfail]}, | + | * **Notification-and-rescan as a built-in second phase.** {[bennett2022_spfail]}, |
| * **Client matrices.** Still current — {[tang2025_multifaceted]} (49 clients, 2025) and {[wen2025_automatic]} (29 clients, 2025) are recent — but they are a vulnerability census, not a prevalence measurement, | * **Client matrices.** Still current — {[tang2025_multifaceted]} (49 clients, 2025) and {[wen2025_automatic]} (29 clients, 2025) are recent — but they are a vulnerability census, not a prevalence measurement, | ||
| Line 161: | Line 195: | ||
| This topic has a harder ethics profile than most web measurement, | This topic has a harder ethics profile than most web measurement, | ||
| - | * **12 of 31 mention no ethics review at all**; 6 explicitly | + | * **12 of 31 mention no ethics review at all.** Of the other 19: 6 discuss the question and state that no review was sought or required, 5 report an approval, 4 say review was not required, 2 sought one and do not say what came back, and 2 report an exemption. That is 38.7% silent against **64.2%** corpus-wide (of the 4,965 papers carrying an ethics object) — so this population is //better// than the corpus, not worse, and 5 report an approval against 20.1% corpus-wide. //n// = 31, so read neither gap as a difference. Better than a low bar is still not good enough for an instrument that delivers forged mail to a live provider. |
| - | * **19 of 31 notified affected parties**, 6 partially, 2 not, 3 do not say. Disclosure is the norm in this population — usefully so, since these are protocol and implementation flaws with named vendors. | + | * **19 of 31 notified affected parties**, 6 partially, 2 not, 3 do not say, and 1 is recorded not-applicable. Disclosure is the norm in this population — usefully so, since these are protocol and implementation flaws with named vendors. |
| * **20 of 31 report a public artifact and 18 give a code URL**, including several long-lived project sites ('' | * **20 of 31 report a public artifact and 18 give a code URL**, including several long-lived project sites ('' | ||
| Line 287: | Line 321: | ||
| ==== Where these papers go quiet ==== | ==== Where these papers go quiet ==== | ||
| - | * **29 of 31 report descriptive statistics only.** Two run a hypothesis test ({[hu2018_measurements]}, | + | * **29 of 31 report descriptive statistics only.** Two run a hypothesis test ({[hu2018_measurements]}, |
| * **19 of 31 coded something by hand and the extraction records an inter-rater agreement metric for none of them.** Zero of nineteen — but read that as an extraction result: the 19 papers were not re-read by hand to confirm the absence is theirs and not the extractor' | * **19 of 31 coded something by hand and the extraction records an inter-rater agreement metric for none of them.** Zero of nineteen — but read that as an extraction result: the 19 papers were not re-read by hand to confirm the absence is theirs and not the extractor' | ||
| - | * **12 of 31 mention no ethics review**, against instruments that send forged mail and probe strangers' | + | * **12 of 31 mention no ethics review |
| * Eight of the 31 recruited people; the five operator surveys carry //n// of 39, 74, 16, 95 and 117. The extraction records a recruitment channel for only three of the five — but that undercounts by one: {[ashiq2023_report]} names MailOP, NANOG and MESSEU in its own text and the extractor recorded '' | * Eight of the 31 recruited people; the five operator surveys carry //n// of 39, 74, 16, 95 and 117. The extraction records a recruitment channel for only three of the five — but that undercounts by one: {[ashiq2023_report]} names MailOP, NANOG and MESSEU in its own text and the extractor recorded '' | ||
| Line 298: | Line 332: | ||
| ^ Paper ^ Verdict it carries ^ Why it is not here ^ | ^ Paper ^ Verdict it carries ^ Why it is not here ^ | ||
| | {[rao2024_unfiltered]} — // | | {[rao2024_unfiltered]} — // | ||
| - | | {[li2025_hades]} — //HADES Attack//, NDSS 2025 | spam | Object | + | | {[li2025_hades]} — //HADES Attack//, NDSS 2025 | spam | **Also arguable.** Its object |
| | {[wu2026_email]} — //One Email, Many Faces//, NDSS 2026 | the address as identifier | Alias and identity confusion, which is [[privacy: | | {[wu2026_email]} — //One Email, Many Faces//, NDSS 2026 | the address as identifier | Alias and identity confusion, which is [[privacy: | ||
| | {[zhang2024_inbox]} — //Inbox Invasion//, 2024 | spam / filtering | MIME ambiguity against attachment scanners: a content-inspection problem. | | | {[zhang2024_inbox]} — //Inbox Invasion//, 2024 | spam / filtering | MIME ambiguity against attachment scanners: a content-inspection problem. | | ||
| Line 307: | Line 341: | ||
| ==== Methodology and limitations of these figures ==== | ==== Methodology and limitations of these figures ==== | ||
| - | Every count above is a count of **papers**, never of extraction tuples, with its denominator named in the same sentence or table cell. Free-text fields were folded before aggregating and the unmapped residue is published rather than dropped. The report script that produces every figure on this page is '' | + | Every count above is a count of **papers**, never of extraction tuples, with its denominator named in the same sentence or table cell. Free-text fields were folded before aggregating and the unmapped residue is published rather than dropped. The report script that produces every figure on this page is '' |
| Two limitations specific to this page: | Two limitations specific to this page: | ||
| - | * **Quote verification hits the two-column problem.** All 53 figures above were checked against '' | + | * **Quote verification hits the two-column problem.** All 55 figures above were checked against '' |
| * **The mechanism and instrument maps are hand maps, not extraction fields.** The schema has no field for "which deployed mail mechanism is this paper' | * **The mechanism and instrument maps are hand maps, not extraction fields.** The schema has no field for "which deployed mail mechanism is this paper' | ||
| Line 333: | Line 367: | ||
| * [[security: | * [[security: | ||
| * [[security: | * [[security: | ||
| - | * [[programming: | + | * [[programming: |
| * [[design: | * [[design: | ||
| * [[design: | * [[design: | ||
security/email_authentication.1788953848.txt.gz · Last modified: by karel.kubicek.claude
