<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.37 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-chuang-mailing-list-modifications-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="Mailing-List Modifications">Tolerating Mailing-List Modifications</title>
    <seriesInfo name="Internet-Draft" value="draft-chuang-mailing-list-modifications-00"/>
    <author fullname="Weihaw Chuang">
      <organization>Google, Inc.</organization>
      <address>
        <email>weihaw@google.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="10"/>
    <workgroup>Independent Stream</workgroup>
    <keyword>DKIM</keyword>
    <keyword>ARC</keyword>
    <keyword>Mailing-list</keyword>
    <abstract>
      <?line 31?>

<t>Mailing-lists distribute email to multiple recipients by forwarding and potentially modifying messages to document the distribution to the recipients.  Unfortunately forwarding breaks SPF (RFC7208) authentication and message modification breaks DKIM (RFC6376) authentication.  This document is based on draft-chuang-replay-resistant-arc which is built on ARC (RFC8617) with extensions to tolerate common mailing-list message modifications. This specification characterizes the mailing-list transforms such that a receiver can reverse them to enable digital signatures verification and attribution of the message content.  These message modifications are: 1) prepending a description string to the Subject header, 2) rewriting the From header, 3) removing the original DKIM-Signature and 4) appending a footer to the message body.</t>
    </abstract>
  </front>
  <middle>
    <?line 35?>

<section anchor="introduction-">
      <name>**Introduction **</name>
      <t>Mailing-lists have long complicated email authentication.  They break SPF (RFC7208) authentication due to forwarding and break DKIM (RFC6376) authentication due to message modification that used to identify the mailing-list.  This specification along with <eref target="https://datatracker.ietf.org/doc/draft-chuang-replay-resistant-arc/">draft-chuang-replay-resistant-arc</eref> provides methods to restore authentication even in the presence of forwarding and message modification.  <eref target="https://datatracker.ietf.org/doc/draft-chuang-replay-resistant-arc/">draft-chuang-replay-resistant-arc</eref> provides a method to authenticate email when it has been forwarded arbitrarily many times, and a limited means to tolerate message modification, but doesn't attribute which party in the message flow contributed which content.  Malicious appearing content is then attributed to all parties in the mail flow.  Moreover, mailing-lists sometimes rewrite DKIM-Signatures making it impossible to restore the original DKIM authentication.  This specification improves <eref target="https://datatracker.ietf.org/doc/draft-chuang-replay-resistant-arc/">draft-chuang-replay-resistant-arc</eref> by enabling attribution of email content to its author.</t>
      <t>The approach in this document is highly opinionated to eliminate changes to messages that don't go through mailing-lists and to lessen implementation burden upon mailing-lists and receivers by supporting only common case mailing-list mutations.  At origination, it is sufficient to sign a message with a DKIM signature as typically done already.  It does ask those mailing-lists that wish to use this specification to characterize the modifications it performs at each forwarding step.  The goal is to permit receivers to reverse the modification so that the message hash can be recovered and the prior signature verified at each forwarding step, be it from DKIM or ARC.  This allows the receiver to determine which forwarder or the originator contributed which content, in the received message.  This specification uses the ARC (RFC8617) framework to describe each forwarder, and then record the mutation performed at each forwarding step.  Consequently this attribution enables more precise reputation systems and UI features.  The supported modifications are: 1) prepending a description string to the Subject header, 2) rewriting the From header, 3) rewriting the original DKIM-Signature and 4) appending a footer to the message body.</t>
      <section anchor="terminology-and-definitions">
        <name><strong>Terminology and Definitions</strong></name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119"/>.</t>
      </section>
    </section>
    <section anchor="algorithm">
      <name><strong>Algorithm</strong></name>
      <t>The specification in this document is divided into procedures computed at the mailing-list forwarder and at the receiver.  For both, this assumes that the forwarder or receiver steps in <eref target="https://datatracker.ietf.org/doc/draft-chuang-replay-resistant-arc/">draft-chuang-replay-resistant-arc</eref> have already been computed.  The receiver steps in particular are variable length corresponding to the depth of the ARC sets.  At each ARC set corresponding to some forwarder, the receiver computes any reversing procedure described later for any described mailing-list mutations to obtain the message hash of the message as seen at the inbound of the mailing-list.  This hash is equivalent to that at outbound of the prior sender.  If that sender is the originating sender, it may have a DKIM signature, and if it is a forwarder it may have ARC message-signature.  That signature MUST verify correctly, otherwise this is considered a signature verification failure by this specification. Interpretation of that failure is described later.</t>
      <section anchor="forwarder-characterization">
        <name>Forwarder Characterization</name>
        <t>Conformant forwarders characterize message mutations to enable receivers to interpret mutations and potentially verification failures.  A description is added as a tag-value to the ARC-Message-Signature.  The mutator description tag is "m" and has the following values:</t>
        <dl>
          <dt>mailinglist:</dt>
          <dd>
            <t>Describes a forwarder that distributes messages to multiple recipients and any modification conforms to the specification in this document.  Consequently signature validation failures are described as "fail".</t>
          </dd>
          <dt>gateway</dt>
          <dd>
            <t>Optional mutating forwarder that works on behalf of the originating sender or final receiver.  The receiver is presumed to have an established trust model with the gateway outside of this document and, and validation failure result is interpreted by the receiver.  The receiver with such an arrangement MUST NOT use this description to detect the existence of such a relationship.  However a gateway forwarder may provide a description for human operators to interpret gateway's actions.</t>
          </dd>
          <dt>generic</dt>
          <dd>
            <t>Optional self-description for a generic mutator.  This document imposes no judgment on signature validation failures but the description may help a human operator interpret the actions of the forwarder.</t>
          </dd>
          <dt>none</dt>
          <dd>
            <t>Conformant forwarders that do not mutate the message declares their participation and lack of mutation with none value.</t>
          </dd>
        </dl>
        <t>For example:</t>
        <artwork><![CDATA[
ARC-Message-Signature: i=1, m=mailinglist,...
]]></artwork>
        <t>Receivers use this mutator description tag to interpret the forwarder's action and whether they followed the guidelines in this specification.  If the forwarder promised that they did, then it makes it possible to enforce a validation failure that protects that forwarder.</t>
      </section>
      <section anchor="header-rewriting">
        <name>Header Rewriting</name>
        <t>A mailing-list forwarder that rewrites a Subject, From or DKIM-Signature headers can store the prior values by substituting a modified header with the prior value.   Moreover the header name retains the original capitalization, its place with respect to other headers, and is not ambiguous if there are multiple headers of the same name.  First the bottoms-up line count of all headers is computed.  Then all headers to be rewritten are collected, ordered by position to be prepended to the headers list and given a bottoms-up line count position.  It is assumed that the prior header has the following format:</t>
        <artwork><![CDATA[
<header name>:<value including any whitespaces>
]]></artwork>
        <t>The conserved header name is prefixed with a "Prior-".  Then an ARC instance number tag "i" i.e. "=&lt;#&gt;," and line count tag "l" i.e. "l=&lt;bottoms-up line count" are prepended to the header value.  Thus the conserved header is:</t>
        <artwork><![CDATA[
Prior-<header name>: i=<#>,l=<bottoms-up line count>,<value including any whitespaces>
]]></artwork>
        <t>For example:</t>
        <artwork><![CDATA[
Prior-Subject: i=1,l=5, Meeting on the 5th
Prior-Dkim-Signature: i=2,l=3, d=example.com,b=...
]]></artwork>
        <t>This stores the prior header in a format that SHOULD be ignored by subsequent forwarders, and if not then will cause a verification failure.  The forwarder then rewrites or deletes the header as before by prepending the rewritten header to the message or skipping prepending for deletion.   To protect the integrity of these headers, these headers are hashed separately from ARC-Message-Signature "h" header list.  The forwarder takes the header hash, then hashes the "Prior-" header in bottoms up order as found in the headers.  This specification calls for the rewritten header hash to be explicitly added to the ARC-Message-Signature with a tag "hh".  Conformant forwarders even without mailing-lists mutations MUST report header hash explicitly to better differentiate and tolerate body modifications when verifying headers.</t>
        <t>To reverse the rewriting or deletion of headers, all "Prior-" headers are collected at the given ARC instance number.  The prior header name is extracted from the "Prior-" header, and the original value extracted and restored.  The rewritten header at the line count position and matching header is deleted in top down order.</t>
      </section>
      <section anchor="message-footer">
        <name>Message Footer</name>
        <t>Mailing-lists may choose to add a message footer to the body of the message to notify the recipient of the mailing-list distribution action and conformant mailing-list will describe this mutation to the receiver.   One method is to append the footer text to all content-type text in the top level of mime-part "multipart/alternative".  Another method is to append a new successor mime-part for a mime-part "multipart/mixed", and that mime-part contains the footer as a content-type text.  If the message is not mime formatted, the entire body is treated as text and the mailing-list may append a text footer at the bottom of the message.</t>
        <t>Conformant mailing-list forwarders characterize these changes with a new "Content-footer" header.  It contains a list of comma separated tag-values using the formatting specifications in DKIM.  The first of these is an ARC set instance number describing which forwarder added the header.  When the mailing-list appends a text part, the receiver characterizes it with the beginning and ending byte offset of the mime-part or message-body if MIME unformatted.  If the mailing-list adds a text mime-part as footer, it describes the mime part with its purpose tag-value.  The Content-footer header is added to the mime-part for MIME formatted messages, and to the message headers for unformatted messages. To protect the integrity of the header, in the latter case, the Content-footer is hashed along with "Prior-" headers in the same bottoms up order.  In the former case, Content-footer headers added to the message-body are protected by the message body hash.   The following are the Content-footer header tag-values:</t>
        <dl>
          <dt>i</dt>
          <dd>
            <t>Instance tag. Must be the first tag-value.  The value contains the instance number</t>
          </dd>
          <dt>b</dt>
          <dd>
            <t>Footer beginning offset in bytes from the start of the text mime-part or message-body if no MIME unformatted.  MUST always appear with a footer ending offset.</t>
          </dd>
          <dt>e</dt>
          <dd>
            <t>Footer ending offset in bytes from the start of the text mime-part or message-body if no mime unformatted.  MUST always appear with a footer beginning offset.</t>
          </dd>
          <dt>m</dt>
          <dd>
            <t>Mime-part purpose description.  If the added mime-part contains the text footer, then the value is "footer".  If the added mime-part is "multipart/mixed" and meant to support adding the text footer, then the value is "mixed".  If the text footer is appended, then this tag-value is not added.</t>
          </dd>
        </dl>
        <t>For example:</t>
        <artwork><![CDATA[
Content-footer: i=1, b=100, e=200
Content-footer: i=2, m=footer
]]></artwork>
        <t>To reverse the footer addition, the receiver looks at the headers to see if the message is MIME formatted.  If not, the receiver looks for a "Content-footer" in the headers.  If so, the receiver looks for "Content-footer" in the MIME tree content headers.  For each "Content-footer" found header at the current ARC set instance, it reverses the footer mutation.  For offset values designated by beginning and ending offset tags, it removes the text from that mime-part or the message-body designated.  For a mime-part text footer, it deletes it along with any supporting "multipart/mixed" mime-part.  Then the receiver deletes the Content-footer header from the updated message if not done so already.</t>
      </section>
      <section anchor="validation">
        <name>Validation</name>
        <t>The receiver verifies prior ARC sets per the procedure described in <eref target="https://datatracker.ietf.org/doc/draft-chuang-replay-resistant-arc/">draft-chuang-replay-resistant-arc</eref>. In addition, the receiver validates the ARC sets starting from the largest instance number found to the smallest.  First the receiver verifies the given instance ARC-Message-Signature or DKIM-Signature as appropriate.  Then the receiver computes the rewritten header hash taking the header hash computed by ARC-Message-Signature at the given instance number or DKIM-Signature.   Then the hash is taken for "Prior-" headers and "Content-footer" header if found in the headers at the current ARC set instance number and all prior ones.  This is verified against the header hash value associated with the tag "hh", reporting signature failure if it mismatches.</t>
        <t>Next the receiver determines whether it needs to reverse any header or footer mutations at that ARC set instance by looking for the ARC-Message-Signature mutation tag "m=".  For values of "mailinglist", it attempts to reverse mutations keeping the resulting message so that further validations are possible.  The receiver attempts to provide header reversing procedures given in  "Header Rewriting" section and body reversing procedures given in "Message Footer" section.   For values "gateway" the receiver MAY apply local policy to interpret subsequent validation failures.  For all other mutation tag "m" values, it assumes no mutations are present or outside the scope of mailing-list modifications.</t>
        <t>In addition, the originating sender's DKIM-signature or ARC-Message-Signature MUST successfully verify.  If so and all prior signatures verify, then the result is a "pass".  Verification failures are subject to interpretation in "Footer Characterization" section, and potentially indicate a "fail".    The result of this procedure is written in ARC-Authentication-Result with a method named "reverse" as the REVERSE result.</t>
        <t>This specification modifies <eref target="https://datatracker.ietf.org/doc/draft-chuang-replay-resistant-arc/">draft-chuang-replay-resistant-arc</eref> PATH results to take into account the REVERSE result.  At each ARC set instance where PATH recursively combines the local DARA (or SeRCi) results, if REVERSE reports "fail" then the PATH result reports "fail".  Because <em>REVERSE _combined with</em> <em>DARA</em> _represents a higher bar of verification than DARA alone, the receiver MAY apply local policy when interpreting the PATH result.</t>
      </section>
    </section>
    <section anchor="examples-">
      <name>**Examples **</name>
      <section anchor="originator-first-mailing-list-second-mailing-list-receiver">
        <name>Originator ==&gt; First Mailing-List ==&gt; Second Mailing-List ==&gt;Receiver</name>
        <t>This message is sent through two mailing-lists to some receiver.  The originating sender creates and signs a message as follows:</t>
        <artwork><![CDATA[
From: john.doe@example.com
DKIM-Signature: d=example.com
Subject: A really big announcement

It's Jane Doe's birthday tomorrow!
]]></artwork>
        <t>The first mailing-list adds a Subject header prefix and message-body footer, and denotes this using the procedures and headers specified in this document.</t>
        <artwork><![CDATA[
Content-footer: i=1, b=34, e=78
From: school@mailinglist.example.com
DKIM-Signature: d=mailinglist.example.com
Subject: [school list] A really big announcement
Prior-From: i=1,l=5, john.doe@example.com
Prior-DKIM-Signature: i=1,l=4, d=example.com
Prior-Subject: i=1,l=3, A really big announcement

It's Jane Doe's birthday tomorrow!

============
This is the school mailing-list.
]]></artwork>
        <t>The second mailing-list adds a Subject header prefix and message-body footer, and denotes this using the procedures and headers specified in this document.</t>
        <artwork><![CDATA[
Content-footer: i=2, b=79, e=124
From: district@mailinglist.example.com
DKIM-Signature: d=mailinglist.example.com
Subject: [district list] [school list] A really big announcement
Content-footer: i=1, b=34, e=78
Prior-From: i=2,l=9, school@mailinglist.example.com
Prior-DKIM-Signature: i=2,l=8, d=mailinglist.example.com
Prior-Subject: i=2,l=7, [school list] A really big announcement
Prior-From: i=1,l=5, john.doe@example.com
Prior-DKIM-Signature: i=1,l=4, d=example.com
Prior-Subject: i=1,l=3, A really big announcement

It's Jane Doe's birthday tomorrow!

============
This is the school mailing-list.

============
This is the district mailing-list.
]]></artwork>
        <t>The receiver sees the above message on inbound delivery, and attempts to reverse it.  After applying the reverse procedure on the newest ARC set i=2, the reversed message looks like:</t>
        <artwork><![CDATA[
Content-footer: i=1, b=34, e=79
From: school@mailinglist.example.com
DKIM-Signature: d=mailinglist.example.com
Subject: [school list] A really big announcement
Prior-From: i=1,l=5, john.doe@example.com
Prior-DKIM-Signature: i=1,l=4, d=example.com
Prior-Subject: i=1,l=3, A really big announcement

It's Jane Doe's birthday tomorrow!

============
This is the school mailing-list.
]]></artwork>
        <t>After applying the reverse procedure on the second newest ARC set i=1, the reversed message looks like:</t>
        <artwork><![CDATA[
From: john.doe@example.com
DKIM-Signature: d=example.com
Subject: A really big announcement

It's Jane Doe's birthday tomorrow!
]]></artwork>
        <t>The resulting reversed headers and message body DKIM-Signature verifies, and the REVERSE passing result is published in the ARC-Authentication-Result:</t>
        <artwork><![CDATA[
ARC-Authentication-Result: i=3; mx.example.com; reverse=pass; dara=pass
Content-footer: i=2, b=79, e=124
From: district@mailinglist.example.com
DKIM-Signature: d=mailinglist.example.com
Subject: [district list] [school list] A really big announcement
Content-footer: i=1, b=34, e=78
Prior-From: i=2,l=9, school@mailinglist.example.com
Prior-DKIM-Signature: i=2,l=8, d=mailinglist.example.com
Prior-Subject: i=2,l=7, [school list] A really big announcement
Prior-From: i=1,l=5, john.doe@example.com
Prior-DKIM-Signature: i=1,l=4, d=example.com
Prior-Subject: i=1,l=3, A really big announcement

It's Jane Doe's birthday tomorrow!

============
This is the school mailing-list.

============
]]></artwork>
        <t><tt>This is the district mailing-list.</tt></t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>There are no requests at this time.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Informative References</name>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
