HTTPS如何建立安全连接

一、加密方式

HTTPS用到的加密方式有对称加密和非对称加密两种:

  • 对称加密:只需要一个秘钥,加密和解密都是用该秘钥。
  • 非对称加密:需要两把钥匙,一把公钥一把私钥,公钥对外暴露,私钥自己保存,公钥加密的信息只能用私钥解密,私钥加密的信息可以用公钥解密。

二、用非对称加密传递对称加密的秘钥

假设客服端向服务端请求连接:

  1. 客户端向服务端发送信息请求连接;
  2. 服务端向客服端发送自己的公钥;
  3. 客服端收到公钥,然后生成用于对称加密的秘钥A,使用收到的公钥对秘钥A进行加密,并将加密过的秘钥发给服务器;
  4. 服务器收到客户端发送的加密过的秘钥,使用自己的私钥进行解密,得到秘钥A;

此时客服端和服务端通过非对称加密进行传输得到了用于对称加密的秘钥。
注:为什么客户端和服务端不使用非对称加密进行信息传输?
因为非对称加密生成和加密的消耗时间比较长,为了节省双方的计算时间,通常只用它来传输对称加密的秘钥,然后使用对称加密进行通话。

三、中间人攻击

上述的加密方式看起来安全,但是有一种攻击方式其无法防范,即“中间人攻击”。下面采用一个例子讲述何为中间人攻击:
假设客服端向服务端请求连接,中间人小黑采用“中间人攻击”窃听通话:

  1. 客服端向服务端发送信息请求连接;
  2. 小黑截获该请求,伪装客服端向服务端发送请求连接;
  3. 服务端收到请求,向客户端发送自己的公钥;
  4. 小黑截获该公钥,伪装服务端向客户端发送自己伪造的公钥;
  5. 客户端收到小黑的公钥,生成对称加密的秘钥A,使用收到的公钥加密后发给服务端;
  6. 小黑截获加密的秘钥,使用自己私钥进行解密,得到秘钥A,使用服务端的公钥进行加密后伪装成客户端将其发给服务端;
  7. 服务端使用自己的私钥解密得到秘钥A;

后续客户端和服务端使用秘钥A,通过对称加密进行通话,但是此时小黑也拥有秘钥A,因此小黑可以窃听全部的通话内容。

四、CA校正

“中间人攻击”之所以能生效就是因为客户端无法确定自己收到的公钥是否是未被篡改过的服务端的公钥,因为引入了CA校正用于确保来自服务端的公钥不会被篡改。

Guess you like

Origin blog.csdn.net/qingyunhuohuo1/article/details/121551153