<?xml version="1.0" encoding="US-ASCII"?>
<?xml-stylesheet type='text/xsl'
                href='http://xml.resource.org/authoring/rfc2629.xslt' ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc compact="yes" ?>
<?rfc subcompact="yes" ?>
<?rfc toc="yes" ?>
<?rfc tocindent="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc iprnotified="yes" ?>
<?rfc autobreaks="no"?>
<?rfc strict="yes" ?>

<rfc category="std" docName="draft-otis-dkim-tpa-ssp-02" ipr="full3978">
  <front>
    <title abbrev="TPA-SSP">DKIM Third-Party Authorization for Sender Signer Practices</title>

    <author fullname="Douglas Otis" initials="D." surname="Otis">
      <organization>Trend Micro, NSSG</organization>
      <address>
        <postal>
          <street>10101 N. De Anza Blvd</street>
          <city>Cupertino</city>
          <region>CA</region>
          <code>95014</code>
          <country>USA</country>
        </postal>
        <phone>+1.408.257-1500</phone>
        <email>doug_otis@trendmicro.com</email>
      </address>
    </author>

    <date month="November" year="2007"/>
    <area>Internet Area</area>
    <workgroup>DKIM Working Group</workgroup>
    <keyword>TPA-SSP</keyword>
    <keyword>Draft</keyword>

    <abstract>
      <t>TPA-SSP (DKIM Third-Party Authorization for Sender Signing Practices) is a DNS-based label
        prefix mechanism for authorizing Third-Party domains. This mechanism allows a first-party
        domain to autonomously authorize a range of third-party domains in a scalable, individual
        DNS transaction. This authorization can extend the scope of DKIM-SSP policy assertions and
        eliminate more difficult to administer mechanisms. Alternatives for facilitating third-party
        authorizations currently necessitate coordination between two domains by setting up
        selector/key DNS records, DNS zone delegations, or the regular exchange of public/private
        keys.</t>

      <t>Checking Sender Signing Practices occurs when a From header email-address is not within the
        domain of a valid DKIM signature. When a Third-Party signature is found, TPA-SSP offers an
        efficient means for the email address domain within the From header to specifically
        authorize other third-party signing domains. The scope of the authorization may also assert
        identity authentication for Sender and Resent-* headers for email-addresses within the
        signing domain. Identity authentication within the From header domain may be asserted by the
        scope of the authorization, even when signed by a Third-Party domain. In addition, the
        RFC2821.MailFrom domain can authorize domains for controlling DSNs.<vspace blankLines="1"
      /></t>
    </abstract>

    <note title="Requirements Language">
      <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>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>This document describes how any email-address domain publishing SSP records defined in
          <xref target="I-D.ietf-dkim-ssp"/> can also specifically autonomously authorize <xref
          target="RFC4871"/> signing by third-party domains. Recommended or suggested actions for a
        DKIM receiver are not included, and are considered "out-of-scope" for this document. The
        receiver is assumed to better understand their environment's impact upon the performance of
        DKIM signatures and how results are utilized within their domain.</t>

      <t>TPA-SSP records permit signing domains that are not at or above the From header
        email-address domain to comply with Sender Signing Practices. TPA-SSP authorized domains are
        to be considered equivalent to the authorizing domain for applying Sender Signing Practices.
        This mechanism eliminates a complex coordination of selector/key DNS records, DNS
        delegation, or exchanges of public/private keys between two domains otherwise required to
        facilitate desired authorizations.</t>

      <t>Trust is an essential requisite before DKIM signature header field's 'i=' semantics or the
        TPA-SSP "-i" suffix scope assertions provide valuable advisory information. Advisory
        information regarding identity authentication enables safer message annotations that ensure
        trusted identities are recognized. TPA-SSP assertions also convey which third-party domains
        are authoritative for asserting which identifiers are to be considered to have been
        authenticated. This information is essential for the proper recognition of trusted
        identities, as well as noting when a message source may require added scrutiny.</t>
    </section>
    <section title="Envelope Authorizations">
      <t>DKIM is fully independent of the SMTP Client and the <xref target="RFC2821"/>.MailFrom
        email-address. Allowing the <xref target="RFC2821"/>.MailFrom email-address to authorize
        signing domains and assert signing practices may prevent Delivery Status Notifications
        (DSNs) from being sent when the signing domain is not authorized and a "strict" TPA-SSP
        practice is being asserted. Conversely, this may also ensure DSNs are not dropped when the
        signing domain does happen to be authorized or is not precluded. The application of TPA-SSP
        at the MailFrom represents an entirely optional strategy which may or may not prove either
        effective or practical. The MailFrom scope is offered only for experimentation.<vspace
          blankLines="100"/></t>
    </section>

    <section title="Evaluating Signing Domains">
      <t>Regulatory agencies are unable to control Internet abuse by curtailing access. Unlike IPv4
        addresses, there is virtually no limit on the number of domain-names available. Registrar
        pricing of domain-names need to remain uniform. Otherwise, fees based upon the intrinsic
        value of a name could cause name holders to become extortion targets. High initial costs for
        domain-names are also unlikely to represent a deterrent, largely due to high levels of
        payment fraud. Driven by market forces, registrars offer free sampling of domain names
        (domain tasting) to create some revenue from a few purchased domains. However, this
        unfortunate practice also resulted in a daily churn of millions of domain names.
        Distributing domain name reputation to curb abuse has been made more expensive, slower, and
        less effective as a result.</t>

      <t>In addition, DKIM can not directly identify the domain transmitting the message, and can
        not prevent abusive message replay. Abusive message replay may prove indistinguishable from
        bulk mailings of various types. Since abuse may not be controlled by the signing domain,
        message acceptance will likely remain largely dependent upon the reputation of the SMTP
        client's IP address. Abuse reporting facilitated by DKIM signatures should therefore first
        select signing domains that correspond with domains administering the SMTP Client publicly
        transmitting the message.</t>

      <t>A domain evaluation process will confront many domains with unknown reputations. New
        domains are constantly being introduced where registrars are unable to prevent bad actors
        from controlling either a new or previously held domain name. When the receiver seeks to
        protect a DKIM verification process with a preliminary filter, acquiring SSP records or DKIM
        keys may inadvertently leak valuable information that benefits bad actors. Processing all
        DKIM signatures may also inundate a receiver's limited resources. As a result, validating
        DKIM signatures and obtaining TPA-SSP resource records may need to be limited to known
        trustworthy domains. Signatures authorized by domains with good reputations provide a means
        to safely extend limited verification resources.</t>
    </section>

    <section title="Authorization Scope">
      <t>An Authorization effort without TPA-SSP will likely involve sharing details between the
        email provider, the domain owner, and the DNS provider. Since there are many ways in which
        authorizations can be accomplished, it is unlikely there will be consistent or standardized
        formats for exchanging the necessary information. In addition, in the case of security
        breaches, the wrong party might be held accountable for content never seen nor logged by
        them. The TPA-SSP authorization scheme clarifies who signed the message and on who's behalf,
        while permitting greater control by the authorizing domain.</t>

      <t>TPA-SSP records replace domain delegation, selector/key record mirroring, or key exchanges.
        A significant amount of detail is associated with selector/key records. These details
        include user limitations, suitable services, key resource record's Time-To-Live, revocation
        and update procedures, and whether the DKIM Signature header field's 'i=' semantics are
        applied to indicate authenticated email-addresses. The TPA-SSP records allow authorizing
        domains the ability to limit the scope of the authorizations and authentications.</t>

      <t>When a signing domain differs from that of a domain within the From header email-address,
        TPA-SSP records can safely extend compliance with SSP where actions of only the
        email-address domain are required. In addition, just as a DKIM signature can assert an
        email-address has been authenticated via the "i" construct, a signing domain that only signs
        authenticated email-addresses can be denoted by the "-i" suffix on the scope assertion
        within the corresponding TPA-SSP record. When obtained using the "tpa-label", a returned
        scope with an "-i" suffix indicates that the domain plays the role of assuring that
        email-addresses identities have been authenticated. This assertion remains valid even when
        signing domains and the From email-address domains differ.</t>

      <t>Without the "-i" suffix on the scope assertion within the TPA-SSP record, the domain is
        designated as providing only acceptable signatures. The same would be true for a DKIM
        signature lacking the "i" parameter. While offering only valid signatures will not ensure
        all possible spoofing is prevented, messages signed in this manner should also not receive
        annotations indicating authenticated identities either.</t>

      <t>Choosing not to implement identity authentication may represent an economical means to
        administer domains employing DKIM signatures. Authorizing domains to play the role of only
        providing acceptable signatures may be suitable for non-critical messages, where the goal
        might be to improve delivery acceptance.</t>
    </section>

    <section title="TPA-SSP Assertions">
      <t>Syntax descriptions use the form described in Augmented BNF for Syntax Specifications <xref
          target="RFC4234"/>. The "base32" function is defined in <xref target="RFC4648"/> and the
        "sha-1" hash function is defined in <xref target="FIPS.180-2.2002"/>. The TPA-SSP records
        follow the tag-value syntax described in section 4.3 of <xref target="I-D.ietf-dkim-ssp"/>
        and section 3.2 of <xref target="RFC4871"/>. Unrecognized tags and tags with illegal values
        MUST be ignored. In the ABNF below, the FWS token is inherited from <xref target="RFC2822"/>
        with the exclusion of obs-FWS. The ALPHA and DIGIT tokens are imported from <xref
          target="RFC4234"/>. The function "lcase" converts upper-case ALPHA characters to
        lower-case. The function "sha-1" returns a hash in base32 base-char set. The terminating
        period is not included in domain-name conversions. The tags used in TPA-SSP records are as
        follows:</t>
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
  asterisk = %x2A ; "*"
  dash = %x2D ; "-"
  dot = %x2E ; "."
  underscore = %x5F ; "_"
  ANY = asterisk dot ; "*."
  dns-char = ALPHA / DIGIT / dash
  id-prefix = ALPHA / DIGIT
  label = id-prefix [*61dns-char id-prefix]
  sldn = label dot label
  base-char = (dns-char / underscore)
  domain = *(label dot) sldn
         ; not to exceed 238 characters
         ; excluding "_ssp._domainkey."
  tpa-label = base32( sha-1( lcase(signing-domain))) 
            ; 32 base-char characters
    </artwork>
      </figure>
      <texttable title="TPA-SSP Tags">
        <ttcol align="center">Tag</ttcol>
        <ttcol align="left">Function</ttcol>
        <c>scope=</c>
        <c>Authorization Scope List (as-list)</c>
        <!--  -->
        <c>tpa=</c>
        <c>Authorized Domains List (ad-list)</c>
        <!--  -->
      </texttable>

      <texttable title="TPA Scope Values">
        <ttcol align="left" width="10%">Scope Values</ttcol>
        <ttcol align="left">Field or Parameter</ttcol>
        <ttcol align="left" width="20%">Identity Authenticated</ttcol>
        <c>F</c>
        <c>From Originator Header</c>
        <c>No</c>
        <!--  -->
        <c>F-i</c>
        <c>From Originator Header</c>
        <c>Yes</c>
        <!--  -->
        <c>O</c>
        <c>Other than From Originator Headers</c>
        <c>No</c>
        <!--  -->
        <c>O-i</c>
        <c>Other than From Originator Headers</c>
        <c>Yes</c>
        <!--  -->
        <c>M</c>
        <c>MailFrom</c>
        <c>No</c>
        <!--  -->
        <c>M-i</c>
        <c>MailFrom</c>
        <c>Yes</c>
        <!--  -->
        <c>NO-TPA</c>
        <c>All</c>
        <c>No</c>
        <!--  -->
      </texttable>

      <t>The receiver obtains the TPA-SSP email-address domain practices using a DNS query for an IN
        class TXT resource record. The tpa-label is created by processing the domain found within
        the signature's "d=" parameter (does not include the trailing period). This tpa-label is
        then placed below the "._ssp.domainkey.&lt;email-address domain&gt;" and used to
        access the TPA-SSP TXT records. Character-strings contained within the TXT resource record
        are concatenated into forming a single string. A character-string is a single length octet
        followed by that number of characters treated as binary information. A TPA-SSP record may be
        located at these domains:<list>
          <t/>
          <t>&lt;tpa-label&gt;._ssp._domainkey.&lt;email-address domain&gt;.</t>
        </list>
        <vspace blankLines="1"/></t>
    </section>

    <section title="Scope">
      <t>scope= Authorization Scope List (Optional). This tag defines a list of scoping assertions
        for various email-address locations within the message.</t>
      <t>
        <list>
          <t>scope = "F" / "F-i" / "O" / "O-i" / "M" / "M-i" / "NO-TPA"</t>
          <t>as-list = "scope" [FWS] "=" [FWS] scope 0*([FWS] ":" [FWS] scope)</t>
        </list>
      </t>

      <section title="From Originator Header Field">
        <t>The "F" or "F-i" scope asserts that messages carrying the email-address domain within the
          From header field are authorized to be signed by the tpa listed domain. When the "-i"
          suffix is included, it can be assumed identities for the scoped header have been
            authenticated.<vspace blankLines="1"/></t>
      </section>

      <section title="MailFrom Parameter">
        <t>This "M" or "M-i" scope asserts that messages carrying the email-address domain within
          the MailFrom parameter are authorized to be signed by the authorized domain. When the "-i"
          suffix is included, it can be assumed identities for the MailFrom have been
            authenticated.<vspace blankLines="1"/></t>
      </section>

      <section title="Other than From Originating Header Fields">
        <t>The "O" or "O-i" scope asserts that messages carrying the email-address domain within the
          Sender or Resent-* header fields are authorized to be signed by the authorized domain.
          When the "-i" suffix is included, it can be assumed identities for the scoped header have
          been authenticated.<vspace blankLines="1"/></t>
      </section>
      <section title="NO-TPA">
        <t>The "NO-TPA" scope asserts that domain does not publish TPA-SSP records.<vspace
            blankLines="1"/></t>
      </section>
    </section>

    <section title="Authorized Signing Domain">
      <t>tpa= Authorized Signing Domain list (Optional). This tag repeats all or portions of the
        domain encoded within the tpa-label. This option ensures proper handling of possible hash
        collisions. When a domain is prefixed with the "*." ANY label, then all subdomains of this
        domain are to be considered included within the list.</t>
      <t>
        <list>
          <t>ad = [ANY] domain</t>
          <t>ad-list = "tpa" [FWS] "=" [FWS] ad 0*([FWS] ":" [FWS] ad)</t>
          <t>
            <vspace blankLines="1"/>
          </t>
        </list>
      </t>
    </section>
    <section title="Modification to Sender Signing Practices Check Procedures">
      <t>Section 4.4 step 9 is modified. Step 9 becomes:</t>
      <t>
        <list>
          <t>When one or more valid Third-Party Signatures are present in the message, and a scope
            tag exists, and the scope tag does not contain "NO-TPA" within the SSP record,
              then:<list style="symbols">

              <t>When the "dkim" tag is "strict" and a TPA-SSP record within the From header domain
                has a scope tag of "F" or "F-i", then the message is to be considered signed by an
                Originator Acceptable Third-Party Signature. When the scope tag within the TPA-SSP
                record is "F-i", the From email-address is to be considered authenticated by the
                Third-Party Domain.</t>

              <t>When the "dkim" tag is "all" and a TPA-SSP record within the From header domain has
                a scope tag of "O" or "O-i" and the email-address domain within the Sender, or
                Resent-* headers are within the signing domain, then the message is considered
                signed with an Originator Acceptable Third-Party Signature. When the scope tag
                within the TPA-SSP record is "O-i", then email-addresses within the third-party
                signing domain are considered to have been authenticated when included within the
                signature.</t>

              <t>When the "dkim" tag is "all" and no TPA-SSP record is found or published, and a
                valid Third-party signature is acceptable to the verifier, then the message is
                considered signed by a Verifier Acceptable Third-Party Signature.</t>

            </list>If an acceptable valid Third-Party Signature has been determined, the message is
            not Suspicious and the algorithm terminates.</t>
        </list>
      </t>
    </section>
    <section anchor="IANA" title="IANA Considerations">
      <t>Unless a registry is established for SSP record tags, there are no IANA requirements in
        this draft.</t>
      <t>Note to RFC Editor: this section may be removed on publication as an RFC and no request is
        desired or registration is not considered practical.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This draft extends signing policies related to <xref target="RFC4871"/>. Security
        considerations in the Sender Signing Practices are mostly related to attempts on the part of
        malicious senders to represent themselves as other senders, often in an attempt to defraud
        either the recipient or the Alleged Originator. Additional security considerations regarding
        Sender Signing Practices may be found in the DKIM threat analysis <xref target="RFC4686"/>.</t>
      <t>The use of the SHA-1 hash algorithm does not represent a security concern. The hash simply
        ensures a deterministic domain-name size is achieved. Unexpected collisions can be detected
        and handled by using the extended TPA-SSP "tpa=" option.<vspace blankLines="100"/></t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Frank Ellermann.<vspace blankLines="5"/></t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.I-D.ietf-dkim-ssp" ?>
      <?rfc include="reference.RFC.2119" ?>
      <?rfc include="reference.RFC.2821" ?>
      <?rfc include="reference.RFC.2822" ?>
      <?rfc include="reference.RFC.4234" ?>
      <?rfc include="reference.RFC.4648" ?>
      <?rfc include="reference.RFC.4871" ?>
      <?rfc include="reference.FIPS.180-2.2002" ?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.4686" ?>
    </references>

    <section title="Change Log">
      <t>Changes to 00 version:<list style="symbols">
          <t>Removed the term policy.</t>
          <t>Corrected _domainkey vs _domainkeys label.</t>
          <t>Corrected appendix SSP a= vs d= tag.</t>
          <t>Added additional scopes in appendix example.</t>
        </list></t>
      <t>Changes to 01 version:<list style="symbols">
          <t>Modified abstract and introduction.</t>
          <t>Removed The Signing Domain Section.</t>
          <t>Added Evaluating Signing Domains section.</t>
          <t>Added Authorized Scope section.</t>
          <t>Changed SSP-TPA "s=" tag from to "scope=".</t>
          <t>Expanded scope to include an identity ("-i") instead of "strict".</t>
          <t>Changed SSP-TPA "a=" tag from to "tpa=".</t>
          <t>Added Modification to Sender Signing Practices Check Procedures.</t>
        </list>
      </t>
    </section>

    <section title="DNS Example of TPA-SSP From record" toc="default">
      <figure title="">
        <artwork name="" type="" height="" width="" xml:space="preserve">
####          
# Policies for Example.com email domain using both example.com, isp.com,
# and example.com.isp.com as signing domains.
####

#### 2822.From authorization for TP domains ####
                                _ssp._domainkey.example.com.  IN TXT 
    "dkim=strict; scope=F-i:O:M;"

## "isp.com" tpa-label ##
hgssd3snmi6635j5743vdjhajkmpmfif._ssp._domainkey.example.com.  IN TXT
    "dkim=all; tpa=isp.com; scope=F;"

#### 2822.From/Originator/MailFrom authorization for TP domains ####

## "example.com.isp.com" tpa-label ##
zzhffxwcfi7rpddqdigyhpbtaa7vwitu._ssp._domainkey.example.com.  IN TXT
    "dkim=strict; tpa=*.isp.com; scope=F-i:O:M; "
        </artwork>
      </figure>
      <t>
        <vspace blankLines="100"/>
      </t>
    </section>
  </back>
</rfc>
