HTTPS无所不在:信息安全不止于银行

为什么HTTPS很重要?


HTTPS已经诞生有些年头了,但认知度还不是很高。很多人认为网站使用HTTPS协议替代HTTP只是为了在URL地址栏告诉用户我们很安全,请放心使用。所有人都知道那些电商巨头都会用HTTPS,一部分人知道将HTTPS用在登录注册和表单提交页面是不错的。但普罗大众的网站真的需要HTTPS吗?答案是:需要!哪怕是小网站和没有表单的网页也需要!慢慢会有更多人认识到这一点。


HTTPS帮助终端用户免于窃听和其它威胁。出于纯HTTP的安全性问题,Google正在努力推动网站的安全性提升,达到“HTTPS无所不在”的目标:


Google为使用HTTPS的网站计算额外的SEO评分,在搜索结果中优先选用HTTPS内容,压倒还在用HTTP的竞争对手。他们还部署了“两者相权取其安全”的策略。


在2017年1月,Chrome浏览器新增了一项功能,提醒用户当前正在使用纯HTTP的链接,警告其隐患。目前只会在那些提交密码和信用卡的页面上做提醒,随后会扩散到所有的HTTP网站。


HTTPS同样要求一些新的交互功能能名正言顺地申请用户的授权,比如说拍照、录音、启用离线APP或定位。因此网站的所有者和使用者们有无数条理由去注意这一点。 


不安全是怎么一回事?


作为实验,切实地观察HTTPS给用户带来怎样的安全,我访问了2个网站,1个用HTTP,1个用HTTPS。我们的高级系统工程师Ben Chavet,扮演一位窃听者。他甚至不在我旁边,而是从800英里外监听我用的VPN连接。他只花了大概几分钟就知道我在干嘛。例如我在一家使用共享网络的咖啡厅,或者我和网站之间的“中间人”我所做一切都可以在任何地方被任何人重现。


当我登录到纯HTTP网站时,窃听者可以看到我做的所有事情。一切都是明文本,包括我访问的完整地址,我的用户名和密码。他甚至得到了我的会话cookie,这东西允许他假扮成我。这是当时他能看到的信息文本截图。


1494849706294017.png

HTTP窃听


但当我登录到一个被HTTPS保护的网站时,窃听者只能看到我访问的网站名字和一些被安全证书加密过的乱码信息。一切都是加密的。


1494849788504751.png

HTTPS窃听


使用纯HTTP还有更多问题。窃听者可以窃取会话cookie,扮演真实访问者获取不该获取的信息。如果有人攻击一个纯HTTP的网页,他们可以更换页面的链接,将用户引到别的网站。攻击者还可以加密表单提交(不利用表单本身)将表单结果提交到一个完全不同的URL地址。有效的HTTPS页面可以很好的防御这些更改。


显然,HTTPS提供更高级别的安全优势!


HTTPS能做什么?


退一步想,HTTPS到底能带来什么呢?两样东西,一是保证数据的完整性和传输过程中的加密,二是提供系统性的保护,保证用户去他们该去的地址。


除了模糊化用户的行为和数据,HTTPS还代表网站本身经过了第三方认证的真实身份。


如果你正在访问一个HTTPS网站,一切都是安全的。在HTTPS连接中,你用的浏览器(比如IE,Safari,Chrome或者Firefox)和网站服务器会互相通信。浏览器会从服务器那里得到证书和密钥来加密、解密两者之间的数据传输。如果浏览器从服务器获得了这些信息,它就会在地址栏显示一个安全锁的图标。如果有任何风吹草动不对劲,浏览器会警告用户。HTTPS页面上的问题可能是信息丢失、不合规、过期的证书和密钥,或者“混合内容”。(HTTPS页面上绝不应使用HTTP类型的内容和资源。)


身份认证、数据完整性和加密都是非常重要的。一个伪造的网站可能加密传输,而合法正当的网站有可能不加密。一个真正安全的网站应当同时保证数据传输的加密和身份的认证。


用户怎么知道网站是安全的?


浏览器访问不安全的网站时会给出提示信息。具体的信息根据浏览器有所不同,但基于不安全的情况,都会包含类似“这个页面可能不安全”或者“该站点使用的是不可信的自签名证书”等等语句。多数浏览器都会显示一些带颜色的代码,帮助描述安全情况。


如果网站只用了HTTP协议,浏览器通常不会给出任何安全方面的提示,只显示一个不带安全锁的URL地址。没有任何信息,也没有任何安全的保障。正如前面提到的,不加密的HTTP数据传输本身就是潜在的威胁。


下面的图表列举了一些浏览器可能展示的安全状态(注意EV是一种特殊的HTTPS证书,为银行和金融机构提供额外的保障,后续我们会谈到)


1494849871388642.png

安全图标的比较


用户可以点击安全锁得到更多关于HTTPS安全性的信息。具体的信息根据浏览器会有所区别,总体而言,它们都有“更多详细内容”或“查看证书”等链接,让用户看到证书的详细信息。


1494849904102280.png

HTTPS锁细节


针对用户有多理解HTTPS安全状态和信息的研究表明,大多数用户都不清楚或者根本无视安全性警告。用户通常不关注网站的安全锁,或者根本没有安全锁,并且完全看不懂浏览器提供的技术类信息。而代表安全等级的颜色对于色盲人士来说也是一个问题。同时,太多的网站还在使用HTTP协议,导致用户漠视安全风险。这些研究要求人们开发更好的体系,清晰明确地的告知用户哪些网站安全,哪些不安全,并鼓励更多的网站部署安全传输协议。


不久前,Chrome开始帮助用户理解网站的安全性。这些例子采用颜色和形状的组合表达安全和不安全。近来,纯HTTP依然是更值得关注的威胁。


1494849946142759.png

当前Chrome的安全警告体系


从2017年1月开始,他们采用文字表达“安全”或“不安全”,强化力度。


1494849974270940.png

未来的Chrome安全警告


其它的浏览器也许会跟进,让纯HTTP的不安全性看起来更加明显。只要使用纯HTTP协议的网站在用户安全性、SEO排名和安全警告方面不得人心,任何一家网站都不会再使用。


这些术语是什么意思?

HTTPS术语有点难区分,有太多行话和缩写。若你阅读和HTTPS有关的资料,你会很快迷失在熟悉的术语海洋里面。这里是一些可以帮助你理解的定义:


安全套接层 SSL

SSL是原始的基于HTTP协议传输的加密标准,已经被TLS淘汰。但是这个术语还在使用,一般用来指代SSL或TLS。


安全传输层协议 TLS

TLS是SSL的一个变种,更新、更严格、更加协议标准化。TLS不仅用于网页浏览器和HTTP,还可以用于非HTTP的应用,比如提供安全的邮件发送服务。TLS是进行加密的层。


HTTPS

HTTPS只是一个协议,是包含TLS提供的额外安全层的HTTP。


数字证书认证机构 CA

CA是一个提供并验证HTTPS证书的机构。“自签名”的证书没有任何认证机构的背书。证书必须由知名的第三方机构签署。


证书信任链

网站使用的可能是1个证书,也可能是多个中间证书建立起的一个链。这个链会带你从当前的证书回溯到信任的CA。


域认证 DV

DV证书代表当前应用对应到专门的DNS域名。DV证书不保证连接到该证书的任何实体的身份,甚至域名本身指向的机构。因为管理者没有经过验证,它的名称不会和安全锁绑定在一起。DV证书可能不贵,甚至免费。这是一种很低等级的认证,但是可以保证用户访问的不是模仿出来的影子站点。


扩展验证 EV

扩展验证证书可以证明域名所有者的身份,以及他们对域名的所有权。所有者的名字会用绿色文字显示在浏览器的安全锁旁边。EV证书比DV证书要贵的多,因为它要求CA机构执行更多的验证操作。EV提供更高级别的信任,对金融和商业站点更加合适。


下一步

现在已经很清楚,HTTPS是非常重要的。在我后面的文章中“HTTPS无所不在:转变”,我会讨论如何将网站从HTTP改造成HTTPS。


更多资料


HTTPS如何工作

https://developers.google.com/web/fundamentals/security/encrypt-in-tran…


HTTPS如何影响SEO排名

https://security.googleblog.com/2015/12/indexing-https-pages-by-default…

https://fourdots.com/blog/why-you-need-ssl-to-rank-better-in-2016-and-h…

https://fourdots.com/blog/redefining-google-search-2015-1707


浏览器与网站安全

https://www.usenix.org/system/files/conference/soups2016/soups2016-pape…

http://cs.jhu.edu/~sdoshi/jhuisi650/papers/spimacs/SPIMACS_CD/ccsw/p19…

https://nakedsecurity.sophos.com/2016/09/09/google-to-slap-warnings-on-…

https://groups.google.com/a/chromium.org/forum/#!topic/security-dev/aAt…

https://www.chromium.org/Home/chromium-security/marking-http-as-non-sec…

https://security.googleblog.com/2016/09/moving-towards-more-secure-web…


密码是如何在不安全的连接中失窃的

http://security.stackexchange.com/questions/55433/how-is-password-stole…


证书种类

https://en.wikipedia.org/wiki/Extended_Validation_Certificate

https://en.wikipedia.org/wiki/Domain-validated_certificate

https://en.wikipedia.org/wiki/Chain_of_trust