--- 1/draft-ietf-dnssec-secext-05.txt 2008-04-11 10:43:19.000000000 +0200 +++ 2/draft-ietf-dnssec-secext-06.txt 2008-04-11 10:43:19.000000000 +0200 @@ -1,23 +1,23 @@ DNS Security Working Group Donald E. Eastlake, 3rd INTERNET-DRAFT CyberCash UPDATES RFC 1034, 1035 Charles W. Kaufman Iris -Expires: 15 February 1996 16 August 1995 +Expires: 10 April 1996 11 October 1995 Domain Name System Security Extensions ------ ---- ------ -------- ---------- Status of This Document - This draft, file name draft-ietf-dnssec-secext-05.txt, is intended to + This draft, file name draft-ietf-dnssec-secext-06.txt, is intended to be become a Proposed Standard RFC. Distribution of this document is unlimited. Comments should be sent to the DNS Security Working Group mailing list or to the authors. This document is an Internet-Draft. 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 @@ -60,112 +60,114 @@ order) to this draft are gratefully acknowledged: Madelyn Badger Matt Crawford James M. Galvin Olafur Gudmundsson Sandy Murphy Masataka Ohta Michael A. Patton Jeffrey I. Schiller + Susan E. Thomson Table of Contents Status of This Document....................................1 Abstract...................................................2 Acknowledgements...........................................2 Table of Contents..........................................3 1. Overview of Contents....................................5 2. Overview of the Extensions.............................6 2.1 Services Not Provided..................................6 2.2 Key Distribution.......................................6 2.3 Data Origin Authentication and Integrity...............7 - 2.3.1 The SIG Resource Record..............................7 + 2.3.1 The SIG Resource Record..............................8 2.3.2 Authenticating Name and Type Non-existence...........8 2.3.3 Special Considerations With Time-to-Live.............8 2.3.4 Special Considerations at Delegation Points..........9 2.3.5 Special Considerations with CNAME RRs................9 - 2.3.6 Signers Other Than The Zone..........................9 + 2.3.6 Signers Other Than The Zone.........................10 2.4 DNS Transaction Authentication........................10 3. The KEY Resource Record................................11 3.1 KEY RDATA format......................................11 3.2 Object Types, DNS Names, and Keys.....................11 3.3 The KEY RR Flag Field.................................12 3.4 The Protocol Octet....................................14 - 3.5 The KEY Algorithm Number and the MD5/RSA Algorithm....15 + 3.5 The KEY Algorithm Number and the MD5/RSA Algorithm....14 3.6 Interaction of Flags, Algorithm, and Protocol Bytes...15 3.7 KEY RRs in the Construction of Responses..............16 3.8 File Representation of KEY RRs........................16 4. The SIG Resource Record................................18 4.1 SIG RDATA Format......................................18 4.1.1 Signature Data......................................20 4.1.2 MD5/RSA Algorithm Signature Calculation.............21 4.1.3 Zone Transfer (AXFR) SIG............................22 4.1.4 Transaction SIGs....................................22 4.2 SIG RRs in the Construction of Responses..............23 4.3 Processing Responses and SIG RRs......................24 - 4.4 Signature Expiration, TTLs, and Validity..............24 + 4.4 Signature Expiration, TTLs, and Validity..............25 4.5 File Representation of SIG RRs........................25 - 5. Non-existent Names and Types...........................26 - 5.1 The NXT Resource Record...............................26 - 5.2 NXT RDATA Format......................................27 - 5.3 Example...............................................27 - 5.4 Interaction of NXT RRs and Wildcard RRs...............28 - 5.5 Blocking NXT Pseudo-Zone Transfers....................29 - 5.6 Special Considerations at Delegation Points...........29 - 6. The AD and CD Bits and How to Resolve Securely.........30 - 6.1 The AD and CD Header Bits.............................30 - 6.2 Boot File Format......................................31 - 6.3 Chaining Through Zones................................32 - 6.4 Secure Time...........................................33 + 5. Non-existent Names and Types...........................27 + 5.1 The NXT Resource Record...............................27 + 5.2 NXT RDATA Format......................................28 + 5.3 Example...............................................28 + 5.4 Interaction of NXT RRs and Wildcard RRs...............29 + 5.5 Blocking NXT Pseudo-Zone Transfers....................30 + 5.6 Special Considerations at Delegation Points...........30 - 7. Operational Considerations.............................34 - 7.1 Key Size Considerations...............................34 - 7.2 Key Storage...........................................35 - 7.3 Key Generation........................................35 - 7.4 Key Lifetimes.........................................35 - 7.5 Signature Lifetime....................................36 - 7.6 Root..................................................36 + 6. The AD and CD Bits and How to Resolve Securely.........31 + 6.1 The AD and CD Header Bits.............................31 + 6.2 Boot File Format......................................32 + 6.3 Chaining Through Zones................................33 + 6.4 Secure Time...........................................34 - 8. Conformance............................................37 - 8.1 Server Conformance....................................37 - 8.2 Resolver Conformance..................................37 + 7. Operational Considerations.............................35 + 7.1 Key Size Considerations...............................35 + 7.2 Key Storage...........................................36 + 7.3 Key Generation........................................36 + 7.4 Key Lifetimes.........................................36 + 7.5 Signature Lifetime....................................37 + 7.6 Root..................................................37 - 9. Security Considerations................................38 - References................................................38 + 8. Conformance............................................38 + 8.1 Server Conformance....................................38 + 8.2 Resolver Conformance..................................38 - Authors Addresses.........................................39 - Expiration and File Name..................................39 + 9. Security Considerations................................39 + References................................................39 - Appendix: Base 64 Encoding................................40 + Authors Addresses.........................................41 + Expiration and File Name..................................41 + + Appendix: Base 64 Encoding................................42 1. Overview of Contents This draft describes extensions of the Domain Name System (DNS) protocol to support DNS security and public key distribution. It assumes that the reader is familiar with the Domain Name System, particularly as described in RFCs 1034 and 1035. Section 2 provides an overview of the extensions and the key distribution, data origin authentication, and transaction security they provide. Section 3 discusses the KEY resource record, its structure, use in DNS responses, and file representation. These resource records - represent the pubic keys of entities named in the DNS and are used + represent the public keys of entities named in the DNS and are used for key distribution. Section 4 discusses the SIG digital signature resource record, its structure, use in DNS responses, and file representation. These resource records are used to authenticate other resource records in the DNS and optionally to authenticate DNS transactions. Section 5 discusses the NXT resource record and its use in DNS responses. The NXT RR permits authenticated denial in the DNS of the existence of a name or of a particular type for an existing name. @@ -203,22 +205,21 @@ It is part of the design philosophy of the DNS that the data in it is public and that the DNS gives the same answers to all inquirers. Following this philosophy, no attempt has been made to include any sort of access control lists or other means to differentiate inquirers. In addition, no effort has been made to provide for any confidentiality for queries or responses. (This service may be - available via other protocols such as a network level security - protocol providing confidentiality.) + available via IPSEC. [put refs to IPSEC RFCs here if available]) 2.2 Key Distribution Resource records (RRs) are defined to associate keys with DNS names. This permits the DNS to be used as a general public key distribution mechanism in support of the data origin authentication and transaction authentication DNS services as well as other security services. The syntax of a KEY resource record (RR) is described in Section 3. @@ -227,51 +228,52 @@ key associated with that entity, and the actual public key parameters. Under conditions described in Section 3, security aware DNS servers may automatically attempt to return KEY resources as additional information, along with those resource records actually requested, to minimize the number of queries needed. 2.3 Data Origin Authentication and Integrity - Security is provided by associating with resource records in the DNS - cryptographically generated digital signatures. Commonly, there will - be a single private key that signs for an entire zone. If a security - aware resolver reliably learns the public key of the zone, it can - verify, for any data read from that zone, that it was properly + Authentication is provided by associating with resource records in + the DNS cryptographically generated digital signatures. Commonly, + there will be a single private key that signs for an entire zone. If + a security aware resolver reliably learns the public key of the zone, + it can verify, for any data read from that zone, that it was properly authorized and is reasonably current. The expected implementation is for the zone private key to be kept off-line and used to re-sign all of the records in the zone periodically. - The data origin authentication key belongs to the zone and not to the - servers that store copies of the data. That means compromise of a - server or even all servers for a zone will not necessarily affect the - degree of assurance that a resolver has that the data is genuine. + This data origin authentication key belongs to the zone and not to + the servers that store copies of the data. That means compromise of + a server or even all servers for a zone will not necessarily affect + the degree of assurance that a resolver has that it can determine + whether data is genuine. A resolver can learn the public key of a zone either by reading it from DNS or by having it staticly configured. To reliably learn the public key by reading it from DNS, the key itself must be signed. Thus, to provide a reasonable degree of security, the resolver must be configured with at least the public key of one zone that it can use to authenticate signatures. From that, it can securely read the public keys of other zones if the intervening zones in the DNS tree are secure. (It is in principle more secure to have the resolver manually configured with the public keys of multiple zones, since then the compromise of a single zone would not permit the faking of information from other zones. It is also more administratively cumbersome, however, particularly when public keys change.) - Adding origin authentication and integrity requires no change to the - "on-the-wire" DNS protocol beyond the addition of the signature - resource types (and, as a practical matter, the key resource type - needed for key distribution). This service can be supported by + Adding data origin authentication and integrity requires no change to + the "on-the-wire" DNS protocol beyond the addition of the signature + resource types and, as a practical matter, the key resource type + needed for key distribution. This service can be supported by existing resolver and server implementations so long as they can support the additional resource types (see Section 8) with the one exception that CNAME referals can not be authenticated if they are from non-security aware servers (see Section 2.3.5). If signatures are always separately retrieved and verified when retrieving the information they authenticate, there will be more trips to the server and performance will suffer. To avoid this, security aware servers mitigate that degradation by always sending the signature(s) needed. @@ -279,28 +281,28 @@ 2.3.1 The SIG Resource Record The syntax of a SIG resource record (signature) is described in Section 4. It includes the type of the RR(s) being signed, the name of the signer, the time at which the signature was created, the time it expires (when it is no longer to be believed), its original time to live (which may be longer than its current time to live but cannot be shorter), the cryptographic algorithm in use, and the actual signature. - Every name in a zone supporting signed data will have associated with - it at least one SIG resource record for each resource type under that - name. A security aware server supporting the performance enhanced - version of the DNS protocol security extensions will attempt to - return, with all records retrieved, the corresponding SIGs. If a - server does not support the protocol, the resolver must retrieve all - the SIG records for a name and select the one or ones that sign the - resource record(s) that resolver is interested in. + Every name in a secured zone will have associated with it at least + one SIG resource record for each resource type under that name. A + security aware server supporting the performance enhanced version of + the DNS protocol security extensions will attempt to return, with all + records retrieved, the corresponding SIGs. If a server does not + support the protocol, the resolver must retrieve all the SIG records + for a name and select the one or ones that sign the resource + record(s) that resolver is interested in. 2.3.2 Authenticating Name and Type Non-existence The above security mechanism provides only a way to sign existing RRs in a zone. "Data origin" authentication is not obviously provided for the non-existence of a domain name in a zone or the non-existence of a type for an existing name. This gap is filled by the NXT RR which authenticatably asserts a range of non-existent names in a zone and the non-existence types for the initial name in that range. @@ -363,24 +365,24 @@ In general, security aware servers must be used to securely CNAME in DNS. Security aware servers must (1) allow KEY, SIG, and NXT RRs along with CNAME RRs, (2) suppress CNAME processing on retrieval of these types as well as on retrieval of the type CNAME, and (3) automatically return SIG RRs authenticating the CNAME or CNAMEs encountered in resolving a query. 2.3.6 Signers Other Than The Zone There are two cases where a SIG resource record is signed by other - than the zone private key. One is for future support of dynamic - update where an entity is permitted to authenticate/update its own - records. The public key of the entity must be present in the DNS and - be appropriately signed but the other RR(s) may be signed with the + than the zone private key. One is for support of dynamic update + where an entity is permitted to authenticate/update its own records. + The public key of the entity must be present in the DNS and be + appropriately signed but the other RR(s) may be signed with the entity's key. The other is for support of transaction authentication as described in Section 2.4 below. 2.4 DNS Transaction Authentication The data origin authentication service described above protects resource records but provides no protection for DNS message headers. If header bits are falsely set by a server, there is little that can be done. However, it is possible to add transaction authentication. Such authentication means that a resolver can be sure it is at least @@ -391,26 +393,26 @@ This is accomplished by optionally adding a special SIG resource record to the end of the reply which digitally signs the concatenation of the server's response and the resolver's query. The private key used belongs to the host composing the reply, not to the zone being queried. The corresponding public key is stored in and retrieved from the DNS. Because replies are highly variable, message authentication SIGs can not be pre-calculated. Thus it will be necessary to keep the private key on-line, for example in software or in a directly connected piece of hardware. - DNS level transaction authentication would be unnecessary if a lower - level (i.e., IP level) end-to-end security protocol were available. - However, such a protocol is not yet standardized and when it is, - there will be a significant time during which there will be systems - on which it will be hard to add such a protocol but relatively easy - to replace the DNS components. + DNS level transaction authentication will be unnecessary when IPSEC + end-to-end security protocol is generally available [refernce IPSEC + RFCs when RFC numbers assigned]. However, there will be a + significant time during which there will be systems on which it will + be hard to add such a protocol but relatively easy to replace the DNS + components. 3. The KEY Resource Record The KEY resource record (RR) is used to document a key that is associated with a Domain Name System (DNS) name. It will be a public key as only public keys are stored in the DNS. This can be the public key of a zone, of a host or other end entity, or a user. A KEY RR is, like any other RR, authenticated by a SIG RR. Security aware DNS implementations MUST be designed to handle at least two simultaneously valid keys of the same type associated with a name. @@ -507,61 +509,56 @@ under the entity name. For example, "j.random_user" on host.subdomain.domain could have a public key associated through a KEY RR with name j\.random_user.host.subdomain.domain. It could be used in an security protocol where authentication of a user was desired. This key would be useful in IP or other security for a user level service such a telnet, ftp, rlogin, etc. Bit 6 on indicates that this is a key associated with the non- zone "entity" whose name is the RR owner name. This will commonly be a host but could, in some parts of the DNS tree, be some other type - of entity such as an Autonomous System [draft-ietf-dnssec-as-map- - *.txt]. This is the public key used in connection with the optional - DNS transaction authentication service that can be used if the owner - name is a DNS server host. It could also be used in an IP-security - protocol where authentication of a host was desired such as routing, - NTP, etc. + of entity such as a telephone number [RFC 1530]. This is the public + key used in connection with the optional DNS transaction + authentication service that can be used if the owner name is a DNS + server host. It could also be used in an IP-security protocol where + authentication of a host was desired such as routing, NTP, etc. Bit 7 is the "zone" bit and indicates that this is a zone key for the zone whose name is the KEY RR owner name. This is the fundamental type of DNS data origin authentication public key. - Bit 8 is reserved to be the "IPSEC" bit and indicate that this - key is valid for use in conjunction with the IP level security - standard. This key could be used in connection with secured - communication on behalf of an end entity or user whose name is the - owner name of the KEY RR if the entity or user bits are on. The - presence of a KEY resource with the IPSEC and entity bits on and - experimental and no-key bits off is a guarantee that the host speaks - IPSEC. + Bit 8 is reserved to be the IPSEC bit and indicate that this key + is valid for use in conjunction with the IP level security standard. + This key could be used in connection with secured communication on + behalf of an end entity or user whose name is the owner name of the + KEY RR if the entity or user bits are on. The presence of a KEY + resource with the IPSEC and entity bits on and experimental and no- + key bits off is a guarantee that the host speaks IPSEC. - Bit 9 is reserved to be the "MOSS" bit and indicate that this - key is valid for use in conjunction with MIME object security - standard. This key could be used in connection with secured - communication on behalf of an end entity or user whose name is the - owner name of the KEY RR if the entity or user bits are on. The - presence of a KEY resource with the MOSS and entity bits on and - experimental and no-key bits off is a guarantee that the host speaks - MOSS. + Bit 9 is reserved to be the "email" bit and indicate that this + key is valid for use in conjunction with MIME security multiparts. + This key could be used in connection with secured communication on + behalf of an end entity or user whose name is the owner name of the + KEY RR if the entity or user bits are on. Bits 10-11 are reserved and must be zero. Bits 12-15 are the "signatory" field. If non-zero, it indicates that the key can validly sign RRs of the same name. If the owner name is a wildcard, then RRs with any name which is in the wildcard's scope can be signed. Fifteen different non-zero values are possible for this field and any differences in their meaning are reserved for - definition in connection with possible future DNS dynamic update or - other new DNS commands. This field is meaningless for zone keys - which always have authority to sign any RRs in the zone. The - signatory field, like all other aspects of the KEY RR, is only - effective if the KEY RR is appropriately signed by a SIG RR. + definition in connection with DNS dynamic update or other new DNS + commands. This field is meaningless for zone keys which always have + authority to sign any RRs in the zone. The signatory field, like all + other aspects of the KEY RR, is only effective if the KEY RR is + appropriately signed by a SIG RR. 3.4 The Protocol Octet It is anticipated that keys stored in DNS will be used in conjunction with Internet protocols other than DNS (keys with zone bit or signatory field non-zero) and IPSEC (keys with IPSEC bit set). The protocol octet is provided to indicate that a key is valid for such use and, for end entity keys or the host part of user keys, that the secure version of that protocol is implemented on that entity or host. @@ -595,77 +592,79 @@ adequate for all point to point IP communication meaning that additional flag field bits would only be assigned, when appropriate as indicated above, to protocols with a store-and-forward nature (other than DNS) or otherwise not subsumed into a point-to-point paradigm. 3.5 The KEY Algorithm Number and the MD5/RSA Algorithm This octet is the key algorithm parallel to the same field for the SIG resource. The MD5/RSA algorithm described in this draft is - number 1. Numbers 2 through 253 are available for assignment should + number 1. Numbers 2 through 252 are available for assignment should sufficient reason arise. However, the designation of a new algorithm could have a major impact on interoperability and requires an IETF standards action. Number 254 is reserved for private use and will never be assigned a specific algorithm. For number 254, the public key area shown in the packet diagram above will actually begin with an Object Identifier (OID) indicating the private algorithm in use and the remainder of the area is whatever is required by that - algorithm. Values 0 and 255 are reserved. + algorithm. Number 253 is reserved for use where the date or other + labeling fields of SIGs are desired withouth any actual security. For + number 253, the public key area is null. Values 0 and 255 are + reserved. If the no key bit is zero and the algorithm field is 1, indicating the MD5/RSA algorithm, the public key field is structured as follows: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | pub exp length| public key exponent / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | / +- modulus / | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/ - To promote interoperability, the exponent and modulus are limited to - 2552 bits in length. The public key exponent is a variable length - unsigned integer. Its length in octets is represented as one octet - if it is in the range of 1 to 255 and by a zero octet followed by a - two octet unsigned length if it is longer than 255 bytes. The public - key modulus field is a multiprecision unsigned integer. The length - of the modulus can be determined from the RDLENGTH and the preceding - RDATA fields including the exponent. Leading zero bytes are - prohibited in the exponent and modulus. + To promote interoperability, the exponent and modulus are each + limited to 2552 bits in length. The public key exponent is a + variable length unsigned integer. Its length in octets is + represented as one octet if it is in the range of 1 to 255 and by a + zero octet followed by a two octet unsigned length if it is longer + than 255 bytes. The public key modulus field is a multiprecision + unsigned integer. The length of the modulus can be determined from + the RDLENGTH and the preceding RDATA fields including the exponent. + Leading zero bytes are prohibited in the exponent and modulus. 3.6 Interaction of Flags, Algorithm, and Protocol Bytes Various combinations of the no-key bit, algorithm byte, protocol byte, and any protocol indicating flags (such as the reserved IPSEC - flag) are possible. (Not that the zone flag bit being on or the + flag) are possible. (Note that the zone flag bit being on or the signatory field being non-zero is effectively a DNS protocol flag on.) The meaning of these combinations is indicated below: NK = no key flag AL = alogrithm byte PR = protocols indicated by protocol byte or protocol flags x represents any valid non-zero value. AL PR NK Meaning 0 0 0 Illegal, claims key but has bad algorithm field. - 0 0 1 Authenticates total lack of security for owner. + 0 0 1 Specifies total lack of security for owner. 0 x 0 Illegal, claims key but has bad algorithm field. 0 x 1 Specified protocols insecure, others may be secure. x 0 0 Useless. Gives key but no protocols to use it. x 0 1 Useless. Denies key but for no protocols. - x x 0 Authenticates key for protocols and certifies - that those protocols are implemented with - security. + x x 0 Specifies key for protocols and certifies that + those protocols are implemented with security. x x 1 Algorithm not understood for protocol. (remember, in reference to the above table, that a protocol byte of 255 means all protocols with protocol bytes assigned) 3.7 KEY RRs in the Construction of Responses An explicit request for KEY RRs does not cause any special additional information processing except, of course, for the corresponding SIG RR from a security aware server. @@ -682,21 +681,22 @@ will be included. On inclusion of A (or AAAA) RRs as additional information, their KEY RRs will also be included but with lower priority than the relevant A (or AAAA) RRs. 3.8 File Representation of KEY RRs KEY RRs may appear as lines in a zone data file. The flag field, protocol, and algorithm number octets are then represented as unsigned integers. Note that if the "no key" flag is - on in the flags, nothing appears after the algorithm octet. + on in the flags or the algorithm specified is 253, nothing appears + after the algorithm octet. The remaining public key portion is represented in base 64 (see Appendix) and may be divided up into any number of white space separated substrings, down to single base 64 digits, which are concatenated to obtain the full signature. These substrings can span lines using the standard parenthesis. Note that the public key may have internal sub-fields but these do not appear in the master file representation. For example, with algorithm 1 there is a public exponent and then a modulus and with @@ -740,46 +740,49 @@ / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The value of the SIG RR type is 24. The "type covered" is the type of the other RRs covered by this SIG. The algorithm number is an octet specifying the digital signature algorithm used parallel to the algorithm octet for the KEY RR. The MD5/RSA algorithm described in this draft is number 1. Numbers 2 - through 253 are available for assignment should sufficient reason + through 252 are available for assignment should sufficient reason arise to allocate them. However, the designation of a new algorithm could have a major impact on the interoperability of the global DNS systems and requires an IETF standards action. Number 254 is reserved for private use and will not be assigned a specific algorithm. For number 254, the "signature" area shown above will actually begin with an Object Identifier (OID) indicating the private algorithm in use and the remainder of the signature area is whatever - is required by that algorithm. Values 0 and 255 are reserved. + is required by that algorithm. Number 253 is used when the time + fields or other non-signature fields of the SIG are desired without + any actual security. For number 253, the signature field will be + null. Values 0 and 255 are reserved. The "labels" octet is an unsigned count of how many labels there are in the original SIG RR owner name not counting the null label for root and not counting any initial "*" for a wildcard. If a secured retrieval is the result of wild card substitution, it is necessary for the resolver to use the original form of the name in verifying the digital signature. This field helps optimize the determination of the original form reducing the effort in authenticating signed data. If, on retrieval, the RR appears to have a longer name than indicated by "labels", the resolver can tell it is the result of wildcard substitution. If the RR owner name appears to be shorter than the labels count, the SIG RR should be considered corrupt and ignored. The maximum number of labels possible in the current DNS is 127 but the entire octet is reserved and would be required should DNS names - ever be expanded to 255 labels. The following table give some + ever be expanded to 255 labels. The following table gives some examples. The value of "labels" is at the top, the retrieved owner name on the left, and the table entry is the name to use in signature verification except that "bad" means the RR is corrupt. labels= | 0 | 1 | 2 | 3 | 4 | --------+-----+------+--------+----------+----------+ .| . | bad | bad | bad | bad | d.| *. | d. | bad | bad | bad | c.d.| *. | *.d. | c.d. | bad | bad | b.c.d.| *. | *.d. | *.c.d. | b.c.d. | bad | @@ -822,45 +825,47 @@ The "signer's name" field is the domain name of the signer generating the SIG RR. This is frequently the zone which contained the RR(s) being authenticated. The signer's name may be compressed with standard DNS name compression when being transmitted over the network. The structure of the "signature" field is described below. 4.1.1 Signature Data - The actual signature portion of the SIG RR binds the other RDATA - fields to all of the "type covered" RRs with that owner name. These - covered RRs are thereby authenticated. To accomplish this, a data - sequence is constructed as follows: + Except for algorithm number 253 where it is null, the actual + signature portion of the SIG RR binds the other RDATA fields to all + of the "type covered" RRs with that owner name. These covered RRs + are thereby authenticated. To accomplish this, a data sequence is + constructed as follows: data = RDATA | RR(s)... where | is concatenation, RDATA is all the RDATA fields in the SIG RR itself before the signature, and RR(s) are all the RR(s) of the type covered with the same owner name and class as the SIG RR in canonical form and order. For purposes of DNS security, the canonical form for an RR is the RR with domain names (1) fully expanded (no name compression via - pointers) and (2) all domain name letters set to lower case. For - purposes of DNS security, the canonical order for RRs is to sort them - in ascending order by name, then by type, as left justified unsigned - octet sequences in network (transmission) order where a missing octet - sorts before a zero octet. (See also ordering discussion in Section - 5.1.) Within any particular name and type they are similarly sorted - by RDATA as a left justified unsigned octet sequence. EXCEPT that the - type SIG RR(s) covering any particular type appear immediately after - the other RRs of that type. Thus if at name a.b there is one A RR - and one KEY RR, their order with SIGs for concatenating the "data" to - be signed would be as follows: + pointers) and (2) all domain name letters set to lower case. + + For purposes of DNS security, the canonical order for RRs is to sort + them in ascending order by name, then by type, as left justified + unsigned octet sequences in network (transmission) order where a + missing octet sorts before a zero octet. (See also ordering + discussion in Section 5.1.) Within any particular name and type they + are similarly sorted by RDATA as a left justified unsigned octet + sequence. EXCEPT that the type SIG RR(s) covering any particular type + appear immediately after the other RRs of that type. Thus if at name + a.b there is one A RR and one KEY RR, their order with SIGs for + concatenating the "data" to be signed would be as follows: a.b. A .... a.b. SIG A ... a.b. KEY ... a.b. SIG KEY ... (SIGs on type ANY should not be included in a zone.) How this data sequence is processed into the signature is algorithm dependent. @@ -916,62 +921,63 @@ The AXFR SIG must be calculated last of all zone key signed SIGs in the zone. It really belongs to the zone as a whole, not to the zone name. The AXFR SIG is only retrieved as part of a zone transfer. After validation of the AXFR SIG, the zone may be considered valid without verification of all the internal zone SIGs in the zone; however, any SIGs signed by entity keys or the like must still be validated. The AXFR SIG is transmitted first in a zone transfer so the receiver can tell immediately that they may be able to avoid verifying other zone signed SIGs. - Dynamic zone RRs which might be added by some future dynamic zone - update protocol and signed by an end entity or user key rather than a - zone key (see Section 3.2) are not included. They originate in the - network and will not, in general, be migrated to the recommended off - line zone signing procedure (see Section 8.2). Thus such dynamic RRs - are not directly signed by the zone, are not included in the AXFR - SIG, and are not generally protected against omission during zone - transfers. + Dynamic zone RRs which might be added by a dynamic zone update + protocol and signed by an end entity or user key rather than a zone + key (see Section 3.2) are not included in the AXFR SIG. They + originate in the network and will not, in general, be migrated to the + recommended off line zone signing procedure (see Section 8.2). Thus + such dynamic RRs are not directly signed by the zone, are not + included in the AXFR SIG, and are not generally protected against + omission from zone transfers. 4.1.4 Transaction SIGs A response message from a security aware server may optionally contain a special SIG as the last item in the additional information section to authenticate the transaction. This SIG has a "type covered" field of zero, which is not a valid RR type. It is calculated by using a "data" (see Section 4.1.2) of the entire preceding DNS reply message, including DNS header, concatenated with the entire DNS query message that produced this response, including the query's DNS header. That is - data = full response (less trailing message SIG) | full query + + data = full response (less final transaction SIG) | full query Verification of the transaction SIG (which is signed by the server host key, not the zone key) by the requesting resolver shows that the query and response were not tampered with in transit, that the response corresponds to the intended query, and that the response comes from the queried server. 4.2 SIG RRs in the Construction of Responses Security aware servers MUST, for every authoritative RR the query will return, attempt to send the available SIG RRs which authenticate the requested RR. The following rules apply to the inclusion of SIG RRs in responses: 1. when an RR is placed in a response, its SIG RR has a higher priority for inclusion than other RRs that may need to be included. If space does not permit its inclusion, the response MUST be considered truncated. 2. when a SIG RR is present for an RR to be included in the - additional information section, the response MUST not be + additional information section, the response MUST NOT be considered truncated if space does not permit the inclusion of the SIG RR. Sending SIGs to authenticate non-authoritative data (glue records and NS RRs for subzones) is unnecessary and must be avoided. Note that KEYs for subzones are authoritative. If a SIG covers any RR that would be in the answer section of the response, its automatic inclusion MUST be the answer section. If it covers an RR that would appear in the authority section, its @@ -980,43 +986,44 @@ appear in the additional information section. Optionally, DNS transactions may be authenticated by a SIG RR at the end of the response in the additional information section (Section 4.1.4). Such SIG RRs are signed by the DNS server originating the response. Although the signer field must be the name of the originating server host, the owner name, class, TTL, and original TTL, are meaningless. The class and TTL fields can be zero. To conserve space, the owner name SHOULD be root (a single zero octet). If transaction authentication is desired, that SIG RR must be - considered higher priority than any other RR in the answer. + considered higher priority for inclusion than any other RR in the + answer. 4.3 Processing Responses and SIG RRs The following rules apply to the processing of SIG RRs included in a response: 1. a security aware resolver that receives a response from what it believes to be a security aware server via a communication path that it believes to be secure with the AD bit (see Section 6.1) - set, MAY choose to accept the RRs as received - without verifying the SIG RRs. + set, MAY choose to accept the RRs as received without verifying + the SIG RRs. 2. in other cases, a security aware resolver SHOULD verify the SIG RRs for the RRs of interest. This may involve initiating additional queries for SIG or KEY RRs, at least in the case of getting a response from an insecure server. (As explained in 4.2 above, it will not be possible to secure CNAMEs being served up by - old resolvers.) + non-secure resolvers.) - NOTE: Implementors might expect the SHOULD to be a MUST. However, - local policy or the calling application may not require the - security services. + NOTE: Implementors might expect the above SHOULD to be a MUST. + However, local policy or the calling application may not require + the security services. 3. If SIG RRs are received in response to a user query explicitly specifying the SIG type, no special processing is required. If the message does not pass reasonable checks or the SIG does not check against the signed RRs, the SIG RR is invalid and should be ignored. If all of the SIG RR(s) purporting to authenticate a set of RRs are invalid, then the set of RR(s) is not authenticated. If the SIG RR is the last RR in a response in the additional @@ -1044,34 +1051,39 @@ are transmitted in a query response, the TTL should be trimmed so that current time plus the TTL does not extend beyond the signature expiration time. Thus, in general, the TTL on an transmitted RR would be min(sigExpTim,max(zoneMinTTL,min(originalTTL,currentTTL))) 4.5 File Representation of SIG RRs A SIG RR can be represented as a single logical line in a zone data - file [RFC1033] but there are some special problems as described + file [RFC1033] but there are some special considerations as described below. (It does not make sense to include a transaction authenticating SIG RR in a file as it is a transient authentication that covers data including an ephemeral transaction number so it must be calculated in real time by the DNS server.) There is no particular problem with the signer, covered type, and times. The time fields appears in the form YYYYMMDDHHMMSS where YYYY is the year, the first MM is the month number (01-12), DD is the day of the month (01-31), HH is the hour in 24 hours notation (00-23), the second MM is the minute (00-59), and SS is the second (00-59). The original TTL and algorithm fields appear as unsigned integers. + If the original TTL, which applies to the type signed, is the same as + the TTL of the SIG RR itself, it may be omitted. The date field + which follows it is larger than the maximum possible TTL so there is + no ambiguity. + The "labels" field does not appear in the file representation as it can be calculated from the owner name. The key footprint appears as an unsigned decimal number. However, the signature itself can be very long. It is the last data field and is represented in base 64 (see Appendix) and may be divided up into any number of white space separated substrings, down to single base 64 digits, which are concatenated to obtain the full signature. These substrings can be split between lines using the @@ -1086,46 +1098,46 @@ The nonexistence of a name in a zone is indicated by the NXT ("next") RR for a name interval containing the nonexistent name. An NXT RR and its SIG are returned in the authority section, along with the error, if the server is security aware. The same is true for a non-existent type under an existing name. NXT RRs will also be returned if an explicit query is made for the NXT type. The existence of a complete set of NXT records in a zone means that any query for any name and type to a security aware server serving - the zone should result in an reply containing at least one signed RR. + the zone will result in an reply containing at least one signed RR. NXT RRs do not appear in zone master files since they can be derived from the rest of the zone. 5.1 The NXT Resource Record The NXT resource record is used to securely indicate that RRs with an owner name in a certain name interval do not exist in a zone and to indicate what zone signed type RRs are present for an existing name. The owner name of the NXT RR is an existing name in the zone. It's RDATA is a "next" name and a type bit map. The presence of the NXT RR means that generally no name between its owner name and the name in its RDATA area exists and that no other types exist under its owner name. This implies a canonical ordering of all domain names in a zone. The ordering is to sort labels as unsigned left justified octet - strings where the absence of a octet sorts before a zero octet. - Names are then sorted by sorting on the highest level label and then, - within those names with the same highest level label by the next - lower label, etc. Since we are talking about a zone, the zone name - itself always exists and all other names are the zone name with some - prefix of lower level labels. Thus the zone name itself always sorts - first. + strings where the absence of a octet sorts before a zero octet and + upper case letters are treated as lower case letters. Names are then + sorted by sorting on the highest level label and then, within those + names with the same highest level label by the next lower label, etc. + Since we are talking about a zone, the zone name itself always exists + and all other names are the zone name with some prefix of lower level + labels. Thus the zone name itself always sorts first. There is a problem with the last NXT in a zone as it wants to have an owner name which is the last existing name in sort order, which is easy, but it is not obvious what name to put in its RDATA to indicate the entire remainder of the name space. This is handled by treating the name space as circular and putting the zone name in the RDATA of the last NXT. There are special considerations due to interaction with wildcards as explained below. @@ -1158,37 +1170,45 @@ to be zero. Note that bit 30, for NXT, will always be on so the minimum bit map length is actually four octets. The NXT bit map should be printed as a list of type mnemonics or decimal numbers similar to the WKS RR. The size of the bit map can be inferred from the RDLENGTH and the length of the next domain name. 5.3 Example - Assume zone foo.bar has entries for + Assume zone foo.tld has entries for - big.foo.bar, - medium.foo.bar. - small.foo.bar. - tiny.foo.bar. + big.foo.tld, + medium.foo.tld. + small.foo.tld. + tiny.foo.tld. - Then a query to a security aware server for huge.foo.bar would - produce an error reply with the authority section data including the - following: + Then a query to a security aware server for huge.foo.tld would + produce an error reply with the authority section data including + something like the following: - big.foo.bar. NXT medium.foo.bar. A, MX, SIG, NXT + big.foo.tld. NXT medium.foo.tld. A MX SIG NXT + big.foo.tld. SIG NXT 1 3 ( ;type-cov=NXT, alg=1, labels=3 + 19960102030405 ;signature expiration + 19951211100908 ;time signed + 2143658709 ;key footprint + foo.tld. ;signer + MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU + 1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= ;signature (640 bits) + ) - Note that this response implies that big.foo.bar is an existing name + Note that this response implies that big.foo.tld is an existing name in the zone and thus has other RR types associated with it than NXT. However, only the NXT (and its SIG) RR appear in the response to this - query for huge.foo.bar, which is a non-existent name. + query for huge.foo.tld, which is a non-existent name. 5.4 Interaction of NXT RRs and Wildcard RRs Since, in some sense, a wildcard RR causes all possible names in an interval to exist, there should not be an NXT RR that would cover any part of this interval. Thus if *.X.ZONE exists you would expect an NXT RR that ends at X.ZONE and one that starts with the last name covered by *.X.ZONE. However, this "last name covered" is something very ugly and long like \255\255\255....X.zone. So the NXT for the interval following is simply given the owner name *.X.ZONE. This "*" @@ -1201,27 +1221,28 @@ The existence of one or more wildcard RRs covering a name interval makes it possible for a malicious server to hide any more specificly named RRs in the internal. The server can just falsely return the wildcard match NXT instead of the more specificly named RRs. If there is a zone wide wildcard, there will be an NXT RR whose owner name is the wild card and whose RDATA is the zone name. In this case a server could conceal the existence of any more specific RRs in the zone. (It would be possible to design a more strict NXT feature which would eliminate this possibility. But it would be more complex - and might be so constraining as to make any future dynamic update - feature that could create new names very difficult (see Section - 3.2).) + and might be so constraining as to make any dynamic update feature + that could create new names very difficult (see Section 3.2).) - What name should be put into the RDATA of an RR with a name that is - within a wild card scope? Since the "next" existing name will be one - that matches the wild card, the wild card name should be used. + What name should be put into the RDATA of an NXT RR with an owner + name that is within a wild card scope? Since the "next" existing + name will be one that matches the wild card, the wild card name + should be used. Inclusion of such NXTs within a wild card scope is + optional. 5.5 Blocking NXT Pseudo-Zone Transfers In a secure zone, a resolver can query for the initial NXT associated with the zone name. Using the next domain name RDATA field from that RR, it can query for the next NXT RR. By repeating this, it can walk through all the NXTs in the zone. If there are no wildcards, it can use this technique to find all names in a zone. If it does type ANY queries, it can incrementally get all information in the zone and perhaps defeat attempts to administratively block zone transfers. @@ -1255,41 +1276,42 @@ authenticate the non-existence of a name and both NXTs, if available, on explicit query for type NXT. Insecure servers will never automatically return an NXT and may only return the NXT from the subzone on explicit queries. 6. The AD and CD Bits and How to Resolve Securely Retrieving or resolving authentic data from the Domain Name System (DNS) involves starting with one or more trusted public keys. With - trusted keys, a browser willing to perform cryptography can progress + trusted keys, a resolver willing to perform cryptography can progress securely through the secure DNS zone structure to the zone of interest as described in Section 6.3. Such trusted public keys would normally be configured in a manner similar to that described in Section 6.2. However, as a practical matter, a security aware resolver would still gain some confidence in the results it returns even if it was not configured with any keys but trusted what it got from a local well known server as a starting point. Data stored at a server needs security labels of Authenticated, Pending, or Insecure. There is also a fourth transient state of Bad which indicates that SIG checks have explicitly failed on the data. - Such data is not retained at a security aware server. Authenticated - means that the data has a valid SIG under a KEY traceable via a chain - of zero or more SIG and KEY RRs to a KEY configured at the resolver - via its boot file. Pending data has no authenticated SIGs and at - least one additional SIG the browser is still trying to authenticate. - Insecure data is data which it is known can never be either - authenticated or found bad because it is in a zone with no key or an - experimental key. Behavior in terms of control of and flagging based - on such data labels is described in Section 6.1. + Such Bad data is not retained at a security aware server. + Authenticated means that the data has a valid SIG under a KEY + traceable via a chain of zero or more SIG and KEY RRs to a KEY + configured at the resolver via its boot file. Pending data has no + authenticated SIGs and at least one additional SIG the resolver is + still trying to authenticate. Insecure data is data which it is + known can never be either Authenticated or found Bad because it is in + a zone with no key or an experimental key. Behavior in terms of + control of and flagging based on such data labels is described in + Section 6.1. The proper validation of signatures requires a reasonably secure shared opinion of the absolute time between resolvers and servers as described in Section 6.4. In getting to the data of interest to respond to a query, a secure resolver may encounter genuine non-secure zones. It may proceed through such zones but should report this as described in Section 6.5. @@ -1325,46 +1347,47 @@ the checking disabled bit and thus will be answered by security aware servers only with authenticated data. Of course security aware resolvers can not trust the AD bit unless they trust the server they are talking to and have a secure path to it. Any security aware resolver willing to do cryptography should assert the CD bit on all queries to reduce DNS latency time by allowing security aware servers to answer before they have resolved the validity of data. - Security aware servers never return bad data. For non-security aware + Security aware servers never return Bad data. For non-security aware resolvers or security aware resolvers requesting service by having - the CD bit clear, security aware servers return only authenticated or - insecure data with the AD bit set in the response. Security aware - resolvers will know that if data is insecure versus authentic by the - absence of SIG RRs. Security aware servers may return pending data + the CD bit clear, security aware servers return only Authenticated or + Insecure data with the AD bit set in the response. Security aware + resolvers will know that if data is Insecure versus Authentic by the + absence of SIG RRs. Security aware servers may return Pending data to security aware resolvers requesting the service by clearing the AD bit in the response. The AD bit may only be set on a response if the - RRs in the response are either authenticated or insecure. + RRs in the response are either Authenticated or Insecure. 6.2 Boot File Format The format for a boot file directive to configure a starting zone key is as follows: pubkey name flags protocol algorithm key-data for a public key. "name" is the owner name (if the line is translated into a KEY RR). Flags indicates the type of key and is - the same as the flag octet in the KEY RR. In particular, if the "no - key" bit is on in flags, then all fields after algorithm may be - omitted. Algorithm is the algorithm in use where one is the MD5/RSA - algorithm and 254 indicates a private algorithm. The material after - the algorithm is algorithm dependent and, for private algorithms, - starts with the algorithm's identifying OID. It is encoded in base - 64 (see Appendix). + the same as the flag octet in the KEY RR. Algorithm is the algorithm + in use where one is the MD5/RSA algorithm and 254 indicates a private + algorithm. The material after the algorithm is algorithm dependent + and, for private algorithms, starts with the algorithm's identifying + OID. If the "no key" bit is on in flags or the algorithm is + specified as 253, then the key-data after algorithm may be omitted. + It is treated as an octet stream and encoded in base 64 (see + Appendix). A file of keys for cross certification or other purposes can be configured though the keyfile directive as follows: keyfile filename The file looks like a master file except that it can only contain KEY and SIG RRs with the SIGs signed under a key configured with the pubkey directive. @@ -1392,21 +1415,21 @@ A resolver should keep track of the number of successive secure zones traversed from a starting point to any secure zone it can reach. In general, the lower such a distance number is, the greater the confidence in the data. Data configured via a boot file directive should be given a distance number of zero. Should a query encounter different data for the same query with different distance values, that with a larger value should be ignored. A security conscious resolver should completely refuse to step from a secure zone into a non-secure zone unless the non-secure zone is - certified to be non-secure or only experimentally secure by the + certified to be non-secure, or only experimentally secure, by the presence of an authenticated KEY RR for the non-secure zone with a no key flag or the presence of a KEY RR with the experimental bit set. Otherwise the resolver is probably getting completely bogus or spoofed data. If legitimate non-secure zones are encountered in traversing the DNS tree, then no zone can be trusted as secure that can be reached only via information from such non-secure zones. Since the non-secure zone data could have been spoofed, the "secure" zone reach via it could be counterfeit. The "distance" to data in such zones or zones reached @@ -1450,21 +1473,21 @@ length, and key generation (the least common operation) will vary with the fourth power of the modulus length. The current best algorithms for factoring a modulus and breaking RSA security vary roughly with the square of the modulus itself. Thus going from a 640 bit modulus to a 1280 bit modulus only increases the verification time by a factor of 4 but increases the work factor of breaking the key by over 2^3000. [RSA FAQ] An upper bound of 2552 bit has been established for the MD4/RSA DNS security algorithm for interoperability purposes. - However, larger keys increase size of the KEY and SIG RRs. This + However, larger keys increase the size of the KEY and SIG RRs. This increases the chance of DNS UDP packet overflow and the possible necessity for using higher overhead TCP in responses. The recommended minimum RSA algorithm modulus size, 640 bits, is believed by the authors to be secure at this time and for some years but high level zones in the DNS tree may wish to set a higher minimum, perhaps 1000 bits, for security reasons. (Since the United States National Security Agency generally permits export of encryption systems using an RSA modulus of up to 512 bits, use of that small a modulus, i.e. n, must be considered weak.) @@ -1488,22 +1511,22 @@ be tampered with if the host it resides on is compromised. For maximum security, the master copy of the zone file should be off net and should not be updated based on an unsecured network mediated communication. Note, however, that secure resolvers need to be configured with some trusted on-line public key information (or a secure path to such a resolver). Non-zone private keys, such as host or user keys, may have to be kept - on line to be used for real-time purposes such a IPSEC session set-up - or secure mail. + on line to be used for real-time purposes such as DNS transaction + security, IPSEC session set-up, or secure mail. 7.3 Key Generation Careful key generation is a sometimes over looked but absolutely essential element in any cryptographically secure system. The strongest algorithms used with the longest keys are still of no use if an adversary can guess enough to lower the size of the likely key space so that it can be exhaustively searched. Suggestions will be found in RFC 1750. @@ -1587,34 +1610,34 @@ RRs, (2) maintains appropriate information in its local caches and database to indicate which RRs have been authenticated and to what extent they have been authenticated, (3) performs additional queries as necessary to attempt to obtain KEY, SIG, or NXT RRs from non- security aware servers, (4) normally sets the CD query header bit on its queries. 9. Security Considerations This document concerns technical details of extensions to the Domain - Name System (DNS) protocol to provide data integrity and data origin + Name System (DNS) protocol to provide data integrity and origin authentication, public key distribution, and optional transaction security. If should be noted that, at most, these extensions guarantee the validity of resource records, including KEY resource records, retrieved from the DNS. They do not magically solve other security problems. For example, using secure DNS you can have high confidence - in the IP address you retrieve for a host; however, this does not - stop someone for substituting an unauthorized host at that address or - capturing packets sent to that address and responding with packets - apparently from that address. Any reasonably complete security - system will require the protection of many other facets of the - Internet. + in the IP address you retrieve for a host name; however, this does + not stop someone for substituting an unauthorized host at that + address or capturing packets sent to that address and falsely + responding with packets apparently from that address. Any reasonably + complete security system will require the protection of many other + facets of the Internet. References [NETSEC] - Network Security: PRIVATE Communications in a PUBLIC World, Charlie Kaufman, Radia Perlman, & Mike Speciner, Prentice Hall Series in Computer Networking and Distributed Communications 1995. [PKCS1] - PKCS #1: RSA Encryption Standard, RSA Data Security, Inc., 3 June 1991, Version 1.4. @@ -1626,20 +1649,23 @@ [RFC1034] - Domain Names - Concepts and Facilities, P. Mockapetris, November 1987 [RFC1035] - Domain Names - Implementation and Specifications [RFC1305] - Network Time Protocol (v3), D. Mills, April 9 1992. [RFC1321] - The MD5 Message-Digest Algorithm, R. Rivest, April 16 1992. + [RFC1530] - Principles of Operation for the TPC.INT Subdomain: + General Principles and Policy, C. Malamud, M. Rose, October 6 1993. + [RFC1750] - Randomness Requirements for Security, D. Eastlake, S. Crocker, J. Schiller, December 1994. [RSA FAQ] - RSADSI Frequently Asked Questions periodic posting. Authors Addresses Donald E. Eastlake, 3rd CyberCash, Inc. 318 Acton Street @@ -1651,23 +1677,23 @@ Charles W. Kaufman Iris Associates 1 Technology Park Drive Westford, MA 01886 USA Telephone: +1 508-392-5276 EMail: charlie_kaufman@iris.com Expiration and File Name - This draft expires 15 February1995. + This draft expires 10 April 1995. - Its file name is draft-ietf-dnssec-secext-05.txt. + Its file name is draft-ietf-dnssec-secext-06.txt. Appendix: Base 64 Encoding The following encoding technique is taken from RFC 1521 by Borenstein and Freed. It is reproduced here in an edited form for convenience. A 65-character subset of US-ASCII is used, enabling 6 bits to be represented per printable character. (The extra 65th character, "=", is used to signify a special processing function.)