SSL/TLS 能否危及匿名性(例如,通过 Tor 使用 HTTPS 时)?

信息安全 tls 匿名
2021-09-01 13:54:12

如果我理解正确,SSL/TLS 不仅加密流量,还提供了一个框架(可选?)验证服务器和客户端

因此,例如,如果我通过 Tor 打开 HTTPS 连接,SSL/TLS 握手是否会将有关我身份的任何信息泄露给我正在连接的 HTTPS 服务器?就像我的本地 IP 地址,或者它分配给我的系统的其他一些唯一 ID 等等......

这可能取决于使用的连接设置吗?如果是这样,有没有办法配置Java 的 SSLEngine以确保它不会泄漏有关它正在运行的系统的任何信息?

2个回答

TLS 总是对服务器进行身份验证(除了一些从未在网络上使用过的变体,因为它们只在非常特定的环境中有用)。这是必要的,因为如果任何一方都没有对另一方进行身份验证,那么他们就无法确保他们拥有加密连接,而不是每个人都拥有与解码和转发流量的中间人的加密连接。HTTP 连接中的服务器无论如何都不是匿名的。

仅当客户端提供进行身份验证时,TLS 才会对客户端进行身份验证。此功能在公共 Web 上不常用,主要在 Intranet 上使用,更常用于 HTTP 以外的协议(例如电子邮件客户端)。您的客户端不会意外发送对其进行身份验证的证书:它必须首先创建一个证书,并且通常不会与另一个客户端使用相同的证书。当然,如果您使用不信任的客户端程序,它可能会泄露有关您的信息,但通过创建和使用客户端证书来做到这一点是不太可能的方法。

TLS 本身不发送任何有关客户端的直接识别信息,但与协议的任何其他层一样,它可以通过指纹识别间接揭示信息。TLS 客户端的指纹识别主要是关于它向服务器宣传哪些功能(它支持哪些加密算法和可选协议功能)。为了匿名,你最好的办法是坚持使用 Tor 浏览器的默认配置,这样你的指纹就可以与使用相同配置的其他人的指纹相匹配。如果您使用另一个客户端,那么坚持该客户端的默认设置通常同样可以最大限度地减少通过指纹泄露的信息。

在使用 Tor 的情况下,您连接的第一个节点将拥有您的源 IP 地址,因为它需要知道将返回数据包发送到哪里。据我所知,Tor 中继节点不会为主机分配任何唯一标识符。Tor 的匿名性并非来自 SSL/TLS 的使用,而是来自通过 3 个点汇集您的流量以混淆您的 IP。

使用 SSL/TLS 与服务器直接连接,您仍然会显示您的源 IP 地址。除此之外,任何嗅探的人也可能能够识别您正在访问的站点(即使他们无法解密数据包),即握手的 SNI 字段。这将降低匿名性,因为它将允许建立个人资料。

请记住,SSL/TLS 的主要目的不是提供匿名性。匿名是通过规范行为和工具/协议(SSL/TLS 就是其中之一)的实践来实现的。任何部分的妥协都可能泄露信息。这就是为什么真正的匿名几乎是不可能的。

SSL/TLS 本身可能会泄漏信息并用于构建有关用户的配置文件。与其他工具结合使用,它可以为您的匿名提供强大的安全层(即通过 Tails 或 Qubes 等注重隐私的操作系统使用 SSL/TLS)。