On 14/10/2025 8:08 am, Murray Kucherawy via Datatracker wrote:
Please reply to this message keeping [email protected] in copy by indicating
whether you support or not the adoption of this draft as a WG document.
Comments to motivate your preference are highly appreciated.

I do NOT support adoption of draft-gondwana-dkim2-header-02.

My objection relates to the use of the rt= tag, the rules surrounding how multiple active headers are handled (including some seemingly contradictory statements), the risk of data leakage and loss of freedom of implementation.

Without being a party to the side discussions that resulted in previous revisions allowing multiple active headers, as I interpret it, this is intended to allow a signer to insert one signed header for each intended recipient that then MUST be removed by the server when it relays the message. This addresses concerns I have expressed previously, from the point of view of a sender, but it introduces other risks that can easily be avoided. If this was not the intent, then this concern remains.

Section 7.1 imposes a requirement on the creator/sender to ensure no data leakage, however, DKIM implementations usually have no knowledge of e-mail routing. Filters, where DKIM is usually implemented, also do not have knowledge of their clients/hosts capabilities and if configured incorrectly, could include rt= header variants that it expects would be subsequently removed by the SMTP host (which it believes to be DKIM2 capable) or at the next hop, but actually aren't.

While the addition of an ESMTP DKIM2 option appears unavoidable given the greater objectives of DKIM2 (independent of the header document), it is undesirable to entrench DKIM2 requirements within SMTP itself in a way that that would lead to loss of flexibility, including choice of implementation. DKIM1 caters to a wide range of signing and verification scenarios and it's critical we not sacrifice those, despite some individuals being outright dismissive of certain valid use cases.

Given the requirement for DKIM2 support to be negotiated and the guarantees advertising this ESMTP option would mandate, there is no barrier to moving the signature to the envelope en route, via RCPT TO. There are, however, advantages in doing so. This relatively small change would ensure the maximum extent of BCC disclosure would be no greater than it currently is, even if systems were misconfigured. It would also eliminate the requirement to split messages at the earliest opportunity as BCC'd recipients and their associated hashes would never be seen by any server other than that those to which it was intentionally sent. In doing so, it also preserves existing use cases.

The only point at which splitting messages would be required would be on handover to systems that do not support DKIM2 or on delivery, at which time a header would be added containing a hash that would be verifiable using a key that was already used to sign the e-mail. As the e-mail would only have a single recipient at that point, this would be functionally equivalent to including only the active DKIM2-Signature with a corresponding rh= hash.

While I did mention this approach in an earlier e-mail on this list, it did not elicit much discussion, although the need to retain compatibility with RSA was suggested. While I favour removing RSA altogether, the RSA case could be handled by simply including a hash of the calculated signature instead of the signature itself. The hashing algorithm need only be sufficient to guard against collisions, but for simplicity, I'd suggest SHA-256 as that's what is mandated elsewhere.

The resulting RCPT TO and header would look something like this...

RCPT TO <[email protected]> [email protected];s=selector;h=oTjChbUP05I+4PXR8wSHTpuy+q/uV9MrnCss8l+J3Js=;i=1 DKIM2-Recipient: [email protected];s=selector;h=oTjChbUP05I+4PXR8wSHTpuy+q/uV9MrnCss8l+J3Js=;i=1

Similar to the DKIM2-Signature header itself, this would be a signed hash of the DKIM2-Signature (as identified by the s= and i= value) and the RCTP TO/DKIM2-Recipient string as above, with an empty h= value filled in after the value is calculated.

I'm also uncertain how I am meant to lookup keys. In DKIM1, s= and d= combine to give me this information, but d= is described in the document as always matching the domain of the return-path, which shouldn't change. Is the intent to combine this into s= (like ds= in revision 00)?

Regards,
R. Latimer
Inveigle.net

_______________________________________________
Ietf-dkim mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to