| < draft-hoffman-dns-over-https-00.txt | draft-hoffman-dns-over-https-01.txt > | |||
|---|---|---|---|---|
| Network Working Group P. Hoffman | Network Working Group P. Hoffman | |||
| Internet-Draft ICANN | Internet-Draft ICANN | |||
| Intended status: Standards Track P. McManus | Intended status: Standards Track P. McManus | |||
| Expires: November 4, 2017 Mozilla | Expires: December 8, 2017 Mozilla | |||
| May 03, 2017 | June 06, 2017 | |||
| DNS Queries over HTTPS | DNS Queries over HTTPS | |||
| draft-hoffman-dns-over-https-00 | draft-hoffman-dns-over-https-01 | |||
| Abstract | Abstract | |||
| DNS queries sometimes experience problems with end to end | DNS queries sometimes experience problems with end to end | |||
| connectivity at times and places where HTTPS flows freely. | connectivity at times and places where HTTPS flows freely. | |||
| HTTPS provides the most practical mechanism for reliable end to end | HTTPS provides the most practical mechanism for reliable end to end | |||
| communication. Its use of TLS provides integrity and confidentiality | communication. Its use of TLS provides integrity and confidentiality | |||
| guarantees and its use of HTTP allows it to interoperate with | guarantees and its use of HTTP allows it to interoperate with | |||
| proxies, firewalls, and authentication systems where required for | proxies, firewalls, and authentication systems where required for | |||
| skipping to change at page 1, line 45 ¶ | skipping to change at page 1, line 45 ¶ | |||
| 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 November 4, 2017. | This Internet-Draft will expire on December 8, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | |||
| skipping to change at page 2, line 28 ¶ | skipping to change at page 2, line 28 ¶ | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Protocol Requirements . . . . . . . . . . . . . . . . . . . . 4 | 4. Protocol Requirements . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4.1. Non-requirements . . . . . . . . . . . . . . . . . . . . 4 | 4.1. Non-requirements . . . . . . . . . . . . . . . . . . . . 4 | |||
| 5. The HTTP Request . . . . . . . . . . . . . . . . . . . . . . 4 | 5. The HTTP Request . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 5.1. Example . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 5.1. DNS Wire Format . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 6 | ||||
| 6. The HTTP Response . . . . . . . . . . . . . . . . . . . . . . 6 | 6. The HTTP Response . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 6.1. Example . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 6.1. Example . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 7. HTTP Integration . . . . . . . . . . . . . . . . . . . . . . 7 | 7. HTTP Integration . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 8.1. Registration of Well-Known URI . . . . . . . . . . . . . 8 | |||
| 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 8 | 8.2. Registration of application/dns-udpwireformat Media Type 8 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 9 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| Appendix A. Previous Work on DNS over HTTP or in Other Formats . 10 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | 11.2. Informative References . . . . . . . . . . . . . . . . . 11 | |||
| Appendix A. Previous Work on DNS over HTTP or in Other Formats . 12 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | ||||
| 1. Introduction | 1. Introduction | |||
| The Internet does not always provide end to end reachability for | The Internet does not always provide end to end reachability for | |||
| native DNS. On-path network devices may spoof DNS responses, block | native DNS. On-path network devices may spoof DNS responses, block | |||
| DNS requests, or just redirect DNS queries to different DNS servers | DNS requests, or just redirect DNS queries to different DNS servers | |||
| that give less-than-honest answers. | that give less-than-honest answers. | |||
| Over time, there have been many proposals for using HTTP and HTTPS as | Over time, there have been many proposals for using HTTP and HTTPS as | |||
| a substrate for DNS queries and responses. To date, none of those | a substrate for DNS queries and responses. To date, none of those | |||
| skipping to change at page 3, line 21 ¶ | skipping to change at page 3, line 24 ¶ | |||
| establishes default media formatting types for requests and responses | establishes default media formatting types for requests and responses | |||
| but uses normal HTTP content negotiation mechanisms for selecting | but uses normal HTTP content negotiation mechanisms for selecting | |||
| alternatives that endpoints may prefer in anticipation of serving new | alternatives that endpoints may prefer in anticipation of serving new | |||
| use cases. In addition to this media type negotiation, it aligns | use cases. In addition to this media type negotiation, it aligns | |||
| itself with HTTP features such as caching, proxying, and compression. | itself with HTTP features such as caching, proxying, and compression. | |||
| The integration with HTTP provides a transport suitable for both | The integration with HTTP provides a transport suitable for both | |||
| traditional DNS clients and native web applications seeking access to | traditional DNS clients and native web applications seeking access to | |||
| the DNS. | the DNS. | |||
| 2. Terminology | ||||
| A server that supports this protocol is called a "DNS API server" to | A server that supports this protocol is called a "DNS API server" to | |||
| differentiate it from a "DNS server" (one that uses the regular DNS | differentiate it from a "DNS server" (one that uses the regular DNS | |||
| protocol). Similarly, a client that supports this protocol is called | protocol). Similarly, a client that supports this protocol is called | |||
| a "DNS API client". | a "DNS API client". | |||
| 2. Terminology | ||||
| In this document, the key words "MUST", "MUST NOT", "REQUIRED", | In this document, the key words "MUST", "MUST NOT", "REQUIRED", | |||
| "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | |||
| and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 | and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 | |||
| [RFC2119]. | [RFC2119]. | |||
| 3. Use Cases | 3. Use Cases | |||
| There are two primary use cases for this protocol. | There are two primary use cases for this protocol. | |||
| The primary one is to prevent on-path network devices from | The primary one is to prevent on-path network devices from | |||
| skipping to change at page 4, line 16 ¶ | skipping to change at page 4, line 21 ¶ | |||
| instead of over DNS itself. The use cases in this document all | instead of over DNS itself. The use cases in this document all | |||
| involve query origination instead of proxying. | involve query origination instead of proxying. | |||
| 4. Protocol Requirements | 4. Protocol Requirements | |||
| The protocol described here bases its design on the following | The protocol described here bases its design on the following | |||
| protocol requirements: | protocol requirements: | |||
| o The protocol must use normal HTTP semantics. | o The protocol must use normal HTTP semantics. | |||
| o The query format must be able to be flexible enough to express | o The queries and responses must be able to be flexible enough to | |||
| every normal DNS query. | express every normal DNS query. | |||
| o The protocol must allow implementations to use HTTP's content | o The protocol must allow implementations to use HTTP's content | |||
| negotiation mechanism. | negotiation mechanism. | |||
| o The protocol must ensure interoperable media formats through a | o The protocol must ensure interoperable media formats through a | |||
| mandatory to implement format wherein a query must be able to | mandatory to implement format wherein a query must be able to | |||
| contain one or more EDNS extensions, including those not yet | contain one or more EDNS extensions, including those not yet | |||
| defined. | defined. | |||
| o The protocol must use a secure transport that meets the | o The protocol must use a secure transport that meets the | |||
| skipping to change at page 4, line 39 ¶ | skipping to change at page 4, line 44 ¶ | |||
| 4.1. Non-requirements | 4.1. Non-requirements | |||
| o Supporting network-specific DNS64 [RFC6147] | o Supporting network-specific DNS64 [RFC6147] | |||
| o Supporting other network-specific inferences from plaintext DNS | o Supporting other network-specific inferences from plaintext DNS | |||
| queries | queries | |||
| o Supporting insecure HTTP | o Supporting insecure HTTP | |||
| o Supporitng legacy HTTP versions | o Supporting legacy HTTP versions | |||
| 5. The HTTP Request | 5. The HTTP Request | |||
| The URI scheme MUST be https. | The URI scheme MUST be https. | |||
| The path SHOULD be "/.well-known/dns-query" but a different path can | The path SHOULD be "/.well-known/dns-query" but a different path can | |||
| be used if the DNS API Client has prior knowledge about a DNS API | be used if the DNS API Client has prior knowledge about a DNS API | |||
| service on a different path at the origin being used. (See Section 8 | service on a different path at the origin being used. (See Section 8 | |||
| for the registration of this in the well-known URI registry.) Using | for the registration of this in the well-known URI registry.) Using | |||
| the well-known path allows automated discovery of a DNS API Service, | the well-known path allows automated discovery of a DNS API Service, | |||
| and also helps contextualize DNS Query requests pushed over an active | and also helps contextualize DNS Query requests pushed over an active | |||
| HTTP/2 connection. | HTTP/2 connection. | |||
| Some forms of the request may also include a HTTP query as defined by | A DNS API Client encodes the DNS query into the HTTP request using | |||
| [RFC3986]. | either the HTTP GET or POST methods. | |||
| A DNS API Client encodes the DNS query into the HTTP request in one | ||||
| of two different methods: | ||||
| GET: Using the on-the-wire representation of a DNS message defined | ||||
| in [RFC1035] as the query string portion of the URI, encoded as | ||||
| necessary with [RFC3986], using the GET HTTP method. This is the | ||||
| preferred approach because it is friendlier to HTTP caches. | ||||
| POST: Including the DNS query as the message body of the HTTP | When using the POST method, the DNS query is included as the message | |||
| request, with the request using the POST method. The body MUST | body of the HTTP request and the Content-Type request header | |||
| use a media type selected by the DNS API Client, and that media | indicates the media type of the message. POST-ed requests are | |||
| type MUST be indicated by the request's Content-Type header. | smaller than their GET equivalents. | |||
| The DNS request MAY have one or more EDNS(0) extensions [RFC6891]. | When using the GET method, the URI path MUST contain a query | |||
| parameter of the form content-type=TTT and another of the form | ||||
| body=BBBB, where "TTT" is the media type of the format used for the | ||||
| body parameter, and "BBB" is the content of the body encoded with | ||||
| base64url [RFC4648]. Using the GET method is friendlier to many HTTP | ||||
| cache implementations. | ||||
| The DNS API Client SHOULD include an HTTP "Accept:" request header to | The DNS API Client SHOULD include an HTTP "Accept:" request header to | |||
| say what type of content can be understood in response. The client | say what type of content can be understood in response. The client | |||
| MUST be prepared to process "application/dns-udpwireformat" responses | MUST be prepared to process "application/dns-udpwireformat" | |||
| but MAY process any other type it receives. | {{dnswire} responses but MAY process any other type it receives. | |||
| In order to maximize cache friendliness, DNS API Clients SHOULD use | In order to maximize cache friendliness, DNS API clients using media | |||
| the same ID (the first two bytes of the header) for every DNS | formats that include DNS ID, such as application/dns-udpwireformat, | |||
| request. The exact mechanism for doing so is dependent on the media | should use a DNS ID of 0 in every DNS request. HTTP semantics | |||
| type in use. HTTP semantics correlate the request and response which | correlate the request and response, thus eliminating the need for the | |||
| eliminates the need for the ID in a media type such as application/ | ID in a media type such as application/dns-udpwireformat. | |||
| dns-udpwireformat. Using a constant value greatly increases the | ||||
| opportunity for successful caching. | ||||
| DNS API clients can use HTTP/2 padding and compression in the same | DNS API clients can use HTTP/2 padding and compression in the same | |||
| way that other HTTP/2 clients use (or don't use) them. | way that other HTTP/2 clients use (or don't use) them. | |||
| 5.1. Example | 5.1. DNS Wire Format | |||
| The media type is "application/dns-udpwireformat". The body is the | ||||
| DNS on-the-wire format is defined in [RFC1035]. The body MUST be | ||||
| encoded with base64url [RFC4648]. Padding characters for base64url | ||||
| MUST NOT be included. | ||||
| DNS API clients using the DNS wire format MAY have one or more | ||||
| EDNS(0) extensions [RFC6891] in the request. | ||||
| 5.2. Examples | ||||
| For example, assume a DNS API server is following this specification | For example, assume a DNS API server is following this specification | |||
| on origin https://dnsserver.example.net/ and the well-known path. | on origin https://dnsserver.example.net/ and the well-known path. | |||
| The example uses HTTP/2 formatting from [RFC7540]. | The DNS API client chooses to send its requests in appliation/dns- | |||
| udpwirefomat but indicates it can parse replies in that format or as | ||||
| a JSON-based content type. | ||||
| The examples uses HTTP/2 formatting from [RFC7540]. | ||||
| A query for the IN A records for "www.example.com" with recursion | A query for the IN A records for "www.example.com" with recursion | |||
| turned on using the GET approach would be: | turned on using the GET method and a wireformat request would be: | |||
| :method = GET | :method = GET | |||
| :scheme = https | :scheme = https | |||
| :authority = dnsserver.example.net | :authority = dnsserver.example.net | |||
| :path = /.well-known/dns-query?%ab%cd%01%00%00%01%00%00%00%00 (no CR) | :path = /.well-known/dns-query? (no CR) | |||
| %00%00%03www%07example%03com%00%00%01%00%01 | content-type=application/dns-udpwireformat& (no CR) | |||
| accept = application/dns-udpwireformat, application/dns-futureJsonDns | body=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB | |||
| accept = application/dns-udpwireformat, application/simpledns+json | ||||
| The same DNS query, using the second method of HTTP encoding would | The same DNS query, using the POST method would be: | |||
| be: | ||||
| :method = POST | :method = POST | |||
| :scheme = https | :scheme = https | |||
| :authority = dnsserver.example.net | :authority = dnsserver.example.net | |||
| :path = /.well-known/dns-query | :path = /.well-known/dns-query | |||
| accept = application/dns-udpwireformat, application/dns-futureJsonDns | accept = application/dns-udpwireformat, application/simpledns+json | |||
| content-type = application/dns-udpwireformat | content-type = application/dns-udpwireformat | |||
| content-length = 33 | content-length = 33 | |||
| <33 bytes represented by the following hex encoding> | <33 bytes represented by the following hex encoding> | |||
| abcd 0100 0001 0000 0000 0000 0377 7777 | abcd 0100 0001 0000 0000 0000 0377 7777 | |||
| 0765 7861 6d70 6c65 0363 6f6d 0000 0100 | 0765 7861 6d70 6c65 0363 6f6d 0000 0100 | |||
| 01 | 01 | |||
| 6. The HTTP Response | 6. The HTTP Response | |||
| Different response media types will provide more or less information | Different response media types will provide more or less information | |||
| from a DNS response. For example, one response type might include | from a DNS response. For example, one response type might include | |||
| the information from the DNS header bytes while another might omit | the information from the DNS header bytes while another might omit | |||
| it. The amount and type of information that a media type gives is | it. The amount and type of information that a media type gives is | |||
| solely up to the format, and not defined in this protocol. | solely up to the format, and not defined in this protocol. | |||
| At the time this is published, the response types are works in | At the time this is published, the response types are works in | |||
| progress. The only known response type is "application/dns- | progress. The only known response type is "application/dns- | |||
| udpwireformat", but it is likely that at least one JSON-based | udpwireformat", but it is likely that at least one JSON-based | |||
| response format might be defined in the future. | response format will be defined in the future. | |||
| The DNS response MAY have one or more EDNS(0) extensions, depending | The DNS response for "application/dns-udpwireformat" in Section 5.1 | |||
| on the extension definition of the extensions given in the DNS | MAY have one or more EDNS(0) extensions, depending on the extension | |||
| request. | definition of the extensions given in the DNS request. | |||
| Native HTTP methods are used to correlate requests and responses. | Native HTTP methods are used to correlate requests and responses. | |||
| Responses may be returned in a different temporal order than requests | Responses may be returned in a different temporal order than requests | |||
| were made using the protocols native multistreaming functionality. | were made using the protocols native multi-streaming functionality. | |||
| In the HTTP responses, the HTTP cache headers SHOULD be set to expire | In the HTTP responses, the HTTP cache headers SHOULD be set to expire | |||
| at the same time as the shortest DNS TTL in the response. Because | at the same time as the shortest DNS TTL in the response. Because | |||
| DNS provides only caching but not revalidation semantics, DNS over | DNS provides only caching but not revalidation semantics, DNS over | |||
| HTTP responses should not carry revalidation response headers (such | HTTP responses should not carry revalidation response headers (such | |||
| as Last-Modified: or Etag:) or return 304 responses. | as Last-Modified: or Etag:) or return 304 responses. | |||
| A DNS API Server MUST be able to process application/dns- | A DNS API Server MUST be able to process application/dns- | |||
| udpwireformat request messages. | udpwireformat request messages. | |||
| skipping to change at page 7, line 32 ¶ | skipping to change at page 7, line 44 ¶ | |||
| :status = 200 | :status = 200 | |||
| content-type = application/dns-udpwireformat | content-type = application/dns-udpwireformat | |||
| content-length = 64 | content-length = 64 | |||
| cache-control = max-age=128 | cache-control = max-age=128 | |||
| <64 bytes represented by the following hex encoding> | <64 bytes represented by the following hex encoding> | |||
| abcd 8180 0001 0001 0000 0000 0377 7777 | abcd 8180 0001 0001 0000 0000 0377 7777 | |||
| 0765 7861 6d70 6c65 0363 6f6d 0000 0100 | 0765 7861 6d70 6c65 0363 6f6d 0000 0100 | |||
| 0103 7777 7707 6578 616d 706c 6503 636f | 0103 7777 7707 6578 616d 706c 6503 636f | |||
| 6d00 0001 0001 0000 0080 0004 5Db8 d822 | 6d00 0001 0001 0000 0080 0004 5db8 d822 | |||
| 7. HTTP Integration | 7. HTTP Integration | |||
| In order to satisfy the security requirements of DNS over HTTPS, this | In order to satisfy the security requirements of DNS over HTTPS, this | |||
| protocol MUST use HTTP/2 [RFC7540] or its successors. HTTP/2 | protocol MUST use HTTP/2 [RFC7540] or its successors. HTTP/2 | |||
| enforces a modern TLS profile necessary for achieving the security | enforces a modern TLS profile necessary for achieving the security | |||
| requirements of this protocol. | requirements of this protocol. | |||
| This protocol MUST be used with https scheme URI [RFC7230]. | This protocol MUST be used with https scheme URI [RFC7230]. | |||
| The messages in classic UDP based DNS [RFC1035] are inherently | The messages in classic UDP based DNS [RFC1035] are inherently | |||
| unordered and have low overhead. A competitive HTTP transport needs | unordered and have low overhead. A competitive HTTP transport needs | |||
| to support reordering, priority, parallelism, and header compression. | to support reordering, priority, parallelism, and header compression. | |||
| For this additional reason, this protocol MUST use HTTP/2 [RFC7540] | For this additional reason, this protocol MUST use HTTP/2 [RFC7540] | |||
| or its successors. | or its successors. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| 8.1. Registration of Well-Known URI | ||||
| This specification registers a Well-Known URI [RFC5785]: | This specification registers a Well-Known URI [RFC5785]: | |||
| o URI Suffix: dns-query | o URI Suffix: dns-query | |||
| o Change Controller: IETF | o Change Controller: IETF | |||
| o Specification Document(s): [this specification] | o Specification Document(s): [this specification] | |||
| (Note for the -00 draft: a request for the media type application/ | 8.2. Registration of application/dns-udpwireformat Media Type | |||
| dns-udpwireformat has already been submitted separately from this | To: ietf-types@iana.org | |||
| draft because it may be useful for other documents as well. That | Subject: Registration of MIME media type | |||
| application is pending approval.) | pplication/dns-udpwireformat | |||
| MIME media type name: application | ||||
| MIME subtype name: dns-udpwireformat | ||||
| Required parameters: n/a | ||||
| Optional parameters: n/a | ||||
| Encoding considerations: This is a binary format. The contents are a | ||||
| DNS message as defined in RFC 1035. The format used here is for DNS | ||||
| over UDP, which is the format defined in the diagrams in RFC 1035. | ||||
| Security considerations: The security considerations for carrying | ||||
| this data are the same for carrying DNS without encryption. | ||||
| Interoperability considerations: None. | ||||
| Published specification: This document. | ||||
| Applications that use this media type: | ||||
| Systems that want to exchange full DNS messages. | ||||
| Additional information: | ||||
| Magic number(s): n/a | ||||
| File extension(s): n/a | ||||
| Macintosh file type code(s): n/a | ||||
| Person & email address to contact for further information: | ||||
| Paul Hoffman, paul.hoffman@icann.org | ||||
| Intended usage: COMMON | ||||
| Restrictions on usage: n/a | ||||
| Author: Paul Hoffman, paul.hoffman@icann.org | ||||
| Change controller: IESG | ||||
| 9. Security Considerations | 9. Security Considerations | |||
| Running DNS over https:// relies on the security of the underlying | Running DNS over https:// relies on the security of the underlying | |||
| HTTP connection. By requiring at least [RFC7540] levels of support | HTTP connection. By requiring at least [RFC7540] levels of support | |||
| for TLS this protocol expects to use current best practices for | for TLS this protocol expects to use current best practices for | |||
| secure transport. | secure transport. | |||
| Session level encryption has well known weaknesses with respect to | Session level encryption has well known weaknesses with respect to | |||
| traffic analysis which might be particularly acute when dealing with | traffic analysis which might be particularly acute when dealing with | |||
| DNS queries. Sections 10.6 (Compression) and 10.7 (Padding) of | DNS queries. Sections 10.6 (Compression) and 10.7 (Padding) of | |||
| [RFC7540] provide some further advice on mitigations within an HTTP/2 | [RFC7540] provide some further advice on mitigations within an HTTP/2 | |||
| context. | context. | |||
| A server that is acting both as a normal web server and a DNS API | ||||
| server is in a position to choose which DNS names it forces a client | ||||
| to resolve (through its web service) and also be the one to answer | ||||
| those queries (through its DNS API service). An untrusted DNS API | ||||
| server can thus easily cause damage by poisoning a client's cache | ||||
| with names that the DNS API server chooses to poison. A client MUST | ||||
| NOT trust a DNS API server simply because it was discovered, or | ||||
| because the client was told to trust the DNS API server by an | ||||
| untrusted party. Instead, a client MUST only trust DNS API server | ||||
| that is configured as trustworthy. | ||||
| 10. Acknowledgments | 10. Acknowledgments | |||
| Joe Hildebrand contributed lots of material for a different iteration | Joe Hildebrand contributed lots of material for a different iteration | |||
| of this document. Helpful early comments were given by Ben Schwartz | of this document. Helpful early comments were given by Ben Schwartz | |||
| and Mark Nottingham. | and Mark Nottingham. | |||
| 11. References | 11. References | |||
| 11.1. Normative References | 11.1. Normative References | |||
| [RFC1035] Mockapetris, P., "Domain names - implementation and | [RFC1035] Mockapetris, P., "Domain names - implementation and | |||
| specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | |||
| November 1987, <http://www.rfc-editor.org/info/rfc1035>. | November 1987, <http://www.rfc-editor.org/info/rfc1035>. | |||
| [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, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | |||
| Resource Identifier (URI): Generic Syntax", STD 66, | Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | |||
| RFC 3986, DOI 10.17487/RFC3986, January 2005, | <http://www.rfc-editor.org/info/rfc4648>. | |||
| <http://www.rfc-editor.org/info/rfc3986>. | ||||
| [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, | (TLS) Protocol Version 1.2", RFC 5246, | |||
| DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, | |||
| <http://www.rfc-editor.org/info/rfc5246>. | <http://www.rfc-editor.org/info/rfc5246>. | |||
| [RFC5785] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known | [RFC5785] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known | |||
| Uniform Resource Identifiers (URIs)", RFC 5785, | Uniform Resource Identifiers (URIs)", RFC 5785, | |||
| DOI 10.17487/RFC5785, April 2010, | DOI 10.17487/RFC5785, April 2010, | |||
| <http://www.rfc-editor.org/info/rfc5785>. | <http://www.rfc-editor.org/info/rfc5785>. | |||
| End of changes. 28 change blocks. | ||||
| 64 lines changed or deleted | 129 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/ | ||||