重新访问了SSL¶
四年前,我写了一篇关于为什么Varnish没有SSL支持的文章 (为什么没有安全套接字层? ),即将发布的4.1版本是重新讨论该问题的好借口。
一个SSL/TLS库¶
2011年,我批评OpenSSL的源代码是一场噩梦,尽管我讨厌说我早告诉过你,但我告诉过你:另见“心脏出血”。
好消息是,《心脏出血》让人们意识到,FOSS的维护者也有抵押贷款和饥饿的孩子。
为了防止关键基础设施软件在周日晚上11点到12点之间由一位睡眠不足、工作过度的父母维护,他们担心下个月是否有能力支付账单,已经启动了各种举措。
我们还没有做到这一点,但情况肯定会变得更好。
然而,实施TLS和SSL仍然非常复杂,多亏了爱德华·斯诺登的揭发,我们有很好的理由相信这不是偶然发生的。
寻找一个好的TLS/SSL实现的问题仍然是一样的,我仍然没有看到一个我希望与我的名字联系在一起的实现。
OpenBSD的LibreSSL当然是朝着正确方向迈出的一步,但时间会证明它是否长期可行--它们确实有被分散注意力的倾向--“松鼠!!”。
经办证书¶
我仍然看不到有什么办法可以做到这一点。Varnish工作进程不是为了在密码级别划分比特而构建的,要做到这一点将不是一项微不足道的任务。
但这里出现了新的漏洞。一天晚上,在奥斯陆机场等我的飞机回家时,我仔细检查了整个TLS/SSL握手过程,看看是否有什么可以做的,我意识到你实际上可以在不持有证书的情况下终止TLS/SSL,只要你可以请求一些做一些工作的过程。
第二天早上 CloudFlare announced the very same thing :
可以想象,这是一种在Varnish-Worker进程中终止TLS/SSL,同时使最有价值的加密位远离它的方法。
但这仍然是个坏主意¶
就在我写这篇文章的时候,有消息说 apps with 350 million downloads 总体而言,他们(仍然)容易受到一些正在传播的SSL/TLS中间人攻击。
密码是难的,密码是双加硬的,如果不是双平方硬的话,世界真的不需要另一种在密码学方面做得不成功的代码。
如果我或其他人用Varnish实现SSL/TLS,它会花至少半年的时间将代码带到我愿意向世界展示它的程度。
在我的时光机工作之前,这半年的时间将被从其他Varnish开发中拿走,所以结果最好是值得的:如果不是这样,我们只是增加了总的攻击面和错误概率,原因就是“我也是!”。
当我看到像威利·塔罗这样的东西 HAProxy 我很难看到任何重大的改善机会。
结论¶
不,Varnish仍然不会添加对SSL/TLS的支持。
相反,在Varnish 4.1中,我们添加了对Willys的支持 PROXY 一种协议,使其能够从SSL终止代理传递额外的详细信息,例如 HAProxy ,致瓦尼什。
从安全的角度来看,这也是比在Varnish中集成SSL/TLS好得多的解决方案。
何时(而不是如果!)您选择的SSL/TLS代理已被可能植入的软件错误破坏,您可以选择另一个来替换它,而不会失去Varnish的所有好处。
这个想法被称为“软件工具原则”,这是一个非常古老的想法,但它仍然是我们拥有的最好的想法之一。
政治后记¶
我意识到,在当前“SSLEverywhere”的政治气候下,采取上述立场是相当奇怪的。
出于许多原因,我对“SSL Everywhere”的想法并不是很感兴趣。
最明显的例子是,如果你的网站被试图在自然灾害中幸存下来的人淹没,你不会想要让你国家的民防机构陷入SSL/TLS协议谈判的泥潭。
下一个大问题是,有些人没有隐私权。在许多国家,这包括儿童、囚犯、股票交易员、飞行管制员、急救人员等。
SSL Everywhere将迫使机构要么阻止任何互联网连接,要么强制中间人代理遵守伐木和检查的法律要求。在我看来,这是朝着错误方向迈出的明显一步。
但我在任何地方使用SSL的最大问题之一是,它给了我认为最不配得到隐私的演员隐私。
经营tcpump的安全研究人员(或者只是感兴趣的外行)一次又一次地揭露了大型跨国公司的可疑行为,因此也就是没有法律的公司。Snort或类似的流量捕获程序,并查看发生了什么。
还记得所有那些用来跟踪网络用户、违背用户意愿和违反法律法规的不同类型的“魔力饼干”吗?
几乎所有这些都暴露了微不足道的数据包痕迹。
有了SSLEverywhere,这些参与者获得了更多隐私来侵犯每个有互联网连接的人的隐私,因为调查SSL连接需要比明文HTTP连接多得多的技能。
“据说阳光是最好的消毒剂,”最高法院法官布兰代斯写道,SSLEverywhere让所有的流量都黯然失色。
保尔-亨宁,2015-04-28