<?xml version="1.0" encoding="UTF-8"?>
<!-- 

-->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
  <!ENTITY ar		PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.kucherawy-sender-auth-header.xml'>
  <!ENTITY rfc2440bis	PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-openpgp-rfc2440bis.xml'>

  <!ENTITY rfc2821	PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2821.xml'>
  <!ENTITY rfc2822	PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2822.xml'>
  <!ENTITY pem		PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0989.xml'>
  <!ENTITY moss		PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1848.xml'>
  <!ENTITY pgp1		PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1991.xml'>
  <!ENTITY rfc2440	PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2440.xml'>
  <!ENTITY rfc3156	PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3156.xml'>
  <!ENTITY syslog	PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3164.xml'>
  <!ENTITY rfc3851	PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3851.xml'>
  <!ENTITY dkimta	PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4686.xml'>
  <!ENTITY dkimbase	PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4871.xml'>
  <!ENTITY dk		PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4870.xml'>
  ]>

<!-- 3 levels is messy --> <?rfc tocdepth="2" ?>

<!-- may be omitted for very short documents --> <?rfc toc="yes"?>
<!-- strict ID-nits compliance --> <?rfc strict="no"?>
<!-- these two save paper: start new paragraphs from the same page etc. -->
	<?rfc compact="yes"?> <?rfc subcompact="no"?>
<!-- use symbolic cross references instead of [1], and sort them -->
	<?rfc symrefs="yes"?> <?rfc sortrefs="yes"?>

<?rfc comments="yes"?>
<?rfc inline="yes"?>

<!-- other categories: bcp, exp, historic, std -->
<rfc category="info" ipr="full3978">
   <front>
      <title abbrev="DKIM Development/Deployment/Operations">DomainKeys Identified Mail (DKIM)
         Development, Deployment and Operations</title>
      <!-- add 'role="editor"' below for the editors if the requiring designation -->
      <author fullname="Tony Hansen" initials="T." surname="Hansen">
         <organization>AT&amp;T Laboratories</organization>
         <address>
           <postal>
            <street>200 Laurel Ave.</street>
            <city>Middletown</city>
            <region>NJ</region>
            <code>07748</code>
            <country>USA</country>
           </postal>
           <email>tony+dkimov@maillennium.att.com </email>
         </address>
      </author>
      <author fullname="Dave Crocker" initials="D." surname="Crocker">
         <organization>Brandenburg InternetWorking</organization>
         <address>
           <postal>
            <street>675 Spruce Dr.</street>
            <city>Sunnyvale</city>
            <region>CA</region>
            <code>94086</code>
            <country>USA</country>
          </postal>
          <email>dcrocker@bbiw.net</email>
        </address>
      </author>
      <author fullname="Phillip Hallam-Baker" initials="P."
         surname="Hallam-Baker">
         <organization>VeriSign Inc.</organization>
         <address>
           <email>pbaker@verisign.com</email>
         </address>
      </author>
      <date year="2007" />
      <!-- month="May" is no longer necessary -->
      <area>Security</area>
      <!-- WG name at the upperleft corner of the doc, IETF fine for individual submissions -->
      <workgroup>DomainKeys Identified Mail</workgroup>
      <keyword>Email</keyword>
      <keyword>Electronic Mail</keyword>
      <keyword>Internet Mail</keyword>
      <keyword>Message Verification</keyword>
      <abstract>
         <t> DomainKeys Identified Mail (DKIM) associates a "responsible"
            identity with a message and provides a means of verifying that the
            association is legitimate. <xref target="RFC4871" />
            DKIM defines a domain-level authentication framework for email
            using public-key cryptography and key server technology. This
            permits verifying the source or intermediary for a message, as
            well as the contents of messages. The ultimate goal of this
            framework is to permit a signing domain to assert responsibility
            for a message, thus proving and protecting the identity associated
            with the message and the integrity of the messages itself, while
            retaining the functionality of Internet email as it is known
            today. Such protection of email identity may assist in the global
            control of "spam" and "phishing". This document provides implementation,
	    deployment, operational and migration considerations for DKIM. </t>

      </abstract>
   </front>
   <middle>
         <section title="Introduction">
            <t>
               There are many areas to be considered when deploying
               DomainKeys Identified Mail (DKIM).
               This document provides practical tips for: those who are developing DKIM software, mailing list managers,
	       filtering strategies based on the output from DKIM verification, and DNS servers;
	       those who are deploying DKIM software, keys, mailing list software, and migrating from DomainKeys;
	       and those who are responsible for the on-going operations of an email infrastructure that has deployed DKIM.
            </t>
         </section>
         <section title="Development">
            <section title="DKIM Signing Software">
               <t>Signer implementations SHOULD provide a convenient means of
                  generating DNS key records corresponding to the signer
                  configuration. Support for automatic insertion of key
                  records into the DNS is also highly desirable. If supported
                  however, such mechanism(s) MUST be properly authenticated.</t>
               <t>A means of verifying that the signer configuration is
                  compatible with the signature policy is also highly
                  desirable.</t>
               <t>Disclosure of a private signature key component to a third
                  party allows that third party to impersonate the sender.
                  The protection of private signature key data is therefore a
                  critical concern. Signers SHOULD support use of
                  cryptographic hardware providing key management features. </t>
            </section>

            <section title="General Coding Criteria for Cryptographic Applications">
               <t> NOTE: This section could possibly be changed into a reference to something else, such as another rfc.
	       </t>
               <t>Correct implementation of a cryptographic algorithm is a
                  necessary but not a sufficient condition for the coding of
                  cryptographic applications. Coding of cryptographic
                  libraries requires close attention to security
                  considerations that are unique to cryptographic
                  applications.
	       </t>
               <t>In addition to the usual security coding considerations,
                  such as avoiding buffer or integer overflow and underflow,
                  implementers should pay close attention to management of
                  cryptographic private keys and session keys, ensuring that
                  these are correctly initialized and disposed of.
	       </t>
               <t>Operating system mechanisms that permit the confidentiality
                  of private keys to be protected against other processes
                  SHOULD be used when available. In particular, great care
                  MUST be taken when releasing memory pages to the operating
                  system to ensure that private key information is not
                  disclosed to other processes.
	       </t>
               <t>Certain implementations of public key algorithms such as RSA may be
                  vulnerable to a timing analysis attack.
               </t>
               <t>Support for cryptographic hardware providing key management
                  capabilities is strongly encouraged. In addition to offering
                  performance benefits, many cryptographic hardware devices
                  provide robust and verifiable management of private keys.
               </t>
               <t>Fortunately appropriately designed and coded cryptographic
                  libraries are available for most operating system platforms
                  under license terms compatible with commercial, open source
                  and free software license terms. Use of standard
                  cryptographic libraries is strongly encouraged. These have
                  been extensively tested, reduce development time and support
                  a wide range of cryptographic hardware.
               </t>
            </section>

            <section title="Mailing List Manager Software">
               <t> A mailing list often provides facilities to its
                  administrator to manipulate parts of the mail messages that
                  flow through the list. The desired goal is that messages
                  flowing through the mailing list will be verifiable by the
                  recipient as being from the list, or failing that, as being
                  from the individual list members. 
               </t>
               <t> In most cases, the list and/or its mail host SHOULD add its
                  own DKIM signature to list mail. This could be done in the
                  list management software, in an outgoing MSA or MTA, or
                  both. List management software often makes modifications to
                  messages that will break incoming signatures, such as adding
                  subject tags, adding message headers or footers, and adding,
                  deleting, or reordering MIME parts. By adding its own
                  signature after these modifications, the list provides a
                  verifiable, recognizable signature for list recipients. 
               </t>
               <t> In some cases, the modifications made by the mailing list
                  software are simple enough that
                  signatures on incoming messages will still be verifiable
                  after being remailed by the list. It is still preferable
                  that the list sign its mail so that recipients can
                  distinguish between mail sent through the list and mail sent
                  directly to a list member. In the absence of a list
                  signature, a recipient may still be able to recognize and use the
                  original signatures of the list members. 
               </t>
            </section>
            <section title="Email Infrastructure Agents">
               <t>It is expected that the most common venue for a DKIM
                  implementation will be within the infrastructure of an
                  organization's email service, such as a department or a
                  boundary MTA.<list>
                     <t>
                        <list style="hanging">
                           <t hangText="Outbound:  "> An MSA or Outbound MTA
                              should allow for the automatic verification of the MTA
                              configuration such that the MTA can generate an
                              operator alert if it determines that it is (1) an
                              edge MTA, and (2) configured to send email messages
                              that do not comply with the published DKIM sending
                              policy.</t>
                           <t>An outbound MTA should be aware that users may
                              employ MUAs that add their own signatures and be
                              prepared to take steps necessary to ensure that the
                              message sent is in compliance with the advertised
                              email sending policy.</t>
                           <t hangText="Inbound:  "> An inbound MTA or an MDA
                              that does not support DKIM should avoid modifying
                              messages in ways that prevent verification by other
                              MTAs, or MUAs to which the message may be
                              forwarded.</t>
                           <t>An inbound MTA or an MDA may incorporate an indication
                              of the verification
                              results into the message, such as using an
                              Authentication-Results header. <xref
                                 target="I-D.kucherawy-sender-auth-header" /></t>
                           <t hangText="Intermediaries:  "> An email intermediary
                              is both an inbound and outbound MTA. Each of the
                              requirements outlined in the sections relating to
                              MTAs apply. If the intermediary modifies a message
                              in a way that breaks the signature, the
                              intermediary <list style="symbols">
                                 <t> SHOULD deploy abuse filtering measures on
                                    the inbound mail, and </t>
                                 <t> MAY remove all signatures that will be
                                    broken</t>
                              </list></t>
                           <t>In addition the intermediary MAY: <list style="symbols">
                              <t>Verify the message signature prior to modification.</t>
                              <t>Incorporate an indication of the verification
                                 results into the message, such as using an
                                 Authentication-Results header. <xref
                                    target="I-D.kucherawy-sender-auth-header" /></t>
                              <t>Sign the modified message including the
                                 verification results (e.g., the
                                 Authentication-Results header).</t>
                              </list>
                            </t>
   
                        </list>
                     </t>
   
                  </list></t>
            </section>

            <section title="Filtering Software">
               <t>Developers of filtering schemes designed to accept DKIM
                  authentication results as input should be aware that their
                  implementations will be subject to counter-attack by email
                  abusers. The efficacy of a filtering scheme cannot therefore be
                  determined by reference to static test vectors alone;
                  resistance to counter attack must also be considered.</t>
               <t>Naive learning algorithms that only consider the presence or
                  absence of a verified DKIM signature, without considering
                  more information about the message,
                  are vulnerable to an
                  attack in which a spammer or other malefactor signs all their
                  mail, thus creating a large negative value for presence of a
                  DKIM signature in the hope of discouraging widespread use.</t>
               <t>If heuristic algorithms are employed, they should be trained on
                  feature sets that sufficiently reveal the internal structure of
                  the DKIM responses. In particular the algorithm should consider
                  the domains purporting to claim responsibility for the
                  signature, rather than the existence of a signature or not.</t>
               <t>Unless a scheme can correlate the DKIM signature with
                  accreditation or reputation data, the presence of a DKIM
                  signature SHOULD be ignored.</t>
            </section>

            <section title="DNS Server Software">
               <t> At a minimum, a DNS server that handles queries for DKIM key
                  records must allow the server administrators to add free-form TXT
                  records.
                  It would be better if the the DKIM records could be entered
                  using a structured form, supporting the DKIM-specific fields.
               </t>
            </section>
         </section>

         <section title="Deployment">
            <t>This section describes the basic steps for introducing DKIM
               into an organization's email service operation. The
               considerations are divided between the generating DKIM
               signatures (Signing) and the processing of messages that
               contain a DKIM signature (Verifying).</t>
            <section title="Signing">
               <t>Creating messages that have DKIM signatures requires
                  a modification to only two portions of the email service:
                     <list style="symbols">
                     <t>Addition of relevant DNS information.</t>
                     <t>Addition of the signature by a trusted module within
                        the organization's email handling service.</t>
                  </list>
               </t>
               <t>The signing module uses the appropriate private key to
                  create a signature. The means by which the signing module
                  obtains the private key is not specified by DKIM. Given that DKIM
                  is intended for use during email transit, rather than for
                  long-term storage, it is expected that keys will be changed
                  regularly. Clearly this means that key information should
                  not be hard-coded into software. </t>
               <section title="DNS Records">
                  <t>A receiver attempting to verify a DKIM signature must
                     obtain the public key that is associated with the
                     signature for that message. The DKIM-Signature header in
                     the message will specify the basic domain name doing the
                     signing and the selector to be used for the specific
                     public key. Hence, the relevant
                     &lt;selector&gt;._domainkey.&lt;domain-name&gt;
                     DNS record needs to contain a DKIM-related resource
                     record (RR) that provides the public key information. </t>
                  <t>The administrator of the zone containing the relevant
                     domain name adds this information. Initial DKIM DNS
                     information is contained within TXT RRs. DNS
                     administrative software varies considerably in its
                     abilities to add new types of DNS records. </t>
               </section>

               <section title="Signing Module">
                  <t>The module doing signing can be placed anywhere within an
                     organization's trusted Administrative Management Domain
                     (ADMD); common choices are expected to be
                     department-level posting and delivering agents, as well
                     as boundary MTAs to the open Internet. (Note that it is
                     entirely acceptable for MUAs to perform signing and
                     verification.) Hence the choice among the modules depends
                     upon software development and administrative overhead
                     tradeoffs. One perspective that helps resolve this choice
                     is the difference between the flexibility of use by
                     systems at (or close to) the MUA, versus the centralized
                     control that is more easily obtained by implementing the
                     mechanism "deeper" into the organization's email
                     infrastructure, such as at its boundary MTA.</t>
               </section>

               <section title="Signing Policies and Practices">
                  <t>Every organization (ADMD) will have its own policies and
                     practices for deciding when to sign messages and with
                     what domain name and key (selector). Examples include
                     signing all mail, signing mail from particular email
                     addresses, or signing mail from particular sub-domains.
                     Given this variability, and the likelihood that signing
                     practices will change over time, it will be useful to
                     have these decisions represented in some sort of
                     configuration information, rather than being more deeply
                     coded into the signing software.</t>
               </section>
            </section>

            <section title="Verifying">
               <section title="Verifier">
                  <t>Verifiers SHOULD treat the result of the verification
                     step as an input to the message evaluation process rather
                     than as providing a final decision. The knowledge that a
                     message is authentically sent by a domain does not say
                     much about the legitimacy of the message, unless the
                     characteristics of the domain claiming responsibility are
                     known.</t>
                  <t>In particular, verifiers SHOULD NOT automatically assume
                     that an email message that does not contain a signature,
                     or that contains a signature that does not verify, is
                     forged. Verifiers should treat a signature that fails to
                     verify the same as if no signature were present.
                     NOTE: THE ABOVE MAY BE MODIFIED BY SSP
                     </t>
               </section>

               <t>Verification is performed within an ADMD that wishes to make
                  assessments based upon the DKIM signature's domain name. Any
                  component within the ADMD that handles messages, whether in
                  transit or being delivered, can do the verifying and
                  subsequent assessments. Verification and assessment might
                  occur within the same software mechanism, such as a Boundary
                  MTA, or an MDA. Or they may be separated, such as having
                  verification performed by the Boundary MTA and assessment
                  performed by the MDA.</t>
               <t>As with the signing process, choice of service venues for
                  verification and assessment -- such as filtering or
                  presentation to the recipient user -- depend on trade-offs
                  for flexibility, control, and operational ease. An added
                  concern is that the linkage between verification and
                  assessment entails essential trust: the assessment module
                  MUST have a strong basis for believing that the verification
                  information is correct.</t>

               <section title="DNS Client">
                  <t>The primary means of publishing DKIM key information,
                     initially, is initially through DNS TXT records. Some DNS
                     client software might have problems obtaining these
                     records; as DNS client software improves this will not be
                     a concern.</t>
               </section>

               <section title="Boundary Enforcement">
                  <t>In order for an assessment module to trust the
                     information it receives about verification (e.g.,
                     Authentication-Results headers), it MUST eliminate
                     verification information originating from outside the
                     ADMD in which the assessment mechanism operates. As a
                     matter of friendly practice, it is equally important to
                     make sure that verification information generated within
                     the ADMD not escape outside of it.</t>
                  <t>In most environments, the easiest way to enforce this is
                     to place modules in the receiving and sending Boundary
                     MTA(s) that strip any existing verification
                  information.</t>
               </section>
            </section>

            <section title="Key Management Deployment">
               <t>
                  More to be added
               </t>
               <section title="First Party Key Management">
                  <t>
                     <list style="hanging">
                        <t hangText="Selectors"> Selectors are assigned according
                           to the administrative needs of the signing domain,
                           such as for rolling over to a new key or for
                           delegating of the right to authenticate a portion of
                           the namespace to a trusted third party.
                        </t>
                        <t hangText="Examples include:  ">
                           jun2005.eng._domainkey.example.com </t>
                        <t>widget.promotion._domainkey.example.com</t>

                        <t hangText="NOTE:  ">It is intended that
                                    assessments of DKIM identities be based on
                                    the domain name, and not include the
                                    selector. This permits the selector to be
                                    used only for key administration, rather
                                    than having an effect on reputation
                                    assessment.</t>
                     </list>
                  </t>
               </section>
               <section title="Third Party Key Management">
                  <t>
                  ????????????????
                     3rd party generates the public / private key pair and sends the public key to be published in the DNS.
                  </t>
               </section>

               <section title="Signer Actions">
                  <t>
                     All Signers SHOULD:
                     <list style="symbols">
                        <t>
                           Include any existing Sender header field in the signed header
                           field list, if the Sender header field exists.
                        </t>
                     </list>
                  </t>
                  <t>
                     Signers wishing to avoid the use of Third-Party Signatures SHOULD do
                     everything listed above, and also:
                     <list style="symbols">
                        <t>
                           Include the Sender header field name in the header field list
                           ("h=" tag) under all circumstances, even if the Sender header
                           field does not exist in the header block.  This prevents another
                           entity from adding a Sender header field.
                        </t>
                        <t>
                           Publish Sender Signing Practices that does not sanction the use of
                           Third-Party Signatures
                        </t>
                     </list>
                  </t>
               </section>
  
            </section>
            <section title="Mailing Lists">
               <t>
                  There are several forms of mailing lists, which interact with signing
                  in different ways.
                  <list style="symbols">
                     <t>"Verbatim" mailing lists send messages without modification
                        whatsoever.  They are often implemented as MTA-based aliases.
                        Since they do not modify the message, signatures are unaffected
                        and will continue to verify.  It is not necessary for the
                        forwarder to re-sign the message; however, some may choose to do
                        so in order to certify that the message was sent through the list.
                     </t>
                     <t>"Digesting" mailing lists collect together one or more postings
                        and then retransmit them, often on a nightly basis, to the
                        subscription list.  These are essentially entirely new messages
                        which must be independently authored (that is, they will have a
                        "From" header field referring to the list, not the submitters) and
                        signed by the Mailing List Manager itself, if they are signed at
                        all.
                     </t>
                     <t>"Resending" mailing lists receive a message, modify it (often to
                        add "unsubscribe" information or advertising), and immediately
                        resend that message to the subscription list.  They are
                        problematic because they usually do not change the "From" header
                        field of the message, but they do invalidate the signature in the
                        process of modifying the message.
                     </t>
                  </list>
               </t>
               <t>
                  The first two cases act in obvious ways and do not require further
                  discussion.  The remainder of this session applies only to the third
                  case.
               </t>

               <section title="Mailing List Manager Actions">
                  <t>
                     Mailing List Managers should make every effort to ensure that
                     messages that they relay and which have Valid Signatures upon receipt
                     also have Valid Signatures upon retransmission.  In particular,
                     Mailing List Managers that modify the message in ways that break
                     existing signatures SHOULD:

                     <list style="symbols">
                        <t>
                           Verify any existing DKIM Signatures.  A DKIM-aware Mailing List
                           Manager MUST NOT re-sign an improperly signed message in such a
                           way that would imply that the existing signature is acceptable.
                        </t>
                        <t>
                           Apply regular anti-spam policies.  A Mailing List Manager SHOULD
                           apply message content security policy just as they would messages
                           destined for an individual user's mailbox.  In fact, a Mailing
                           List Manager might apply a higher standard to messages destined to
                           a mailing list than would normally be applied to individual
                           messages.
                           <vspace/>
                           NON-NORMATIVE RATIONALE:  Since reputation will accrue to
                           signers, Mailing List Managers should verify the source and
                           content of messages before they are willing to sign lest their
                           reputation be sullied by nefarious parties.
                        </t>
                        <t>
                           Add a Sender header field using a valid address pointing back to
                           the Mailing List Administrator or an appropriate agent (such as an
                           "owner-" or a "-request" address).
                        </t>
                        <t>
                           Sign the resulting message with a signature that is valid for the
                           Sender header field address.  The Mailing List Manager SHOULD NOT
                           sign messages for which they are unwilling to accept
                           responsibility.
                        </t>
                     </list>
                  </t>
                  <t>
                     Mailing List Managers MAY:
                        <list style="symbols">
                           <t>
                              Reject messages with signatures that do not verify or are
                              otherwise Suspicious.
                           </t>
                        </list>
                  </t>
               </section>
            </section>

            <section title="Mail User Agent">
               <t>DKIM is designed to support deployment and use in email
                  components other than an MUA. However an MUA MAY also
                  implement DKIM features directly.<list>
                     <t>
                        <list style="hanging">
                           <t hangText="Outbound:  "> If an MUA is configured
                              to send email directly, rather than relayed
                              through an outbound MSA, the MUA SHOULD be
                              considered as if it were an outbound MTA for the
                              purposes of DKIM. An MUA MAY support signing
                              even if mail is to be relayed through an
                              outbound MSA. In this case the signature applied
                              by the MUA may be in addition to any MSA
                              signature.</t>
                           <t hangText="Inbound:  "> An MUA MAY rely on a
                              report of a DKIM signature verification that
                              took place at some point in the inbound MTA path
                              (e.g., an Authentication-Results header), or an
                              MUA MAY perform DKIM signature verification
                              directly. A verifying MUA SHOULD allow for the
                              case where mail is modified in the inbound MTA
                              path.</t>
                        </list>
                     </t>
                  </list></t>
               <t>
                  It is common for components of an ADMD's email
                  infrastructure to do violence to a message, such as to render a
                  DKIM signature invalid. Hence, users of MUAs that support
                  DKIM signing and/or verifying need a basis for knowing that
                  their associated email infrastructure will not break a
                  signature. </t>
            </section>
            <section title="Transition Strategy">
               <t> Deployment of a new signature algorithm without a 'flag
                  day' requires a transition strategy such that signers and
                  verifiers can phase in support for the new algorithm
                  independently, and (if necessary) phase out support for the
                  old algorithm independently. </t>
               <t>[Note: this section assumes that a security policy mechanism
                  exists. It is subject to change.] </t>
               <t> DKIM achieves these requirements through two features:
                  First a signed message may contain multiple signatures
                  created by the same signer. Secondly the security policy
                  layer allows the signing algorithms in use to be advertised,
                  thus preventing a downgrade attack. </t>
               <section title="Signer transition strategy">
                  <t> Let the old signing algorithm be A, the new signing
                     algorithm be B. The sequence of events by which a Signer
                     may introduce the new signing algorithm B, without
                     disruption of service to legacy verifiers, is as follows:
                        <list style="numbers">
                        <t>Signer signs with algorithm A <list style="letters">
                              <t>Signer advertises that it signs with
                                 algorithm A</t>
                           </list>
                        </t>
                        <t>Signer signs messages twice, with both algorithm A
                           and algorithm B
                           <list style="letters">
                              <t>The signer tests new signing configuration</t>
                              <t>Signer advertises that it signs with either
                                 algorithm A or algorithm B</t>
                           </list>
                        </t>
                        <t>Signer determines that support for Algorithm A is
                           no longer necessary</t>
                        <t>Signer determines that support for algorithm A is
                           to be withdrawn <list style="letters">
                              <t>Signer removes advertisement for Algorithm A</t>
                              <t>Signer waits for cached copies of earlier
                                 signature policy to expire</t>
                              <t>Signer stops signing with Algorithm A</t>
                           </list>
                        </t>
                     </list></t>
               </section>
               <section title="Verifier transition strategy">
                  <t> The actions of the verifier are independent of the
                     signer's actions and do not need to be performed in a
                     particular sequence. The verifier may make a decision to
                     cease accepting algorithm A without first deploying
                     support for algorithm B. Similarly a verifier may be
                     upgraded to support algorithm B without requiring
                     algorithm A to be withdrawn. The decisions of the
                     verifier must make are therefore: <list style="symbols">
                        <t>The verifier MAY change the degree of confidence
                           associated with any signature at any time,
                           including determining that a given signature
                           algorithm provides a limited assurance of
                           authenticity at a given key strength. <list>
                              <t>A verifier MAY evaluate signature records in
                                 any order it chooses, including using the
                                 signature algorithm to choose the order.</t>
                           </list>
                        </t>
                        <t>The verifier MAY make a determination that
                           Algorithm A does not offer a useful level of
                           security, or that the cost of verifying the
                           signature is less than the value of doing so. <list>
                              <t>In this case the verifier would ignore
                                 signatures created using algorithm A and
                                 references to algorithm A in policy records
                                 would be treated as if the algorithm were not
                                 implemented.</t>
                           </list>
                        </t>
                        <t>The verifier MAY decide to add support for
                           additional signature algorithms at any time. <list>
                              <t>The verifier MAY add support for algorithm B
                                 at any time.</t>
                           </list>
                        </t>
                     </list>
                  </t>
               </section>
            </section>
            <section title="Migrating from DomainKeys">
               <section title="Signing">
                  <t>
                     <list>
                        <t>
                           <list style="hanging">
                              <t hangText="DNS Records:  "> DKIM is upwardly
                                 compatible with existing DomainKeys (DK)
                                    <xref target="RFC4870" />
                                 DNS records, so that a DKIM module does
                                 not automatically require additional DNS
                                 administration! However DKIM has enhanced the
                                 DomainKeys DNS key record format by adding
                                 several additional optional parameters. </t>
                              <t hangText="Boundary MTA:  "> The principle use
                                 of DomainKeys is at Boundary MTAs. Because no
                                 operational transition is ever instantaneous,
                                 it is not adviseable for existing DomainKeys
                                 signers to switch to DKIM without continuing
                                 to perform DomainKeys signing. A signer
                                 should add a DKIM signature to a message that
                                 also has a DomainKeys signature, until such
                                 time as DomainKeys receive-side support is
                                 sufficiently reduced. With respect to signing
                                 policies, a reasonable, initial approach is
                                 to use DKIM signatures in the same way as
                                 DomainKeys signatures are already being used.
                              </t>
                           </list>
                        </t>
                     </list>
                  </t>
               </section>
               <section title="Verifying">
                  <t>
                     <list>
                        <t>
                           <list style="hanging">
                              <t hangText="DNS Client:  ">DNS queries for the
                                 DKIM key record, use the same Domain Name
                                 naming conventions as were used for DomainKeys, and the
                                 same basic record format. No changes to the
                                 DNS client should be required. </t>
                              <t hangText="Verifying module:  "> See the section on Signing
                                 above.</t>
                           </list>
                        </t>
                     </list>
                  </t>
               </section>

            </section>
         </section>
         <section title="On-going Operations">
            <t>This section describes the basic steps for operation of email
               systems that use DKIM, after the capability has initially been
               deployed. The primary considerations are: <list style="symbols">
                  <t> the upkeep of the selector files, and </t>
                  <t>the security of the private keys. </t>
               </list></t>
            <section title="DNS Signature Record Installation Considerations">
               <t> Even with use of the DNS, one challenge is that DNS record management is
                  usually operated by an administrative staff that is different from
                  those who operate an organization's email service. In order
                  to ensure that DKIM DNS records are accurate, this imposes a
                  requirement for careful coordination between the two
                  operations groups. </t>
               <t> The key point to remember is that the DNS DKIM selectors
                  WILL and SHOULD be changed over time. Some reasons for
                  changing DKIM selectors are well understood, while others are
                  still theoretical. There are several schemes that may be
                  used to determine the policies for changing DKIM selectors:
                     <list style="symbols">
                     <t>time based</t>
                     <t>associations with clusters of servers</t>
                     <t>the use of third party signers</t>
                     <t>security considerations</t>
                  </list>
               </t>
               <section title="Time Basis and Security Considerations">
                  <t> The reason for changing the selector periodically is
                     usually related to the security exposure of a system.
                     When the potential exposure of the private keys
                     associated with the DKIM selector have reached sufficient
                     levels, the selector should be changed. (It is unclear
                     currently what kinds of metrics can be used to aid in
                     deciding when the exposure has reached sufficient levels
                     to warrant changing the selector.) </t>
                  <t> For example, <list style="symbols">
                        <t> Selectors should be changed more frequently on
                           systems that are widely exposed, than on systems
                           that are less widely exposed. For example, a
                           gateway system that has numerous
                           externally-accessible services running on it, is
                           more widely exposed than one that ONLY runs a mail
                           server. </t>
                        <t> Selectors should be changed more frequently on
                           operating systems that are under wide attack. </t>
                        <t> While the use of DKIM information is transient,
                           keys with sufficient exposure do become stale and
                           should be changed. </t>
                        <t>Whenever you make a substantial system change, such
                           as bringing up a new server, or making a major
                           operating system change, you should consider
                           changing the selector. </t>
                        <t> Whenever there is either suspicion or evidence of
                           the compromise of the system or the private keys,
                           you should change the selector. </t>
                     </list>
                  </t>
               </section>
               <section title="Deploying New Selectors">
                  <t> A primary consideration in changing the selector is
                     remembering to change it. It needs to be a standard part
                     of the operational staff Methods and Procedures for your
                     systems. If they are separate, both the mail team and the
                     DNS team will be involved in deploying new selectors. </t>
                  <t> When deploying a new selector, it needs to be phased in:
                        <list style="numbers">
                        <t>Generate the new public / private key pair and
                           create a new selector record with the public key in it.</t>
                        <t>Add the new selector record to your DNS.</t>
                        <t>Verify that the new selector record can be used to
                           verify signatures.</t>
                        <t>Turn on signing with the new private key.</t>
                        <t>Remove the old private key from your servers.</t>
                        <t>After a period of time, remove the old selector
                           from your DNS.</t>
                     </list> The time an unused selector should be kept in the
                     DNS system is dependent on the reason it's being changed.
                     If the private key has definitely been exposed, the
                     corresponding selector should be removed immediately.
                     Otherwise, longer periods are allowable. </t>
               </section>
               <section title="Subdomain Considerations">
                  <t> A Domain Name is the basis for making differential
                     quality assessments about a DKIM-signed message. It is
                     reasonable for a single organization to have a variety of
                     very different activities, which warrant a variety of
                     very different assessments. A convenient way to
                     distinguish among such activities is to sign with
                     different domain names. That is, the organization should
                     sign with sub-domain names that are used for different
                     organizational activities. </t>
               </section>
               <section title="Delegating Signing Authority to a Third party">
                  <t>Allowing third parties to sign email from your domain
                     opens your system security to include the security of the
                     third party's systems. At a minimum, you should not allow
                     the third parties to use the same selector and private
                     key as your main mail system. It is recommended that each
                     third party be given their own private key and selector.
                     This limits the exposure for any given private key, and
                     minimizes the impact if any given private key were
                     exposed. </t>
               </section>
            </section>
            <section title="Private Key Management">
               <t> The permissions of private key files must be carefully
                  managed. If key management hardware support is available, it
                  should be used. Auditing software should be used to
                  periodically verify that the permissions on the private key
                  files remain secure. </t>
            </section>
         </section>
         <section title="Example Uses">
            <t> A DKIM signature tells the signature verifier that the owner
               of a particular domain name accepts responsibility for the
               message. Combining this information with information that
               allows the history of the domain name owner to be assessed may
               allow processing the message, based on the probability that the
               message is likely to be trustworthy, or not, without the need
               for heuristic content analysis. </t>
            <section title="Protection of Internal Mail">
               <t>One identity is particularly amenable to easy and accurate
                  assessment: The organization's own identity. Members of an
                  organization tend to trust messages that purport to be from
                  within that organization. However Internet Mail does not
                  provide a straightforward means of determining whether such
                  mail is, in fact, from within the organization. DKIM can be
                  used to remedy this exposure. If the organization signs all
                  of its mail, then its boundary MTAs can look for mail
                  purporting to be from the organization but does not
                  contain a verifiable signature. Such mail can be presumed to
                  be spurious.</t>
                  <t>
                  WHAT ABOUT MAIL TO A MAILING LIST THAT COMES BACK WITH A BROKEN SIGNATURE????
                  </t>
            </section>
            <section title="Recipient-based Assessments">
               <t> Recipients of large volumes of email can internally generate
                  reputation data for email senders. Recipients of
                  smaller volumes of messages are likely to need to acquire
                  reputation data from a third party. In either case the use
                  of reputation data is intrinsically limited to email senders
                  that have established a prior history of sending messages. </t>
               <t> In fact, an email receiving service may be in a position to
                  establish bilateral agreements with particular senders, such
                  as business partners or trusted bulk sending services.
                  Although it is not practical for each recipient to accredit
                  every sender, the definition of core networks of explicit trust
                  can be quite useful. </t>
               <section title="Third-party Reputation and Accreditation Services">
                  <t>For scaling efficiency, it is appealing to use Trusted
                     Third Party reputation and accreditation services, to allow an email sender
                     to obtain a single assessment that is then recognized by
                     every email recipient that recognizes the Trusted Third
                     Party.</t>
               </section>
            </section>
            <section title="DKIM Support in the Client">
               <t> The DKIM specification is expected to be used primarily
                  between Boundary MTAs, or other infrastructure components of
                  the originating and receiving ADMDs. However there is
                  nothing in DKIM that is specific to those venues. In
                  particular, it should be possible to support signing and
                  verifying in MUAs.</t>
               <t> DKIM requires that all verifiers treat messages with
                  signatures that do not verify as if they are unsigned. If
                  verification in the client is to be acceptable to users, it
                  is also essential that successful verification of a
                  signature not result in a less than satisfactory user
                  experience compared to leaving the message unsigned. </t>
            </section>
            <section title="Per user signatures">
               <t> Although DKIM's use of domain names is optimized for a
                  scope of organization-level signing, it is possible to administer
                  sub-domains and/or selectors in a way that
                  supports per-user signing. <list style="hanging">
                     <t hangText="NOTE:  ">As stated earlier, it is important
                        to distinguish between the use of selectors for
                        differential administration of keys, versus the use of
                        sub-domains for differential reputations.</t>
                  </list> As a constraint on an authorized DKIM signing agent,
                  their associated key record can specify restrictions on the
                  email addresses permitted to be signed with that domain and
                  key. A typical intent of this feature is to allow a company
                  to delegate the signing authority for bulk marketing
                  communications without the risk of effectively delegating
                  the authority to sign messages purporting to come from the
                  domain-owning organization's CEO. </t>
               <t>
                  <list style="hanging">
                     <t hangText="NOTE:  "> Any scheme that involves
                        maintenance of a significant number of public keys is
                        likely to require infrastructure enhancements, to
                        support that management. For example, a system in
                        which the end user is required to generate a public
                        key pair and transmit it to the DNS administrator out
                        of band is not likely to meet acceptance criteria for
                        either usability or security. </t>
                  </list>
               </t>
            </section>
         </section>

      <section title="Security Considerations">
         <t> TBD </t>
      </section>
      <section title="IANA Considerations">
         <t> TBD </t>
      </section>
      <section title="Acknowledgements">
         <t> TBD </t>
      </section>

   </middle>
   <back>
      <!-- references split to informative and normative -->
      <!-- references title="Normative References">  </references -->
      <references title="Informative References">&dkimbase; &dkimta;
         &rfc2822; &dk; &pem; &moss; &pgp1; &rfc2821; &rfc2440;
         &rfc3156; &rfc2440bis; &syslog; &rfc3851; &ar; 
         <reference
            anchor="RFC1034">
            <front>
               <title abbrev="Domain Concepts and Facilities">Domain names -
                  concepts and facilities</title>
               <author fullname="P. Mockapetris" initials="P."
                  surname="Mockapetris">
                  <organization>Information Sciences Institute
                  (ISI)</organization>
               </author>
               <date day="1" month="November" year="1987" />
            </front>
            <seriesInfo name="STD" value="13" />
            <seriesInfo name="RFC" value="1034" />
         </reference>
      </references>
   </back>
</rfc>
