背景
????????HTTP的安全性较低,对用户的隐私和体验都会带来影响,互联网厂商也会因此造成一定的名誉受损,甚至利益损失。这都会推动互联网厂商在提供服务的同时,进行由HTTP向HTTPS的改造。
HTTP带来的主要问题有:
- 数据完整性,HTTP不能保证数据的完整性,即服务发出的相应内容与用户接收到的内容是否一致,这就导致攻击者可以轻松的进行中间人攻击,将内容进行篡改,例如插入恶意代码或大量广告等。
- 数据明文传输,HTTP不会对内容进行加密,这就导致用户的网络行动可以被嗅探到,攻击者可以根据用户的网络踪迹,从而分析出大量的个人信息。
- 流量劫持,用户的访问可以被攻击者劫持到别的网站上,攻击者可以通过伪造相似网站来诱导用户输入账户、钱财交易等,普通用户很有可能都识别不出来,从而造成信息/金钱被窃取。
????????为了保障用户的接入安全,国内外的互联网厂商都已全面支持HTTPS,但是在HTTP向HTTPS改造的过程中,存在这诸多需要解决的问题或挑战。
挑战
- 访问延迟问题,HTTPS比HTTP多了TLS握手的过程,会额外引入2个RTT(Round Trip Time,往返延迟),这在移动网络,网络不稳定的情况下会加剧延迟长的问题,对用户的影响也跟明显。
- 加密性能问题,HTTPS通过对称加密与非对称加密的形式,进行交换密钥与建立连接。其中非对称加密的计算是性能开销的主要来源,这导致Web服务器的吞吐量大幅降低,以Nginx为例,在短连接和完全握手的情况下,HTTPS的吞吐量为HTTP的1/10。
- 安全性问题,HTTPS应用和部署需要遵从HTTPS部署最佳实践与规范,需要掌握一定的安全知识,这对SRE有较高的要求,否则很有可能留下潜在的安全漏洞。
- 稳定性问题,HTTPS的证书是需要第三方的证书签发机构(CA)来提供,不可避免的引入了CA的外部依赖,证书过期、机构的证书检查服务异常,都会直接影响用户访问,造成不可访问的故障。
优化
访问延迟优化
HTTPS引入了额外的RTT,优化思路如下:
- 降低RTT(往返时间),通过边缘节点,用户就近接入,完成TLS握手
- 减少握手次数,通过TLS复用减少握手次数; 使用性能高的协议,如TLS1.3只需1RTT,QUIC只需0个RTT;通过HSTS(HTTP Strict Transport Security,HTTP严格传输安全)机制或重定向缓存机制,优化从HTTP跳转HTTPS的延迟;OCSP Stapling(Online Certificate Status Protocol Stapling,在线证书状态协议装订)机制优化证书状态检查的延迟。
- 预建连,屏蔽建立连接延迟的影响。
非对称加密性能优化
- 减少非对称计算次数,提升连接复用率、会话复用率来减少TLS完全握手及引入的非对称计算次数。
- 使用性能高的加密算法,目前主流的加密算法为RSA和EEC,RSA的安全长度目前为2048位,EEC为256位,EEC的性能损耗要远小于RSA2048,但是RSA对证书的兼容性更好。可采用二者混合使用的方式,对一部分满足要求的用户使用性能更高的EEC加密,对使用低端客户端的用户使用兼容性更高的RSA,这部分的RSA也可通过硬件加速的方式来降低性能开销。
- 硬件卸载,使用硬件加速卡进行SSL卸载,提升加密计算性能。
安全性优化
- 应用,需要制定并应用HTTPS部署最佳实践及规范。例如SSLLabs编写的《SSL/TLS部署最佳实践》,NIST发布的《保护Web事务的安全:TLS服务端证书管理》等。
- 监控机制,建立关于HTTPS的监控机制。包括HTTPS证书监控、HTTPS混合内容监控、安全Cookie监控、HTTPS安全漏洞扫描等。
稳定性优化
- 灰度机制,HTTP切换到HTTPS需要以灰度的方式进行,制定好灰度策略,如分域名,分区域,分用户等方式。
- 冗余机制,条件充足的话,可以购买多个厂商的证书以作互备,避免因单证书厂商自身问题引发服务不可用,具备有快速切换备份证书止损的能力。
|