zoukankan      html  css  js  c++  java
  • HTTPS加密过程分析

    HTTPS加密的作目的是解决信息传输过程中数据被篡改,窃取

    HTTPS使用了一系列的加密算法:对称加密算法、非对称加密算法、单向加密算法

    非对称加密算法

    分为公钥部分和私钥部分,用公钥加密的密文只能由私钥解开

    ·diffie-Hellman key exchange

    ·RSA

    ·ECC

    对称加密算法

    用同一个密钥解开

    ·DES、3DES

    ·AES

    ·IDEA

    ·RC4

    单向加密算法

    不可逆的过程加密过后无法返回

    ·MD5   长度128

    ·SHA-1  长度160

    ·SHA-2  长度224、256、384、512

    HTTPS数据传输过程

    ①客户端发起HTTPS连接握手

    ②服务端收到HTTPS握手连接请求,与客户建立握手过程,和TCP的三次握手类似,并发送一系列的加密算法组合给客户端,与客户端协商加密算法组合

    ③客户端收到这一系列的组合,从中选择一个自己能够支持的并且加密级别最高的加密算法组合,通告给服务端

    ④服务端收到并确认客户端选择的加密组合,并将公钥证书发送给客户端,(这个公钥证书使用了非对称加密算法,使用这个公钥加密的信息只能由私钥解开,而这个私钥只有公钥的颁布者也就是服务端拥有,也就是说客户端用公钥加密的信息,只能有拥有私钥的服务端解开)

    ⑤客户端收到公钥证书之后,临时随机生成一个对称密钥用来对数据加密,用公钥对生成的对称密钥进行加密得到对称密钥加密密文,这个对称密钥加密密文只能通过服务端的私钥解开

    ⑥服务端收到对称密钥加密密文,用私钥解开得到对称密钥

    ⑦客户端开始对数据加密,先用对称密钥加密数据得到数据密文,再对数据密文进行hash计算得到一个hash值,再将这个hash值用公钥加密得到hash值密文,然后将数据密文、hash值、hash值密文这三个部分一起发送给服务端

    ⑧服务端收到数据密文、hash值、hash值密文,首先用私钥解开hash值密文,结果和收到的hash值对比验证hash值是否在传输的过程中被篡改,然后对数据密文进行hash计算,结果和收到的hash值对比验证数据密文在传输过程中被篡改。通过这两步验证传输数据没有被改变,再用对称加密密钥对数据密文加密得到原数据内容

    第三方网站扫描SSL www.ssllabs.com/ssltest

  • 相关阅读:
    嵌入式 coredump
    CentOS7 systemctrl管理的服务,open files的神坑
    Linux 服务器网络流量查看工具
    shiro源码篇
    google guava
    Docker虚拟化管理:30分钟教你学会用Docker
    Shiro结合Redis实现分布式或集群环境下的Session共享
    Springboot整合redis
    Git分支操作方法
    Redis启动和在注册到windows服务
  • 原文地址:https://www.cnblogs.com/zylq-blog/p/6808606.html
Copyright © 2011-2022 走看看