HTTPS原理以及握手阶段

拜读了阮一峰大神关于HTTPS的文章,恍然大悟了不少以前看的似懂非懂的HTTPS知识。特此整理下来,让本身可以完全消化,同时也但愿能帮助到你们。html

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误觉得中间人就是A3d

  1. 数字证书

数字证书包括 公钥和数字签名 公钥经过hash算法能够获得数据摘要,数据摘要使用CA的私钥加密获得数字签名。cdn

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

HTTPS握手的五个阶段:

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

小结:

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

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

相关文章
相关标签/搜索