思考匿名性之前应了解的网络基础
思考匿名性时,如果一开始只看 、、加密、浏览器设置,就很难把握整体图景。
因为匿名性并不只由“使用了哪种工具”决定。 必须理解通信经过哪里、哪些信息会到达对方、哪些记录会留下、哪些信息会被组合起来。
构成这个基础的,就是网络基础知识。
本文整理在思考匿名性之前应了解的 IP 地址、DNS、HTTP/HTTPS、浏览器、、通信日志之间的关系。
匿名性并不只由网络决定
匿名性不是只要隐藏网络路径就能完成的东西。
例如,即使用 VPN 改变 IP 地址的可见方式,只要登录同一个账号,行为就会与账号关联。 即使用 Tor,如果混用实名环境中的浏览器环境或 Cookie,也会留下其他线索。
另一方面,在不了解网络的情况下思考匿名性也很危险。 因为 IP 地址、DNS、连接目标、通信日志等,是思考匿名性时的重要基础。
| 视角 | 相关内容 | 注意点 |
|---|---|---|
| 通信来源 | IP 地址、线路、VPN、Tor | 与连接来源的可见方式有关 |
| 连接目标 | DNS、URL、服务器、CDN | 会成为连接到哪里的线索 |
| 通信内容 | HTTP、HTTPS、TLS | 与内容是否受到保护有关 |
| 识别 | Cookie、登录状态、User-Agent | 可能被关联为同一使用者 |
| 记录 | 服务器日志、DNS 日志、通信日志 | 可能成为事后核对的材料 |
思考匿名性时,需要先分别查看这些要素,最后再把它们组合起来考虑。
IP 地址会成为通信来源的线索
IP 地址是在网络上找到通信对象所需的信息。
访问网站时,连接目标的网站一侧通常会收到作为连接来源可见的 IP 地址。它不一定是家用 IP,也可能是 VPN、Tor、代理、NAT、共享线路的 IP。 仅凭 IP 地址,不一定能知道个人姓名或准确住址。
但是,如果与通信运营商、地区、组织网络、连接时刻等组合起来,就会成为推测通信来源的材料。
这里重要的是,IP 地址只是匿名性的一部分,不是全部。
即使隐藏了 IP 地址,如果 Cookie、登录状态、浏览器信息、发布内容、、时间段等仍然存在,也可能以其他形式被关联起来。
DNS 会成为连接目标的线索
DNS 是把域名对应到 IP 地址的机制。
人会用 example.com 这样的域名来识别网站。 但是通信时需要 IP 地址。 因此,浏览器或操作系统有时会使用 DNS 查询与域名对应的 IP 地址。
DNS 查询会处理试图查询哪个域名。 在普通 DNS 中,查询目标有时可以看到域名、查询时刻以及与查询来源有关的信息。
不过,仅凭 DNS 并不能知道页面正文或表单输入内容。 DNS 主要处理的是试图连接的域名。
在匿名性中,这个差异很重要。 即使通信内容受到 HTTPS 保护,如果 DNS 查询在别处可见,也可能成为试图连接哪个域名的线索。
HTTP 和 HTTPS 与通信内容的可见方式有关
HTTP 是浏览器和服务器交换网页数据的机制。
仅使用 HTTP 时,通信内容不会被加密。 因此,通信路径上的第三方有读取内容或在途中篡改内容的危险。
HTTPS 是用 TLS 保护 HTTP 通信的机制。 HTTPS 会让通信内容更不容易在途中被读取,更不容易被篡改,也更容易确认连接目标服务器。
| 视角 | HTTP | HTTPS |
|---|---|---|
| 通信内容 | 有被读取的危险 | 不容易被读取 |
| 篡改 | 有被篡改的危险 | 更容易检测 |
| 连接目标确认 | 较弱 | 更容易通过证书确认 |
| 匿名化 | 不会匿名化 | 不会匿名化 |
HTTPS 非常重要。 但是,HTTPS 不是匿名化技术。
请求会到达连接目标网站。 另外,访问来源 IP 地址、Cookie、登录状态、访问日志等会作为另一个问题留下。
浏览器会发送很多信息
浏览网站时,浏览器会向服务器发送请求以显示页面。
这个请求中可能包含访问目标 URL、Cookie、User-Agent、语言设置、引用来源等。 在运行 JavaScript 的页面中,也可能使用屏幕大小、时区、支持功能等浏览器和设备特征。
这些信息并不是一定都会被记录。 但是,必须把它们作为可能到达网站一侧的信息来意识到。
特别是 Cookie 和登录状态很重要。 即使改变 IP 地址,只要发送同一个 Cookie,也可能被当作同一个浏览器。 如果处于登录状态,行为就可能与账号关联。
通信日志会成为事后核对的材料
互联网上的通信不一定会当场完全消失。
Web 服务器、应用程序、DNS 解析器、通信运营商、路由器、防火墙等处,可能留下与通信有关的记录。
| 位置 | 可能留下的信息 |
|---|---|
| Web 服务器 | 访问时刻、IP 地址、URL、User-Agent、引用来源 |
| 应用程序 | 登录历史、操作历史、账号 ID |
| DNS 解析器 | 查询过的域名、查询时刻 |
| 通信运营商 | 连接时刻、分配的 IP 地址、通信量 |
| 路由器、防火墙 | 连接目标、通信量、允许或阻断结果 |
日志会用于故障处理和安全对策。 日志本身并不是坏事。
不过,在匿名性中,需要考虑多个日志可能通过时刻或 IP 地址被核对的可能性。
思考匿名性的基本视角
把网络基础与匿名性连接起来时,按下面这样分开思考会更容易整理。
| 问题 | 查看内容 |
|---|---|
| 谁能看到 | 连接目标、ISP、DNS 解析器、VPN 服务商、同一网络的使用者 |
| 能看到什么 | IP 地址、域名、通信量、时刻、Cookie、登录状态 |
| 什么受到保护 | 由 HTTPS 保护的通信内容、篡改检测、连接目标确认 |
| 什么会留下 | 服务器日志、DNS 日志、应用操作历史、浏览器内保存的信息 |
| 会与什么关联 | 账号、过去发帖、文体、图片、时间段、设备信息 |
在匿名性中,重要的是不要只看一个信息就判断。 IP 地址、DNS、HTTPS、Cookie、日志、账号、发布内容组合起来时,可能产生“像是同一个人”的线索。
总结
思考匿名性之前,需要理解网络基础。
IP 地址会成为通信来源的线索。 DNS 会成为试图连接的域名的线索。 HTTP 和 HTTPS 与通信内容的保护有关。 浏览器可能发送 Cookie、User-Agent、登录状态等。 通信日志可能成为事后核对的材料。
不过,不能只看其中某一个因素就判断匿名性。
匿名性会随着通信路径、连接目标、浏览器、账号、发布内容、时间、过去信息的组合而变化。
学习网络基础的目的,不是背诵专业术语。 而是能够分开思考谁能看到什么、什么受到保护、什么会留下。
相关工具
DNSLeakTest
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
BrowserLeaks WebRTC
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。