draft-ietf-dnsext-nsec3-04.txt
来自「非常好的dns解析软件」· 文本 代码 · 共 1,567 行 · 第 1/5 页
TXT
1,567 行
/ Next Hashed Ownername / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / Type Bit Maps / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ "O" is the Opt-In Flag field.3.1.1. The Hash Function Field The Hash Function field identifies the cryptographic hash function used to construct the hash-value. The values are as defined for the DS record (see RFC 3658 [10]). On reception, a resolver MUST ignore an NSEC3 RR with an unknown hash function value.Laurie, et al. Expires August 5, 2006 [Page 6]Internet-Draft nsec3 February 20063.1.2. The Opt-In Flag Field The Opt-In Flag field indicates whether this NSEC3 RR covers unsigned delegations. In DNSSEC, NS RRsets at delegation points are not signed, and may be accompanied by a DS record. The security status of the subzone is determined by the presence or absence of the DS RRset, cryptographically proven by the NSEC record or the signed DS RRset. The presence of the Opt-In flag expands this definition by allowing insecure delegations to exist within an otherwise signed zone without the corresponding NSEC3 record at the delegation's (hashed) owner name. These delegations are proven insecure by using a covering NSEC3 record. Resolvers must be able to distinguish between NSEC3 records and Opt-In NSEC3 records. This is accomplished by setting the Opt-In flag of the NSEC3 records that cover (or potentially cover) insecure delegation nodes. An Opt-In NSEC3 record does not assert the existence or non-existence of the insecure delegations that it covers. This allows for the addition or removal of these delegations without recalculating or resigning records in the NSEC3 chain. However, Opt-In NSEC3 records do assert the (non)existence of other, authoritative RRsets. An Opt-In NSEC3 record MAY have the same original owner name as an insecure delegation. In this case, the delegation is proven insecure by the lack of a DS bit in type map and the signed NSEC3 record does assert the existence of the delegation. Zones using Opt-In MAY contain a mixture of Opt-In NSEC3 records and non-Opt-In NSEC3 records. If an NSEC3 record is not Opt-In, there MUST NOT be any hashed ownernames of insecure delegations (nor any other records) between it and the RRsets indicated by the 'Next Hashed Ownername' in the NSEC3 RDATA. If it is Opt-In, there MUST only be hashed ownernames of insecure delegations between it and the next node indicated by the 'Next Hashed Ownername' in the NSEC3 RDATA. In summary, o An Opt-In NSEC3 type is identified by an Opt-In Flag field value of 1. o A non Opt-In NSEC3 type is identified by an Opt-In Flag field value of 0. and,Laurie, et al. Expires August 5, 2006 [Page 7]Internet-Draft nsec3 February 2006 o An Opt-In NSEC3 record does not assert the non-existence of a hash ownername between its ownername and next hashed ownername, although it does assert that any hashed name in this span MUST be of an insecure delegation. o An Opt-In NSEC3 record does assert the (non)existence of RRsets with the same hashed owner name.3.1.3. The Iterations Field The Iterations field defines the number of times the hash has been iterated. More iterations results in greater resiliency of the hash value against dictionary attacks, but at a higher cost for both the server and resolver. See Section 5 for details of this field's use. Iterations make an attack more costly by making the hash computation more computationally intensive, e.g. by iterating the hash function a number of times. When generating a few hashes this performance loss will not be a problem, as a validator can handle a delay of a few milliseconds. But when doing a dictionary attack it will also multiply the attack workload by a factor, which is a problem for the attacker.3.1.4. The Salt Length Field The salt length field defines the length of the salt in octets.3.1.5. The Salt Field The Salt field is not present when the Salt Length Field has a value of 0. The Salt field is appended to the original ownername before hashing in order to defend against precalculated dictionary attacks. See Section 5 for details on how the salt is used. Salt is used to make dictionary attacks using precomputation more costly. A dictionary can only be computed after the attacker has the salt, hence a new salt means that the dictionary has to be regenerated with the new salt. There MUST be a complete set of NSEC3 records covering the entire zone that use the same salt value. The requirement exists so that, given any qname within a zone, at least one covering NSEC3 RRset may be found. While it may be theoretically possible to produce a set of NSEC3s that use different salts that cover the entire zone, it is computationally infeasible to generate such a set. See Section 8.2 for further discussion.Laurie, et al. Expires August 5, 2006 [Page 8]Internet-Draft nsec3 February 2006 The salt value SHOULD be changed from time to time - this is to prevent the use of a precomputed dictionary to reduce the cost of enumeration.3.1.6. The Next Hashed Ownername Field The Next Hashed Ownername field contains the next hashed ownername in hash order. That is, given the set of all hashed owernames, the Next Hashed Ownername contains the hash value that immediately follows the owner hash value for the given NSEC3 record. The value of the Next Hashed Ownername Field in the last NSEC3 record in the zone is the same as the ownername of the first NSEC3 RR in the zone in hash order. Hashed ownernames of glue RRsets MUST NOT be listed in the Next Hashed Ownername unless at least one authoritative RRset exists at the same ownername. Hashed ownernames of delegation NS RRsets MUST be listed if the Opt-In bit is clear. Note that the Next Hashed Ownername field is not encoded, unlike the NSEC3 RR's ownername. It is the unmodified binary hash value. It does not include the name of the containing zone. The length of this field is the length of the hash value produced by the hash function selected by the Hash Function field.3.1.7. The Type Bit Maps Field The Type Bit Maps field identifies the RRset types which exist at the NSEC3 RR's original ownername. The Type bits for the NSEC3 RR and RRSIG RR MUST be set during generation, and MUST be ignored during processing. The RR type space is split into 256 window blocks, each representing the low-order 8 bits of the 16-bit RR type space. Each block that has at least one active RR type is encoded using a single octet window number (from 0 to 255), a single octet bitmap length (from 1 to 32) indicating the number of octets used for the window block's bitmap, and up to 32 octets (256 bits) of bitmap. Blocks are present in the NSEC3 RR RDATA in increasing numerical order. "|" denotes concatenation Type Bit Map(s) Field = ( Window Block # | Bitmap Length | Bitmap ) +Laurie, et al. Expires August 5, 2006 [Page 9]Internet-Draft nsec3 February 2006 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 corresponds to RR type 1 (A), bit 2 corresponds to RR type 2 (NS), and so forth. For window block 1, bit 1 corresponds to RR type 257, bit 2 to RR type 258. If a bit is set to 1, it indicates that an RRset of that type is present for the NSEC3 RR's ownername. If a bit is set to 0, it indicates that no RRset of that type is present for the NSEC3 RR's ownername. 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 [11] (section 3.1) or within the range reserved for assignment only to QTYPEs and Meta-TYPEs MUST be set to 0, since they do not appear in zone data. If encountered, 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 NSEC3 RR's actual ownername. Trailing zero octets not specified MUST be interpreted as zero octets.3.2. The NSEC3 RR Presentation Format The presentation format of the RDATA portion is as follows: The Opt-In Flag Field is represented as an unsigned decimal integer. The value is either 0 or 1. The Hash field is presented as a mnemonic of the hash or as an unsigned decimal integer. The value has a maximum of 127. The Iterations field is presented as an unsigned decimal integer. The Salt Length field is not presented. The Salt field is represented as a sequence of case-insensitive hexadecimal digits. Whitespace is not allowed within the sequence. The Salt Field is represented as "-" (without the quotes) when the Salt Length field has value 0. The Next Hashed Ownername field is represented as a sequence of case- insensitive base32 digits, without whitespace. The Type Bit Maps Field is represented as a sequence of RR typeLaurie, et al. Expires August 5, 2006 [Page 10]Internet-Draft nsec3 February 2006 mnemonics. When the mnemonic is not known, the TYPE representation as described in RFC 3597 [12] (section 5) MUST be used.4. Creating Additional NSEC3 RRs for Empty Non-Terminals In order to prove the non-existence of a record that might be covered by a wildcard, it is necessary to prove the existence of its closest encloser. A closest encloser might be an empty non-terminal. Additional NSEC3 RRs are generated for empty non-terminals. These additional NSEC3 RRs are identical in format to NSEC3 RRs that cover existing RRs in the zone except that their type-maps only indicated the existence of an NSEC3 RRset and an RRSIG RRset. This relaxes the requirement in Section 2.3 of RFC4035 that NSEC RRs not appear at names that did not exist before the zone was signed. [Comment.1]5. Calculation of the Hash Define H(x) to be the hash of x using the hash function selected by the NSEC3 record and || to indicate concatenation. Then define: IH(salt,x,0)=H(x || salt) IH(salt,x,k)=H(IH(salt,x,k-1) || salt) if k > 0 Then the calculated hash of an ownername is IH(salt,ownername,iterations-1), where the ownername is the canonical form. The canonical form of the ownername is the wire format of the ownername where: 1. The ownername is fully expanded (no DNS name compression) and fully qualified; 2. All uppercase US-ASCII letters are replaced by the corresponding lowercase US-ASCII letters; 3. If the ownername is a wildcard name, the ownername is in its original unexpanded form, including the "*" label (no wildcard substitution); This form is as defined in section 6.2 of RFC 4034 ([4]).6. Including NSEC3 RRs in a Zone Each ownername within the zone that owns authoritative RRsets MUSTLaurie, et al. Expires August 5, 2006 [Page 11]Internet-Draft nsec3 February 2006 have a corresponding NSEC3 RR. Ownernames that correspond to unsigned delegations MAY have a corresponding NSEC3 RR, however, if there is not, there MUST be a covering NSEC3 RR with the Opt-In flag set to 1. Other non-authoritative RRs are not included in the set of NSEC3 RRs. Each empty non-terminal MUST have an NSEC3 record. The TTL value for any NSEC3 RR SHOULD be the same as the minimum TTL
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?