第四章 传输层安全SSL和TLS
SSL协议概述
设计目的
- 增强HTTP的安全性
- 让普通的HTTP协议和增强安全性的协议之间具有良好的互操作性
安全需求
- 机密性
- 完整性
- 服务器身份认证
- 可选的用户身份认证
SSL协议
- 保护运行于TCP之上的应用协议。
- 与应用层协议无关的。
- 在应用层协议之前就已经完成加密算法、通信密钥的协商以及服务器的认证工作。
SSLv3协议的流程
典型的SSLv3通信过程:
- 在传输应用数据之前,必须首先进行协商,以便客户端验证服务器的身份,并与服务器就算法和密钥达成共识;
- 在数据传输阶段,双方利用协商好的算法和密钥处理应用数据;
- 数据传输完成后,通过可认证的方式断开连接。
更改密码规范协议
- SSL连接(Connection) - 一个连接是一个提供合适类型服务的传输。- SSL的连接是点对点的关系。- 连接是暂时的,每一个连接和一个会话关联。
- SSL会话(Session) - 一个会话是在客户与服务器之间的一个关联。会话定义了一组可供多个连接共享的密码安全参数。- 会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价。
握手协议
- 协调客户端和服务器的状态,使得通信双方的交互实现同步。
- 当前操作状态和挂起状态分别表示正在使用和正在协商的密码参数。
警告协议
- 无论是在协商还是在应用数据传输阶段,如果通信一方发现了差错,必须向对方报告;应用数据传输完成后,还必须通知对方断开连接。
- 警告级(Warning)、致命级(Fatal)
- SSLv3的断连消息为Close_notify,引入消息验证码机制。
会话和连接
- 会话状态:一组参数,包括会话ID、通信对等端证书、压缩算法、加密算法、散列算法、预主密钥以及可恢复标记。
- 连接状态:一组参数,包括客户端和服务器随机数、服务器MAC密钥、客户端MAC密钥、服务器加密密钥、客户端加密密钥、初始化向量IV以及序号。
会话恢复
- 使用已有的会话保护某个连接,不必再重新协商新参数。
- 使用会话恢复可提高通信效率。
客户端认证
- 服务器认证仅发送证书
- 客户端认证多发送CertificateVerify消息。
- 真正的服务器认证过程隐含在密钥生成过程中。
密钥导出机制
4个用于保护数据的会话密钥
- Esc:服务器写加密密钥
- Msc:服务器写MAC密钥
- Ecs:客户端写加密密钥
- Mcs:客户端写MAC密钥
SSLv3的记录层
规范语言:
- 杂项:/…/表述注释;[[ ]]表述可选项;opaque表述无具体含义的单字节数据
- 数字:uint8、uint16、uint24、uint32、 uint64
- 向量:定长向量、变长向量
- 枚举:某个变量的可能取值
- 结构:某个变量由不同类型数据所组成
- 变体:表示根据实际选择符的不同,可以选择不同的数据
- 赋值:赋值即给一个变量赋予常量值
数据处理过程:
- 分片
- 压缩
- 计算MAC
- 消息加密
TLS协议
协议描述
- 在协议框架描述方面,TLS包括记录层和握手层两个协议,握手、更改密码规范和警告作为记录层协议的子协议描述。
MAC计算
- SSLv3:MD5、SHA-1
- TLSv1:HMAC
密钥导出
- PRF(Pseudo-Random Function,伪随机函数),在定义该函数之前,TLS首先定义数据扩展函数。
散列函数输入
- Certificate Verify和Finished消息中都需要计算散列值
填充长度
- SSLv3的填充数据仅应填满一个分组长度
- TLS的填充则允许在填满一个分组长度后,继续填充成任意个分组。
TLS 握手协议还能细分为 5 个子协议:
- change_cipher_spec(在 TLS 1.3 中这个协议已经删除,为了兼容TLS 老版本,可能还会存在)
- alert
- handshake
- application_data
- heartbeat (TLS 1.3 新加的,TLS 1.3 之前的版本没有这个协议)
TLS1.2与TLS1.3在子协议上的区别
协议版本密码切换协议警告协议握手协议心跳协议应用数据协议TLS1.3无此协议根据连接状态不同进行加密,即一部分会加密一部分加密不加密加密TLS1.2不加密不加密不加密无此协议加密
记录层
- 将上层的信息块分段为TLSPlaintext记录,每一条TLS记录以一个短表头开始。原始消息经过分段 (或者合并)、压缩、添加认证码、加密转为 TLS 记录的数据部分。其中对上层应用数据协议进行密码保护,对其他的子协议只是简单封装(即不加密)。
TLS密码切换协议
- 作用:该协议是TLS记录层对应用数据是否进行加密的分界线。客户端或者服务端一旦收到对端发送的密码切换协议,就表明接下来传输数据过程中可以对应用数据进行加密了。
TLS警告协议
- 作用:该协议用来表示关闭信息和错误
- 收到close_notify警告后,表明连接从一个方向开始有序的关闭,收到这个警报后,TLS实现方应表明应用程序的数据结束。
TLS握手协议
- 作用:双方将通过这个协议协商出密码块,这个密码块会交给 TLS 记录层进行密钥加密。也就是说握手协议达成的“共识”(密码块)是整个 TLS 和 HTTPS 安全的基础。
TLS应用数据协议
- 作用:该协议就是TLS上层的各种协议,TLS将主要保护的数据放在该协议里。
- TLS记录层会根据加密模式的不同在应用数据末尾加上MAC检验数据
TLS心跳协议
- 作用:允许在不需要重协商的情况下,使用 keep-alive 功能。
SSL应用
分设端口
- 为不同的访问方式提供不同的监听端口。
- HTTP客户端使用普通方式访问web服务器时,与80号端口建立连接,否则与443号端口建立连接,其他协议的使用方式类似。基于SSL的协议通常在协议后添加一个S作为标识。
从协议时序的角度
- SSL的引入对高层应用的协议时序没有影响,只是比普通访问增加了SSL握手及安全断连步骤;
从语法和语义的角度
- 安全访问方式下的通信数据要经过安全处理和安全验证,应用层的数据不再是字节流,而是记录。
向上协商的策略需要修改应用层协议
- 220:Ready to start TIS;
- 501:Syntax error
- 504:TLS not available due to temporary reason
SSL VPN 技术在校园网中的应用
- 身份鉴别
- 访问策略
- 数据转发
小结
SSL增强传输层的安全性,为高层应用提供较为通用的安全方案。
提供机密性、完整性、服务器认证以及可选的客户端认证服务。
SSL协议套件由握手、更改密码规范、警告和记录协议构成。
- 握手协议实现算法协商、密钥生成和身份认证,支持会话恢复等握手方式。
- 更改密码规范协议用以通告对等端使用新的安全参数来保护数据
- 警告协议则同时具备安全断连和错误通告功能。
- 记录协议是SSL数据承载层,高层应用及其他三个协议的数据都封装在记录中传递。
本文转载自: https://blog.csdn.net/m0_60378969/article/details/139973002
版权归原作者 云边娃娃机 所有, 如有侵权,请联系我们删除。
版权归原作者 云边娃娃机 所有, 如有侵权,请联系我们删除。