<?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.31 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-chuang-replay-resistant-arc-06" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="Replay Resistant ARC">Replay Resistant Authenticated Receiver Chain</title>
    <seriesInfo name="Internet-Draft" value="draft-chuang-replay-resistant-arc-06"/>
    <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="May" day="09"/>
    <workgroup>Independent Stream</workgroup>
    <keyword>DKIM</keyword>
    <keyword>ARC</keyword>
    <keyword>Replay</keyword>
    <abstract>
      <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 two Replay Resistant cryptographic domain based protocols that leverage ARC (RFC8617).  The first technique discloses all SMTP recipients as signed RFC822 headers by the sender which allows a receiver to verify this.  The second technique defines a SMTP extension that allows both the sender and receiver to participate in signing the message signature.  It includes a path building technique that accurately defines the SMTP forwarding path of the message.  Both techniques permit a receiver to detect DKIM and ARC replay attacks and other attacks.  This specification also defines a relay flow identifier to prevent spammers from using relay forwarding.   We do this by having relays categorize their authenticated traffic flows and publish to receivers identifiers associated with those flows.  Receivers can use this identifier to help categorize traffic through the relay and use that identifier to apply fine-grain anti-abuse policies instead of on the entire traffic through the relay.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This protocol provides two different techniques to authenticate email by domain that is replay resistant. These two techniques are independent of each other with different methods, benefits and limitations in tackling replay.  Both are presented in case the limitations of one precludes using it.   It leverages the features of ARC to name ADMD in the email forwarding path and the intermediate results.   The first technique discloses all SMTP recipients as signed RFC822 headers by the sender which allows a receiver to verify this.  This is further divided into a base form and more comprehensive version.  The second technique defines a SMTP extension that allows both the sender and receiver to participate in signing the message signature, and can be built into a path of signing ADMDs called chaining.  The results of the two techniques 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.   These techniques depend on DKIM and ARC to indicate use of the protocol, and depend upon ARC to publish the results.</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-chuang-dkim-replay-problem/">draft-chuang-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.  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.  The 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>
      <t>The broader goals of these proposals 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-chuang-dkim-replay-problem/">draft-chuang-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.  This specification mandates that the ADMDs participating in either of these two protocols explicitly identify themselves with a DKIM signature or as an ARC set including and ARC seal.  Participants should use ARC set if they expect the message to be modified in the mail-flow otherwise a DKIM signature suffices.  Participants will then formulate an identified path of ADMD nodes from the originator ADMD to the receiving ADMD.  If the message exits the identified path into some naive, unaware ADMD the aware ADMD denotes this allowing for mitigations for this scenario.    The MSA ADMD i.e. the responsible originating sender may sign the message with DKIM or with ARC.  This protocol requires that the <em>From</em> header domain alignment with the email authentication method i.e.  MUST be the same as the DKIM "d=" domain or ARC-Seal "d= domain.  This ties the sender's identity to the cryptographic signer that claims that.  If the originator performs ARC signing, the ARC the ARC-Authentication-Results MUST be empty.  When the message is delivered to the inbox by the MDA ADMD at ARC set "i=N", 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-Seal and ARC-Message-Signatures has been delivered to the inbox.</t>
      <t>This protocol leverages DKIM and ARC for declaring protocol settings and protecting the integrity of the headers and message body, and ARC for propagating authentication results.  At the message originator, this uses DKIM DKIM 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.  The two protocols in this document updates ARC-Authentication-Results method status, properties and comments.  The specific tag/values and ARC-Authentication-Result methods will be defined in the specific protocol section.</t>
      <t>To prevent reuse of ARC headers from one message in another,  this protocol mandates generating the ARC-Message-Signature signature upon any outbound traversal from one ADMD to a different ADMD.  In addition there MAY be ARC signing 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" (sender's ARC set number) to "i=1" as well as the presence of all headers in the ARC set.  Failure of the ARC-Message-Signature verification from the immediate sender at "i=N" is treated differently than failures from prior senders at "i=N-1" or earlier with the intention that verifiers MAY potentially use the subsequent ARC set verification results hence differentiated.  If the receiver sees a verification failure from the immediate sender's ARC-Message-Signature as "hard" <em>fail</em>.  ARC-Seal verification failures from "i=N-1" to "i=1" are tolerated, meaning their failure does not indicate a failing ARC result.   ARC-Seal verification failures from "i=N" to "i=1" are treated also as "hard" <em>fail</em>.  The result of the verification is published in the Authentication-Result and the ARC-Authentication-Result with a tag "arc=".  Even if ARC verification fails, this specification asks the receiver to continue ARC generation and verification to provide forensics evidence for subsequent receivers via the 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="declare-all-recipients-and-affirm-dara">
      <name>Declare All Recipients and Affirm (DARA)</name>
      <section anchor="concepts">
        <name>Concepts</name>
        <t>This first email authentication protocol uses validating signed headers against the envelope headers.  It features a look 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>We create an email authentication protocol 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.  To: and Cc: recipients are appropriately declared.  Those headers MUST be signed by DKIM or ARC-Message-Signature.   For blind carbon copy, while a Bcc: header MAY 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.   At the origination, if no ARC headers are provided, the ARC set number is set to 0.</t>
          <artwork><![CDATA[
Forwarded-to: i=1; user@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 <em>Forwarded-to</em> MAY reuse the prior 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-Seal 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>
        </section>
        <section anchor="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 DKIM 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.  The following describes procedure for the look up, and the following paragraph describes the disclosure statement.  All ADMD supporting the DARA protocol MUST publish a DNS txt policy record.  The DARA aware sender MUST look up the receiver's policy record as described next or use other mechanisms to determine whether the receiver supports DARA.   A sender may also keep a list of receivers that support DARA.</t>
          <t>The sender discovers the receiver's support for this protocol by a DNS TXT policy lookup upon the recipient email address domain.  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 must start with DARA version t this policy record MAY be a tag value indicating which SeRCi version number "v=" which MUST be set to "DARA_1.0<tt>"</tt> when that ADMD indicates it supports DARA.  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 "dara=&lt;domain&gt;" in the DNS policy record.  Once discovered this domain is put in the sender's DKIM-Signature or ARC-Seal as"dara=&lt;domain&gt;", which indicates support by the receiver for the SeRCi as well as identify the intended receiver domain.   The following is an example of a DARA aware DNS policy record for example.org:</t>
          <artwork><![CDATA[
v=DARA_1.0; serci=example.com
]]></artwork>
          <t>If no such DNS txt policy record is found, then the receiver does not support the SeRCi protocol.  This is indicated in the ARC-Seal by a SeRCi naive receiver tag/value of "darn=<tt>"</tt> and <em>From</em> header domain for path building described later.  Further 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 MiTM has stripped off the sender's DARA policy.  If it detects a DARA declaration in the DNS policy, but not 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 any using the ARC set number to determine recency.  If not found then it looks for a DKIM-Signature.  When found, a DARA aware receiver verifies the integrity of 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 is being replayed.   As with other email authentication methods, the verifier is free to apply a locally defined policy against unauthenticated email.  After applying any local policy, it SHOULD treat validation success as <em>pass</em>, and validation failure as <em>fail</em>.  If the tag is "darn=" the receiver MAY choose to validate the recipients or not.  If a receiver validates the recipients, it 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 unware ADMDs that may cause innocent validation failures.  The domain value associated with "darn=" tag provided may help identify that intermediary ADMD when there are multiple recipients.  That domain may provide clues for email authentication.</t>
          <t>The receiver's verification process is to collect all the recipients in the <em>To</em>, <em>Cc</em> and <em>Forwarded-to</em> headers.  It verifies that they are signed appropriately in the sender's DKIM-Signature or ARC-Message-Signature, and if not fails the verification.  If so, 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.  It applies the "dara=" or "darn=" policy as described above.  The result of this verification MUST be published in the ARC-Authentication-Results as "dara" <xref target="RFC8601"/> method with a result of <em>pass</em> or <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 transaction between the sender and receiver occurred successfully or not using the message headers.  This procedure can later be used by the Chain verification algorithm.  First the verifier identifies the sender and receiver.  The sender may be identified by the policy declaration in the DKIM-Signature or ARC-Seal with a ARC set number preceding the receiver.  The receiver may be identified by the results found in the ARC-Authentication-Results with an ARC set number i=1 if the sender is a DKIM-Signature or incremented by one from the receiver's.  In both cases the integrity of the headers are checked.  If using a DKIM-Signature, validating the signature and "fh=" hash.  If an ARC set, then 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-Seal.  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>.</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 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; 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; 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; 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 throug Bcc to a forwarder that does not support DARA.</t>
          <t>First outbound (after ARC seal)</t>
          <artwork><![CDATA[
Forwarded-to: i=0; user@naive.example.com
DKIM-Signature: darn=naive.example.com; fh=...
]]></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.xample.com supports DARA.</t>
          <t>Final inbound (after ARC seal).</t>
          <artwork><![CDATA[
ARC-Seal: i=1; d=aware.example.com
ARC-Authentication-Results: i=1; dara=fail
     header.i=user@aware.example.com (rcpt.to 
     user@aware.example.com mismatches signed header);
Forwarded-to: i=0; user@naive.example.com
DKIM-Signature: darn=naive.example.com; fh=...
]]></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="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-1">
          <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-2">
          <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>
    <section anchor="chain-of-custody">
      <name>Chain of Custody</name>
      <t>The local results of DARA or SeRCi can be combined into a path of verified ADMD domains as defined by the ARC-Seal "d=" domains.  Path building can help detect if replay potentially occurred, that is a receiver MAY check that a message was forwarded from the originator to it with verification errors.   If there are Chain building verification errors, then it indicates either there is a protocol unaware forwarder, or that there is a malicious sender attempting to take the message and reinject it along a new path outside the intent of the originator.  A verifier can then check for some prior sender DARA declaration of "dara=" vs "darn=", or  SeRCi declaration of "snr=" vs "serci=" which clarifies definitively which of these aware or unaware scenarios applies.  At that point, 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.  In the Header Examples we describe a scenario where the spammer exploits some gullible but otherwise benign intermediate forwarder in an attempt to hide their tracks and path based reputation can be particularly helpful in uncovering them.</t>
      <section anchor="chain-building-algorithm">
        <name>Chain Building Algorithm</name>
        <t>The following defines an algorithm for path building using DARA or SeRCi identifiers.  We define the nodes of a path as the ARC-Seal "d=" identities and who form edges as domain identities 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 originator ARC set "i=1" or the DKIM-Signature.  The edge is defined as a pair of nodes (<em>d<sub>N</sub></em> , <em>d<sub>N-1</sub></em>) where the sender's "dara=" or "serci=" domain is <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=" or "serci=" result is missing, the verifier checks if there is instead a corresponding "darn=" or "snr=" tag at this or prior ARC set, then specifies an edge result of <em>neutral</em>, otherwise as <em>fail</em>.  Next the receiver's ARC-Set number MUST be "i=N-1" and if so then the ARC-Seal "d=" domain is defined as <em>d<sub>N-1</sub></em>.  This recursively is extended for (<em>d<sub>N-1</sub></em> , <em>d<sub>N-2</sub></em>) i.e. for ARC set "i=N-2" and so forth for each "i=n" to <em>d<sub>1</sub></em>.</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, SeRCi or 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 or SeRCi verification result.   If either of them <em>pass</em>, the local Chain result is <em>pass</em>.  Otherwise if any of them are <em>neutral</em> or SeRCi 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 this <eref target="https://datatracker.ietf.org/doc/draft-kucherawy-dkim-transform/">draft</eref> or this <eref target="https://datatracker.ietf.org/doc/draft-kucherawy-dkim-list-canon/">one</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 match the DARA recipients and verify SeRCi signature rather than taking the result from ARC-Authentication-Result and having to trust an externally generated result.   At the originator'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 "serci=" domain.  That domain defines <em>d<sub>1</sub></em> or <em>d<sub>0</sub></em> and the verifier looks up the SeRCi 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 was forwarded to 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.  If relay flow identifier is available for that ARC set, the relay flow identifier may be used instead of the domain per local policy.</t>
        <t>To compute the global Chain result, there is a walk 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 attempt to extend the domain list by looking at the prior ARC sets SPF result.  If that has a SPF <em>pass</em>, then the SPF domain is placed in that index, otherwise this inserts a failure indication with the cause e.g. "arc-fail" at that index.  If there are multiple failures, this chooses the most specific error as the cause e.g "serci-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 "snr=" or "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.  If so and the SPF result is a <em>pass</em>, this prepends the SPF domain and synthetic result into the respective vectors.  If there is a non-passing SPF result, this prepends a SPF status string such as "spf-neutral" to the domain vector and the status to status vector.   The global Chain result is published ARC-Authentication-Results as a "chain=".  result.  If the result is <em>pass</em>, then the message is considered to be <em>authenticated</em> by SeRCi, 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 will have their reputation per domain reputation of ADMDs negatively reduced.  Other ADMDs that are proven to not have contributed message content SHOULD NOT be affected.  A per domain reputation sensitive to message modification is useful when the path based reputation has not been established, and instead the per domain reputation can initialize the reputation of the sender.  For this we keep a reputation table indexed by domains.  We collect the domains that modify the messages in a forwarding path including the sender, and update their reputation collectively and equally based on the spam and phishing scores.  Alternatively the path identifier can be further specialized by adding an indicator whether a forwarding ADMD modified the message.  That differentiates path sensitive reputation by whether a forwarder modified the message or not.</t>
      </section>
      <section anchor="definitions-3">
        <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>
    <section anchor="chaining-header-examples">
      <name>Chaining Header Examples</name>
      <t>The following two examples illustrate working SeRCi/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 SeRCi.  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;
    serci=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;
    serci=destination.example.com
ARC-Authentication-Results: i=2; serci=pass; chain=pass
ARC-Seal: i=1; d=originator.example.com;
    serci=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; serci=pass; chain=pass
ARC-Seal: i=2; d=mailinglist.example.com;
    serci=destination.example.com
ARC-Authentication-Results: i=2; serci=pass; chain=pass
ARC-Seal: i=1; d=originator.example.com;
    serci=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 SeRCi <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 SeRCi/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; serci=pass; chain=neutral
ARC-Seal: i=2; d=intermediate.example.com;
    serci=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 SeRCi <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; serci=pass; chain=pass
ARC-Seal: i=1; d=originator.example.com;
    serci=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; serci=pass; chain=pass
ARC-Seal: i=1; d=originator.example.com;
    serci=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 "serci=" tag, causing a path discontinuity.  Due to the path discontinuity, the global Chain verification result is <em>fail</em> and the message is considered SeRCi <em>unauthenticated</em>.  The constructed path is [serci-fail].</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 SeRCi/Chain protocol.  The spammer forwards a message through an permissive cloud provider gullible.forwarder.com to reach the inbox of some user at desination.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; serci=pass; chain=pass
ARC-Seal: i=1; d=gullible.example.com;
    serci=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, SeRCi/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 SeRCi/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 SeRCi 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; serci=pass; chain=neutral
ARC-Seal: i=2; d=intermediary.example.com;
    serci=destination.example.com
ARC-Authentication-Results: i=2; chain=pass
ARC-Seal: i=1; d=originator.example.com;
    serci=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 SeRCi <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 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; serci=pass; chain=pass
ARC-Seal: i=1; d=relay.forwarder.com;
    serci=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>
    <section anchor="dmarc">
      <name>DMARC</name>
      <t>These protocols can act as authenticators for DMARC <xref target="RFC7489"/>.  As noted in the Chain of Provenance section, 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 either DARA or SeRCi has a global pass, this indicates a DMARC pass.  As noted in the prior example, when available SeRCi/Chain can provide more accurate authentication than SPF or DKIM, and it is up to local policy to determine preferencing or exclusion of results.</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 who the other recipients are with Bcc and mailing list recipients, for whom other recipients are hidden.  To prevent this information leakage, the message must be duplicated for each hidden recipient and uniquely 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">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="B. Long" initials="B." role="editor" surname="Long">
            <organization/>
          </author>
          <author fullname="S. Blank" initials="S." role="editor" surname="Blank">
            <organization/>
          </author>
          <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="E. Zwicky" initials="E." role="editor" surname="Zwicky">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen">
            <organization/>
          </author>
          <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <author fullname="A. Melnikov" initials="A." role="editor" surname="Melnikov">
            <organization/>
          </author>
          <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>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks goes to Emanuel Schorsch and 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>
  </back>
  <!-- ##markdown-source:
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
xPvQ0HRKam0sJZCijiCqepyPr8KafIGOSCpQQLJXsXuG9ltP+WOoqwo4Ue7t
tRKTlheBROTL/QcmlFeBiwwWMGLpr9GT1ye3bcARqYA6PLEoc2o5Io5Twyh0
mj59oJo9pxwHtwWr9n5Far/getynOuDWWTkt5c4Y/z6RmjNOOsafnDIkhdfw
RxddxT4J4ojXjXpriCQ7drgge9tEppbEaAsxXJg9BvnscpYcps1iSll7MVHN
en5hm9GjU4IkvYDHKwkvw9FiForkGjFhc/ZFYfbyScLWsAUFOEMA1G32Lust
CSxyzI/O2+DtdpfwIciAN4qkskqZKva9EEzOqKVCqiatm0ujd+ZuwG2sqAa4
EiLc2oeJEY9lD/q1XCVKYXUwC2oCtqUhxujY4Xajuwp+w4QQ3XJyEY5BmWK8
qRDGkZ9lCYI5PReYJuO4xA3RhUThu2DzedmF3mFsVmWpUoZKcuS74lAY0RBw
ndHyk1RK8vtc+4iTNTqEX1SrgyxXvSK2xUByfHWBxjhfYWOHdMRG4sOAqq87
SbThNBFn7Z4sPYKAcjzFD+GRww76X2Wqx9nG21ZL1jU16LDdLKdym4fJmJiy
I8oCqCTwv0yM3cbvwxSk28cfAbaTuf4UiTNmXpFl1OddvjFJJPlBCl5EkdsL
qg1G3SwaE9AbNKct/k+1I++3aNL3nLlxsxCOthHeRhkX1tSXg0aEO70uRUNW
rmTKOVhgZqB3fVgdQf36QGZb3c/ayuBRXZDmMwGC1n04tH1x4CLfO6fvbQB1
VjsBcG+kG+mNoWxESmPSLkoWi5vgyOdCgJy98NG8zybIS/urjXSvMPuHnV3c
US2zRkNud1x7X0ujF9ScB3vtQ8ANb8eQBKVk0eLHe7Y02tLJ93CSVgEYKLDE
+vEYA8pi3CTp4JgyLjQiRdiWupnv2Qq38VJFSkjEwy4YueIIYmmU62Rv9zS3
QGGVlgLOwReG/S9lbl1gC4oPwflgzZIo6NVHcc7NiufE8jm3G62yjzFCvsmX
jg+CbU3WqeUbdRIvChjLGYe1pEeWZNDKCnYNTk2WIE+UfiBK6XxnbbEqVWoA
gDpKPToghe2NzB0szLT0QbqWtxHwyJ15vht+wVqExWvrHMmRqTi3sFgcM2Ml
GcJpR8erxBkNzIYK+iTlDaOaVpYj81YKiznfpJaiZ+kcaKYQS3HaDqnjZvCF
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

-->

</rfc>
