HTTPS原理
概念
HTTPS = HTTP over TLS
握手
HTTP只需要TCP握手,2*RTT
HTTPS握手类型
- 完全握手
多2*RTT- 阶段一:
Client => Server: 支持版本、密码套件
Client <= Server: 密码套件、证书 - 阶段二:
Client => Server: 密钥交换、完成
Client <= Server: 完成
- 阶段一:
- 简化握手(TLS 1.2)
多1
*RTT
不需要阶段二 0
*RTT握手(TLS 1.3)
HTTPS握手原因
- 身份认证(证书) => 防冒充
确保正确的用户访问到正确的网站- 证书的作用
- 确认身份
- 校验签名
- 传递公钥
- 证书的作用
- 数据加密 => 防窃听
第三方无法直接查看原始内容 - 数据一致性 => 防篡改、防抵赖
及时发现第三方对内容的篡改
Tip: 数字签名
- 签名过程:内容经过Hash运算得到摘要,将摘要用私钥加密作为签名
- 通过网络传输:将签名和文件一起发送
- 接收验证签名: 将内容进行Hash运算得到摘要,将签名用公钥解密也得到一份摘要,两份摘要进行比对
使用Hash摘要的原因:- 全文直接签名太耗费资源
- Hash摘要可以保证内容修改任意部分,摘要都会变化
传输
数据加密
- 对称加密
加解密用同一个密钥 - 非对称加密
密钥分为公钥和私钥
可以用公钥加密私钥界面
也可以私钥加密公钥解密
从性能上来说,对称加密比非对称加密快两个数量级
方案
- 握手阶段使用非对称加密,协商传输密钥
- 传输采用对称加密,速度快
访问速度
- 网络耗时
最坏情况下会增加7个RTT - 计算耗时
客户端,50ms
服务端,15ms
- 本文标题:HTTPS原理
- 本文作者:Shikang Xu
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!