过程图如下:
该过程的描述为:client发送client hello信息以及client端随机数到server端,server端收到后发送server的数字证书以及server端随机数到client端,然后client利用server数字证书中的公钥加密第三个随机数发往server,Server接收后利用自己的私钥对该随机数进行解密,之后双方根据这三个随机数生成对称加密算法的密钥,之后利用该对称加密算法进行通信。
以一个pcap文件中一段SSL/TSL连接的握手协议为例,
1,client hello,这里生成第一个随机数
2,server hello,这里生成第二个随机数。
3,server向client发送数字证书,其中包括server支持的非对称加密算法RSA的公钥,而server保留有该算法的私钥。
4,client收到server发来的证书后对证书进行校验,确认正确之后利用证书中的公钥对第三个随机数进行加密,发往server。
在这个包中,还包括了另外两个握手协议:change cipher spec和encrypted handshake message,change cipher spec表示接下来的通信将采用新的加密算法进行加密;encrypted handshake message是client利用三个随机数生成的对称加密算法加密的第一条信息,其中包括前面握手协议的一些摘要内容,当server收到该信息后,用server根据三个随机数生成的对称加密算法的密钥进行解密,如果能解出来那说明双方生成的私钥是一样的。
5,server返回密码变更信息以及一条用对称加密算法加密的信息。Client在接收后同样利用私钥进行解密。如果能够解出来则说明双方生成的私钥是一致的。