当前位置:文档之家› 网络安全协议课程设计报告SSL协议

网络安全协议课程设计报告SSL协议

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)互操作性。

通信双方的程序是独立的,即一方可以在不知道对方程序编码的情况下,利用SSL成功地交换加密参数。

注意:并不是所有的SSL实例(甚至在同一应用程序内)都可以成功地连接。

例如,如果服务器支持一特定的硬件令牌(token),而客户端不能访问此令牌,则连接不会成功。

(3)可扩展性。

SSL寻求提供一种框架结构,在此框架结构中,在不对协议进行大的修改的情况下,可以在必要时加入新的公钥算法和单钥算法。

这样做还可以实现两个子目标:—避免产生新协议的需要,因而进一步避免了产生新的不足的可能性;—避免了实现一完整的安全协议的需要。

相对于有效性加密操作,尤其是公钥加密,对CPU来说是一种很耗时的事,因此SSL协议引入一个可选的对话缓存(Cache)来减少从头开始的连接数目。

同时,它还注意减少网络的活动。

3 SSL协议工作原理SSL协议用来建立一个在客户和服务器之间安全的TCP连接,尤其可被用来认证服务器,可选地认证客户,执行密钥交换,提供消息认证,而且还可以完成在TCP协议之上的任意应用协议数据的完整性和隐蔽性服务。

SSL为在Internet上安全地传送数据提供了一介加密通道,建立一个安全连接,主要实现以下工作:加密网络上客户端和服务器相互发送的信息;验证信息在传送过程是否安全完整:运用非对称密钥算法验证服务器;验证客户身份;交换应用层数据。

基本步骤如下:(1)客户端服务器发送一个开始信息以便开始一个新的会话连接,协商传送加密算法。

例如:告知服务端,客户端自己的对称加密算法有DES、RC5,自己的密钥交换算法有RSA和DH,摘要算法有MD5和SHA。

(2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的信息时将包含生成主密钥所需的信息,并发送服务器数字证书。

例如:告知客户端,服务器就使用DES-RSA-MD5这对组合进行通讯,为了证明“我”确实是服务器,现在就发送“我”的数字证书给客户端,以便于验证服务器的身份。

(3)客户端根据收到的服务器响应信息,检查服务器的数字证书是否正确,通过CA机构颁发的证书及CA的公钥对服务器证书进行解密,获得服务器公钥,然后产生一个主密钥,并用服务器的公钥加密后传给服务器。

例如:服务器,“我”已经确认了你的身份,现在把我们本次通讯中的密钥发送给你。

(4)服务器使用自己的私钥解密该消息,然后生成会话密钥,接着使用服务器公钥加密,再发送给客户端。

这样,服务器和客户端都拥有了会话密钥。

例如:客户端,“我”已经获取了密钥,我们可以开始通信了。

服务器和客户端使用会话密钥来加密和解密传输的数据。

它们之问的数据传输的是对称加密。

一般情况下,当客户端是保密信息的传递者时,不需要数字证书验证自己身份的真实性,如电子银行的应用,客户需要将自己的账号和密码发送给银行,因此银行的服务器需要安装数字证书来表明自己身份的有效性。

但在某些B2B应用中,服务器端也需要对客户端的身份进行验证,这时客户端也需要安装数字证书以保证通讯时服务器可以辨别出客户端的身份,验证过程类似于服务器身份的验证过程。

4 SSL握手过程SSL用公钥加密算法使服务器端在客户端得到验证,并传递对称密钥。

相关主题