中国科技大学 薛开平 网络安全协议 chap5_第1页
中国科技大学 薛开平 网络安全协议 chap5_第2页
中国科技大学 薛开平 网络安全协议 chap5_第3页
中国科技大学 薛开平 网络安全协议 chap5_第4页
中国科技大学 薛开平 网络安全协议 chap5_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本章内容SSL协议族概述SSL体系结构与协议SSL协议的安全性分析SSL的应用参考文献:教科书第6章《网络安全》第19章,第二版,CharlieKaufman著5.1SSL协议族概述SSL(SecureSocketLayer)是一种在TCP协议之上为两个端实体(EndEntity)之间提供安全通道的协议。包括SSLv2、SSLv3、TLS协议LowerlayersIP/IPSecTCPLowerlayersIPTCPSSLOSIPSecSSLSSL协议族概述具有保护传输数据以及识别通信实体的功能。安全通道是透明的,独立于应用层;传输层采用TCP,提供可靠业务最先(1995年)是由Netscape公司开发的,并被广泛应用于Web等安全服务;Microsoft在SSLv2基础上修补部分安全问题,提出类似的协议PCT(PrivateCommunicationTechnology);再之后Netscape的彻底改进,得到SSLv3IETF制定的TLS(TransportLayerSecurity)版本最初目标是对Netscape公司的SSL和Microsoft公司的PCT两个协议的综合和兼容。本章重点讨论SSLv3协议SSL解决的问题(功能)客户对服务器的身份认证SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。服务器对客户的身份认证可通过公钥技术和证书进行认证,也可通过用户名+password来认证。建立服务器与客户之间安全的数据通道SSL要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性SSL提供的安全服务用户和服务器的合法性认证usingX.509v3digitalcertificates传输数据的机密性usingoneofDES,TripleDES,IDEA,RC2,RC4,…传输数据的完整性usingMACwithMD5orSHA-1SSL/TLS概述SSL协议分为两层底层:记录协议上层:握手协议、密码变化协议、警告协议、用户数据握手协议:用于在客户与服务器之间建立安全连接之前交换安全信息客户和服务器之间相互认证协商加密算法和密钥它提供连接安全性,有三个特点身份认证,至少对一方实现认证(对服务器的),也可以是双向认证协商得到的共享密钥是安全的,中间人不能够知道协商过程本身是可靠的记录协议建立在可靠的传输层协议(TCP)之上它提供连接安全性,有两个特点保密性,使用了对称加密算法完整性,使用HMAC算法用来封装上层的协议SSL/TLS协议栈为上层协议提供安全性保密性身份认证和数据完整性IPHTTP/S-HTTPFTPSMTPTCPSSLorTLSSSL的工作原理采用握手协议建立客户与服务器之间的安全通道,该协议包括双方的相互认证,交换密钥参数采用告警协议向对端指示其安全错误采用改变密码规格协议告知改变密码参数采用记录协议封装以上三种协议或应用层数据(记录类型:20=改变密码规格,21=告警,22=握手,23=应用层数据)记录协议中的记录头(Head)ContentType;——8位,上层协议类型Majorversion;Minnorversion——各8位,主次版本CompressedLength:16位—加密后数据的长度,不超过字节(SSL几乎不用压缩,虽然支持)EncryptedDatafragment;——密文数据SSL记录协议保护方式加密的记录SSL握手协议allowsserver&clientto:authenticateeachothertonegotiateencryption&MACalgorithmstonegotiatecryptographickeystobeusedcomprisesaseriesofmessagesinphasesEstablishSecurityCapabilitiesServerAuthenticationandKeyExchangeClientAuthenticationandKeyExchangeFinishSSL握手协议(RSA方式)AliceBob加密算法协商发送ID认证加密CryptosuitesIsupport,RaCertificate,CryptosuiteIchoose,Rb<S>Pubkey-b,{keyedhashofhandshakemsgs}{keyedhashofhandshakemsgs}DataprotectedwithkeysderivedfromKK=f(S,Ra,Rb)K=f(S,Ra,Rb)会话重用SSL/TLS认为会话通常是具有较长的生命期,在此之上需要在会话基础上容易派生出多个连接。这是因为协议被设计为能够与HTTP协议协同工作,而HTTP协议能够在相同客户和服务器之间打开大量的TCP连接一次一密的会话主密钥是使用开销较大的公开密钥密码技术建立起来的,通过发送包括nonce握手消息的方式,能够在主密钥的基础上派生出多个连接。会话重用(未进行重用的情况)AliceBobCryptosuites,RaSessionID,Certificate,Cryptosuite,Rb<S>Pubkey-b,{keyedhashofhandshakemsgs}{keyedhashofhandshakemsgs}DataprotectedwithkeysderivedfromK会话重用(进行重用的情况)AliceBobSessionID,Cryptosuites,RaSessionID,Certificate,Cryptosuite,Rb{keyedhashofhandshakemsgs}{keyedhashofhandshakemsgs}DataprotectedwithkeysderivedfromK密钥的计算秘密值S:预备主密钥(Pre-mastersecret)主密钥(Mastersecret)K:K=f(S,Ra,Rb)对于每个连接,每个方向上各三个密钥,分别为加密密钥、完整性保护密钥、IV(CBC模式):gi(K,Ra,Rb)密钥导出关系SSL

中MasterKey生成方式SSL3.0master_secret=MD5(pre_master_secret‖SHA-1(‘A’‖pre_master_secret||ClientHello.random‖ServerHello.random))‖MD5(pre_master_secret‖SHA-1(‘BB’‖pre_master_secret||ClientHello.random‖ServerHello.random))‖MD5(pre_master_secret‖SHA-1(‘CCC’‖pre_master_secret||ClientHello.random‖ServerHello.random))TLS中MasterKey生成方式TLS1.0master_secret=PRF(pre_master_secret,“mastersecret”,ClientHello.random+ServerHello.random)[0..47]PRF(secret,label,seed)为伪随机函数P_hash(secret,seed)=HMAC_hash(secret,A(1)||seed)

||

HMAC_hash(secret,A(2)||seed)

||

HMAC_hash(secret,A(3)||seed)||…A(0)=seed;A(i)=HMAC_hash(secret,A(i-1))PRF(secret,label,seed)

=P_MD5(secret,label||seed)XOR

P_SHA-1(secret,label||seed)SSL中其他密钥的生成包括加密密钥、完整性保护密钥、IV(共6个)过程:首先由mastersecret计算KeyBlock;再由KeyBlock计算各个密钥。SSL中其他密钥的生成(续)KeyBlock计算key_block=MD5(master_secret||SHA(“A”||master_secret||ClientHello.random||ServerHello.random))||MD5(master_secret||SHA(“BB”||master_secret||ClientHello.random||ServerHello.random))||MD5(pre_master_secret||SHA(“CCC”||pre_master_secret||ClientHello.random||ServerHello.random))||…..相关参数

client_write_MAC_secret[CipherSpec.hash_size]:Client完整性保护密钥长度;server_write_MAC_secret[CipherSpec.hash.size]:Server端完整性保护密钥长度;client_write_secret[CipherSpec.key_material]:Client加密密钥长度;server_write_secret[CipherSpec.key_material]:Server端加密密钥长度;SSL中其他密钥的生成(示例)SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5

选用密钥块的次序client_write_MAC_secret=key_block[0,..,15]server_write_MAC_secret=key_block[16,…,31]client_write_key=key_block[32,…,36]server_write_key=key_block[37,…,41]相关密钥生成final_client_write_key=MD5(client_write_key||ClientHello.random||ServerHello.random)[0.…,15]final_server_write_key=MD5(server_write_key||ServerHello.random||ClientHello.random)[0,…,15]client_write_IV=MD5(ClientHello.random||ServerHello.random)[0,…,7]server_write_IV=MD5(ServerHello.random||ClientHello.random)[0,…,7]密钥交换算法在hello消息中,双方交换随机数以及各种算法两类密钥交换算法:RSA,客户产生一个48字节的pre_master_secret,然后通过服务器的公钥传递给服务器Diffie-Hellman,双方协商得到的密钥被用作pre_master_secret(包括固定、暂态、匿名三种)再从pre_master_secret计算得到master_secretmaster_secret总是48字节长,而pre_master_secret长度不定,取决于密钥交换算法完整SSL会话握手协议建立安全连接请求,包括协议版本、会话ID、密码构建、压缩方法和初始随机数服务器发送证书、密钥交换证书和证书请求,最后发送hello消息阶段结束的信号如果有证书请求,客户端发送证书。之后客户端发送密钥交换数据,也可以发送证书验证消息更改密码构建和结束握手消息第一阶段:建立起安全协商客户发送一个client_hello消息,包括以下参数:

版本、随机数(32位时间戳+28字节随机序列)、会话ID、客户支持的密码算法列表(CipherSuite)、客户支持的压缩方法列表然后,客户等待服务器的server_hello消息服务器发送server_hello消息,参数:

客户建议的低版本以及服务器支持的最高版本、服务器产生的随机数、会话ID、服务器从客户建议的密码算法中挑出一套、服务器从客户建议的压缩方法中挑出一个考虑会话重用CipherSuite指定了密钥交换的方法,SSL支持以下一些方法:RSA,要求服务器提供一个RSA证书固定DH(FixedDiffie-Hellman),要求服务器的证书中包含了由CA签名的DH公开参数。客户或者在证书中提供DH公开参数,或者在密钥交换消息中提供此参数EDH(EphemeralDiffie-Hellman),产生临时的密钥,DH公开参数由发送者的私钥进行签名,接收者用对应的公钥进行验证(出口限制造成的)

匿名的DH,不加鉴别。会受到中间人攻击再指定以下信息加密算法和类型(流还是分组密码算法)HMAC:MD5还是SHA-1是否可出口HashSize

KeyMaterial

IVSize(CBC模式下初始向量的大小)第二阶段:服务器认证和密钥交换服务器发送certificate消息,消息包含一个X.509证书,或者一条证书链除了匿名DH之外的密钥交换方法都需要服务器发送server_key_exchange消息可选的,有些情况下可以不需要(固定DH、使用RSA密钥交换)。匿名DH暂态DH服务器长期密钥只能用于签名时,签发一个临时的长度较短的密钥消息包含签名,被签名的内容包括两个随机数以及服务器参数服务器发送certificate_request消息(可选)非匿名DH,server可以向客户请求一个证书包含证书类型和CAs服务器发送server_hello_done,然后等待应答第三阶段:客户鉴别和密钥交换客户收到server_done消息后,它根据需要检查服务器提供的证书,并判断server_hello的参数是否可以接受,如果都没有问题的话,发送一个或多个消息给服务器。如果服务器请求证书的话,则客户首先发送一个certificate消息,若客户没有证书,则发送一个no_certificate警告。然后客户发送client_key_exchange消息,消息的内容取决于密钥交换的类型(如果是RSA,则含加密的48字节的PreMasterSecret)。最后,客户发送一个certificate_verify消息(可选),其中包含一个签名,对从第一条消息以来的所有握手消息的HMAC值(用master_secret)进行签名(计算方式见课本)第四阶段:结束第四阶段建立起一个安全的连接客户发送一个change_cipher_spec消息,并且把协商得到的CipherSuite拷贝到当前连接的状态之中(目前只包含类型号)然后,客户用本次连接协商的算法、密钥参数发送一个finished消息,这条消息可以检查密钥交换和鉴别过程是否已经成功。其中包括一个校验值,对所有以来的消息进行校验。服务器同样发送change_cipher_spec消息和finished消息。握手过程完成,客户和服务器可以传送应用层数据。SSL改变密码规格协议和告警协议SSLChangeCipherSpecProtocol(密码变化协议)改变密码规格(参数)SSLAlertProtocol(警告协议)通知SSL对端有关安全错误警报,警报的级别有警告和致命两种(warningorfatal),此外还有一种终止(closure)SSL记录协议(RecordProtocol)机密性(confidentiality)usingsymmetricencryptionwithasharedsecretkeydefinedbyHandshakeProtocolIDEA,RC2-40,DES-40,DES,3DES,RC4-40,RC4-128messageiscompressedbeforeencryption报文完整性(messageintegrity)usingaMACwithsharedsecretkeysimilartoHMACbutwithdifferentpadding记录数据(Payload)支持4种协议消息:application_data、alert、handshake、change_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论