HTTPS原理

概念

HTTPS = HTTP over TLS

握手

HTTP只需要TCP握手,2*RTT

HTTPS握手类型

  • 完全握手
    多2*RTT
    • 阶段一:
      Client => Server: 支持版本、密码套件
      Client <= Server: 密码套件、证书
    • 阶段二:
      Client => Server: 密钥交换、完成
      Client <= Server: 完成
  • 简化握手(TLS 1.2)
    1*RTT
    不需要阶段二
  • 0*RTT握手(TLS 1.3)

HTTPS握手原因

  • 身份认证(证书) => 防冒充
    确保正确的用户访问到正确的网站
    • 证书的作用
      • 确认身份
      • 校验签名
      • 传递公钥
  • 数据加密 => 防窃听
    第三方无法直接查看原始内容
  • 数据一致性 => 防篡改、防抵赖
    及时发现第三方对内容的篡改

Tip: 数字签名

  1. 签名过程:内容经过Hash运算得到摘要,将摘要用私钥加密作为签名
  2. 通过网络传输:将签名和文件一起发送
  3. 接收验证签名: 将内容进行Hash运算得到摘要,将签名用公钥解密也得到一份摘要,两份摘要进行比对
    使用Hash摘要的原因:
  4. 全文直接签名太耗费资源
  5. Hash摘要可以保证内容修改任意部分,摘要都会变化

传输

数据加密

  • 对称加密
    加解密用同一个密钥
  • 非对称加密
    密钥分为公钥和私钥
    可以用公钥加密私钥界面
    也可以私钥加密公钥解密

从性能上来说,对称加密比非对称加密快两个数量级

方案

  • 握手阶段使用非对称加密,协商传输密钥
  • 传输采用对称加密,速度快

访问速度

  • 网络耗时
    最坏情况下会增加7个RTT
  • 计算耗时
    客户端,50ms
    服务端,15ms
# 推荐文章
  1.微机原理知识汇总
  2.WSL的使用教程

:D 一言句子获取中...