客户端如何知道 DNS 区域受 DNSSEC 保护?

信息安全 中间人 dns dns 欺骗 dnssec
2021-08-23 05:13:40

最近,我一直在阅读有关 DNSSEC 及其工作原理的文章。我在这个网站和其他与此事相关的网站上发现了其他问题和一些非常有趣的答案。

但是,我有一个在任何地方都找不到答案的问题:客户端如何知道应该对 DNS 区域进行签名?如果machineA从未解析过名称example.com,DNSSEC 如何防止攻击者拦截 DNS 查询离开machineA并使用格式良好的 DNS 回复来回复该查询,该回复包含恶意 IP 地址,但似乎来自解析器?

换句话说,我无法理解 DNSSEC 如何防止中间人攻击。如果主机以前从未解析过名称,它怎么知道回复应该是签名的?

我了解 DNSSEC 如何防止缓存中毒,以及如何确保消息的完整性,但如果有人只是坐在用户计算机和解析器之间以剥离 dnssec 信息,这一切似乎都崩溃了。

2个回答

DNSSec 不能防止 MITM 攻击。以下答案中也提到了这一点,并进一步解释了 DNSSec 的工作原理及其一些限制。

本文中,作者在第六节讨论了绕过 DNSSec 的方法,包括“中间入侵者”攻击。

DNSSEC 需要加密证明区域不受保护,以便接受未签名的结果。这采用签名NSECNSEC3父区域中的记录的形式,表明没有DS委托记录。

如果作为客户端,您实际上并没有验证签名链,而只是信任您的名称服务器,那么仍然存在 MITM 攻击的可能性。安全使用 DNSSEC 需要通过受信任的流程在您的本地端点上进行验证。现代共识是,这不属于单个应用程序进程,而是属于在 localhost 或类似设备上运行的受信任的缓存和验证名称服务器。