编程随想:关于 Tor的常见问题解答

2020-07-25 原文 #火光 的其它文章

编程随想:关于 Tor的常见问题解答 ——

原文链接

作者:编程随想

编者按: 这篇关于Tor的文章,为编程随想的经典科普系列之一。原文发布于2013年。时隔多年,虽然有些信息略有过时,但总体来说仍是匿名网络新手的优秀入门读物。在此转载,向编程随想及其他致力于普及网络技术的人士致敬,并且提醒各位:墙国议政,易惹官非;上网带Tor,安全宝贵
本网站基于wordpress创建。wordpress会记录访问者的IP。网站管理无法看到具体IP地址,但可以看到访问IP的所属国家。因此,若安全隐私对您很重要,强烈建议您采用Tor,VPN,虚拟机等方式匿名访问。

Tor 是一个很老牌的翻墙工具,也是俺在博客中推荐的第一款翻墙工具 — — 当时正赶上朝廷的60大寿,GFW 加强封锁,俺就写了一篇《"如何翻墙"系列:戴"套"翻墻的方法》,算是 Tor 的入门教程。

4年过去了,虽然新的翻墙工具不断涌现,但 Tor 的影响力和用户数仍然持续增加 — — 很多人不仅仅是用 Tor 来翻墙,更是用 Tor 来隐匿自己的上网行踪。在这期间,俺也收到很多读者来信/博客留言,询问关于 Tor 的各种问题。甚至有热心读者建议俺专门写一篇博文,聊聊 Tor 的高级话题。

为了帮大伙儿更好地使用 TOR,今天再发一篇教程,解答 TOR 的各种常见问题。

Image for post

★Tor 是什么?

Tor 是洋文 (The Onion Router)的缩写,中文又称"洋葱网络/洋葱路由"。简单而言,这是一款专门设计用于隐匿上网身份的工具。

Tor 的官网在"这里"。关于 Tor 的更详细介绍,请看维基百科的"这里"。

★哪些网友需要使用 Tor?

前面说了,设计 Tor 的主要目的是为了上网隐匿身份。所以,跟其它的翻墙工具不同 — — 它的重点功能是"隐匿性","翻墙"只是顺带的功能。

具有如下特点的用户,可以考虑使用 Tor。

◇为了隐匿自己所在的国家

比如有些视频网站为了版权的原因,会限制某些国家的IP,那么你可以利用 Tor 来伪装成别国的网民,就可以绕过视频网站的版权限制。

◇为了隐匿自己的公网IP

比如你想在网上发布敏感的政治言论,那隐匿公网 IP 是避免被跨省追捕的【必要条件】。

(提醒一下:"隐匿公网 IP"只是必要条件,不是充分条件!要避免被跨省,需要考虑多个层面的防范,具体请看《如何隐藏你的踪迹,避免跨省追捕》系列博文)。

像俺这种长期抹黑朝廷的博主,Tor 是上网的必备工具。俺即使访问国内网站,也要走"基于 Tor 的多重代理"。(关于"多重代理",后面还会提到)

◇为了保护隐私

刚才已经说了 Tor 的特点,在隐私保护方面,Tor 优于其它的翻墙工具。为了说明 Tor 在隐私方面的优点,拿 Tor 跟 VPN 做一个对比。

很多网友使用 VPN 翻墙,而且长期使用固定的 VPN 提供商。万一 VPN 提供商在 VPN 服务器上记录你的上网行为,那你的所有上网行踪就暴露无遗。

而如果使用 Tor,就可以大大降低这种风险 — — 具体原因,下面会聊。

★软件安装方面的问题

◇Vidalia 跟 Tor 是啥关系?

Tor 本身只提供命令行,没有图形界面。Vidalia 是专门为 Tor 量身打造的图形界面。

在 Vidalia 的图形化界面上,你不但可以配置各项参数,还可以监控 Tor 的流量和 Tor 的线路(后面会提到)。

补充说明:

从2014年之后,Tor 社区已经【不再】维护 Vidalia 这个软件了。所以俺后来又写了一篇:《扫盲 Arm — — Tor 的界面前端(替代已死亡的 Vidalia)

◇如何获取 Tor 的软件包?

关于这个问题,在 2009 年的入门教程《"如何翻墙"系列:戴"套"翻墻的方法》中已经介绍过,此处不再罗嗦。

◇应该选择哪个安装包?

先说明一下,Tor 是跨平台的。同时支持主流的:Windows、Linux、Mac OS。

在 Tor 官网有两个下载页面,分别如下:

https://www.torproject.org/download/download-easy.html.en
(这个是面向菜鸟用户的,每个操作系统只提供一个下载链接)

https://www.torproject.org/download/download.html
(这个是面向高级用户的,每个操作系提供多种软件包供你选择)

后一个链接提供的多种选择,俺稍微解释一下。

Tor Browser Bundle
这个软件包捆绑了 Firefox 浏览器(对于 2.3.25 之后的版本,监听端口改为9150)。

Expert Bundle
这个软件包是面向高级用户,只有赤裸裸的 Tor,没有其它额外的东西(没有图形界面)。

编者按:目前(2020年7月),编程随想提供的两个链接都会自动跳转到“面向菜鸟用户”的下载页面(https://www.torproject.org/download/)。面向高级用户、可以下载Expert Bundle和源代码的页面为https://www.torproject.org/download/tor/

◇Bridge 和 Relay 有啥区别?

Bridge 的中文就是"网桥"。Tor 的网桥是一种特殊的中转节点。它跟其它中转节点的差异在于:普通的中转节点,其信息会被加入到 Tor 在全球的目录服务器,所以普通的中转节点会被所有的人看到,并用来进行流量中转。

而你自己搭建的网桥,其信息不会被加入到全球的目录服务器 — — 只会被你自己所用。

◇Linux 用户如何获取软件包?

因为 Tor 的名气大,那些主流的发行版基本上都提供 Tor 相关的软件包。如果你用的是主流的发行版,直接用系统的软件包管理工具,就可以自动安装/自动升级 Tor。

◇Mac OS X 用户如何获取软件包?

使用苹果系统的用户,可以看官网的"这个文档"。里面有介绍如何通过"Homebrew 包管理器"安装 Tor。

★浏览器方面的问题

◇如何配置浏览器的代理?

(如果你使用的是 Tor Browser Bundle 内置的 Firefox,就无需再额外配置浏览器代理了)

早先的 Tor 客户端同时提供 HTTP 代理和 SOCKS,大概从 2013年开始,新版本的客户端不再提供 HTTP 代理了。所以原先的 8118 代理端口也就废弃了。

今后大伙儿需要用 Tor 提供的 SOCKS 代理来上网,端口号如下:

9150(2.3.25版本之后的 Tor Browser Bundle 软件包)

9050(其它的软件包)

Firefox 的代理设置如下图(至于 Chrome、IE、或其它浏览器,列位看官请依样画葫芦):

Image for post

(顺便说一下:SOCKS 代理其实比 HTTP 代理更好,关于两者的差别,俺抽空写一篇扫盲)

◇如何判断自己的浏览器是否在走 Tor 的线路?

Tor 官网提供了一个测试界面,网址是https://check.torproject.org/。猛击该超链接,会打开一个界面。

如果你的浏览器已经在使用 Tor 的线路,会出现一个【绿色】洋葱头,以及一行绿色的洋文提示。

如果你的浏览器没有走 Tor 的线路,会出现一个【带红色打叉】的洋葱头,同时还有一行红色的洋文警告。

◇Tor Browser Bundle 内置的 Firefox,有啥特殊之处?

这个内置的 Firefox 跟普通的 Firefox 有如下几个差异:

1. 版本差异

这个内置的 Firefox 采用 Mozilla 官方提供的长期支持版本(洋文叫 ESR),而不是最新版本。

因为最新版本总是会增加很多新功能,可能会引入潜在的安全漏洞;而 ESR版本 相对而言比较稳健。

2. 配置差异

这个内置的 Firefox 专门进行了一些安全方面的定制(比如禁用 JavaScript)

◇为啥 Tor Browser Bundle 内置的浏览器无法看视频?

因为这个内置的浏览器没有装 Flash 播放插件。而大多数视频网站需要 Flash 插件来播放视频。

★隐私方面的问题

这一节是本文的重点,看仔细喽。

◇Tor 客户端如何建立联网的线路?

如果你比较好奇,为啥 Tor 的隐匿保护好于其它翻墙工具?那么有必要了解一下 Tor 客户端的联网机制。下面这三张图来自 Tor 的官网。因为图片中是洋文说明,俺稍微修改了一下,注上中文。

Image for post

第1图:当 Tor 客户端启动之后,会首先连接 Tor 的目录服务器。从目录服务器中获取全球的 Tor 节点信息。

Image for post

第2图:假设你要访问 网站1,那么 Tor 客户端会随机挑选三个节点用于中转。

为了打字方便,俺把这三个节点分别称为:

入口节点

如果你仅仅使用 Tor 联网,该节点直接跟你的电脑相连;如果你使用双重代理,入口节点跟你的前置代理相连。

中间节点

介于入口节点和出口节点之间(这个节点的威胁最小)。

出口节点

该节点直接跟你访问的目标网站相连(这个节点的威胁最大)。

这三个节点中,只有"出口节点"会看到你的"上网行为"(图中标红色的虚线,表示 Tor 节点【会看到】"原始流量")。

所谓的"上网行为"包括:你访问了哪个网站,你从该网站传输的流量。

如果这个网站使用【加密的】HTTPS 协议,"出口节点"看到的"原始流量"是 HTTPS 的密文,没啥关系;反之,如果这个网站使用【明文的】HTTP 协议,那么"出口节点"会看到你从该网站发送/接受的内容(这是主要风险点)。

除了"出口节点",其它节点完全无法知道你的上网行为(图中标绿色的线,表示 Tor 节点看不到"原始流量")。

Image for post

第3图:Tor 为了加强隐匿性,会动态变化中转线路。也就是说,每隔一段时间(约10分钟),就会随机挑选三个节点,重新构造一条传输线路。

因为线路动态变化,"出口节点"自然也动态变化。所以,即使"出口节点"偷窥你的上网行为,也只能看到一个短暂的片段。

◇Tor 节点是否会偷窥到自己的隐私/上网行为?

如果你弄懂了前一个问题的三张原理图,那你自然就知道,只有"出口节点"会看到你的上网行为

◇如何避免 Tor 节点看到你的上网行为?

前面说了,"上网行为"包括两部分:

1. 你访问了哪个网站

2. 你从网站传输(发送、接受)的流量

对于第1点,是【无解】的!

不管采用哪种工具来隐匿行踪,最终,你都需要有某个"主机"帮你把数据送到你要访问的网站。所以,这个"主机"必然就知道你访问了啥网站。

对于第2点,是【有解】的。

主要方法就是:尽量采用 HTTPS 协议。比如像维基百科,同时支持 HTTP 和 HTTPS。那么你就应该采用 HTTPS 方式访问。这种情况下,Tor 的"出口节点"只知道你访问了维基百科,但是无法知道你访问了哪个页面。

为了养成经常使用 HTTPS 的习惯,建议大伙儿安装 EFF 官方提供的 HTTPS everywhere

◇什么是"陷阱节点"/"蜜罐节点"?

某些国家(比如咱们天朝)的政府会设置"蜜罐节点"。所谓的"蜜罐节点",通俗的说,就是陷阱。

如果你使用的线路中,"出口节点"正好是蜜罐,那么该蜜罐就会窥探到你的上网行为 — — 前面已经说了,出口节点肯定会知道你的访问了哪个网站。并且,假如你访问的目标网站没有 HTTPS 加密,蜜罐就会知道你浏览的页面内容。

◇如何避免"陷阱节点"/"蜜罐节点"?

比较简单的做法,就是通过修改 Tor 的配置文件,规避这些不安全国家的节点。

对于天朝的网友,你至少需要屏蔽"大陆、香港、澳门"这三个节点。因为这三个地区都可能被六扇门设置蜜罐。

Tor 的配置文件名叫 torrc,这是一个文本文件,用记事本就可以打开。(如果你找不到该文件,在系统盘中搜索一下 torrc 这个文件名)

在该文件末尾,加入下面这行(ExcludeNodes 表示排除这些国家/地区的节点,StrictNodes 表示强制执行)。

ExcludeNodes {cn},{hk},{mo}
StrictNodes 1

关于 strictnode,俺补充说明一下:

如果不设置 strictnode 1,Tor 客户端首先也会规避 ExcludeNodes 列出的这些国家。但如果 Tor 客户端找不到可用的线路,就会去尝试位于排除列表中的节点。

如果设置了 strictnode 1,即使 Tor 客户端找不到可用的线路,也不会去尝试这些国家的节点。

除了上述三个地区,还有几个国家跟天朝串通一气。如果你对安全性的要求比较高,可以把这些国家也列入 Tor 的排除节点列表。

下面给出这些流氓国家的代码,你依样画葫芦加入到 ExcludeNodes 那一行,国家代码之间用逗号分隔。

北朝鲜 {kp}
伊朗 {ir}
叙利亚 {sy}
巴基斯坦 {pk}
古巴 {cu}
越南 {vn}

◇Tor 的加密流量能否被破解?

根据斯诺登曝光的材料,NSA 目前具备的运算能力,可以解密很大一部分 Tor 流量。

因为目前(2013年)的 TOR 中继服务器,大部分还在使用 1024 位的 DHE 密钥,这类密钥虽然普通人难以破解,但是 NSA 掌握的运算能力可以在几小时内暴力破解。目前只有 10% 左右的中继服务器采用 ECDHE 密钥(基于椭圆曲线)。这类 ECDHE 密钥 NSA 比较难破解(更多介绍请看"这篇报道")。

至于天朝方面,肯定【没有】NSA 这么牛的破解能力。所以墙内的同学们,咱们暂时还不用担心这个问题 🙂

另外,等到大部分中继服务器升级到 2.4 版本,ECDHE密钥 的使用就会普及,到时候这个风险会减低。

注:

本小节提及了好几种【密钥交换算法】。如果你对这方面感兴趣,可以看如下这篇博文,介绍了相关算法的原理。

扫盲 HTTPS 和 SSL/TLS 协议[3]:密钥交换(密钥协商)算法及其原理

◇啥是流量关联分析?

先声明:流量关联分析有很多种。这里说的是【针对 Tor】的流量关联分析"。

"关联分析"是数据挖掘的一种手段 — — 先积累足够多的数据,然后通过某种算法找出数据之间的某些相关性特征。考虑到数据挖掘不是本文的主题,就不深入介绍了。

简单而言,如果某个攻击者能够监控你接入 Tor 网络的流量(入口节点之前的流量)以及你离开 Tor 网络的流量(出口节点之后的流量)。那么经过足够长时间的数据积累,攻击者就可以利用数据挖据【猜测】出:某些网络行为其实是来自某个公网 IP 的用户。

举例:

*如果你仅仅使用 Tor(没用双重代理)联网,然后经常到 A网站 发敏感言论。假设1:
如果 GFW 对所有的 Tor 流量都做了记录(这只是假设,到底有没有,俺不晓得)
假设2:
A网站 对所有的用户留言做了记录(很多的国内网站都会记录)
假设3:
朝廷可以获取 A网站 的用户访问记录(只要是国内网站,朝廷肯定能拿到;至于国外网站,要看情况)
假设4:
朝廷针对 Tor 部署了关联分析的系统(这只是假设,到底有没有,俺不晓得)\

如果上述这 N 个假设【同时成立】,那么,经过足够长时间的积累(具体需要多长时间,取决于你发帖的频繁度),关联分析系统可以猜测出你是谁。*

◇如何规避(针对 Tor 的)流量关联分析?

要规避"针对 Tor 的流量关联分析",目前最直接有效的方法是:多重代理。因为一旦用了多重代理,Tor 的流量类型就被掩盖掉了。

比方说:如果你使用 VPN+Tor,那么你的 ISP 监控你的流量,看到的是 VPN 流量 — — (因为 VPN 加密)ISP【看不到】你的 Tor 流量。在这种情况下,流量关联分析的难度大大提高了。

除了"针对 Tor 的流量关联分析",还有其它的流量分析技术。考虑到篇幅,就不深入介绍了。等俺有空,单独写一篇博文,专门聊这个话题。

★双重代理方面的问题

如果你对"双重代理"还不太了解,请先看俺之前的博文《如何隐藏你的踪迹,避免跨省追捕[5]:用多重代理隐匿公网IP》。

◇为啥要使用双重代理?

俺总结了如下几个原因:

原因1

因为 Tor 的影响力很大,GFW 对 Tor 进行重点封杀。全球大多数的 Tor 中继节点都被 GFW 列入"IP 黑名单"。所以天朝的网友,如果单独使用 Tor,很难联网成功。这种情况下,就需要使用双重代理。

原因2

所有的软件都可能有缺陷(Tor 也不例外)。如果你仅仅使用 Tor,万一 Tor 出现安全漏洞并且被攻击者利用,那么攻击者就有可能对你进行逆向追溯(说不定能追溯出你的真实公网 IP)。

而如果使用多重代理,即使出现上述风险,攻击者也只能追踪到 Tor 的前置代理,而不会直接追踪到你本人。这样一来,风险大大降低。

原因3

前面提到,全球的 Tor 网络中可能会有陷阱节点。虽然你可以利用俺刚才介绍的方法,排除危险国家/地区的节点,但并不能确保万无一失。

比如说你碰到某个极小概率事件 — — 你使用的线路上,碰巧三个节点都是陷阱 — — 这种情况下,你的真实公网 IP 会暴露。

但如果你用了双重代理,即使碰到这种小概率事件,只会暴露你使用的前置代理服务器的 IP,而【不会暴露】你的本人的公网 IP。

举例:

一个月前(2013年10月),美国地下网络"丝绸之路"的站长被 FBI 逮捕。他一直使用 Tor,为啥会暴露?
其中一种说法是:他没有使用双重代理。而 FBI 利用 NSA 的技术(据传闻是流量关联分析技术),再加上 FBI 本身也设置了蜜罐节点,最终定位了"丝绸之路"站长。

原因4

刚才介绍了针对 Tor 的"流量关联分析"。如果你使用双重代理,会降低被关联分析的风险。

◇哪些工具可以跟 Tor 组合双重代理?

大部分翻墙工具都可以跟 Tor 组合。比如:所有的 VPN,无界、自由门、赛风、世界通、等等。

另外,你也可以使用公网上的一些代理服务器(公共代理),用来跟 Tor 组合成双重代理。前提是:这些"公共代理"【必须支持】HTTPS 代理或 SOCKS 代理。

如何用 Tor 组合"公共代理",请看《2012年9月翻墙快报(兼谈复活 Tor 的方法)》。

◇为啥 GAE 翻墙工具无法跟 Tor 组合成双重代理?

貌似 GAE 的翻墙工具,都只提供 HTTP 代理,没有提供【原生的】HTTPS 代理。而 Tor 客户端需要使用 HTTPS 跟中转节点进行数据传输。

◇为啥 GoAgent 无法跟 Tor 组合成双重代理?

GoAgent 也是 GAE 翻墙工具的一种,请参见前一个问题的解答。

★其它方面的问题

◇为啥要使用虚拟机?

虚拟机是为了进行网络隔离,确保你本机的软件总是经过代理联网,而不会直接联网 — — 直接联网可能会导致你的公网IP暴露。

具体的原理图,请看《如何隐藏你的踪迹,避免跨省追捕[6]:用虚拟机隐匿公网 IP(原理介绍)

举例:

前几个月,美国 FBI 为了打击儿童色情,逮捕了 Tor 匿名托管服务 Freedom Hosting 的负责人。然后 FBI 在该服务器上设置了木马。
该木马会利用 Tor 内置的 Firefox 浏览器的一个安全漏洞,来收集 Tor 用户的真实公网 IP。
(木马会向 FBI 的服务器发送一个信息,FBI 的服务器就会记录下发送端的 IP。如果没有虚拟机,这个
直接联网的企图就得逞了)。

如果你之前没用过操作系统虚拟机,可以先看俺写的系列教程《扫盲操作系统虚拟机》。

◇如何【跨机器】共享 Tor Browser 的翻墙通道?

用记事本(notepad)打开 Tor 的配置文件(如何找到配置文件,本文前面提到过)。在该文件末尾新增一行。

如果是 Tor Browser 软件包,加入如下这行

SocksListenAddress 0.0.0.0:9150

如果是 TOR 的其它软件包,加入如下这行

SocksListenAddress 0.0.0.0:9050

修改完记得保存,然后记得重启 Tor。之后,Tor 的监听端口就会绑定到 0.0.0.0 这个地址——意思就是说,任何地址(任何机器)都可以连接到 Tor 的监听端口。

(唠叨一下:如果要跨机器共享 Tor 的 SOCKS 端口,别忘了修改防火墙的配置,允许 Tor 监听端口的 TCP 连入)

◇啥是 obfs / obfsproxy?

这玩意儿也是 Tor 官方提供的工具,主要是用来混淆 Tor 的流量。

因为 Tor 的名气太大了,很多网络监控系统(比如天朝大名鼎鼎的 GFW)可以根据网络传输内容,判断该流量是否为 Tor 的流量。如果是 Tor 流量就进行阻断。

(请注意:"判断流量类型"【不等于】"解密内容")。

为了应对这类威胁,Tor 官方提供了一个额外的工具,用来混淆流量,让监控系统识别不出。原理图如下:

Image for post

虽然有 obfsproxy 这个工具,但是对于那些非常重视安全性的网友,俺依然提倡用"双重代理" — — 双重代理的优点刚才分析过,此处不再罗嗦。

★结尾

本文写得有点仓促,涉及的问题未必覆盖到方方面面。如果你觉得本文还有哪些问题没有覆盖到,欢迎到俺博客留言。

俺博客上,和本文相关的帖子(需翻墙)

如何翻墙(传说中的翻墙入门教程,不定期更新)

戴"套"翻墻的方法

"如何翻墙"系列:扫盲 Tor Browser 7.5 — — 关于 meek 插件的配置、优化、原理

扫盲 Arm — — Tor 的界面前端(替代已死亡的 Vidalia)

如何隐藏你的踪迹,避免跨省追捕(系列)

扫盲操作系统虚拟机(系列)

版权声明

本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2013/11/tor-faq.html


文章版权归原作者所有。
二维码分享本站