SSL握手协议设计原理

少于 1 分钟读完

一、认识SSL

  • SSL指Secure Sockets Layer,即安全套接层。
  • SSL是网络安全通讯的基础,广泛应用于网上银行、网上支付、电子商务等重要网络服务中。
  • SSL在传输层对网络连接进行加密。
  • SSL采用公开密钥技术,保证两个应用间通信的保密性和可靠性。
  • SSL在服务器和客户机两端可同时被支持。
  • SSL协议与应用层协议独立无关的。高层的应用层协议能透明的建立于SSL协议之上。

二、SSL握手过程

  • 客户端发送一个“ClientHello”消息,说明它支持的密码算法列表、压缩方法及最高协议版本,也发送稍后将被使用的随机数。
  • 客户端收到一个“ServerHello”消息,包含服务器选择的连接参数,源自客户端初期所提供的“ClientHello”。
  • 当双方知道了连接参数,客户端与服务器交换证书(依靠被选择的公钥系统)。这些证书通常基于X.509,不过已有草案支持以OpenPGP为基础的证书。
  • 服务器请求客户端公钥。客户端有证书即双向身份认证,没证书时随机生成公钥。
  • 客户端与服务器通过公钥保密协商共同的主私钥(双方随机协商),这通过精心谨慎设计的伪随机数功能实现。结果可能使用Diffie-Hellman交换,或简化的公钥加密,双方各自用私钥解密。所有其他关键数据的加密均使用这个“主密钥”。

三、几个关键点

  1. SSL工作在第传输层和应用层之间,加密从上层——应用层发送来的数据,解密从下层——传输层“接收”的数据,所以SSL对应用层来说是透明的。
  2. SSL是干什么的,它不是在正常数据通信中的协议,它是一个用来协商通信“主密钥”的协议,也就是说需要保密的通信开始前使用SSL。
  3. SSL采用公钥技术,为什么有提到对称加密算法,这也正符合了2的说法。SSL采用公钥技术指的就是正常通信开始前的协商过程,公钥保存在 SSL证书中,所以(二)中只说交换证书,并没有提及交换公钥。最后协商的结果——“主密钥”,其实是一个对称加密算法的密钥,加密解密使用的同一个密 钥。
  4. 为什么要协商一个“主密钥”,这是因为对称加密算法加密解密速度快,公钥算法相对比较慢,结合公钥算法和对称算法的优点,使用公钥算法进行密钥交换,类似于Diffie-Hellman密钥交换。
  5. 握手过程中有一步客户端向服务器端连续发送两次SSL证书,第一次未加密,第二次用自己的私钥加密,服务器可以用客户端的公钥解密,能证实收到的证书确实是客户端所发送的(因为私钥是不公开的),中间没有被篡改。

标签:

分类:

更新时间:

留下评论