SSL协议的安全性研究
1 引言
随着计算机网络技术的飞速发展,信息时代的人们对Internet的依赖性越来越大。当今时代,电子商务和电子政务的应用越来越广泛,然而网络安全问题严重束缚了计算机网络的进一步应用。安全套接层SSL(Secure Sockets Layer)协议是由Netscape公司设计开发的安全协议,主要用于加强应用程序之间的数据的安全性。SSL协议是基于Web应用的安全协议,它采用了RSA算法、RC4—128、RC一128、三重DES算法和MD5等加密技术实现两个应用层之间的机密性、可靠性和数据完整性,并采用X.509数字证书实现鉴别,其加密的目的是建立一个安全的通讯通道,而且该通道可在服务器和客户机两端同时实现支持。
2 SSL协议简述及相关概念
SSL协议用来建立一个在客户和服务器之间安全的TCP连接,尤其可被用来认证服务器,可选地认证客户,执行密钥交换,提供消息认证,而且还可以完成在TCP协议之上的任意应用协议数据的完整性和隐蔽性服务。SSL为在Internet上安全地传送数据提供了一介加密通道,建立一个安全连接,主要实现以下工作:加密网络上客户端和服务器相互发送的信息;验证信息在传送过程是否安全完整:运用非对称密钥算法验证服务器;验证客户身份;交换应用层数据。
2.1 SSL---安全套接层协议。
是由Netscape设计的一种开放性协议,它提供了一种介于应用层和传输层之间的数据安全套接层协议机制。SSL位于TCP/IP协议与各种应用层协议之间,为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。其目的是为客户端(浏览器)到服务端之间的信息传输构建一个加密通道,此协议是与操作系统和Web服务器无关的。
2.2 SSL协议可分两层:
2.2.1 SSL记录协议:
它建立在可靠的传输协议(如TCP)之上,位于SSL协议的底层,为高层协议提供数据封装、压缩、加密等基本功能的支持。在SSL中,所有数据被封装在记录中,SSL握手协议中的报文,要求必须放在一个SSL记录协议层的记录里,但应用层协议的报文,允许占用多个SSL 记录来传送
(1) SSL记录头格式
SSL记录头可以是2个或3个字节长的编码。SSL记录头包含的信息有记录头的长度、记录数据的长度,以及记录数据中是否有填充数据,其中填充数据是在使用块加密
(blocken-cryption)算法时,填充实际数据,使其长度恰好是块的整数倍。最高位为1时,不含有填充数据,记录头的长度为2个字节,记录数据的最大长度为32767个字节;最高位为0时,含有填充数据,记录头的长度为3个字节,记录数据的最大长度为16383个字节。
SSL记录层结构如图1所示。
图1 SSL记录层结构
当数据头长度是3个字节时,次高位有特殊的含义。次高位为1时,表示所传输的记录是普通的数据记录;次高位为0时,表示所传输的记录是安全空白记录(被保留用于将来协议的扩展)。
记录头中数据长度编码不包括数据头所占用的字节长度。记录头长度为2个字节时,记录长度的计算公式为:记录长度=((Byte[0]&0x7f)<<8)|Byte[1]。其中Byte[0]、Byte[1]分别表示传输的第一个、第二个字节。
记录头长度为3个字节时,记录长度的计算公式是:记录长度=((Byte[0]&0x3f<<8))Byte[1]。其中Byte[0]、Byte[1]的含义同上。判断是否是安全空白记录的计算公式是:(Byte[0]&0x40)!=0。填充数据的长度为传输的第三个字节。
(2) SSL记录数据格式
SSL记录数据部分有3个分量:MAC-DATA、ACTUAL-DATA和PADDING-DATA。
MAC数据用于数据完整性检查。计算MAC所用的散列函数由握手协议中的
CIPHER-CHOICE消息确定。若使用MD2和MD5算法,则MAC数据长度是16个字节。MAC 的计算公式为:MAC数据=Hash[密钥, 实际数据, 填充数据, 序号]。
当会话的客户端发送数据时,密钥是客户的写密钥(服务器用读密钥来验证MAC数据);而当会话的客户端接收数据时,密钥是客户的读密钥(服务器用写密钥来产生MAC数据)。序号是一个可以被发送和接收双方递增的计数器,每个通信方向都会建立一对计数器,分别被发送者和接收者拥有。计数器有32位,计数值循环使用,每发送一个记录,计数值递增一次,序号的初始值为0。
ACTUAL-DATA是被传送的应用数据,PADDING-DATA是当采用分组码时所需要的填充数据,在明文传送下只有第二项。
(3) 记录协议的作用
记录协议层封装了高层协议的数据,协议数据采用SSL握手协议中协商好的加密算法及MAC算法来保护。记录协议传送的数据包括一个序列号,这样就可以检测消息的丢失、改动或
重放。如果协商好了压缩算法,那么SSL记录协议还可以执行压缩功能。
SSL V3版的高层由记录传递的消息组成,这包括改变密码规范协议、警报协议和握手协议。改变密码规范协议指明对使用的密码规范的改变,协议中还包括了一个用当前密码规范加密的单独消息。客户和服务器都要发送改变密码规范消息来表明它们准备使用一个新的密码规范和密钥。警报协议传送与事件相关的消息,包括事件严重性及事件描述。这里的事件主要是指错误情形,如错误的MAC码、证书过期或是非法参数。警报协议也用于共享有关预计连接终止的信息。
2.2.2 SSL握手协议:
SSL中最复杂的部分,它建立在SSL记录协议之上,用于在实际的数据传输开始前,在会话状态下产生所需要的各种安全参数,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
2.3 SSL协议的作用
SSL是提供Internet上的通信隐私性的安全协议。该协议允许客户端/服务器应用之间进行防窃听、防消息篡改及防消息伪造的安全的通信。TCP/IP是整个Internet数据传输和通信所使用的最基本的控制协议,在它之上还有HTTP(Hypertext Transfer Protocol)、LDAP (Lightweight Directory Access Protoco1)、IMAP(Internet Messaging Access Protocol)等应用层传输协议。而SSL是位于TCP/IP和各种应用层协议之间的一种数据安全协议(如图2所示)。SSL协议可以有效地避免网上信息的偷听、篡改及信息的伪造。
图2 SSL协议的位置
SSL标准的关键是要解决以下几个问题。
(1)客户对服务器的身份确认:SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性(检验服务器的证书和ID的合法性)。对于用户服务器身份的确认与否是非常重要的,因为客户可能向服务器发送自己的信用卡密码。
(2)服务器对客户的身份确认:允许SSL服务器确认客户的身份,SSL协议允许客户服务器的软件通过公钥技术和可信赖的证书来确认客户的身份(客户的证书)。对于服务器客户身份的确认与否是非常重要的,因为网上银行可能要向客户发送机密的金融信息。
(3)建立起服务器和客户之间安全的数据通道:SSL要求客户和服务器之间所有的发送数据都被发送端加密,所有的接收数据都被接收端解密,这样才能提供一个高水平的安全保证。同时SSL协议会在传输过程中检查数据是否被中途修改。
2.4 SSL协议的目标
按它们的优先级,SSL协议的目标如下。
(1)在通信双方之间利用加密的SSL消息建立安全的连接。
(2)互操作性。通信双方的程序是独立的,即一方可以在不知道对方程序编码的情况下,