SSL/TLS 握手协议简述

一、参数协商算法

首先客户端和服务端肯定一个双方都支持的最高的协议版本,同时肯定他们使用的密码套件----组合算法 (Cipher Suite)算法的组合分别用在不一样目的的三个算法,包含交换秘钥和身份认证的算法,用于加密程序的对称加密算法,以及消息验证的MAC算法。算法组合的规范以下:安全

  

 身份验证经过以后,进入秘钥交换阶段,客户端和服务器之间并非直接交换秘钥,屙屎交换升恒米药品所须要用的信息,这个信息被称为 Pre-Master Secret (客户端产生的一个随机数)若是参数协商阶段肯定了算法组合使用RSA交换秘钥,那么客户端使用公钥(包含在服务器证书中)加密 Pre-Master Secret,而后再传给服务器,服务器使用私钥来解密,因此Pre-Master Secret 是安全的,以后双方还要计算一个 Master Secret ,最终的秘钥都是基于Master Secret生成的,Master Secret是经过三对三个随机数进行计算获得的。除了Pre-Master Secret 以外,另外两个随机数则是参数协商阶段交换的客户端随机数和服务器随机数。服务器

在SSL/TLS1.2中使用消息验证码MAC实现消息防篡改过,原理是在消息发送以前,将消息和一个消息和双方共享的秘钥做为一个hash算法的输入,再讲求的值的摘要发送给对方。对方使用私钥解密dom

 二、TLS1.2 握手的消息的顺序图ui

  1.       客户端发送一个ClientHello消息给服务端 ,消息包含客户端支持的协议版本,算法的组合列表,客户端生成的随机数。
  2.       服务端给客户端发送ServerHello消息,该消息包含服务器选择的协议版本号和支持的算法组合,还有服务端生成的随机数
  3.       若是在上个步骤中算法组合包含的是RSA,则服务器向客户端发送数字证书,客户端验证服务器的身份
  4.       服务器向客户端发送ServerHelloDon ,表示服务器完成秘钥协商
  5.       客户端发送一个随机的Pre -Master Sercet ,而后向服务器发送一个 ClientKeyExchange消息,包含使用服务器公钥加密的Pre-Mater Secret
  6.       客户端和服务器使用各自的Pre Master Secret 步骤一中产生的客户端随机数,以及步骤二服务器端产生的随机数来计算一个 Master secret .以后客户端和服务端可使用该秘钥计算后面使用的秘钥
  7.       客户端发送修改秘钥通知 ChangerCipherSpec通知给服务器,代表客户端开始使用刚才生成的秘钥来加密和验证数据,最后客户端发送一个 ClientFinish消息
  8.       服务器收到客户端的ChangeCipherSpec以后,也会对客户端发送ChangeCipherSpec通知,最后服务器发送一个ClientFinish .

     这样总结下: 也就是说在客户端仍是在服务端的随机数是存在两个的随机数,就客户端来讲 分别是第一次产生的 Random_C 和后面 发送的 Pre-Master Secret 包含在ClientKeyExchange 中而且使用服务器的公钥加密。加密

TLS秘钥协商过程抓包blog

相关文章
相关标签/搜索