第六章安全套接层协议SSL主要内容SSL概述SSL体系结构与协议SSL协议的安全性分析SSL的应用目前国际上流行的电子商务所采用的协议主要有:安全套接层协议(SecureSocketsLayer,SSL)基于信用卡交易的安全电子协议(SecureElectronicTransaction,SET)安全HTTP(S-HTTP)协议安全电子邮件协议(PEM、S/MIME等)用于公对公交易的InternetEDI等。此外在Internet网上利用Ipsec标准建设虚拟专用网,利用VPN为企业、政府提供一些基本的安全服务,6.1SSL概述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协议可用于保护正常运行于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协议实现的六步骤⑴接通阶段:客户机通过网络向服务器打招呼,服务器回应;⑵密码交换阶段:客户机与服务器之间交换双方认可的密码,一般选用RSA密码算法;⑶会谈密码阶段:客户机器与服务器间产生彼此交谈的会谈密码;⑷检验阶段:客户机检验服务器取得的密码;⑸客户认证阶段:服务器验证客户机的可信度;⑹结束阶段:客户机与服务器之间相互交换结束的信息。6.1.3SSL协议与电子商务SSL提供了用于启动TCP/IP连接的安全性“信号交换”。这种信号交换导致客户和服务器同意将使用的安全性级别,并履行连接的任何身份验证要求。通过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证。在用数字证书对双方的身份验证后,双方就可以用保密密钥进行安全的会话了。SSL证书保障在线服务器的安全服务器身份验证——防假冒网络信息发送内容加密——防偷窥网络信息发送完整性检测——防删节网络信息发送内容修改提醒——防篡改应用数据改变密码套,结束握手送出客户端证书送出服务器证书,请求客户端证书SSL流程浏览器Web服务器SSL安全通道客户端证书服务器证书ClienthelloServerhelloServerCertificateCertificateRequestServerKeyExchangeClientCertificateClientKeyExchangeCertificateVerifyChangeCipherSpecFinishedChangeCipherSpecFinishedApplicationDataApplicationData建立协议版本、会话ID、交换随机数SSL服务器证书工作原理介绍第一步:身份验证发证机构—CA服务器身份证你是谁?我是卓越服务器身份验证???服务器卓越服务器SSL服务器证书工作原理介绍第二步:发明密语规则密语规则发明规则A1、2、35、8、9原文密语SSL服务器证书工作原理介绍第三步:密语规则共享规则A信息保险箱打开保险箱规则A获得规则SSL服务器证书工作原理介绍第四步:进行安全通信规则A规则A1、2、3原文1、2、3原文5、8、9无意义文字SSL当初并不是为支持电子商务而设计的,所以在电子商务系统的应用中还存在很多弊端:SSL是一个面向连接的协议,在涉及多方的电子交易中,只能提供交易中客户与服务器间的双方认证,而电子商务往往是客户、网站、银行三家协作完成,SSL协议并不能协调各方间的安全传输和信任关系;购货时客户要输入通信地址,这样将可能使得客户收到大量垃圾信件。SSL协议运行的基点是商家对客户信息保密的承诺。但在上述流程中SSL协议有利于商家而不利于客户。客户的信息首先传到商家,商家阅读后再传到银行,这样,客户资料的安全性便受到威胁。随着电子商务参与方的迅速增加,认证问题越来越突出,SSL协议的缺点完全暴露出来。SSL协议逐渐被新的SET协议所取代。目前我国开发的电子支付系统,无论是中国银行的长城卡电子支付系统,还是上海长途电信局的网上支付系统,均没有采用SSL协议,主要原因就是无法保证客户资金的安全性。6.1.4SSL协议的分层结构SSL的设计概念是希望使用TCP来提供一个可靠的端对端的安全性服务。SSL并不是单一个协议,而是由二层协议来组成SSL协议具有两层结构:其底层是SSL记录协议层(SSLRecordProtocolLayer),简称记录层。其高层是SSL握手协议层(SSLHandshakeProtocolLayer),简称握手层.应用层协议(HTTP、Telnet、FTP、SMTP等)SSL握手协议(HandshakeProtocol)SSL记录协议(RecordProtocol)TCP协议IP协议SSL协议图6.2SSL协议的分层结构SSL协议定义了两个通信主体:客户(client)和服务器(server)。其中,客户是协议的发起者。在客户/服务器结构中,应用层从请求服务和提供服务的角度定义客户和服务器,而SSL协议则从建立加密参数的过程中所扮演的角色来定义客户和服务器。SSL握手协议包含四个阶段:第一个阶段建立安全能力;第二个阶段服务器鉴别和密钥交换;第三个阶段客户鉴别(可选的)和密钥交换;第四个阶段完成握手协议。SSL的两个重要概念SSL连接(connection)一个连接是一个提供一种合适类型服务的传输(OSI分层的定义)。SSL的连接是点对点的关系。连接是暂时的,每一个连接和一个会话关联。SSL会话(session)一个SSL会话是在客户与服务器之间的一个关联。会话由HandshakeProtocol创建。会话定义了一组可供多个连接共享的密码安全参数。会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价。会话连接1连接1连接2连接2…………连接n连接n图6.3SSL的会话与连接在任意一对通信主体之间,可以有多个安全连接。会话状态参数Sessionidentifier:服务器选择的一个任意字节序列,用以标识一个活动的或可激活的会话状态。PeerCertificate:标识服务器的X.509.v3证书。可为空。Compressionmethod:加密前进行数据压缩的算法。Cipherspec:指明数据体加密的算法(无,或DES等)以及散列算法(如MD5或SHA-1)用以计算MAC。还包括其它参数,如散列长度。Mastersecret:48位秘密,在client与server之间共享。Isresumable:一个标志,指明该会话是否能用于产生一个新连接。连接状态Serverandclientrandom:server和client为每一个连接所选择的字节序号。ServerwriteMACsecret:一个密钥,用来对server送出的数据进行MAC操作。ClientwriteMACsecret:一个密钥,用来对client送出的数据进行MAC操作。Serverwritekey:用于server进行数据加密,client进行数据解密的对称保密密钥;连接状态Clientwritekey:用于client进行数据加密,server进行数据解密的对称保密密钥;Initializationvectors:当数据加密采用CBC方式时,每一个密钥保持一个IV。该字段首先由SSLHandshakeProtocol产生,以后保留每次最后的密文数据块作为IV。Sequencenumber:每一方为每一个连接的数据发送与接收维护单独的顺序号。当一方发送或接收一个改变的cipherspecmessage时,序号置为0,最大264-1。6.2SSL握手协议(Handshakeprotocol)主要用来让客户端及服务器确认彼此的身分。为了保护SSL记录封包中传送的数据,Handshake协议还能协助双方选择连接时所会使用的加密算法、MAC算法、及相关密钥。在传送应用程序的数据前,必须使用Handshake协议来完成上述事项。Handshake由一些客户与服务器交换的消息所构成,每一个消息都含有以下三个字段:类型(Type),1字节:表示消息的类型,总共有十种。在表二中列出了这些已经定义的消息种类。长度(Length),3字节:消息的位组长度。内容(Content),≧1个字节:与此消息有关的参数,表6.1列出所有可能的参数。SSL握手协议使用的消息第一阶段:建立起安全协商客户发送一个client_hello消息,包括以下参数:版本、随机数(32位时间戳+28字节随机序列)、会话ID、客户支持的密码算法列表(CipherSuite)、客户支持的压缩方法列表,然后,客户等待服务器的server_hello消息服务器发送server_hello消息,参数:客户建议的低版本以及服务器支持的最高版本、服务器产生的随机数、会话ID、服务器从客户建议的密码算法中挑出一套、服务器从客户建议的压缩方法中挑出一个.CipherSuite密码套件第一个元素指定了密钥交换的方法,SSL支持以下一些方法: