计网 https 的加密方式

102 阅读4分钟

一、http 出现的安全问题

http 在通信过程中存在两个安全性问题

  1. 通信使用明文(不加密),内容可能被窃听
  2. 不验证通信方的身份,因此有可能遭遇伪装

二、https 保证安全的手段

https 并不是一个新的协议, 而是一个加强版的 http 。其原理是在 http 和TCP之间建立了一个中间层,当 http 和TCP通信时并不是像以前那样直接通信,直接经过了一个中间层进行加密,将加密后的数据包传给TCP, 响应的,TCP必须将数据包解密,才能传给上面的 http 。这个中间层也叫安全层安全层的核心就是对数据加解密

主要依赖的手段

  1. 对称加密:采用协商的密钥对数据加密
  2. 非对称加密:实现身份认证和密钥协商
  3. 摘要算法:验证信息的完整性
  4. 数字签名:身份验证

三、对称加密

对称加密指的是加密和解密使用的秘钥都是同一个,是对称的。只要保证了密钥的安全,那整个通信过程就可以说具有了机密性

image.png

生成密钥过程:

  1. 首先,客户端会给服务器发送一个随机数client_random 和一个加密的方法列表。
  2. 服务器接收后给客户端返回另一个随机数server_random和加密方法。
  3. 现在,两者拥有三样相同的凭证: client_randomserver_random和加密方法。
  4. 接着用这个加密方法将两个随机数混合起来生成密钥,这个密钥就是浏览器和服务端通信的暗号

实现过程:

在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥对数据进行加密,客户端收到加密数据之后,用刚才收到的密钥进行解密。

image.png

优缺点:

  • 优点:对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高
  • 缺点:对称加密,密钥管理的安全性很低,因为加密和解密都使用同一个密钥,在密钥的发送过程中,密钥可能被第三方截取,导致第三方也可以破解密文

四、非对称加密

非对称加密,存在两个秘钥,一个叫公钥,一个叫私钥。两个秘钥是不同的,公钥可以公开给任何人使用,私钥则需要保密,公钥主要是用来加密的,私钥则是用来解密

公钥与私钥是一对。传输双方均有自己的一对密钥(也就是双方每方均有:公、私密钥一把,双方加起来共4把)

image.png

实现过程:

  1. 客户端要向服务器发送信息,客户端和服务器都要产生一对用于加密和解密的公钥和私钥
  2. 客户端的私钥保密,客户端的公钥告诉服务器;服务器的私钥保密,服务器的公钥告诉客户端
  3. 客户端要给服务器发送信息时,客户端用服务器的公钥加密信息,因为服务器的公钥是公开的,客户端可以得到
  4. 客户端将这个消息发给服务器(已经用服务器的公钥加密消息)
  5. 服务器收到这个消息后,服务器用自己的私钥解密客户端的消息。其他所有收到这个报文的人都无法解密,因为只有服务器才有服务器的私钥

image.png

优缺点:

  • 非对称密钥的算法强度复杂(是优点也是缺点),安全性依赖于算法与密钥
  • 优点:安全性较高,比对称密钥安全性高很多。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要
  • 缺点:由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快

五、混合加密

  • 在 https 通信过程中,采用的是对称加密+非对称加密,也就是混合加密,因为只用对称加密的话,会有安全隐患,只用非对称加密,对性能消耗又太大

image.png

实现过程:

  1. 浏览器向服务器发送client_random和加密方法列表
  2. 服务器接收到,返回server_random、加密方法以及公钥
  3. 浏览器接收,接着生成另一个随机数pre_random, 并且用公钥加密,传给服务器。(敲黑板!重点操作!)
  4. 服务器用公钥解密这个被加密后的pre_random

现在浏览器和服务器有三样相同的凭证:client_randomserver_randompre_random。然后两者用相同的加密方法混合这三个随机数,生成最终的密钥

即使被第三方截取到密钥也没有用,因为密钥已经被公钥给加密过了,没有私钥去解密,第三方也不能获取到秘文的内容