博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSL握手中的个别细节
阅读量:6983 次
发布时间:2019-06-27

本文共 1415 字,大约阅读时间需要 4 分钟。

1.CipherSuite

CipherSuite由三部分组成:密钥交换算法,对称加密算法,签名算法。这三个算法组合而成一个Suite,密钥交换算法描述握手消息中的KeyExchange的相关细节,这里交换的是pre-master,而对称加密算法描述密钥交换算法交换的内容细节的用法,签名算法的作用主要在认证。所以,虽然一般上SSL握手都是在client KeyExchange中使用server的公钥加密pre-master,然而这并不是唯一的做法,比如如果CipherSuite是TLS_DH_RSA_WITH_DES_CBC_SHA的话,那就说明使用DH算法交换密钥,而是用RSA进程前面,摘要算法是SHA。注意,密钥交换算法和证书的类型没有什么关系,证书只是为了验证对端的身份,和密钥交换算法属于不同的业务范畴,它们之间的一点联系就是有的时候用服务器证书里面的内容就能使得客户端将pre-master安全的传输给服务器,比如RSA签名的RSA公钥的证书,从证书中就能取出服务器的公钥,于是客户端就可以使用该公钥来加密自己的pre-master,自己留一份,传给服务器一份,于是两端都有了这个pre-master,然后就可以计算出相同的对称密钥了,如果是DH密钥交换算法,那么也很简单,虽然证书中可能没有DH相关的信息,但是服务器端可以在Server KeyExchange消息中包含DH的自己的份额,然后客户端在Client KeyExchange中包含DH的自己的份额,然后两端即可计算出相同的对称密钥了,不管怎样总是能协商出一个仅此两端共享的对称密钥。证书用于认证,但是有时也能包含一些用于密钥交换的信息(比如RSA),CipherSuite中的KeyExchangeMethod用于密钥交换,信息可以和证书毫无关联。

2.certificate verify消息

该消息的含义在于认证客户端,由于服务器端通常信任很多客户端,如果A和B都是服务器信任的,A要是拿着B的证书进行验证就不好了,所以客户端如果提供证书的话,那么就要发送这个消息来证实自己就是证书的所有者。正如认证一个人的身份不能只看他的证件是否有效,还要他按指印或者签字是一样的道理。那么为何服务器端不用发送这个消息来证实自己的身份呢?多个服务器也是可以互相盗用证书的,以RSA密钥交换算法为例,答案就在于pre-master是用从服务器证书取出的公钥加密的,然后由客户端发给服务器的,如果服务器证书不是自己的,那么它将无法解密这个pre-master。不过要注意,有时候为了效率因素,有些情况下在SSL握手交互过程中是不验证证书所有者的身份真实性的,这就可能招来中间人攻击。

3.Finished消息

该消息是SSL握手中的最后要互传的消息,包含一个所有握手消息的摘要值,这是为了防止中间人将强度较大的CipherSuite在client hello消息中删除,使得server不得不选择强度较小的CipherSuite,然而这非client所愿。问题是这个摘要不可以被中间人更改吗?想象一下这时共享对称密钥已经协商好了,ChangeCipherSpec已经经过,所以这些消息本身是加过密的。

4.所有细节详情:参考RFC2246

 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271898

转载地址:http://qyxpl.baihongyu.com/

你可能感兴趣的文章
《抽象是一种美》
查看>>
JCheckBox使用示例
查看>>
如何解决每次打开office 都会出现正在配置的问题
查看>>
Response.Write()方法响应导致页面内容变形的问题
查看>>
【转】EXC_BAD_ACCESS问题在xode4下的调试技巧
查看>>
美图HTTPS优化探索与实践
查看>>
博览安全圈:360曝Office高危漏洞 微软及时修复
查看>>
对话Couchbase首席架构师:Couchbase是目前最好的NoSQL数据库平台
查看>>
春运前五日全国累计发送旅客3.49亿人次 同比增0.58%
查看>>
2018年香港私楼落成量达2.1万个 创14年新高
查看>>
各大航空公司将加大海南春运期间运力投入
查看>>
宠了4年的老婆,说走就走,没有一点情份,你会怎么做
查看>>
Spring Cloud Feign设计原理
查看>>
探寻 webpack 插件机制
查看>>
如何开始容器化
查看>>
手摸手教你使用vue-cli脚手架-详细步骤图文解析[vue入门]
查看>>
View.Post () 的身世大揭秘
查看>>
手把手教会你小程序登录鉴权
查看>>
Kotlin 继续助力 Android 开发,并计划涉足更多领域
查看>>
满足 Google Play 目标 API 等级 (targetSdkLevel) 的要求
查看>>