使用SSL和TLS记录协议
由Netscape最初开发的SSL协议是当今Internet中安全通信的基础。
SSL作为单个文章/教程 文章中涵盖的重要主题,我们尝试将SSL中可以理解的不同主题隔离开来。
在这篇文章中,我们将尝试理解SSL的记录协议,下面将提到SSL的四个主要层。
- SSL握手协议
- SSL记录层协议
- SSL更改密码规范
- SSL警报协议
SSL记录协议
SSL中的不同层需要完全履行不同的职责。
SSL记录层协议具有以下功能。
- 从应用程序层按固定长度分解数据。
- 压缩数据
- 添加消息身份验证代码,该代码是在完整性密钥的帮助下计算的。
- 加密数据包(以固定长度分解的数据包)。
- 在具有固定长度的数据包中添加SSL标头。由以下标头组成,这些标头共同构成一个5字节的标头。
在SSL中记录协议标头内容
- 1字节协议定义
- 2字节协议版本
- 2字节长度
我们可以说SSL记录层协议位于TCP/IP协议栈中的TCP或者传输层的上方,从下图可以明显看出。
记录层通过将来自应用程序层的数据分段并添加适当的标头而创建的对象称为记录。
在此层中,MAC信息非常必要,因为它会检查记录的完整性。
这不过是借助以下内容计算得出的哈希值。
MAC值是根据[序列号,填充,主数据,密钥]计算出的哈希值。
因此,现在我们的记录将包括以下内容。
- 数据片段
- 一些填充
- MAC值
客户端将从何处获得哈希函数中使用的秘密密钥?
SSL连接始终由客户端启动到服务器。
因此,大多数时候,服务器必须从客户端支持的列表(由客户端指定)中选择一种加密算法。
SSL中的大多数协商部分都是由客户端执行的。
客户端对服务器进行初始验证(借助于证书颁发机构提供的证书)后,客户端将发送“客户端密钥交换消息”。
此消息(客户端密钥交换消息)已使用服务器提供的公共密钥加密(因此,只有服务器才能对其进行解锁)。
“ Premaster Secret”用于创建对称加密密钥(用于加密数据)和MAC哈希函数的秘密密钥(用于服务器和客户端的消息完整性检查)。
SSL同时使用对称加密和非对称加密。
非对称加密仅用于发送“客户端密钥交换消息”(我们在上文中进行了讨论)。
因为客户端密钥交换消息是SSL中的超级秘密(因为数据加密的对称密钥和MAC的秘密密钥均来自“客户端密钥交换消息”)。
尽管现在将用于完整性检查的MACvalue放在我们的记录中,但我们的数据仍未加密。
因此,现在所有数据以及MAC都使用对称密钥加密(也已使用“客户端密钥交换消息”共享给服务器)
现在,整个加密数据以及以下标头形成一个完整的记录,准备通过TCP进行传输。
- 1字节协议定义
- 2字节协议版本
- 2字节长度
接收到完整的记录(碎片数据包,在记录层带有所有标头)后,另一个节点可以计算出MAC哈希值(因为MAC的秘密密钥已由客户端与“客户端”共享密钥交换方法”),然后将其与添加在标头上的MAC进行比较。
服务器还可以使用对称密钥(也与“客户端密钥交换方法”共享的对称密钥)解密数据。