<?xml version='1.0' encoding="UTF-8"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" []>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc toc="yes" ?>
<?rfc tocindent="yes" ?>
<?rfc tocdepth="2" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>


<rfc
  category="std"
  docName="draft-ietf-dkim-rfc4871-errata-04"
  ipr="pre5378Trust200902"
  updates="RFC4871">
  <front>
    <title
      abbrev="RFC4871 Update">RFC 4871 DomainKeys Identified Mail (DKIM)
      Signatures -- Update</title>

    <author
      fullname="D. Crocker"
      initials="D."
      role="editor"
      surname="Crocker">
      <organization>Brandenburg InternetWorking</organization>
      <address><phone>+1.408.246.8253</phone>
        <email>dcrocker@bbiw.net</email>
      </address>
    </author>

    <date
      year="2009" />

    <area>Security</area>
    <workgroup>DKIM</workgroup>
    <keyword />
    <abstract>
      <t>This updates RFC 4871, DomainKeys Identified Mail (DKIM) Signatures.
        Specifically the document clarifies the nature, roles and relationship
        of the two DKIM identifier tag values that are candidates for payload
        delivery to a receiving processing module. The Update is in the style
        of an Errata entry, albeit a rather long one.</t>
    </abstract>

  </front>



  <middle>

    <section
      title="Introduction">
      <t>About the purpose for DKIM, <xref
          target="RFC4871" /> states: <list>
          <t> The ultimate goal of this framework is to permit a signing
            domain to assert responsibility for a message, thus protecting
            message signer identity... </t>
        </list> Hence, DKIM has a signer that produces a signed message, a
        verifier that confirms the signature and an assessor that consumes the
        validated signing domain. So the simple purpose of DKIM is to
        communicate an identifier to a receive-side assessor module. The
        identifier is in the form of a domain name that refers to a
        responsible identity. For DKIM to be interoperable and useful, signer
        and assessor must share the same understanding of the details about
        the identifier.</t>

      <t>However the RFC4871 specification defines two, potentially different
        identifiers that are carried in the DKIM-Signature: header field, d=
        and i=. Either might be delivered to a receiving processing module
        that consumes validated payload. The DKIM specification fails to
        clearly define what is "payload" to be delivered to a consuming
        module, versus what is internal and merely in support of achieving
        payload delivery. </t>
      <t>This currently leaves signers and assessors with the potential for
        having differing -- and therefore non-interoperable -- interpretations
        of how DKIM operates.</t>

      <t>This update resolves this confusion. It defines new labels for the
        two values, clarifies their nature, and specifies and their
        relationship. <list
          style="hanging">
          <t
            hangText="NOTE:  ">The text provided here updates <xref
              target="RFC4871" />. All references and all appearances of
            RFC-2119 keywords are replacing text in RFC 4871. Hence those
            references are in that document and are not needed here.</t>
        </list>
      </t>


    </section>

    <section
      title="RFC 4871 Abstract">
      <t>
        <list
          style="hanging">
          <t
            hangText="Original Text:  " />
          <t>The ultimate goal of this framework is to permit a signing domain
            to assert responsibility for a message,</t>
          <t
            hangText="Corrected Text:  " />
          <t>The ultimate goal of this framework is to permit a person, role
            or organization that owns the signing domain to assert
            responsibility for a message,</t>
        </list>
      </t>
    </section>

    <section
      title="RFC4871 Section 1. Introduction">
      <t>
        <list
          style="hanging">
          <t
            hangText="Original Text:  " />
          <t>...permitting a signing domain to claim responsibility </t>

          <t
            hangText="Corrected Text:  " />
          <t>permitting a person, role or organization that owns the signing
            domain to claim responsibility</t>
        </list>
      </t>

    </section>
    <section
      title="RFC4871 Section 2.7 Identity">
      <t>
        <list
          style="hanging">
          <t
            hangText="Original Text:  " />
          <t>(None. Additional text.)</t>
          <t
            hangText="Corrected Text:  " />
          <t>A person, role or organization. In the context of DKIM, examples
            include author, author's organization, an ISP along the handling
            path, an independent trust assessment service, and a mailing list
            operator.</t>
        </list>
      </t>

    </section>
    <section
      title="RFC4871 Section 2.8 Identifier">
      <t>
        <list
          style="hanging">
          <t
            hangText="Original Text:  " />
          <t>(None. Additional text.)</t>
          <t
            hangText="Corrected Text:  " />
          <t>A label that refers to an identity.</t>
        </list>
      </t>

    </section>
    <section
      title="RFC4871 Section 2.9 Signing Domain Identifier (SDID)">
      <t>
        <list
          style="hanging">
          <t
            hangText="Original Text:  " />
          <t>(None. Additional text.)</t>

          <t
            hangText="Corrected Text:  " />
          <t>A single domain name that is the mandatory payload output of DKIM
            and that refers to the identity claiming responsibility for
            introduction of a message into the mail stream. For DKIM
            processing, the name has only basic domain name semantics; any
            possible owner-specific semantics are outside the scope of DKIM.
            It is specified in section 3.5. </t>

        </list>
      </t>
    </section>

    <section
      title="RFC4871 Section 2.10 Agent or User Identifier (AUID)">
      <t>
        <list
          style="hanging">
          <t
            hangText="Original Text:  " />
          <t>(None. Additional text.)</t>

          <t
            hangText="Corrected Text:  " />
          <t>A single identifier that refers to the agent or user on behalf of
            whom the SDID has taken responsibility. The AUID comprises a
            domain name and an optional &lt;Local-part&gt;. The domain
            name is the same as that used for the SDID or is a sub-domain of
            it. For DKIM processing, the domain name portion of the AUID has
            only basic domain name semantics; any possible owner-specific
            semantics are outside the scope of DKIM. It is specified in
            section 3.5.</t>
        </list>
      </t>
    </section>

    <section
      title="RFC4871 Section 2.11 Identity Assessor">
      <t>
        <list
          style="hanging">
          <t
            hangText="Original Text:  " />
          <t>(None. Additional text.)</t>

          <t
            hangText="Corrected Text:  " />
          <t>The name of the module that consumes DKIM's mandatory payload,
            the responsible Signing Domain Identifier (SDID). The module is
            dedicated to the assessment of the delivered identifier. Other
            DKIM (and non-DKIM) values can also be delivered to this module as
            well as to a more general message evaluation filtering engine.
            However this additional activity is outside the scope of the DKIM
            signature specification.</t>
        </list>
      </t>
    </section>

    <section
      title="RFC4871 Section 3.5 The DKIM-Signature Header Field">

      <t>Original Text: <list>
          <t>
            <figure>
              <artwork><![CDATA[d=  The domain of the signing entity (plain-text; REQUIRED).  This is
    the domain that will be queried for the public key.  This domain
    MUST be the same as or a parent domain of the "i=" tag (the
    signing identity, as described below), or it MUST meet the
    requirements for parent domain signing described in Section 3.8.
    When presented with a signature that does not meet these
    requirement, verifiers MUST consider the signature invalid.

    Internationalized domain names MUST be encoded as described in
    [RFC3490].

    ABNF:

       sig-d-tag       = %x64 [FWS] "=" [FWS] domain-name
       domain-name     = sub-domain 1*("." sub-domain)
                ; from RFC 2821 Domain, but excluding address-literal
]]></artwork>
            </figure>
          </t>
        </list>
      </t>
      <t>Corrected Text: <list>
          <t>d= <list>
              <t> Specifies the SDID claiming responsibility for an
                introduction of a message into the mail stream (plain-text;
                REQUIRED). This is the domain that will be queried for the
                public key. The SDID MUST correspond to a valid DNS name under
                which the DKIM key record is published. The conventions and
                semantics used by a signer to create and use a specific SDID
                are outside the scope of the DKIM Signing specification, as is
                any use of those conventions and semantics. When presented
                with a signature that does not meet these requirements,
                verifiers MUST consider the signature invalid.</t>
              <t>Internationalized domain names MUST be encoded as described
                in [RFC3490].</t>
              <t>ABNF: <figure
                  align="left">
                  <artwork
                    align="left"
                    type="ABNF">
                    <![CDATA[sig-d-tag   = %x64 [FWS] "=" [FWS] domain-name
domain-name = sub-domain 1*("." sub-domain) 
              ; from RFC 2821 Domain, but excluding 
                address-literal]]></artwork>
                </figure>
              </t>

            </list>
          </t>
        </list>
      </t>
    </section>

    <section
      title="RFC4871 Section 3.5 The DKIM-Signature Header Field">
      <t>Original Text: <list>
          <t>
            <figure>
              <artwork><![CDATA[i=  Identity of the user or agent (e.g., a mailing list manager) on
    behalf of which this message is signed (dkim-quoted-printable;
    OPTIONAL, default is an empty Local-part followed by an "@"
    followed by the domain from the "d=" tag).  The syntax is a
    standard email address where the Local-part MAY be omitted.  The
    domain part of the address MUST be the same as or a subdomain of
    the value of the "d=" tag.

    Internationalized domain names MUST be converted using the steps
    listed in Section 4 of [RFC3490] using the "ToASCII" function.

    ABNF:

       sig-i-tag =   
               %x69 [FWS] "=" [FWS] [ Local-part ] "@" domain-name
 
    INFORMATIVE NOTE: The Local-part of the "i=" tag is optional
    because in some cases a signer may not be able to establish a
    verified individual identity.  In such cases, the signer may
    wish to assert that although it is willing to go as far as
    signing for the domain, it is unable or unwilling to commit
    to an individual user name within their domain.  It can do so
    by including the domain part but not the Local-part of the
    identity.

    INFORMATIVE DISCUSSION: This document does not require the value
    of the "i=" tag to match the identity in any message header
    fields.  This is considered to be a verifier policy issue.
    Constraints between the value of the "i=" tag and other
    identities in other header fields seek to apply basic
    authentication into the semantics of trust associated with a
    role such as content author.  Trust is a broad and complex
    topic and trust mechanisms are subject to highly creative
    attacks.  The real-world efficacy of 
    bindings between the "i=" value and other identities is not
    well established, nor is its vulnerability to subversion by
    an attacker.  Hence reliance on the use of these options
    should be strictly limited.  In particular, it is not at all
    clear to what extent a typical end-user recipient can rely on
    any assurances that might be made by successful use of the
    "i=" options.]]></artwork>
            </figure>
          </t>
        </list></t>

      <t>Corrected Text: <list>
          <t>i= <list>
              <t>The Agent or User Identifier (AUID) on behalf of which the
                SDID is taking responsibility (dkim-quoted-printable;
                OPTIONAL, default is an empty Local-part followed by an "@"
                followed by the domain from the "d=" tag).</t>

              <t>The syntax is a standard email address where the Local-part
                MAY be omitted. The domain part of the address MUST be the
                same as, or a subdomain of the value of, the "d=" tag.</t>
              <t>Internationalized domain names MUST be converted using the
                steps listed in Section 4 of [RFC3490] using the "ToASCII"
                function.</t>

              <t>ABNF: <figure
                  align="left">
                  <artwork
                    align="left"
                    type="ABNF">
                    <![CDATA[sig-i-tag =  %x69 [FWS] "=" [FWS] 
             [ Local-part ] "@" domain-name]]></artwork>
                </figure></t>

              <t> The AUID is specified as having the same syntax as an email
                address, but is not required to have the same semantics.
                Notably, the domain name is not required to be registered in
                the DNS -- so it might not resolve in a query -- and the
                Local-part MAY be drawn from a namespace that does not contain
                the user's mailbox. The details of the structure and semantics
                for the namespace are determined by the Signer. Any knowledge
                or use of those details by verifiers or assessors is outside
                the scope of the DKIM Signing specification. The Signer MAY
                choose to use the same namespace for its AUIDs as its users'
                email addresses, or MAY choose other means of representing its
                users. However, the signer SHOULD use the same AUID for each
                message intended to be evaluated as being within the same
                sphere of responsibility, if it wishes to offer receivers the
                option of using the AUID as a finer grained, stable identifier
                than the SDID. </t>
              <t>INFORMATIVE NOTE: The Local-part of the "i=" tag is optional
                because in some cases a signer may not be able to establish a
                verified individual identity. In such cases, the signer might
                wish to assert that although it is willing to go as far as
                signing for the domain, it is unable or unwilling to commit to
                an individual user name within their domain. It can do so by
                including the domain part but not the Local-part of the
                identity.</t>

            </list>
          </t>
        </list>
      </t>

    </section>


    <section
      title="RFC4871 Section 3.8.  Signing by Parent Domains">
      <t>Original Text: <list>
          <t>
            <figure>
              <artwork><![CDATA[  e.g., a key record for the domain example.com can be used to verify
messages where the signing identity ("i=" tag of the signature) is
sub.example.com, or even sub1.sub2.example.com.  In order to limit
the capability of such keys when this is not intended, the "s" flag
may be set in the "t=" tag of the key record to constrain the
validity of the record to exactly the domain of the signing identity.
If the referenced key record contains the "s" flag as part of the
"t=" tag, the domain of the signing identity ("i=" flag) MUST be the
same as that of the d= domain.  If this flag is absent, the domain of
the signing identity MUST be the same as, or a subdomain of, the d=
domain.
]]></artwork>
            </figure>
          </t>
        </list>
      </t>

      <t>Corrected Text: <list>
          <t>...for example, a key record for the domain example.com can be
            used to verify messages where the AUID ("i=" tag of the signature)
            is sub.example.com, or even sub1.sub2.example.com. In order to
            limit the capability of such keys when this is not intended, the
            "s" flag MAY be set in the "t=" tag of the key record, to
            constrain the validity of the domain of the AUID. If the
            referenced key record contains the "s" flag as part of the "t="
            tag, the domain of the AUID ("i=" flag) MUST be the same as that
            of the SDID (d=) domain. If this flag is absent, the domain of the
            AUID MUST be the same as, or a subdomain of, the SDID. </t>
        </list>
      </t>
    </section>


    <section
      title="RFC4871 Section 3.9 Relationship Between SDID and AUID">
      <t>
        <list
          style="hanging">
          <t
            hangText="Original Text:  ">(None. This is an addition.)</t>
          <t
            hangText="Corrected Text:  " />
        </list>
        <list>
          <t>DKIM's primary task is to communicate from the Signer to a
            recipient-side Identity Assessor a single Signing Domain
            Identifier (SDID) that refers to a responsible identity. DKIM MAY
            optionally provide a single responsible Agent or User Identifier
            (AUID).</t>

          <t> Hence, DKIM's mandatory output to a receive-side Identity
            Assessor is a single domain name. Within the scope of its use as
            DKIM output, the name has only basic domain name semantics; any
            possible owner-specific semantics are outside the scope of DKIM.
            That is, within its role as a DKIM identifier, additional
            semantics cannot be assumed by an Identity Assessor.</t>
          <t> A receive-side DKIM verifier MUST communicate the Signing Domain
            Identifier (d=) to a consuming Identity Assessor module and MAY
            communicate the User Agent Identifier (i=) if present. </t>
          <t> To the extent that a receiver attempts to intuit any structured
            semantics for either of the identifiers, this is a heuristic
            function that is outside the scope of DKIM's specification and
            semantics. Hence it is relegated to a higher-level service, such
            as a delivery handling filter that integrates a variety of inputs
            and performs heuristic analysis of them. </t>


          <t>INFORMATIVE DISCUSSION: This document does not require the value
            of the SDID or AUID to match the identity in any message header
            fields. This is considered to be an assessor policy issue.
            Constraints between the value of the SDID or AUID and other
            identities in other header fields seek to apply basic
            authentication into the semantics of trust associated with a role
            such as content author. Trust is a broad and complex topic and
            trust mechanisms are subject to highly creative attacks. The
            real-world efficacy of any but the most basic bindings between the
            SDID or AUID and other identities is not well established, nor is
            its vulnerability to subversion by an attacker. Hence reliance on
            the use of these options should be strictly limited. In
            particular, it is not at all clear to what extent a typical
            end-user recipient can rely on any assurances that might be made
            by successful use of the SDID or AUID.</t>
        </list>
      </t>

    </section>


    <section
      title="RFC4871 Section 6.3.  Interpret Results/Apply Local Policy">
      <t>Original Text: <list>
          <t>
            <figure>
              <artwork><![CDATA[It is beyond the scope of this specification to describe what actions
a verifier system should make, but an authenticated email presents an
opportunity to a receiving system that unauthenticated email cannot.
Specifically, an authenticated email creates a predictable identifier
by which other decisions can reliably be managed, such as trust and
reputation.  Conversely, unauthenticated email lacks a reliable
identifier that can be used to assign trust and reputation.]]></artwork>
            </figure>
          </t>
        </list></t>
      <t>Corrected Text:<list>
          <t>It is beyond the scope of this specification to describe what
            actions an Identity Assessor can make, but mail carrying a
            validated SDID presents an opportunity to an Identity Assessor
            that unauthenticated email does not. Specifically, an
            authenticated email creates a predictable identifier by which
            other decisions can reliably be managed, such as trust and
            reputation.</t>
        </list></t>
    </section>

    <section
      title="RFC4871 Section 6.3.  Interpret Results/Apply Local Policy">
      <t>Original Text: <list>
          <t>
            <figure>
              <artwork><![CDATA[Once the signature has been verified, that information MUST be
conveyed to higher-level systems (such as explicit allow/whitelists
and reputation systems) and/or to the end user.  If the message is
signed on behalf of any address other than that in the From: header
field, the mail system SHOULD take pains to ensure that the actual
signing identity is clear to the reader.]]></artwork>
            </figure>
          </t>
        </list>
      </t>
      <t>Corrected Text: <list>
          <t>Once the signature has been verified, that information MUST be
            conveyed to the Identity Assessor (such as an explicit
            allow/whitelist and reputation system) and/or to the end user. If
            the SDID is not the same as the address in the From: header field,
            the mail system SHOULD take pains to ensure that the actual SDID
            is clear to the reader. </t>
        </list>
      </t>
    </section>

    <section
      title="RFC4871 Appendix D.  MUA Considerations">
      <t>
        <list
          style="hanging">
          <t
            hangText="Original Text:  ">The tendency is to have the MUA
            highlight the address associated with this signing identity in
            some way, in an attempt to show the user the address from which
            the mail was sent. </t>
          <t
            hangText="Corrected Text:  "> The tendency is to have the MUA
            highlight the SDID, in an attempt to show the user the identity
            that is claiming responsibility for the message.</t>
        </list>
      </t>
    </section>


    <section
      title="Security Considerations">
      <t>This Update clarifies core details about DKIM's payload. As such it
        affects interoperability, semantic characterization, and the
        expectations for the identifiers carried with a DKIM signature.
        Clarification of these details is likely to limit misinterpretation of
        DKIM's semantics. Since DKIM is fundamentally a security protocol,
        this should improve its security characteristics.</t>
    </section>

    <section
      title="IANA Considerations">
      <t>This document has no actions for IANA.</t>
    </section>
  </middle>


  <back>
    <references
      title="Normative References">
      <reference
        anchor="RFC4871">
        <front>
          <title>DomainKeys Identified Mail (DKIM) Signatures</title>
          <author
            fullname="E. Allman"
            initials="E."
            surname="Allman">
            <organization>Sendmail, Inc.</organization>
          </author>
          <author
            fullname="J. Callas"
            initials="J."
            surname="Callas">
            <organization>PGP Corporation</organization>
          </author>
          <author
            fullname="M. Delany"
            initials="M."
            surname="Delany">
            <organization>Yahoo! Inc</organization>
          </author>
          <author
            fullname="M. Libbey"
            initials="M."
            surname="Libbey">
            <organization>Yahoo! Inc</organization>
          </author>
          <author
            fullname="J. Fenton"
            initials="J."
            surname="Fenton">
            <organization> Cisco Systems, Inc.</organization>
          </author>
          <author
            fullname=" M. Thomas"
            initials="M."
            surname="Thomas">
            <organization> Cisco Systems, Inc.</organization>
          </author>
          <date
            month="May"
            year="2007" />
        </front>
        <seriesInfo
          name="RFC"
          value="4871" />
      </reference>

    </references>



    <section
      anchor="Acknowledgements"
      title="Acknowledgements">
      <t>This document was initially formulated by an ad hoc design team,
        comprising: Jon Callas, D. Crocker, J. D. Falk, Michael Hammer, Tony
        Hansen, Murray Kucherawy, John Levine, Jeff Macdonald, Ellen Siegel
        and Wietse Venema. The final version of the document was developed
        through vigorous discussion in the IETF DKIM working group. </t>

    </section>
  </back>
</rfc>
