背景
HTTP明文传输存在的安全风险
- 窃听 (信息加密)
- 篡改 (校验机制)
- 冒充 (身份证书)
一、基于RSA算法握手(已弃用)
共 1+3+3+2+1+1+1 = 12 步(未包括ack)
开始到结束一共12步
- 1 客户端发送 Client Hello
- 3 服务端:
-
- 1、回应Server Hello
-
- 2、发送证书certificate报文
-
- 3、发生Server Hello Done
- 3 客户端
-
- 1、Client Key Exchange 随机密码串发送
-
- 2、Change Cipher Spec 之后改用会话密钥通信
-
- 3、Encrypted Handshake Message(Finishd)
- 2 服务端
-
- 1、Change Cipher Spec 之后改用会话密钥通信
-
- 2、Encrypted Handshake Message(Finishd)
- 1 客户端用私钥加密发送http请求
- 1 服务端响应数据返回
- 1 结束
RSA握手过程流程图
二、基于ECDHE密钥协商算法
四次握手
三、TLS1.3优化
TLS 1.3 把 Hello 和公钥交换这两个消息合并成了一个消息,于是这样就减少到只需 1 RTT 就能完成 TLS 握手
四、面试知识点总结
五、总结
核心步骤,三步
1、身份认证:
- pki技术,通过数字证书(主体名字、颁发者、有效期、公钥、签名、扩展信息等】),验证身份,拿到公钥
2、密钥协商:
- 主密钥的公式:Client Random + Server Random + pre-master = master secret
- 目的是双方保密的拿到 pre-master
3、数据加密
- 双方利用拿到的主密钥,进行对称加密