我想知道为什么NSEC3记录中应该包含盐?我无法想象解析器为什么以及如何使用盐?
答案 0 :(得分:0)
在NSEC3情况下使用的盐可能会随时间变化。甚至建议对其进行更改。因此,在任何给定时间点,您都可以使用不同的盐计算出2条NSEC3记录。
请参见https://tools.ietf.org/html/rfc5155#appendix-C.1
该区域必须至少有一套完整的NSEC3 RR
使用相同的盐值。应定期更换盐以防止预先计算 用一种盐。建议将盐更改为
每次重新签名。
以下内容会更详细:
请注意,这可能会导致解析器看到具有不同 同一区域的盐值。这是无害的,因为每个RR 独立存在(也就是说,它拒绝其所有者名称集 使用NSEC3 RR中的盐散列在两个散列之间 在NSEC3 RR中)-只有服务器需要完整的服务器 相同盐的NSEC3 RR的数量,以便能够回答每个 可能的查询。
不禁止具有不同盐的NSEC3 RR 在同一区域内。但是,为了使权威服务器能够 能够始终如一地找到涵盖NSEC3 RR的权威 服务器必须选择一组参数(算法,盐和
迭代)来选择NSEC3 RR。
salt不用于计算NSEC3记录,而是使用其名称(经证明不存在)进行哈希处理,有关完整算法,请参见https://tools.ietf.org/html/rfc5155#section-5。
阅读https://tools.ietf.org/html/rfc7129会有所帮助,例如5.5节。解析程序需要对名称本身进行哈希处理(因此需要了解哈希算法,salt值和迭代次数,这些都在NSEC3记录中),以查看适用的NSEC3记录。
上述参考中的所有详细信息中,对查询x.2.example.org TXT
的答复为:
15bg9l6359f5ch23e34ddua6n1rihl9h.example.org. (
NSEC3 1 0 2 DEAD 1AVVQN74SG75UKFVF25DGCETHGQ638EK NS SOA RRSIG
DNSKEY NSEC3PARAM )
1avvqn74sg75ukfvf25dgcethgq638ek.example.org. (
NSEC3 1 0 2 DEAD 75B9ID679QQOV6LDFHD8OCSHSSSB6JVQ )
75b9id679qqov6ldfhd8ocshsssb6jvq.example.org. (
NSEC3 1 0 2 DEAD 8555T7QEGAU7PJTKSNBCHG4TD2M0JNPJ TXT RRSIG )
解析器内部发生了什么
“ x.2.example.org”的哈希值为“ ndtu6dste50pr4a1f2qvr1v31g00i2i1”。
在第一个NSEC3上检查此哈希将得出它不在以下时间间隔之间:“ 15bg9l6359f5ch23e34ddua6n1rihl9h”至“ 1avvqn74sg75ukfvf25dgcethgq638ek”。对于第二个NSEC3,答案也是否定的:哈希在“ 1avvqn74sg75ukfvf25dgcethgq638ek”和“ 75b9id679qqov6ldfhd8ocshsssb6jvq”所描述的时间间隔之外排序。 并且,第三个NSEC3(间隔为“ 75b9id679qqov6ldfhd8ocshsssb6jvq”)到
“ 8555t7qegau7pjtksnbchg4td2m0jnpj”也没有任何帮助。
然后解析器将通过执行以下操作来发现最接近的遭遇:
解析器不断从中散列越来越短的名称 查询名称,直到NSEC3的所有者名称匹配为止。这个拥有者 名称是最接近的封闭器。
简而言之,验证解析器需要哈希来完成所有这些工作。