DKIM D. Crocker, Ed.
Internet-Draft Brandenburg InternetWorking
Intended status: Standards Track 2009

RFC 4871 DomainKeys Identified Mail (DKIM) Signatures -- Errata
draft-ietf-dkim-rfc4871-errata-02

Abstract

This documents and resolves errata for 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. This Errata entry has been developed and approved by the IETF's DKIM working group.

Errata Contact Fields

Name:
Dave Crocker
Email:
dcrocker@bbiw.net

Type

Technical

Status of This Memo

This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http:/⁠/⁠datatracker.ietf.org/⁠drafts/⁠current/⁠.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

Copyright Notice

Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http:/⁠/⁠trustee.ietf.org/⁠license-⁠info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.


Table of Contents

1. Introduction

About the purpose for DKIM, [RFC4871] states:

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.

However the RFC5871 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.

This currently leaves signers and assessors with the potential for having differing -- and therefore non-interoperable -- interpretations of how DKIM operates.

This erratum resolves this confusion. It defines new labels for the two values, clarifies their nature, and specifies and their relationship.

NOTE:
This Errata document has been developed and approved by the IETF's DKIM working group. For more information about DKIM and its IETF working group, see: <http://dkim.org>.

2. RFC 4871 Abstract

Original Text:
The ultimate goal of this framework is to permit a signing domain to assert responsibility for a message,
Corrected Text:
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,

3. RFC4871 Section 1. Introduction

Original Text:
...permitting a signing domain to claim responsibility
Corrected Text:
permitting a person, role or organization that owns the signing domain to claim responsibility

4. RFC4871 Section 2.7 Identity

Original Text:
(None. Additional text.)
Corrected Text:
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.

5. RFC4871 Section 2.8 Identifier

Original Text:
(None. Additional text.)
Corrected Text:
A label that refers to an identity.

6. RFC4871 Section 2.9 Signing Domain Identifier (SDID)

Original Text:
(None. Additional text.)
Corrected Text:
A single, opaque value that is the mandatory payload output of DKIM and which refers to the identity claiming responsibility for the introduction of a message into the mail stream. It is specified in section 3.5.

7. RFC4871 Section 2.10 User Agent Identifier (UAID)

Original Text:
(None. Additional text.)
Corrected Text:
A single, opaque value that identifies the user or agent on behalf of whom the SDID has taken responsibility. It is specified in section 3.5.

8. RFC4871 Section 2.11 Identity Assessor

Original Text:
(None. Additional text.)
Corrected Text:
The name of the module that consumes DKIM's primary payload, the responsible Signing Domain Identifier (SDID). It can optionally consume the User Agent Identifier (UAID) value, if provided to the module.

9. RFC4871 Section 3.5 The DKIM-Signature Header Field

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

Original Text:

           sig-d-tag = %x64 [FWS] "=" [FWS] domain-name
           domain-name = sub-domain 1*("." sub-domain) 
                  ; from RFC 2821 Domain, but excluding address-literal

Corrected Text:

10. RFC4871 Section 3.5 The DKIM-Signature Header Field

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 any but the most basic
    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.

Original Text:

           sig-i-tag =  %x69 [FWS] "=" [FWS] 
                        [ Local-part ] "@" domain-name

Corrected Text:

11. RFC4871 Section 3.8. Signing by Parent Domains

  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.

Original Text:

Corrected Text:

12. RFC4871 Section 3.9 Relationship Between SDID and UAID

Original Text:
(None. This is an addition.)
Corrected Text:

13. RFC4871 Section 6.3. Interpret Results/Apply Local Policy

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.

Original Text:

Corrected Text:

14. RFC4871 Section 6.3. Interpret Results/Apply Local Policy

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.

Original Text:

Corrected Text:

15. RFC4871 Appendix D. MUA Considerations

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.
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.

16. Security Considerations

This Errata document 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.

17. References

[RFC4871] Allman, E., Callas, J., Delany, M., Libbey, M., Fenton, J. and M. Thomas, "DomainKeys Identified Mail (DKIM) Signatures", RFC 4871, May 2007.

Appendix A. Acknowledgements

This document was initially formulated by an ad hoc design team, comprising: Jon Callas, J D Falk, Jim Fenton, Tony Hansen, Murray Kucherawy, John Levine, Michael Hammer, Jeff Macdonald, Ellen Siegel, Wietse Venema. It was then submitted to the DKIM working group for revision and approval.

Author's Address

D. Crocker (editor) Brandenburg InternetWorking Phone: +1.408.246.8253 EMail: dcrocker@bbiw.net