<?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.39 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-chuang-replay-resistant-arc-07" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.5 -->
  <front>
    <title abbrev="Replay Resistant ARC">Replay Resistant Authenticated Receiver Chain</title>
    <seriesInfo name="Internet-Draft" value="draft-chuang-replay-resistant-arc-07"/>
    <author fullname="Weihaw Chuang">
      <organization>Google, Inc.</organization>
      <address>
        <email>weihaw@google.com</email>
      </address>
    </author>
    <author fullname="Bron Gondwana">
      <organization>Fastmail Pty Ltd</organization>
      <address>
        <email>brong@fastmailteam.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="31"/>
    <workgroup>Independent Stream</workgroup>
    <keyword>DKIM</keyword>
    <keyword>ARC</keyword>
    <keyword>Replay</keyword>
    <abstract>
      <?line 35?>

<t>DKIM (RFC6376) is an IETF standard for the cryptographic protocol to authenticate email at the domain level and protect the integrity of messages during transit.  Section 8.6 defines a vulnerability called DKIM Replay as a spam message sent through a SMTP MTA DKIM signer, that then is sent to many more recipients, leveraging the reputation of the signer.  We propose a replay resistant cryptographic based protocol that discloses all SMTP recipients and signs them, allowing a receiver or any third party to verify that the message went to the intended recipient.  If not then then potentially the message is replayed.  Moreover it leverages ARC (RFC8617) and sender defined forwarding path to build a "chain of custody" that accurately defines the SMTP forwarding path of the message.  This also allows the protocol to detect DKIM and ARC replay attacks and other attacks.</t>
    </abstract>
  </front>
  <middle>
    <?line 39?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This protocol provides a technique to authenticate email by domain that is replay resistant.   It leverages the features of ARC to name ADMD in the email forwarding path and to publish the intermediate results.   It then discloses all SMTP recipients as signed RFC822 headers by the sender which allows a receiver to verify if the mail was directed to the appropriate recipient.  The results MAY be used by spam filtering to apply some local policy, and/or applied to DMARC policy evaluation as one of its input email authenticators.</t>
      <t>Existing email authentication techniques have known limitations.  DKIM suffers from being vulnerable to replay attacks as described in <eref target="https://datatracker.ietf.org/doc/draft-ietf-dkim-replay-problem/">draft-ietf-dkim-replay-problem</eref>.  Spammers utilize an account on a sender that supports signing with DKIM to capture a spammy message with a valid DKIM signature.  The spam is then broadcast to many victim recipients.  Because ARC is based on DKIM signing, ARC is similarly vulnerable to replay.</t>
      <t>The broader goals of this internet-draft are outlined here:</t>
      <ul spacing="normal">
        <li>Any party can independently verify that a message traveled along a path as intended by the originator (original sender) to the receiver (last receiver). This prevents DKIM and ARC replay attacks, and SPF shared tenancy attacks.</li>
        <li>Receivers can determine if the message was modified along the path and by whom.</li>
        <li>Be able to tolerate parties not participating in the new protocol.  Make sure to have reasonable partial failure modes for non-participating parties including incentives to encourage future participation.</li>
      </ul>
      <section anchor="terminology-and-definitions">
        <name>Terminology and Definitions</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 anchor="definitions">
          <name>Definitions</name>
          <t>SMTP transport and particular email senders and receivers are defined in <xref target="RFC5321"/>.  Email payload and headers are defined in <xref target="RFC5322"/>.   This document uses <xref target="RFC5598"/> email flow definitions, which describes the interactions between the parties in sending email.  In particular these parties assist the email senders and receivers in email transport.   <eref target="https://datatracker.ietf.org/doc/draft-ietf-dkim-replay-problem/">draft-ietf-dkim-replay-problem</eref> adds context to those mailflows for the DKIM replay problem.</t>
        </section>
        <section anchor="acronyms">
          <name>Acronyms</name>
          <dl>
            <dt>ADMD:</dt>
            <dd>
              <t>ADministrative Management Domain is defined as <xref target="RFC5598"/> and represents the independent operational scope authorship, handling, and receiving.</t>
            </dd>
            <dt>ARC:</dt>
            <dd>
              <t>Authenticated Received Chain  <xref target="RFC8617"/> - is a protocol that is meant to resolve some of the issues for DMARC <xref target="RFC7489"/> to fix the problems that DMARC policy rejects caused by mail forwarding.  ARC uses a digital signing mechanism derived from DKIM to protect the integrity of the Authentication-Results of a forwarder and a versioning mechanism to describe the forwarders.  ARC suffers from similar replay issues as DKIM.</t>
            </dd>
            <dt>Authentication-Results:</dt>
            <dd>
              <t>A header containing a list of email authentication validation methods, results and comments as specified in <xref target="RFC8601"/>.</t>
            </dd>
            <dt>DKIM:</dt>
            <dd>
              <t>DomainKeys Identified Mail <xref target="RFC6376"/> standard for the cryptographic protocol to authenticate email at the domain level and protect the integrity of messages during transit.</t>
            </dd>
            <dt>DKIM replay</dt>
            <dd>
              <t>As defined in <xref target="RFC6376"/> section 8.6- a vulnerability called DKIM Replay as a spam message sent through a SMTP MTA DKIM signer, that then is sent to many more recipients, leveraging the reputation of the signer.</t>
            </dd>
            <dt>DMARC:</dt>
            <dd>
              <t>Domain-based Message Authentication, Reporting, and Conformance <xref target="RFC7489"/>- defines a sender defined message handling policy for spoofed messages to be applied when a message is delivered at some receiving SMTP server.</t>
            </dd>
            <dt>MDA</dt>
            <dd>
              <t>Message Delivery Agent defined in <xref target="RFC5598"/>.</t>
            </dd>
            <dt>MSA</dt>
            <dd>
              <t>Message Submission Agent defined in <xref target="RFC5598"/>.</t>
            </dd>
            <dt>MTA</dt>
            <dd>
              <t>Message Transfer Agent defined in <xref target="RFC5598"/>.</t>
            </dd>
            <dt>SPF:</dt>
            <dd>
              <t>Sender Policy Framework  <xref target="RFC7208"/> standard for authenticating sending servers typically based on IP address.</t>
            </dd>
          </dl>
        </section>
      </section>
    </section>
    <section anchor="defining-and-propagating-sender-identity-in-mail-flow">
      <name>Defining and Propagating Sender Identity in Mail Flow</name>
      <t>This section outlines how ARC and DKIM are used by the email authentication methods defined in this document, though several details are left for later sections.  This protocol leverages ARC and DKIM for declaring protocol settings and protecting the integrity of the headers and message body, and ARC for propagating authentication results.  At message origination, this uses DKIM-Signature tag/values for declaring settings and optionally ARC-Seal tag/values instead.   For message forwarding, this uses ARC-Seal tag/values for declaring settings.  After the email receiver evaluates the email authentication results, these results are published and propagated to the subsequent receivers via ARC-Authentication-Results.  This protocol updates ARC-Authentication-Results with new method status, properties and comments as defined in <xref target="dara"/>.</t>
      <t>This protocol identifies and names the ADMDs by the signer domain as defined in the DKIM-Signature "d=" or ARC-Seal "d=".  The traversed MAIL FLOW forwarding path is defined as a vector of these domains, and is further defined in <xref target="chain"/>.</t>
      <t>This specification mandates that the ADMDs participating in this protocol explicitly identify themselves with a DKIM-Signature or ARC-Seal tags "dara" or "darn".  At the originating sender, participants MAY declare participation with a tag in the DKIM-Signature if the recipient declaration and signing as described later is covered by To and Cc, otherwise they MUST declare with a tag in the ARC-Seal.  Later this document will describe when to use Forwarded-to header which is protected by the ARC-Seal.  Additionally if the message is forwarded, participation MUST be declared in a tag in the ARC-Seal.  Participants will declare an identified path of ADMD nodes from the originating sender ADMD to the receiving ADMD with the "dara" tag.  If the message exits the identified path into some naive, protocol unaware ADMD the aware ADMD denotes this using the "darn" tag, allowing for mitigations for this scenario.   The tags and their use are further specified in <xref target="dara-protocol-awareness"/>.</t>
      <t>At the MSA ADMD, i.e. the responsible originating sender, this protocol REQUIRES that the <em>From</em> header domain MUST align with DKIM-Signature "d=" domain or ARC-Seal "d= domain.  This alignment ties the originating sender's identity to the cryptographic signer, and allows any receiver or third party to discover who the originating sender is.  If the originating sender performs ARC signing, the ARC the ARC-Authentication-Results MUST be empty.  Some forwarders such as mailing-lists modify the From header that hinder originating sender discovery.  Receiver MAY apply methods to recover the originating sender's From header by using methods such as <eref target="https://datatracker.ietf.org/doc/draft-chuang-mailing-list-modifications/">draft-chuang-mailing-list-modifications</eref>.</t>
      <t>When the message is delivered to the inbox by the MDA, it MAY strip the ARC-Seal and ARC-Message-Signature but leave behind the ARC-Authentication-Result.  Partially stripping the ARC set makes termination identifiable and more difficult to replay as signatures are missing.  A message lacking ARC-Seals and ARC-Message-Signatures but containing ARC-Authentication-Result has been delivered to the inbox.  Seeing such a message in delivery may be replayed and is denoted by an ARC verification <em>fail</em> status.</t>
      <t>This protocol protects against malicious use of these ARC headers by REQUIRING message signing and verification between ADMDs.  In addition there MAY be ARC signing and verification internal to the ADMD.  Having this outbound message body signing invariant permits the receiver to verify the integrity of the message as sent by the prior ADMD.  To verify the integrity of the ARC sets then, a receiver MUST verify the previous ARC set's ARC-Message-Signature and verify each ARC set's ARC-Seal signature from "i=N" (receiver's ARC set number) to "i=1" (originating sender or first forwarder) as well as the presence of all headers in the ARC set as defined in <xref target="RFC8617"/>.  If the receiver sees a verification failure from the immediate sender's "i=N-1" ARC-Message-Signature, this MUST result in an ARC verification <em>fail</em> status.  ARC-Message-Signature verification failures from "i=N-2" to "i=1" are tolerated, meaning their failure does not indicate a failing ARC result e.g. mailing-list modification.   All ARC-Seal verification failures from "i=N-1" to "i=1" are treated as ARC verification <em>fail</em> status.  The result of the verification is published in the Authentication-Result and the ARC-Authentication-Result with a tag "arc=".  Even if the receiver notes that a prior receiver publishes a ARC verification fails, this specification asks the receiver to continue ARC generation and verification to provide forensics evidence via the ARC-Authentication-Results.  For example the SPF authentication results of the potentially malicious sender MAY help identify that sender to some subsequent receiver.  The propagated ARC verification failure will help prevent inadvertent use of the authentication results by subsequent receivers.</t>
    </section>
    <section anchor="dara">
      <name>Declare All Recipients and Affirm (DARA)</name>
      <section anchor="concepts">
        <name>Concepts</name>
        <t>This email authentication protocol uses validating signed headers against the envelope headers.  It features a looks up mechanism to support forwarders that are unaware of the protocol.  Also it publishes enough information for a third party to independently validate the results given by SMTP sender and receiver.</t>
        <section anchor="declaring-all-recipients">
          <name>Declaring All Recipients</name>
          <t>The specified email authentication protocol is resistant against replay attacks by explicitly identifying all recipients in the headers, including when the recipient is "hidden" such as <em>Bcc:</em> or Mailing-lists.  That way when a signed message arrives, the receiver can check if the RCPT TO recipient correctly is a subset of the recipient in the signed message header.  If not, then the message MAY be part of a replay attack.  When To: and Cc: recipients are declared by their headers, they MUST be specified in the "h=" header list and signed by DKIM-Signature or ARC-Message-Signature.   For blind carbon copy, while a Bcc: header might be added, it can be stripped by subsequent forwarders.  Instead we create a new _Forwarded-to: _ header that includes an ARC set versioning number to indicate which ADMD sent the message to a new recipient.  It MAY include one or more comma separated recipients.  Whitespaces in the recipient list are ignored.</t>
          <artwork><![CDATA[
Forwarded-to: i=1; user@example.com, user2@example.com
]]></artwork>
          <t>As part of the DARA protocol, recipients not declared by To: or Cc: MUST be declared with the <em>Forwarded-to:</em> header.  This supports the email forwarder and mailing list scenario where we also use the <em>Forwarded-to</em> header to indicate that a message is sent to a new recipient.  <em>Forwarded-to: _MUST be propagated by forwarders unmodified.  For the privacy of "hidden" recipients and to prevent their identity from being visible to other recipients via the _Forwarded-to: header</em>, the message MUST be split and signed exclusively for each <em>Forwarded-to:</em> recipient.  This means the header is visible only to that recipient.   Messages sent to a new ADMD but with the same recipient identity disclosed by a prior <em>Forwarded-to</em> MAY elect to optimize header space by skipping adding a redundant <em>Forwarded-to</em> header.</t>
          <t>To protect the integrity of the <em>Forwarded-to:</em> header, they MUST be hashed and signed by ARC-Seal as follows:  Collect all <em>Forwarded-to:</em> headers and hash them following the header processing algorithm in <eref target="https://www.rfc-editor.org/rfc/rfc6376#section-5.4">RFC6376</eref> section 5.4.  This hash is published in the ARC-Message-Signature header as "fh=" tag and base64 hash value.   DARA aware verifiers can recompute the hash and check it against the hash contained in the "fh=" tag to verify the integrity of the <em>Forwarded-to:</em> headers.   For example:</t>
          <artwork><![CDATA[
ARC-Message-Signature: i=1; fh=abcd...
Forwarded-to: user@example.com
]]></artwork>
        </section>
        <section anchor="dara-protocol-awareness">
          <name>Protocol Awareness</name>
          <t>Senders and receivers MAY variously support the DARA protocol or not, so the protocol needs to be tolerant of ADMDs that don't support the protocol.  For example a naive mailing list sender sending to a protocol aware receiver SHOULD NOT have traffic rejected simply because it didn't follow the protocol.  Yet simultaneously, the DARA protocol needs to discourage abuse by spammers seeking to use the naive ADMD path for replay.  The protocol calls for the DARA aware senders to lookup the capability of the receiver in supporting DARA and disclose that capability in the message.   All ADMD supporting the DARA protocol SHOULD publish a DNS TXT policy record.  The DARA aware sender SHOULD look up the receiver's policy record as described next or look up an internal list of receivers that support DARA.  The following paragraph describes the DARA DNS policy record and disclosure statement, and the following paragraph describes when the ADMD does not support DARA.</t>
          <t>When the ADMD indicates it supports DARA via DNS, the ADMD publishes a DNS TXT policy record at the supported domain name, prepended with a "_dara" label.  The format of the policy record are tag/values in form of the textual representation in <eref target="https://www.rfc-editor.org/rfc/rfc6376#section-3.2">RFC6376</eref> section 3.2. The policy record MUST start with a DARA version tag "v=" with a DARA version number that MUST be set to "DARA_1.0<tt>"</tt>.  The lookup also discovers the destination domain name, and that destination domain MUST match the ADMD's ARC-Seal "d=" signing domain <xref target="RFC8617"/> which enables tracing this domain <em>From</em> sender to receiver as described later.  The signing domain name is specified by the tag "dara=" with value being that domain name.  The "dara=" signing domain enables an Email Service Provider (ESP) to forward mail on behalf of someone else.  Once discovered, this domain is copied to "dara=&lt;domain&gt;" domain that is then placed in the sender's DKIM-Signature or ARC-Seal.  The "dara=" tag/value indicates support by the receiver for the DARA as well as the identity of the intended receiver signing domain.   The following is an example of a DARA DNS policy record for example.org that normalizes to example.com.  The TXT record is published at <em>_dara.example.org</em> and contains:</t>
          <artwork><![CDATA[
v=DARA_1.0; dara=example.com
]]></artwork>
          <t>If no such DNS TXT policy record is found or not in the list of supported domains, then the receiver does not support the DARA protocol.  This is indicated by the tag "darn=" with the receiving domain as the value. This is placed in the sender's DKIM-Signature or ARC-Seal.  The "darn=" tag indicates to subsequent DARA aware receivers that there was an intermediate naive forwarder.  Also, when there is spam, instead of penalizing the sender that is DARA aware, the receiver MAY elect to apply the reputation penalty to the receiving domain that is naive to DARA.</t>
          <t>A DARA aware receiver MAY elect to check the sender's policy if it suspects that a malicious forwarder was acting as a Man-In-The-Middle and has stripped off some prior sender's DARA policy.  If it detects a DARA declaration in the sender's DNS policy, but not declared in the message, the receiver MAY elect to treat the message as spam.</t>
        </section>
        <section anchor="receiver-verification">
          <name>Receiver Verification</name>
          <t>A DARA aware receiver looks in the message to determine how to do DARA validation.  First it looks for the most recent ARC-Seal (if present) using the ARC set number to determine recency.  If not present then it looks for a DKIM-Signature.  When found, a DARA aware receiver verifies the integrity of the header, then looks for a DARA tag/values and these are interpreted as follows.  If the tag is "dara=", then the receiver MUST validate the recipients, and if it fails verification, treat the message as DARA unauthenticated with the implication that the message might be replayed.   The recipient verification process for a given forwarder is to collect all the recipients in the <em>To</em>, <em>Cc</em> and prior <em>Forwarded-to</em> headers.  In particular, for a forwarder i=n, the verifier collects all Forwarded-to headers from i=1 to i=n-1.  It verifies that they are signed appropriately and if not fails the verification.  The verifier checks that the To and Cc headers are present in the sender's DKIM-Signature or ARC-Message-Signature "h=" header list, and signed.   Next it checks the integrity of the Forwarded-to headers by validating the "fh=" hash.  The receiver collects all <em>Forwarded-to:</em> headers and hash them following the header processing algorithm in <eref target="https://www.rfc-editor.org/rfc/rfc6376#section-5.4">RFC6376</eref> section 5.4, then checks the hash against the value associated with the "fh=" tag.  If this mismatches, this is treated as failing verification. Assuming headers integrity, the receiver then collects all the RCPT TO recipients as the envelope recipients.  The receiver then verifies that the envelope recipients are a subset of the signed headers.  If not a subset, this too is treated as failing verification.</t>
          <t>As with other email authentication methods, the receiver's verifier is free to apply a locally defined policy against unauthenticated email.  Next if the sender's tag is "dara=", the verifier SHOULD treat validation success as <em>pass</em>, and validation failure as <em>fail</em>.  If the sender' tag is "darn=", the verifier SHOULD treat recipient verification failure as <em>neutral</em> and SHOULD treat success as <em>pass</em>.  This discretionary validation mode is to support the scenario of DARA unaware ADMDs that may cause false positive validation failures.  The domain value associated with the "darn=" tag helps identify the naive ADMD in processing local policy.</t>
          <t>After the receiver's verifier applies the "dara=" or "darn=" policy as described above, the result of this verification MUST be published in the ARC-Authentication-Results.  The verifier describes the result with <xref target="RFC8601"/> method "dara", and a result value of <em>pass</em>, <em>fail</em> or <em>neutral</em>.  Receivers MUST declare the RCPT TO identity of that the message was received as a property header.i=&lt;recipient email address&gt;.  This is to enable 3rd party mail flow validation as will be described shortly.  For example the ARC-Authentication-Result could look like:</t>
          <t><tt>ARC-Authentication-Result: i=2; dara=pass header.i=user@example.com</tt></t>
        </section>
        <section anchor="rd-party-verification">
          <name>3rd Party Verification</name>
          <t>A third party verifier MUST be able to verify that DARA results from the sender and receiver using only values in the message headers and DNS.  First the verifier identifies the sender and receiver.  The sender may be identified by ARC-Seal with an ARC set number preceding the receiver or DKIM-Signature if no prior ARC-Seal is discovered. The sender's "dara=" or "darn=" policy declaration in the ARC-Seal or DKIM-Signature.  The receiver's results will be found in the ARC-Authentication-Results.  For both the sender and receiver, the integrity of the headers are checked i.e. checking the ARC-Seal and then the "fh=" hash.  If it passes, then verifier determines the sender's declaration of the receiver's DARA support, by looking for "dara=" tag in the DKIM-Signature or ARC-Message-Signature.  The value of the "dara=" domain MUST match the receiver's ARC-Seal's "d=" domain, and the receiver's ARC seal MUST verify.  The 3rd party verifier SHOULD also check to see if the ARC-Authentication-Result "header.i=" is a subset of the declared and signed header so far.  If these step pass, the 3rd party verification <em>passes</em>.  If verification at any individual fails, the 3rd party verification <em>fails</em>.  The above procedure can later be used by the Chain verification algorithm in <xref target="chain"/> to construct verification across multiple senders and receivers in the mail flow.</t>
        </section>
      </section>
      <section anchor="definitions-1">
        <name>Definitions</name>
        <t>DNS TXT Policy tag/values</t>
        <ul spacing="normal">
          <li>"v=": Value of "DARA_1.0" if the ADMD supports the DARA verification protocol.</li>
          <li>"dara=": Value of the receiver's ARC-Seal "d=" domain</li>
        </ul>
        <t>DKIM-Signature or ARC-Seal tags/values</t>
        <ul spacing="normal">
          <li>"dara=": Value of the receiver's ARC-Seal "d=" domain when the receiver is DARA capable as found from the DARA DNS policy record.</li>
          <li>"darn=": Value of RFC822 recipient's domain name when the receiver is naive of DARA.</li>
        </ul>
        <t>ARC-Authentication-Results method</t>
        <ul spacing="normal">
          <li>"dara=": Value of <em>pass</em> if recipient validation passes, otherwise <em>fail</em>.  In some circumstances this tag/value may be unset or be treated as <em>neutral</em>.</li>
        </ul>
      </section>
      <section anchor="examples">
        <name>Examples</name>
        <section anchor="originator-mailing-list-receiver">
          <name>Originator ==&gt; Mailing-List ==&gt; Receiver</name>
          <t>Originator outbound</t>
          <artwork><![CDATA[
DKIM-Signature: d=originator.example.com; dara=mailinglist.example.com
To: list@mailinglist.example.com
]]></artwork>
          <t>Mailing-List inbound (after ARC seal)</t>
          <artwork><![CDATA[
ARC-Seal: i=1; d=mailinglist.example.com;
ARC-Authentication-Results: i=1; dara=pass 
     header.i=list@mailinglist.example.com (rcpt.to 
     list@mailinglist.example.com matches signed header)
DKIM-Signature: d=originator.example.com; dara=mailinglist.example.com
To: list@mailinglist.example.com
]]></artwork>
          <t>Mailing-List outbound (after ARC reseal)</t>
          <artwork><![CDATA[
Forwarded-to: i=1; user@receiver.example.org
ARC-Seal: i=1; d=mailinglist.example.com...
ARC-Message-Signature: i=1; fh=...
ARC-Authentication-Results: i=1; dara=pass 
     header.i=list@mailinglist.example.com (rcpt.to 
     list@mailinglist.example.com matches signed header)
DKIM-Signature: d=originator.example.com; dara=mailinglist.example.com
To: list@mailinglist.example.com
]]></artwork>
          <t>Receiver inbound (after ARC seal)</t>
          <artwork><![CDATA[
ARC-Seal: i=2; d=receiver.example.org...
ARC-Message-Signature: i=2; fh=...
ARC-Authentication-Results: i=2; dara=pass 
        header.i=user@receiver.example.org (rcpt.to 
        user@receiver.example.org matches signed header)
Forwarded-to: i=1; user@receiver.example.org
ARC-Seal: i=1; d=mailinglist.example.com...
ARC-Message-Signature: i=1; fh=...
ARC-Authentication-Results: i=1; dara=pass 
     header.i=list@mailinglist.example.com (rcpt.to 
     list@mailinglist.example.com matches signed header)
DKIM-Signature: d=originator.example.com; dara=mailinglist.example.com
To: list@mailinglist.example.com
]]></artwork>
        </section>
        <section anchor="originator-first-receiver-replay-victim-receiver">
          <name>Originator ==&gt; First Receiver; Replay ==&gt; Victim Receiver</name>
          <t>Originator outbound (after ARC seal)</t>
          <artwork><![CDATA[
DKIM-Signature: d=originator.example.com; dara=receiver.example.com
To: user@receiver.example.com
]]></artwork>
          <t>First receiver inbound (after ARC seal)</t>
          <artwork><![CDATA[
ARC-Seal: i=1; d=receiver.example.com
ARC-Authentication-Results: i=1; dara=pass 
     header.i=user@receiver.example.com (rcpt.to 
     user@receiver.example.com matches signed header)
DKIM-Signature: d=originator.example.com; dara=receiver.example.com
To: user@receiver.example.com
]]></artwork>
          <t>Above message captured by spammer, modified (add additional headers) and then resent.  A spammer might send the message to john.doe@victim.example.net which would be unspecified in the headers.</t>
          <t>Victim (last) receiver inbound (after ARC seal)</t>
          <artwork><![CDATA[
ARC-Seal: i=2; d=victim.example.net
ARC-Authentication-Results: i=2; dara=fail
     header.i=john.doe@victim.example.net (rcpt.to 
     john.doe@victim.example.net mismatches signed header);
ARC-Seal: i=1; d=receiver.example.com
ARC-Authentication-Results: i=1; dara=pass 
     header.i=user@receiver.example.com (rcpt.to 
     user@receiver.example.com matches signed header)
DKIM-Signature: d=originator.example.com; dara=receiver.example.com
To: user@receiver.example.com
]]></artwork>
        </section>
        <section anchor="originator-naive-forwarder-receiver">
          <name>Originator ==&gt; Naive-Forwarder ==&gt; Receiver</name>
          <t>This describes a message sent through Bcc to a forwarder that does not support DARA.</t>
          <t>First outbound (after ARC seal)</t>
          <artwork><![CDATA[
ARC-Seal: i=1; d=originator.example.com; darn=naive.example.com;
ARC-Message-Signature: i=1; fh=...
Forwarded-to: i=1; user@naive.example.com
Bcc: user@naive.example.com
]]></artwork>
          <t>The naive forwarder changes the recipient address from user@naive.example.com to user@aware.example.com, and the envelope recipient will change accordingly.  aware.example.com supports DARA.</t>
          <t>Final inbound (after ARC seal).</t>
          <artwork><![CDATA[
ARC-Seal: i=2; d=aware.example.com
ARC-Authentication-Results: i=2; dara=neutral
     header.i=user@aware.example.com (rcpt.to 
     user@aware.example.com mismatches signed header);
ARC-Seal: i=1; d=originator.example.com; darn=naive.example.com;
ARC-Message-Signature: i=1; fh=...
Forwarded-to: i=1; user@naive.example.com
Bcc: user@naive.example.com
]]></artwork>
          <t>At receiver, the declared and signed recipient user@naive.example.com will mismatch the envelope recipient user@aware.example.com, and fail DARA.  However the protocol is set to optional verification with "darn=", and so does not report the failure.  The domain specified naive.example.com by "darn=" may be useful by spam filters at the receiver.  For example the SPF HELO domain may match the "darn=" domain.</t>
        </section>
      </section>
    </section>
    <section anchor="chain">
      <name>Chain of Custody</name>
      <t>The local results of DARA can be combined into a path of verified ADMD domains from the originating sender to the receiver.  As noted earlier,  the ADMD are defined by the ARC-Seal "d=" domains with FROM header alignment ADMD as the originating sender.  The sender-defined receivers are described by the "dara=" tag at the sender containing the receiving domains and create sender-receiver pairs or metaphorical link in a chain.  The originating sender defines the provenance of the message and the connected pairs create a  "Chain of Custody" of the message.  Chain building and verification can help detect if replay potentially occurred when there is a verification error.  More specifically, a validation error can indicate there is a protocol unaware forwarder, or there is a malicious sender attempting to take the message and reinject it along a new path outside the intent of the originating sender.  The verifier can check the prior sender's DARA declaration of "darn=" vs "dara=" to determine whether the unaware but benign scenario applies, or the aware sender but malicious scenario applies.  If the malicious scenario, then it is up to the receiver's local policy to determine what receiver does with the result.  The protocol for this verification is described in more detail in subsequent paragraphs.</t>
      <t>The verified path that the message traverses can be used as the message flow identifier in a reputation system.  Unlike purely domain based reputation systems, a path based one can help differentiate benign message flows from malicious ones to help identify replay or other abuse by identifying the spammer forwarding malicious content.</t>
      <section anchor="chain-building-algorithm">
        <name>Chain Building Algorithm</name>
        <t>The following defines an algorithm for path building using DARA identifiers.  We define the nodes of a path as the ARC-Seal "d=" identities and whose edges are sender-receiver pairs.  Because building the edges of a path is a repeated process across edges that are like links, we call this Chain of Custody building or Chaining for short.  It starts at the destination at ARC set "i=N", and walks through the ARC headers to the originating sender's ARC set "i=1" or the DKIM-Signature.  The edge is defined as a pair of nodes (<em>d<sub>n-1</sub></em> , <em>d<sub>n</sub></em>) where the sender's ARC instance number "i=n-1" and receiver's "i=n".  Further "<em>d<sub>n-1</sub></em>=" is the sender's ARC-Seal "d=" domain, and  "<em>d<sub>n</sub></em>=" is the receiver's ARC-Seal "d=" domain.  Next the sender's "dara=" domain <em>d<sub>n</sub></em>  and the receiver's ARC-Seal "d=" domain <em>d'<sub>N</sub></em> MUST match.  If so, edge building considers this a local <em>pass</em>.  If the "dara=" result is missing, the verifier checks if there is instead a corresponding "darn=" tag at this or prior ARC set, then specifies an edge result of <em>neutral</em>, otherwise as <em>fail</em>.   This recursively is extended for (<em>d<sub>N-2</sub></em> , <em>d<sub>N-1</sub></em>) i.e. for ARC set "i=n-2" and so forth for each n instance number to 1.  At instance number 1, the verifier attempts to extend to a DKIM-Signature that is From header aligned and contains a "dara=" tag.  If so, the DKIM-Signature is treated as a virtual "i=0", and the verifier checks if the DKIM-Signature "dara=" domain matches the ARC-Seal i=1 "d=" domain.</t>
        <t>Local Chain verifier is done for each ARC set n following the above edge building from "i=N" to "i=1" and builds two vectors.  One vector keeps the local chain results and the other ARC-Seal "d=" domains.  The verifier assumes that results from ARC header and message-body signature verification, DARA verifications have already run and the results already populate the ARC-Authentication-Results.  For ARC set "i=N" to ARC set "i=2", the verifier MUST evaluate the local result, meaning the ARC result (i.e. from ARC seal verification and sometime ARC message-signature verification), edge building result, and DARA verification result.   If it <em>passes</em>, the local Chain result is <em>pass</em>.  Otherwise if any of them are <em>neutral</em> is <em>softfail</em>, and the rest pass, the result is <em>neutral</em>.  Otherwise the result is <em>failure</em>.   Further local policy MAY modify the ARC message-signature result (perhaps due to future work around <eref target="https://datatracker.ietf.org/doc/draft-kucherawy-dkim-transform/">draft-kucherawy-dkim-transform</eref> or <eref target="https://datatracker.ietf.org/doc/draft-chuang-mailing-list-modifications/">draft-chuang-mailing-list-modifications</eref>)  We recommend with the Chaining protocol to continue verification even if the sender's Chain result is failure or neutral, to provide forensics evidence for subsequent receivers.  Receivers SHOULD independently determine if the DARA header.i recipients from the ARC-Authentication-Result header is a subset of the declared and signed recipients.   At the originating sender's ARC set "i=1" corresponding to <em>d<sub>1</sub></em> or DKIM-Signature corresponding to <em>d<sub>0</sub></em> the verifier first verifies alignment between header <em>From</em> domain and the ARC-Seal "dara=" domain.  That domain defines <em>d<sub>1</sub></em> or <em>d<sub>0</sub></em> and the verifier looks up the DARA policy associated with the domain which MUST exist.  If they are not aligned, then the local Chain verification is considered <em>neutral</em> as the message may have been forwarded from some unaware domain.  In addition the ARC seal validation for origination MUST <em>pass</em> or local Chain verification is considered <em>fail</em>.  Once these checks pass, then Chain building for "i=1" is considered to pass.  The local Chain results is added onto the result vector at that index for all indexes, and similarly the ARC-Seal "d=" domain onto the domain vector.</t>
        <t>To compute the global Chain result, the verifier walks over the vector of results.  The global Chain result is initialized to <em>pass</em>.  Starting from "i=N" index to "i=1", if the local result is <em>fail</em> then the global result is <em>fail</em>, else if local result is <em>neutral</em> then the global is <em>neutral</em>.  If the local result is <em>fail</em>, then the domain result is cleared from that index to i=1.  This will inserts a failure indication e.g. "arc-fail" at that index.  If there are multiple failures, this chooses the most specific error as the cause e.g "dara-fail" over "arc-fail".  This then truncates cleared domain entries from the domain list.  If the local result is <em>fail</em>, this walk halts.  If the local result is <em>neutral</em>, and there is a "darn="  then this inserts the domain in the domain list after the current index which helps identify it in the constructed path.  A synthetic <em>neutral _result is also inserted in the result path.  This also similarly extends the path when "i=1" and the message doesn't originate at that domain (missing alignment between the _From</em> header domain and ARC-Seal "d=" domain) to better identify the flow.  The global Chain result is published ARC-Authentication-Results as a "chain=".   If the result is <em>pass</em>, then the message is considered to be <em>authenticated</em> by DARA, otherwise <em>unauthenticated</em>.</t>
      </section>
      <section anchor="modified-body-algorithm">
        <name>Modified Body Algorithm</name>
        <t>The protocol can detect when a message is modified along the forwarding path by looking at the current and previous message body hash and comparing them to find for changes.  If the message content is considered spammy and phishy, then ADMDs that may have contributed to that problematic message body content MAY have their reputation per domain reputation of ADMDs negatively impacted.  Other ADMDs that are proven to not have contributed message content SHOULD NOT be affected.</t>
      </section>
      <section anchor="definitions-2">
        <name>Definitions</name>
        <t>ARC-Authentication-Results tags</t>
        <ul spacing="normal">
          <li>"chain=": Value of <em>pass</em> if local results and prior nodes are all passes, otherwise if "snr=" was present in the flow then <em>neutral</em>, else <em>fail</em>.</li>
        </ul>
      </section>
      <section anchor="examples-1">
        <name>Examples</name>
        <t>The following two examples illustrate working DARA/Chain-Building verification.  This is followed by an example of DKIM replay attack.  The second to last example is illustrative of how this protocol behaves with a SPF upgrade attack.  The last example demonstrates a modified message body by a forwarder.  (Other examples do not have a forwarder that modifies the message) .</t>
        <section anchor="originator-mailing-list-receiver-1">
          <name>Originator ==&gt; Mailing-List ==&gt; Receiver</name>
          <t>This is an example of mail being sent from one Mail-Box-Provider to another through a Mailing-List where all ADMDs participate in DARA.  In this illustrative example, we show the construction of the headers.</t>
          <t>Originator (after ARC seal)</t>
          <artwork><![CDATA[
ARC-Seal: i=1; d=originator.example.com;
    dara=mailinglist.example.com
ARC-Authentication-Results: i=1
To: mailing.list@mailinglist.example.com
]]></artwork>
          <t>Mailing-List outbound (after ARC seal)</t>
          <artwork><![CDATA[
ARC-Seal: i=2; d=mailinglist.example.com;
    dara=destination.example.com
ARC-Authentication-Results: i=2; dara=pass; chain=pass
ARC-Seal: i=1; d=originator.example.com;
    dara=mailinglist.example.com
ARC-Authentication-Results: i=1
To: mailing.list@mailinglist.example.com
]]></artwork>
          <t>Receiver inbound (after ARC seal)</t>
          <artwork><![CDATA[
ARC-Seal: i=3; d=receiver.example.com
ARC-Authentication-Results: i=3; dara=pass; chain=pass
ARC-Seal: i=2; d=mailinglist.example.com;
    dara=destination.example.com
ARC-Authentication-Results: i=2; dara=pass; chain=pass
ARC-Seal: i=1; d=originator.example.com;
    dara=mailinglist.example.com
ARC-Authentication-Results: i=1
To: mailing.list@mailinglist.example.com
]]></artwork>
          <t>The global Chain verification result is <em>pass</em> and the message is considered DARA <em>authenticated</em>.  The constructed path is [originator.example.com, mailinglist.example.com, receiver.example.com].</t>
        </section>
        <section anchor="originator-naive-forwarder-aware-forwarder-aware-receiver">
          <name>Originator ==&gt; Naive-Forwarder ==&gt;Aware-Forwarder ==&gt;Aware-Receiver</name>
          <t>This demonstrates a naive forwarder naive.example.com that does not support DARA/Chain.  The headers represent what would be seen after inbound delivery to the receiver.</t>
          <artwork><![CDATA[
ARC-Seal: i=3; d=receiver.example.com
ARC-Authentication-Results: i=3; dara=pass; chain=neutral
ARC-Seal: i=2; d=intermediate.example.com;
    dara=receiver.example.com
ARC-Authentication-Results: i=2; chain=neutral
ARC-Seal: i=1; d=originator.example.com; snr=naive.example.com
ARC-Authentication-Results: i=1
To: user@naive.example.com
]]></artwork>
          <t>The global Chain verification result is <em>neutral</em> and the message is considered DARA <em>unauthenticated</em>.  The constructed path is [originator.example.com, naive.example.com, intermediary.example.com, receiver.example.com].</t>
        </section>
        <section anchor="originator-receiver-spammer-victim-receiver">
          <name>Originator ==&gt; Receiver ; Spammer ==&gt; Victim Receiver</name>
          <t>Headers as seen by the receiver ADMD.</t>
          <artwork><![CDATA[
ARC-Seal: i=2; d=receiver.example.com
ARC-Authentication-Results: i=2; dara=pass; chain=pass
ARC-Seal: i=1; d=originator.example.com;
    dara=receiver.example.com
ARC-Authentication-Results: i=1
To: user@receiver.example.com
]]></artwork>
          <t>Final headers as seen by the victim ADMD after replay injection to victim.example.com domain.</t>
          <artwork><![CDATA[
ARC-Seal: i=3; d=victim.example.com
ARC-Authentication-Results: i=3; chain=fail
ARC-Seal: i=2; d=receiver.example.com
ARC-Authentication-Results: i=2; dara=pass; chain=pass
ARC-Seal: i=1; d=originator.example.com;
    dara=receiver.example.com
ARC-Authentication-Results: i=1
To: user@receiver.example.com
]]></artwork>
          <t>Note at ARC set #2, it does not set a "dara=" tag, causing a path discontinuity.  Due to the path discontinuity, the global Chain verification result is <em>fail</em> and the message is considered DARA <em>unauthenticated</em>.  The constructed path is [dara-fail].</t>
        </section>
      </section>
    </section>
    <section anchor="dmarc">
      <name>DMARC</name>
      <t>These protocols can act as authenticators for DMARC <xref target="RFC7489"/>.  As noted in the <xref target="chain"/>, the From header domain can be aligned with the DKIM-Signature d= domain or the ARC-Seal "d=" domains at ARC set "i=1" at the Originator.  Assuming From alignment, and a chain building with DARA and verification result has a global pass, this indicates a DMARC email authentication pass.  DARA and its global verification result can provide a more forwarding and body modification resilient authentication than SPF or DKIM.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The DARA techniques depend upon declaring all recipients into the mail headers, and signing them.  This could leak Bcc and mailing list recipients to each other who don't have an expectation of seeing other hidden recipients.  To prevent sharing of hidden recipients with each other, the message must be processed for each Bcc and mailing-list recipient where each recipient is uniquely declared and signed.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions yet.</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>
      <reference anchor="RFC5321">
        <front>
          <title>Simple Mail Transfer Protocol</title>
          <author fullname="J. Klensin" initials="J." surname="Klensin"/>
          <date month="October" year="2008"/>
          <abstract>
            <t>This document is a specification of the basic protocol for Internet electronic mail transport. It consolidates, updates, and clarifies several previous documents, making all or parts of most of them obsolete. It covers the SMTP extension mechanisms and best practices for the contemporary Internet, but does not provide details about particular extensions. Although SMTP was designed as a mail transport and delivery protocol, this specification also contains information that is important to its use as a "mail submission" protocol for "split-UA" (User Agent) mail reading systems and mobile environments. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5321"/>
        <seriesInfo name="DOI" value="10.17487/RFC5321"/>
      </reference>
      <reference anchor="RFC5322">
        <front>
          <title>Internet Message Format</title>
          <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
          <date month="October" year="2008"/>
          <abstract>
            <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5322"/>
        <seriesInfo name="DOI" value="10.17487/RFC5322"/>
      </reference>
      <reference anchor="RFC5598">
        <front>
          <title>Internet Mail Architecture</title>
          <author fullname="D. Crocker" initials="D." surname="Crocker"/>
          <date month="July" year="2009"/>
          <abstract>
            <t>Over its thirty-five-year history, Internet Mail has changed significantly in scale and complexity, as it has become a global infrastructure service. These changes have been evolutionary, rather than revolutionary, reflecting a strong desire to preserve both its installed base and its usefulness. To collaborate productively on this large and complex system, all participants need to work from a common view of it and use a common language to describe its components and the interactions among them. But the many differences in perspective currently make it difficult to know exactly what another participant means. To serve as the necessary common frame of reference, this document describes the enhanced Internet Mail architecture, reflecting the current service. This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5598"/>
        <seriesInfo name="DOI" value="10.17487/RFC5598"/>
      </reference>
      <reference anchor="RFC8617">
        <front>
          <title>The Authenticated Received Chain (ARC) Protocol</title>
          <author fullname="K. Andersen" initials="K." surname="Andersen"/>
          <author fullname="B. Long" initials="B." role="editor" surname="Long"/>
          <author fullname="S. Blank" initials="S." role="editor" surname="Blank"/>
          <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
          <date month="July" year="2019"/>
          <abstract>
            <t>The Authenticated Received Chain (ARC) protocol provides an authenticated "chain of custody" for a message, allowing each entity that handles the message to see what entities handled it before and what the message's authentication assessment was at each step in the handling.</t>
            <t>ARC allows Internet Mail Handlers to attach assertions of message authentication assessment to individual messages. As messages traverse ARC-enabled Internet Mail Handlers, additional ARC assertions can be attached to messages to form ordered sets of ARC assertions that represent the authentication assessment at each step of the message-handling paths.</t>
            <t>ARC-enabled Internet Mail Handlers can process sets of ARC assertions to inform message disposition decisions, identify Internet Mail Handlers that might break existing authentication mechanisms, and convey original authentication assessments across trust boundaries.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8617"/>
        <seriesInfo name="DOI" value="10.17487/RFC8617"/>
      </reference>
      <reference anchor="RFC7489">
        <front>
          <title>Domain-based Message Authentication, Reporting, and Conformance (DMARC)</title>
          <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
          <author fullname="E. Zwicky" initials="E." role="editor" surname="Zwicky"/>
          <date month="March" year="2015"/>
          <abstract>
            <t>Domain-based Message Authentication, Reporting, and Conformance (DMARC) is a scalable mechanism by which a mail-originating organization can express domain-level policies and preferences for message validation, disposition, and reporting, that a mail-receiving organization can use to improve mail handling.</t>
            <t>Originators of Internet Mail need to be able to associate reliable and authenticated domain identifiers with messages, communicate policies about messages that use those identifiers, and report about mail using those identifiers. These abilities have several benefits: Receivers can provide feedback to Domain Owners about the use of their domains; this feedback can provide valuable insight about the management of internal operations and the presence of external domain name abuse.</t>
            <t>DMARC does not produce or encourage elevated delivery privilege of authenticated email. DMARC is a mechanism for policy distribution that enables increasingly strict handling of messages that fail authentication checks, ranging from no action, through altered delivery, up to message rejection.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7489"/>
        <seriesInfo name="DOI" value="10.17487/RFC7489"/>
      </reference>
      <reference anchor="RFC8601">
        <front>
          <title>Message Header Field for Indicating Message Authentication Status</title>
          <author fullname="M. Kucherawy" initials="M." surname="Kucherawy"/>
          <date month="May" year="2019"/>
          <abstract>
            <t>This document specifies a message header field called "Authentication-Results" for use with electronic mail messages to indicate the results of message authentication efforts. Any receiver-side software, such as mail filters or Mail User Agents (MUAs), can use this header field to relay that information in a convenient and meaningful way to users or to make sorting and filtering decisions.</t>
            <t>This document obsoletes RFC 7601.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8601"/>
        <seriesInfo name="DOI" value="10.17487/RFC8601"/>
      </reference>
      <reference anchor="RFC6376">
        <front>
          <title>DomainKeys Identified Mail (DKIM) Signatures</title>
          <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
          <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
          <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
          <date month="September" year="2011"/>
          <abstract>
            <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
            <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="76"/>
        <seriesInfo name="RFC" value="6376"/>
        <seriesInfo name="DOI" value="10.17487/RFC6376"/>
      </reference>
      <reference anchor="RFC7208">
        <front>
          <title>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</title>
          <author fullname="S. Kitterman" initials="S." surname="Kitterman"/>
          <date month="April" year="2014"/>
          <abstract>
            <t>Email on the Internet can be forged in a number of ways. In particular, existing protocols place no restriction on what a sending host can use as the "MAIL FROM" of a message or the domain given on the SMTP HELO/EHLO commands. This document describes version 1 of the Sender Policy Framework (SPF) protocol, whereby ADministrative Management Domains (ADMDs) can explicitly authorize the hosts that are allowed to use their domain names, and a receiving host can check such authorization.</t>
            <t>This document obsoletes RFC 4408.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7208"/>
        <seriesInfo name="DOI" value="10.17487/RFC7208"/>
      </reference>
      <reference anchor="RFC4648">
        <front>
          <title>The Base16, Base32, and Base64 Data Encodings</title>
          <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
          <date month="October" year="2006"/>
          <abstract>
            <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4648"/>
        <seriesInfo name="DOI" value="10.17487/RFC4648"/>
      </reference>
      <reference anchor="RFC4954">
        <front>
          <title>SMTP Service Extension for Authentication</title>
          <author fullname="R. Siemborski" initials="R." role="editor" surname="Siemborski"/>
          <author fullname="A. Melnikov" initials="A." role="editor" surname="Melnikov"/>
          <date month="July" year="2007"/>
          <abstract>
            <t>This document defines a Simple Mail Transport Protocol (SMTP) extension whereby an SMTP client may indicate an authentication mechanism to the server, perform an authentication protocol exchange, and optionally negotiate a security layer for subsequent protocol interactions during this session. This extension includes a profile of the Simple Authentication and Security Layer (SASL) for SMTP.</t>
            <t>This document obsoletes RFC 2554. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4954"/>
        <seriesInfo name="DOI" value="10.17487/RFC4954"/>
      </reference>
    </references>
    <?line 502?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks goes to Emanuel Schorsch, Bruce Nan, Brandon Long, John R. Levine, and Murray S. Kucherawy for their knowledgeable feedback.  Many thanks also to Marc Bradshaw for his contributions to concepts of authenticating senders.</t>
    </section>
    <section anchor="parked-material">
      <name>Parked Material</name>
      <t>This contains parked material that used to be present in the main part of the draft.  In particular the ideas around Sender Receiver Co-Signing (SeRCi) and Relay Flow Identifier were moved here now that work is centered around Declare All Recipients and Affirm (DARA).</t>
      <section anchor="introduction-1">
        <name>Introduction</name>
        <t>Spammers utilize relays to obfuscate their identities and often to spoof some other identity with email receivers.  For example a spammer may exploit the shared tenancy vulnerability of SPF to spoof some identity as follows.  They find a relay that hosts many different enterprise customers who include the relay's IPs in their SPF policies.  The spammer then sends traffic through the relay assuming the identity of one of those customers i.e. it spoofs the MAIL FROM identity of the victim domain. While the SPF validation (if done) of the initial send by the spammer to the relay fails, a subsequent SPF validation when forwarded to some other victim receiver from the relay will pass SPF because the IPs are contained in the victim's SPF policy.  At some point, the receiver notices the spam via the relay and wants to apply anti-abuse counter measures.  With existing authentication methods, this policy would impact all mail flows through that relay, both innocent and malicious.  A better approach would be to selectively apply anti-abuse counter measures to the spammer's flow which is what this proposal enables.</t>
      </section>
      <section anchor="sender-receiver-co-signing-serci">
        <name>Sender Receiver Co-Signing (SeRCi)</name>
        <section anchor="concepts-1">
          <name>Concepts</name>
          <t>We can create a challenge response system using cryptographic signing orchestrated between the sender and receiver of an SMTP transaction.  The receiver challenges the sender to sign a mutually agreed upon value with their secret key, and can demonstrate a proof of that SMTP client-server relationship to 3rd parties.  One problem is that the receiver can't proactively issue the challenge, so as part of the EHLO, the server issues the challenge as an optional SMTP extension argument.  The sender can respond with the signature incorporating the shared value as a SMTP extension verb.   Another problem is preventing a malicious party from intercepting a message and trying to replicate the challenge.   We propose using a timestamp that can't be used in the future i.e. both parties make sure the timestamp reasonably represents the current time.  This cryptographic challenge needs to sign a hash that ties the signature back to the message, and for this proposal, we take the whole message hash from the ARC-message-signature.  In addition the destination domain is specified to reduce the risk for this signature to be intercepted and reused for other communications with other destination domains.</t>
          <t>Such a protocol can help authenticate to a receiver that some sender sent a message without risk of replay via some third party.  Sender Receiver Co-Signing (SeRCi pronounced Cersei as in the Game-of-Thrones character) could be used similarly to SPF <xref target="RFC7208"/> but without the risk of shared tenancy <eref target="https://www.7elements.co.uk/resources/blog/smtp-multipass/">attack</eref>, <eref target="https://arxiv.org/abs/2204.05122">IP reuse</eref> attack, and BPG <eref target="http://people.scs.carleton.ca/~kranakis/Papers/TR-05-07.pdf">vulnerabilities</eref>.  Moreover a third party can independently verify the result that some sender and receiver sent the given message at the given time.  This obviates the need to trust the ARC-Authentication-Results.  Later we use SeRCi metadata to describe the forwarding path of the message.</t>
          <t>This protocol signs the messages content at the exit to the ADMD to protect the SMTP transaction and yet be insensitive to message body or header modifications by the ADMD.  This is necessary to tolerate the changes that a legitimate forwarder may make such as a mailing list adding a footer or adding the name of the mailing list to the Subject header.  Other forwarders may alter the Content-Transfer-Encoding or delete attachments which this protocol also tolerates.  However malicious forwarders may add or replace malicious content to otherwise benign messages and this must be detected.  SeRCi identifies message body changes via different body hashes between the originator and the destination.  If a message is unchanged between the originator to destination, then malicious content is attributed to the originator.  If a message is changed and there is malicious content, then the originator and the mutating ADMDs are assigned responsibility.  Potentially the attribution can affect the receiver reputation given to the ADMDs.  The existing ARC protocol can do this, however it is a risky endeavor due to the potential for ARC replay and looseness around when ARC does its ARC-Message-Signature.</t>
          <section anchor="smtp-extension">
            <name>SMTP Extension</name>
            <t>The SMTP extension for SeRCi for generating the hash and then publishing it, is meant to prove that the sender and receiver collaborated to create the hash.  The protocol is advertised as a SMTP extension in the SMTP EHLO named SERCI with a timestamp argument.  That timestamp will be in UTC seconds.  If the timestamp is acceptable to the sender, then it SHOULD sign a tuple of url-safe base64  <xref target="RFC4648"/> message hash used in the outbound ARC-Message-Signature, destination domain as defined in the next paragraph, and timestamp.   (Subsequent base64 operations are assumed to be url-safe encoded base64 <xref target="RFC4648"/> to avoid quoted-string) That signature then SHOULD be base64 encoded and disclosed to the receiver as:</t>
            <artwork><![CDATA[
SERCI-SIGNATURE <sender domain> <selector> <header-body hash> \
<message-body hash> <signature> 
]]></artwork>
            <t>where signature is upon a hash of the formatted SeRCi result comment string to be presented by the receiver minus the signature.  Note there are no white spaces in the hashed string.  To create the canonical version whitespace they are removed.  Thus the signature is:</t>
            <artwork><![CDATA[
base64(signsender(sha256(<sender domain><selector><header hash>\
<message body hash><timestamp>)))
]]></artwork>
            <t>where domain corresponds to the sender's DKIM domain and selector that is used to find the DKIM public key DNS record.  It also discloses the header hash and body hash that is used to compute the message hash, and are present to allow detection of differences between ARC sets.   If the timestamp is not acceptable, the sender can report this as SERCI-SIGNATURE "out-of-time" and potentially the receiver will return a new timestamp.  The sender is allowed to do this once, and after that the receiver MUST report an error.  To prevent eavesdropping and potential spoofing, this protocol MUST be secured by SMTP TLS.  Upon obtaining the signature, the receiver MUST then validate the SeRCi signature.  It looks at the sender's ARC-Message-Signature hash to see if that is acceptable, meaning matches a hash the receiver generates of the message.  Next it checks if the timestamp is the same as provided to the sender, and if the destination domain is the same as the receiver's ARC-Seal "d=" domain. The SERCI-SIGNATURE command returns OK on success, otherwise some error code.</t>
            <t>An example SMTP transaction might look like:</t>
            <artwork><![CDATA[
EHLO sender.example.com
250-sender.example.com at your service, [1.2.3.4]
250-SIZE 157286400
...
250 SMTPUTF8
250 SERCI <timestamp>
MAIL FROM:<sender>`     
RCPT TO:<recipient>
DATA <message>
SERCI-SIGNATURE <sender domain> <selector> \
base64(<message body hash>) base64(<header hash>) \
base64(signsender(sha256(<sender domain><selector><header hash> \
<message body hash><timestamp>)))
]]></artwork>
          </section>
          <section anchor="protocol-awareness">
            <name>Protocol Awareness</name>
            <t>The sender discovers the receiver's support for this protocol by a DNS txt policy lookup upon the recipient email address domain.  Within this policy record MAY be a tag value indicating which SeRCi version number "v=" which MUST be set to "SERCI_1.0<tt>"</tt> when that ADMD indicates it supports SeRCi.  The lookup also discovers the normalized destination domain name, and that destination domain MUST match the ADMD ARC-Seal "d=" domain <xref target="RFC8617"/>  which enables tracing this domain <em>From</em> sender to receiver as described later.  The domain name is specified "serci=&lt;domain&gt;" in the DNS policy record.  Once discovered this domain is put in the sender's ARC-Seal as" serci=&lt;domain&gt;", which indicates support by the receiver for the SeRCi as well as identify the intended receiver domain.   If no such DNS txt policy record is found, then the receiver does not support the SeRCi protocol.  This is indicated in the DKIM-Signature or ARC-Seal by a SeRCi naive receiver tag/value of "snr=<tt>"</tt> and <em>From</em> header domain for path building described later.  Further the "snr=" tag indicates to subsequent SeRCi aware receivers that there was an intermediate naive forwarder.  If a domain advertises a SMTP SeRCi-SIGNATURE extension but does not publish a DNS txt policy, the sender MUST NOT call the SeRCi-SIGNATURE command as the receiver is declaring their intent to not participate in SeRCi.  The following is an example of a SeRCi aware policy:</t>
            <artwork><![CDATA[
v=SERCI_1.0; serci=example.com
]]></artwork>
          </section>
          <section anchor="receiver-verification-1">
            <name>Receiver Verification</name>
            <t>The SeRCi aware receiver will verify the signature after the SeRCi-SIGNATURE verb.  Assuming the receiver agrees with the signature (i.e. verifies it), the receiver will add to the ARC-Authentication-Result a new authentication-results method "serci" that has a <em>pass</em> result or <em>fail</em> result otherwise.  It also adds as authentication-results <xref target="RFC8601"/> properties, the values needed to contribute to the signature verification.  The <xref target="RFC8601"/> ptype is "smtp".  The sender domain property is "sd".  The selector is "s".  The message body hash is "bh" and the value is encoded in base64.  The header hash is "hh" and the value is encoded in base64.  The timestamp is "t".   This is illustrated as:</t>
            <artwork><![CDATA[
ARC-Authentication-Results i=1; serci=<pass|fail> (<comment>) 
     smtp.sd=<sender domain>
     smtp.s=<sender domain>
     smtp.bh=base64(<message body hash>)
     smtp.hh=base64(<header body hash>)
     smtp.t=<timestamp> 
     smtp.s=<selector>
     smtp.b=base64(<signature>)
]]></artwork>
          </section>
          <section anchor="definitions-3">
            <name>Definitions</name>
            <t>DNS TXT Policy tag/values</t>
            <ul spacing="normal">
              <li>"v=": Value of "SERCI_1.0" if the ADMD supports the SeRCi verification protocol.</li>
              <li>"serci=": Value of the receiver's ARC-Seal "d=" domain</li>
            </ul>
            <t>DKIM-Signature or ARC-Seal tag/values</t>
            <ul spacing="normal">
              <li>"serci=": Value of the receiver's ARC-Seal "d=" domain when the receiver is SeRCi capable found from the SeRCi DNS policy record.</li>
              <li>"snr=": Value of RFC822 recipient's domain name when the receiver is naive of SeRCi.</li>
            </ul>
            <t>ARC-Authentication-Results method and ptype-properties</t>
            <ul spacing="normal">
              <li>"serci=": Value of "pass" if sender/recipient signing validation succeeds, otherwise "fail".</li>
              <li>"smtp.sd=": sender domain</li>
              <li>"smtp.s=": selector</li>
              <li>"smtp.bh=": body hash in base64</li>
              <li>"smtp.hh=": body hash in base64</li>
              <li>"smtp.t=": timestamp in seconds from UTC</li>
              <li>"smtp.b=": signature in base64</li>
            </ul>
          </section>
        </section>
        <section anchor="header-example">
          <name>Header Example</name>
          <artwork><![CDATA[
ARC-Seal: i=1; d=destination.example.com
ARC-Authentication-Results: i=1; serci=pass (comment) 
     smtp.sd=originator.example.com smtp.s=selector 
     smtp.bh=message_body_hash_base64 smtp.t=1664511950175 
     smtp.s=signature_base64
ARC-Seal: i=1; d=originator.example.com; serci=destination.example.com
ARC-Authentication-Results: i=1
To: user@destination.example.com
]]></artwork>
        </section>
      </section>
      <section anchor="relay-flow-identifier">
        <name>Relay Flow Identifier</name>
        <t>This specification defines an identifier name for mail traversing a relay.  Typically the relay uses password authentication such as methods provided for in <xref target="RFC4954"/> but other methods MAY be possible.  This identifier MAY also be used for authenticated forwarding flows such as mailing lists and with other authentication methods such DKIM or SPF that verify who the sender is.  Because some traffic may have originated at the relay, which traditionally may be DKIM signed, this document provides a specification for DKIM <xref target="RFC6376"/>.  In other instances, the relay forwards traffic originated elsewhere, and these are typically not DKIM signed by the relay, so instead this document provides a specification using ARC <xref target="RFC8617"/>.</t>
        <t>Email Service Providers can delegate relay and forwarding services to enterprise customers, typically associated with some customer domain.  Spammers utilize these features either by acting as an enterprise customer or by hijacked accounts.  This specification proposes naming flows by enterprise customers to help the email receiver with categorization and application of anti-abuse counter measures.  As some mechanisms for mail forwarding such as mailing lists are often opaque after being sent and problematic for debug and abuse protection, this offers a naming scheme to help identify those mechanisms.</t>
        <section anchor="flow-identification-token">
          <name>Flow Identification Token</name>
          <t>The relaying service choosing to use this specification MUST categorize and name relayed traffic flows such that receivers can do anti-abuse analysis upon them if necessary.  In order for the identifier to be effective, it SHOULD be persistent in time and uniquely named across all flows through the relay.  As relayed traffic flow is often associated with a delegated domain, the first part of the identifier MUST either include a domain associated url-safe base64 <xref target="RFC4648"/> token, or be empty if no such delegated domain is present.  It MAY include a local part url-safe base64 <xref target="RFC4648"/> token after the domain token and separated by a period '.'.  This local part token can help describe the mail forwarding mechanism.  Combined the domain token and the optional local token form the relay flow identifier name.  If a message is associated with more than one flow, the relay SHOULD select the more specific flow based on local policy.  That name MUST NOT be any relay internal name though MAY be a secure cryptographic hash of such.  Also that name MUST NOT contain or be associated with any Personally Identifiable Information (PII).  The parser should ignore commas '+' whose use may be specified in the future.</t>
          <t>Example valid names:</t>
          <artwork><![CDATA[
0123456789
0123456789.abcdwxyz
.abcdwxyz
<empty>
]]></artwork>
        </section>
        <section anchor="arc-authentication-result-method">
          <name>ARC Authentication-Result Method</name>
          <t>This proposes a new ARC <xref target="RFC8617"/> ARC-Authentication-Result defined method <xref target="RFC8601"/> that identifies the presence of a relay flow and its property that identifies a relay flow identifier name.  The defined method is "relay", which when present, takes a single result value of "pass" that indicates the relay was authenticated.   The relay method will have a propspec tag-value with a policy ptype with a "rfid" property i.e "policy.rfid" that takes a single token value.  That token value consists of a domain url-safe base64 token and the optional local url-safe base64 token separated by a period.  The token parsers MUST ignore a reserved plus that may be further specified in the future.</t>
          <t>Example:</t>
          <artwork><![CDATA[
ARC-Authentication-Results: i=1; auth.example.com; 
     relay=pass (comments) policy.rfid=0123456789.abcdwxyz
]]></artwork>
        </section>
        <section anchor="spammer-relay-receiver">
          <name>Spammer ==&gt; Relay ==&gt; Receiver</name>
          <t>This demonstrates a spammer sending a message through a relay to receiver.</t>
          <artwork><![CDATA[
ARC-Seal: i=2; d=receiver.example.com
ARC-Authentication-Results: i=2; spf=pass; dara=pass; chain=pass
ARC-Seal: i=1; d=relay.forwarder.com;
    dara=destination.example.com
ARC-Authentication-Results: i=1; spf=neutral; relay=pass 
    policy.rfid=relay+flow+id
To: user@receiver.example.com
From: spoofed_user@victim.example.com
]]></artwork>
          <t>As with the above, a better approach might be to use the path based reputation system where the relay flow identifier is used to replace the domain in the path .  The spammy forwarding path is [spf-neutral, relay+flow+id, receiver.example.com].  Reputation analysis using this identifier with the relay flow identifier will be more specific than the domain based approach.</t>
        </section>
        <section anchor="spammer-gullible-forwarder-receiver">
          <name>Spammer ==&gt; Gullible Forwarder ==&gt; Receiver</name>
          <t>In this example the spammer does not participate in ARC or DARA/Chain protocol.  The spammer forwards a message through an permissive cloud provider gullible.forwarder.com to reach the inbox of some user at destination.example.com.  Spammer selects a victim domain that uses email services of gullible.forwarder.com such that they include the IPs of gullible.forwarder.com in their SPF policy.  While the spammer cannot SPF authenticate at inbound to gullible.forwarder.com, they can SPF authenticate at inbound to destination.example.com, hence the SPF upgrade attack.</t>
          <artwork><![CDATA[
ARC-Seal: i=2; d=receiver.example.com
ARC-Authentication-Results: i=2; spf=pass; dara=pass; chain=pass
ARC-Seal: i=1; d=gullible.example.com;
    dara=receiver.example.com
ARC-Authentication-Results: i=1; spf=neutral
To: user@guillible.example.com
From: spoofed_user@victim.example.com
]]></artwork>
          <t>While SPF and consequently DMARC is <em>pass</em> at the receiver, DARA/Chain verification result is <em>neutral</em> because the message was not originated at victim.example.com.  A DMARC evaluation would likely pick the SPF result.  Instead a better approach might be to use the path based reputation system.  The spammy forwarding path is [spf-neutral, gullible.example.com, receiver.example.com] which include evidence of the spammer.  Contrasts that to the path from a normal message delivery by victim.example.com using their cloud provider which either would look like [victim.example.com, receiver.example.com] or [victim.example.com, gullible.example.com, receiver.example.com].  Both would be distinct from the spammer forwarding flow in a path aware reputation system.</t>
          <t>The spammer may attempt to confuse the receiver by replaying ARC headers before forwarding to gullible.forwarder.com.  This would change the DARA/Chain verification result to <em>fail</em> and the constructed path very much [arc-fail, gullible.example.com, destination.example.com].  As gullible.forwarder.com is ARC and DARA aware, it would indicate that the replayed ARC headers would not pass ARC verification.</t>
        </section>
        <section anchor="originator-modifying-forwarder-receiver">
          <name>Originator ==&gt; Modifying Forwarder ==&gt; Receiver</name>
          <t>This demonstrates a spammy message where the forwarder modifies the message content, representing for example a mailing list adding a footer.</t>
          <artwork><![CDATA[
ARC-Seal: i=3; d=receiver.example.com
ARC-Authentication-Results: i=3; dara=pass; chain=neutral
ARC-Seal: i=2; d=intermediary.example.com;
    dara=destination.example.com
ARC-Authentication-Results: i=2; chain=pass
ARC-Seal: i=1; d=originator.example.com;
    dara=intermediary.example.com
ARC-Authentication-Results: i=1
To: user@receiver.example.com
]]></artwork>
          <t>While the global Chain verification result is <em>pass</em> and the message is considered DARA <em>authenticated</em>, the modified message body change is visible via the modified body algorithm.  The constructed path is [originator.example.com, modified-message-body, intermediary.example.com, receiver.example.com] where we embellish the path with the modification result.  The set of contributing domains associated with the spammy message is {originator.example.com, intermediary.example.com}.</t>
          <t>A different message may travel along the same forwarding path but is not modified by the forwarder.  That non-modifying forwarder constructed path is: [originator.example.com, <tt>intermediary.example.com</tt>, destination.example.com], and is distinct from above.  The set of contributing domains associated with the message content is now {originator.example.com}.</t>
        </section>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
+8UYkKx3QBAy5pmvrcg+cdUJ++Xjxv0AB2l0FhdwhvBdvS4N95BFy7NVtVoX
miZxa3BUcH8gDM0Ph92AWeI7WirdQI+XEBSysyXq7jOFKTCaXh06JjTQpPIl
f6hAGobPfpfb6fwUXNeLDXHipkRjaaDO2OzguTl/xEjHKN865gOkgEE8rA0s
6Z73EcH4SVPNW+JONvCpaU3kkBnfRIP6KTrviNGCuJ3ecIHEjVlQptjtMOT0
EFZZvYhX2GqEnALSNIv6OsQ1GeakIu3VGqi5jm823I2IepJgOvWdC9FuG+DB
Pt4E/4y6t/skTlIZjyUyXaeKOJnLdnZxtfxC1daUF3RXfBdvNFwcUzv5hMe3
VPwjYW+otJ0NE5Y4uLBmW6/rG6G+2jptGoKz8ewoUOuK7NwlVC5Ijthel74n
UoaiAgBGrmMnIfajULd98lA/CTgUlyd1yRnesKRlaGWfkn+uma6m3qRwenvB
acU3eVsVm4G1d9fWu1Zd7T93Xi7mvR+U7+LF0EXHvBfbYjrxjVOtKHeEhQOT
Olf0rlqvUKtwCHOZnIZQ8UUj5YILN5t8NYlIoxgtNUg4GHUq+xpeb/ISKlN7
W8P2JV6squ+8ahUCKZm+pSBNEVgcsy27di+KjyUsDAdD8owbvdD71wGFyVMJ
OdC0nQmEw/1ZmCAxl6q/pdkHTrYrCv5X1mg2mXa/3GYW9YNrsgYNrkWhbAGi
y6KadRbZuahZBXRFyn1rDN/a5Xx4IBbtczT65X9l6Li78AwV0Y7UxXtW2Wus
rMjKBe4uu/DoKTN3XxhTlQQcpDeAQ9TuGJ3b9GTXAgyBCJT9G0mREZsTZunO
k/IdDzRlgnweIP9lpJI7fi9WTLonsCAvFqWd4MO9EDvcAmtOjXUxtpqwI9lf
yaKi1sFEkpg7rLZUsZwKtbLdAmZkjiUz0rn7FejSeesgOnLqve7X1bpo69x2
m9AuZpbj7AArwgawDpgG49e2D7xeJ8xRTbmqOOoRsY6ZacyvVsgou4uLYpdy
RBbqUg+O+WYnmyl3eaIu+FkshBxMsSnhGVyObqHRhV88xaHzonx8hDyWIXwv
bU/yrOmJsR9tSWRC98qK5btoKcXiUcokM4c/suX7oqEP3G04zmAfCq1g3+U5
+1xkq2197gkzKInn3sEjfJ7VjkBh0jS5ZTlVaPaVvUM5e6BWaY9Hz2BvQcrh
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

-->

</rfc>
