用TLS/SSL保证数据传输安全

 2015年09月02日    78     声明


SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议。TLS/SSL会在传输层对网络连接进行加密,这使得传输内容的安全性和完整性得到保证。SSL协议,最早由Netscape设计研发的规范,在经历了SSL v1.0和SSL v2.0两个失败版本后,直到1996年的SSL v3.0才得到大规模应用。TLS是SSL v3.0的升级版和继承者,TLS 1.0也被称称做为SSL 3.1,TLS 1.1也被称为SSL 3.2,TLS 1.2也被称为SSL 3.3。


1. TLS/SSL解决的问题

TLS/SSL是在TCP/IP协议之上提供了一个加密的通信流,使用公钥/私钥对客户端和服务器进行加密和验证。通信前使用私钥和签名证书进行加密,使用的证书可以是自签名证书,也可以是由数字证书颁发机构CA颁发的受信任的数字证书。TLS/SSL主要解决以下问题:

  • 认证客户端和服务器,确保数据发送到正确的客户端和服务器
  • 加密传输数据,以防止数据中途被窃取
  • 维护数据的完整性,确保数据在传输过程中不被篡改

2. TLS/SSL认证原理

TLS/SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。 一份 SSL 证书包括一个公钥和一个私钥,公共密钥用于加密信息,私用密钥用于解密加密的信息。在使用使用TLS/SSL安全机制的HTTPS中,浏览器指向一个安全域时,SSL 同步确认服务器和客户端,并创建一种加密方式和一个唯一的会话密钥。它们可以启动一个保证消息的隐私性和完整性的安全会话。在TLS/SSL中,包含以下部分:

2.1. 记录协议(Record Protocol)

记录协议建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。握手协议是客户机和服务器用SSL连接通信时使用的第一个子协议,握手协议包括客户机与服务器之间的一系列消息。SSL中最复杂的协议就是握手协议。该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。握手协议是在应用程序的数据传输之前使用的。

2.2. 握手协议(Handshake Protocol)

握手协议建立在TLS/SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。记录协议在客户机和服务器握手成功后使用,进入SSL记录协议,记录协议向SSL连接提供两个服务:

  • 保密性:使用握手协议定义的秘密密钥实现
  • 完整性:握手协议定义了MAC,用于保证消息完整性


3. TLS/SSL认证过程

TLS/SSL认证过程

  • ClientHello:客户端向服务器发送一个开始信息ClientHello
  • ServerHello:服务器根据客户的信息确定是否需要生成新的主密钥。如需要则服务器向客户端端响应一个ServerHello信息时,并包含生成主密钥所需的信息
  • 客户端回应:客户端收到服务器回应以后,首先验证服务器证书,验证成功后产生一个主密钥,并用服务器的公钥加密后传给服务器。
  • 服务端响应:服务器根据客户端的主密钥,计算生成本次会话所用的"会话密钥",并发送给客户端
  • HTTPS通信:服务器与客户端认证完成,客户端与服务器进入加密通信,通讯内容使用用"会话密钥"加密。