• https相关内容


    前言

    本文写https相关内容,持续补充

    基础概念理解

    1. 对称加密

      • 加解密秘钥是同一个
    2. 非对称加密

      • 公钥, 私钥
        • sa -> 公钥私钥都是两个数字
        • ecc -> 椭圆曲线, 两个点
      • 公钥加密, 私钥解密
        • 数据传输的时候使用
      • 私钥加密, 公钥解密
        • 数字签名的时候使用
    3. 哈希函数

      • md5/ sha1/sha2
      • 得到散列值, 散列值是定长的
    4. 消息认证码

      • 生成消息认证码: (将原始数据+共享秘钥) * 进行哈希运算 = 散列值

      • 验证消息认证码:

        • (接收的原始数据 + 共享秘钥) * 哈希运算 = 新的散列值
        • 新散列值和旧散列值进行比较, 看是不是相同
      • 作用:

        • 验证数据的一致性型
      • 弊端:

        • 两端共享秘钥必须相同, 共享秘钥分发困难
        • 所以后面不再使用消息认证码
    5. 数字签名(openssl库) -> 目的告诉所有人这个数据的所有者是xxx, xxx就是拿私钥的人

      • 生成一个非对称加密的密钥对
        • 公钥
        • 私钥
      • 生成签名:
        • 对原始数据进行哈希运算 -> 散列值
        • 使用非对称加密的私钥, 对散列值进行签名(私钥加密) -> 密文
        • 得到的密文就是数字签名
      • 签名的校验:
        • 校验者会收到签名者发送的数据

          • 原始数据
          • 数字签名
        • 对接收的数据进行哈希运算 -> 散列值

        • 使用非对称加密的公钥, 对数字签名进行解密 -> 明文 == 签名者生成的散列值

        • 校验者的散列值 和 签名者的散列值进行比较

          • 相同 -> 校验成功了, 数据属于签名的人
          • 失败 -> 数据不属于签名的人
        • 弊端:

          • 接收公钥的人没有办法校验公钥的所有者在这里插入图片描述
    6. 证书

      • 由一个受信赖的机构 (CA) 对某人的公钥进行数字签名
      • CA有一个密钥对
        • 使用ca的私钥对某个人的公钥进行加密 -> 证书
          • 证书里有这个人 的公钥
          • 证书里有这个人的个人信息

    https传输过程

    在这里插入图片描述

    1. 在百度服务器端首先生成一个秘钥对 -> 对公钥分发
    2. 百度将公钥给到了CA认证机构, ca对私钥进行签名 -> 生成了证书.
    3. 第一步第二部只做一次
    4. 客户端访问百度, 百度将ca生成的证书发送给客户端
    5. 浏览器对收到的证书进行认证
    6. 如果证书没有问题 -> 使用ca的公钥将服务器的公钥从证书中取出
    7. 我们得到了百度的公钥
    8. 在浏览器端生成一个随机数, 使用得到的公钥进行加密, 发送给服务器
    9. 服务器端使用私钥解密, 得到了随机数, 这个随机数就是对称加密的秘钥
    10. 现在秘钥分发已经完成, 后边的通信使用的的对称加密的方式
  • 相关阅读:
    Python语言:经典例题分析讲解
    使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“
    【Linux】常见的用于定位网络问题的命令(概述)
    CodeForces刷题C语言:Army、Blinds、Cubical Planet、Find Color、Translation
    JavaScript 中的异步编程
    自学网络安全———(黑客技术)
    接口响应优化方案
    刷题记录:牛客NC25088Corn Fields
    一键复制 — vue
    十大排序 —— 桶排序
  • 原文地址:https://blog.csdn.net/qq_42956653/article/details/126811301