非RSA TLS1.2数据包解密

时间:2016-12-19 16:58:18

标签: ssl encryption ffmpeg cryptography tls1.2

我正在尝试解密pcap文件。此pcap文件包含HLS加密视频流的捕获。 pcap包含TLSv1.2数据包。

以下是pcap文件中的一些信息

  

服务器Hello消息Cipher Suite:

     

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384。

     

EC Diffie-Hellman服务器参数:pubkey(1)

     

证书状态消息:

     

签名哈希算法哈希:SHA256

     

签名哈希算法签名:ECDSA

     

客户密钥交换消息

     

EC Diffie-Hellman服务器参数:pubkey(2)

我试图关注this Wireshark SSL decryption tutorial。但它似乎只适用于RSA加密。 我已经研究了一段时间,发现this discussion。我引用了这个讨论的摘录:

  

需要注意一个重要的参数:被动解密   记录的会话(带有服务器私钥的副本)仅在以下情况下有效   密钥交换是RSA型或静态DH;与“DHE”和“ECDHE”   密码套件,你将无法解密这样的会话,即使有   了解服务器私钥。在这种情况下,您将需要   要么是协商的“主秘密”,要么是私有使用服务器   积极拦截连接的关键

值得注意的是,我有客户端私钥。在我的例子中,客户端是FFmpeg视频流(FFplay)。我也看了TLS v1.2 RFC

我的问题:

在这种情况下是否可以进行解密?如果是,我需要做什么?

解密是使用客户端的私钥还是使用pre_shared_master(即Diffie-Hellman)完成的?

2 个答案:

答案 0 :(得分:2)

首先,客户端私钥或公钥不以任何方式参与密钥交换,但仅用于验证客户端(如果服务器请求)。密钥交换中使用的是服务器私钥和公钥,但仅在使用RSA密钥交换时才使用。对于DHE / ECDHE,不使用它们,因此私钥/公钥不够。有关详情,请参阅it is possible to decrypt HTTPS with the (private, public) pair if it uses DHE?

您需要代替私钥实际上是交换密钥,即使私钥相同,每个TLS会话也是唯一的。有些客户可以存储此密钥供以后使用,如果您的客户端可以执行此操作,请参阅Decrypting TLS Browser Traffic With Wireshark – The Easy Way!如何继续解密流量。

答案 1 :(得分:1)

不,在这种情况下无法解密。这将涉及打破EC Diffie-Hellman。

解密不是使用pre_master_secret 直接执行的,而是由来自预主密钥的直接派生的执行。即:通过首先导出master_secret然后执行PRF并将输出分成会话密钥和IV来从中派生的客户端和服务器解密密钥。