11.2.3 产生密钥

当服务器端和客户端经过上述一系列操作后,开始密钥构建交互,如图11-9和图11-10所示。

figure_0380_0118

图 11-9 构建主密钥MS

服务器端和客户端最初需要建立主密钥为构建会话密钥做准备,主要包含以下几个步骤:

1)客户端产生随机数,作为预备主密钥(Pre-Master Secret, PMS)。

2)客户端使用服务器证书中的公钥对随机数PMS加密。

3)客户端将PMS加密信息发送到服务器端。

4)服务器使用私钥对信息解密获得PMS信息。

5)客户端使用随机数RNC、RNS和PMS构建主密钥(Master Secret, MS)。

6)服务器端使用随机数RNC、RNS和PMS构建主密钥MS。

上述步骤5、6不存在次序关系,实际操作中异步完成。

完成主密钥构建操作后,服务器端和客户端将建立会话密钥,即将完成握手协议,如图11-10所示。

figure_0380_0119

图 11-10 构建会话密钥

服务器端和客户端分别构建主密钥后将构建会话密钥,并终止握手协议交互,主要步骤包括:

1)客户端使用主密钥构建会话密钥。会话密钥即对称加密算法中的秘密密钥。

2)客户端通知服务器端未来的信息将使用会话密钥加密。

3)客户端发送使用会话密钥加密的信息,终止握手。

4)服务器端使用主密钥构建会话密钥。

5)服务器端通知客户端未来的信息将使用会话密钥加密。

6)服务器发送使用会话密钥加密的信息,终止握手。

至此,服务器端和客户端完成了握手协议,开始进入正式会话阶段。

如果上述一系列操作中有任何一端受到外界因素干扰发生异常,则重新进入协商算法阶段。