• 加密算法发展简介


    1:对称加密算法

    客户端加密数据和服务端解密数据,使用的相同的秘钥:
    固定秘钥:双方约定好一个固定秘钥;
    随机秘钥:双方约定每次建立连接的时候,某固定BYTE为秘钥;

    缺点:秘钥固定,容易被破解;

    客户端 服务端 发送加密数据 1 数据解密 2 返回响应 3 数据解密 4 客户端 服务端

    2:非对称秘钥算法

    非对称加密有两个秘钥,一个公开的叫公钥,一个私藏的叫私钥;公钥加密后只能用私钥解开,反过来也一样;
    缺点:1:公钥是公开的,一般不会用私钥加密,公钥解密;所以为了保证数据通信,客户端还需要把客户端公钥,发送给服务端
    2:每次需要使用秘钥对进行加解密,比较浪费时间;

    客户端 服务端 公钥,私钥 建立连接请求 1 返回连接请求 2 发送公钥数据 3 发送使用公钥加密的数据 4 使用私钥进行解密 5 客户端 服务端

    3:非对称与对称加密结合

    先建立连接,来传输秘钥对的公钥和私钥;然后使用秘钥对来传输 对称加密的秘钥,后续传输数据再使用 对称加密算法;
    缺点:对称加密的秘钥是一个随机数,存在被预测出来的可能性,尽管可能性非常低;

    客户端 服务端 公钥,私钥 建立连接请求 1 返回连接请求 2 发送公钥数据 3 发送使用公钥加密的 对称秘钥 4 使用私钥解密 对称秘钥 5 使用对称加密算法传输数据 6 使用对称解密算法 数据解密 7 客户端 服务端

    4:秘钥计算

    客户端和服务端各自生成一个随机数发给对方,客户端再额外加密传输一个随机数给服务器,然后双方都用这三个随机数生产真正的秘钥;并且在正式传输数据之前,要先进行秘钥交互,确认双方计算出来的秘钥是一样的;

    客户端 服务端 公钥,私钥 建立连接请求 1 返回连接请求 2 发送随机数1 3 发送随机数2 4 发送公钥 5 发送使用公钥加密的 随机数3 6 利用三个随机数,计算秘钥 7 利用三个随机数,计算秘钥 8 双方交换确认计算的秘钥一致 9 使用对称加密算法传输数据 10 使用对称解密算法 数据解密 11 客户端 服务端

    缺点:会存在中间人攻击漏洞,即有一个中间人在客户端和服务端转发了所有的数据,但是客户端和服务端并不知情,导致数据泄漏;

    客户端 中间人 服务端 发送数据 1 转发数据 2 发送数据 3 转发数据 4 客户端 中间人 服务端

    5:数字证书

    客户端和服务端利用公证人的身份进行非对称加密,利用hash值,进行数字签名加密验证;除了中间人偷到了公证人的私钥,否则中间人是没办法伪造 数字证书的;
    利用数字证书加密的连接,都从http变为了https;

    客户端 公证人 服务端 准备一队非对称加密的秘钥,,并公开公钥 1 登记自己的公钥,名称等信息 2 根据服务端信息,计算hash值, 用私钥把hash值进行加密,机密后的结构就是数字签名 3 返回数字证书,即把 登记信息和数字签名封装为一个新文件; 4 建立https连接请求 5 返回数字证书 6 把证书里面的信息也计算一遍hash值1; 利用公证人的公钥,将证书里面的数字签名进行解密,得到公证人计算的hash值2; 将hash值1和hash值2进行对比,如果相等则验证通过; 7 客户端 公证人 服务端

    6:信任链

    当客户端和服务端越来越多的时候,一个 公证人就忙不过来;就通过层层分包,设立多级公证人信息;

    根证书1
    二级证书1
    二级证书2
    三级证书1
    三级证书2
    三级证书3
    三级证书4

    以后在验证网站服务器证书时,就要先去验证证书的签发者,然后一层层向上验证,查看最终的签发者是否在操作系统安装的 根证书列表中;

    一级公证人是安装的根证书,预先安装在我们的操作系统中;可通过‘“控制面板”->“证书” 进行查看
    在这里插入图片描述

  • 相关阅读:
    【附源码】计算机毕业设计JAVA专利查询与发布系统设计与实现
    Java的基本数据类型
    C#小知识
    7-VMware Horizon 2203 虚拟桌面-事件数据库配置(七)
    0X03
    短剧app系统开发(对接广告联盟)源码搭建
    git merge和git rebase的区别
    保护网站安全:深入理解文件上传漏洞
    Activiti——流程的挂起与激活
    1626 无矛盾的最佳球队(排序+动态规划)(灵神笔记)
  • 原文地址:https://blog.csdn.net/dujunqiu/article/details/132724549