http原理

253 阅读4分钟

HTTPS原理

参考文献

为什么有https

  • https解决了什么问题
  1. 因为http不安全,由于 HTTP 天生明文传输的特性,在 HTTP 的传输过程中,任何人都有可能从中截获、修改或者伪造请求发送。

  2. 在 HTTP 的传输过程中不会验证通信方的身份,因此 HTTP 信息交换的双方可能会遭到伪装,也就是没有用户验证

  3. 在 HTTP 的传输过程中,接收方和发送方并不会验证报文的完整性

  • 什么是https

在 HTTPS 中,使用传输层安全性(TLS)安全套接字层(SSL)对通信协议进行加密。也就是 HTTP + SSL(TLS) = HTTPS。

  • HTTPS做了什么

加密(Encryption), HTTPS 通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。

数据一致性(Data integrity),数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整的传输到服务端,保证用户发的是什么,服务器接收的就是什么。

身份认证(Authentication),是指确认对方的真实身份,也就是证明你是你(可以比作人脸识别),它可以防止中间人攻击并建立用户信任。

120210715-0.png

HTTPS中TLS的加密算法

对称加密算法

就是加密和解密使用同一个密钥。

  1. 浏览器给服务器发送一个随机数client-random和一个支持的加密方法列表
  2. 服务器给浏览器返回另一个随机数server-random和双方都支持的加密方法
  3. 然后两者用加密方法将两个随机数混合生成密钥,这就是通信双上加解密的密钥

问题是双方如何安全的传递两个随机数和加密方法,直接传给客户端,那过程中就很可能被窃取,别人就能成功解密拿到数据。

不对称加密算法

就是一对密钥,有公钥私钥,其中一个密钥加密后的数据,只能让另一个密钥进行解密。

TLS实际用的是两种算法的混合加密通过 非对称加密算法 交换 对称加密算法 的密钥,交换完成后,再使用对称加密进行加解密传输数据。这样就保证了会话的机密性。

摘要算法

主要用于保证信息的完整性。常见的MD5算法散列函数哈希函数都属于这类算法,其特点就是单向性无法反推原文

如何保证数据不被篡改?签名原理和证书?

数字证书(数字签名)

数字证书需要向有权威的认证机构(CA)获取授权给服务器。首先,服务器CA机构分别有一对密钥(公钥和私钥),然后是如何生成数字证书的呢?

  • CA机构通过摘要算法生成服务器公钥的摘要(哈希摘要)
  • CA机构通过CA私钥及特定的签名算法加密摘要,生成签名
  • 签名服务器公钥等信息打包放入数字证书,并返回给服务器

证书验证流程

  • 使用CA公钥和声明的签名算法对CA中的签名进行解密,得到服务器公钥的摘要内容
  • 再用摘要算法对证书里的服务器公钥生成摘要,再把这个摘要和上一步得到的摘要对比,如果一致说明证书合法,里面的公钥也是正确的,否则就是非法的

HTTPS优缺点

优点

  • 内容加密,中间无法查看原始内容
  • 身份认证,保证用户访问正确。如访问百度,即使DNS被劫持到第三方站点,也会提醒用户没有访问百度服务,可能被劫持
  • 数据完整性,防止内容被第三方冒充或篡改
  • 虽然不是绝对安全,但是现行架构下最安全的解决文案了,大大增加了中间人的攻击成本

缺点

  • 要钱,功能越强大的证书费用越贵
  • 证书需要绑定IP,不能在同一个IP上绑定多个域名
  • https双方加解密,耗费更多服务器资源
  • https握手更耗时,降低一定用户访问速度