摘要:近年来互联网上的安全事故频发,因此行业内开始了新的一轮对互联网安全的大讨论。其中已经有20多年历史的Http协议备受争议,由于其采用明文传输,让黑客有了可乘之机。但是其"安全版本"Https处理效率慢导致的访问延时则成为阻碍其推广的一大瓶颈。近期,浪潮推出了针对Https的SSL加解密加速解决方案,使Https加解密效率提升十倍以上,保障访问安全的同时,不会影响网站访问的效率,为打造更安全的网络环境奠定基础。
有天,小A接到用户的反馈,说是在其官网下载的游戏是另家公司的产品。当时小A还很天真的以为是网站的运营挂错了链接,怒气冲冲的与运营理论了一番,却发现链接没有问题,后来以为是用户自己下载错了,这件事也就过去了。但是,过了一段时间,公司内部人员在下载时发现了同样的事情!于是,内部开展深入调查,发现大概有20%左右的正常链接会被重定向到另一个链接。技术分析原因,应该是黑客在数据出口截取下载地址,并进行了替换。于是,公司采用了Https,以后就再未复现过此问题。
其实,这仅仅是危险的互联网中一个小小的事件,钓鱼网站、DNS劫持、DNS污染、网站篡改等等都无时无刻不在发生。为何看似平静的互联网会有如此多的风波?起因,是当时技术能力的限制,以及对人心的信任。由于Http只是基于TCP协议的字符串明文传输,在不可信任的网络中,这和裸奔没有任何区别,黑客用抓包软件可以轻易的看到网络上谁在访问哪个链接,这些琐碎的信息则会暴露用户的隐私。
为了提升数据传输的安全性问题, Https应运而生。Https在HTTP下加入SSL层(安全套接层)/TLS(TLS是SSL的升级协议),HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行数次握手,在握手过程中将确立双方加密传输数据的密码信息,这样,Https就能保障数据在传输过程中不被非法篡改和利用。
但是我们却看到了一个不幸的现状,为什么我们现在看到的大部分网站仍是Http开头?原因很多,比如会牵涉到将已有的网站改动、认证证书需要费用等。但是阻碍大部分网站采用Https协议的主要原因在于,Https相比Http的延时更大。
是什么导致了Https延迟?
是什么导致了更高的延迟?http使用TCP 三次握手即可建立连接,客户端和服务器需要交换3个包,但是https除了 TCP 的三个包,还要加上 ssl握手需要的9个包,一共是12个包。那么实际SSL握手到底需要多长时间?目前有一些同时支持Http和Https的网站,以Computer Science House网站为测试范本,建立一个Http链接需要114毫秒,而https建立连接,则耗费436毫秒。也就是说Https比Http多花费322毫秒,其中大部分是ssl 本身加解密的开销。为什么一个握手环节环节会有如此大的时间消耗?
Https工作模式图
我们来看看,在Https建立连接前的这300多毫秒中到底发生了什么?Https的握手环节中,首先当你的浏览器向服务器请求一个安全的网页(通常是 https://),服务器就把它的证书和公匙发回来,浏览器检查证书是不是由可以信赖的机构颁发的,确认证书有效和此证书是此网站的。使用公钥加密了一个随机对称密钥,包括加密的URL一起发送到服务器,服务器用自己的私匙解密了你发送的钥匙。然后用这把对称加密的钥匙给你请求的URL链接解密。服务器用你发的对称钥匙给你请求的网页加密,你也有相同的钥匙就可以解密发回来的网页了。
Tips:看着有点晕?那么换个形象的说法。比如小A要和远方的女朋友B通信,而且又不想信息被其他人(比如邮递员)获取,那么小A先买一个带锁的箱子,但是在寄给女友B的时候不上锁,只是把开着的锁放在开着的箱子里,通过邮递员寄给女友B。当B收到箱子后,明白了这是小A想要传递秘密信息。那么B拿出了自己的另一个密码箱,把明文信件放在这个密码箱中,为了让小A能够打开密码箱,B在一张纸条上写上这个密码箱的密码,并连同密码箱一同放进小A的箱子里,然后通过小A的锁锁上箱子邮递回小A(这类似俄罗斯套娃,在一个大箱子里放入一个小箱子),这样小A收到箱子后,用自己的要是打开箱子,并依照箱子里的密码纸条打开B的密码箱,就能够读到信息了。回复的话,则采用同样的方式。这种方式,在传输过程中始终没有明文钥匙的传递,也就避免了信件被偷窥。
怎么降低延迟?浪潮加解密解决方案,提升十倍性能
从Https握手过程来看,在多次的握手过程中,最耗时,也最消耗服务器计算资源的是非对称加密密钥的生成和加解密。以目前主流的RSA2048为例,秘钥是两个大质数的积,长度为2048位(二进制位),也就是每次访问过程中,服务器需要先生成两个大质数,并进行公开秘钥的计算。(计算公式为A=B^e2 mod n,B=A^e1 mod n。A、B互为公钥和私钥,n为两个大质数的乘积,e1、e2为一对随机相关值)。在同等硬件条件下,2048bit https比http并发性能要弱5-10倍,甚至更多。
据某互联网公司实测,正常情况下一个16核的CPU能够达到3000 OPS(每秒3000次RSA操作)就算不错的成绩了,也就是说一台双路服务器每秒能够同时处理的握手次数500次(Https每次连接需要12次握手)。而且,每个网站不仅包括一个页面,比如主页面、登录页面、子页面等等,这些都需要通过SSL进行加密传输数据,因此通用x86服务器做SSL加解密会造成较高的延时,并且在高并发访问时容易造成服务器宕机。以淘宝双十一为例,千万级的访问量,如果采用通用服务器来处理Https的加解密,则需要数千台,这显然是现实的。
既然依靠CPU的通用计算不能很好地进行SSL加解密的高速运算,那么是不是能够通过专用的加速卡来实现?就像用GPU来实现图像运算那样,答案是肯定的。SSL专用加速卡,相比x86架构的CPU,虽然不能胜任通用计算应用需求,但是经过专门的算法和架构优化,在进行RSA加密计算时的性能大大优于传统架构。
浪潮SA5212M4服务器
近日,浪潮推出了基于SA5212M4的、专门面向SSL加解密加速的软硬一体化解决方案,支持IPsec、SSL 加速和压缩功能,可提供高达 50 Gbps 的加密速度和高达 24 Gbps 的压缩性能。浪潮SSL加解密加速解决方案在单卡情况下即可实现在RSA1024操作中190K OPS(每秒运算次数),而在RSA2048时也能达到35K的速度,与通用服务器相比能够有10倍以上的性能提升。
2015年,GoogleI/O大会上,谷歌提出了在网络上使用"HTTPS everywhere"的倡导,目前在国内百度和淘宝已经实现了Https的全站覆盖,并且越来越多的网站开始使用Https协议来保障数据的安全,浪潮SSL加解密解决方案将为更安全的网络环境奠定基础。