Overall, I find the document hard to read and the structure problematic. If I'm verifying STS policy, I want to know how to fetch the policy, then I want to know what to fetch. The document structure is awkward for that goal. And if I want to publish STS policy, I want to know where I publish it and then what I need to publish. An editorial pass to reorganize the document to be more useful and clear for an implementer would be helpful. There's also an overuse of "quotes" around terminology which is problematic in a document with JSON strings which need to be quoted in the context of protocol examples.

It'd be helpful to have an example workflow, possibly early in the document. Something like:

Example:
 recipient: u...@example.com
 Determine policy domain [section reference], in this case example.com
Look up DNS TXT record in _mta-sts.example.com (_mta-sts TXT record in policy domain). [section reference].
 If failure or invalid record, stop.
 If valid cached policy record, skip forward to SMTP connection.
Connect to https server at mta-sts.example.com (mta-sts host in policy domain). [section reference] Verify HTTPS TLS certificate as matching domain mta-sts.example.com [section reference].
 Fetch policy from /.well-known/mta-sts.json [section reference].
 Connect to SMTP server according to SMTP standard.
 Perform STARTTLS
Verify TLS negotiation and hostname matches STS policy [section reference].

transmission into authenticated, downgrade-resistent encrypted
tarnsmission.

Fix spelling: resistent->resistant, tarnsmission => transmission

sts-version     = %x76 *WSP "=" *WSP %x53 %x54       ; "v=STSv1"
                  %x53 %x76 %x31

I recommend you improve ABNF readability by referencing RFC 7405.

 std-version    = %s"v=STSv1"

The policy itself is a JSON [RFC7159] object served via the HTTPS GET

This reference needs to be changed to draft-ietf-jsonbis-rfc7159bis, or you need to explicitly require use of UTF-8 charset, or reference I-JSON (RFC 7493). With RFC 7159 there's a requirement to support and detect UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE charsets (and possibly other Unicode encodings) that I find highly problematic for interoperability.

  When fetching a new policy or updating a policy, the HTTPS endpoint
  MUST present a X.509 certificate which is valid for the "mta-sts"
  host (as described below), chain to a root CA that is trusted by the

After reading the document, I'm not sure I understand how to construct the DNS FQDN that I need to pass to the TLS API in order to validate the mta-sts host. In the example workflow above, I made a guess. But the document presently never says how to construct the FQDN explicitly.

  The certificate MAY be checked for revocation via the Online
  Certificate Status Protocol (OCSP) [RFC2560], certificate revocation
  lists (CRLs), or some other mechanism.

Is there a reason this is a MAY rather than a SHOULD?

3.4.  Policy Selection for Smart Hosts and Subdomains

It's confusing to group two very different aspects of mail operations into a single section. I'd suggest making this two sections.

  certificate MUST have a CN-ID ([RFC6125]) or SAN ([RFC5280]) with a

The abbreviation "SAN" doesn't appear in RFC 5280. Please expand it to subjectAltName which does appear.

  DNS-ID matching the "mx" pattern.  The MX's certificate MAY also be
  checked for revocation via OCSP [RFC2560], certificate revocation
  lists (CRLs), or some other mechanism.

Is there a reason this is a MAY rather than a SHOULD?

  New fields are added to this registry using IANA's "Expert Review"
  policy.

Please add some guidance to the expert reviewer on the criteria that should be met when registering new fields. You can leave the reviewer some wiggle room, but having guidance sets expectations for the person registering the new field, the expert reviewer and for any IESG appeal that might result from a disagreement.

8.  Security Considerations

One more security consideration:

This mechanism causes an MTA (an automated system) to adopt the role of an HTTPS client in a scenario where the HTTPS server may be hostile to operation of the MTA. A full HTTP stack is a large amount of code that may contain coding errors that expose the MTA to new implementation vulnerabilities. This threat can be partially mitigated by using a hardened HTTPS client library that has been tested against a fuzzing HTTPS test server. This threat can also be partially mitigated by isolating the HTTPS code into a separate process that does not have access to the normal MTA machinery and making sure the MTA machinery gracefully handles a wedged HTTPS client. Sites that are evaluating the cost/benefit of this functionality may wish to compare the new attack surface of this mechanism with the new attack surface of alternate mechanisms such DANE [RFC7672].

                - Chris

_______________________________________________
Uta mailing list
Uta@ietf.org
https://www.ietf.org/mailman/listinfo/uta

Reply via email to