| < draft-hoffman-keys-linkage-from-dns-00.txt | draft-hoffman-keys-linkage-from-dns-01.txt > | |||
|---|---|---|---|---|
| Network Working Group P. Hoffman | Network Working Group P. Hoffman | |||
| Internet-Draft VPN Consortium | Internet-Draft VPN Consortium | |||
| Intended status: Standards Track J. Schlyter | Intended status: Standards Track J. Schlyter | |||
| Expires: February 14, 2011 Kirei AB | Expires: February 25, 2011 Kirei AB | |||
| W. Kumari | W. Kumari | |||
| A. Langley | A. Langley | |||
| August 13, 2010 | August 24, 2010 | |||
| Using Secure DNS to Associate Keys with Domain Names For TLS | Using Secure DNS to Associate Certificates with Domain Names For TLS | |||
| draft-hoffman-keys-linkage-from-dns-00 | draft-hoffman-keys-linkage-from-dns-01 | |||
| Abstract | Abstract | |||
| TLS uses PKIX certificates for authenticating the server. Users want | TLS and DTLS uses certificates for authenticating the server. Users | |||
| their applications to verify that the key in the certificate provided | want their applications to verify that the certificate provided by | |||
| by the TLS server is in fact associated with the domain name they | the TLS server is in fact associated with the domain name they | |||
| expect. Instead of trusting a certificate authority to have made | expect. Instead of trusting a certificate authority to have made | |||
| this association correctly, the user might instead trust the | this association correctly, the user might instead trust the | |||
| authoritative DNS server for the domain name to make that | authoritative DNS server for the domain name to make that | |||
| association. This document describes how to use secure DNS to | association. This document describes how to use secure DNS to | |||
| associate the key that appears in a TLS server's certificate with the | associate the TLS server's certificate with the the intended domain | |||
| the intended domain name. | name. | |||
| Status of this Memo | Status of this Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on February 14, 2011. | This Internet-Draft will expire on February 25, 2011. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2010 IETF Trust and the persons identified as the | Copyright (c) 2010 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| 1. Introduction | 1. Introduction | |||
| The first response from the server in TLS [RFC5246] may contain a | The first response from the server in TLS may contain a certificate. | |||
| PKIX certificate. In order for the TLS client to authenticate that | In order for the TLS client to authenticate that it is talking to the | |||
| it is talking to the expected TLS server, the client must validate | expected TLS server, the client must validate that this certificate | |||
| that the key in this certificate is associated with the domain name | is associated with the domain name used by the client to get to the | |||
| used by the client to get to the server. Currently, the client must | server. Currently, the client must extract the domain name from one | |||
| extract the domain name from one of many places in the PKIX | of many places in the certificate, must trust the trust anchor upon | |||
| certificate, must trust the trust anchor upon which the server's PKIX | which the server's certificate is rooted, and must perform correct | |||
| certificate is rooted, and must perform correct PKIX validation on | validation on the certificate. | |||
| the certificate. | ||||
| This document applies to both TLS [RFC5246] and DTLS [4347bis]. In | ||||
| order to make the document more readable, it mostly only talks about | ||||
| "TLS", but in all cases, it means "TLS or DTLS". | ||||
| Some people want a different way to authenticate the association of | Some people want a different way to authenticate the association of | |||
| the key in the server's certificate with the intended domain name | the server's certificate with the intended domain name without | |||
| without trusting the CA. Given that the DNS administrator for a | trusting the CA. Given that the DNS administrator for a domain name | |||
| domain name is authorized to give identifying information about the | is authorized to give identifying information about the zone, it | |||
| zone, it makes sense to allow that administrator to also make an | makes sense to allow that administrator to also make an authoritative | |||
| authoritative binding between the domain name and a public key that | binding between the domain name and a certificate that might be used | |||
| might be used by a host at that domain name. The easiest way to do | by a host at that domain name. The easiest way to do this is to use | |||
| this is to use the DNS. | the DNS. | |||
| A key association is a cryptographic hash of the public key in a PKIX | A certificate association is a cryptographic hash of a certificate | |||
| certificate (sometimes called a "fingerprint"). That is, a hash is | (sometimes called a "fingerprint"). That is, a hash is taken of the | |||
| taken of the DER-encoded subjectPublicKeyInfo field of the PKIX | certificate, and that hash is the certificate association. The type | |||
| certificate as defined in [RFC5280], and that hash is the key | of hash function used can be chosen by the DNS administrator. | |||
| association. The type of hash function used can be chosen by the DNS | ||||
| administrator. | ||||
| DNSSEC, which is defined in RFCs 4033, 4034, and 4035 ([RFC4033], | DNSSEC, which is defined in RFCs 4033, 4034, and 4035 ([RFC4033], | |||
| [RFC4034], and [RFC4035]), uses cryptographic keys and digital | [RFC4034], and [RFC4035]), uses cryptographic keys and digital | |||
| signatures to provide authentication of DNS data. Information | signatures to provide authentication of DNS data. Information | |||
| retrieved from the DNS and that is validated using DNSSEC is thereby | retrieved from the DNS and that is validated using DNSSEC is thereby | |||
| proved to be the authoritative data. | proved to be the authoritative data. | |||
| This document defines a secure method to associate the key in the | This document defines a secure method to associate the certificate | |||
| PKIX certificate that is obtained from the TLS server with a domain | that is obtained from the TLS server with a domain name using DNS | |||
| name using DNS protected by DNSSEC. Because the key association was | protected by DNSSEC. Because the certificate association was | |||
| retrieved based on a DNS query, the domain name in the query is by | retrieved based on a DNS query, the domain name in the query is by | |||
| definition associated with the key. | definition associated with the certificate. | |||
| This document only relates to securely getting the DNS information | This document only relates to securely getting the DNS information | |||
| for the key association using DNSSEC; other secure DNS mechanisms are | for the certificate association using DNSSEC; other secure DNS | |||
| out of scope. The DNSSEC signature MUST be validated on all | mechanisms are out of scope. The DNSSEC signature MUST be validated | |||
| responses in order to assure the proof of origin of the data. | on all responses in order to assure the proof of origin of the data. | |||
| This document only relates to securely getting keys for TLS; other | This document only relates to securely associating certificates for | |||
| security protocols are handled in other documents. For example, keys | TLS and DTLS; other security protocols are handled in other | |||
| for IPsec are covered in [RFC4025] and keys for SSH are covered in | documents. For example, keys for IPsec are covered in [RFC4025] and | |||
| [RFC4255]. | keys for SSH are covered in [RFC4255]. | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| 2. Getting TLS Key Associations from the DNS | This document is being discussed on the "keyassure" mailing list; see | |||
| <https://www.ietf.org/mailman/listinfo/keyassure>. | ||||
| This section describes three equivalent methods for encoding TLS | ||||
| associations: a new certificate type of the existing CERT RR (defined | ||||
| in [RFC4398]), a new resource record (RR) called "TLSFP" and a TXT RR | ||||
| that can be emitted when the query has "_tlsfp" as the leftmost | ||||
| label. | ||||
| EXTREMELY IMPORTANT NOTE: Only one of these methods describe in this | ||||
| document should be selected for the final protocol. We have listed | ||||
| them in our approximate order of preference, but look forward to | ||||
| discussion. When that decision is made, the two methods not used | ||||
| will be moved to the appendix. | ||||
| 2.1. The TLSFP Certificate Type of the CERT RR | 2. Getting TLS Certificate Associations from the DNS with the CERT RR | |||
| This section describes the TLSFP Certificate Type of the CERT RR. | ||||
| The CERT RR [RFC4398] allows expansion by defining new certificate | The CERT RR [RFC4398] allows expansion by defining new certificate | |||
| types. The new TLSFP certificate type is defined here. A query on a | types. The new TLSFP certificate type is defined here. A query on a | |||
| domain name for the CERT RR can return one or more records of the | domain name for the CERT RR can return one or more records of the | |||
| type CERT, and zero or more of those CERT responses can be of type | type CERT, and zero or more of those CERT responses can be of type | |||
| TLSFP. | TLSFP. | |||
| The format of the TLSFP certificate type is binary. In the record, | o The TLSFP certificate type is TBD. | |||
| all integers consist of two bytes in network byte order. The record, | ||||
| which MUST be in the order defined here, is: | ||||
| o An integer specifying how many port numbers are listed. If this | ||||
| value is zero (0), the key association is valid for any port. | ||||
| o An optional unordered set of two-byte integers, ranging from 1 to | ||||
| 65535, specifying the TCP/UDP ports for which the key association | ||||
| is valid. | ||||
| o An integer specifying the type of hash algorithm used for the key | ||||
| association. | ||||
| o A variable-length set of bytes containing the hash of the | ||||
| associated key. | ||||
| For example: | ||||
| www.example.com. IN CERT TLSFP 0 0 ( AQG7ASCWCnpVpwaT | ||||
| wRsZLt3FmDw45y/8H/Ie9tyEWLd2nZF9 ) | ||||
| Note that, unlike the following two format proposals, no version | ||||
| number is needed for the certificate type because a request for a | ||||
| CERT RR can yield multiple results. If there is a later improvement | ||||
| to the TLSFP certificate type, it could be sent along with a TLSFP | ||||
| certificate type in a response. | ||||
| 2.2. The TLSFP Resource Record | ||||
| The new RR TLSFP resource record is defined here. A query on a | ||||
| domain name for the TLSFP type can return one or more records of the | ||||
| type TLSFP. | ||||
| The format of the TLSFP response is binary. In the record, all | ||||
| integers consist of two bytes in network byte order. The record, | ||||
| which MUST be in the order defined here, is: | ||||
| o The version number. This is useful if non-critical changes are | o The key tag and algorithm fields are both set to zero. | |||
| made to this RR later. The initial version number is 42. | ||||
| o An integer specifying how many port numbers are listed. If this | The format of the TLSFP certificate is a binary record, which MUST be | |||
| value is zero (0), the key association is valid for any port. | in the order defined here, is: | |||
| o An optional unordered set of two-byte integers, ranging from 1 to | o A one-octet value, called "hash type", specifying the type of hash | |||
| 65535, specifying the TCP/UDP ports for which the key association | algorithm used for the certificate association. This value has | |||
| is valid. | the same values as those of the DS RR, as defined in [RFC4034] and | |||
| its successors. | ||||
| o An integer specifying the type of hash algorithm used for the key | o A one-octet value, called "validation preference", specifying the | |||
| association. | preferences for further validation of the certificate in TLS. A | |||
| certificate association that contains a validation preference | ||||
| whose value is 1 indicates that the TLS administrator believes | ||||
| that it is sufficient to match the certificate association with | ||||
| the hash of certificate received in the TLS negotiation, and that | ||||
| no further certificate validation is necessary. A certificate | ||||
| association that contains a validation preference whose value is 0 | ||||
| indicates that the TLS administrator believes that it is not | ||||
| sufficient to match the certificate association with the hash of | ||||
| certificate received in the TLS negotiation, and that normal | ||||
| certificate validation is necessary. Note that the validation | ||||
| preference is an advisory, and it is not mandatory for a TLS | ||||
| client to follow the advice. | ||||
| o A variable-length set of bytes containing the hash of the | o A variable-length set of bytes containing the hash of the | |||
| associated key. | associated certificate. | |||
| For example: | ||||
| www.example.com. IN TLSFP 42 1 443 1 20960a7a55a706 | ||||
| 93c11b192eddc5983c38e72ffc1ff21ef6dc8458b7769d917d | ||||
| [[ This will need a proper RRTYPE definition. That will be added | ||||
| later if this option is chosen. ]] | ||||
| 2.3. Using a TXT Resource Record with a _TLSFP Label Prefix | ||||
| A request for a TXT RR whose domain is the label _tlsfp prepended to | ||||
| a domain name can be used to get the KEY associated with the domain | ||||
| name. A query of this can return one or more records of the type | ||||
| TXT. | ||||
| The format of the TXT response is ASCII text. The record, which MUST | ||||
| be in the order defined here, is: | ||||
| o One instance of "ver=", the version number, followed by ";", | ||||
| followed by ";". This is useful if non-critical changes are made | ||||
| to this RR later. The initial version number is 42. | ||||
| o Zero or more instances of "port=" followed by an TCP/UDP port for | ||||
| which the key association is valid (expressed as an integer), | ||||
| followed by ";". If a port is not specified, the key association | ||||
| is valid for all ports. | ||||
| o The type of hash algorithm used for key association, specified as | ||||
| "type=nn;" where "nn" is an integer defined below. | ||||
| o "hash=" followed by the set of bytes containing the hash of the | ||||
| associated key; the bytes are encoded as lower-case hexadecimal. | ||||
| For example: | For example: | |||
| _tlsfp.www.example.com. IN TXT "ver=42; port=443; type=1; | www.example.com. IN CERT TLSFP 0 0 ( AQGa+FZd8sAeS03ca8xDigDQ | |||
| hash=20960a7a55a70693c11b192eddc5983c38e72ffc1ff21ef6dc84 | ePgJnQvgMe/kKyf8rzluiQ== ) | |||
| 58b7769d917d | ||||
| 2.4. Key Association Hash Algorithms | ||||
| The initial list of key association hash algorithms is: | ||||
| o 0 - reserved | ||||
| o 1 - SHA2-256 [RFC4634] | ||||
| o 2 - SHA2-384 [RFC4634] | 3. Use of TLS Certificate Associations from the DNS in TLS | |||
| o 3 - SHA2-512 [RFC4634] | In order to use one or more TLS certificate associations obtained | |||
| Defining other key association hash types requires IETF consensus as | from the DNS, an application MUST assure that the certificates were | |||
| defined in [RFC2434]. | obtained using DNS protected by DNSSEC. There may be other methods | |||
| to securely obtain certificates in DNS, but those methods are not | ||||
| covered by this document. | ||||
| For interoperability reasons, as few hash algorithm as possible | An application that requests TLS certificate associations using the | |||
| should be reserved. The only reason to reserve additional types is | method described in the previous section obtains zero or more | |||
| to increase security. | certificate associations. If the application receives zero | |||
| certificate associations, it process TLS in the normal fashion. | ||||
| 3. Use of TLS Key Associations from the DNS in TLS | If a certificate association contains a hash type that is not | |||
| understood by the TLS client, that certificate association MUST be | ||||
| completely ignored. | ||||
| In order to use one or more TLS key associations obtained from the | If a match between the certificate association(s) and the server's | |||
| DNS, an application MUST assure that the keys were obtained using DNS | end entity certificate in TLS is not found, the TLS client MUST abort | |||
| protected by DNSSEC. There may be other methods to securely obtain | the handshake with an "access_denied" error. | |||
| keys in DNS, but those methods are not covered by this document. | ||||
| An application that requests TLS keys using the method described in | If the TLS server authenticates itself with a self-signed | |||
| the previous section obtains zero or more key associations. If the | certificate, it SHOULD be sure that the validation preference in the | |||
| application receives zero key associations, it process TLS in the | CERT RR is set to 1. If the TLS server administrator believes that | |||
| normal fashion. If one or more key associations are received from | there is information in its certificate that is relevant to the TLS | |||
| the DNS: | client other than the public key (such as a extended value (EV) | |||
| name), it SHOULD be sure that the validation preference in the CERT | ||||
| RR is set to 0. | ||||
| o If the PKIX certificate given by the TLS server is signed by a CA | 4. IANA Considerations | |||
| trusted by the client, the application compares each key | ||||
| association with the the hash of the key from the certificate, | ||||
| using the same hash function that is given in the key association | ||||
| type. If a match is found, the TLS handshake continues as normal, | ||||
| including the TLS client doing all PKIX validation checks. | ||||
| o If the PKIX certificate given by the TLS server is not signed by a | This document requests that IANA allocates one certificate type from | |||
| CA trusted by the client, the application compares each key | the CERT RR certificate type registry. The type is to be allocated | |||
| association with the the hash of the key from the certificate, | from the 'IETF Consensus' range. | |||
| using the same hash function that is given in the key association | ||||
| type. If a match is found, the TLS handshake continues using the | ||||
| key from the certificate, but with no PKIX validations checks | ||||
| being performed. | ||||
| In either of the above cases, if a match between the key | Decimal type: TBD | |||
| association(s) is not found, the TLS client MUST abort the handshake | ||||
| with an "access_denied" error. | ||||
| 4. IANA Considerations | Type: TLSFP | |||
| [[ TBD. Will include the registration for the TLSFP RR if that is | Meaning: TLS Certificate Associations | |||
| the style chosen, as well as a new registry for hash algorithm types, | ||||
| depending on what style is decided on. ]] | ||||
| 5. Security Considerations | 5. Security Considerations | |||
| [[ TBD. This section will need to describe, at least, the "attack" | [[ TBD. This section will need to describe, at least, the "attack" | |||
| where a DNS administrator goes rogue and changes both the A and TLSFP | where a DNS administrator goes rogue and changes both the A and CERT | |||
| records for a domain name. Also will discuss the need for secure | records for a domain name. Also will discuss the need for secure | |||
| DNS. ]] | DNS. ]] | |||
| 6. Acknowledgements | 6. Acknowledgements | |||
| Many of the ideas in this document have been discussed over many | Many of the ideas in this document have been discussed over many | |||
| years. More recently, the ideas have been discussed by the authors | years. More recently, the ideas have been discussed by the authors | |||
| and others in a more focused fashion. In particular, some of the | and others in a more focused fashion. In particular, some of the | |||
| ideas here originated with Paul Vixie, Dan Kaminsky, and Jeff Hodges, | ideas here originated with Paul Vixie, Dan Kaminsky, Jeff Hodges, | |||
| among others. | Simon Josefsson, among others. | |||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [4347bis] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | ||||
| Security version 1.2", draft-ietf-tls-rfc4347-bis (work in | ||||
| progress), July 2010. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an | ||||
| IANA Considerations Section in RFCs", BCP 26, RFC 2434, | ||||
| October 1998. | ||||
| [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "DNS Security Introduction and Requirements", | Rose, "DNS Security Introduction and Requirements", | |||
| RFC 4033, March 2005. | RFC 4033, March 2005. | |||
| [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "Resource Records for the DNS Security Extensions", | Rose, "Resource Records for the DNS Security Extensions", | |||
| RFC 4034, March 2005. | RFC 4034, March 2005. | |||
| [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "Protocol Modifications for the DNS Security | Rose, "Protocol Modifications for the DNS Security | |||
| Extensions", RFC 4035, March 2005. | Extensions", RFC 4035, March 2005. | |||
| [RFC4398] Josefsson, S., "Storing Certificates in the Domain Name | [RFC4398] Josefsson, S., "Storing Certificates in the Domain Name | |||
| System (DNS)", RFC 4398, March 2006. | System (DNS)", RFC 4398, March 2006. | |||
| [RFC4634] Eastlake, D. and T. Hansen, "US Secure Hash Algorithms | ||||
| (SHA and HMAC-SHA)", RFC 4634, July 2006. | ||||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, August 2008. | (TLS) Protocol Version 1.2", RFC 5246, August 2008. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | ||||
| Housley, R., and W. Polk, "Internet X.509 Public Key | ||||
| Infrastructure Certificate and Certificate Revocation List | ||||
| (CRL) Profile", RFC 5280, May 2008. | ||||
| 7.2. Informative References | 7.2. Informative References | |||
| [RFC4025] Richardson, M., "A Method for Storing IPsec Keying | [RFC4025] Richardson, M., "A Method for Storing IPsec Keying | |||
| Material in DNS", RFC 4025, March 2005. | Material in DNS", RFC 4025, March 2005. | |||
| [RFC4255] Schlyter, J. and W. Griffin, "Using DNS to Securely | [RFC4255] Schlyter, J. and W. Griffin, "Using DNS to Securely | |||
| Publish Secure Shell (SSH) Key Fingerprints", RFC 4255, | Publish Secure Shell (SSH) Key Fingerprints", RFC 4255, | |||
| January 2006. | January 2006. | |||
| Appendix A. Ideas Considered But Not Chosen | Appendix A. Ideas Considered But Not Necessarily Chosen | |||
| This appendix will list some of the ideas that have been kicked | This appendix will list some of the ideas that have been kicked | |||
| around in this space and give a few paragraphs why they weren't | around in this space and give a few paragraphs why they weren't | |||
| chosen for this proposal. The following is a placeholder for the | chosen for the current version this proposal. The following is a | |||
| list that will be filled out more in future versions of this | placeholder for the list that will be filled out more in future | |||
| document: | versions of this document: | |||
| o A flag that indicates that the certificate with the associated key | o A flag that indicates that the certificate with the associated key | |||
| must be signed by a trusted CA. Briefly: this was not added | must be signed by a trusted CA. Briefly: this was not added | |||
| because it is up to the TLS server to decide which type of | because it is up to the TLS server to decide which type of | |||
| certificate it wants to serve up. Serving a self-signed | certificate it wants to serve up. Serving a self-signed | |||
| certificate would effectively disable traditional PKIX validation, | certificate would effectively disable traditional PKIX validation, | |||
| whereas serving a certificate signed by a trusted CA would require | whereas serving a certificate signed by a trusted CA would require | |||
| both validation by DNSSEC and the trusted CA. | both validation by DNSSEC and the trusted CA. | |||
| o A flag that indicates that all connections to this server need to | o A flag that indicates that all connections to this server need to | |||
| be TLS secured. Briefly: this is a good idea but it is not | be TLS secured. Briefly: this is a good idea but it is not | |||
| related to the key of the certificate given in TLS, and thus | related to the key of the certificate given in TLS, and thus | |||
| should be indicated in a different method. | should be indicated in a different method. | |||
| o Giving keys instead of fingerprints. Briefly: TLS requires that | o Giving keys instead of hashes of keys. Briefly: TLS requires that | |||
| the server gives a PKIX certificate, and some systems use the | the server gives a certificate, and some systems use the metadata | |||
| metadata from a CA-signed certificate for display, so there is | from a CA-signed certificate for display, so there is value to | |||
| value to always looking in the certificate. | always looking in the certificate. | |||
| o After a format for the information is chosen, the other two listed | o Hashes of keys vs. hashes of certificates. Briefly: we have | |||
| earlier will go into this appendix. | changed our minds (at least once) on this. Our original thinking | |||
| was that there are many reasons why someone might change their | ||||
| certificate while leaving the public key alone, and those changes | ||||
| should not have to force them to change the DNS record because | ||||
| they do not actually change what the TLS client cares about; thus, | ||||
| use hashes of keys. Our new thinking is that there are | ||||
| certificate semantics that we want to pass (namely, should the | ||||
| client actually do the certificate validation), and attaching | ||||
| those semantics to keys is confusing; thus, use hashes of | ||||
| certificates. | ||||
| o List TLS/DTLS ports or services for which the certificate is | ||||
| associated. Briefly: we had this in an earlier version of this | ||||
| document but got rid of it when it was pointed out that this is an | ||||
| edge case, and most servers differentiate these services by domain | ||||
| names such as "mail.example.com" and "www.example.com". | ||||
| o Different ways of encoding this information in the DNS. Briefly: | ||||
| we considered a new RR type and coming up with an encoding of the | ||||
| TXT RR type, but didn't see any significant advantage of them over | ||||
| using the CERT RR, and there were disadvantages. A disadvantage | ||||
| of a new RR type is getting DNS servers and clients to recognize | ||||
| it; a disadvantage of coming up with a new TXT format is that | ||||
| doing so prevents wildcards. There is a lot more to discuss here, | ||||
| but the authors are now happy with a new sub-type for the CERT RR. | ||||
| o Having the hash be over the TLS certificate structure instead of | ||||
| just the end-entity certificate. Briefly: the TLS certificate | ||||
| structure currently allows a chain of PKIX certificates, and the | ||||
| semantics of what is being associated in a chain is not clear. | ||||
| Further, the structure might be changed in the future (such as to | ||||
| allow a group of web-of-trust OpenPGP certificates), and the | ||||
| semantics of what is being associated would become even less | ||||
| clear. | ||||
| Appendix B. Changes between -00 and -01 | ||||
| Change the association from being a hash of the key of a PKIX | ||||
| certificate to being a hash of a certificate (PKIX or other). This, | ||||
| of course, makes large changes throughout the document. | ||||
| Expanded the document to cover DTLS as well. | ||||
| Added a pointer to the keyassure mailing list. | ||||
| Removed the proposals for two alternate formats (the TLSFP Resource | ||||
| Record and the TXT record encoding). Added a bit to Appendix A about | ||||
| this. | ||||
| Got rid of the specification for ports within a single domain name. | ||||
| Made the hash type one octet and used the DS registry instead of | ||||
| defining our own. | ||||
| Added "Necessarily" chosen in the title of Appendix A to show that we | ||||
| might (continue to) change our minds after discussion. | ||||
| Added Simon Josefsson to the acknowledgements. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Paul Hoffman | Paul Hoffman | |||
| VPN Consortium | VPN Consortium | |||
| Email: paul.hoffman@vpnc.org | Email: paul.hoffman@vpnc.org | |||
| Jakob Schlyter | Jakob Schlyter | |||
| Kirei AB | Kirei AB | |||
| End of changes. 44 change blocks. | ||||
| 210 lines changed or deleted | 177 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||