SSL(Secure Sockets Layer ,安全套接层),是为网络通信提供安全及数据完整性的一种安全协议。由Netscape研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,确保数据在网络上的传输过程中不会被截取及窃听。
当前几乎所有浏览器都支持SSL,但是支持的版本有所不同。从图8-1中可以看到,IE同时支持SSL 2.0和SSL 3.0两个版本。
图8-1 IE支持的SSL版本
事实上各位读者已经明白了SSL的工作原理,回顾我前面博客讲到的公钥加密的通信原理,而SSL使用的就是公钥加密系统。现在完全可以构想基于SSL的数据通信流程。前面说过,SSL是一种协议,本节重点在于协议本身和它是如何工作在各种协议之间来提供安全通信的。
SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它使客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。SSL协议在应用层通信之前就已经完成加密算法、通信密钥的协商,以及服务器认证工作,在此之后,应用层协议所传送的数据都被加密。
SSL协议体系结构如图8-2所示。
图8-2 SSL协议体系结构
从体系结构图可以看出,SSL协议可分为两层:
q SSL记录协议(SSL Record Protocol):建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
q SSL握手协议(SSL Handshake Protocol):建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。SSL协议实际上是SSL握手协议、SSL修改密文协议、SSL警告协议和SSL记录协议组成的一个协议族。下面分别进行介绍。
SSL记录协议
SSL记录协议为SSL连接提供两种服务:机密性和报文完整性。
在SSL协议中,所有的传输数据都被封装在记录中。记录是由记录头和记录数据(长度不为0)组成的。所有的SSL通信都使用SSL记录层,记录协议封装上层的握手协议、报警协议、修改密文协议。SSL记录协议包括记录头和记录数据格式的规定。
SSL记录协议定义了要传输数据的格式,它位于一些可靠的传输协议之上(如TCP),用于各种更高层协议的封装。主要完成分组和组合、压缩和解压缩,以及消息认证和加密等。
SSL记录协议主要操作流程如图8-3所示。
图8-3 SSL记录协议的操作流程
图中的五个操作简单介绍如下:
1)每个上层应用数据被分成214字节或更小的数据块。记录中包含类型、版本号、长度和数据字段。
2)压缩是可选的,并且是无损压缩,压缩后内容长度的增加不能超过1024字节。
3)在压缩数据上计算消息认证MAC。
4)对压缩数据及MAC进行加密。
5)增加SSL记录。