SSL协议的握手过程



SSL-Security

SSL握手的目的

第一,客户端与服务器须要就一组用于保护数据的算法达成一致。html

第二,它们须要确立一组由那些算法所使用的加密密钥。算法

第三,握手还能够选择对客户端进行认证。安全

SSL 握手概述

 1111111

SSL 握手概述服务器

(1)客户端将它所支持的算法列表连同一个密钥产生过程用做输入的随机数发送给服务器。app

(2)服务器根据从列表的内容中选择一种加密算法,并将其连同一份包含服务器公用密钥的证书发回给客户端。该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个做为密钥产生过程部分输入的随机数。wordpress

(3)客户端对服务器的证书进行验证,并抽取服务器的公用密钥。而后,再产生一个称作pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密。最后,客户端将加密后的信息发送给服务器。函数

(4)客户端与服务器端根据pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和MAC 密钥。this

(5)客户端将全部握手消息的MAC 值发送给服务器。加密

(6)服务器将全部握手消息的MAC 值发送给客户端。spa

那么,该过程达到了怎样的效果呢?

还记得咱们的两个目标是什么吗?

第一个目标,就一组算法达成一致。确立一组加密密钥。第一和第二步实现了第一个目标。客户端告诉服务器它所支持的算法,而服务器选择其中的一种算法。当客户端收到了服务器在第二步所发的消息时,它也会知道这种算法,因此双方如今就都知道要使用什么算法了。

第二个目标,确立一组加密密钥是经过第二和第三步来实现的。在第2 步服务器向客户端提供其证书,这样就能够容许客户端给服务器传送密码。通过第3 步后,客户端与服务器端就都知道了pre_master_secret。客户端知道pre_master_secret 是由于这是它产生的,而服务器则是经过解密而获得pre_master_secret 的。注意,第3步是握手过程当中的关键一步。全部要被保护的数据都依赖于pre_master_secret的安全。

原理很是简单:客户端使用服务器的公用密钥(从证书中抽取的)来加密共享密钥,而服务器使用其私用密钥对共享密钥进行解密。握手的剩余步骤主要用于确保这种交换过程的安全进行。而后在第4步,客户端与服务器分别使用相同的密钥导出函数(key derivationfunction,KDF)来产生master_secret,最后再次经过KDF 使用master_secret来产生加密密钥。

第 5 与第6 步用以防止握手自己遭受篡改。设想一个攻击者想要控制客户端与服务器所使用的算法。客户端提供多种算法的状况至关常见,某些强度弱而某些强度强,以便可以与仅支持弱强度算法的服务器进行通讯。攻击者能够删除客户端在第1步所提供的全部高强度算法,因而就迫使服务器选择一种弱强度的算法。第5步与第6 步的MAC交换就能阻止这种攻击,由于客户端的MAC 是根据原始消息计算得出的,而服务器的MAC是根据攻击者修改过的消息计算得出的,这样通过检查就会发现不匹配。因为客户端与服务器所提供的随机数为密钥产生过程的输入,因此握手不会受到重放攻击的影响。这些消息是首个在新的加密算法与密钥下加密的消息。

所以,在此过程结束时,客户端与服务器已就使用的加密算法达成一致,并拥有了一组与那些算法一块儿使用的密钥。更重要的是,它们能够确信攻击者没有干扰握手过程,因此磋商过程反映了双方的真实意图。

 

握手消息

 22222

SSL 握手消息

第 1 步对应一条单一的握手消息,ClientHello。

第 2 步对应一系列SSL 握手消息,服务器发送的第一条件消息为ServerHello,其中包含了它所选择的算法,接着再在Certificate 消息中发送其证书。最后,服务器发送ServerHelloDone 消息以表示这一握手阶段的完成。须要ServerHelloDone 的缘由是一些更为复杂的握手变种还要在Certificate 以后发送其余一些消息。当客户端接收到ServerHelloDone消息时,它就知道不会再有其余相似的消息过来了,因而就能够继续它这一方的握手。

第3步对应ClientKeyExchange 消息。

第5与第6 步对应Finished 消息。该消息是第一条使用刚刚磋商过的算法加以保护的消息。为了防止握手过程遭到篡改,该消息的内容是前一阶段全部握手消息的MAC值。然而,因为Finished 消息是以磋商好的算法加以保护的,因此也要与新磋商的MAC密钥一块儿计算消息自己的MAC 值。

对于想深刻了解SSL协议的朋友,我向你们推荐《SSL与TLS.pdf》。

《SSL与TLS.pdf》

weixin

原创文章,转载请注明: 转载自成长的企鹅

本文连接地址: SSL协议的握手过程

关于我:成长的企鹅简介

相关文章
相关标签/搜索