UglyBull

Crypto Anarchist, Linux/BSD nerd/geek, FOSS advocate Liberalist, Feminist, ex-NGOer

一份硬核的在线匿名FAQ

这里这份 FAQ 是旨在帮助处于困境中的人士如何安全地隐匿地上网发布信息、跟别人联络等。对于普通大众来说可能太硬核了,但希望也有所帮助啦。首发于[GitHub仓库](https://github.com/mdrights/Digital-rights/blob/master/A匿名策略/在线匿名FAQ.md)
此文写于2016下半年至2017上半年,其时正值《境外NGO管理法》通过并实施。当时有的伙伴受到严格的监控,有的还失去人身自由,更多的伙伴草木皆兵,做了很多打算。遂总结了相关知识和经验,写下此文。

前言

在线匿名不但是一门技术,更包含一些使用习惯、非技术的软技巧。如 Whonix wiki 上说:

“but staying anonymous is not just a technological problem. Anonymity is a complex problem without an easy solution. The more you know, the safer you can be. ”

本人现总结一下关于这方面的常见问题。部分资料来自Whonix文档Tails文档


什么是“在线匿名”?它的原理是什么?

仅仅使用化名绝对不能称为我们说的匿名(anonymity),自己的社交帐号、邮箱名称使用化名是无法对付国家机器的。因为当前的主流的互联网结构(暂不讨论BT等p2p网络)会记录每台联网的设备的唯一的身份信息,包括:IP地址、浏览器指纹印记(user-agent)、设备唯一编码(如网卡的MAC地址、SIM卡IMSI码、手机IMEI码)等。在线匿名的技术就是要伪装这些信息,让网络那边的有意无意的记录者无法知道某台设备的浏览/访问踪迹,或者说无法将某台设备的流量内容与真实设备对应起来,也就无法确定某些信息来自这台设备的使用者。


我真的需要在线匿名吗?/ 谁需要在线匿名?

简单回答:需要。网上言论和访问地址不被追踪是人的基本自由,就好像在物理世界里每个人也都有不被跟踪和监视的自由一样。

深入回答:看你的实际需求是什么。由于目前的互联网技术本身没有为匿名而设计,因此在线匿名显得需要额外的技术和时间/学习成本,或许使用上还不大方便、或速度减慢。因此根据自己的实际需求/困境/受威胁模式,来确定/优化自己的匿名方案。 请看下一个问题。


什么是“威胁模式”(Threat Modes)

从上一个问题我们可以知道,我们需要具体需求具体安排匿名技术的使用。具体需求具体分析,也就是说你的需求来自于你遇到怎样的风险/危险。 从需要隐匿的对象来看,我们有两类要隐匿的对象:一是本地网络网管和ISP,二是你所访问的(远端)服务器(如网站、聊天工具、邮件服务等)。如果你觉得你需要真正在物理位置上匿名,那你需要同时对付ISP和所访问的服务器,因为这两者都会与国家机器合作,泄漏你的具体地点。当然ISP(包括本地网管)更能帮忙定位你的具体位置,对付他们的重要性可能更大(修改你设备的Mac地址(手机还有IMSI码、IMEI码));而对付远端服务器你只需要Tor就够了。 举个栗子,假如,你认为只要你一上网有关部门就会盯着你,或你正在躲避抓捕,流浪在某个地方,你需要全套的高度的匿名措施:eg. ss(R)+Tails+TorBrowser+Pidgin/OTR或Tox+MAC随机地址+无需实名的公共网络,或更多前置/后置代理……;如果你认为只要相关敏感网站上没有你的痕迹,你的目标应是防你所访问的网站等服务的记录和分析,你只需要个Torbrowser就够了。 这些都还要配上严谨的使用规范(如不能在匿名后登录自己的非匿名帐号等)。


加密还是匿名?

这个问题背后似乎还是需求分析的问题。加密可以让你的真正数据不被其他人看到,匿名是为了不让人知道这些数据是你的。 一般认为,需要匿名的地方通常是需要在公共/半公共的场合发表言论/信息的地方(因此没有必要加密嘛);而加密更多是为了防止在个体间或封闭的群体之间通讯中被窃听。后者通常需要确认双方的真实身份(所以有时需求是矛盾的)。当然也可能出现非常高安全的需求,那就两者都用上。

一般我们认为,在墙国这样的形势(手机、网络通通实名)下,想(在ISP层面)匿名是很难的(当然你可以说你去找别人的手机/WIFI去用,但……你真的忍心去让朋友/陌生人替你去背你的锅么?另一方面,长时间使用另一个人的帐号上网,也会被关联到你自己,如果是朋友的话,关联可能性更高;如果是同时携带匿名的移动设备和非匿名的移动设备,这也会被分析你的物理移动轨迹而让匿名的设备成为徒劳)。

所以,对大多数人来说,一个对策是把你的物理机器的信息与在网络远端留下信息做成不一样的。


在线匿名的基础技术有哪些?

无需多说肯定是著名的 Tor项目,又称洋葱路由,它的主要功效是隐藏(伪装)你的真实IP地址(即显示出来的是个别的IP)。已经有不少中文的介绍了,见这里。Tor本身可以在命令行里运行,但更多的用户是使用Tor浏览器(在墙内需要用前置代理先翻墙,或找个安全的信赖的网桥)才是好的。

当然,配备个Tails Linux系统(所有流量走Tor的系统)也是好的。为什么?请看下一个问题。 除了Tor外,还有一些别的匿名技术,如Freenet,JonDonym,但它们都不够Tor成熟和实用,暂且不表。此外,隐匿了自己机器的IP地址,不等于就做到匿名了,请看这个问题


为什么要用Tails?

Tails仍然值得推荐是因为它,一是基于自由开源的Debian GNU/linux+专业志愿社区审计和加固+Live USB载体。自由开源的代码为免去恶意代码提供了很大可能性;Live USB的形式可以做到所有修改不写入系统,重启恢复原来状态。更重要的是,它在多方面为广大非技术用户做了一站式隐私安全处理,包括可以设置MAC地址伪装,浏览器UA伪装,当然还有:所有流量走Tor。

二是对非技术小白有容易上手的操作性(自带中文输入法虽然好像不大好用,具体请看我曾写过一篇介绍)。


Tails在墙内如何把Tor用起来?

常听到有人问这个问题。我分享我的做法是,用Raspberry Pi(比较小巧便携)做前置代理(eg. ss-redir全局),当然你也可以用其他设备(电脑、openWRT路由器或安卓手机)。另外的做法是你也可以用网桥,有两种:Tails/Tor提供的网桥(通常一公开出来很容易被墙/封);其它网桥(建议最好自己自建网桥服务器VPS,用他人的网桥容易有风险,流量泄露的可能性高;当然前置翻墙用的代理(vps)最好也是自建的,且不分享给没有安全措施的设备使用)。对了,第三个方法是把Tails放进虚拟机里(如 Virtualbox),如果Host机不是VPN等全局代理的话,仍需要开http proxy让整个虚拟机走代理。但这有个风险就是如果Host机没做好安全措施的话,直接降低了Tails的安全性(所以更加复杂而不推荐)。 Tails仍然值得推荐是因为它,一是基于自由开源的Debian GNU/linux+专业志愿社区审计和加固+Live USB载体;二是对非技术小白有容易上手的操作性(自带中文输入法虽然好像不大好用,具体请看我曾写过一篇介绍)。


在线匿名我只需要Tor就够了吗?

不够。只伪装IP地址顶多可以做到:不让人知道你的当下物理地点,但很难不让人发现来自这台机器的流量/网络身份是你的。因为确定你的身份,除了用物理位置外,还有很多东西可以帮助确定/定位到某个特定的人(那个人特点越多越容易~)。EFF有过一个研究,从数学的角度来解释讲只要知道少至几个(如6个)属性/特点,就能定位世界上任何一个人。而当你用你的机器在网络浏览,留下的特质性信息还是蛮多的。

网卡MAC地址,浏览器User-Agent,就是两个应该伪装的地方。EFF的网站上可以看到你的浏览器的 User-Agent 跟多少其他访客的是一模一样的,你就理解了。

  • MAC地址伪装(随机化)方法:
  • tmac for Win; For MacOS....暂用命令行吧(?)参见 这些方法 (最佳实践:用 Linux)
  • 然鹅,MAC地址的随机化并不都是那么有效,特别是移动设备(安卓设备更加感人),请阅读 这篇翻译/解读
  • 所以,Whonix wiki 教我们一个不是办法的办法:在不能/不会给自己电脑做MAC地址随机化的情况下,准备多个USB式无线网卡(30~50RMB够了),在不同的场所用不同的网卡。注意:在同一个场所用同一个网卡就可以了,而且在自己家/办公室里联网也不需要搞MAC地址伪装了(因为老大哥早就知道在这里上网的是你了嘿)。
  • 浏览器UA伪装方法: 火狐浏览器插件Switcher
  • Chrome插件

(如果你不想安装这些外部的插件(因为有一定隐患),那也有方法,请参考 这篇文章(略复杂)。


那,在线匿名需要做到那些非技术性的措施?

这篇Whonix wiki文章做了详细的介绍,匿名时不要做以下事情:

* 我匿名的时候我的网站是啥样子我想去看看
* 登录你的反映真实社会关系的(实名)社交帐号,并觉得自己在隐匿
* 坚决不要登录你之前不用 Tor 登陆的帐号
* 不要登录你的银行帐号、淘宝或其他重要个人帐号,除非……
* 不要以为公共 WIFI 有 Tor 一样的功效
* 防止 Tor 中带 Tor 这样的情况
* 没有端对端加密就不要传送敏感信息了
* 不要透露关于你自己的身份信息
* 如果你覺得在你的國家使用Tor是危險/受到懷疑的,請用網橋
* 不要使用/維護長期的網絡身份
* 不要同一时间使用不同的网络身份
* 无事少登推特、非死不可、谷歌等
* 不要把不同匿名模式混着用:
    * 模式1: 自己匿名,任意接受者(公开);
    * 模式2: 自己知道接受者是谁,双方都用Tor;
    * 模式3: 自己用Tor但是不匿名,任意接受者(公开)
    * 模式4: 自己不匿名,任意接受者(公开)
    
* 如果你不清楚后果就不要修改设置
* 不要把明网和Tor一起混着用
* 不要同时用匿名和非匿名技术连接同一个服务器/网站
* 不要将匿名和化名混为一谈
* 不要让自己成为第一个传播自己(网站)链接的人
* 不要打开陌生/随机文件或链接
* 不要用手机(移动设备)做验证方面的事  

中文翻译全文在这里


手机上如何做到在线匿名?

这也是很多朋友的疑问。

简单回答:带移动模块的移动设备的(ISP层面)的隐匿性是非常差的。

(参见 EFF:手机的问题):

深入回答

  • 国行/国产安卓手机您就放弃吧;
  • 苹果手机,唔,对匿名的需求也是不给力,因为非越狱的iOS系统不让用户进行深度设置(hack);苹果也会发送用户/账户信息去它的服务器(虽然它征得了用户的同意);
  • 大部分(90%?)的手机都是墙国生产制造,即使操作系统你深度定制,但硬件固件仍可以由设备制造商控制,喏,前几天不还有新闻爆出后门,悄悄发送用户的短信、位置等信息来么?
  • 移动运营商会记录SIM卡和其相关联的设备的信息(各种唯一编码),如果SIM卡实名,与其关联的设备也就无法匿名。因此如果想用手机匿名匿踪的话,非实名地买一台手机,不插自己用过的SIM卡,不装不信任的软件(比较流氓的软件也能出卖你),一次只做一件事。
  • 只要是手机(带移动信号模块),都难以排除它跟信号基站的通讯联络,即使飞行模式、拔掉Sim卡,也能定位。主要因为当前的移动网络系统(ss7)不开源,大多数人是不深入懂其中的坑并做审计。比如短信是可以被劫持、SIM卡是容易被复制的。已经有相关报道显示Telegram用的接受验证码的短信被有关部门劫持并远程登录。因此不要使用带短信验证码的服务(如果可以,用OTP/OAUTH等,随机一次性密码,如谷歌的Authenticator、UbikeyU盘、密钥U盘等)
  • 因此您还不如用一台没有移动信号模块的安卓平板,经过刷机等安全措施后,在不需手机验证等实名的网络下匿名上网。
  • 如果您不在乎ISP层面的匿名,可以参考Tor项目的 Tor-Android尝试(其从远端的角度来伪装本机但无法防止ISP层面的匿名;但尊重用户选择和自由、大幅减少攻击面”,让其仍有很大可能成为一个安全加固的定制安卓系统——毕竟有机会让更多的人低成本地接触到网络也很重要。)
  • 只要可能,选择非 made In China 的手机,如台湾、韩国、印度制造,并且能选到低端手机的话(在你预算之内),时而更换手机也是极好的。


当我匿名上网时,我需要用什么样的即时通讯软件(IM)?

简单回答使用不需要手机号注册的软件(XMPP类);如果你非常注重自己的位置安全,请用P2P网络架构的软件(目前主要是Tox类,见其官网)。并需要总是通过Tor做代理来使用。

深入辨析:在外躲藏/隐身/流亡时,你一定非常注重自己的位置安全。你也许已经知道的是,你需要最好换个新手机,开启新的境外买的未实名的手机号。你觉得这样你再注册一个新的(需要手机号注册的)IM软件(如Whatsapp,Signal)是安全的。

然而并不是这样。

  1. 假设你已在逃亡/躲避的路上才开启的你的这新号码,你的伙伴是不知道/没法确认这个号码是你的。没法确认身份这个很麻烦,容易产生误会(当局/GA/黑客们最容易下手的最简单的手法就是:冒充和欺骗)。
  2. 况且,更可能发生的情况是,你可能根本不敢/无法打开原来的手机查看你的伙伴的电话号码(也是他们IM上的帐号),这样你可能为了安全又没有提前准备的话无法跟任何人联系。
  3. 再者,你真的需要隐匿你的位置的话,你坚决不能接受短信(包括接受验证码的短信)。因为不管是本国的号码也好,墙外的漫游号也好,短信的发送必然需要通过运营商,所以,人家可以迅速定位;而且,短信是可以被劫持的(上面已提到)。
  4. 假设你在之前人身安全的时候已经在用一个未实名的境外手机号,笔者也建议你在躲藏/逃亡的时候不要使用它,就像不要使用之前在用的手机号/社交帐号一样。因为你无法排除你的这个号码/帐号是否在某些途径上已跟你这个人关联起来(比如,用此帐号/号码的通讯信息已被黑;号码可能已被运营商记录了物理移动轨迹而分析出是你,等等)。
  5. 如果你说你在事先买好非实名的境外号码,一直不使用,只是提前告诉伙伴这个号码。那么就要一定确保这个号码不要泄露出去(被不该知道的人知道),然而俗话说得好,没有不透风的墙,你无法指望他人(都不是圣人)用意志为你保守秘密。所以,这也是很不严谨的。

所以,既然能有技术解决的问题反而去用非技术(如制度、道德等)去解决,就不明智了。我们需要用非手机号注册的IM软件,目前在安全性上做的比较好的是:XMPP类的如 Pidgin(Win版/Mac版/Linux版)、Chatsecure (有iOS版/安卓版)、Conversation(安卓版)、Jitsi(多平台的视频通讯),还有 Tor-messenger(多平台)可以试试。注意在使用XMPP类客户端时看看他们有没有提供 OTR 加密插件(需要有并开启)。XMPP类通信软件其实本身并不是匿名的,它的设计也是需要有中心服务器中转,然而,一方面我们可以选择信任的非营利非政府背景的服务器(如 dukgo.com; riseup.net——不记录用户IP),甚至可以自建服务器;另一方面务必结合Tor使用(让本机Tor做代理)。而如果你担心这中心服务器也不够安全/可信的话,则建议您使用 Tox —— 去中心化的通信方式不需要中心服务器(但也要结合Tor才能隐匿IP地址)。

当然,还有更可靠的身份验证技术,即openPGP——这方面的资料就比较多了,见EFF的手册,和macOS上使用方法, Windows上使用方法

======

Copyleft

This article is first published from MDrights@github under the GNU Free Document License.

https://www.gnu.org/licenses/licenses.html#FDL

Please keep this part reserved and unchanged.

======

發布評論

看不過癮?

一鍵登入,即可加入全球最優質中文創作社區