RFC 3845
DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format
DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format π
okay bestie, this is RFC 3845 π and it's a Standards Track doc, so it's the real deal, not a "maybe someday" thing π It came out in August 2004 πΈ, edited by J. Schlyter, Ed. π It updates RFC 3755 and RFC 2535 β¨ and doesn't obsolete anything. The whole point is fixing how DNSSEC's NSEC record packs its type list π¦
Status of this Memo β¨
so this doc is an Internet standards track protocol for the Internet community π It's also asking people to talk about it and suggest improvements π¬ If you want the current official standardization state of this protocol, check the "Internet Official Protocol Standards" (STD 1) π And the distribution of this memo is unlimited π₯°
Copyright Notice πΈ
Copyright (C) The Internet Society (2004).
Abstract π
this doc redefines the wire format of the "Type Bit Map" field in the DNS NextSECure (NSEC) resource record RDATA format π₯ The goal is to cover the full resource record (RR) type space, so every type fits π
Table of Contents π
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. The NSEC Resource Record . . . . . . . . . . . . . . . . . . . 2
2.1. NSEC RDATA Wire Format . . . . . . . . . . . . . . . . . 3
2.1.1. The Next Domain Name Field . . . . . . . . . . . 3
2.1.2. The List of Type Bit Map(s) Field . . . . . . . 3
2.1.3. Inclusion of Wildcard Names in NSEC RDATA . . . 4
2.2. The NSEC RR Presentation Format . . . . . . . . . . . . 4
2.3. NSEC RR Example . . . . . . . . . . . . . . . . . . . . 5
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
4. Security Considerations . . . . . . . . . . . . . . . . . . . 5
5. References . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.1. Normative References . . . . . . . . . . . . . . . . . . 6
5.2. Informative References . . . . . . . . . . . . . . . . . 6
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 6
7. Author's Address . . . . . . . . . . . . . . . . . . . . . . . 6
8. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 7
1. Introduction π¦
okay so the NSEC [5] Resource Record (RR) is how DNS gives authenticated proof that a DNS owner name or type doesn't exist, which is so iconic π It's cousins with the DNS [6][7] stuff, and it's based on the NXT RR from RFC 2535 [2]. It's basically the same except for the name and the typecode π§
here's the tea β: the NXT RDATA could only carry info about the first 127 types. Not great! RFC 2535 did reserve a bit for an extension mechanism, but nobody ever actually defined it π
so to avoid building an extension mechanism into a deployed base of DNSSEC-aware servers and resolvers once those first 127 type codes get used up, this doc redefines the wire format of the "Type Bit Map" field in the NSEC RDATA to cover the full RR type space π
the new type bit map format can cover the full possible range of typecodes π It's also pretty economical for the common case of a few types on an owner name, and it can represent owner names with all possible types present in packets of approximately 8.5 kilobytes π³ Plus it's simple to implement π Efficient searching of the type bitmap for certain types is not a requirement, so no stress there β¨
for convenience and completeness, this doc lays out the syntax and semantics of the NSEC RR based on RFC 2535 [2] as updated by RFC 3755 [5]. So no changes there, except for the syntax of the type bit map π
This document updates RFC 2535 [2] and RFC 3755 [5].
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 BCP 14, RFC 2119 [1] π
2. The NSEC Resource Record π
the NSEC resource record lists two things π: the owner name of the next RRset in the canonical ordering of the zone, and the set of RR types present at the NSEC RR's owner name. All the NSEC RRs in a zone tell you which RRsets exist, and they form a chain of owner names through the zone π That info gives you authenticated denial of existence for DNS data, as described in RFC 2535 [2] π¦
The type value for the NSEC RR is 47.
The NSEC RR RDATA format is class independent and defined for all classes β¨
The NSEC RR SHOULD have the same TTL value as the SOA minimum TTL field. This is in the spirit of negative caching [8] π
2.1. NSEC RDATA Wire Format πΈ
the RDATA of the NSEC RR looks like this π
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Next Domain Name /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ List of Type Bit Map(s) /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2.1.1. The Next Domain Name Field π
the Next Domain Name field holds the owner name of the next RR in the canonical ordering of the zone π§ For the last NSEC record in the zone, this field is the name of the zone apex, which is the owner name of the zone's SOA RR π
A sender MUST NOT use DNS name compression on the Next Domain Name field when transmitting an NSEC RR. no compression, bestie π ββοΈ
Owner names of RRsets that aren't authoritative for the given zone (like glue records) MUST NOT be listed in the Next Domain Name unless at least one authoritative RRset exists at the same owner name π« That's a hard no, no cap π
2.1.2. The List of Type Bit Map(s) Field π
the RR type space is split into 256 window blocks, and each one represents the low-order 8 bits of the 16-bit RR type space π§© Every block that has at least one active RR type gets encoded with a single octet window number (from 0 to 255), a single octet bitmap length (from 1 to 32) saying how many octets the block's bitmap uses, and up to 32 octets (256 bits) of bitmap π
window blocks show up in the NSEC RR RDATA in increasing numerical order π
"|" denotes concatenation β¨
the layout is Type Bit Map(s) Field = ( Window Block # | Bitmap Length | Bitmap ) + π¦
Type Bit Map(s) Field = ( Window Block # | Bitmap Length | Bitmap ) +
each bitmap encodes the low-order 8 bits of RR types within the window block, in network bit order π The first bit is bit 0. For window block 0, bit 1 is RR type 1 (A), bit 2 is RR type 2 (NS), and so on π For window block 1, bit 1 is RR type 257 and bit 2 is RR type 258 π’ If a bit is set to 1, an RRset of that type is present for the NSEC RR's owner name β If a bit is set to 0, no RRset of that type is present for that owner name β
since bit 0 in window block 0 refers to the non-existing RR type 0, it MUST be set to 0 π After verification, the validator MUST ignore the value of bit 0 in window block 0 π«Ά
bits representing Meta-TYPEs or QTYPEs, as specified in RFC 2929 [3] (section 3.1), or within the range reserved for assignment only to QTYPEs and Meta-TYPEs, MUST be set to 0, since they don't show up in zone data π§ If you do run into them, they must be ignored upon reading π
blocks with no types present MUST NOT be included π« Trailing zero octets in the bitmap MUST be omitted βοΈ The length of each block's bitmap is determined by the type code with the largest numerical value within that block, among the set of RR types present at the NSEC RR's owner name π Trailing zero octets that aren't specified MUST be interpreted as zero octets π
2.1.3. Inclusion of Wildcard Names in NSEC RDATA π
if a wildcard owner name shows up in a zone, the wildcard label ("*") is treated as a literal symbol π£ It's handled the same as any other owner name when generating NSEC RRs π Wildcard owner names appear in the Next Domain Name field without any wildcard expansion π RFC 2535 [2] describes how wildcards affect authenticated denial of existence π
2.2. The NSEC RR Presentation Format π
the presentation format of the RDATA portion goes like this β¨
The Next Domain Name field is represented as a domain name.
The List of Type Bit Map(s) Field is represented as a sequence of RR type mnemonics. When the mnemonic isn't known, the TYPE representation from RFC 3597 [4] (section 5) MUST be used π§©
8. Full Copyright Statement β¨
Okay bestie, time for the legal bit π
The Internet Society owns the copyright here (2004 π¦). This document is subject to the rights, licenses and restrictions in BCP 78, and except as set forth there, the authors keep all their rights π
Also, the doc comes as "AS IS" and the whole disclaimer is in ALL CAPS for a reason π THE CONTRIBUTOR, THE ORGANIZATION HE/S HE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
Intellectual Property
So the IETF is not picking a side on whether any Intellectual Property Rights or other rights could apply to the tech in this document πΈ It also doesn't say whether licenses for those rights exist or are available, and it hasn't done its own search for any such rights either π If you want the rules on IETF Documents and rights, check out BCP 78 and BCP 79, they're the source of truth β¨
Copies of IPR disclosures sent to the IETF Secretariat live in the IETF online IPR repository at http://www.ietf.org/ipr. That's also where you'd find any assurances of licenses that have been made available, or the results of attempts to get a general license or permission for implementers or users of this specification to use those proprietary rights π§
The IETF also invites anyone to point out any copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard π Send that info to the IETF at ietf-ipr@ietf.org π«Ά
Acknowledgement
Funding for the RFC Editor function is currently provided by the Internet Society π Honestly, the people keeping the RFC library running deserve all the flowers π
π¦ where this page comes from
- ietf: rfc3845 2004-08
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms