【发布时间】:2019-04-24 21:40:42
【问题描述】:
我想知道为什么 NSEC3 记录应该包含盐?我无法想象解析器为什么以及如何使用盐?
【问题讨论】:
我想知道为什么 NSEC3 记录应该包含盐?我无法想象解析器为什么以及如何使用盐?
【问题讨论】:
NSEC3 案例中使用的盐会随着时间而改变。甚至建议更改。因此,在任何给定时间点,您都可以使用不同的盐计算 2 个 NSEC3 记录。
见https://www.rfc-editor.org/rfc/rfc5155#appendix-C.1
该区域必须至少有一组完整的 NSEC3 RR
使用相同的盐值。应该定期更改盐以防止预计算 使用单一盐。建议更换盐
每次重新签名。
后面更详细:
请注意,这可能会导致解析器看到不同的 RR 同一区域的盐值。这是无害的,因为每个 RR 独立存在(也就是说,它拒绝拥有 哈希,使用 NSEC3 RR 中的盐,落在两个哈希之间 在 NSEC3 RR 中)——只有服务器需要完整的集合 的 NSEC3 RR 具有相同的盐,以便能够回答每个 可能的查询。
没有禁止使用不同盐的 NSEC3 RR 在同一区域内。但是,为了让权威服务器 能够始终如一地找到权威的 NSEC3 RRs 服务器必须选择一组参数(算法、盐和
迭代)在选择 NSEC3 RR 时使用。
盐不用于计算 NSEC3 记录,它被用于,名称被证明不存在,被散列,完整算法见https://www.rfc-editor.org/rfc/rfc5155#section-5。
阅读https://www.rfc-editor.org/rfc/rfc7129 会有所帮助,例如第 5.5 节。解析器需要对名称本身进行哈希处理(因此需要知道哈希算法、盐值和迭代次数,这些都在 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 的所有者名称匹配。这位业主 name 是最接近的封闭符。
因此,简而言之,验证解析器需要哈希来完成所有这些工作。
【讨论】: