• HTTPS应该搞懂了吧。


    1.对称加密:所有客户端和服务端用同一个密钥,如果秘钥被获取,所有消息如同明文;如果单对客户端和服务端用一个密钥,服务端要维护大量的密钥,内存压力大。

    2.非对称加密:服务端提供私钥和公钥的秘钥对,私钥自己保留,公钥发送给客户端;客户端就算私钥被别人偷走,也无法破译信息;但是非对称加密比较慢。

    3.非对称加密和对称加密:服务度提供私钥和公钥,公钥发给客户端;客户端收到公钥后,随机生成对称加密秘钥,并发给服务端保留。

    4.第三方劫持问题:服务端发给客户端的公钥被第三方劫持,第三方产生新的秘钥对,将公钥发送给客户端;客户端收到公钥后,生成对称秘钥发给服务端,被第三方劫持;第三方用私钥解密,发给服务端。这个时候第三方虽然没有服务端的私钥,但能解析出来服务端的数据,双方的通信数据都要被第三方发现。这里需要客户端知道自己通信的对象时服务端,而不是第三方,这就引出了CA机构。

    5.数字证书:服务端向CA机构,提供公钥、网址、过期时间等信息,CA机构制作证书给服务端。服务端在收到客户端的请求时,携带证书一起发过去。

    6.制作数字证书:先把数据hash,得到散列值;通过CA机构的私钥进行加密得到数字签名;把数据和签名一起作为数字证书。

    7.验证数字证书:客户端收到服务端发来的数字证书,先用浏览器存的CA公钥解析数据,得到数据和签名;把数据hash得到散列值;把数字签名用CA公钥解密得到散列值;两者比较看看是否一致。

    8.CA机构解决了两个问题,一个是通过签名保证数据没有修改。一个是数据没有掉包,证书里面有网站的信息。

    9.最终的过程:

    1.客户端ClientHello,选择SSL版本、加密算法、随机数A

    2.服务端ServerHello,选择SSL版本、加密算法、证书、随机数B

    3.客户端检查证书,使用特定的方法生成pre_master key,通过公钥加密发到服务端

    4.服务端通过私钥解密拿到pre_master key,最终有三个随机数组合成最终的对称秘钥。

  • 相关阅读:
    vue 组件基础
    面试题:熟悉设计模式吗?谈谈简单工厂模式和策略模式的区别
    带你一起玩转Java流
    【笔试强训】day1
    day41
    IDEA下新建SpringBoot项目详细步骤
    Orin 调试GMSL camera遇到问题之MIPI CSI2 报文解析
    php+java+python学生日常行为管理系统
    2023.11.22 -数据仓库
    LLM 技术图谱(LLM Tech Map)& Kubernetes (K8s) 与AIGC的结合应用
  • 原文地址:https://blog.csdn.net/Sea_muxixi/article/details/126109100