公开上传带有 TLS 相关信息的 Wireshark 跟踪的潜在风险?

信息安全 tls 网络 隐私
2021-08-29 23:21:03

假设我要将 Wireshark 跟踪上传到可公开访问的网站。比如说,有了它,SSL 密钥日志、证书信息等就可用了。如果有人知道这个踪迹的链接,会有什么危险?

显然,给定跟踪会话的内容和信息对每个人都是可见的,那么过去或将来发生的会话呢?与其他客户端或其他服务器发生的会话呢?我是否会面临重放攻击或中间人攻击之类的危险?

2个回答

如果wireshark 跟踪是从被动窃听者的角度进行的,那么跟踪中没有任何内容可用于篡改未来的SSL/TLS 连接。

请记住,有许多实体可以进行与您所做的相同的跟踪,包括无线热点运营商、ISP、骨干运营商、数据中心等。如果有可能使用以下方式篡改未来的 SSL/TLS 连接你所做的跟踪,那么这些实体中的任何一个都可以做同样的事情。SSL/TLS 专门设计用于抵抗这种类型的篡改。

即使您在客户端运行跟踪,并将会话信息记录到 SSLKEYLOGFILE,此文件中的信息也不会用于篡改未来的 SSL/TLS 连接,因为此文件仅包含临时密钥和仅用于进行跟踪时的会话。

如果某人只能访问数据包捕获,而没有其他密钥材料,那么他们显然能够看到未加密的数据,例如 TLS 1.2 中的服务器名称 (SNI) 和服务器证书,但看不到加密数据。TLS 旨在防止第三方篡改会话并防止重放攻击。

SSLKEYLOGFILE 环境变量生成的文件通常存储每个会话的机密,并由端点(客户端或服务器)写入。它的格式记录在https://developer.mozilla.org/NSS_Key_Log_Format

对于TLS 1.3,记录的秘密将仅可用于该特定会话。这些秘密不能用于解密任何其他会话这包括以前的会话、未来的会话以及与其他客户端或服务器的会话。原因是这些秘密来自完整的握手消息记录。握手中的任何更改(例如,不同的客户端随机或不同的服务器名称)都将导致不同的秘密。

对于TLS 1.2及更早版本,情况几乎相同。但是,有两个例外会破坏未来会话的安全性。

  1. 如果双方同意使用RSA 密钥交换,则会话不会被转发秘密。这意味着如果与证书匹配的服务器私有 RSA 密钥被泄露,那么该私有密钥的持有者将能够基于相同的服务器密钥解密所有以前和未来的会话。如果双方都使用基于 Diffie-Hellman 密钥交换的前向秘密密码套件,则这不适用。即使 RSA 私钥泄露,后面的会话仍然是安全的。
  2. 在 TLS 1.2 中,主密钥链接到会话。会话恢复是一种机制,客户端可以尝试重用早期会话中的主密钥。它通过向服务器发送标识符(会话 ID 或会话票证)来实现。如果服务器识别到这一点,它将跳过完整的握手并完成一个简短的握手,而不执行新的密钥交换。新连接将不安全,因为违反了将主密码保密的要求。

第二个问题很微妙,但非常重要。它已在 TLS 1.3 中得到解决,其中每个会话始终包含一个完整的密钥交换,从而使“恢复秘密”独立于将用于加密握手和应用程序数据的实际秘密。

说明 TLS 1.2 会话恢复问题的示例:

  1. 您启动 Wireshark 捕获并使用 SSLKEYLOGFILE 环境变量集打开 Firefox。
  2. 您访问一个网站,例如您的电子邮件或网上商店。
  3. 在某些时候,您对捕获的数据包跟踪感到满意并停止 Wireshark 捕获。您制作它的副本以及 SSLKEYLOGFILE 文件内容。
  4. 您决定关闭网站选项卡,但退出 Firefox。这通常会终止网络连接。
  5. 看网站很无聊,当你受到启发时,你重新打开了网站。这将创建一个新的连接。
  6. 您登录网站、发送电子邮件或购买商品。
  7. 最后,您共享原始捕获和密钥。

这里的问题是第 5 步最终可能会使用 TLS 1.2 会话恢复。看到您的网络流量(例如,在咖啡店的公共 Wi-Fi 网络中)的被动攻击者 (MitM) 将能够使用步骤 7 中的秘密来解密您在步骤 6 中的活动。他们可能会了解您的密码,并用它做可怕的事情。

故事的寓意:是的,与 SSLKEYLOGFILE 共享数据包捕获是安全的,但请确保它仅包含您不关心的会话的密钥。如果要创建共享跟踪,请使用虚拟机或使用单独的浏览配置文件。后者的示例可以在我关于使用 Wireshark 执行 TLS 解密的幻灯片的幻灯片 8 中找到: https ://lekensteyn.nl/files/wireshark-tls-debugging-sharkfest19eu.pdf

如果您不想启动新的浏览配置文件,您至少可以尝试清除缓存。这应该确保下一个新连接使用新的密钥。

尽管您在问题中提到了它,但为了完整起见,我将再次重复一遍:解密的跟踪可能会显示 cookie、URL、图片、网页内容以及您在捕获会话期间共享的任何其他详细信息。即使您停止本地捕获,其他人也可能会窃听并捕获现有连接中的所有内容。一旦您发布了这些秘密,他们就可以解密该连接中的所有内容。