您好,欢迎访问三七文档
安全套接层协议SSLSSL概述SSL体系结构与协议SSL协议的安全性分析SSL概述SSL协议是一种国际标准的加密及身份认证通信协议目标:SSL被设计用来使用TCP提供一个可靠的端到端安全服务,为两个通讯个体之间提供保密性和完整性(身份鉴别)。SSL/TLS协议1994年Netscape开发了SSL(SecureSocketLayer)安全套接层协议,专门用于保护Web通讯版本和历史1.0,不成熟2.0,基本上解决了Web通讯的安全问题Microsoft公司发布了PCT(PrivateCommunicationTechnology),并在IE中支持3.0,1996年发布,增加了一些算法,修改了一些缺陷TLS1.0(TransportLayerSecurity传输层安全协议,也被称为SSL3.1),1997年IETF发布了Draft,同时,Microsoft宣布放弃PCT,与Netscape一起支持TLS1.01999年,发布RFC2246(TheTLSProtocolv1.0)协议的使用https://与shttp://在网络上传输的敏感信息(如电子商务、金融业务中的信用卡号或PIN码等机密信息)都纷纷采用SSL来进行安全保护。SSL通过加密传输来确保数据的机密性,通过消息验证码(MessageAuthenticationCodes,MAC)机制来保护信息的完整性,通过数字证书来对发送和接收者的身份进行认证。IP/IPSecTCPLowerlayersIPTCPLowerlayersSSLOSIPSecSSL一个保证任何安装了安全套接字的客户和服务器间事务安全的协议,它涉及所有TCP/IP应用程序SSL在协议栈的位置TCPUDPIPSSLApplicationTCPUDPIPSSLApplicationSSL协议可用于保护正常运行于TCP之上的任何应用协议,如HTTP、FTP、SMTP或Telnet的通信,最常见的是用SSL来保护HTTP的通信。SSL协议的优点在于它是与应用层协议无关的。高层的应用协议(如HTTP、FTP、Telnet等)能透明地建立于SSL协议之上。SSL协议在应用层协议之前就已经完成加密算法、通信密钥的协商以及服务器的认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的安全性。SSL协议使用通信双方的客户证书以及CA根证书,允许客户/服务器应用以一种不能被偷听的方式通信,在通信双方间建立起了一条安全的、可信任的通信通道。该协议使用密钥对传送数据加密,许多网站都是通过这种协议从客户端接收信用卡编号等保密信息。它被认为是最安全的在线交易模式,SSL解决的问题(功能)客户对服务器的身份认证SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。服务器对客户的身份认证也可通过公钥技术和证书进行认证,也可通过用户名,password来认证。建立服务器与客户之间安全的数据通道SSL要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性SSL提供的安全服务用户和服务器的合法性认证usingX.509v3digitalcertificates传输数据的机密性usingoneofDES,TripleDES,IDEA,RC2,RC4,…传输数据的完整性usingMACwithMD5orSHA-1SSL协议的分层模型SSL协议是一个分层的协议,共有两层组成。处于SSL协议的底层的是SSL记录层协议(SSLRecordProtocol),它位于可靠的传输层协议(如TCP)之上,用于封装高层协议的数据。其中SSL握手协议(SSLHandshakeProtocol)允许服务方和客户方互相认证,并在应用层协议传送数据之前协商出一个加密算法和会话密钥。SSL体系结构密钥改变协议记录层协议握手协议告警协议SSLAPI握手层记录层ApplicationTCPSSL层SSL协议定义了两个通信主体:客户(client)和服务器(server)。其中,客户是协议的发起者。在客户/服务器结构中,应用层从请求服务和提供服务的角度定义客户和服务器,而SSL协议则从建立加密参数的过程中所扮演的角色来定义客户和服务器。SSL的两个重要概念SSL连接(connection)一个连接是一个提供一种合适类型服务的传输(OSI分层的定义)。SSL的连接是点对点的关系。连接是暂时的,每一个连接和一个会话关联。SSL会话(session)一个SSL会话是在客户与服务器之间的一个关联。会话由HandshakeProtocol创建。会话定义了一组可供多个连接共享的密码安全参数。会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价。会话连接1连接1连接2连接2…………连接n连接nSSL的会话与连接在任意一对通信主体之间,可以有多个安全连接。SSL体系结构密钥改变协议记录层协议握手协议告警协议SSLAPI握手层记录层ApplicationTCPSSL层主要工作流程四、SSL协议原理及工作流程1.网络连接建立,SSL客户端发送消息,消息中包含SSL版本号、密码设置、可实现的算法列表、随机数以及服务器使用SSL协议通信所需的其它信息;2.SSL服务器端回应消息,确定SSL版本号、加密算法和压缩算法;3.SSL服务器发出服务器数字证书;4.SSL客户端的身份认证是可选的;5.客户端生成预主密钥pre_master_secret,用服务器的公钥加密后返回服务器,服务器利用自己的私钥解密后得到会话密钥;6.若服务器要求客户认证,客户机会向服务器随加密的pre_master_secret一起发送签名的数据和客户自己的证书。7服务器若认证客户成功,使用私钥加密pre_master_secret,然后执行一系列步骤生成mastersecret。否则会话终止。7.客户机与服务器使用mastersecret生成会话密钥。该密钥是对称密钥,用于加密和解密在SSL会话期间交换的信息,检验信息完整性。8.CS:发送消息通知以后从客户机来的消息将用会话密钥加密。客户机然后发送一条独立的(加密的)消息表明握手的客户机部分已经完成。主要工作流程主要工作流程四、SSL协议原理及工作流程应用数据的传输过程为:1)应用程序把应用数据提交给本地的SSL;2)发送端的SSL根据需要:a)使用指定的压缩算法,压缩应用数据;b)使用散列算法对压缩后的数据计算散列值;c)把散列值和压缩数据一起用加密算法加密;3)密文通过网络传给对方;主要工作流程四、SSL协议原理及工作流程4)接收方的SSL用相同的加密算法对密文解密,得到明文;用相同的散列算法对明文中的应用数据散列;计算得到的散列值与明文中的散列值比较;5)如果一致,则明文有效,接收方的SSL把明文解压后得到应用数据上交给应用层。否则就丢弃数据,并向发方发出告警信息。严重的错误有可能引起再次的协商或连接中断。SSL握手协议的功能协商SSL协议的版本协商加密套件协商密钥参数验证通讯双方的身份(可选)建立SSL连接SSL握手协议的握手过程无客户端认证的全握手过程有客户端认证的全握手过程会话恢复过程无客户端认证的全握手过程InternetclientserverClientHelloServerHelloServerCertificate*ServerKeyExchange*ServerHelloDone*ClientKeyExchange[ChangeCipherSpec]Finished[ChangeCipherSpec]FinishedApplicationDataApplicationData客户端支持的最高版本,加密套件列表,压缩算法列表,客户端随机数,会话ID=0服务器同意的版本,加密套件,压缩算法,会话ID,服务器端随机数服务器的证书服务器端密钥交换的附加信息通知对方服务器端握手消息发完客户端产生的PreMasterKey密钥参数通知对方本端开始启用加密参数通知对方本端开始启用加密参数发送自己计算握手过程验证报文发送自己计算握手过程验证报文传送应用层数据认证服务器的身份1.从服务器端传送的证书中获得相关信息2.当天的时间是否在证书的合法期限内;3.签发证书的机关是否客户端信任的;4.签发证书的公钥是否符合签发者的数字签名5.证书中的服务器域名是否符合服务器自己真正的域名6.服务器被验证成功,客户继续进行握手过程。在服务器认证的情况下,客户机用服务器公用密钥加密pre_master_secret。只有相应的密钥能够正确地解密pre_master_secret,客户才确信:与公钥相关联的标识符事实上是服务器与客户机连接使用的。否则,服务器不能解密pre_master_secret、不能生成会话要求的对称密钥,会话将被终止。有客户端认证的全握手过程InternetclientserverClientHelloServerHelloServerCertificate*ServerKeyExchange*ServerHelloDone*ClientKeyExchange[ChangeCipherSpec]Finished[ChangeCipherSpec]FinishedApplicationDataApplicationData客户端的证书前面所有握手消息的数字签名传送应用层数据CertificateRequest*向客户端索要证书Certificate*CertificateVerify*认证客户端的身份1.客户端传送的证书中获得相关信息;2.用户的公钥是否符合用户的数字签名;3.当天的时间是否在证书的合法期限内;4.签发证书的机关是否服务器信任的;5.用户的证书是否在服务器的LDAP用户信息中;6.该用户是否有权限访问请求的服务器资源;在客户认证的情况下,客户机用客户的密钥加密一些随机数据,创建一个数字签名。只有在相应的密钥被使用时,客户证书中的公钥能够正确验证数字签名。否则,服务器不能验证数字签名,会话被终止。密钥协商的形象化比喻假设SSL客户端C与SSL服务器端S通信,加密后的消息放在方括号[]里,以区别于明文消息。双方的处理动作的说明用圆括号()括起。C:我想和你安全的通话,我这里的对称加密算法有DES,RC5,密钥交换算法有RSA和DH,摘要算法有MD5和SHA。S:我们用DES-RSA-SHA这对组合好了。这是我的证书,里面有我的名字和公钥,你拿去验证一下我的身份(把证书发给C)。C:(查看证书上S的名字,并通过手头已有的CA的证书验证S的证书的真实性,如果有误,发出警告并断开连接,这一步保证了公钥的真实性)(产生一份秘密消息——称为per_master_secret,以后用于对初始化向量和hmac进行加密,然后用S的公钥加密成为ClientKeyExchange)密钥协商的形象化比喻我生成了一份秘密消息,并用你的公钥加密传给你了(把ClientKeyExchange发给S)注意:下面我要用加密办法给你发消息了!(将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥)[我说完了]密钥协商的形象化比喻S:用自己的私钥对ClientKeyExchange解密,然后将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥,这时双方已经安全的协商出一套加密办法了)注意:我也要开始用加密办法给你发消息了![我说完了]C:[我的秘密是...]S:[其它人不会听到的...]密钥协商的形象化比喻会话恢复过程InternetclientserverClientHelloServerHello[ChangeCipherSpec]Finished[ChangeCipherSpec]FinishedApplicationDataApplicationData上次协商的版本、加密套件、压缩算法、客户端随机数,上次SSL连接的会话ID服务器同意的版
本文标题:SSL协议
链接地址:https://www.777doc.com/doc-4679151 .html