DANE | O. Gudmundsson |
Internet-Draft | Shinkuro Inc. |
Intended status: Informational | June 10, 2013 |
Expires: December 12, 2013 |
Harmonizing how applications specify DANE-like usage
draft-ogud-dane-vocabulary-00
This document proposes a specific word usage for specifications of DANE like technology by different protocols/services. DANE is a method for specifying in DNS records acceptable keys/certificates for application servers.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 12, 2013.
Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
DANE [RFC6698] is a powerful new way to provide/amend how authentication/authorization/confidencialty of a connection to a server can be protected by leveraging DNS [RFC1034] and DNSSEC [RFC4033] [RFC4034] [RFC4035] for the establishment of TLS connection [RFC5246] [RFC6347] which in many cases uses PKIX [RFC5280]. All of these technologies are complicated. People familiar with one or two are not necessarily familiar with all the parts that needed to apply DANE like mechanism to other protocols.
The goal of this document is two fold:
This version of the document aims to hide complexity and focus on generalities. This is done to make it easier for the reader to decide if the terms here are of use and if it is worthwhile for the DANE WG to adopt this document. Descriptions of complexities can be added in later versions if the WG decides that is needed.
When below the notation "foo/bar" is used that is because the editor is not sure if both apply or which one is more appropriate, please advise.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
The terms below are being proposed to avoid confusion when reading DANE like specifications for various application protocols.
At this point all the terms below are proposals and better terms are welcome.
DNS Navigation refers to any records used to traverse the DNS tree to find the records requested. This includes Section 2.2
DANE specification explicitly requires all of these records to be validated by DNSSEC. See section
While traversing the DNS tree other records like A and AAAA are used but these records do not change the "navigation", these records do not explicitly need to be protected as the data retrieved from the addresses is expected to be protected.
DNSSEC defines a records and procedures to provide integrity and authentication to data stored in DNS [RFC4034]. The records used to provide the keying information and chain of trust are DNSKEY, DS records. NSEC/NSEC3 provide information about existence/non- existence of the requested information. RRSIG provides a digital signature for a RRset.
DNSSEC provides both Integrity and Authenticity i.e. it says the records came from the right source and have not been changed.
Any DNS record that is DNS Integrity protected, will pass DNSSEC validation for all DNS Navigation records leading to the name and the record itself also passes DNSSEC validation.
In the case of CNAME and DNAME that go "sideways" i.e. to a different branch of the DNS tree, both branches MUST be validated.
Protocols have different ways to provide information about where servers are located. Web servers are frequently specified by name i.e. the "www" prefix. Email servers have a special RR type (MX), Jabber uses SRV records, ENUM uses NAPTR records etc. and there are also protocols that use a combination like S-NAPTR a schema where NAPTR records are used to specify where to look for SRV records.
For a DANE like specification it has to be clear as what the service specification records are and that these records use requires DNS Integrity.
NOTE: when NAPTR records as are used they should be the same way as DNS Navigation records even though strictly speaking it is the application that evaluates the NAPTR record.
NOTE: When there is a CNAME at the name service is expected to be specified at, that can be either a DNS Navigation record or a Service Specification Record. Protocol specification should provide guidance on interpretation.
This is where the address records used by the servers reside, specifications SHOULD not make a difference between what kind of address records are used.
In some cases the Service Specification records reside at the same name as the Service Address records like for the original TLS RFC, thus both kinds of records are covered by the same DNS integrity rules.
This term refers to the records that provide information about what are acceptable keys or certificates for the servers to offer.
Application Authentication Records MUST be protected by DNS Integrity and each protocol specification MUST explicitly state where/how to look up the Authentication records.
In some cases all the servers for a service will have the same authentication information, in other cases it is going to be on a server by server case. In the first case it is "natural" to store the Authentication records "at" the Service Specification records. In the second case it more natural to store them "at" the Address Records. In this context "at" means the authentication records are stored at name that is an extension of the location example: "_443._tcp.www.example.com" for [RFC6698]. It is possible that neither of these locations is the right one and in that case the specification MUST explicitly express rules as how to find the Authentication Records.
Note: above that there is no a requirement that the Application Address records be covered by DNS Integrity. This is because when the Application Authentication records reside "at" the address records, DNS Integrity is inherited. On the other hand when when Application Authentication Records are stored "at" the Service Specification Record, DNS Integrity for the address records is optional, as any connection to a bogus/wrong server should fail the Authentication tests performed at connection time.
This section is an short example for a protocol that is like SSH [RFC4253] we will call this protocol HISS. This is not an actual full specification, just here to give an idea of how to go about extending DANE-like to a random protocol using the terminology from this document.
Location of HISS protocol DNS records:
The HISS protocol and HISSFP DNS RR do not exist
None
[RFC Editor: Please remove this section before publication ]
TBD
When selecting terms to use in standards documents it is important to select works that do not confuse international readers. This document goes out of its way in selecting English terms that are dissimilar to avoid confusions.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[RFC6698] | Hoffman, P. and J. Schlyter, "The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA", RFC 6698, August 2012. |
[RFC Editor: Please remove this section before publication ]
00 Initial version