第1页
百度HTTPS实践
----安全,快速,可靠
Az | 百度运维部 chenxiyang@baidu.com
第2页
个人介绍
陈曦洋(Az) 百度资深运维工程师,08年加入百度运维部。
承担网页搜索在线系统运维工作。 之后专门负责流量接入方向,面临过秒杀活动, 大型攻击和重大故障的考验。 近3年作为网页搜索接入运维方向的技术负责人, 主要承担 访问速度, 可达性, 安全搜索等方向事务。
@Az的majia
第3页
引言
• 2015年3月,百度搜索成为国内首家完成全站https改造的大型站点 • 全站HTTPS已经成为百度产品的标准 • 统一接入平台大幅提升HTTPS的接入效率和性能
第4页
章节
• 全站HTTPS的原因 • 协议原理 • 改造成本 • 优化方案 • 其他问题 • 参考文献
第5页
全站HTTPS的原因
第6页
用户反馈问题 | 缺乏有效的技术解决方案
一
• 加上url参数,302跳转,不停刷新
• 手机号泄露
• DNS劫持到其他网站
• 搜索功能异常
• 白页
用户:你们出问题了,赶紧修好
我们:臣妾做不到啊
投诉能解决一些问题。。
第7页
劫持的分析 | 使用HTTPS来解决传输安全的问题
劫持方式
DNS劫 持
一
嗅探隐私
劫持方 式
内容篡改
劫持阶段
域名解析
传输过程
浏览器/客户 端
搜索 运维
第8页
协议原理简介
第9页
协议原理介绍 | 对称加密(一)
二
第10页
协议原理简介 | 对称加密(二)
密钥更换 密钥泄露 密码破解 非安全信道的窃听 身份和数据伪造
ENIGMA
AF
二
第11页
协议原理简介 |如何解决对称加密问题 非对称!
密钥更换 密钥泄露 密码破解 非安全信道的窃听
加密解密分离 计算难度 完整性验证 逆向验证身份
身份和数据伪造
DH(Diffie-Hellman) RSA
二
第12页
协议原理简介 | DH 和 RSA
DH RSA
离散对数
非安全信道密钥协商 不是加密算法
欧拉定理,费马小定理,中国剩余定理 破解难度在于大数的因式分解
可作为密钥协商 也是加密算法
通信双方共同参与协商 有中间人攻击的风险
密钥协商时 由接受请求方提供公钥
计算量大
计算量大
二
第13页
协议原理简介 | tls/ssl
计算量大
非对称做密钥交换 对称做数据传输加密
密钥协商(非对称)-对称加密-散列算法 ECDHE-RSA-AES128-GCM-SHA256
中间人攻击
PKI体系(主要依赖证书和CA构建信任链)
对称加密密钥+前向加密
三个随机数 premaster secret 用RSA和DH协商的区别 私钥泄露也无法解密 客户端记录信息就可以解密
二
第14页
协议原理简介 | 总结
客户端 Hello+客户端随机数+密码 算法支持信息
客户端随机数
服务端随机数 服务端随机数+公钥证书
公钥证书
Session ID
服务端 客户端随机数 服务端随机数
公钥证书
服务端DH算法参数 签名
客户端DH算法参数
服务端算法参数 签名
客户端DH算法参数
服务端DH算法参数 私钥
客户端DH算法参数
预主密钥
预主密钥
会话密钥
会话密钥
二
非对称做密钥交换 对称做数据传输加密 PKI体系进行身份认证 三个随机数 (需要保密的是premaster secret)
第15页
协议原理简介 | 层次
应用层 (HTTP)
会话层 (TLS) 传输层 (TCP) 网络层 (IP)
链路层
物理层
Application
protocol组成
HandShake
Alert
ChangeCipherSpec
record格式
Heartbeat
ContentType Version Length
ProtocolMessage MAC(可选) Padding(cbc)
二
第16页
改造成本
第17页
改造成本 | 各种担忧
计算性能
1024位证书 2048位证书
访问速度
250-500ms 500-1500ms
架构成本
整体接入架构 业务线+域名
产品成本
渲染层 富媒体 各种坑
三
第18页
改造成本 | 计算性能
计算性能
1024位证书 2048位证书
访问速度
250-500ms 500-1500ms
1024位 单核性能: 1500 cps (from google)
1% of the CPU load
2048位 单核性能: 300-800 cps
相对HTTP下降 6-8倍 1个数量级
CPS性能
架构成本
整体接入架构 业务线+域名
产品成本
渲染层 富媒体 各种坑
http https(1024) https(2048)
HTTP cps 2W+
HTTPS cps 2000-3000
三
第19页
改造成本 | 访问速度
计算性能
1024位证书 2048位证书
用户
syn
ack
访问速度
250-500ms 500-1500ms
架构成本
整体接入架构 业务线+域名
产品成本
渲染层 富媒体 各种坑
CA
CA 域名解析 tcp握手
Ocsp 请求及响应
HTTP GET syn ack
Client hello
Client key exchange finished
Application data
三
Web server
Syn ack
TCP握手
302到HTTPS Syn ack
HTTP302 跳转
TCP握手
Server hello certificate Server hello done
Cipher spec changed finished
Application data
第20页
改造成本 | 架构和产品
计算性能
1024位证书 2048位证书
www.baidu.com
访问速度
搜索请求
250-500ms
图片
地图
视频
500-1500ms
架构成本
整体接入架构 业务线+域名
image.baidu.com map.baidu.com video.baidu.com
产品成本
渲染层 富媒体 各种坑
...
三
imagecdn.baidu.com mapcdn.baidu.com videocdn.baidu.com
第21页
优化方案
第22页
优化方案 | 计算性能
四
优先使用ECC
对称密钥大小
使用最新版的openssl 硬件加速方案 TLS远程代理计算
80 112 128 192 256
RSA和DH密钥大小
1024 2048 3072 7680 15360
ECC密钥大小
160 224 256 384 521
第23页
优化方案 | 计算性能
优先使用ECC 使用最新版的openssl
HTTPS
TLS offload
HTTP
webserver
HTTPS
TLS offload
HTTP
webserver
四
HTTPS
TLS offload
HTTP
HTTP
webserver
webserver
硬件加速方案 TLS远程代理计算
HTTPS
webserver
HTTPS
webserver
CRYPTO Server
第24页
优化方案 | 访问速度
Session resume
Session cache Session ticket HSTS Ocsp stapling
False start
SPDY/HTTP2
Session ID CACHE
浏览器
HTTPS
LB
HTTPS
HTTPS
webserver
webserver
浏览器
Session ticket
HTTPS
webserver
HTTPS
webserver
Session ID CACHE
四
第25页
优化方案 | 访问速度
四
Session resume
Session cache Session ticket HSTS Ocsp stapling
False start
SPDY/HTTP2
用户
syn
ack
CA
CA 域名解析 tcp握手
Ocsp 请求及响应
HTTP GET syn ack
Client hello
Client key exchange finished
Application data
提前发送数据
Web server
Syn ack
TCP握手
前置到浏览器内部
302到HTTPS Syn ack
HTTP302 跳转
TCP握手
Server hello certificate Server hello done
Cipher spec changed finished
Application data
第26页
优化方案 | 访问速度
Session resume
Session cache Session ticket HSTS Ocsp stapling
False start
SPDY/HTTP2 TLS record size
单TCP连接与支持优先级的多路复用
Header压缩 Server Push
HTTP head-of-line block
CWND+SLOW START
四
第27页
优化方案 | 访问速度
四
极限
False Start + Session Resumption + OCSP stapling + HSTS + RecordSize + CWND = 1 RTT
0 RTT? Quic
预连接 网页端
客户端
APP端
架构相关
第28页
优化方案 | 网站复杂程度对架构规划的影响
用户
四
缓存 域名
私钥
价格 CDN
支持
源站
第29页
优化方案 | 网站复杂程度对架构规划的影响
四
HTTPS
用户浏览器
Cdn服务3
Cdn服务1
动态 服务1
主域名
动态服务n
Cdn服务2
动态服务1
HTTPS
用户浏览器 HTTPS
Cdn服务3 HTTP
主域名 HTTP
Cdn服务1 动态服务n
Cdn服务2
用户浏览器 HTTPS
Cdn服务3 HTTP
CDN节点(主域名+Cdn服务1)
HTTP
Cdn服务2
动态服务1
动态服务n
第30页
优化方案 | 网站复杂程度对架构规划的影响
成本和速度最优 个人建议站点发展到一定规模时考虑如下问题:
域名规划/控制域名数量 统一接入/共享IP 图片等静态资源CDN等做成公共服务,制定严格使用规范和架构 限制第三方内容
四
第31页
优化方案 | 产品改造过程中的问题
传递Referrer
<meta content="always" name="referrer">
form提交 视频播放 用户异常 混合内容
四
第32页
其他问题
第33页
其他问题
SHA256的问题
<Android 2.3 XP SP3
SPDY的问题
HTTPS绝对安全吗
五
第34页
其他问题
SHA256的问题 SPDY的问题
15年底之后
无法申请SHA1证书了
16年底之前
基于协议特征的SHA1 SHA256双证书适配 精确到浏览器的小版本 用户影响 0.1%-1%
16年底之后
SHA256
HTTPS绝对安全吗 搜索/电商/银行(招行 工行 中行)
告知/帮助用户升级(希望可以合作)
五
第35页
其他问题
SHA256的问题 SPDY的问题
TCP head-of-line block 编码问题
HTTPS绝对安全吗
五
第36页
其他问题
SHA256的问题
没有绝对的安全
实现和依赖的系统
SPDY的问题
OpenSSL Heartblood iOS 7.0.6修复的漏洞
私钥的保管
HTTPS绝对安全吗
CDN的回源 浏览器的漏洞
手机号的泄露
阴谋论-随机数和椭圆曲线加密
五
第37页
其他问题
SHA256的问题 SPDY的问题
清华 段海新教授
HTTPS绝对安全吗
五
第38页
参考文献
百度运维部的系列文章 http://op.baidu.com/2015/04/https-index/
Ilya Grigorik
http://www.igvita.com/
High-Performance Browser Networking
Is TLS Fast Yet?
其他相关介绍
https://blog.helong.info/blog/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/ http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html http://8btc.com/thread-1240-1-1.html http://www.cocoachina.com/ios/20150918/13488.html?utm_source=tuicool http://segmentfault.com/a/1190000002554673 http://rrsongzi-gmail-com.iteye.com/blog/603015 http://blog.jobbole.com/79617/
六
第39页
谢谢