安全协议工程题目:SSL协议分析系别:专业:学生姓名:学号:指导教师:2011年6月23日摘要目前,随着Internet的快速发展,人们在使用互联网的场地越来越多,范围越来越广泛,互联网上的信息安全越来越引起人们的关注。特别是近年来网上银行、电子商务和电子政务的快速发展,如何保证用户的传输信息,特别是交易信息的保密性、完整性已成为迫切需要解决的问题。为此人们研究越来越多的措施来保护用户的信息,所以有了很多的安全协议,其中安全套接层协议(SecuritySocketLayerProtocol,简称SSL)是Internet上进行保密通信的一个安全协议。关键词:Internet;信息安全;保密性;完整性;安全套阶层协议目录引言…………………………………………………………………41.SSL简介…………………………………………………………42.SSL工作原理……………………………………………………43.SSL协议提供的服务………………………………………………54.SSL记录层协议……………………………………………………55.SSL握手协议………………………………………………………76.SSL的应用…………………………………………………………107.SSL的安全性分析…………………………………………………11引言网络的迅速发展,逐渐普及到各个领域,但是有利也有弊,发展越快,出现的问题也就越多。而最终的的还是信息方面的安全保证,特别是在传输过程中,为此诸多杰出的人员也加入到这个研究中,研究怎么样最大程度保护信息的安全传输。传输层在TCP/IP协议族中具有重要地位,它加强和弥补了IP层的服务。从服务类型看,IP层是点到点的,而传输层提供端到端的服务;从服务质量看,传输层提高了可靠性,使得高层应用不必关注可靠性问题,而仅需解决与自身应用功能相关的问题;从协议依赖关系看,应用层协议直接构建于传输层之上。应用层协议直接与用户交互,因此它们的安全性也会受到最直接的关注。举个直观的例子,电子商务系统通常采用B/S结构,用户通过浏览器访问电子商务网站、购买商品并进行网上支付。在这类应用中,机密性、完整性、服务器身份认证、不可否认性和可用性都是用户所需的。此外,在进行文件和邮件传输时,用户也有类似的安全需求。遗憾的是,常用的HTTP、FTP等协议都无法满足这些安全需求。虽然HTTP、FTP和Telnet等协议提供了基于口令的身份认证机制,但在互联网这个开放的环境中,这种简单的保护显得微不足道。改变这种现状的途径之一就是为每个应用层协议都增加安全功能。对于应用设计者而言,这是一个并不轻松的工作;对于应用使用者而言,部署多个安全应用时,势必会消耗大量的系统资源。另一种途径就是从传输层人手。既然高层应用都是基于传输层的,那么增强这个层次的安全性显得更具备通用性。它可以把高层应用从安全性这个复杂的命题中解放出来,使用者也可用较小的开销获得所需的安全服务。1.SSL简介SSL和TLS,它们分别是安全套接层(SecureSocketLayer)和传输层安全(TransportLayerSecurity)的缩写,是为网络通信提供安全及数据完整性的一种安全协议TLS与SSL,在传输层对网络连接进行加密。SSL首先由网景公司提出,最初是为了保护Web安全,最终却为提高传输层安全提供了一个通用的解决方案。在SSL获得了广泛应用之后,IETF斟于SSLv3,制定TLS标准。TLSv1与SSLv3几乎完全一致。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSLRecordProtocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSLHandshakeProtocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。2.SSL工作原理SSL的工作原理:当一个使用者在Web上用Netscape浏览器漫游时,浏览器利用HTTP协议与Web服务器沟通。例如,浏览器发出一个HTTPGET命令给服务器,想下载一个首页的HTML档案,而服务器会将档案的内容传送给浏览器来响应。GET这个命令的文字和HTML档案的文字会通过会话层(Socket)的连接来传送,Socket使两台远程的计算机能利用Internet来通话。通过SSL,资料在传送出去之前就自动被加密了,它会在接收端被解密。对没有解密钥的人来说,其中的资料是无法阅读的。SSL采用TCP作为传输协议提供数据的可靠传送和接收。SSL工作在Socket层上,因此独立于更高层应用,可为更高层协议,如Telnet、FTP和HTTP提供安全业务。SSL提供的安全业务和TCP层一样,采用了公开密钥和私人密钥两种加密体制对Web服务器和客户机(选项)的通信提供保密性、数据完整性和认证。在建立连接过程中采用公开密钥,在会话过程中使用私人密钥。加密的类型和强度则在两端之间建立连接的过程中判断决定。在所有情况下,服务器通过以下方法向客户机证实自身:给出包含公开密钥的、可验证的证明;演示它能对用此公开密钥加密的报文进行解密。为了支持客户机,每个客户机都要拥有一对密钥,这要求在Internet上通过Netscape分配。由于Internet中的服务器数远少于客户机数,因此能否处理签字及密钥管理的业务量是很重要的,并且与客户联系比给商家以同样保证更重要。3.SSL协议提供的服务(1)用户和服务器的合法性认证使得用户和服务器能够确信数据将被发送到正确的客户机和服务器上。客户机和服务器都有各自的识别号,由公开密钥编排。为了验证用户,安全套接层协议要求在握手交换数据中做数字认证,以此来确保用户的合法性。(2)加密数据以隐藏被传送的数据安全套接层协议采用的加密技术既有对称密钥,也有公开密钥。具体来说,就是客户机与服务器交换数据之前,先交换SSL初始握手信息。在SSL握手信息中采用了各种加密技术,以保证其机密性和数据的完整性,并且经数字证书鉴别,这样就可以防止非法用户破译。(3)维护数据的完整性安全套接层协议采用密码杂凑函数和机密共享的方法,提供完整信息性的服务,来建立客户机与服务器之间的安全通道,使所有经过安全套接层协议处理的业务,在传输过程中都能完整、准确无误地到达目的地。4.SSL记录层协议SSL记录层协议限定了所有发送和接收数据的打包,它提供了通信、身份认证功能,它是一个面向连接的可靠传输协议,如TCP/IP提供安全保护。在SSL中所有数据被封装在记录中。一个记录由两部分组成:记录头和非零长度的数据。记录头可以是2字节或3字节(当有填充数据时使用)。SSL握手层协议的报文要求必须放在一个SSL记录层的记录里,但应用层协议的报文允许占用多个SSL记录来传送。1.SSL记录头格式SSL记录头可以是2个或3个字节长的编码。SSL记录头包含的信息有记录头的长度、记录数据的长度,以及记录数据中是否有填充数据,其中填充数据是在使用块加密(blocken-cryption)算法时,填充实际数据,使其长度恰好是块的整数倍。最高位为1时,不含有填充数据,记录头的长度为2个字节,记录数据的最大长度为32767个字节;最高位为0时,含有填充数据,记录头的长度为3个字节,记录数据最长为16383个字节。2字节头记录当数据头长度是3个字节时,次高位有特殊的含义。次高位为1时,表示所传输的记录是普通的数据记录;次高位为0时,表示所传输的记录是安全空白记录(被保留用于将来协议的扩展)。记录头中数据长度编码不包括数据头所占用的字节长度。记录头长度为2个字节时,记录长度的计算公式为:记录长度?((Byte[0]&0x7f)8)|Byte[1]。其中Byte[0]、Byte[1]分别表示传输的第一个、第二个字节。记录头长度为3个字节时,记录长度的计算公式是:记录长((Byte[0]&0x3f8))|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记录协议还可记录头类型记录长度MAC数据3字节头记录记录头类型EScape位记录长度填充长度MAC数据填充数据SSL记录层结构以执行压缩功能。SSLV3版的高层由记录传递的消息组成,这包括改变密码规范协议、警报协议和握手协议。改变密码规范协议指明对使用的密码规范的改变,协议中还包括了一个用当前密码规范加密的单独消息。客户和服务器都要发送改变密码规范消息来表明它们准备使用一个新的密码规范和密钥。警报协议传送与事件相关的消息,包括事件严重性及事件描述。这里的事件主要是指错误情形,如错误的MAC码、证书过期或是非法参数。警报协议也用于共享有关预计连接终止的信息。5.SSL握手协议握手协议是关于客户和服务器如何协商它们在安全信道中要使用的安全参数,这些参数包括要采用的协议版本、加密算法和密钥。另外,客户要认证服务器,服务器则可以选择认证/不认证客户。PKI在客户—服务器认证阶段就开始运作了,这就是握手协议的实质。1.握手协议工作过程①客户(client)端发送ClientHello信息给服务器(Server)端,Server回答ServerHello。这个过程建立的安全参数包括协议版本、“佳话”标识、加密算法、压缩方法。另外,还交换两个随机数:C1ientHello.Random和ServerHello.Random,用于计算机“会话主密钥”。②Hello消息发送完后,Server端会发送它的证书和密钥交换信息。如果Server端被认证,它就会请求Client端的证书,在验证以后,Server就发送HelloDone消息,以示达成了握手协议,即双方握手接通。③Server请求Client证书时,Client要返回证书或返回没有证书的指示,这种情况用于单向认证,即客户端不装有证书。然后,Client发送密钥交换消息。④服务器Server此时要回答“握手完成”消息(Finished),以示完整的握手消息交换已经全部完成。⑤握手协议完成后,Client端即可与Server端传输应用加密数据,应用数据加密一般是用第②步密钥协商时确定的对称加/解密密钥,如DES、3DE等。目前,商用加密强度为128位,非对称密钥一般为RAS,商用强度为1024位,用于证书的验证。其中,带*号的命令是可选的,或依据状态而发的消息,而改变加密算法协议(ChangeCipherSpec)并不在实际的握手协议之中,它在第③步与第④步之间,用于Client与Server协商新的加密数据包时而改变原先的加密算法。2.握手协议的作用SSL中