<?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-00" 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>1737 North First Street, Suite 680</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95112</code>
          <country>USA</country>
        </postal>
        <phone>+1.408.453.6277</phone>
        <email>doug_otis@trendmicro.com</email>
      </address>
    </author>

    <date month="June" 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 to provide a means to authorize Third-Party signing domains in a scalable
        fashion. This mechanism eliminates complex coordination of selector/key DNS records, DNS
        zone delegation, or exchanges of public/private keys otherwise required to facilitate
        desired authorizations. Checking Sender Signing Practices occurs in common cases where an
        originating email-address of concern is not within a DKIM signing domain. In which case, the
        email-address has not been signed, or is signed by a Third-Party domain.<vspace
          blankLines="100"/></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 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 DKIM
        signatures are utilized within their domain.</t>

      <t>There are many uncertainties in respect to the actual usage of the DKIM protocol. These
        uncertainties exist due to:<list style="symbols">
          <t>Intentionally vague DKIM protocol semantics</t>
          <t>Full adoption of DKIM is not implied</t>
          <t>Limited semantics for some signing domains</t>
          <t>Optional validity of email-addresses</t>
          <t>No assumed signature ordering or signing roles</t>
          <t>No direct association with the SMTP Client</t>
        </list>
      </t>

      <t>The purpose of the TPA-SSP is to permit domains that are not at or above the email-address
        domain to comply with Sender Signing Practices. TPA-SSP authorized domains are to be
        considered equivalent to a signing domain at or above the email-address with respect to the
        application of Sender Signing Practices. This mechanism eliminates complex coordination of
        selector/key DNS records, DNS delegation, or exchange of public/private keys otherwise
        required to facilitate the desired authorization.</t>

      <t>Rather than traversing domains searching for possible SSP records, the validity of a
        non-existent Policy record can be confirmed by the presence of DNS records needed to
        discover SMTP servers. This implies policy records must be coincident with all such DNS
        discovery records. For this reason, use of A records for discovering SMTP servers should be
        deprecated.</t>

      <t>A message signed with DKIM, whether or not there is also a policy that can be referenced,
        does not indicate whether a message is from a good or bad actor. However, DKIM signatures
        will allow a recipient's trust to be strengthened. Good actors establish trust. Bad actors
        do not.</t>

      <t>Trust is an essential requisite before DKIM signature header field's 'i=' semantics or the
        TPA-SSP assertions provide valuable advisory information. This advisory information permits
        the safer application of message annotations ensuring trusted identities are properly
        recognized. Policy assertions convey which domains are authoritative and assure which
        identifiers might be considered valid. This information is essential for proper recognition
        of email-addresses 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 designate
        signing domains and assert signing practices may prevent Delivery Status Notifications
        (DSNs) from being sent when the signing domain is not authorized. Conversely, this may also
        ensure DSNs are not dropped when the signing domain is authorized. Application at the
        MailFrom represents an entirely optional strategy that may or may not prove either effective
        or practical. This is offered only for experimentation.</t>
    </section>

    <section title="The Signing Domain">
      <t>Unlike IPv4 addresses, there is virtually no limit on the number of domain-names available.
        Registrar pricing of domain-names should remain uniform, otherwise higher fees based upon
        intrinsic value established by the owners could cause these owners to become extortion
        targets. Initial costs for domain-names are also unlikely to represent a deterrent due to
        high levels of fraud. While domain tasting allows registrars to avoid retracting a flood of
        fraudulent credit card transactions, this strategy also results in a daily churn of millions
        of domains being added and then withdrawn.</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. As a result, message acceptance will likely remain based
        primarily upon the IP address of the SMTP Client. Abuse reporting facilitated by a DKIM
        signature should therefore select those signing domains that correspond with the domain
        administering the SMTP Client that is publicly transmitting the message. TPA-SSP provides a
        simple means to retain a relationship between the SMTP Client and the DKIM signing domain.</t>

      <t>When signing domains differ from that of the domain within the originating email-address,
        TPA-SSP offers a solution where only the actions of the email-address domain is required to
        retain email-address policy compliance. In addition, just as a DKIM signature can assert an
        email-address is valid via the "i" construct, a signing domain that only signs validated
        email-addresses is denoted by the "strict" assertion within the TPA-SSP record. When coupled
        with the TPA prefix, the "strict" assertion indicates that the domain plays the role of
        assuring that email-addresses are valid. This assertion remains valid even when signing
        domains and the email-address domains differ.</t>

      <t>Without the "strict" assertion within the TPA-SSP record, the domain is designated as
        providing only valid signatures in the same manner as would a DKIM signature lacking the "i"
        construct. While this latter role of only offering valid signatures will not ensure all
        possible spoofing is prevented, these messages should not receive annotations indicating
        such assurances either. This represents an economical alternative enabling large scale
        autonomous administration of email domains. Authorizing domains to play the role of only
        providing valid signatures may be suitable for non-critical messages, where the goal could
        be to only improve delivery acceptance.</t>

      <t>Without the use of TPA-SSP, when the originating email-address domain differs from that of
        a provider's domain, additional steps must be taken by the third-party provider. DNS
        delegation, DNS selector/key record mirroring, or key exchanges are required to permit the
        DKIM signing domains to be at or above the email-address domain. This means the provider
        needs to sign with the customer's private key, or have their customer replicate the
        provider's public selector/key information within their DNS, or have their customers
        delegate a lower portion of their DNS zone to the provider. In addition, a significant
        amount of detail is associated with selector/key records that might be then controlled by
        the provider, such as 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 should be applied to indicate valid email-addresses.</t>

      <t>The DNS delegation effort will likely involve sharing details between the email provider,
        the domain owner, and the DNS provider. As there are many ways in which this could be
        accomplished, it is also unlikely there will be consistent or standardized formats for
        exchanging this information. In addition, when there are any security breaches, the wrong
        party might be held accountable for message content never seen or logged by them. An
        authorization scheme clarifies who signed the message and on who's behalf.</t>

      <t>Protections offered by DKIM are largely related to the better recognition of prior
        correspondents, and improved identification of initial sources when instances of abuse are
        reported. While TPA-SSP may allow receivers to detect and reject messages that appear
        non-compliant, the overall cases where this might happen is likely to represent a fairly
        small portion of overall messages. When the receiver seeks to protect the DKIM verification
        process with a preliminary message filter, even acquiring TPA-SSP policy records or DKIM
        keys may inadvertently leak valuable information benefiting abusive senders. The validation
        of DKIM and the obtaining of TPA-SSP resource records may consequently become limited to
        known trustworthy domains.</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"/>. Sender Signing
        Practices records follow the tag-value syntax described in section 3.2 of <xref
          target="RFC4871"/>. Tags used in SSP records are as follows. 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 terminating period is not included in domain-name
          conversions.<vspace blankLines="1"/>
        <list style="empty">
          <t>asterisk = %x2A ; "*"</t>
          <t>hyphen = %x2D ; "-"</t>
          <t>period = %x2E ; "."</t>
          <t>colon = %x3A ; ":"</t>
          <t>semicolon = %x3B ; ";"</t>
          <t>equals = %x3D ; "="<vspace blankLines="1"/></t>

          <t>ldh = ALPHA / DIGIT / hyphen ;</t>
          <t>let-dig = ALPHA | DIGIT ;</t>
          <t>subdomain = let-dig [*61(ldh) let-dig] ;</t>
          <t>domain = subdomain 1*(period subdomain) ;<vspace blankLines="1"/></t>

          <t>ANY = asterisk period ; "*."</t>
          <t>FWS = ([*WSP CRLF] 1*WSP) ; <vspace blankLines="100"/></t>

          <t>tag-list = tag-spec 0*( ";" tag-spec ) [ ";" ]</t>
          <t>tag-spec = [FWS] tag-name [FWS] "=" [FWS] tag-value [FWS]</t>
          <t>tag-name = ALPHA 0*ALNUMPUNC</t>
          <t>tag-value = [ tval 0*( 1*(WSP / FWS) tval ) ]</t>
          <t>; WSP and FWS prohibited at beginning and end</t>
          <t>tval = 1*VALCHAR</t>
          <t>VALCHAR = %x21-3A / %x3C-7E</t>
          <t>; EXCLAMATION to TILDE except SEMICOLON</t>
          <t>ALNUMPUNC = ALPHA / DIGIT / "_"</t>

          <t>From = "F" ; %x46 <xref target="RFC2822"/>.From</t>
          <t>Originator = "O" ; %x4F <xref target="RFC2822"/>.Sender/Resent-Sender/Resent-From</t>
          <t>MailFrom = "M" ; %x4D <xref target="RFC2821"/>.MAIL FROM<vspace blankLines="1"/></t>

          <t>tpa-label = base32( sha-1( lcase(signing-domain))) ; 32 characters</t>
        </list></t>

      <texttable title="TPA-SSP Tags">
        <ttcol align="center">Tag</ttcol>
        <ttcol align="left">Function</ttcol>
        <c>s=</c>
        <c>Scope list</c>
        <!--  -->
        <c>a=</c>
        <c>Authorized Signing Domain list</c>
        <!--  -->
      </texttable>

      <texttable title="TPA Scope">
        <ttcol align="center">Scope</ttcol>
        <ttcol align="left">Function</ttcol>
        <c>F</c>
        <c>Applies to From Header</c>
        <!--  -->
        <c>O</c>
        <c>Applies to Originator Headers</c>
        <!--  -->
        <c>M</c>
        <c>Applies to MAILFROM</c>
      </texttable>

      <t>The receiver obtains the TPA-SSP email-address domain policy using a DNS query for an IN
        class TXT resource record. The 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 policy record
        may be located at these domains:<list>
          <t/>
          <t>&lt;tpa-label&gt;._ssp._domainkeys.&lt;email-address domain&gt;.</t>
        </list>
        <vspace blankLines="1"/></t>
    </section>

    <section title="Scope">
      <t>s= Scope List(Optional). This tag defines a list of scoping assertions for various
        email-address locations within the message. </t>
      <t>
        <list>
          <t>scope = %x46 / %x4D / %x4F ; "F","M", &amp; "O"</t>
          <t>scope-list = %x73 [FWS]equals[FWS] scope 0*(*FWS colon *FWS scope) <vspace
              blankLines="1"/></t>
        </list>
      </t>

      <section title="(F)rom header field">
        <t>The "F" Scope asserts that messages carrying the email-address domain within the From
          header field are authorized to be signed by the authorized domain.<vspace blankLines="1"
          /></t>
      </section>

      <section title="(M)ailFrom parameter">
        <t>This "M" Scope asserts that messages carrying the email-address domain within the
          MAILFROM parameter are authorized to be signed by the authorized domain. <vspace
            blankLines="1"/></t>
      </section>

      <section title="(O)riginating header fields">
        <t>The "O" 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.<vspace
            blankLines="1"/></t>
      </section>
    </section>

    <section title="Authorized Signing Domain">
      <t>a= Authorized Signing Domain list (Optional). This tag repeats all or portions of the
        domain encoded within the tpa-label. This option ensure proper handling of possible hash
        collisions. When a domain is prefixed with the "*." ANY label, then all subdomains of this
        domain are considered to be included in the list.</t>
      <t>
        <list>
          <t>asd = [ANY] domain 0*(*FWS colon *FWS [ANY] domain)</t>
          <t>asd-list = %x61 [FWS]equals[FWS] asd<vspace blankLines="1"/></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 SSP "a=" option.<vspace blankLines="100"/></t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBD.<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="DNS Example of TPA-SSP From policy" 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 policy ####
                                _ssp._domainkey.example.com.  IN TXT 
    "dkim=strict;"

## "isp.com" tpa-label ##
hgssd3snmi6635j5743vdjhajkmpmfif._ssp._domainkey.example.com.  IN TXT
    "d=isp.com; s=F;"

## "example.com.isp.com" tpa-label ##
zzhffxwcfi7rpddqdigyhpbtaa7vwitu._ssp._domainkey.example.com.  IN TXT
    "d=*.isp.com; s=F;"
        </artwork>
      </figure>
    </section>
  </back>
</rfc>

