zoukankan      html  css  js  c++  java
  • 对称加密、非对称加密、数字证书各方交互过程简介

      一、文章来源参考文章

      二、术语

      三、对称加密过程

      四、非对称加密过程

      五、基于非对称加密算法的数字签名过程

      六、基于非对称加密算法服务端S公钥传输前过程

      七、【重要】基于非对称加密算法的数字证书C/S架构传输过程

    一、文章来源参考文章

    数字签名与数字证书技术简介(一)

    数字签名与数字证书技术简介(二)

    数字签名与数字证书技术简介(三)

     (以下内容为本人阅读以上文章后的个人总结,方便日后复习,有不足之处,欢迎指教)

    二、术语

     密码:分以下两种
           1.登录各个系统的用户密码口令,是便于用户记忆的一类密钥;
           2.密码学中的密码,包含了信息加密编码、密文解密解码、数据完整性验证等一系列信息变换过程
     密钥:secret key 是一种参数,具体来说,密钥是一组信息编码,它参与密码的“运算”,并对密码的“运算”起特定的控制作用
     信息摘要:(信息指纹/数字摘要/消息摘要/数字指纹)将任意长度的消息变成固定长度的短消息
     加密算法:
     加密:具备三要素,数据源+密钥+加密算法
     对称加密:A使用密钥k进行加密,B使用密钥k进行解密。常用的对称加密算法:   DES,3DES,AES
     非对称加密:使用一对密钥,分公钥和私钥,两者可互为加密和解密,如私钥加密公钥解密,或者公钥加密私钥解密,常用加密算法:RSA
     公钥:PublicKey 一段固定长度的字符串。一般密钥会用于传输,交给远端客户,
     私钥:privateKey 存放在本地,不对外传播的密钥
     HASH算法:任意长度内容P通过散列算法变成固定长度的哈希值H,单向不可逆(即H不能反推回P)
     PKI:Public Key Infrastructure
     CA:Certficate Authority 数字证书认证中心
     数字签名:
     签名结果:原始文件和摘要密文的形成称为签名结果
     PKCS10数据包:包含公钥,算法(RSA),公钥的所有者(主题),该公钥的有效期等一系列属性
     数字证书:为了给客户端传输公钥而存在的安全机制。PKCS10数据包经过CA签名后生成数字证书

    三、对称加密过程

      1.对称加密过程图

         服务端S:

        客户端C:

      

      2.对称加密流程解说

        1)明文内容P 加上密钥K,通过对称加密算法,如DES,形成密文M
        2)(通过互联网)传输密文M给客户C
        3)客户C通过密钥K和算法DES将密文M进行解密,得到明文内容P

      3.不足点

        1)安全性方面有泄密风险
            
        2)可用性方面低
            如果有100个客户要与服务端通信,每个客户之间不能使用相同密码(增加泄密可能),使用100个不同密码(可用性降低)

    四、非对称加密过程

      1.非对称加密过程图

      2.非对称加密流程解说

        1)服务端S使用本地私钥pri+明文内容P,通过非对称加密算法RSA,得到密文M
        2)(通过互联网)传输密文M给客户C
        3)客户C获得服务端S的公钥Pub(通过互联网,第三方,U盘....)
        4)客户C用公钥Pub和算法RSA,将密文M解密后,得到明文内容P

      3.不足点

        1)不知道服务器身份是否可靠
        (比如你要访问建行网站,被攻击者重定向到了钓鱼网站,页面跟真实建行一模一样,用户在不知情的情况下,输入了账号密码,就会被恶意盗取)
        2)算法效率低

    五、基于非对称加密算法的数字签名过程

      1.数字签名过程图

        服务端S:

      客户端C:

      2.数字签名流程解说

        1)服务端将明文内容P进行hash算法(如SHA1),转化成固定长度的唯一哈希值H,H称为信息摘要I
        2)服务端使用本地私钥Pri通过RSA算法,将信息摘要I转化成密文M
        3)服务端将原始内容P和密文M一起发送给客户端
        4)客户端接收到服务端原始内容P和密文M
        5)客户端使用服务端的公钥Pub对密文M,采用RSA算法进行解密得到信息摘要I
        6)客户端将收到的原始内容P,进行hash算法(与步骤1算法一致,如SHA1),转化成固定长度的哈希值H’,H‘称为信息摘要I’
        7)客户端比对信息摘要I和信息摘要I'是否一致,一致则代表数据未被篡改,5,6,7这个过程称为验签

      3.不足点

        1)防止不了钓鱼网站
        2)服务端身份合法性无法验证

    六、基于非对称加密算法服务端S公钥传输前过程

      1.服务端S公钥与CA机构传输过程图

      2.服务端S公钥与CA机构传输流程解说

        1)服务端将自己的公钥附加一系列信息,形成PKCS10数据包,发送给CA进行签名
        2)CA机构通过技术手段,认可了服务端发来的PKCS10数据包合法
        3)CA使用自己本地私钥Priv02 对PKCS10数据包(有时CA会简单修改PKCS10的一些内容,将本地公钥Pub02记录到数字证书),采用RSA算法进行签名,生成数字证书D(数字证书遵循X509标准)

    七、【重要】基于非对称加密算法的数字证书C/S架构传输过程

      1.过程图

       服务端S(数字证书获取参考上面"六、基于非对称加密算法服务端S公钥传输前过程"):

      客户端C:

      2.流程解说

        1)服务端S将明文内容P进行hash算法(如SHA1),转化成固定长度的唯一哈希值H,H称为信息摘要I
        2)服务端S使用本地私钥Pri通过RSA算法,将信息摘要I转化成密文M
        3)服务端S将自己的公钥附加一系列信息,形成PKCS10数据包,发送给CA进行签名
        4)CA机构通过技术手段,认可了服务端发来的PKCS10数据包合法
        5)CA使用自己本地私钥Priv2 对PKCS10数据包(有时CA会简单修改PKCS10的一些内容,将本地公钥Pub02记录到数字证书),采用RSA算法进行签名,生成数字证书D(数字证书遵循X509标准)
        6)服务端S获得数字证书D
        7)服务端S将明文内容P、密文M、数字证书D发送给客户端C
        8)客户端C将从数字证书里提取CA的公钥Pub02,对数字证书进行验签后,得到服务端S的公钥Pub
        9)客户端C使用服务端S的公钥Pub对密文M,采用RSA算法进行解密得到信息摘要I
        10)客户端将收到的原始内容P,进行hash算法(与步骤1算法一致,如SHA1),转化成固定长度的哈希值H’,H‘称为信息摘要I’
        11)客户端比对信息摘要I和信息摘要I'是否一致,一致则代表数据未被篡改,9,10,11这个过程称为验签
        12)此为行业解决目前主流解决方案
  • 相关阅读:
    Spring AOP里的静态代理和动态代理,你真的了解嘛?
    redis的三种启动方式
    Linux MySQL分库分表之Mycat
    Linux 之Mycat搭建报错 java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException
    Linux MySQL Proxy 读写分离
    Linux MySQL集群搭建之主从复制
    Linux 虚拟机详细安装MySQL
    MySQL 性能优化细节
    MySQL 性能优化之慢查询
    MySQL事务处理
  • 原文地址:https://www.cnblogs.com/lisenlin/p/14382899.html
Copyright © 2011-2022 走看看