HTTPS

不加密的HTTP面临的风险

HTTP信息明文传播,带来了三大风险。

  1. 窃听风险(eavesdropping):第三方可以获知通信内容。
  2. 篡改风险(tampering):第三方可以修改通信内容。
  3. 冒充风险(pretending):第三方可以冒充他人身份参与通信。

HTTPS通信的基本过程

  1. 客户端向服务器端索要并验证公钥。
  2. 双方协商生成 session密钥
  3. 双方采用session密钥进行加密通信,就是普通HTTP协议之上的加密通信,通信内容通过session密钥加密。
    第1、2步称为TLS握手。

TLS 握手过程

  1. 客户端请求 ClientHello
    在这一步,客户端主要向服务器提供以下信息。
    (1) 支持的协议版本,比如TLS 1.0版。
    (2) 一个客户端生成的随机数,稍后用于生成session密钥
    (3) 支持的加密方法,比如RSA公钥加密。
    (4) 支持的压缩方法。

  2. 服务器回应 SeverHello
    服务器的回应包含以下内容。
    (1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
    (2) 一个服务器生成的随机数,稍后用于生成session密钥
    (3) 确认使用的加密方法,比如RSA公钥加密。
    (4) 服务器证书。
    除了上面这些信息,如果服务器需要确认客户端的身份,就会再包含一项请求,要求客户端提供"客户端证书"。比如,金融机构往往只允许认证客户连入自己的网络,就会向正式客户提供USB密钥,里面就包含了一张客户端证书。

TLS handshake
  1. 客户端响应
    (1) 一个随机数。该随机数用服务器公钥加密,防止被窃听。
    (2) 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    (3) 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。

非对称加密的缺点 / 为什么要使用对称秘钥

公钥加密计算量太大。造成CPU占用高、耗电、解密时间长的问题。

如何保证公钥不被篡改?

使用数字证书机制。将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。

你可能感兴趣的:(HTTPS)