编者按:公开的内容就不需要加密?不,业界并不这么认为。其实,Chromium安全组很早就开始全面推进HTTPS ,目的是给这些公开的数据加密。国外网站大部分已经开始使用 HTTPS,包括Facebook、白宫,而国内除百度之外还未普及。本文作者@罗志宇,混迹Opera 十年的CTO,Opera是Chromium安全组成员,他将讲述安全链接 (https) 背后的故事。
HTTPS 是什么?
如果你其实连 HTTPS 是啥都不知道,你可以先看看这篇文章。
简单地讲, HTTPS 是加过密的 HTTP。 这样,由于网路上传输的数据是加密的,在浏览网页时,除了你自己可以看到你在看什么网页,第三方是无法得知你在干什么的。
保护私密数据其实是 HTTPS 过去十几年中起到的最大作用了。
比如你登入了你的邮箱,或者是你的网上银行,一旦使用 HTTPS,那么数据在网上就不再是明文,于是第三方就看不到你的密码和你的邮件。这个就是为什么 HTTPS 过去十几年,都是用在邮箱、金融等特别需要隐私的领域。
HTTP怎么了?
几年前, 一位挪威同事刚从谷歌开会回来,我在走廊上面遇到他,看他一副垂头丧气的样子,随便问了一句 “你和谷歌会开得怎么样啊”。
挪威同事叹了口气 :“谷歌的人尼玛都活在 5 年以后啊”。
那个时候我年幼无知,还不能了解这句话的真实含义,直到最近加入 Chromium 安全讨论组,才真正了解到这句话背后的气势。
基本上 Chromium 安全讨论组里面充斥着的都是这种话题:
我们要马上淘汰SHA-1! 因为 SHA-1 强度太低了。虽然预计再过几年就可能会被破解, 我们今天就淘汰它吧。
SSL 状态放到 HTTP cache 可能会受到攻击,需要马上改!
TLS DH group size 最少应该提高到1024 bit, 因为 INRIA, Microsoft Research, John’s Hopkin 大学已经证明低强度的 TLS DH group 不安全了。
人家证明的是 512 bit 不安全, 768 bit 估计可能会被大学级别的资源破解, 你上来就最低 1024 bit,还给不给活路了啊——
We carried out this computation against the most common 512-bit prime used for TLS and demonstrate that the Logjam attack can be used to downgrade connections to 80% of TLS servers supporting DHE_EXPORT. We further estimate that an academic team can break a 768-bit prime and that a nation-state can break a 1024-bit prime.
(我们按照这个计算方法可以破解使用 512 位质数加密的 TLS 链接。 同时也展示了 Logjam 攻击可以用来对 80% 的支持 DHE_EXPORT 的 TLS 服务器的链接进行降级。我们进一步估计一个学术团队,以其掌握的资源的知识,有可能破解一个 768 位的质数, 而一个国家的力量可能破解一个 1024 位的质数。)
好吧, 谷歌兄们都是想得很远的。
有一个每天“杞人忧天”的安全组其实也不是坏事,最近 Flash 爆出 0 day 漏洞的时候其实 Chromium 安全组两年前就警告过像 Flash 这种 NPAPI 插件是有安全问题的,说明安全组的同学们还是很有先见之明的,关于 NPAPI 插件问题之前我在雷锋网专栏文章里面提到过:谷歌浏览器禁止Flash?少年,你不是当真了吧?
神经质一样地活在未来的安全组最近发布了一个二季度总结:TOC-Q2-2015
今天就讲讲里面一个很有意思的东西:
安全组的同学说,我们认为(全面) 转向使用 HTTPS 是保证安全唯一途径。号召大家都转向 HTTPS:
We see migration to HTTPS as foundational to any security whatsoever, so we’re actively working to drive# MOARTLS across Google and the Internet at large.
这个说法其实一季度的时候就已经碎碎念了一次, 二季度报告里面,居然又放进去了。
实际上,如果你稍微留意一下,你会发现很多国外的网站已经开始这样做了。
比如在浏览器里面键入 www.google.com, 你会看到:
或者是 facebook.com:
就连白宫,也会是:
注意到那个绿色的 https 没,因为就算你没有写 https, 目标网站也会自动跳转到 https 上面去。
对比一下国内的网站,比如 qq.com, 并不会有这个行为:
我观察了下,国内强制使用 https 的看起来百度应该算是一个:
为了安全,转向HTTPS?
What!发生了什么?为什么大家突然纷纷摒弃 HTTP 全面投入 HTTPS 的怀抱呢?而且谷歌还在大力推行,建议每一个网站,都换为 HTTPS!
要知道,HTTP 已经存在快 20 年了。 而从 HTTP 迁移到 HTTPS 对大部分网站来说,是一个不小的决定:
HTTPS 对硬件的要求要比 HTTP 高, 这个意味着更大的开销, 而更大的开销也就意味着需要花费更多的资金购买服务器。其他架构上面带来的成本可能就跟不用说了。
一定是发生了什么?!
可是看个白宫网站应该不算是隐私吧,为何这个也需要 HTTPS 来传输呢?
原因其实是: HTTP 这个在天真无邪时期诞生的协议,这几年彻底被一帮黑客玩残了。
1、黑客们发现 HTTP 明文传输不仅会泄露数据,也会很容易被注入数据。
万维网在诞生的时候怎么也没有想到, 一个以查资料为目的的网络,最后会变成一个无所不能的平台。越来越多的商业行为从线下迁移到了线上。很多公司们开始在线上卖东西、卖内容、卖服务、打广告。
而一帮黑客们突然发现,有些东西虽然是明文在网上传输的,看着没有什么意思,但是我可以修改内容或者添加里面的内容啊。 这个有点像一个邮递员每天都在投递明信片,虽然明信片上的内容看起来并没有什么卵用。突然有一天,这个邮递员想,其实我还可以修改明信片的内容啊, 比如加上一句 “请立即向 XX 账户汇款 5000 元” 等等。
下面是个很典型的截图:
图中某运营商的套餐售卖其实完全不是原网页的内容,而是网页数据经过运营商服务器时被强行注入的数据。
这个情况,业内叫“流量劫持”。
作为白宫网站,他们肯定不希望网页中的奥巴马头像过了某个网络节点,被人换成本拉登吧。
那就 HTTPS 吧。
2、HTTP 不仅内容不加密,协议本身的(原语,头部数据)也是不加密的,于是协议指令本身也可能被修改
黑客:协议也不加密是吧, 就不要怪我来花式破解了。
事实上, HTTP 协议已经被黑客们各种匪夷所思的破解得不成样子了。比如传说中的 “Cache poisoning”
一系列的花式技巧让你的浏览器缓存永远不更新。什么!服务器那边股票价格已经跌停了?不过你看不到哦,因为,你的缓存没法更新......
3、如果上面的资料不够生猛,最后给你来个更生猛的:HTTP 传输的 Web 网页中对于系统设备的授权是统一的。
想象一下这样的场景: 用户去访问一个视频聊天的网站,网页需要访问你手机上面的摄像头,然后浏览器会询问用户是否同意授权,用户选择了同意。 但是万万没想到, 这个页面在通过某个网络节点的时候,被黑客注入了一段脚本 (因为是明文传输的,注入就是分分钟的事情)。那么这个时候,这个注入的脚本在浏览器看来,由于已经是原网页的一部分,自动就有了对摄像头的访问权限。
于是,你在和别人视频聊天的时候,刚刚注入的脚本就可以偷偷把你的英容笑貌上传到黑客的服务器里面。
后果当然取决于聊天的内容, 不过我目测一大波陈老师会浮出水面。。
同样的事情还可能发生在你的麦克风,当前的位置信息,甚至手机上的照片等等。比如,陈老师这样:
在各种尝试着修修补补以后,各大产业界大佬们终于醒悟,目前硬件的水平和价格,既然用 HTTPS 已经完全不是问题,那么全面转向 HTTPS 才是唯一的出路。
相信很快大家就看到越来越多的网站会使用 HTTPS。 同时,国内的站长们,如果你也有遇到上面的问题的话, HTTPS 可能是一个很好的选择。而作为一个用户,如果有的选择,尽量选支持 HTTPS 的网站。
这里可能有人就要问了, 如果都用 HTTPS, 那岂不是就没法做网络监视了,那我们的万里长城的敏感词部分岂不是.......(呃,这段当我没有写过)
PS:HTTP 的下一个版本 HTTP/2 已经可以自带加密,只是这个协议本身推广还需要一段时间,于是网页传输加密还是以 HTTPS 为主。