zoukankan      html  css  js  c++  java
  • 为什么Wireshark无法解密HTTPS数据

    导读 由于需要定位一个问题,在服务器上tcpdump抓取https数据包,然后下载到本地打开wireshark分析。然后我们下载域名私钥配置到wireshark,发现数据包居然无法解密。是wireshark配置密钥的方法不对?但谷歌了好多文章都是说这样配置的。由于对HTTPS认识不够深,一时不知道如何入手解决。没办法,只能先了解tls这个协议了,于是查看了TLS1.2的RFC文档,终于勉强解答了这个疑惑。
    TLS握手整个过程

    在解决这个问题之前,先整体了解一下TLS的握手全过程。省略了不常见的过程。如图:
    为什么Wireshark无法解密HTTPS数据为什么Wireshark无法解密HTTPS数据
    下面按顺序介绍各握手步骤。

    Client Hello

    这是TLS握手的第一步,由客户端发起请求。此协议主要包括了一个客户端生成的随机字符串(用来下面生成session key),还有客户端支持的加密套件列表。如图:
    为什么Wireshark无法解密HTTPS数据为什么Wireshark无法解密HTTPS数据

    Server Hello

    服务器收到客户端的Client Hello数据包之后,根据客户端发来的加密套件列表,选择一个加密套件,也生成一个随机字符串返回给客户端。我们看到下图中的加密套件为,密钥交换算法使用ECDHE_RSA,对称加密算法使用AES_256_GCM_SHA384,如图:
    为什么Wireshark无法解密HTTPS数据为什么Wireshark无法解密HTTPS数据

    Server Certificate

    Server Key Exchange协议包,由服务器返回,主要目的是与客户端交换用于数据对称加密的密钥。如图:
    为什么Wireshark无法解密HTTPS数据为什么Wireshark无法解密HTTPS数据

    Server Hello Done

    服务器返回此协议数据,告诉客户端已经完成返回所需用于密钥交换的数据。服务器等待客户端响应。

    Client Key Exchange

    客户端根据服务器返回的DH密钥数据生成DH公共数据也发给服务器,用来生成最终的pre-master-secret。如图:
    为什么Wireshark无法解密HTTPS数据为什么Wireshark无法解密HTTPS数据

    Change Cipher Spec

    此协议用于客户端和服务器相互告知也完成密钥交换过程,可以切换到对称加密过程。
    到这里大概的TLS握手过程就结束了。为解决本文中的问题,还需要了解密钥交换的算法,RSA和Diffie–Hellman。

    密钥交换算法

    密钥交换算法目前常用的有RSA和Diffie-Hellman。
    对于密钥交换使用RSA算法,pre-master-secret由客户端生成,并使用公钥加密传输给服务器。
    对于密钥交换使用Diffie-Hellman算法,pre-master-secret则通过在Key Exchange阶段交换的信息,由各自计算出pre-master-secret。所以pre-master-secret没有存到硬盘,也没有在网络上传输,wireshark就无法获取session key,也就无法解密应用数据。那我们是否可以反向计算出pre-master-secret呢?理论上可以,但是非常困难。
    对Diffie-Hellman算法感兴趣的可以参考https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

    解决方法

    说了这么多,究竟有什么办法可以让wireshark解密数据?我们可以通过下面几种方法来使wireshark能解密https数据包。
    1. 中间人攻击;
    2. 设置web服务器使用RSA作为交换密钥算法;
    3. 如果是用chrome,firefox,可以设置导出pre-master-secret log,然后wireshark设置pre-master-secret log路径,这样就可以解密了。

  • 相关阅读:
    Quicksum -SilverN
    uva 140 bandwidth (好题) ——yhx
    uva 129 krypton factors ——yhx
    uva 524 prime ring problem——yhx
    uva 10976 fractions again(水题)——yhx
    uva 11059 maximum product(水题)——yhx
    uva 725 division(水题)——yhx
    uva 11853 paintball(好题)——yhx
    uva 1599 ideal path(好题)——yhx
    uva 1572 self-assembly ——yhx
  • 原文地址:https://www.cnblogs.com/linux130/p/5626460.html
Copyright © 2011-2022 走看看