中科三方:浅析SSL证书的工作原理

关于SSL证书的定义和类型,在前面我们已经做过简单介绍,那么SSL证书的工作原理是怎么样的呢?

SSL的工作原理分为握手协议、记录协议、警报协议三部分。

一、握手协议

握手协议发生在应用程序的数据传输前,是客户机和服务器用SSL连接通信时使用的第一个子协议,也是整个SSL过程中最复杂的一部分协议。该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。

每个握手协议包含以下3个字段:

(1)Type:表示10种消息类型之一

(2)Length:表示消息长度字节数

(3)Content:与消息相关的参数

握手协议有4个阶段:

1.建立安全能力

SSL握手的第一阶段启动逻辑连接,建立这个连接的安全能力。首先客户机向服务器发出client hello消息并等待服务器响应,随后服务器向客户机返回server hello消息,对client hello消息中的信息进行确认。

ClientHello 客户发送CilentHello信息,包含如下内容:

(1)客户端可以支持的SSL最高版本号

(2)一个用于生成主秘密的32字节的随机数。

(3)一个确定会话的会话ID。

(4)一个客户端可以支持的密码套件列表。

密码套件格式:每个套件都以“SSL”开头,紧跟着的是密钥交换算法。

(5)一个客户端可以支持的压缩算法列表。

ServerHello服务器用ServerHello信息应答客户,包括下列内容:

(1)一个SSL版本号。

(2)一个用于生成主秘密的32字节的随机数。(客户端一个、服务端一个)

(3)会话ID

(4)从客户端的密码套件列表中选择的一个密码套件

(5)从客户端的压缩方法的列表中选择的压缩方法

这个阶段之后,客户端服务端知道了下列内容:

(1)SSL版本

(2)密钥交换、信息验证和加密算法

(3)压缩方法

(4)有关密钥生成的两个随机数。

2. 服务器鉴别与密钥交换

服务器启动SSL握手第2阶段,该阶段只有服务器发送消息,客户端接收消息。

该阶段分为4步:

(1)服务器将数字证书和到根CA整个链发给客户端,使客户端通过服务器证书中的服务器公钥识别认证服务器。

(2)根据密钥交换算法进行服务器秘钥交换

(3)服务器要求客户端进行身份验证。

(4)服务器完成握手。

3.客户机鉴别与密钥交换:

客户端开始握手第三阶段,本阶段只有客户端发送消息,服务器接收消息。

(1)为了验证服务器,客户发送一个证书信息,这是可选的,在IIS中可以配置强制客户端证书认证。

(2)客户机密钥交换:这里客户端将预备主密钥发送给服务端,注意这里会使用服务端的公钥进行加密。

(3)证书验证,对预备秘钥和随机数进行签名,证明拥有证书的公钥。

4.握手完成

客户机启动SSL握手第4阶段,使服务器结束。该阶段分为4步,前2个消息来自客户机,后2个消息来自服务器。

二、记录协议

记录协议发生在客户机和服务器握手成功后,即客户端和服务器确认双方身份交换使用的算法后,进入SSL记录协议,记录协议向SSL连接提供两个服务:

(1)保密性:使用握手协议定义的秘密密钥实现

(2)完整性:握手协议定义了MAC,用于保证消息完整性

SSL记录协议接收传输的应用程序消息,将数据分割成可管理的块,然后利用加密算法对数据进行加密,最后添加头文件。接收数据后,需要对其进行解密、验证、解压缩和重新组装。

三、警报协议

客户机和服务器发现错误时,如证书错误、证书到期、握手失败等情况,会向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,秘密和密钥。

推荐阅读更多精彩内容