安全地访问网络

在 A 市住着一位正在上中学的小 B。

小 B 的并不记得自己生活的城市中各个地点的确切位置,因此每次都要询问路人才能得知该去往何处。某一天,小 B 准备去报课外班,但是只记得课外班的名字叫做“C”,并不清楚“课外班 C”究竟在什么地方,于是便询问了一个路人,路人告诉他在 X 大街 Y 大楼 Z 层,于是小 B 便前往了对应的地点,支付了学费。

可是,小 B 被这个路人骗了。真正的课外班 C 在 D 大街 E 大楼 F 层。虚假的课外班伪造了和真实课外班一模一样的布景,来访者无法分辨真假;或者,对于第一次前往的小 B 来说,其根本不知道真正的课外班该是什么样子。

我们在访问互联网时,需要“域名解析”来根据网址得到其所在的实际的 IP 地址。域名解析服务由“域名服务器(DNS)”提供。然而,用户可能会访问到虚假的 DNS,这会导致不能得到正确的 IP 地址。这时,我们就遭到了“DNS 劫持”。

为了避免以后发生这样的事故,小 B 决定记下常用地点的地址,并且在以后只向信任的人问路

用户的计算机在访问域名服务器之前,会先检查系统的 HOSTS 文件中标记的各域名对应的 IP 地址。用户还可以通过选择可信的域名服务器来减少 DNS 劫持的发生。

小 B 喜欢学习和阅读,经常从书店买书来看。小 B 在书店订有月刊,书店会在刊物到货后送到小 B 的住处。

小 B 的邻居阿 Q,很喜欢小 B 这个品学兼优的好学生,并且希望用自己的私密照片来向小 B 表示自己的感情。曾经,阿 Q 还有可能通过“对小 B 伪装为书店,对书店伪装为小 B”的方式向小 B 的书中夹带文件。但自从小 B 和书店确认了彼此的具体所在后,这种方法便不再可行。

此外,小 B 经常通过信件和小 G 联系。而小 K 觊觎小 B 和小 G 的之间联系,总是想着查看两人的通信内容,并且试图破坏二人的关系。小 B 的妈妈“爱子心切”,发现小 B 的订阅刊物里出现了漫画书,感到十分焦虑。

不过,阿 Q 很快发现,小 B 和书店的通信是公开的,即整个过程中,小 B 的报刊都未经包装,并且总是会暂时处于无人看管的状态。这就给阿 Q 提供了机会。小 K 也同样发现了小 B 通信过程中的疏漏之处,开始着手破坏两人的关系;小 B 的妈妈由于有得天独厚的优势,则可以直接将漫画书替换为最新的习题册。

在访问互联网时,信息被第三方窃取、监听、篡改的情况称为“中间人攻击”,即“Man-in-the-Middle attack”,简称“MITM”。“中间人”的目的是要让双方都认为自己在和真正的对方进行交流。

小 B 也很快发现自己的通信出了问题,很是苦恼。不过,他想到可以通过“加密”的方式来确保自己得到的是真实的对方的信息。比如,自己可以给对方传送一个锁和一把钥匙,让对方用其为内容加锁。可是,小 B 传输信息的通道是不安全的,自己的锁可以被中间人替换,再在信息回传时重新加上,而小 B 又没有机会其他人绕过自己的身边人私下见面递送锁和钥匙,因此不能采取这种方式。

一般来说,双方可以协定好一个加密协议,同时使用这种方式来对信息进行加密。上述的加密方式称为“对称加密”,其方式简单、加密速度快。不过,对于只能通过不安全的信道进行通信的情况,这种方式是不行的。

不过,小 B 发现,自己可以只把自己的锁给对方,而把钥匙留在自己身边,让对方用自己的锁加密发送给自己的信息。这样,小 B 可以任意发送自己的锁,而加锁的内容只有自己能打开。

上面这种方法就是非对称加密。对方在发送前,往往还需要对信息进行“签名”,即“署名”。由于公钥和私钥是相对的,用户用公钥加密的信息可以用私钥解密,反之亦然。

可是,双方交换公钥时,如果被对方截取,那么非对称加密也是没有意义的,因此需要引入可信的第三方。HTTPS 协议要求检查网站的证书,来判断是否建立了可信的连接。

虽然我们有了如上所述的加密方式,但小 B 的妈妈还是可以阻断小 B 获得漫画书的这条来路——直接屏蔽掉所有去往书店的通信即可。

要做到这一点,可以通过篡改 DNS 缓存、将原来的数据请求转发到随机的地址等诸多方式来实现。

于是,小 B 的妈妈这样做了。小 B 购买漫画书(也包含购买教材、教辅)的请求就被发送到了镇上各种各样的地方,比如超市、水果店、体育场、建材店等等,很显然,这些店铺都无法对这种他们看来莫名其妙的请求做出回应。此外,这些莫名其妙的请求也使他们感到不悦,通过追根溯源,发现这些麻烦全是小 B 的妈妈导致的,纷纷发出指责,甚至选择从此拒绝接受从小 B 家发出的请求。因此,小 B 的妈妈必须想出另外的办法。

另一方面,要满足小 B 正常的购买课外书的请求,小 B 的妈妈就精心挑选了几家书店,并且确保里面不会有不想让小 B 看到的书本读物,并且只允许小 B 从这些书店中购买书籍 。

可是,小 B 并不想因此就范,坚持要看自己想看的漫画书。他想到可以通过代理人的方式躲过妈妈的审查。之前,小 B 有时离开了学校,但仍想看学校里的书籍和资料,就会请在学校的老师或同学将资料转发过来,这些帮小 B 转发资料的,就是小 B 的代理人。

这种方法称为使用“代理(proxy)”。当用户想要安全地访问远程计算机时,最理想的办法是搭建或者租用专用的物理网络,称为“专线”,但这往往需要高额的成本,因此,一种使用互联网来建立这样连接的技术就叫做“虚拟专用网”,即“Virtual Private Network”或“Virtual Personal Network”,简称“VPN”。

比如,当我们离开学校,依然可以使用“虚拟专用网”技术访问学校的内网,而不必建立从学校到家庭的专线。

可见,“虚拟专用网”的技术也可以用来帮助用户在一定程度上摆脱网络的监管。

因此,小 B 可以拜托自己能访问到原书店的朋友来帮自己购买漫画书,再转发给自己。小 B 对这些朋友的访问就不容易引起妈妈的怀疑了。

但小 B 妈妈也有对策。比如,可以通过检测数据包的内容。或者,假如小 B 访问某个同学太频繁,也会引起妈妈的怀疑。因此,小 B 可能需要同时选择多个朋友作为自己的代理人,并且将自己的数据进行加密。

当然,纵使是加密过的数据,小 B 的妈妈也能通过特征的判断和直觉来断定是否为可疑流量。而小 B 通过多个代理人访问一个书店的行为,也会造成书店管理员的怀疑,因而拒绝提供服务。

可以预见,直到小 B 成年,或者独立成家,或者小 B 的妈妈转变态度,这场博弈和较量会一直持续下去。

隐私是如何泄露的

除此之外,我们还要关注自己在网络上的隐私问题。

我们知道,用户的 IP 地址大多情况下是不固定的,而网站会使用一种存储在用户设备上、叫做“Cookie”的文件,来记录用户的登录信息。网站可以读取用户设备上的 Cookie,来透过不同的设备和 IP 地址,分辨出同一用户。这样,除了可以方便用户登录网站,也能实现针对性的信息推广。

甚至,不同网站会共享收集到的数据,建立对用户更全面的画像。

有些开发者、公司提供的软件、应用程序(比如浏览器、安全卫士、操作系统),出于个人或其他的目的,也会窃取用户的个人数据,上传到远程服务器,并提供(售卖)给对数据感兴趣的第三方。

有些时候,用户数据在毫不知情间就会被收集。比如,当用户访问某网站时,网站采用的第三方验证手段,或者第三方网站提供的图片或脚本,同样可以记录用户的浏览数据。

现实生活中我们也要注意隐私信息的保护。有些商家会采用面部信息来标记自己的客户。相较于指纹、密码,面部信息是最容易取得的生物特征。

用户可以使用个人代理来在一定程度上避免不安全网络带来的风险,如避免下载到被篡改的文件、或者避免受到其他用户的跟踪。不过,正如之前所说,一些免费的代理服务存在窃取用户信息的情况。

一些其他概念

ShadowSocks

“ShadowSocks”,简称“SS”,有时也称为“影梭”,是一种混淆加密代理流量的方式。“ShadowSocks-R”,简称“SSR”,是“SS”的“升级版”。

因其图标为“纸飞机”,因而被人称为小飞机。

VMess

VMess 协议是由 V2Ray 原创并使用于 V2Ray 的加密传输协议。用途类似于 SS 和 SSR。

参考链接:

  • https://iyideng.net/black-technology/cgfw/v2ray-vmess-vless.html
  • https://toutyrater.github.io/basic/vmess.html

机场

得名于“SS/SSR”的图标,提供国际网络代理服务的网站有时会被称为“机场”。一般,稳定的网络代理服务会收取一定的费用,满足一般用户使用需要的套餐价格从每月十元至数十元人民币不等。

使用他人提供的网络代理服务,自己对于网络的访问对于服务方是完全可见的,因此仍需注意选择可信任的代理商。

节点

一般,用户购买相应的服务后,会得到若干条称作“节点信息”的字符串,形式类似于 URL(或者可以说就是一种 URL),可以用来通过对应的协议连接到远程服务器,往往要搭配之前提到的 SSR 或 V2Ray 等工具来使用。

订阅

单个的节点信息并不易于更新和维护。更为常见的情况是,服务提供商为用户提供一个专属的“订阅链接”,用户通过订阅链接,可以直接下载、更新节点信息,也就是一份用于代理客户端的“配置文件”。

由于不同工具使用的协议不一样,我们有时需要对配置文件进行转换。这通常是通过在链接的层面进行的,即,转换后的链接从一个订阅源,将获得到的节点信息根据链接中的请求,进行对应的转换,最终返回给用户。

一般,服务提供商的网站会有多个选项,用户可以根据自己所使用工具选择对应的链接。

代理模式

一般,有“直连”“规则”“全局”等代理方式。

  • 直连即为不转发流量到代理服务器;
  • 规则代理最为常用,其会根据事先编写好的“规则(rule)”将不同类型的流量转发到不同的代理服务器上,一些无需代理的流量则不会被代理;
  • 全局代理则将所有流量都进行转发。

客户端

上述提到的 SSR、V2Ray 等只是一种协议或者工具,往往不具备图形化界面,抑或配置较为复杂。用户要想实际使用,不仅需要获得到节点,往往还需要一些对这些工具进行二次封装的程序,往往会具备一个图形化的配置界面。这些程序也被称为客户端。

有些服务提供商会提供一个图形化的的应用程序,用户只需要若干点击即可完成使用;而有些服务商直接提供给用户订阅链接,并且许多现成的软件支持用户通过“订阅链接”下载节点信息。这种提供订阅链接的方式更为灵活,用户可以随意更换自己喜欢的应用程序和工具,并且支持的计算机平台也更为广泛。

图形界面的方式往往更容易为用户所操作。一个用户常见的问题为“系统代理(System Proxy)”。根据之前的知识我们不难理解,代理程序无非是一个能够以某种协议和远程服务器收发信息的程序。但是要想让计算机上的其他程序也能通过该代理访问网络,则需要将自己的流量转发给这个代理程序。一般,代理程序一经启动,会侦听本机的一个端口,所有传到该端口的数据会由代理程序按照规则转发。

默认来说,启动了一个程序,并不影响其他的应用的网络情况,对于代理程序也是如此,因此需要用户手动设置每个应用的代理服务器 IP 地址和端口号。由于代理程序一般会侦听本机的某个端口,用户将对应程序代理服务器的地址设为“127.0.0.1”或“localhost”以及对应的端口号即可完成相应程序流量的转发。

而操作系统一般会提供一个全局的代理设置选项,用户在此处配置之后,大部分应用就会默认使用系统的代理设置,即“系统代理”。一些代理程序会提供快捷的选项,无需用户手动设置。

具体来说,配置过程可能还会有一些细节问题。不过,通过以上的介绍,读者应该已经具备了相关的概念,因此这里不再赘述。

加速器

用来实现上述代理网络访问的软件可以统称为“加速器”。由于一些游戏对于数据传输时延有较高的要求,有些专用于游戏的加速器会通过专用的信道和协议。这一类的加速器往往以某“游戏加速器”为名,目的是满足某地区用户和其他地区的用户共同游戏的需求,会限制用户将其用于游戏之外的用途。

我们该怎么做

国外的网络发展早,如流媒体网站,其提供的内容质量往往更高。国外的诸多大学也有开放课程,可以学习。另外,不少领域的资料,尤其计算机相关的,要想获得第一手资料,或者寻找原始的内容,往往需要去访问一些国外媒体,或者个人自建博客等。而对于这些内容的访问往往会受到一定的阻碍,比如,一些网站会选择拒绝来自某个地区的 IP 地址的请求,或者某个地区到该服务器的通路受到了阻断,这时就需要通过代理服务器来访问相应的内容。

此外,从理论上来说,有关方一定能够定位并监管到相应的用户。虽然监管方可能会通过立法禁止相应的行为,但毕竟执法需要成本,从目前来看,对于出于正常的交流、学习目的等不触及“原则问题”的使用,监管方通常不会采取措施,甚至会鼓励和外界的友好交流。或者用更简单地话说,安全的做法就是只读信息而不向外散布。不过,中华人民共和国相关法律明确规定,不得私自搭建跨境信道进行盈利,也不允许公开传播此类方法。

互联网是自由的,任何信息都可能会出现在上面。总之,无论在何处、处于何种情况,我们都要保持自己的独立思考,兼听则明,偏信则暗。


参考资料:

https://www.bbc.com/zhongwen/simp/chinese-news-46823319