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协议

全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务