Subject: [dmarc-ietf] Comment on draft-ietf-dmarc-psd

From: Dave Crocker <[email-masked]>
Date: Tue, 13 Aug 2019 19:01:59 -0700

Review of:    DMARC (Domain-based Message Authentication, Reporting, and
               Conformance) Extension For PSDs (Public Suffix Domains)
I-D:          draft-ietf-dmarc-psd-06
Reviewer:     D. Crocker
Review Date:  12 August 2019

The draft specification's intent is to address a basic operational 
limitation in the current use of DMARC. There are domains in the 
upper-reaches of the DNS space that are not accessible for obtaining 
organization-wide policy records, but which need to become accessible. 
Per the PSD draft:

> For domains listed in a public suffix list, i.e. TLDs and domains
> that exist between TLDs and organization level domains, policy can
> only be published for the exact domain.  No method is available for
> these domains to express policy or receive feedback reporting for
> sub-domains.

Background
----------

The operational history is that the upper reaches of the Domain Name 
System have been restricted to administration by organizations that all 
strictly served as constrained registries. Their domain names were 
allocated by ICANN or by another public agency (such as a government). 
They all were distinct as organizations registering sub-domain names for 
other, independent organizations.  Unfortunately there is no algorithm 
that can distinguish between these public registries from their 
sub-domains; hence they must be manually determined.  In the DMARC 
specification, the aggregation of these registries is referred to as a 
"public suffix list", after the primary Internet service offering such a 
list.  The term 'public' here is mostly taken to mean that the registry 
for such a domain operates as a public service.(*)

DMARC's use of a public suffix is to permit finding the "organizational 
domain", which is the domain name that is delegated from a public suffix 
registry and is the name highest up a branch while having the same 
administrative authority as the full (DMARC "aligned") domain name being 
evaluated by DMARC. The next-higher domain name above the organizational 
domain -- a public registry -- is under separate operational authority.

DMARC needs to know the organizational domain so that the organizational 
authority can assert a DMARC policy for all subordinate domains, notably 
those that do not publish their own DMARC record and domains that do not 
exist.  This capability overcomes a downgrade attack on DMARC, where an 
organization's intent to have all of its subdomains subject to DMARC 
evaluation can be bypassed by using a name that does not have an 
associated DMARC record.

      The focus on these two terms is important to highlight. They refer
      to the operational role of the domain name.

      A Public Suffix serves as a public registry.

      An Organizational Domain operates as a 'master' authority over a
      branch of related names.

While the popular public suffix listing example is cited, a specific 
public suffix list is not normatively incorporated into the DMARC 
specification:  That is, there is normative use of 'some' public suffix 
list, but no normative details for choosing it.  Determination of what 
is a public suffix and what is not is, therefore, outside the scope of 
the DMARC specification.  This is a very useful separation of functions, 
especially given operational concerns about the status quo for public 
suffix determination.  Decoupling moves those concerns away from DMARC, 
per se.  This both simplifies the DMARC specification and improves its 
stability, since it does not have to change when details of the public 
suffix functionality changes.

However there is now a requirement to extend DMARC's ability to assert 
an organizational policy record to include names in the upper levels of 
the DNS, which have classically been viewed as public suffixes.

Indeed, the draft specification calls them public suffixes.

Historically, domain names listed in these upper levels did not 
participate in the assertion of DMARC policies for their sub-domains. 
Now, some of these domains want to.

Specifically, some upper-level domain names need to be able to publish a 
DMARC record that asserts a policy for all sub-domains under them, in 
particular to cover domain names that do not exist or that have not 
published a DMARC record. This requirement even applies to some 
top-level domains.

That is, names that are typically classed as 'public suffix' names need 
to operate as 'organizational domains' for DMARC.

Draft PSD Specification
-----------------------

The PSD draft seeks to address this requirement.  Within the DMARC 
sandbox, it is important to have a way to communicate a domain owner's 
DMARC policy, for sub-domains that do not exist or do not publish a 
DMARC record directly.

For upper-level domains, the draft does this by introducing an 
additional query, to the domain name that is one level higher than the 
determined organizational domain.  The perspective of the draft is that 
it is adding a query into a portion of the public suffix list.

This approach is problematic in several ways.

It is a substantial increase in DMARC's operational overhead.  It adds a 
query that will often be needed -- especially in the face of limited 
DMARC adoption.  If a domain is not already a 'popular' DMARC reference 
-- that is, frequently encountered by the querying site -- it is likely 
that there will be no DMARC record for any of the three needed queries. 
That means a 50% increase from two (failed) DNS queries to three 
(failed) queries.

By it's nature, this mechanism will succeed for only a tiny percentage 
of domain names that are used.  (Given common locality of reference, a 
particular site might see quite a bit of name re-use, so that the 
statistics for their actual traffic might be quite a bit better than the 
theoretical 50% increase.)  So PSD it will likely provide at best a tiny 
benefit, relative to overall DMARC use.

Note: all receivers must support this feature and incur its relatively 
large overhead, while virtually never seeing the extra query be 
successful.  So the cost/benefit incentives are quite poor for receivers.

 From a design standpoint, the specification also is problematic.  Added 
mechanism is added complexity.  And the reality of Internet standards is 
that the cost of added mechanism is disproportionately large.  Think 
exponential rather than linear, due to the accrued cost of 
implementation, testing and deployment.

Besides adding complexity, it breaks the technical separation between 
DMARC and public suffix, by diving into that space.  Hence the PS in PSD.

Remember that the reason for wanting to query the organizational domain 
is to check for a policy record that applies to all sub-domains.  That 
is, the record being sought is authoritative for the branch below it.

The proposed enhancement seeks to look for a 'more authoritative' domain 
name above the one that has been classed as an organizational domain.

Adjusting Perspective
---------------------

Of the new set of domain names being targeted for publication of a 
covering policy record, there really are two types of administrative 
roles they serve.

One is exactly the same as the classic organizational domain:  A 
top-level domain that is registered for an organization, to be used by 
the domain owner directly for itself. This really is exactly the same as 
DMARC's classic construct of organizational domain.  For example, 
*.example.com and *.example can both be classic (private) organizational 
domains.  It doesn't matter that one might be delegated by a classic 
public registry and the other by ICANN.  The actual use of the allocated 
name is as an organizational domain.

The second use can be called as "association domain".  The containing 
name covers a set of sub-domains referring to member organizations. 
Besides applying to groups that might be obviously classed as 
associations -- such as industry trade groups -- some large 
organizations are operated with enough independence among its 
subordinate departments or subsidiaries to make tight control 
unrealistic.  A salient example of this is a government and its 
'subordinate' departments.

Arguably for DMARC purposes, an association domain can be treated the 
same as an organization domain, since the scope of the domain's 
authority over its sub-domains is an internal matter, to be determined 
by its agreements with association members.

What this means is that the real requirement here is to improve the 
mechanism for identifying the organizational domain, and that 
requirement is outside of DMARC.  This does not reduce the necessity of 
identifying these domains; rather it moves the task to where it belongs: 
This requires modification to the public suffix list operation, possibly 
with a parallel "private TLD" registry.

An added benefit to this alternate view is that it eliminates the 
privacy concern about the draft specification:  only upper-level domains 
operating as organizational domains will be able to publish a 
domain-wide DMARC policy record.  Domains that really are classic public 
suffixes won't be able to.

(Merely for completeness I'll note:  Some upper-level domains have 
ICANN-based restrictions on what records they can publish.  As has been 
discussed in the working group, although obviously essential to resolve, 
this issue is entirely outside direct work on DMARC.)

Summary
-------

    Independent of DMARC, develop a method of identifying the 
upper-level domains that need to be treated as organizational domains. 
The "public suffix" for these domains is whatever portion of the name is 
to the right of this, as usual. (The current draft's Appendix B might 
seem reasonable for this, but note that it formally has nothing to do 
with DMARC, per se, and it probably has some interesting administrative 
challenges.  In any event, it is augmenting the existing Public Suffix 
List rather than DMARC.)

   The modification to DMARC, then, is to allow this 'suffix' part to be 
empty, in order to support top-level domains that operate as 
organizational domains.

   This produces zero change to DMARC's lookup behavior and almost no 
change to its specification.

d/

(*) Public Suffix List <https://publicsuffix.org/>

-- 
Dave Crocker
Brandenburg InternetWorking
bbiw.net

---

From: Alessandro Vesely <[email-masked]>
Date: Thu, 15 Aug 2019 12:20:11 +0200

> Review Date:  12 August 2019

I like very much Dave's prose, especially the background.  I hope
large fragments of it will make their way to either the PSD draft or
the reviewed DMARC spec itself.

For brevity, however, I only quote the passages I comment on:

> It is a substantial increase in DMARC's operational overhead.  It adds
> a query that will often be needed -- especially in the face of limited
> DMARC adoption.  If a domain is not already a 'popular' DMARC
> reference -- that is, frequently encountered by the querying site --
> it is likely that there will be no DMARC record for any of the three
> needed queries. That means a 50% increase from two (failed) DNS
> queries to three (failed) queries.

That's actually a bit better.  After the second (failed) query, the
receiver consults the "augmented PSD".  IMHO, the latter should be a
local lookup, just like the PSD itself.  The third query is only
issued if the prefix matches.  Then, the likelihood that it fails is
very low.

> requirement is outside of DMARC.  This does not reduce the necessity
> of identifying these domains; rather it moves the task to where it
> belongs: This requires modification to the public suffix list
> operation, possibly with a parallel "private TLD" registry.

Right.  However, consulting the augmented PSD still has to be done in
two steps, the first one to give the organizational domain a chance to
override the association domain policy, the second step if no override
was published.

Let me add that the relevant case is NXDOMAIN.  For existing domains,
the association can see if a lazy organization misses a record and
force them to comply.  However inconsiderately, the association could
even publish itself a txt record at _dmarc\.lazy.example.  The
annoyance is trying wildcards to cover any non-existent domain name.

> privacy concern about the draft specification:  only upper-level
> domains operating as organizational domains will be able to publish a
> domain-wide DMARC policy record.  Domains that really are classic
> public suffixes won't be able to.

Certainly, A.bank and B.bank shall not be conflated as far as
exchanging cookies and access rights is concerned, so a fine-grained
PSD will continue to exist.

I'm not sure flattening that structure for DMARC is a benefit.  By
skipping the second query, we'd deny organizations the possibility to
have subdomain email addresses like [email-masked], unless
branch.A.bank either replicates or overrides the DMARC record of A.bank.

Best
Ale
--

---

From: Dave Crocker <[email-masked]>
Date: Sun, 18 Aug 2019 11:01:33 -0700

On 8/15/2019 3:20 AM, Alessandro Vesely wrote:
> I hope

Thanks for the kind words, but they actually run counter to the larger 
message I meant to impart:  The entire PSD approach is problematic. 
This is not fixable.  A different approach is needed.

Making the draft Experimental is actually counter-productive, in that 
regard.  It puts a stamp of IETF approval.  The fact of Experimental is 
less significant than the fact of an IETF consensus stamp of encouragement.

There is also the small matter of a small (actually tiny) base of 
demonstrated support for this proposal.

d/