第08讲SSL与TSL协议ppt

上传人:新** 文档编号:586499587 上传时间:2024-09-04 格式:PPT 页数:67 大小:1.08MB
返回 下载 相关 举报
第08讲SSL与TSL协议ppt_第1页
第1页 / 共67页
第08讲SSL与TSL协议ppt_第2页
第2页 / 共67页
第08讲SSL与TSL协议ppt_第3页
第3页 / 共67页
第08讲SSL与TSL协议ppt_第4页
第4页 / 共67页
第08讲SSL与TSL协议ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《第08讲SSL与TSL协议ppt》由会员分享,可在线阅读,更多相关《第08讲SSL与TSL协议ppt(67页珍藏版)》请在金锄头文库上搜索。

1、网络与信息安全网络与信息安全安全安全基础基础(四四)潘爱民,北京大学计算机研究所潘爱民,北京大学计算机研究所http:/ HMAC_hash(MAC_write_secret, seqseq_num _num | | TLSCompressedTLSCompressed.type .type | | TLSCompressedTLSCompressed.version .version | | TLSCompressedTLSCompressed.length .length | | TLSCompressedTLSCompressed.fragment).fragment)TLS记录协议中的

2、操作记录协议中的操作(续续)u第四步,第四步,encryption采用采用CBC,算法由算法由cipherspec指定指定数据长度不超过数据长度不超过214+2048字节,包括字节,包括加密之后的数据内容加密之后的数据内容HMACpadding,共共padding_length,每个字节的值也是每个字节的值也是padding_lengthpadding_lengthIV,初始协商指定,以后,前后记录连接起来初始协商指定,以后,前后记录连接起来说明:如果是流密码算法,则不需要说明:如果是流密码算法,则不需要paddingTLS记录协议的处理结果记录协议的处理结果u结果如下:结果如下: struc

3、tstruct ContentTypeContentType type; type; 8 8位,上层协议类型位,上层协议类型 ProtocolVersionProtocolVersion version; version; 16 16位,主次版本位,主次版本 uint16 uint16 length; length; 加加 密密 后后 数数 据据 的的 长长 度度 , 不超过不超过2 21414+2048+2048字节字节 EncryptedDataEncryptedData fragment; fragment; 密文数据密文数据 TLSCiphertextTLSCiphertext; ;l

4、engthTLS密码变化协议密码变化协议ChangeCipherSpecProtocolu它位于它位于TLS记录协议之上记录协议之上所以,它用到了所以,它用到了TLS记录协议的处理过程记录协议的处理过程ContentType=20协议只包含一条消息,一个字节协议只包含一条消息,一个字节1用途:切换状态用途:切换状态把密码参数设置为当前状态把密码参数设置为当前状态在握手协议中,当安全参数在握手协议中,当安全参数协商一致后,发送此消息协商一致后,发送此消息这条消息使得接收方改变当这条消息使得接收方改变当前状态读参数,使得发送方前状态读参数,使得发送方改变当前状态写参数改变当前状态写参数TLS警告协

5、议警告协议AlertProtocolu位于位于TLS记录协议之上记录协议之上所以,也用到了所以,也用到了TLS记录协议的处理过程记录协议的处理过程ContentType=21协议数据包含两个字节协议数据包含两个字节第一个字节为第一个字节为level:分别为分别为warning(1)和和fatal(2)两种情况两种情况第二个字节为情况说明第二个字节为情况说明Fatal类型的类型的alert消息导致消息导致连接立即终止,此时,对应连接立即终止,此时,对应该会话的其他连接可以继续,该会话的其他连接可以继续,但是会话标识符无效,以免但是会话标识符无效,以免利用此失败的连接来建立新利用此失败的连接来建立

6、新的连接的连接AlertProtocol第二字节说明第二字节说明close_notify(0),close_notify(0),unexpected_message(10),unexpected_message(10),bad_record_bad_record_macmac(20),*(20),*decryption_failed(21),*decryption_failed(21),*record_overflow(22), *record_overflow(22), *decompression_failure(30),*decompression_failure(30),*handsh

7、ake_failure(40),*handshake_failure(40),*bad_certificate(42),bad_certificate(42),unsupported_certificate(43),unsupported_certificate(43),certificate_revoked(44),certificate_revoked(44),certificate_expired(45),certificate_expired(45),certificate_unknown(46),certificate_unknown(46),illegal_parameter(47

8、),*illegal_parameter(47),*unknown_ca(48), *unknown_ca(48), *access_denied(49),access_denied(49),decode_error(50),*decode_error(50),*decrypt_error(51),decrypt_error(51),export_restriction(60), *export_restriction(60), *protocol_version(70), *protocol_version(70), *insufficient_security(71), *insuffic

9、ient_security(71), *internal_error(80), *internal_error(80), *user_canceled(90), #user_canceled(90), #no_renegotiation(100), #no_renegotiation(100), #说明:说明:1 * 1 * 表示该消息往往是表示该消息往往是fatalfatal级别级别2 # 2 # 表示该消息往往是表示该消息往往是warningwarning级别级别3 3 对于其他的错误情况,发送方可以对于其他的错误情况,发送方可以根据情况决定是根据情况决定是warningwarning还是

10、还是fatal,fatal,对于对于warningwarning消息,接收方可以自行消息,接收方可以自行决定如何处理,如果是决定如何处理,如果是fatalfatal消息,消息,则一定要当作则一定要当作fatalfatal消息来对待消息来对待TLS握手协议握手协议TLSHandshakeProtocolu位于位于TLS记录协议之上记录协议之上也用到了也用到了TLS记录协议的处理过程记录协议的处理过程ContentType=22协议格式协议格式用途:用途:当当TLS客户和服务器开始通讯的时候,它们要通客户和服务器开始通讯的时候,它们要通过协商,在以下信息方面获得一致过协商,在以下信息方面获得一致:

11、协议版本、密码算法、是否认证对方、协议版本、密码算法、是否认证对方、用什么技术来产生共享秘密数据,等等用什么技术来产生共享秘密数据,等等TLS握手协议的流程握手协议的流程u交换交换Hello消息,对于消息,对于算法、交换随机值等协算法、交换随机值等协商一致商一致u交换必要的密码参数,交换必要的密码参数,以便双方得到统一的以便双方得到统一的premastersecretu交换证书和相应的密交换证书和相应的密码信息,以便进行身份码信息,以便进行身份认证认证u产生产生mastersecretu把安全参数提供给把安全参数提供给TLS记录层记录层u检验双方是否已经获得检验双方是否已经获得同样的安全参数同

12、样的安全参数TLS握手协议使用的消息握手协议使用的消息消息消息参数参数hello_requestNullclient_hello版本,随机数,会话版本,随机数,会话id,密码密码参数,压缩方法参数,压缩方法server_hellocertificateX.509v3证书链证书链server_key_exchange参数,签名参数,签名certificate_request类型,类型,CAsserver_doneNullcertificate_verify签名签名client_key_exchange参数,签名参数,签名finishedHash值值第一阶段:建立起安全能力属性第一阶段:建立起安全

13、能力属性u客户发送一个客户发送一个client_hello消息,包括以下参数:消息,包括以下参数:版本、随机数版本、随机数(32位时间戳位时间戳+28字节随机序列字节随机序列)、会话会话ID、客户支持的密码算法列表客户支持的密码算法列表(CipherSuite)、客户支持的压客户支持的压缩方法列表缩方法列表u然后,客户等待服务器的然后,客户等待服务器的server_hello消息消息u服务器发送服务器发送server_hello消息,参数:消息,参数:客户建议的低版本以及服务器支持的最高版本、服务器客户建议的低版本以及服务器支持的最高版本、服务器产生的随机数、会话产生的随机数、会话ID、服务器

14、从客户建议的密码算法服务器从客户建议的密码算法中挑出一套、服务器从客户建议的压缩方法中挑出一个中挑出一套、服务器从客户建议的压缩方法中挑出一个关于会话关于会话ID(SessionID)u客户方客户方客户指定的会话客户指定的会话ID如果不等于如果不等于0,则表示它希,则表示它希望基于这个会话来更新已有连接的安全参数,望基于这个会话来更新已有连接的安全参数,或者创建一个新的连接或者创建一个新的连接如果会话如果会话ID等于等于0,则表示客户希望在一个新,则表示客户希望在一个新的会话上建立一个新的连接的会话上建立一个新的连接u服务器服务器或者同意客户指定的会话或者同意客户指定的会话ID,需要检查需要检

15、查cache中的会话状态中的会话状态或者返回一个新的会话或者返回一个新的会话IDCipherSuiteu第一个元素指定了密钥交换的方法,第一个元素指定了密钥交换的方法,TLS支持以下一些支持以下一些方法:方法:RSA,要求服务器提供一个要求服务器提供一个RSA证书证书DH(Diffie-Hellman),要求服务器的证书中包含了由要求服务器的证书中包含了由CA签名的签名的DH公开参数。客户或者在证书中提供公开参数。客户或者在证书中提供DH公开参数,或者在密钥公开参数,或者在密钥交换消息中提供此参数交换消息中提供此参数EDH(EphemeralDiffie-Hellman),产生临时的密钥,产生

16、临时的密钥,DH公开公开参数由发送者的私钥进行签名,接收者用对应的公钥进行验证参数由发送者的私钥进行签名,接收者用对应的公钥进行验证匿名的匿名的DH,不加认证。会受到中间人攻击不加认证。会受到中间人攻击u然后,指定以下信息然后,指定以下信息加密算法,和类型加密算法,和类型(流还是分组密码算法流还是分组密码算法)HMAC算法,算法,MD5还是还是SHA-1是否可出口是否可出口HashSizeKeyMaterialIVSize第二阶段:服务器认证和密钥交换第二阶段:服务器认证和密钥交换u服务器发送自己的证书,消息包含一个服务器发送自己的证书,消息包含一个X.509证书,或者证书,或者一条证书链一条

17、证书链除了匿名除了匿名DH之外的密钥交换方法都需要之外的密钥交换方法都需要u服务器发送服务器发送server_key_exchange消息消息可选的,有些情况下可以不需要。只有当服务器的证书没有包可选的,有些情况下可以不需要。只有当服务器的证书没有包含必需的数据的时候才发送此消息含必需的数据的时候才发送此消息消息包含签名,被签名的内容包括两个随机数以及服务器参数消息包含签名,被签名的内容包括两个随机数以及服务器参数u服务器发送服务器发送certificate_request消息消息非匿名非匿名server可以向客户请求一个证书可以向客户请求一个证书包含证书类型和包含证书类型和CAsu服务器发送

18、服务器发送server_hello_done,然后等待应答然后等待应答第三阶段:客户认证和密钥交换第三阶段:客户认证和密钥交换u客户收到客户收到server_done消息后,它根据需要检查服务器提消息后,它根据需要检查服务器提供供的证书,并判断的证书,并判断server_hello的参数是否可以接受,的参数是否可以接受,如果都没有问题的话,发送一个或多个消息给服务器如果都没有问题的话,发送一个或多个消息给服务器u如果服务器请求证书的话,则客户首先发送一个如果服务器请求证书的话,则客户首先发送一个certificate消息,若客户没有证书,则发送一个消息,若客户没有证书,则发送一个no_cert

19、ificate警告警告u然后客户发送然后客户发送client_key_exchange消息,消息的内容取消息,消息的内容取决于密钥交换的类型决于密钥交换的类型u最后,客户发送一个最后,客户发送一个certificate_verify消息,其中包含一消息,其中包含一个签名,对从第一条消息以来的所有握手消息的个签名,对从第一条消息以来的所有握手消息的HMAC值值(用用master_secret)进行签名进行签名第四阶段:结束第四阶段:结束u第四阶段建立起一个安全的连接第四阶段建立起一个安全的连接u客户发送一个客户发送一个change_cipher_spec消息,并且把协商得消息,并且把协商得到的到

20、的CipherSuite拷贝到当前连接的状态之中拷贝到当前连接的状态之中u然后,客户用新的算法、密钥参数发送一个然后,客户用新的算法、密钥参数发送一个finished消息,消息,这条消息可以检查密钥交换和认证过程是否已经成功。其这条消息可以检查密钥交换和认证过程是否已经成功。其中包括一个校验值,对所有以来的消息进行校验。中包括一个校验值,对所有以来的消息进行校验。u服务器同样发送服务器同样发送change_cipher_spec消息和消息和finished消消息。息。u握手过程完成,客户和服务器可以交换应用层数据。握手过程完成,客户和服务器可以交换应用层数据。密钥交换算法密钥交换算法uTLS记

21、录协议需要:记录协议需要:CipherSuite,mastersecret,andtheclientandserverrandomvaluesu在在hello消息中,交换随机数以及各种算法消息中,交换随机数以及各种算法u对于各种密钥交换算法,从对于各种密钥交换算法,从pre_master_secret计算得计算得到到master_secret,然后从内存中删除,公式:然后从内存中删除,公式:master_secret=PRF(pre_master_secret,“mastersecret”,ClientHello.random+ServerHello.random)0.47*PRF(secre

22、t,label,seed)为伪随机函数为伪随机函数uMaster_secret总是总是48字节长,而字节长,而pre_master_secret长度不定,取决于密钥交换算法长度不定,取决于密钥交换算法u两类密钥交换算法:两类密钥交换算法:RSA,客户产生一个客户产生一个48字节的字节的pre_master_secret,然后通过然后通过服务器的公钥传递给服务器服务器的公钥传递给服务器Diffie-Hellman,双方协商得到的密钥被用作双方协商得到的密钥被用作pre_master_secret重用一个重用一个TLS会话会话u客户和服务器在交换客户和服务器在交换hello消息中,客户要消息中,客

23、户要求重用已有的求重用已有的TLS会会话,服务器同意使用话,服务器同意使用cache中的会话中的会话*sessionidu跳过第二第三阶段,跳过第二第三阶段,直接把直接把TLS会话中的会话中的参数传递给参数传递给TLS记录记录层层伪随机函数伪随机函数PRF(secret,label,seed)uP_hash(secret,seed)=+HMAC_hash(secret,A(1)+seed)+HMAC_hash(secret,A(2)+seed)+HMAC_hash(secret,A(3)+seed)+.u这里这里A()定义如下:定义如下:A(0)=seedA(i)=HMAC_hash(secr

24、et,A(i-1)u伪随机函数伪随机函数PRF(secret,label,seed)=P_MD5(S1,label+seed)XORP_SHA-1(S2,label+seed);这里,这里,S1和和S2为为secret的各一半,如果的各一半,如果secret为奇数个字节,则为奇数个字节,则S1和和S2共享一个字节共享一个字节TLS/SSL安全性分析安全性分析u针对一些常见的攻击手法针对一些常见的攻击手法针对密钥算法的破解针对密钥算法的破解取决于算法的强度,协商过程取决于算法的强度,协商过程利用明文模式的攻击利用明文模式的攻击上层协议中常常有一些固定的模式可以参考,比如上层协议中常常有一些固定的

25、模式可以参考,比如http协议中协议中get字节串字节串构造字典构造字典(密文密文-密钥对密钥对),查字典,查字典TLS办法:用长密钥,使得不可能构造这样的字典办法:用长密钥,使得不可能构造这样的字典重放攻击重放攻击TLS中的中的nonce有有32字节字节(包含时间戳包含时间戳),可用于避免重放攻击,可用于避免重放攻击会话会话ID标识了一个完整的会话,要重放部分会话需要知道私钥标识了一个完整的会话,要重放部分会话需要知道私钥中间人攻击中间人攻击通过证书来认证对方通过证书来认证对方对于双方都是匿名的模式,中间人攻击也是成立的对于双方都是匿名的模式,中间人攻击也是成立的历史上针对历史上针对SSL/

26、TLS的攻击的攻击uPRNGuMillion-messageattacku其它其它SSL:PRNG攻击攻击uNetscapev1.1版本中存在,利用随机数发生器版本中存在,利用随机数发生器的弱点的弱点u先看随机数发生器先看随机数发生器global variable seed;RNG_CreateContext() (seconds, microseconds) = time of day; /* Time elapsed since 1970 */ pid = process ID; ppid = parent process ID; a = mklcpr(microseconds); b =

27、 mklcpr(pid + seconds + (ppid 1);(待续)SSL:PRNG攻击攻击(续续)u种子关联:种子关联:pid,ppid,seconds,microsecondsSeconds往往可以获得,往往可以获得,microseconds未知未知如果在目标机器上有账号,则如果在目标机器上有账号,则pid和和ppid可以获得可以获得否则,可以寻找否则,可以寻找pid和和ppid的。的。对于大多数对于大多数UNIX平台,平台,pid+(ppid12)只有只有27位位 global variable challenge, secret_key; RNG_GenerateRandomBy

28、tes() x = MD5(seed); seed = seed + 1; return x; create_key() RNG_CreateContext(); tmp = RNG_GenerateRandomBytes(); tmp = RNG_GenerateRandomBytes(); challenge = RNG_GenerateRandomBytes(); secret_key = RNG_GenerateRandomBytes();PRNG的启示的启示uPRNG并不是并不是SSL协议本身的缺陷,而是协议本身的缺陷,而是实现上导致的缺陷实现上导致的缺陷随机数对于安全协议或者安全系

29、统的重要性随机数对于安全协议或者安全系统的重要性u源码开放的另一层含义源码开放的另一层含义关键的代码接受公众的审视关键的代码接受公众的审视Reference: Ian Goldberg and David Wagner, “Randomness and the Netscape Browser”, January 1996 Dr. Dobbs Journal SSL:Million-messageattacku在在RSA算法作加密运算的时候,首先对明文消息算法作加密运算的时候,首先对明文消息进行编码,其格式为进行编码,其格式为 0 2 random bytes 0 messageu假设密文假设

30、密文C,攻击者可以产生一系列整数攻击者可以产生一系列整数S并计算并计算C=C*(Se)modn,在解密的时候,每一个在解密的时候,每一个C对应于一个对应于一个M。大多数的大多数的M不会满足上面的格式,但是有不会满足上面的格式,但是有2-16的概率会产生的概率会产生这样的结果这样的结果(因为前两个字节是确定的因为前两个字节是确定的)。攻击者可以找到。攻击者可以找到一系列满足条件的一系列满足条件的S,然后推断出密文然后推断出密文C对应的明文对应的明文M。这这个过程大约需要个过程大约需要220个消息和应答。个消息和应答。u攻击实施依赖于攻击实施依赖于u需要一个可以提供解密准确性判断的服务器需要一个可

31、以提供解密准确性判断的服务器称为称为oracleuSSL实现是否能够精确地告知明文格式不正确?实现是否能够精确地告知明文格式不正确?u只能得到一个消息的明文,无法得到私钥只能得到一个消息的明文,无法得到私钥MMA的启示的启示u实现实现SSL的时候的时候对待错误消息如何响应?对待错误消息如何响应?Contiune?会不会招致会不会招致DOS?返回精确的错误返回精确的错误充分利用明文模式充分利用明文模式随机数填充随机数填充References1 RFC 32182 Bleichenbacher D. , Chosen Ciphertext Attacks against Protocols Bas

32、ed on RSA Encryption Standard PKCS #1 in Advances in Cryptology - CRYPTO98, LNCS vol. 1462, pages: 1-12, 1998. 针对针对SSL的其他攻击的其他攻击uExportciphersanddistributedcracking举例:举例:40位位RC4,http:/ http:/www.openssl.orguSSLeayhttp:/www2.psy.uq.edu.au/ftp/Crypto/uMicrosoftWin2kSSLimplementationMicrosoftIE中中SSL/TL

33、S的一个漏洞的一个漏洞uIE处理内嵌在处理内嵌在HTTP页面中的页面中的HTTPS对象存在一对象存在一个漏洞个漏洞它只检查它只检查HTTPS服务器的证书是否由可信的服务器的证书是否由可信的CA签名签名的,而完全忽略该证书是否有适当的名字,以及是否的,而完全忽略该证书是否有适当的名字,以及是否已经过期。已经过期。对于当前这个页面而言,其实并不危险对于当前这个页面而言,其实并不危险u问题在于问题在于IE会把这个证书缓存起来,并标记为可信任的,一直会把这个证书缓存起来,并标记为可信任的,一直到浏览器的会话结束到浏览器的会话结束这意味着,假如说,这意味着,假如说,IE客户在访问一个客户在访问一个HTT

34、P页面时,页面时,如果该页面被插入一个包含指向有问题的如果该页面被插入一个包含指向有问题的SSLserver的的HTTPS对象对象(比如说一个比如说一个image)的话,的话,IE不会警告不会警告遇到一个非法的证书,只要这个证书确实是被可信遇到一个非法的证书,只要这个证书确实是被可信CA签名的签名的IE中中SSL/TLS的漏洞的情形的漏洞的情形u假如说中间人在服务器返回的页面上加上一句话假如说中间人在服务器返回的页面上加上一句话uHTTPS部分显示的是一个被偷来的或者过期的部分显示的是一个被偷来的或者过期的的证书,这个证书是有效签名的,但是的证书,这个证书是有效签名的,但是IE并不检查证书中的

35、名字和过期情况并不检查证书中的名字和过期情况u如果客户通过如果客户通过HTTPS连接到连接到yoursite网站上,网站上,IE将认为这将认为这是可信的站点,而不再进一步检查是可信的站点,而不再进一步检查uu参考:参考:ttp:/ Stallings, Cryptography and network security: principles and practice, Second Edition冯登国,计算机通信网络安全,清华大学出版社,2001David Chappell, Understanding Microsoft Windows 2000 Distributed Services

36、, 中文版(清华大学出版社,潘爱民译), 2001u文章Ian Goldberg and David Wagner, “Randomness and the Netscape Browser”, January 1996 Dr. Dobbs JournalBleichenbacher D. , Chosen Ciphertext Attacks against Protocols Based on RSA Encryption Standard PKCS #1 in Advances in Cryptology - CRYPTO98, LNCS vol. 1462, pages: 1-12, 1998.uWeb站点“SSL v3 spec”, http:/ http:/www.openssl.org

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号