@hanting003
2018-03-19T11:30:27.000000Z
字数 2997
阅读 808
网络服务迅速发展的今天,安全工作显得愈加重要。然而,安全工作面临的种种难点,使得其往往被排在其他各种工作之后,安全生态建设也因此步履维艰。百度作为一家请求量巨大的搜索公司,在国内率先完成了HTTPS改造,并为改善整个安全生态做出了很多工作。经过百度不懈的努力,2017年底,百度搜索点击分发中 HTTPS 的移动分发率提升到36%,PC分发率提升到32%,终于在 Open Web 中默默撑起了一片安全天空。
什么是 HTTP?其英文全称是 HyperText Transfer Protocol,即超文本传输协议,其诞生时间可以追溯到1960年。对于普通人来说,这就像是约定了一种收发快递的协议,只不过这种协议在互联网上邮递的是数据。
在现实世界中,快递在传输过程中可能会出现被偷、被替换的情况;这种情况在互联网世界中同样存在,被称作“网络劫持”。网络劫持会给用户和网站双方都带来非常严重的影响:
对用户来说,在电脑系统或者手机安全软件扫描没有任何异常的情况下,打开正常网页会莫名其妙弹出广告或者跳转到其他网站。除了明显的感知,用户的隐私数据也可能在上网过程中被悄无声息地泄露出去。而对于网站来说,遭遇网络劫持会造成被挂马或被加入第三方广告的情况,给正常业务和企业形象造成严重影响。
网络劫持所造成的数据泄露、流量劫持、钓鱼攻击等安全事件,最重要的原因是由于HTTP协议的明文传输缺陷。明文传输,相当于各种数据在网络中明文“裸奔”。
明文传输方式导致所有的通信数据包括家庭住址、手机号、姓名等隐私信息无法加密传输,只要在路由器、服务商、CDN等传输链路的任一环节加入嗅探器,按照HTTP协议进行数据解析,各种信息就能完全暴露。更有黑客对网络传输的信息进行篡改,把一些非预期甚至非法数据传输给用户或网络服务提供者,危害严重。
如何给裸奔的数据加密传输呢?HTTPS应运而生。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer 超文本传输安全协议),简单讲就是HTTP的安全版。
HTTPS以SSL/TLS协议为安全基础,在传输过程中,服务端和客户端传输的信息都会通过TLS进行加密,因此传输链路更加安全、可信。下图非常形象的表明了HTTP和HTTPS的关系:
HTTPS 的访问过程大致如下图所示(图片来源:https://kaazing.com):
客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器;服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数;客户端对服务器的证书进行验证(有关验证证书,可以参考数字签名),并抽取服务器的公用密钥。然后再产生一个随机密码串,并使用服务器的公用密钥对其进行加密,并将加密后的信息发送给服务器;服务器通过私钥解开这个加密的数据,得到这个随机密码串;客户端和服务器的通信通过随机值来进行加密解密,一个非常安全的链接就在客户端和服务器建立起来。
基于上述原理,HTTPS 协议提供了三个强大的功能来对抗网络中的劫持行为:
作为国内流量最大的站点之一,百度经常受到劫持、篡改等安全风险的威胁,尤其是在2014年,百度搜索收到越来越多有关网络劫持、钓鱼网站的投诉和反馈,这些现象严重地影响了用户的正常使用。百度对此高度重视,在国内率先成立了HTTPS Support 团队,开启了全站HTTPS改造之路。
但在HTTPS全站改造之初,百度面临着多种困难:
国内并没有大型站点使用全站HTTPS技术。银行等金融类站点加载过程缓慢,往往几千万上下的交易,需要等待数秒,甚至不能正常打开。
HTTPS很可能带来计算性能的大幅恶化。百度经过验证以及和国外HTTPS站点的交流,证实了CPU单核从几千下降到几百cps的性能变化,很可能造成6~8倍的计算开销。
百度搜索并不是一个部门提供的服务。大部分百度的产品几乎都在百度搜索中有对应的资源加载,但当时并没有统一的前端接入。在外部,业界的CDN也几乎都不支持HTTPS。
面对这些困难,百度开发者们发扬有条件要上,没有条件创造条件也要上的精神,在技术原理上一一突破:
在访问性能方面:从复用和预测的角度去思考,对协议、网络库、业务逻辑进行改造。不管是TCP还是TLS,能完整复用的进行完整复用,能部分复用的进行部分复用,提前进行计算,减少连接和域名。
在计算性能方面:虽然复用能够降低计算开销,但是抵御风险的能力还远远不够,百度调研了更节省资源的算法,将软件的计算挪到硬件,集中阻塞的计算改为分布式和旁路。
在业务改造方面:采取分阶段改造的方案,优先完成了被劫持最严重百度搜索业务CDN资源的统一接入,并且逐渐推进各个业务迁移到统一接口,百度从此拥有了强大的统一接入系统,这为百度稳定性、安全性提升和性能优化打下了基础。
当然还有很多技术细节需要分析和解决,比如refer如何传递,怎么样防范CA的风险,连通性怎么提升,如何针对不同的业务配置不同的安全等级等等。
除了对自身安全工作的重视,百度搜索也在积极推广建立 HTTPS 生态。
在教育方面,百度搜索输出了大量的学习资料,建立HTTPS改造的社群,在线下多个城市举办多场活动进行HTTPS的推广和改造方法的普及,并且联合30余家科技媒体、站长类媒体、自媒体,共同呼吁整个互联网行业提高对于信息传输安全的重视。
在2017年,百度搜索又从抓取、建库、检索、展现、移动适配等核心搜索环节,进行了全面的改造,从而支持了HTTPS资源的收录和检索展现。当用户在百度搜索到HTTPS的资源进行点击时,从百度到源网页,全是HTTPS加密的,保证到端都不会被劫持。
除了百度对搜索进行全站HTTPS改版外,百度搜索还在百度站长平台上开发了整站 HTTPS 认证的通道,与 Spider 抓取,搜索检索打通,整站可以在1小时就全面切换到HTTPS(相关网页链接:https://ziyuan.baidu.com/https/index)。
多维度、多手段推广建立 HTTPS 生态的工作,带来了令人欣慰的结果,国内站点越来越意识到安全性的重要,越来越多的站点参与HTTPS改造,比如汽车之家,猎聘,等等。事实证明,百度搜索点击分发中HTTPS资源的占比,移动分发率提升到36%,PC分发率提升到32%。
在安全方面,百度将继续大力推动国内互联网的Web生态向HTTPS过渡,技术上,HTTPS的安全性信号将引入rank 排序的基础特征,在同等排序的情况下,对HTTPS资源进行一定的优待,而与此同时,HTTP资源就被相对降权了。
除此以外,在用户体验方面,