ssl安全协议doc.docx
《ssl安全协议doc.docx》由会员分享,可在线阅读,更多相关《ssl安全协议doc.docx(13页珍藏版)》请在冰豆网上搜索。
![ssl安全协议doc.docx](https://file1.bdocx.com/fileroot1/2022-12/10/674b7cd1-baff-4725-b92b-06a9802fa85d/674b7cd1-baff-4725-b92b-06a9802fa85d1.gif)
ssl安全协议doc
安全协议工程
题目:
SSL协议分析
系别:
专业:
学生姓名:
学号:
指导教师:
2011年6月23日
摘要
目前,随着Internet的快速发展,人们在使用互联网的场地越来越多,范围越来越广泛,互联网上的信息安全越来越引起人们的关注。
特别是近年来网上银行、电子商务和电子政务的快速发展,如何保证用户的传输信息,特别是交易信息的保密性、完整性已成为迫切需要解决的问题。
为此人们研究越来越多的措施来保护用户的信息,所以有了很多的安全协议,其中安全套接层协议(SecuritySocketLayerProtocol,简称SSL)是Internet上进行保密通信的一个安全协议。
关键词:
Internet;信息安全;保密性;完整性;安全套阶层协议
引言…………………………………………………………………4
1.SSL简介…………………………………………………………4
2.SSL工作原理……………………………………………………4
3.SSL协议提供的服务………………………………………………5
4.SSL记录层协议……………………………………………………5
5.SSL握手协议………………………………………………………7
6.SSL的应用…………………………………………………………10
7.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个字节。
当数据头长度是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记录协议还可以执行压缩功能。
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中的握手协议,将公钥加密技术与对称密钥加密技术的应用有效、巧妙地结合在一起,有机地组成了互联网(或其他网络)上信息安全传输的通道。
这种信息安全通道,有其实用价值,比如,利用对称加密技术比公钥加密技术对大容量信息的加/解密速度要快,而公钥技术却提供了更好的身份认证技术。
SSL的握手协议可以非常有效地让客户与服务器之间完成身份认证。
通过SSL客户端与服务器传送自己的数字证书,互验合法性,特别是验证服务器的合法性,可以有效地防止互联网上虚假网站的网上钓鱼事件;同时,服务器端也可以严格验证客户端的真实身份。
其作用如下:
①客户端的浏览器向服务器传送客户端SSL协议的版本号、加密算法的种类、产生的随机数,以及其他服务器和客户端之间通信所需要的各种信息。
②服务器向客户端传送SSL协议的版本号、加密算法的种类、随机数及其他相关信息,同时,服务器还将向客户端传送自己的证书。
③客户利用服务器传过来的信息验证服务器的合法性。
服务器的合法性包括:
证书是否过期,发行服务器证书的CA是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。
如果合法性验证没有通过,则通信将断开;如果合法性验证通过,则将继续进行第④步。
④客户端随机产生一个用于后面通信的“对称密码”,然后用服务器的公钥(从步骤②中服务器的证书中获得)对其加密,再将加密后的“预主密码”传给服务器。
⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户则可以建立一个随机数,然后对其进行数字签名,将这个含有签名的随机数和客户自己的证书,以及加密过的“预主密码”一起传给服务器。
⑥如果服务器要求客户的身份认证,服务器则必须检验客户证书和签名随机数的合法性。
具体的合法性验证包括:
客户的证书使用日期是否有效,为客户提供证书的CA是否可靠,发行CA的公钥能否正确解开客户证书的发行CA的数字签名,检查客户的证书是否在证书撤销列表(CRL)中。
检验如果没有通过,则通信立刻中断;如果验证通过,则服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通信密码(客户端也将通过同样的方法产生相同的主通信密码)。
⑦服务器和客户端用相同的主密码,即“通话密码”,一个对称密钥用于SSL协议的安全数据通信的加/解密通信。
同时,在SSL通信过程中还要完成数据通信的完整性,以防止数据通信中的任何变化。
⑧客户端向服务器端发出信息,指明后面的数据通信将使用步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。
⑨服务器向客户端发出信息,指明后面的数据通信将使用步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
⑩SSL的握手部分结束,SSL安全通道的数据通信开始,客户和服务器开始使用相同的对称密钥进行数据通信,同时进行通信完整性的检验。
证书各部分的含义
Version证书版本号,不同版本的证书格式不同
SerialNumber序列号,同一身份验证机构签发的证书序列号唯一
AlgorithmIdentifier签名算法,包括必要的参数Issuer身份验证机构的标识信息
PeriodofValidity有效期
Subject证书持有人的标识信息
Subject’sPublicKey证书持有人的公钥
Signature身份验证机构对证书的签名
证书的格式 认证中心所发放的证书均遵循X.509V3标准,其基本格式如下:
证书版本号(CertificateFormatVersion)含义:
用来指定证书格式采用的X.509版本号。
证书序列号(CertificateSerialNumber)含义:
用来指定证书的唯一序列号,以标识CA发出的所有公钥证书。
签名(Signature)算法标识(AlgorithmIdentifier)含义:
用来指定CA签发证书所用的签名算法。
签发此证书的CA名称(Issuer)含义:
用来指定签发证书的CA的X.500唯一名称(DN,DistinguishedName)。
证书有效期(ValidityPeriod)起始日期(notBefore)终止日期(notAfter)含义:
用来指定证书起始日期和终止日期。
用户名称(Subject)含义:
用来指定证书用户的X.500唯一名称(DN,DistinguishedName)。
用户公钥信息(SubjectPublicKeyInformation)算法(algorithm)算法标识(Algorithm Identifier)用户公钥(subject Public Key)含义:
用来标识公钥使用的算法,并包含公钥本身。
证书扩充部分(扩展域)(Extensions)含义:
用来指定额外信息。
X.509V3证书的扩充部分(扩展域)及实现方法如下:
CA的公钥标识(Authority Key Identifier)公钥标识(SET未使用)(Key Identifier)签发证书者证书的签发者的甄别名(Certificate Issuer)签发证书者证书的序列号(CertificateSerialNumber)
X.509V3证书的扩充部分(扩展域)及实现CA的公钥标识(Authority Key Identifier)公钥标识(SET未使用)(Key Identifier)签发证书者证书的签发者的甄别名(Certificat签发证书者证书的序列号(CertificateSerialN含义:
CA签名证书所用的密钥对的唯一标识用户的公钥标识(Subject Key Identifier) 含义:
用来标识与证书中公钥相关的特定密钥进行解密。
证书中的公钥用途(Key Usage)含义:
用来指定公钥用途。
用户的私钥有效期(Private Key Usage Period)起始日期(Note Before)终止日期(Note After)含义:
用来指定用户签名私钥的起始日期和终止日期。
CA承认的证书政策列表(CertificatePolicies)含义:
用来指定用户证书所适用的政策,证书政策可由对象标识符表示。
用户的代用(Substitutional Name)含义:
用来指定用户的代用名。
CA的代用名(Issuer Alt Name)含义:
用来指定CA的代用名。
基本制约(Basic Constraints)含义:
用来表明证书用户是最终用户还是CA。
在SET系统中有一些私有扩充部分(扩展域)Hashed Root Key含义:
只在根证书中使用,用于证书更新时进行回溯。
证书类型(Certificate Type)含义:
用来区别不同的实体。
该项是必选的。
商户数据(Merchant Data)含义:
包含支付网关需要的所有商户信息。
持卡人证书需求(Card Cert Required)含义:
显示支付网关是否支持与没有证书的持卡人进行交易。
SET扩展(SETExtensions)含义:
列出支付网关支持的支付命令的SET信息扩展。
CRL数据定义版本(Version)含义:
显示CRL的版本号。
CRL的签发者(Issuer)含义:
指明签发CRL的CA的甄别名。
CRL发布时间(this Update)预计下一个CRL更新时间(Next Update)撤销证书信息目录(Revoked Certificates)CRL扩展(CRL Extension)CA的公钥标识(Authority Key Identifier)CRL号(CRL Number)
6.SSL的应用
1.单向认证:
又称匿名SSL连接,这是SSL安全连接的最基本模式,它便于使用,主要的浏览器都支持这种方式,适合单向数据安全传输应用。
在这种模式下客户端没有数字证书,只是服务器端具有证书,以不在认用户访问的是自己要访问的站点。
典型的应用就是用户进行网站注册时彩ID+口令的匿名认证,过去网上银行的所谓“大众版”就是这种?
?
因子认证。
2.双方认证:
是对等的安全认证,这种模式通信双方都可以发起和接收SSL连接请求。
通信双方可以利用安全应用程序(控键)或安全代理软件,前者一般适合于B/S结构,而后者适用于C/S结构,安全代理相当于一个加密/解密的网关,这种模式双方皆需安装证书,进行双向认证。
这就是网上银行的B2B的专业版等应用。
3.电子商务中的应用。
电子商务与网上银行交易不同,因为有商户参加,形成客户――商家――银行,两次点对点的SSL连接。
客户,商家,银行,都必须具证书,两次点对点的双向认证,如图所示。
7.SSL协议的安全性分析
SSL协议所采用的加密算法和认证算法使它具有较高的安全性,但也存在一些问题。
1.SSL协议采用的加密算法和认证算法
(1)加密算法和会话密钥
SSLV2协议和SSLV3协议支持的加密算法包括RC4、RC2、IDEA和DES,
加密一般分三类:
对称加密、非对称加密和单向散列函数;
对称加密:
分组密码(DES,RC5,IDEA)和序列密码(RC4),其中CBC(cipherblockchaining)是分组密码的一类,是指一个明文分组在被加密之前要与前一个的密文分组进行异或运算,当加密算法用于此模式的时候除密钥外,还需协商一个初始化向量(IV),这个IV没有实际意义,只是在第一次计算的时候需要用到而已,采用这种模式的话安全性会有所提高;
单向散列函数:
由于信道的破坏,一个通用的方法就是加入校验码。
单向散列函数可用于此用途,一个典型的例子是MD5,它产生128位的摘要,在现实中用的更多的是安全散列算法(SHA),SHA的早期版本存在问题,目前用的实际是SHA-1,它可以产生160位的摘要,因此比128位散列更能有效抵抗穷举攻击。
由于单向散列的算法是公开的,所以其它人可以先改动原文,再生成另外一份摘要,解决这个问题的方法可以通过HMAC,它包含了一个密钥,只有拥有相同密钥的人才能鉴别这个散列
(2)认证算法
认证算法采用X.509电子证书标准,是通过RSA算法进行数字签名来实现的。
服务器的认证
在上述的两对密钥中,服务器方的写密钥和客户方的读密钥、客户方的写密钥和服务器方的读密钥分别是一对私有、公有密钥。
对服务器进行认证时,只有用正确的服务器方写密钥加密,ClientHello消息形成的数字签名才能被客户正确地解密,从而验证服务器的身份。
若通信双方不需要新的密钥,则它们各自所拥有的密钥已经符合上述条件。
若通信双方需要新的密钥,首先服务器方在ServerHello消息中的服务器证书中提供了服务器的公有密钥,服务器用其私有密钥才能正确地解密由客户方使用服务器的公有密钥加密的MASTER-KEY,从而获得服务器方的读密钥和写密钥。
客户的认证
同上,只有用正确的客户方写密钥加密的内容才能被服务器方用其读密钥正确地解开。
当客户收到服务器方发出的REQUEST-CERTIFICATE消息时,客户首先使用M