TLS握手协议是TLS协议里面的重要组成部分,没有它的话TLS也不可能建立起来。就如同你要摆脱单身的话,怎么样也得懂得一点追女孩的技巧和步骤吧。其实在TLS握手协议里面是隐含着追女神的几个关键过程和技巧。什么?TLS握手协议竟然能教我追女神?是的,赶紧来一边学TLS握手协议,一边学怎么追女神吧!
一,Client Hello
客户端:“Hello,我支持的密码套件有RSA/3DES、DSS/AES,我们要用那种进行通讯呢?”。并附上了客户端可用的版本号,当前时间,客户端的随机数,会话ID,支持的密码套件清单,支持的压缩方式清单这些信息。这时服务端就能根据客户端请求中的信息进行相应的处理,并返回响应。
这一步与追女神的第一步相似,就是你如何认识她并取得与她的联系方式。接触到女神的场景有很多,搭讪、聚会、工作、派对等等。不过无论是在什么场景,重要的是你要鼓起勇气过去跟她说话啊。
例如是搭讪的话,你就需要表达好“你是谁”、“你是做什么的”、“你想干嘛”这几个关键点来打消女神的警觉性。而最重要的,是你得拿到她的联系方式。
二,Server Hello
只要服务端有正确受到客户端的请求,经过处理后,这时会返回“Hello,我们用RSA/3DES进行通讯吧”。也就会将本次握手所采用的密码套件、压缩方式等等返回给客户端。
这一步与追女神的第二步相似,其实也是等待女神的回应。
如果你能成功引起她的注意并打消她的疑虑的话,她可能会给你她的联系方式。这一步成功了,你们才能有后续的发展。
三,Server提供Certificate
在非匿名通讯,服务端会给客户端发送证书。这里的证书清单是一组X509v3证书序列。客户端受到证书后,会对其进行验证。如果是匿名通讯的话,不需要发送Certificate。
四,Server Key Exchange(当证书信息不足时)
如果证书方面的信息不足够时,会无法对通讯进行加密。这时就需要服务端和客户端互相提供一些信息进行密钥的交换。例如在使用RSA的话,服务端会发送公钥密码参数以及散列值等给客户端。如果是使用Diffie-Hellman密钥交换的话,则需要提供P,G,服务器的Y以及散列值。关于Diffie-Hellman算法大家可以自行查找相关资料学习,这里就不展开讨论。
五,Certificate Request(当需要客户端认证的时候)
某些服务是只提供给指定的客户端,这种情况下需要验证客户端的身份,我们称之为“客户端认证”。Certificate Request消息就是服务器向客户端请求证书。服务器会向客户端发送的Certificate Request消息会包含证书类型清单和认证机构名称清单等信息。
六,Server Hello Done
服务端发送Server Hello Done消息客户端后,表示服务端从Server Hello开始后的一连串消息结束。
七,Certificate(客户端到服务端)
如果在第五步中服务器有发送Certificate Request的话,客户端就要发送Certificate的消息给服务器。Certificate消息会包含客户端自己的证书,服务端收到客户端的证书后会对证书进行验证。
八,Client Key Exchange
此阶段中,客户端会向服务端发送Client Key Exchange消息,如果采用的是Rsa的话,其中会包含“经过加密的预备主密码”。如果是Diffe-Hellman,则包含的是Diffe-Hellman的公开值。所谓预备主密码,其实就是客户端生成的随机数,这个随机数在之后会被用于生成主密码的种子。客户端和服务端使用相同预备主密码能计算出相同的主密码。有主密码就能对应地生成对称密码的密钥、消息认证码的密钥以及采用CBC模式的对称密码所使用的出事向量。预备主密码在传输前会使用服务器的公钥(回想一下服务器的公钥是在哪一步中获得的?)进行加密。
这里会对应追女神里面的两步:你主动跟她聊天,她有回应。当然这会有很多来回的。这里面就需要你充分展示自己的个人魅力、良好的生活习惯、正确的三观等等。如果你觉得自己没有魅力或者生活习惯不良的话,那就马上改善哦。
九,Certificate Verify
如果服务器有发送Certificate Request,则客户端就需要返送Certificate Verify消息给服务端。这一步中客户端先计算“主密码”和“握手协议中传送的消息”的散列值,然后会用客户端证书的私钥对其进行签名,服务端在受到签名后会使用客户端证书的公钥对其进行验签。这一步是客户端为了证明自己确确实实是拥有客户端证书的私钥的。拥有证书的私钥才能证明你是拥有该证书的。
十,Change Cipher Spec(客户端到服务端)
此时客户端与服务端之间已经交换过各种建立加密通讯所需的信息,在Change Cipher Spec消息之后,双方就会使用商定的密码通讯方式进行通讯。Change Cipher Spec其实并不是握手协议的消息,而是密码规格变更协议的消息。
如果一起顺利的话,追女神来到这一步的话,就是你要表白了。不过表白其实并不是确定恋爱关系开始的标志,恋爱关系其实会在你们此前的良好交流互动中逐渐形成,而表白是让恋爱关系在你们之间明确的一个仪式。
十一,Finished(客户端到服务端)
Finished消息是在密码切换后发送的,所以Finished消息是加密发送的。由于Finished消息的内容时固定的,所以服务端受到后能够对其进行解密并验证受到的Finished消息是否正确。Finished也是用户确认整个握手协议和密码切换是否都已经正常结束。
十二,Change Cipher Spec(服务端到客户端)
这一步的Change Cipher Spec消息与第十步中的一样,只是轮到服务端发送而已。
如果你不太差劲的话,女神当然是会答应你啦,哈哈哈。
十三,Finished(服务端到客户端)
与第十一步一样,这一步的Finished消息也是在密码切换后发送的。
十四,切换到应用数据协议
至此,客户端和服务端会使用加密的方式来传送应用数据。
追女神如果走到这一步,其实不用多说,恭喜你!
总结
TLS握手协议在整个TLS协议中是最复杂的,它负责了客户端和服务端证书的交换以及共享密钥的生成。TLS握手协议是在没有加密的情况下进行的,所以你会看到整个过程中会使用到公钥密码。握手协议完成后,客户端和服务端之间的应用数据就能通过加密的方式传送,这时所有的数据就能确保安全。
最后附上TLS握手协议全过程以及追女神全过程。
整个TLS握手协议的过程如下:
整个追女神的过程如下: