Transport Layer Security(TLS)和它早期版本Secure Sockets Layer(SSL)为网络加密协议,TLS协议是在SSL协议的基础上进行改进升级,他们主要用于在计算机网络上提供通信安全。其早期一些版本被广泛使用于web浏览器、email、即时通信、VoIP等。web网站通过该协议能够保证浏览器于服务器之间的安全通信。
SSL/TLS协议主要提供通信过程数据的保密性和完整性,在客户端与服务端通信过程中,主要包括以下几点:
- 通信数据保密性:主要防止数据被第三方截获查看。SSL/TLS协议采用对称加密算法,实现对传输内容的加密,而针对对称加密所需的密钥,则通过协议通信过程中的handshake过程,实现对称加密密钥的协商,同时,该过程也包括协商加密的算法。这个协商过程不同版本的协议,方法也存在一定的差异,需要注意。
- 通信双方身份认证:根据不同版本的SSL/TLS协议,其采用的身份认证方式、认证对象也存在不同,关于认证方式包括基于非对称加密的身份认证和基于证书的身份认证,而认证对象也分为单向认证(只认证服务端)和双向认证(客户端和服务端双向认证)
- 通信数据的可靠性(即完整性):协议通过Message Athenticaiton Code(MAC)消息认证码,来防止数据的篡改,以保证其真实完整。
SSL/TLS协议支持多种不同的密钥交换、数据加密和数据完整性认证方法,具体内容后面将会讲述。
一、SSL/TLS协议组成
协议由两层构成:TLS Record Protocol
和TLS Handshake Protocol
。协议栈如下图所示
TLS Record Protocol
处于较低的一层,基于可信任的协议之上,如TCP,为高层协议提供数据封装、压缩、加密等基本功能的支持。它保证了通信的两个基本安全属性:
-
保密连接。数据传输使用对称加密算法,如AES,RC4等。该对称加密算法的密钥对于每个连接是唯一的,基于密钥协商协议生成,比如
TLS handshake protocol
,Record Protocol
也可以不使用加密。 -
可信连接。消息的传输包括了基于密钥的消息认证码(keyed MAC),使用安全Hash函数计算MAC,用于完整性检查。
Record Protocol
也可以不使用MAC,但是这种模式只用于安全参数协商时。
Record Protocol
用于封装多种高层的协议,其中一个种就是TLS handshake protocol
,这种协议允许客户与服务器相互认证,在应用程序通信前,协商加密算法和加密密钥。TLS handshake protocol
保证了连接的三个基本安全属性:
- 两端的身份可以通过非对称或者公钥加密算法(DSA,RSA等)进行认证。认证过程是可选的,但至少要求一端被认证。
- 共享密钥的协商是安全的。密钥协商对于监听者和任何被认证的连接都是不可见的。