11.2.3 产生密钥
当服务器端和客户端经过上述一系列操作后,开始密钥构建交互,如图11-9和图11-10所示。
图 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所示。
图 11-10 构建会话密钥
服务器端和客户端分别构建主密钥后将构建会话密钥,并终止握手协议交互,主要步骤包括:
1)客户端使用主密钥构建会话密钥。会话密钥即对称加密算法中的秘密密钥。
2)客户端通知服务器端未来的信息将使用会话密钥加密。
3)客户端发送使用会话密钥加密的信息,终止握手。
4)服务器端使用主密钥构建会话密钥。
5)服务器端通知客户端未来的信息将使用会话密钥加密。
6)服务器发送使用会话密钥加密的信息,终止握手。
至此,服务器端和客户端完成了握手协议,开始进入正式会话阶段。
如果上述一系列操作中有任何一端受到外界因素干扰发生异常,则重新进入协商算法阶段。