Network Working Group E. Nygren Internet-Draft Akamai Technologies Intended status: Standards Track July 3, 2014 Expires: January 4, 2015 Service Binding DNS Records (DNS B) draft-nygren-service-bindings-00 Abstract This document describes a DNS "B" RR which binds together information needed to establish connection to a service across multiple protocol layers, including the location of the server, the application-level protocol, and security bootstrap information. Status of This Memo 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 January 4, 2015. Copyright Notice Copyright (c) 2014 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. Nygren Expires January 4, 2015 [Page 1] Internet-Draft Service Bindings July 2014 Table of Contents 1. Overview and rationale . . . . . . . . . . . . . . . . . . . 2 1.1. Relationship to SRV RR type . . . . . . . . . . . . . . . 3 1.2. Introductory example . . . . . . . . . . . . . . . . . . 3 2. Notational Conventions . . . . . . . . . . . . . . . . . . . 4 3. Applicability Statement . . . . . . . . . . . . . . . . . . . 4 4. The Service Binding Record . . . . . . . . . . . . . . . . . 5 4.1. B record RDATA encoding . . . . . . . . . . . . . . . . . 6 4.2. Service Binding Parameters . . . . . . . . . . . . . . . 6 4.3. Standard Service Binding Parameters . . . . . . . . . . . 7 4.4. Optional Security Parameters . . . . . . . . . . . . . . 8 4.5. Examples for other possible future Parameters . . . . . . 9 5. Selecting a Service Binding to Use . . . . . . . . . . . . . 10 5.1. Handling B record responses . . . . . . . . . . . . . . . 10 5.2. Handling a lack of Service Binding records . . . . . . . 10 6. Operational Examples . . . . . . . . . . . . . . . . . . . . 11 6.1. Example: Moving a service and domain between operators . 11 7. Open Areas for Discussion . . . . . . . . . . . . . . . . . . 12 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 9. Security Considerations . . . . . . . . . . . . . . . . . . . 14 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 15 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 11.1. Normative References . . . . . . . . . . . . . . . . . . 15 11.2. Informative References . . . . . . . . . . . . . . . . . 16 11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 16 1. Overview and rationale As the protocols underlying services evolve to provide enhanced performance and security properties, clients have an increasing number of ways to contact any given service on a domain. Contacting any given implementation instance of a service on a domain may require parameters across multiple protocol layers. Different servers with different address records may even desire to implement the same service, especially in the case where older protocols lacked functionality required to make a smooth transition to newer protocols. The DNS B RR allows administrators to bind together the parameters needed to contact an instance of a service on a domain into a single record, or "service binding". Multiple service bindings (multiple B records in an RRset) may provide a client with multiple ways to contact a given service, each with its own associated protocol(s) and related parameters. Nygren Expires January 4, 2015 [Page 2] Internet-Draft Service Bindings July 2014 Service bindings give clients a single DNS query [RFC1035] to resolve to obtain the B RRset for a service and domain. Clients are able to then filter B RRs based on which protocols they support. After selecting an B RR within this RRset, it should then be clear to the client whether other RRs need to be resolved prior to establishing communication with the service for a given protocol. 1.1. Relationship to SRV RR type The B RR has close similarities of purpose to the SRV RR [RFC2782] but the B RR covers additional use-cases, including: o Multiple application-level protocol implementations for a service o Providing information for improving the security of a connection to a service (such as constraints on server certificates as well as handshake encryption keys) o A single RRset name that can be queried that covers multiple lower-level protocol implementations for a service, such as when the same service is offered over multiple transport-layer protocols Similar to SRV, the B RR provides: o Multiple address records for a given domain o Priorities and weights to guide client selection o The information needed to contact a given server (such as target hostname and port number) is bound together in a single record 1.2. Introductory example If a web browser supporting B records wishes to fetch the URL https://www.example.com/, it would use the URI scheme ("https") as the the service and perform a lookup of: QNAME=_https._b.www.example.com, QCLASS=IN, QTYPE=B which might return an RRset with multiple resource records: Nygren Expires January 4, 2015 [Page 3] Internet-Draft Service Bindings July 2014 1 0 server-experimental.example.com. { "a": "h2", "t": "fictionfast", "tp": 9443 } 3 0 server-primary.example.com. { "a": "h2", "t": "tcp", "tp": 443, "dane": "_443._tcp.server-primary-www-cert.example.com.", "tlshp": ["JgxJkCv0va0", "OBZVN8LPo+SB9eQ/"] } 5 0 server-legacy.example.com. { "a": "http/1.1", "t": "tcp", "tp": 443, "dane": "_443._tcp.server-legacy-www-cert.example.com" } The first of these specifies using HTTP/2 over a fictional experimental secure transport protocol "fictionfast" over UDP port 9443 from the server(s) with address record server- experimental.example.com. For clients not supporting this first item, HTTP/2 [I-D.ietf-httpbis-http2] is available over TLS via TCP port 443 with certificate information available from a DANE record at "_443._tcp.server-primary-www-cert.example.com." and with TLS 1.3 server handshake encryption parameters specified [I-D.rescorla-tls13-new-flows] from server(s) with the server- primary.example.com address record. For clients not supporting HTTP/2, a separate set of legacy servers is available for HTTP/1.1 which happens to have different certificate information available from a separate DANE record. *NOTE:* HTTPS is selected above for illustrative purposes only, and the HTTPS examples within this document should not be considered to be a definitive statement on the way for HTTPS to use B records. 2. Notational Conventions 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]. 3. Applicability Statement In general, it is expected that service binding records will be used by clients for applications where the relevant protocol specification indicates that clients should use the B record. Such specification MUST define the symbolic name to be used in the Service field of the B record as described below. Such specification MUST also define the Parameters available as well as their interpretation. It also MUST Nygren Expires January 4, 2015 [Page 4] Internet-Draft Service Bindings July 2014 include security considerations. Service binding records SHOULD NOT be used in the absence of such specification. The current version of this proposal includes specifics for how service bindings might be used in the context of HTTP/2 as well as TLS/1.3. It is expected that those would be split out to a separate draft. 4. The Service Binding Record The service binding record is of the format: _Service._b.Name TTL Class B Priority Weight Target Parameters where: Service The symbolic name of the desired service. An underscore (_) is prepended to the service identifier to avoid collisions with DNS labels that occur in nature. In many specifications it is expected that the Service is likely to be the same as the URI Scheme [RFC3986] (such as "http" or "https"). _b The literal label "_b", intended to prevent collisions with DNS labels that occur in nature. Name The domain this RR refers to. Similar to SRV RR [RFC2782], the name one searches for is not this name. TTL Standard DNS meaning [RFC1035]. Class Standard DNS meaning [RFC1035]. B records occur in the IN Class. Priority The priority of this service binding. After filtering service bindings for protocols that it supports, the client MUST attempt to contact the target host with the lowest-numbered priority it can reach; target hosts with the same priority SHOULD be tried in an order defined by the weight field. The range is 0-65535. This is a 16 bit unsigned integer in network byte order. Weight A server selection mechanism. The weight field specifies a relative weight for entries with the same priority. Larger weights SHOULD be given a proportionately higher probability of being selected. The range of this number is 0-65535. This is a 16 bit unsigned integer in network byte order. Domain administrators SHOULD use Weight 0 when there isn't any server selection to do, to make the RR easier to read for humans (less noisy). In the presence of records containing weights greater Nygren Expires January 4, 2015 [Page 5] Internet-Draft Service Bindings July 2014 than 0, records with weight 0 should have a very small chance of being selected. Clients SHOULD use the same weight selection algorithm as described in [RFC2782]. Target The domain name of the target host. There MUST be one or more address records for this name (A RR's and/or AAAA RR's, or their most modern equivalent). The name MAY be a CNAME alias (in the sense of [RFC1034]). Implementors are encouraged, but not required, to return the address record(s) in the Additional Data section where possible and appropriate. Unless and until permitted by future standards action, name compression is not to be used for this field. The special target value of "." indicates that this service is not available on this domain. When used, the RRset MUST contain only this single record. However, the record MAY have additional parameters (not yet defined), such as to specify that an alternate service should be used instead. Parameters A collection of tag:value parameters specifying additional attributes for this service binding. These are encoded in canonicalized CBOR [RFC7049] using the map data type. Their textual representation is JSON, with binary byte arrays (such as literal keys) being base64 [RFC4648] encoded. While some tags are defined here, additional tags may be defined in the specifications for the particular Service, as well as in specifications for additional protocols for implementing the Service. 4.1. B record RDATA encoding _A more formal definition of the RDATA encoding and parameter textual representation syntax will be included in a future version of this draft once the core concepts have stabilized._ 4.2. Service Binding Parameters The parameters of the B record provide extensibility, allowing additional parameters to be specified depending on the particular service and protocol. Clients MUST use parameters to filter out service bindings specifying protocols or other parameters that they do not support, as specified by those parameters. Any parameters not specified in the initial specification of Service Binding usage for a given Service and protocol combination must be capable of being safely ignored by a client. Nygren Expires January 4, 2015 [Page 6] Internet-Draft Service Bindings July 2014 Some parameters MUST NOT be used by a client unless all relevant DNS records can be securely validated, such as with DNSSEC [RFC2535]. This means that both the B record, any aliases leading to it, and any aliases and records leading from names specified in that parameter must be validated. This is discussed in more length in Security Considerations [1]. The specification for any given parameter SHOULD include: o The tag used to identify the parameter o The valid type and allowed value ranges for the parameter o Whether the parameter is optional, and its default value if not o What is the behavior if the DNS records can not be securely validated o A description of how the client should use the parameter value 4.3. Standard Service Binding Parameters Application Layer Protocol (tag "a") A string representing the application layer protocol to be used when contacting the service. The valid values are service-dependent and should be the same values as used in ALPN [I-D.ietf-tls-applayerprotoneg]. For example, "h2" represents HTTP/2. If not specified, the default application-layer protocol for the given service is assumed. Clients MUST filter out service bindings utilizing application layer protocols that they do not support or recognize, as well as to use the proper application protocol when contacting servers using this binding. Transport Layer Protocol (tag "t") A string representing the transport layer protocol to be used when contacting the service. The valid values are service dependent. For example, "tcp" is likely to be used for many services. If not specified, the default transport-layer protocol for the given service is assumed. Clients MUST filter out service bindings utilizing transport layer protocols that they do not support or recognize, as well as to use the proper transport protocol when contacting servers using this binding. Nygren Expires January 4, 2015 [Page 7] Internet-Draft Service Bindings July 2014 _Note for discussion: it may make sense to omit this as a separate parameter and to have the Application Layer Protocol tag describe the entire stack, as in_ [I-D.ietf-httpbis-http2]. Transport Layer Port (tag "tp") An integer specifying the transport layer protocol port to be used when contacting the service. The valid values are transport layer protocol dependent. If not specified, the default port for the given service and transport protocol is assumed. 4.4. Optional Security Parameters The following parameters should likely move to separate specifications: DANE Certificate Controls (tag "dane") The value of this optional parameter is a DNS domain name pointing to a DANE TLSA [RFC6698] record associated with this service binding. This is particularly useful to bind TLSA records with specific servers, especially in the case where different servers have different certificates and perhaps even different operators. This is also useful to indicate that TLSA records are available (to reduce the need for speculative DNS lookups) If relevant DNS records can not be securely validated, clients MUST NOT loosen their security policies based on the TLSA record. However, clients MAY use the record to apply more restrictive policies even if the TLSA record could not be securely validated. In particular, if this parameter is present, a client SHOULD resolve the named TLSA record and use it to constrain the TLS server certificates that it will accept. If the the relevant DNS records can not be securely validated, the TLSA record must only be used in addition to policies already enforced by the client. For example, if a "CA Constraint" certificate usage is specified, then this SHOULD limit the CA allowed to those specified in the TLSA record(s), but only if the CA is also in a trust chain that the client would already accept. TLS Handshake Parameters (tag "tlshp") This optional parameter specifies ServerParameters for bootstrapping the TLS 1.3 handshake, such as for encrypting the SNI and other parts of the ClientHello to make them less vulnerable to passive eavesdropping [I-D.rescorla-tls13-new-flows]. Nygren Expires January 4, 2015 [Page 8] Internet-Draft Service Bindings July 2014 The value of this parameter is a list containing the binary values of the ServerParameter label followed by the ServerDHParams or ServerECDHParams. Clients MAY use these values even if the B record is not securely validated, as the intent of these parameters is to protect against passive eavesdropping. Note that there may be limited value in handshake encryption unless DNS lookups are also encrypted. 4.5. Examples for other possible future Parameters Some of these may also make sense to include in an future version of this draft: o A parameter indicating that this DNS record must have been securely validated (such as with DNSSEC) or must otherwise be skipped. This could allow for incremental deployment of DANE- managed certificates on some alternate set of servers even without universal DNSSEC adoption. o Minimum and/or maximum version of a protocol supported. (For example, this could be helpful to mitigate downgrade attacks.) o Which extensions to a protocol are supported, allowing a client to opportunistically send them in its handshake. o Hints as to whether a target address record has A and/or AAAA records. (Careful consideration would need to be given to how this played with DNS64 as well as other transition technologies.) A reasonable compromise would be to have a hint indicating that a AAAA record was available and encouraged (such that clients might wait longer to get a response from nameservers) as well as a separate hint indicating that no A record is available. o Selected Service Binding Indicator - a label that can be passed from client to server indicating which service binding it selected. This may be helpful for both load reporting/feedback, and diagnostics. o HSTS-style [RFC6797] indicator parameter. This would be returned along with a target of "." on a less secure service to indicate that a more secure scheme/service should be used (such as "https" instead of "http"). This might be a boolean "sts=1" parameter, such as with a record like: _http._b.www.example.com 2D IN B 0 0 . { "sts": 1 } Nygren Expires January 4, 2015 [Page 9] Internet-Draft Service Bindings July 2014 5. Selecting a Service Binding to Use When a client supporting Service Bindings wishes to make a connection to a service, it SHOULD query the B records for the service. It MAY choose to opportunistically also issue DNS queries for the address records (eg, A and AAAA) to reduce the latency for the case where no B record is available. 5.1. Handling B record responses In the case where an RRset for B records is returned, the client should: 1. Filter out any B RR's from the RRset which it does not support. In particular, it MUST ignore any B records containing an Application Layer Protocol that is unknown, unsupported, or explicitly disallowed for the particular service. 2. The remaining B RR's should be sorted by priority. An entry should be selected from the top priority (lowest numeric priority value). It multiple records have the same priority, the weighting algorithm specified in [RFC2782] SHOULD be used to order them. 3. The client should attempt to contact the service using the parameters specified in the first selected record from the sorted list. 4. If a given attempt fails, the client MAY attempt to contact the service using the next record in the sorted list. After some number of tries, the client MAY attempt to contact the service directly using the address records for the domain. 5.2. Handling a lack of Service Binding records Not all clients will immediately implement Service Binding records for any given Service, and administrators may not always put Service Binding records in-place. Just as importantly, experiments have shown that new DNS RR types take awhile before they are accessible to most clients. (_Reference needed_) As such, client SHOULD directly lookup and use the address records for the domain name when no valid B record is unavailable. In this case, the default application and transport layer protocols SHOULD be used. Clients and Servers MAY then use inline upgrade or signaling mechanisms such as AltSvc [I-D.ietf-httpbis-alt-svc] or ALPN [I-D.ietf-tls-applayerprotoneg] for upgrading to newer protocols instantiating the Service. Nygren Expires January 4, 2015 [Page 10] Internet-Draft Service Bindings July 2014 6. Operational Examples A few illustrative examples follow to help to demonstrate how Service Binding records might be used. More examples may be added in a future version of this draft. (_In particular, an example should be added on how a client might resolve and use some specific B records.) 6.1. Example: Moving a service and domain between operators A common deployment model is for different administrators (and sometimes entirely separate organizations) to operate the DNS for a domain than those that operate a service on the domain. Either or both might even be out-sourced to separate entities such as a hosting/infrastructure provider or Content Delivery Network (CDN). It is critical that it be possible to move domains and services between operators and administrators without any disruption in service and with minimal coordination between the different organizations. Service Binding records simplify this by allowing a delegation of name via a single DNS alias per service/domain. All other properties (such as TLSA records) then follow directly along from this. For example with: _https._b.www.example.com. 6H IN CNAME _https._b.www.example.com.example-1.net. _https._b.www.example.com.example-1.net. 6H IN B 0 0 server-primary.example-1.net. { "a": "h2", "dane": "_443._tcp.server-primary-www-cert.example-1.net.", "tlshp": ["JgxJkCv0va0", "OBZVN8LPo+SB9eQ/"] } the administrator of the example.com DNS zone delegated control over www.example.com to an operator example-1.net. In the example above, it would be recommended for the example-1.net authorities to also return ADDITIONAL records for the "server- primary.example-1.net." address records and for the "_443._tcp.server-primary-www-cert.example-1.net." TLSA record along with the B record response. The DANE TLSA records and TLS 1.3 handshake parameters and supported Application Layer Protocols are bound in this case to the "server- primary.example-1.net." target as they should be. If the administrator of example.com were to move the "www.example.com." CNAME to point to a different operator (eg, "example-2.net"), that Nygren Expires January 4, 2015 [Page 11] Internet-Draft Service Bindings July 2014 second operator would provide their own service bindings which clients would use as a unit. The value of this Service Binding approach can be seen here when contrasting against having multiple independent records, each with their own TTL. For example, if "www.example.com" is a CNAME to address records on example-1.net and "_443._tcp.www.example.com" is a CNAME to TLSA records on example-1.net, there is no way to change either of these CNAMEs to point to example-2.net without a situation where some clients are getting address records for example-1 and TLSA records for example-2, resulting in a possible denial-of-service. 7. Open Areas for Discussion As this is a early version of this draft, a number of design choices are still open for active discussion: o What encoding should be used for the Parameters? Some options include: * CBOR [RFC7049] - has the advantage of allowing new parameters to be added with self-describing types in a way that unknown new parameters can be ignored. * Something ad-hoc, such as the tag-value system of DKIM [RFC6376] section 3.2. This might be more compact, but also ends up being more ad-hoc. * What textual representation should be used? JSON, or something more in-line with other DNS record types? The illustrative examples here use JSON for the time-being. o Should there be a more formal general definition of the transport vs protocol layering and filtering? It may be preferable to have a single identifier (ALPN) specifying the full stack. * Which layers should be included? More or less? * How does TLS fit in? * What more examples should we give? o How much do we need to worry about packet size limitations, and what can we do about them? * Should we do any form of name compression? * Should we allow names (such as the DANE names) to be relative? Nygren Expires January 4, 2015 [Page 12] Internet-Draft Service Bindings July 2014 o Should the TLS 1.3 handshake parameters move to their own record that is just named from the B record? o What should be the name of the Resource Record type: is "B" a good name, or should something longer such as "SB" or "SBND" be used? o What should be a standard part of the record and what should be parameters? Everything could be a parameter, including priority and target and weight. In the other direction, some existing parameters could be standard. There may be a reasonable balance in the current proposal. o There is an operational risk that the B record and normal address records (A and AAAA) could diverge over time due to administrative management skew. For a CDN or hosting provider, taking advantage of B records also means that the content provider would need to CNAME over an additional records per-service. o We may want to give examples of additional use-cases where this is helpful: 1. Apex zone domain names - can be used instead of a CNAME to delegate over to a CDN or hosting provider 2. Dealing with the SNI challenge for TLS: specify that clients using a Service Binding MUST send TLS SNI. This would allow the use of a larger set of SNI-only servers for the B record targets than for the normal address records on the domain, o Should there be a parameter to indication which service binding was used when making a connection? In particular, a parameter which is a label or string that gets passed from the client to the server (such as a response header or as "Indicated Service")? o Why a separate domain name (eg, "_http._b.www.example.com") rather than just a record on "www.example.com" (as in the DANISH proposal)? * The reason is that you _do_ want a separate name-per-service, as otherwise the RRset will get too big if you have multiple names. * Is the "_b" actually needed? Or could this just be "_http.www.example.com" ? o Which of the additional parameters above should we include in subsequent versions of this draft? Nygren Expires January 4, 2015 [Page 13] Internet-Draft Service Bindings July 2014 8. IANA Considerations The IANA will need to assign an RR type value to the B RR. The IANA will also need to maintain a registry of Parameters allowed B RRs. (Details on this will need to be expanded in a future version of this draft.) 9. Security Considerations Service Bindings have many of the same security issues as SRV records or most other DNS record types (such as A and AAAA address records). In particular, if the client is not securely validating DNS resolutions then a man-in-the-middle attacker could trick a client into contacting an attacker selected server and port and protocol. Similar attacks could also force a client to downgrade to a less secure protocol or to fall back to using address records. Clients MAY chose to bound the TTLs of B RRsets to a reasonable value and/or forget B RRsets on network changes to limit the damage that can be done by such a man-in-the-middle. For each service binding parameter type, specific attention must be paid to the security considerations relevant to it. In particular: Application Layer Protocol Care must be taken to disallow and filter out any invalid ALPN and Service combinations. For example, clients MUST NOT allow ALPN "h2c" in combination with Service "https". DANE Certificate Controls DANE TLSA records can be used to either restrict the set of allowed server certificates to a subset of those that a client would normally allow. They can also be used to specify alternate certificates or trust roots to use for validation, relying on DNSSEC instead of the CA hierarchy. If a man-in-the-middle attacker can inject DNS responses (and the client is not securely validating the responses), then in the former case the attacker can only force a denial-of-service by causing the client to fail its validation. Allowing this may be an acceptable trade-off to allow administrators to limit the scope of allowed certificates even for clients not performing validation. As such, clients MAY use B and TLSA records to constrain allowed certificates to a strict subset of those that would otherwise be allowed. However, in the former case (where alternate certificates that are not ones a client would already trust can be specified), an Nygren Expires January 4, 2015 [Page 14] Internet-Draft Service Bindings July 2014 attacker or unscrupulous DNS resolver operator could utilize this to force a client to trust an adversary-controlled server. As such, clients MUST NOT use DANE TLSA records unless the B RRset, the TLSA RRset, all aliases (eg, CNAMEs) pointing to them, and all authorities of these can be securely validated. (_Additional security considerations will need to be added to a future version of this draft._) 10. Acknowledgments This draws heavily on many previous DNS RFCs such as [RFC2782]. Discussions with Eric Rescorla, Daniel Kahn Gilmore, Mark Nottingham, and others on the TLS and HTTPBIS working groups have heavily influenced this proposal. Suggestions from Richard Barnes and others have also been incorporated into this draft. 11. References 11.1. Normative References [I-D.ietf-tls-applayerprotoneg] Friedl, S., Popov, A., Langley, A., and S. Emile, "Transport Layer Security (TLS) Application Layer Protocol Negotiation Extension", draft-ietf-tls-applayerprotoneg-05 (work in progress), March 2014. [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, November 1987. [RFC1035] Mockapetris, P., "Domain names - implementation and specification", STD 13, RFC 1035, November 1987. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2535] Eastlake, D., "Domain Name System Security Extensions", RFC 2535, March 1999. [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, February 2000. [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005. Nygren Expires January 4, 2015 [Page 15] Internet-Draft Service Bindings July 2014 [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", RFC 4648, October 2006. [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA", RFC 6698, August 2012. [RFC6797] Hodges, J., Jackson, C., and A. Barth, "HTTP Strict Transport Security (HSTS)", RFC 6797, November 2012. [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object Representation (CBOR)", RFC 7049, October 2013. 11.2. Informative References [I-D.ietf-httpbis-alt-svc] Nottingham, M., McManus, P., and J. Reschke, "HTTP Alternative Services", draft-ietf-httpbis-alt-svc-01 (work in progress), April 2014. [I-D.ietf-httpbis-http2] Belshe, M., Peon, R., and M. Thomson, "Hypertext Transfer Protocol version 2", draft-ietf-httpbis-http2-13 (work in progress), June 2014. [I-D.rescorla-tls13-new-flows] Rescorla, E., "New Handshake Flows for TLS 1.3", draft- rescorla-tls13-new-flows-01 (work in progress), February 2014. [RFC6376] Crocker, D., Hansen, T., and M. Kucherawy, "DomainKeys Identified Mail (DKIM) Signatures", STD 76, RFC 6376, September 2011. 11.3. URIs [1] #security Author's Address Erik Nygren Akamai Technologies Email: erik+ietf@nygren.org URI: http://erik.nygren.org/ Nygren Expires January 4, 2015 [Page 16]