LWN:OpenPGP certificate flooding攻击

640点击上方蓝色字关注我们~



OpenPGP certificate flooding

By Jake Edge
July 2, 2019


本文在LWN原文基础上有节选。


OpenPGP通过key server对公共秘钥证书进行处理的方式看起来导致了一些问题。不光是对那些证书(和秘钥)拥有者有影响,其他人如果自己的keyring里也拥有这些秘钥并且定期进行更新的话也会受影响。基本上这就是一类denail of service(拒绝服务,DoS)攻击,不过跟其他常见的DoS攻击的传播方式很不一样。这个“certificate flooding”的机制,其实本来是用来对key的拥有者进行认证的,不过因为大多数key server的工作方式问题,就有可能会在一个证书里塞满垃圾信息(spam)。


这个问题多年以前就已经有人考虑到了,不过直到今年6月下旬,OpenPGP社区的两位活跃开发者Daniel Kahn Gillmor (dkg)和Robert J. Hansen (rjh)真正发现这种攻击,并且详细阐述了出来。Gillmor先在他的博客上报告了一例攻击事件,有人在他SKS key server上的公钥里加了多个伪造的证书,总共增加了55000个证书,导致他的key变成了17MB。Hansen的key更是被塞入了150000个证书,已经达到了OpenPGP协议能支持的最大数量。


这些证书本来是用于支持“web of trust”的,如果用户Alice认为用户Bob的某个key是可靠的(比如他们坐在一起检查过这个key),那么Alice就可以在Bob的key上增加一个证书来佐证这一点。假如其他信任Alice的人也收到Bob的key的话,他们就可以相信这是Bob的没错,因为Alice用自己的证书来作证了。这是web of trust的根基,尽管可能目前只有那些高新技术社群才用这种方式比较多。这里其实任何人都可以添加证书,不管他认不认识key的拥有者。


Gillmor和Hansen的key都是存在SKS key-server网络里,由GNU Privacy Guard (GnuPG或GPG)管理。GnuPG是OpenPGP规范的最常用的一个实现版本。他们俩的key由于过大,都没法导入新的keybox格式().kbx里了,如果继续保持用旧的格式(.gpg)的话,会导致performance问题。例如Enigmail Thunderbird插件里会很卡,而用Git对tag进行PGP签名的时候可能都要花好几分钟时间,还有Monkeysphere的认证会占用大量的CPU时间。Gillmor列举了很多种问题,都会导致他各种不便。不过还不仅如此,任何人只要在自己的keyring上有Gillmor的key,,都会碰到问题(前提是他们定期从SKS server获取最新的key的话)。假如他们用旧格式来获取Gillmor或者Hansen的key,那他们会碰到各种奇怪问题。如果是用新的格式的话,那么就没法成功更新这些key,导致其他问题。


Hansen的分析表明,这个问题的根源可以追溯到1990年代早期的一个决策,关于key server的工作方式的。当时担心key server提供商受government压力来把key替换掉,从而导致信任问题。当时想出的对应策略就是不允许key-server删除任何信息,这样证书就会永久保存着。多个key server分散在世界各地,相应的信息会定期同步。加入某个key server删掉或者修改了一个certificate,很快就能被发现,然后被回退到正确的版本。

在当时,这个决策是挺正确的,不过随着时间推移,问题也就显现出来了。SKS software其实没有得到很好的问题,一方面是因为OCaml语言的缘故,另一方面是因为它起初只不过是Ph.D论文的一个展示程序。

Hansen也发现上述的证书不灭的原则深入SKS的各个部分的实现里。修改的话会需要很多工作。因此建议担心风险的用户就不要再用SKS key server network了。他和Gillmor都指出新近的keys.openpgp.org key server可以避免这个certificate flooding攻击。在keys.openpgp.org的FAQ里面明确解释了它不会分发上述这种对别人的key进行的签名。主要原因就是防止“spam”,不光是避免撑大key,还有可能会用来附加攻击性的或者非法信息。


keys.openpgp.org服务器也把certificate的认证信息和非认证信息给分离开了。它不会轻易分发身份认证信息(例如用户的名字和email地址),除非拥有者对这个邮件地址进行了验证。而非认证信息则可以自由获取、分发,但是没有认证保证。GnuPG和其他的OpenPGP软件都能从server定期更新他们已经拥有的key的信息,哪怕拥有者并没有同意分发身份认证信息。


keys.openpgp.org网站上的一则文章页介绍了为什么要创建这个新server,其中也指出了SKS key server会有一些滥用、性能问题、隐私问题(不遵循GDPR规范)等。此外SKS也没有再继续进行维护了。所以keys.openpgp.org基于一个全新的key server(Hagrid)实现,采用了Rust语言,利用了Sequoia OpenPGP library。今后计划增加更多server,不过因为隐私和可靠性方面的一些担心,今后不会采用SKS这种自由联邦模式来工作。


Gillmor的文章也指出了其他一些处理方法,包括他4月份时提出的一个"Abuse-Resistant OpenPGP Keystores"方案。后来Hans的文章讲得更直白,介绍了攻击的各种后果。尤其是他很生气的是他给一些活动家把他的电子签名也加入文档的建议,可能会导致他们的GnuPG没法正常工作了。

显然他们两位都很烦恼。OpenPGP本身已经给人们增加了不少麻烦。Gillmor知道很多人在过去24小时碰到各种由此引发的问题,他很抱歉让那些朋友浪费了很多时间,甚至担心数据有损失。


Gillmor指出Tor项目的key也被附加了很多垃圾信息。后面肯定会有更多的key受此问题影响,如果有一些非法内容被附加上去的话,甚至完全没有办法去除掉。很可能SKS network会无法生存下去了。


Daniel Lange有一些建议,能把这种垃圾信息去除掉。不过会耗费大量CPU时间(以Hansen的key为例,他需要1小时45分钟才能清理干净)。但是大家都不愿意看到GnuPG花时间在这个清理工作上。


很明显需要在GnuPG里fix这个bug。Gillmor已经在相关的项目里都报了bug。不过SKS的这个问题其实应该已经存在很长时间了,只不过知道这个问题的人都没有时间能fix它。就像OpenSSL的heartbleed漏洞一样,大家不知道还有多少安全软件存在这种漏洞,等到某一天会引爆。


全文完

LWN文章遵循CC BY-SA 4.0许可协议。

极度欢迎将文章分享到朋友圈 
热烈欢迎转载以及基于现有协议上的修改再创作~


长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~


640?wx_fmt=jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值