由来:
http明文传输,有窃听,篡改,冒充的风险,所以在HTTP与TCP层中加入了TLS协议, 解决这个问题。
窃听:对信息进行了加密。
篡改:引入校验机制。
冒充:身份证书。
*首先了解一下对称加密,非对称加密。
常见的对称加密算法:DES,3DES,AES,SM4,
常见的非对称加密算法:RSA,ECC,SM2
对称加密与非对称加密算法_对称加密和非对称加密_大草原的小灰灰的博客-CSDN博客
对称加密,非对称加密加密过程:
对称加密和非对称加密算法工作过程详解_w好运来x的博客-CSDN博客
过程:
先完成 TCP 连接建立,然后走 TLS 握手过程后,才能建立通信安全的连接。
TLS握手过程:
报文信息理论如下:
- 客户端发送 Client Hello 消息给服务端;
- 服务端回应 Server Hello ,Server Certificate、Server Key Exchange 和 Server Hello Done
- 客户端发送 Client Key Exchange、Change Cipher Spec 和 Client Finished 消息;
- 服务端最后发送 Change Cipher Spec 和 Server Finished 消息;
备注:
1.Client hello,Server Hello
- Version Number: 客户端发送它所支持的最高 SSL/TLS 版本。
- Randomly Generated Data:一个 32 字节的客户端随机数,该随机数被服务端生成通信用的对称密钥(master secret);
- Session Identification :session ID 被客户端用于恢复之前的会话(只有恢复 session 时该字段才有值),这样可以简化 SSL 握手过程,避免每次请求都建立新的连接而握手,握手过程是需要消耗很多计算资源的。已建立的连接信息存储在客户端和服务端各自的 session 缓存中,用 session ID 标识;
- Cipher Suite: 客户端发送它所支持的加密套件列表;
2. Certificate
服务端发送 SSL 证书给客户端,包含服务端的公钥,客户端用该证书验证服务端的身份。
如果服务端发送了 Client Certificate Request 消息 (高保密性。可选),那么客户端会发送该消息给(Client Cipher,message)服务端,包含 自己的证书信息,供服务端进行客户端身份认证。Certificate Verify ,该消息只有在 Client Certificate message 消息发送时才发送,客户端通过自己的私钥签名从开始到现在的所有发送过的消息,然后服务端会用客户端的公钥验证这个签名。
3.Server Key Exchange ,Client Key Exchange
主要用来传递双方协商密钥的参数
4.Server Hello Done
告知握手相关的消息发送完毕,等待响应。
通知此消息以后会以之前协商的密钥加密发送数据。
6.Client Finished ,Server Finished
客户端服务端,都会在握手完成之后,发送 Encrypted handshake message,且各自收到对端的Encrypted handshake message后会去验证这个数据,确认秘钥的正确性。因为Encrypted handshake message是使用对称秘钥进行加密的第一个报文,如果这个报文加解密校验成功,那么就说明对称秘钥是正确的。
客户端计算生成对称密钥,然后使用该对称密钥加密之前所有收发握手消息的 Hash 值,发送给服务器,服务器将用相同的会话密钥(使用相同方法生成)解密此消息,校验其中的Hash 值。
服务器使用对称密钥加密(生成方式与客户端相同)之前所发送的所有握手消息的hash值,发送给客户端去校验。至此 SSL 握手过程结束,双发之后的通信数据都会用双方协商的对称密钥 Session Key 加密传输。
首先了解wireshark的基本使用:
wireshark使用教程 如何使用wireshark - 云骑士一键重装系统
Frame:物理层的数据帧概况
EthernetII:数据链路层以太网帧头部信息
Internet Protocol Version 4:互联网层IP包头部信息
Transmission Control Protocol:传输层
Hypertext Transfer Protocol:应用层的信息
抓包分析:RSA
未完待续:证书的有效性