RFC 3225
Indicating Resolver Support of DNSSEC
RFC 3225: Indicating Resolver Support of DNSSEC ๐
okay bestie, this is the one about how a resolver tells a server "hey, I can handle DNSSEC records" ๐ซถ so the server doesn't just dump them on everyone. here's the title block ๐
- Network Working Group ๐ธ
- RFC 3225, Indicating Resolver Support of DNSSEC
- Author: D. Conrad (David Conrad), Nominum, Inc. ๐
- Category: Standards Track โจ
- Date: December 2001 ๐
- Obsoletes / Updates: the header doesn't list either one ๐ฆ
Status of This Memo โจ
okay so this doc is an Internet standards track protocol for the Internet community ๐ it's also asking for discussion and suggestions for improvements ๐ for the official standardization state of this protocol, check the current edition of "Internet Official Protocol Standards" (STD 1) ๐ and yes, distribution is unlimited ๐
Copyright Notice ๐
Copyright (C) The Internet Society (2001). All Rights Reserved. ๐
Abstract ๐ฎ
okay the big idea: to deploy DNSSEC (Domain Name System Security Extensions) for real ๐ฅ DNSSEC aware servers should only do automatic inclusion of DNSSEC RRs when there's an explicit indication that the resolver can understand those RRs ๐ง this doc proposes using a bit in the EDNS0 header to send that explicit indication, and it describes the protocol changes needed to make that notification happen โจ
1. Introduction ๐ฆ
so DNSSEC [RFC2535] is designed to give data integrity and authentication to security aware resolvers and applications, using cryptographic digital signatures ๐ but here's the tea: as DNSSEC gets deployed, non-DNSSEC-aware clients are gonna query DNSSEC-aware servers ๐ญ and in that situation, the DNSSEC-aware server (answering a request for data in a signed zone) responds with SIG, KEY, and/or NXT records ๐ for reasons we'll get into later, those responses can cause big operational problems for the DNS infrastructure ๐
this doc is about avoiding those problems. the plan is that DNSSEC-aware servers only respond with SIG, KEY, and/or NXT RRs when the resolver explicitly says it can understand them ๐
for this document, "DNSSEC security RRs" means RRs of type SIG, KEY, or NXT ๐
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] ๐ธ
2. Rationale ๐
at the start of DNSSEC deployment, most queries are gonna come from resolvers that aren't DNSSEC aware ๐ฅบ so they don't understand or support DNSSEC security RRs at all ๐ฉ when one of those resolvers sends a query for a DNSSEC signed zone, the DNSSEC spec says the nameserver has to respond with the appropriate DNSSEC security RRs ๐ but DNS UDP datagrams are capped at 512 bytes [RFC1035] ๐ฆ so responses with DNSSEC security RRs very likely get truncated, and then the resolver retries the query over TCP ๐ตโ๐ซ
and TCP DNS queries are a whole mood ๐ they come with a ton of overhead from connection setup and teardown โณ operationally, the extra TCP queries are gonna be rough: more network traffic (usually five packets for one query/response instead of two) ๐, more latency from the extra round trip times โฑ๏ธ, more queries failing from timeouts โ, and way more load on nameservers ๐ฅ
also, in the early experimental deployments of DNSSEC, people reported that non-DNSSEC aware resolvers couldn't handle responses containing DNSSEC security RRs ๐ in the worst case the resolver fails, and in the slightly better case the whole response gets ignored ๐ญ
given all of that, it'd be prudent to explicitly tell the nameserver that the client is prepared to receive (if not understand) DNSSEC security RRs ๐ซถ
client-side DNSSEC support is treated as binary ๐ the client is either willing to receive all DNSSEC security RRs or willing to accept none of them ๐ so one bit is enough to signal client-side DNSSEC support โจ effective DNSSEC use needs EDNS0 [RFC2671] anyway ๐ฆ and bits in the "classic" (non-EDNS enhanced DNS header) are scarce ๐ฅ plus, some non-compliant caching or forwarding servers might inappropriately copy data from classic headers as queries get passed on to authoritative servers ๐ so the proposal uses a bit from the EDNS0 header instead ๐
there was an alternative: treat the existence of an EDNS0 header as an implicit sign that the client supports DNSSEC ๐ค but that wasn't chosen, because some applications may support EDNS0 while using DNSSEC would be inappropriate for them ๐ซ
3. Protocol Changes ๐ง
the way the client explicitly tells the server it can accept (if not understand) DNSSEC security RRs is by using the most significant bit of the Z field on the EDNS0 OPT header in the query โจ this bit is called the "DNSSEC OK" (DO) bit ๐ in the EDNS0 OPT meta-RR, the DO bit is the first bit of the third and fourth bytes of the "extended RCODE and flags" portion ๐ it's laid out like this:
+0 (MSB) +1 (LSB)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
0: | EXTENDED-RCODE | VERSION |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
2: |DO| Z |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
setting the DO bit to one in a query tells the server the resolver is able to accept DNSSEC security RRs ๐ with the DO bit cleared (set to zero), the resolver is unprepared to handle them, and those RRs MUST NOT be returned in the response (unless DNSSEC security RRs are explicitly queried for) ๐ซ and the DO bit of the query MUST be copied in the response ๐ซถ
more specifically, DNSSEC-aware nameservers MUST NOT insert SIG, KEY, or NXT RRs to authenticate a response as specified in [RFC2535] unless the DO bit was set on the request ๐ security records that match an explicit SIG, KEY, NXT, or ANY query, or that are part of the zone data for an AXFR or IXFR query, are included whether or not the DO bit was set โจ
a recursive DNSSEC-aware server MUST set the DO bit on recursive requests, no matter what the DO bit was on the initiating resolver request ๐ if the initiating request didn't have the DO bit set, the recursive DNSSEC-aware server MUST remove DNSSEC security RRs before returning the data to the client ๐งน but cached data MUST NOT be modified ๐
if a server replies to a query that has the DO bit set with NOTIMP, FORMERR or SERVFAIL, the resolver SHOULD NOT expect DNSSEC security RRs ๐ โโ๏ธ and it SHOULD retry the query without EDNS0, following section 5.3 of [RFC2671] ๐
Security Considerations ๐
โ ๏ธ this part is seriously important, bestie ๐ค
the absence of DNSSEC data in a response to a query with the DO bit set MUST NOT be taken to mean there's no security information available for that zone ๐จ the response could be forged, or it could be a non-forged response to an altered query (one where the DO bit was cleared) ๐ฑ
IANA Considerations ๐ฆ
EDNS0 [RFC2671] defines 16 bits as extended flags in the OPT record, and those bits get encoded into the TTL field of the OPT record (RFC2671 section 4.6) ๐
this document reserves one of those bits as the OK bit ๐ it's requested that the left most bit be allocated ๐ so the USE of the OPT record TTL field would look like this:
+0 (MSB) +1 (LSB)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
0: | EXTENDED-RCODE | VERSION |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
2: |DO| Z |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Acknowledgements ๐ธ
this doc is based on a rough draft by Bob Halley ๐ with input from Olafur Gudmundsson, Andreas Gustafsson, Brian Wellington, Randy Bush, Rob Austein, Steve Bellovin, and Erik Nordmark ๐ซถ
References ๐
[RFC1034] Mockapetris, P., "Domain Names - Concepts and Facilities", STD 13, RFC 1034, November 1987. ๐ฆ
[RFC1035] Mockapetris, P., "Domain Names - Implementation and Specifications", 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. ๐
[RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC 2671, August 1999. ๐งฉ
Author's Address ๐
David Conrad
Nominum Inc.
950 Charter Street
Redwood City, CA 94063
USA
Phone: +1 650 381 6003
EMail: david.conrad@nominum.com
Full Copyright Statement ๐
the legal text is kept word for word here so nothing gets changed ๐ซถ
Copyright (C) The Internet Society (2001). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement ๐
Funding for the RFC Editor function is currently provided by the Internet Society. โจ
๐ฆ where this page comes from
- ietf: rfc3225 2001-12
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms