相关概念
Http:超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上,是Web协议族中非常重要的一个协议。协议版本包含Http1.0、Http1.1 和Http2.0.
Https:HTTPS (Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。
SSL:安全套接层(Secure Socket Layer,SSL),是网景公司(Netscape)设计的主要用于Web的安全传输协议,这种协议在Web上获得了广泛的应用。版本包含 SSL1.0(未发布)、SSL2.0(于2011年废弃)、SSL3.0(于2015年废弃)。
TSL:传输层安全协议(Transport Layer Security (TLS) Protocol)是 互联网工程任务组(IETF)组织将SSL标准化后的发布的协议。版本包含 TLS1.0(于2021年弃用)、TLS1.1(于2021年弃用)、TLS1.2、TLS1.3。
相关性
TLS
TLS 包含握手协议(The Handshake Protocol)和记录协议(The Record Protocol)。
记录层协议(The Record Layer Protocol)
记录层接收来自TCP、UDP等更底层的数据。它被划change_cipher_spec、alert、handshake和application_data 四种数据类型。
握手协议(The Handshake Protocol)
握手协议比记录层协议更高,对应记录层协议handshake类型的数据。
主要作用
- 密钥套件的协商
- 服务器和客户端(可选)的身份验证
- 会话密钥信息交互
握手协议包含以下步骤
- Client发送ClientHello,包含协议版本,随机数(RN),所有支持的密码套件(CipherSuites)。
- Server回应ServerHello ,包含协议版本,随机数,选择的密钥套件,会话ID。
- Server发送Certificate消息(可选)
- Server发送 ServerKeyExchange消息(可选)
- Server发送 CertificateRequest消息(可选)
- Server发送ServerHelloDone消息
- Client 发送 Certificate消息(可选)
- Client 发送 ClientKeyExchange消息
- Client 发送 CertificateVerify消息(可选)
- Client 发送 ChangeCipherSpec
- Client 发送 Finished消息
- Server发送 ChangeCipherSpec
- Server 发送 Finished消息
- Server 与Client 采用加密通信,发送application_data数据
密码套件(The Cipher Suite)
加密套件是一个算法集合,通常包含秘钥交换算法、数据加密算法、信息校验算法。格式为:
TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
或
SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
秘钥交换算法(KeyExchangeAlg):用于两个设备间秘钥的交换
数据加密算法(CipherAlg):用于传输数据的加密
信息校验算法(MacAlg):用于校验传输信息的完整性