• 对称加密->非对称加密->非对称+对称加密->CA证书


    对称加密

    1.客户端与服务端协商加密算法及压缩方法以及ssl/tls最高协议版本号等信息发送给服务器

    2.服务器选定加密方法,压缩方法

    3.客户端把加密套件及生成随机clientrandom数发送给服务器

    4.服务器选好加密套件及发送随机serverrandom数发送给客户端

    5.浏览器确认

    6.服务器确认

    7.clientrandom+serverrandom 生成密钥加密数据发送给服务器 

    8.服务器用clientrandom +serverfandom 生成密钥解析数据

    缺点:黑客拿到随机数可以解密

    非对称加密

    服务器保留私钥,把公钥及选好的加密套件发送给浏览器

    浏览器用公钥加密数据 

    服务器用私钥解析加密数据

    缺点:非对称加密效率低,服务器端用私钥加密传输数据,浏览器端用公钥解密时容易被获得公钥

    非对称加密传输对称加密时的密钥,传输数据其实还是用的对称加密

    1.客户端把加密套件及生成随机clientrandom数发送给服务器

    2.服务器返回加密套件及生成serverrandom数公钥发送给浏览器

    3.浏览器用生成新的随机数newclientrandom,公钥加密newclientrandom +浏览器确认 发送给服务器

    4.服务器用私钥解密newclientrandom

    5.服务器确认发送给浏览器

    6.浏览器用serverrandom + clientrandom + newclientrandom 生成密钥传输数据

    7.服务器用serverrandom + clientrandom + newclientrandom 生成密钥解密数据

    缺点:DNS 劫持将 IP 地址替换成了黑客的 IP 地址,这样我访问的其实是黑客的服务器了,黑客就可以在自己的服务器上实现公钥和私钥

     引入CA证书

    引入CA证书之前有一套公钥和私钥

    把公钥放在CA证书里面

    1.当服务器端返回加密套件 + serverrandom + 数字签名证书

    2.客户端拿到签名证书解析公钥

    3.客户端生成newclientrandom 用共钥匙加密newclientrandom

    4.服务端用私钥解密newclientrandom

    相对上种方式只是引入CA证书,并将公钥放在CA证书里面,私钥用来解密加密后的newclientrandom

    验证CA可靠性,浏览器内置顶级CA

  • 相关阅读:
    Python基础04 字典基本操作
    Python基础03 列表、元组基本操作
    Python基础02 字符串基本操作
    Python基础07 函数作用域、嵌套函数、闭包函数、高阶函数及装饰器的理解
    Python随机数random模块学习,并实现生成6位验证码
    Python与时间相关的time、datetime模块的使用
    Python PIL库安装
    Python中可变对象和不可变对象
    Mac环境下Docker及Splash的安装运行教程
    redis 链表(list)操作
  • 原文地址:https://www.cnblogs.com/MDGE/p/15268654.html
Copyright © 2020-2023  润新知