DNS Working Group Donald E. Eastlake, 3rd INTERNET-DRAFT IBM Expires: November 1999 May 1999 Secret Key Establishment for DNS (TKEY RR) ------ --- ------------- --- --- ----- --- Donald E. Eastlake 3rd Status of This Document This draft, file name draft-ietf-dnsind-tkey-00.txt, is intended to be become a Proposed Standard RFC. Distribution of this document is unlimited. Comments should be sent to the DNS working group mailing list or to the author. This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months. Internet-Drafts may be updated, replaced, or obsoleted by other documents at any time. It is not appropriate to use Internet- Drafts as reference material or to cite them other than as a ``working draft'' or ``work in progress.'' The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. To view the entire list of current Internet-Drafts, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast). Donald E. Eastlake, 3rd [Page 1] INTERNET-DRAFT The DNS TKEY RR May 1999 Abstract [draft-ietf-dnsind-tsig-*.txt] provides a means of authenticating and securing Domain Name System (DNS) queries and responses using shared secret keys via the TSIG resource record (RR). However, it provides no mechanism for setting up such keys other than manual exchange. This document describes a TKEY RR that can be used in a number of different modes to establish shared secret keys between a DNS resolver and server. Acknowledgments The substantial comments and ideas of the following persons (listed in alphabetic order) have been incorporated herein and are gratefully acknowledged: Olafur Gudmundsson Stuart Kwan Donald E. Eastlake, 3rd [Page 2] INTERNET-DRAFT The DNS TKEY RR May 1999 Table of Contents Status of This Document....................................1 Abstract...................................................2 Acknowledgments............................................2 Table of Contents..........................................3 1. Introduction............................................4 1.1 General Principles.....................................4 1.2 Overview of Contents...................................5 2. The TKEY Resource Record................................5 3. Exchange via Resolver Query.............................7 3.1 Query for Server Assigned Keying.......................8 3.2 Query for Diffie-Hellman Exchanged Keying..............9 3.3 Query for GSS-API Established..........................9 4. Spontaneous Server Inclusion...........................10 4.1 Spontaneous Server Assigned Keying....................10 4.2 Spontaneous Diffie-Hellman Keying.....................10 4.3 Spontaneous GSS-API Exchange..........................11 4.4 Spontaneous Key Deletion..............................11 5. TKEY Dynamic Update Requests...........................11 5.1 Exchange via TKEY 'Add'...............................11 5.2 TKEY Deletion.........................................12 6. Methods of Encryption..................................12 7. IANA Considerations....................................13 8. Security Considerations................................13 References................................................14 Author's Address..........................................15 Expiration and File Name..................................15 Donald E. Eastlake, 3rd [Page 3] INTERNET-DRAFT The DNS TKEY RR May 1999 1. Introduction The Domain Name System (DNS) is a hierarchical, distributed, highly available database used for mapping between domain names and addresses, for email routing, and for other information [RFC 1034, 1035]. It has been extended to provide for public key security and dynamic update [RFC 2136, RFC 2535]. [draft-ietf-dnsind-tsig-*.txt] provides a means of more efficiently authenticating and securing DNS messages using shared secret keys via the TSIG resource record (RR) but provides no mechanism for setting up such keys other than manual exchange. This document describes a TKEY RR that can be used in a number of different modes to establish such shared secret keys between a DNS resolver and server. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119]. 1.1 General Principles TKEY is a meta-RR that is not stored or cached in the DNS and does not appear in zone files. It supports a variety of modes for the establishment and deletion of shared secret keys between DNS entities such as resolvers and servers. The establishment of such a key requires that state be maintained at both the resolver and the server and the allocation of the resources to maintain such state may require mutual agreement. In the absence of such agreement, servers are free to return errors for any attempt to use TKEY and resolvers are free to ignore any TKEY RRs they receive. In all cases herein, the term "resolver" includes that part of a server which makes full and incremental [RFC 1995] zone transfer queries as well as other queries. Servers are not required to implement any particular mode or modes of the defined modes of TKEY shared secret key establishment or deletion and may return errors for any they do not support. Based on experience, in the future more modes may be added or some modes described herein may be deprecated. The means by which the shared secret keying material, exchanged via TKEY, is actually used in any particular TSIG algorithm is algorithm dependent and is defined in connection with that algorithm. Note that this keying material and TSIGs that use it are associated with DNS hosts. They are not tied to zones. They may be used to authenticate queries and responses but they do not provide zone Donald E. Eastlake, 3rd [Page 4] INTERNET-DRAFT The DNS TKEY RR May 1999 stored DNS data origin authentication [RFC 2535]. Two modes of TKEY, the server assigned and resolver assigned modes, perform encryption which may effect their export or import status for some countries. All other aspects of DNS security, including the SIG, KEY, NXT, and TSIG RRs and all other defined modes of TKEY perform authentication (signatures and signature verification) only. 1.2 Overview of Contents Section 2 below specifies the TKEY resource record (RR) and provides a high level description of its constituent fields. Section 3 discusses key exchange via queries for type TKEY. This is applicable to the server assigned, Diffie-Hellman exchange, and GSS- API establishment modes. Section 4 discusses spontaneous inclusion of TKEY RRs in responses by servers. This is applicable to key deletion and to server assigned and Diffie-Hellman exchange key establishment. Section 5 discusses use of dynamic update requests for type TKEY. This supports optional key exchange via resolver update request, which is applicable to key deletion and to the resolver assigned mode. Section 6 describes encryption methods for transmitting secret key information. Section 7 covers IANA considerations in assignment of TKEY modes. Finally, Section 8 touches on some security considerations. 2. The TKEY Resource Record The TKEY resource record (RR) has the structure given below. Its RR type code is 249. Donald E. Eastlake, 3rd [Page 5] INTERNET-DRAFT The DNS TKEY RR May 1999 Field Type Comment ----- ---- ------- NAME domain see description below TTYPE u_int16_t TKEY CLASS u_int16_t ignored, should be zero TTL u_int32_t SHOULD be zero RDLEN u_int16_t size of RDATA RDATA: Algorithm: domain Inception: u_int32_t Expiration: u_int32_t Mode: u_int16_t Error: u_int16_t Key Size: u_int16_t Key Data: octet-stream Other Size: u_int16_t Other Data: octet-stream undefined by this protocol The Name field's meaning differs somewhat with mode and context as explained in subsequent sections. The TTL field SHOULD always be zero to be sure that older DNS implementations do not cache TKEY RRs. The algorithm name is a domain name with the same meaning as in [draft-ietf-dnsind-tsig-*.txt]. The algorithm determines how the secret keying material exchanged using the TKEY RR is actually used to derive the algorithm specific key that is used. The inception time and expiration time are in number of seconds since the beginning of 1 January 1970 GMT ignoring leap seconds treated as modulo 2**32 using ring arithmetic [RFC 1982]. In messages between a DNS resolver to a DNS server where these fields are meaningful, they are either the requested validity interval for the keying material asked for or specify the validity interval of keying material provided. To avoid replay attacks, to keying material used to authenticate TKEY keying material MUST NOT have a lifetime of more then 2**31 seconds. This applies to keying material used in either a TSIG or a SIG(0) transaction or request signature. The mode field specifies the general scheme for key agreement. Note that implementation of TKEY as a whole and of any particular mode is optional. The following values of the Mode octet are defined or reserved: Donald E. Eastlake, 3rd [Page 6] INTERNET-DRAFT The DNS TKEY RR May 1999 Value Description ----- ----------- 0 - reserved 1 server/responder assignment 2 Diffie-Hellman exchange 3 GSS-API negotiation 4 resolver/querier assignment 5 key deletion 6-65534 - available, see IANA considerations section 65535 -reserved The error code field is an extended RCODE. The following values are defined: Value Description ----- ----------- 0 - no error 1-15 a DNS RCODE 16 BADSIG 17 BADKEY 18 BADTIME 19 BADMODE The key data size field is an unsigned 16 bit integer in network order which specifies the size of the key exchange data field in octets. The meaning of the key data depends on the mode. The Other Size and Other Data fields are not used. The RDLEN field MUST equal the length of the RDATA section through the end of other data or the RR is to be considered malformed and rejected. 3. Exchange via Resolver Query One method for a resolver and a server to establish a shared secret key for use in TSIG is through queries from the resolver for type TKEY. Such queries MUST either be accompanied by one or more TKEY RRs in the additional information section to indicate the mode(s) in use and other information where required or the resolver and server must have a prior agreement that supplies any information that would otherwise have had to be conveyed by TKEY RR(s) in the query. For TKEY(s) appearing in a query, the TKEY RR name SHOULD be a domain locally unique at the resolver (or globally unique), less than 128 octets long, and meaningful to the resolver to distinguish keys and/or key agreement sessions. (For resolvers not wishing to make this use of the name, it may be specified as root to minimize length.) For TKEY(s) appearing in a response to a query, the TKEY RR name SHOULD be a globally unique server assigned domain. If the TKEY in a response is the result of a query containing a TKEY with a non- Donald E. Eastlake, 3rd [Page 7] INTERNET-DRAFT The DNS TKEY RR May 1999 root name, that query TKEY name SHOULD be incorporated as the prefix of the response TKEY name. Type TKEY queries SHOULD NOT be flagged as recursive and servers MAY ignore the recursive header bit in TKEY queries they receive. For every mode defined below, the inception and expiration times in a query TKEY are set to the time interval for which the resolver wishes the requested key to be valid and they are set in a successful response to the actual time interval during which the server will consider the key valid. Future modes may be defined which ignore the inception and expiration time fields. 3.1 Query for Server Assigned Keying In server assigned keying, the DNS server host generates the keying material and it is sent to the resolver encrypted under a resolver host key. See section 6 for description of encryption methods. A resolver sends a query for type TKEY accompanied by a TKEY RR specifying the "server assignment" mode and a resolver host KEY RR to be used in encrypting the response, both in the additional information section. The TKEY algorithm field is set to the signature algorithm the resolver plans to use. It is recommended that any "key data" optionally provided in the query TKEY by the resolver be strongly mixed with server generated randomness [RFC 1750] to derive the keying material to be used. The KEY that appears in the query SHOULD have a zero TTL. It need not be accompanied by a SIG(KEY) and if the query is signed by the resolver host and that signature is verified, then any SIG(KEY) provided MAY be ignored for key exchange purposes. The KEY RR in such a query SHOULD have a name that corresponds to the resolver host but it is only essential that it be a public key for which the resolver has the corresponding private key so it can decrypt the response data. Accepting and responding to an unsigned query of this sort may drain some entropy from an entropy pool being maintained by the server and used for secret key generation and so might enable an entropy exhaustion attack. In addition, some significant amount of computational resources may be used in the public key encryption of response data. To protect against these effects, a server SHOULD require such a query to be signed and MAY rate limit responses. The server response contains a TKEY in its answer section with the server assigned mode. If the error field is non-zero, the query failed for the reason given. If the error field is zero, the KEY RR provided in the query will be echoed back and the key data portion of the response TKEY RR will be the server assigned keying data Donald E. Eastlake, 3rd [Page 8] INTERNET-DRAFT The DNS TKEY RR May 1999 encrypted under the public key in the resolver provided KEY RR. The name of the TKEY RR will be the server assigned name of the key and SHOULD be globally unique. 3.2 Query for Diffie-Hellman Exchanged Keying Diffie-Hellman (DH) key exchange is means whereby two parties can derive some shared secret information without requiring any secrecy of the messages they exchange [Schneier]. Provisions have been made for the storage of DH public keys in the DNS [RFC 2539]. A client sends a query for type TKEY accompanied by a TKEY RR in the additional information section specifying the "Diffie-Hellman" mode and accompanied by a KEY RR specifying a client host Diffie-Hellman key. The TKEY algorithm field is set to the signature algorithm the resolver plans to use and any "key data" provided in the TKEY is ignored by the server. Accepting and responding to an unsigned query of this sort may use significant computation at the server; however, if the server requires that the request be signed, then if no shared secret is in place to permit a TSIG to be used on the request, it would be necessary to use a SIG(0) the verification of which would impose its own computational load. The server response contains a TKEY in its answer section with the Diffie-Hellman mode. If the error field is non-zero, the query failed for the reason given. If the error field is zero, the client host supplied Diffie-Hellman KEY should be echoed back and a server host Diffie-Hellman KEY RR will also be present in the response. Both parties can then calculate the same shared secret quantity from the pair of Diffie-Hellman keys used [Schneier] provided they use the same modulus. If the server host does not have an appropriate Diffie-Hellman key to use for the exchange, it should return the BADKEY error. 3.3 Query for GSS-API Established This is described in a separate document [draft-skwan-gss-tsig-*.txt] which should be seen for the full description. Basically, when an acceptable symmetric key is not yet in place, the resolver can send a query for type TKEY with a TKEY specifying the GSS-API mode in the additional information section and a GSS-API token in the key data portion. The server responds with a TKEY specifying the GSS-API mode and a GSS-API token in the key data portion. The resolver and server Donald E. Eastlake, 3rd [Page 9] INTERNET-DRAFT The DNS TKEY RR May 1999 feed these tokens to their local GSS implementation and iterate until an error is encountered or a key (GSS-API session) is established. A similar exchange can be used to delete a GSS-API session. Any issues of possible encryption of the GSS-API token data being transmitted are handled by the GSS-API level. In addition, the GSS- API level provides its own authentication so that this mode of TKEY query and response MAY be, but do not need to be, signed with TSIG or SIG(0). 4. Spontaneous Server Inclusion A DNS server may include TKEY RRs spontaneously as additional information in responses. This SHOULD only be done if the server knows the querier understands TKEY and has this option implemented. This technique can be used to establish a server assigned key, a Diffie-Hellman exchange key, for GSS-API exchange, and to delete a key. A disadvantage of this technique is that there is no way for the server to get any immediate error or success indication back and, in the case of UDP, no way to even know if the DNS response reached the resolver. 4.1 Spontaneous Server Assigned Keying A server can include in the additional information section of a response a server assignment mode TKEY with encrypted keying material in its key data section along with a KEY RR specifying the client public key used for the encryption. Such a response SHOULD be signed but the KEY RR need not be signed by a SIG(KEY). A server should only do this if there is sufficient room in a query and it has reason to believe the resolver will understand such additional data. The KEY RR used MUST be one for which it is believed that the resolver host has the corresponding private key or it will not be able to decrypt the keying material. 4.2 Spontaneous Diffie-Hellman Keying A server can include in the additional information section of a response a Diffie-Hellman exchange mode TKEY along with two KEY RRs specifying the client and server host public keys used for the exchange. Such a response SHOULD be signed but the KEY RRs need not be signed by a SIG(KEY). A server should only do this if there is sufficient room in a query and it has reason to believe the resolver host will understand such additional data. Donald E. Eastlake, 3rd [Page 10] INTERNET-DRAFT The DNS TKEY RR May 1999 4.3 Spontaneous GSS-API Exchange A server can spontaneously include in the additional information section of a response, a GSS-API mode TKEY. The information in the key data section of such a TKEY is a GSS-API token which SHOULD be fed by the resolver to its local GSS-API implementation. If such a response is signed, the signature must verify before processing the data. To the extent that GSS-API provides its own security, such a response may not need to be signed. To the extent that GSS-API handles duplicated messages, such a spontaneous TKEY can be sent repeatedly, until, perhaps, a response via a GSS-API mode TKEY query is received. 4.4 Spontaneous Key Deletion A server can hint to a client that it has deleted a symmetric key by spontaneously including a TKEY RR in the additional information section of a response with the key's name and specifying the key deletion mode. Such a response SHOULD be signed. If authenticated, it deletes all keys with the given name whose effective time period overlaps the inception to expiration period given in the deletion mode TKEY. (If the inception time of one symmetric key is equal to the expiration time of another, or vice versa, they do not overlap.) Failure by a client to receive or properly process such additional information in a response would simply mean that the client might use a key that the server had discarded and then get an error indication. 5. TKEY Dynamic Update Requests If a DNS server supports dynamic update [RFC 2136], then dynamic update request can be used to exchange resolver assigned symmetric keys as described in section 5.1 below and to delete previously exchanged keys from a server as described in section 5.2 below. 5.1 Exchange via TKEY 'Add' Optionally, a server can accept resolver assigned keys. The keying material must be encrypted under a server host key for protection in transmission as described in Section 6. The resolver sends an update request to add a TKEY RR that specifies the keying data with a KEY RR in the additional information section specifying the server host public key used to encrypt the data. The name of the key and the keying data are completely controlled by the Donald E. Eastlake, 3rd [Page 11] INTERNET-DRAFT The DNS TKEY RR May 1999 sending resolver so a globally unique key name SHOULD be used. The server SHOULD require that this request be signed with a TSIG, if there already exists an appropriate shared secret, or a SIG(0) by the resolver host. The KEY RR used MUST be one for which the server has the corresponding private key or it will not be able to decrypt the keying material. 5.2 TKEY Deletion Keys established via TKEY can be treated as soft state. Since DNS transactions are originated by the resolver, the resolver can simply toss keys, although it may have to go through another key exchange if it later needs one. Similarly, the server can discard keys although that will result in an error on receiving a query with a TSIG using the discarded key. The key expiration provided in the TKEY and the ability of each party to discard keys may be adequate but servers that support dynamic update [RFC 2136] may optionally implement key deletion whereby the server discards a key on receipt from a resolver of a delete request for a TKEY with the key's name. The mode and most fields of the TKEY being "deleted" are ignored. But, to allow for the possibility of multiple keys with the same name but different time periods, the only keys deleted are those whose time period overlaps with that specified by the inception and expiration in the TKEY being "deleted". 6. Methods of Encryption For the server assigned and resolver assigned key exchange, the keying material is sent within the key data field of a TKEY RR encrypted under the private key corresponding to the public key in an accompanying KEY RR [RFC 2535]. The secret keying material being send will generally be fairly short, usually less than 256 bits, because that is adequate for very strong protection with modern keyed hash or symmetric algorithms. If the KEY RR specifies the RSA algorithm, then the keying material is encrypted as per the description of RSA encryption in PKCS#1 [RFC 2437]. (Note, the secret keying material being sent is directly RSA encrypted in PKCS#1 format, It is not "enveloped" under some other symmetric algorithm.) In the unlikely event that the keying material will not fit within one RSA modulus of the chosen public key, additional RSA encryption blocks are included. The length of each block is clear from the public RSA key specified and the PKCS#1 padding makes it clear what part of the encrypted data is actually keying material and what part is formatting or the required at least Donald E. Eastlake, 3rd [Page 12] INTERNET-DRAFT The DNS TKEY RR May 1999 eight bytes of random [RFC 1750] padding. 7. IANA Considerations This section is to be interpreted as provided in [RFC 2434]. Mode field values 0x0000 through 0x00FF, and 0XFF00 through 0XFFFF can only be assigned by an IETF standards action excluding Experimental Standards (and 1 through 5 are assigned by this Proposed Standard). Special consideration should be given before the allocation of meaning for Mode field values 0x0000 and 0xFFFF. Mode field values 0x0100 through 0x0FFF and 0xF0000 through 0xFEFF are allocated by an IETF consensus excluding Experimental Standards. Mode field values 0x1000 through 0xEFFF are allocated based on RFC documentation of their use or the issuance of an Experimental Standard. Mode values should not be changed when the status of their use changes. I.E. a mode value assigned for an Experimental Standard should not be changed later just because that standard's status is changed to Proposed. 8. Security Considerations To avoid different interpretations of the inception and expiration times in TKEY RRs, resolvers and servers exchanging them must have the same idea of what time it is. One way of doing this is with the NTP protocol [RFC 2030] but that or any other time synchronization MUST be done securely. It is recommended that the server require TKEY queries be signed. However, for currently defined modes, relatively little damage will be done if an unsigned query of this sort is accepted and processed, as described above, for each mode. In addition, requiring that a TKEY query be signed by a TSIG (if there exists an acceptable exchanged key between the parties) or a SIG(0) may itself impose significant computational requirements on the server, particularly in verifying SIG(0) public key signatures. Responses to TKEY queries SHOULD always have DNS transaction signatures to protect the integrity of any keying data, error codes, etc. This signature, if present, MUST use a previously established secret (TSIG) or public (SIG(0)) key and MUST NOT use any key that the response to be verified is itself providing. Donald E. Eastlake, 3rd [Page 13] INTERNET-DRAFT The DNS TKEY RR May 1999 References RFC 1034 - P. Mockapetris, "Domain Names - Concepts and Facilities", STD 13, November 1987. RFC 1035 - P. Mockapetris, "Domain Names - Implementation and Specifications", STD 13, November 1987. RFC 1750 - D. Eastlake, S. Crocker & J. Schiller, "Randomness Recommendations for Security", December 1994. RFC 1982 - Robert Elz, Randy Bush, "Serial Number Arithmetic", 09/03/1996. RFC 1995 - masataka Ohta, "Incremental Zone Transfer in DNS", August 1996. RFC 2030 - D. Mills, "Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI", October 1996. RFC 2119 - S. Bradner, "Key words for use in RFCs to Indicate Requirement Levels", March 1997. RFC 2136 - P. Vixie, S. Thomson, Y. Rekhter, J. Bound, "Dynamic Updates in the Domain Name System (DNS UPDATE)", 04/21/1997. RFC 2434 - T. Narten, H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs, October 1998. RFC 2437 - B. Kaliski, J. Staddon, "PKCS #1: RSA Cryptography Specifications Version 2.0", October 1998. RFC 2535 - D. Eastlake, "Domain Name System Security Extensions", March 1999. RFC 2539 - D. Eastlake, "Storage of Diffie-Hellman Keys in the Domain Name System (DNS)", March 1999. [Schneier] - Bruce Schneier, "Applied Cryptography: Protocols, Algorithms, and Source Code in C", 1996, John Wiley and Sons draft-ietf-dnssec-update2-*.txt - Donald E. Eastlake 3rd, "Secure Domain Name System Dynamic Update". draft-ietf-dnsind-tsig-*.txt - P. Vixie, O. Gudmundsson, D. Eastlake, "Secret Key Transaction Signatures for DNS (TSIG)". draft-skwan-gss-tsig-*.txt - S. Kwan, P. Garg, R. Viswanathan, "GSS Algorithm for TSIG (GSS-TSIG)" Donald E. Eastlake, 3rd [Page 14] INTERNET-DRAFT The DNS TKEY RR May 1999 Author's Address Donald E. Eastlake 3rd IBM 65 Shindegan Hill Road, RR #1 Carmel, NY 10512 USA Telephone: +1 914-276-2668 (h) +1 914-784-7913 (w) FAX: +1 914-784-3833 (w) email: dee3@us.ibm.com Expiration and File Name This draft expires November 1999. Its file name is draft-ietf-dnsind-tkey-00.txt. Donald E. Eastlake, 3rd [Page 15]