Bil*_*ray 6 domain-name-system dnssec
有人可以告知,请就两种方法的差异和优点/缺点给出冗长的答复吗?
我不是 DNS 专家,也不是程序员。我对 DNS 有一个不错的基本了解,并且有足够的知识来了解诸如 kaminsky 错误之类的事情是如何工作的。据我了解,DNSCurve 具有更强的加密功能,设置更简单,并且是一个更好的解决方案。
DNSSEC 是不必要的复杂,并使用了可破解的加密,但它提供了端到端的安全性,而 DNSCurve 则没有。然而,我读过的许多文章似乎都表明端到端安全性没有多大用处或没有区别。
那么哪个是真的?哪个是更好的解决方案,或者每个的缺点/优点是什么?
编辑:
当目标是身份验证而不是机密性时,如果有人可以解释通过加密消息内容可以获得什么,我将不胜感激。
密钥是 1024 位 RSA 密钥的证明在这里。
Aln*_*tak 14
DNSCurve 为 DNS 数据包提供了实际的加密,尽管只是在逐跳的基础上,特别是在递归服务器和权威服务器之间的跃点上。
在该路径上使用时,它可以提供区域数据的身份验证。然而,任何更下游的客户端都无法从这种身份验证中受益,因为安全性只是“逐跳”。位于解析路径中间的恶意解析器仍然可以提供虚假数据。
另一方面,DNSSEC 提供端到端的可验证加密签名,证明收到的数据与权威服务器上的数据相同。DNSSEC 使用加密技术,但实际上并不加密任何 DNS 流量。
DNSCurve 使用椭圆曲线加密算法允许使用比 RSA 小得多的密钥来实现相同级别的加密强度。然而,有提议将类似的算法包含在 DNSSEC 假设的列表中。
DNSSEC 由 IETF(RFC 4034 和 RFC 4035,由 RFC 5155 更新)标准化,并在几个非常流行的名称服务器实现中实现,包括 BIND(当然)和 NSD/Unbound。PowerDNS 很快就会支持 DNSSEC。
诚然,DNSSEC 很复杂,但正在努力简化这一点(参见例如http://opendnssec.org/)并且部署一直在增加。各种 TLD(.se、.br、.org、.gov 等)已与 DNSSEC 签署,并且已宣布根区将在年底前由 DNSSEC 签署。
DNSCurve 非常有趣,但由于它的开发方式是独立的,因此很少有机会看到任何重要的部署。恕我直言,它被部署在根服务器上的可能性为零。
顺便说一句,您关于使用“可破解加密”的 DNSSEC 的断言似乎完全没有根据。你说的依据是什么?
区域签名密钥通常(但不一定)为 1024 位长。这些密钥通常每个月左右滚动一次,目前最好的估计是暴力破解1024 位密钥至少需要几年时间。
此时,对 1024 位 RSA 的蛮力攻击需要大约两年时间在数百万个计算核心上进行,每个处理器或主板具有数十 GB 的内存
这不是典型的僵尸网络。来自同一篇论文:
接下来考虑专用硬件,最乐观的方法是筛选一个 1024 位 RSA 模数可以在一年内完成大约 10,000,000 美元,加上大约 20,000,000 美元的一次性开发成本,并且时间和成本相当为矩阵。在我们看来,这种设计遇到的(普遍)怀疑是无关紧要的。这样的数字不应被解释为上限,即“小心,1024 位 RSA 可以在两年内以大约 2000 万美元的价格被破解(假设免费开发)”,而应被解释为下限,即“没有理由过分担心:即使在非常有利的攻击条件下,分解 1024 位 RSA 模数仍然需要大量资源。” 因此,这些估计不应被视为具有威胁性,而应被视为鼓舞人心的。
或者来自一年前的PCPro 文章:
从这个角度来看,破解 RSA 1,024 位密钥卡巴斯基估计需要大约 1500 万台计算机运行一年才能成功
坦率地说,没有人会花那么多精力来破解一个域的 ZSK!
此外,真正的安全性在于密钥签名密钥,这些密钥通常至少为 2048 位,通常更长(4096 位)。破解 RSA 密钥所需的时间与密钥长度呈指数增长,而非线性增长。
Bil*_*ray -9
我得出的结论是,DNSCurve 是更好的选择。
因为:
DNSSEC 使用 1024 位 RSA 密钥进行签名,大型网络、僵尸网络在 2003 年就认为该密钥牢不可破。这个案例今天依然成立。
为了正确实现,必须重写许多代码。
根服务器不会签署完整的数据库,不提供全面的保护。
域过期后 30 天内都可能发生重放攻击。
为了实现安全性,有必要公开所有域名。
DNSCurve 不存在这些问题,并且允许以 DNSSEC 所不具备的方式进行身份验证、可用性和机密性(如不必公开名称)。此外,它不需要修改代码,只需要额外的软件。
它还具有针对伪造数据包的保护(DNSSEC 没有),以及由于使用随机数而针对重放攻击的保护。DNSCurve 可能会受到 MITM 攻击,而 DNSSec 则不会,但我的理解是,如果 DNSCurve 一直实现到根,情况就不会是这样。