HTTPS原理以及握手阶段

拜读了阮一峰大神关于HTTPS的文章,恍然大悟了很多之前看的似懂非懂的HTTPS知识。特此整理下来,让自己能够彻底消化,同时也希望能帮助到大家。

HTTPS原理:

  1. 对称加密

消息使用同一个密钥进行加密和解密。

  • 优点:很快,方便
  • 缺点: A给B发送密钥时容易被截取
  1. 非对称加密

A向B发送消息 使用B的公钥进行加密 B收到密文后使用自己的私钥进行解密 反之亦然

  • 优点:安全
  • 缺点:慢
3. 非对称加密+对称加密

A先生成一个对话密钥,然后把对话密钥发送给B。但是这个对话密钥要经过B的公钥进行加密,B收到后用自己的私钥进行解密。这样就解决了对称加密时公钥容易被截取的缺陷。

  • 优点:快,安全
  • 缺点:中间人攻击
  1. 中间人攻击

2,3两种方法在加密时都使用B的公钥进行加密。但是B的公钥哪来的呢?

是连接一开始B把自己的公钥发送给A。但是在这个时候,有个中间人截取了B的公钥,然后把自己的公钥发送给A。A在给B发送消息时,想用B的公钥进行加密。但实际上用的是中间人的公钥。中间人截取了A给B发送的消息,然后用自己的私钥解密。就可以随意读取消息的内容。
此外,因为中间人可以把自己的公钥发给A,让B误以为中间人就是A

  1. 数字证书

数字证书包括 公钥和数字签名 公钥通过hash算法可以得到数据摘要,数据摘要使用CA的私钥加密得到数字签名。

检验时 把数字证书中的公钥通过hash算法得到的消息摘要以及数字前面通过CA公钥解密得到的消息摘要进行对比。

HTTPS握手的五个阶段:

  1. 客户端向服务器发送支持的SSL/TSL的协议版本号,以及客户端支持的加密方法,和一个客户端生成的随机数
  2. 服务器确认协议版本和加密方法,向客户端发送一个由服务器生成的随机数,以及数字证书
  3. 客户端验证证书是否有效,有效则从证书中取出公钥,生成一个随机数,然后用公钥加密这个随机数,发给服务器
  4. 服务器用私钥解密,获取发来的随机数
  5. 客户端和服务器根据约定好的加密方法,使用前面生成的三个随机数,生成对话密钥,用来加密接下来的整个对话过程

小结:

HTTPS是安全版的HTTP,是以安全为目标的HTTP通道。在HTTP的基础下加入了SLSL/TSL层,这也HTTPS的安全基础。现被广泛应用于互联网上的敏感通讯,如交易支付的过程。HTTPS建立连接的阶段也就是非对称加密+对称加密+数字证书协同作用的过程。服务器和客户端各产生一个随机数,互相传给对方。然后再生成第三个随机数,通过服务器公钥加密传给服务器,服务器用私钥解密获得第三个随机数。这样双方都有了三个随机数。于是用这三个随机数来生成对话密钥,来加密之后的通信过程。

参考资料: 阮一峰 图解SSL/TLS协议

全部评论

相关推荐

点赞 评论 收藏
分享
10-13 22:56
门头沟学院 C++
rt,鼠鼠的浪潮网签明天过期,鼠鼠是山东人,好像自己也能接受。之前的面试大厂基本挂干净了,剩下小米二面后在泡,问了下面试官没有挂,但要泡。还有海信似乎也通过了,不过在深圳,鼠鼠也不是很想去。其它还有一些公司应该陆陆续续还有一些面试,现在有些纠结是直接签了还是再等再面呢?大佬们能不能给鼠鼠提一些意见,万分感谢!!!
牛客78696106...:浪潮可不是开摆,当初我还是开发的时候我组长跟我说他们组有段时间天天1,2点走,早上5点就来,全组肝出来心肌炎,浪潮挣钱省立花可不是说说,当然也看部门,但是浪潮普遍就那dio样,而且你算下时薪就知道不高,没事也是9点半走,不然算你旷工
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务