为什么 RFC4255 (SSHFP) 不用于 https?

信息安全 tls SSH dns dnssec
2021-08-28 07:27:56

几个小时前我就有了这个想法,但它当然已经存在,甚至还有一个 RFC ……
我们为什么不通过 DNS 发布 SSL/TLS 证书的指纹?我们需要 DNSSEC 来确保答案是合法的,并且我们需要确保名称服务器处于安全环境中,但除此之外,我没有发现 SSL/TLS 不存在的问题。

此更改会将保护我们所有加密流量的权限从证书颁发机构 (CA) 转移到 DNS 名称服务器。这可能是一个问题,因为在这种情况下,所有 DNS 提供商(拥有 DNSSEC)都应该像现在的 CA 一样成为非常高安全性的环境。但是不应该所有的名称服务器都已经是这样了吗?大多数网站使用纯 http 来处理敏感流量,大多数人在登录 Google 时不会注意到如果没有挂锁。我会说他们已经承担了巨大的责任。

如果我们不信任域的名称服务器,我们可以在根服务器中包含指纹,但我不确定这会增加多少额外负载。

另一个问题是 DNSSEC 尚未得到广泛实施。但我问的原因是因为 IETF 正在考虑支持 http/2.0 中的加密,而不需要证书验证“以使其更易于部署”。

在我看来,安全性要么正确完成,要么根本不正确完成。不要给人一种虚假的安全感。但是,如果我们无论如何都要更改协议(升级所有网络服务器),我们不妨实施 DNSSEC 并以正确的(经过身份验证的)方式执行此操作。

简而言之的问题/变化:

  • 我们需要信任(根?)名称服务器而不是大量的 CA;
  • 我们需要添加一个dns记录类型或者扩展sshfp记录的使用;
  • 我们需要更广泛地支持 dnssec。

我错过了什么吗?当我们需要做的就是通过一些经过身份验证的通道发布证书的指纹时,为什么我们要为 SSL/TLS 证书支付高昂的费用?

http 2.0 中未经身份验证的加密的目的是鼓励启用它,而无需修改任何其他配置。我反对这一点,因为它不必要地慢(密钥交换的另一个往返,这在海外尤其糟糕或有任何数据包丢失)并且几乎没有增加任何安全性。它甚至可能提供一种虚假的安全感。从好的方面来说,它混淆了流量。

这个使用 DNS 的提议使得在网络服务器上实现加密的工作量更大,但使其(至少几乎)与普通 SSL/TLS 一样安全,同时仍然保持加密的广泛可用性非常高(我不希望他们会保持像使用证书一样,启用 sshfp/httpfp/tlsfp 的名称服务器的价格高得离谱)。当所有其他选项(签名证书;存储的证书;安全发布的指纹)都不可用时,未经身份验证的加密可能仍然是最后的手段(尽管它不应该向用户显示,因为它提供了一种完全错误的安全感),但我不确定是否值得放慢速度。

如果无法为此使用根服务器,我们还可以将域的名称服务器用作“相当安全的环境”(普通挂锁)并为 EV 使用 CA 签名证书(绿色条)。然后告诉人们在进行网上银行业务时寻找绿条。名称服务器已经承担了相当大的责任,因此即使我们不能期望它们像 CA 一样安全,它也可能足够安全。至少它会是一个更加灵活的系统;对于任何价格合理的证书,我仅限于我的域和一个子域(并且该子域已被“www.”占用)。

再次简短地提出我的问题:如果DNSSEC 广泛可用,我们是否有任何理由不为 https 使用类似 SSHFP 的系统?

3个回答

有一个RFC这是 DNSSEC 要做的事情的一部分。

现在不要对“最高美元”或减少它抱有太大希望。切换到 DNSSEC 并不会神奇地消除以某种方式“证明”与服务器名称有关的公钥的需要。“CA”角色刚刚移动,相关成本仍然存在。可以预见,如果注册商必须承担这些成本,那么他们的价格将会上涨。迟早会有人为此付出代价,我强烈怀疑这将是 SSL 服务器的所有者。

从哲学上讲,目前还不清楚合并证书结构(PKI)和命名结构(DNS)是否是一个好主意。在处理颁发绑定到主机名的证书的特定情况时,合并肯定会简化 DNS 和 PKI 之间的通信;但这也意味着两种责任交织在一起。相信一个好的注册商也就是一个好的 CA 需要大量的一厢情愿。这两种活动隐约相似,但并不完全相同。

此外,证书的范围应该超出 HTTPS 服务器;它们应该可以在与 DNS 和主机名没有任何关系的上下文中使用,例如在签署软件(应用程序、驱动程序...)时。

在经济上,它不会有太大变化。在商业 CA 中,使用最多的是 VeriSign,即 Symantec。切换到 DNSSEC 意味着最终的证书颁发机构将不再是 VeriSign,而是管理大部分根 DNS 的人,即 VeriSign。现在这将改变,不是吗?

在政治上,“国家 CA”会有问题。Windows系统默认信任的数十个CA中的许多是由各国政府赞助甚至运营的“虚荣CA”。同样的政府无意运营需要更多带宽和可用性的与 DNS 相关的基础设施;他们会讨厌看到他们的珍贵证书成为“二等公民”。

对于安全性,这主要不是问题。假证书事件非常罕见;我们听说每年都会发生一次这样的事件。大部分与 Internet 相关的欺诈、网络钓鱼和其他攻击并不依赖于欺骗现有的 CA。换句话说,当前的 CA 系统是有效的。不要修复没有损坏的东西。是的,CA 系统看起来很脆弱并且容易出现故障,但是尽管关于偶尔的违规行为有很多宣传,但原始的事实是它仍然存在。


总结:标准准备好了,RFC 发布了,软件写好了。现在缺少的只是从“商业 CA X.509”世界切换到“商业注册商 DNSSEC”世界的理由。很难看出它实际上有什么好处。

CERT RR 已被弃用。当前将公钥材料放入 DNS 的提议称为 DANE。他们定义了一个 TLSA 记录类型,它是RFC 6698中的文档。这让域管理员可以断言特定证书或特定服务的 CA。

它确实存在 - 它被称为 DANE - https://www.rfc-editor.org/rfc/rfc6698(CERT RFC 没有看到任何牵引力,我不知道为什么)。

要生成记录,您可以使用:

https://github.com/pieterlexis/swede

这个 Firefox 插件可以验证它们:

https://os3sec.org/

不幸的是,它并不完整。

证书巡逻队有一个更新的插件:

https://labs.nic.cz/page/1207/dane-patrol/

但它似乎也不起作用:(

似乎没有对其他浏览器的任何其他支持,chrome 已编写支持但未发布,请参阅此博客文章(如果 TLSA 对您很重要,也许给 Adam 发电子邮件?):

https://www.imperialviolet.org/2012/10/20/dane-stapled-certificates.html

请注意,TLSA 不仅允许您验证证书,它还允许站点所有者断言在其站点上使用的证书将仅由特定 CA 签名,这在某种程度上解决了流氓/黑客 CA 问题休息。

请记住,任何 CA(或 CA 的附属机构,或 CA 的子公司等)都可以为任何域签署证书。为了使 CA 生态系统安全,每个CA 都必须是安全的!