加密

HTTP 有以下安全性问题:

  • 使用明文进行通信,内容可能会被窃听;
  • 不验证通信方的身份,通信方的身份有可能遭遇伪装;
  • 无法证明报文的完整性,报文有可能遭篡改。

HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。

通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。

img

对称加密

加密的密钥和解密的密钥是同一个

非对称加密

加密的密钥和解密的密钥不是同一个(公钥,私钥)

  • 创建者必须创建一个密钥对(公钥和私钥)
  • 公钥加密必须私钥解密
  • 私钥加密必须公钥解密
  • 创建者保留私钥,公钥向外界公开

使用非对称加密的场景

不放心对方保管密钥的情况

非对称加密的例子

image-20210820174422038

对比

  • 非对称加密安全性更好
  • 对称加密计算速度更快
  • 一般都是混合使用(使用非对称加密协商密钥,然后进行对称加密)

HTTPs

https 的工作过程

image-20210820174718847

  • SYN
  • SYN-ACK
  • ACK 三次握手完成(至此都是不加密的,因为是三次握手)
  • 然后服务端回传证书(不加密)
  • 客户端密钥(协商)(非对称加密)
  • 完成(非对称加密)
  • 然后才进行数据传输(对称加密)

认证

通过使用 证书 来对通信方进行认证。

数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。

服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。

进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。

img

完整性保护

SSL 提供报文摘要功能来进行完整性保护。

HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。

HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。

HTTPS 的缺点

  • 因为需要进行加密解密等过程,因此速度会更慢;
  • 需要支付证书授权的高额费用。