网络加密与科学上网

网络加密与科学上网

@PhrenoVermouth  06/2017


快速入门

如果不想了解原理,可以直接通过本章直接穿越。按你的需求,如果:

· 我只想上谷歌,不想做任何改变—>校园网环境下可以使用ipv6.google.com;

· 我不想安装任何软件,不需要youtube,看看脸书推特即可—>详见“更改hosts上网”;

· 追求一般的科学上网体验,不对视频清晰度有较大要求—>下载lantern;

· 追求高速科学上网体验,拥有极大的多设备扩展性—>详见“shadowsocks”系列。


网络信息的传递与信息安全

在并不遥远的互联网发展早期,一般的互联网访问几乎完全是裸露的。任何电信提供商(ISP)都能够对客户的数据流进行拆包分析,并且轻而易举地提炼出关键词。在21世纪初期,如果在中国大陆访问谷歌,搜索“六四”“天安门屠杀”等关键词,连接将有很高几率被精准阻断,最终响应时间过长无法访问。

究其原因,主要在于HTTP协议所采用的明文传输方式是非常不安全的。早期也有一些加密的手段,例如SSH协议以及PPTP/L2TP协议为代表的VPN等。但由于对于个人信息传输的轻视,全球范围内除一些电子邮件网站之外并没有开启加密。

至今众多网站的仍然采用传统的HTTP方式进行访问

2013年斯诺登出逃而产生的棱镜门事件震惊全球。国家机关以安全为由对于隐私的侵犯如此严重,使得网络访问的加密迫在眉睫。也就是在同一时期,各大外国网站纷纷以HTTPS作为默认访问协议。国内各个网站为了不被浏览器标记危险网站也纷纷跟风。由于密码学的不断发展,基于SSL的加密协议可以达到1024bits甚至2048bits,并且通过其它混淆算法,使得在技术上通过无穷枚举的方式进行破解需要几年至几十年的时间。在量子计算机出现之前,现有的技术是无法予以攻破的。

被标记为Secure的网络连接,真的就没有第三方知晓吗?

为深入理解HTTPS加密的可靠性,我们必须对于密码学的演进略为了解。最为原始的加密,即字母替代的方式,在古希腊的战争中就已经被广泛运用。在战争前预先将26(假设是)位字母加以混淆映射,前线与后方存在着互为逆运算的加密、解密表,也就完成了明文与密文转换过程。假若情报被劫,在外人看来俨然成为一团浆糊,无法分辨其中的信息了。我们通过数学加以验证,如果利用暴力穷举的方式加以破解:对于某一位密文字母,将有26种可能,最终全排列的可能将有26!种可能性。也许对于今天的超算来说这种加密实在是小菜一碟,但对于古代人的算力这已经如同天堑无法逾越了。

然而事实并非如此,从上述的加密方式来看,我们知道每一个明文符号总是映射到相同的密文符号。这就意味着明文的统计属性在密文中得到了很好的保留。我们基于大量数据的统计,可以发现语言的表达是有一定pattern的——在这里主要体现在字母的出现频率。通过一些场外信息,我们知道E是英语中出现频率最高的字母(~13%),而频率第二高的字母是T(~9%)。除了一个一个字母加以破解,我们还可以对于反复出现的字母组合加以猜想破解。例如连续出现的XY重复,是不是对应着‘We’呢?连续出现XYZ的重复,这是不是对应着‘The’呢?通过这样的方式,我们可以以很低的算力巧妙破解这种对称加密的密文。事实上直到二战期间,英美盟军破解德军密文,也利用了类似方式的辅助。

这里强调对称加密,是因为20世纪密码学一大突进在于出现了非对称加密。所谓”非对称”,意思就是加密和解密的时候使用不同的密钥,这种非对称的想法可是密码学上最大的突破之一。非对称密码有一组密钥,这组密钥中,公开的被称为公钥,私有的被称作私钥;使用公钥加密的文件只有使用对应的私钥才能解开;使用私钥加密(签名)的文件只有使用对应的公钥才能解开;每一对公钥和私钥之间有着严谨的数学关系,很难通过公钥推导出对应的私钥,反之也很难。HTTPS是在基于非对称加密算法的基础上,同时利用哈希值MD5的验证,确认了网页的完整性。一旦网页内容遭到篡改,md5值出现差异,浏览器会自动屏蔽本次访问。这也是电信提供商无法在HTTPS网页上通过中间人攻击嵌入广告的原因。

说了这么多,但对于中国大多数喜爱浏览国外网页的人们来说,https的普及其实是一场灾难。这是由于当局无法通过中间人攻击的方式对加密后的数据流进行拆包分析,并进行政治敏感性的检验,引起其深深的担忧与恐惧。以google为例,在启用https前,google在中国大陆的非政治敏感性的服务还是相对比较顺利的。自从2013年默认使用https后,谷歌在华的各项服务陆续被干扰,直到2014年被完全封禁。类似很多的西方网站均受到此等待遇。当然,百度等国内网站也是表面上采用https,但我们完全有理由相信,很可能其秘钥都是上交的,或者干脆成为合作者,主动提交相关数据,方便审查活动的进行。

GFW对于海外流量审查处理的相关原理

我们平常访问某一网站的流程如下:首先,访问请求(如www.google.com)被翻译成为IP地址。这里的翻译过程主要通过本机的hosts文件记录,这里储存了之前本机上网的相关记录,可以方便用户快速再次定位IP地址,从而重新访问网站。对于本机hosts文件没有储存的记录,访问请求将会经过DNS进行查询,这里的DNS相当于交警指路的作用,给客户提供某一网址的IP地址。

如前文所述,现阶段HTTPS的访问是不能被嗅探内容的。目前阶段GFW(大防火墙)对于海外流量的审核方法也就是主要通过DNS去做文章。对于访问某一网址的https请求,GFW下的伪DNS服务器将以更快的速度给予错误答案。这也就相当于指路给指到坑里去了。例如对于twitter的访问,一般是被重置到阿塞拜疆一个不存在的IP地址。这已成为了DNS污染的经典案例。

推特访问被重置到阿塞拜疆37.61.54.158

由于DNS污染实际上就是拼标准DNS服务器接口与GFW的伪DNS接口谁的速度快这一问题了。这个尺度其实并不好把握,很容易就会将DNS污染祸及其他国家,事实上这个情况也不是没有过,并且也受到国际上的严重抗议。

除了DNS污染以外,更为直接粗暴的方式是封对方的IP地址。但这种做法往往是杀鸡用牛刀,例如屏蔽谷歌IP但是托管在谷歌平台上的很多网站是不能屏蔽的。事实上这种做法造成了大量的无辜伤亡,美国甚至因此准备将GFW认定为贸易壁垒,原因就是大量正常的商业网站无法访问。

因此小结一下,在“御民”方面,GFW主要采用以下方法:

·是明文传输?拆包、审查;

·加密传输?看网站是否上了黑名单,是则直接DNS投毒给错误IP地址;

·如果IP地址正确(例如某人在浏览器指定访问某IP),对面的IP也可能直接被封了,你的连接还是被重置。

近年来,我们也发现了GFW作为“慑敌”的角色。

如之前所述,通过流量劫持GFW可以误导大量的网络流量前往某一IP地址。通常来说这个IP是不存在的,因此不会对某实体网站的访问造成影响。2015年,GFW转换对策,利用“大炮”(Cannon)劫持流量制造大规模流量攻击DDoS,目标则是致力于GFW研究以及墙内屏蔽网站镜像架设的Greatfire.org以及代码仓库Github。作为一家技术网站,Github的重要作用已经不可替代,事实上几次想封锁的尝试都因为国内反对声浪过高不得不中止。DDoS攻击的发生的确起到了威胁的效果,例如Github应中国政府间接要求(通过一个所谓的非政府组织致信)屏蔽了中国大陆IP对于深挖高层领导人家谱的帖子(https://github.com/programthink/zhao)的访问。不过目前似乎又悄然得以恢复。类似的事件不止这一次。

科学上网的相关方法

了解GFW屏蔽网站相关原理后,事实上我们也不难制定出相应的对策躲避审查。

○hosts法

目前对于教育网(tongji.portal)环境来说,IP封锁并不严重,多数情况的屏蔽来自于DNS污染。因此我们只要固定域名与IP的关系就可以实现众多网站的科学上网了,这里的关键就在于前文所述的hosts文件。网络上是有人不断更新hosts文件用来科学上网的(https://laod.cn/hosts/2016-google-hosts.html)。

○公共代理工具

这里包括大量的工具,例如早期的GoAgent,各种VPN,现在的lantern等。这里我们就要对这些公共软件的来历稍微挖一挖了:

Lantern目前收到美国国会的资助,不愁运营,因此软件还是比较干净的;

GoAgent早期利用GAE(Google Application Engine)通道进行代理,这是谷歌为了方便开发者开发软件提供的专用的加密信道。显然如果谷歌都被屏蔽了,覆巢之下焉有完卵?因此2014年以后GoAgent多半是由第三方修改,实质上是在海外建立了私人服务器公用的。在其中扮演重要角色的是法轮功海外的相关组织,他们资助了众多低端公共代理软件的开发运营,因此软件商很多都是轮子的宣传广告什么的;

VPN目前来说种类比较多,但是可以确定的是,PPTP/L2TP协议目前已经很不安全,能够被轻易干扰。究其原因,在于VPN的开发目的就不是为了科学上网,而是为了加密传输。这也就意味着其握手(建立加密信道)的过程特征性通常是非常明显的,GFW即使不能够监听你的通讯信息也能够判断这是一个通往海外的VPN,直接阻断连接就可以了。一些百度能够搜到了VPN服务商甚至据传就是故意与GFW勾结以套取信息的。

从加密协议上来看,shadowsocks/shadowsaocksR更加多样化

○私人代理工具

Shadowsocks是由知乎工程师Clowwindy业余开发的专用科学上网软件。在Github上开源后获得了空前的影响力。在这里我们也见证到密码学发展的强大——因为GFW的造墙者一定也能够获得源代码,但是仍然无法实现有效屏蔽。

自建Shadowsocks在youtube的速度延迟非常理想

Clowwindy的推特主页

2015年8月发生了震惊圈内的Clowwindy喝茶事件。由于在技术上无法实现屏蔽,国安部门直接请作者喝了茶。品尝完美味的国安茶后,clowwindy被迫放弃项目维护并且删除了所有源代码,Twitter好友也开启认证添加。但是Github上代码早已被各路大神fork很多遍了,删除其实意义不大。目前shadowsocks系列已经发展成全平台(win,mac,ios,Android,Openwrt—也就是路由器,linux等等)的科学上网软件,有众多开发者开发维护。

其中比较值得一提的是shadowsocksR系列。在原生shadowsocks的基础上,作者添加了混淆插件和协议插件,进一步加大了审查难度。之前甚至有人利用插件规则进行上网免流量(将流量混淆成为电信内部流量)的操作,但目前作者已经修复了这个强大的bug。

SSR的两款插件功能强大(1)

SSR的两款插件功能强大(2)

利用Shadowsocks服务,实质上就是利用作者开发的众多协议,与墙外服务器建立连接的过程。这里涉及到墙外服务器哪里来的问题:

1. 去一些信誉还不错的老牌运营网站购买(例如https://www.shadowsocks.com.hk/);

2. 自己去海外租原始linux服务器,参照Github的manual进行配置(协议、混淆、端口都可以自己设置)。两三行命令基本就搞定了,对于我们一点都不难。

对于应用端我也稍微罗列一下吧,主流平台保证推荐一款,当然有更多:

杂谈国内互联网生态安全

· Https需要证书颁发方,负责审核网站归属真实性。一般来说一年的证书审核费在几百到几千元不等,浏览器一般会根据颁发方的信息对网站访问安全进行提示。然而,如果我们进入12306购票界面,是这样的:

购票网站居然就是不购买根证书,舍不得几百块钱?

退回来我们发现:

官网要求我们自己下载根证书手动安装,并且我们如果安装之后会发现这个证书是铁道总公司自己给自己写的。犯得着用这样的手段劣化用户体验吃力不讨好么?我向来不惮以最大的恶意来揣测党国,这件事情只有一种解释,这个根证书可能会被作为https环境下的中间人攻击的一个备用跳板。

·  4楼机房由同济大学签发的证书也很有意思。如果我们pingwww.google.com.hk,返回的地址是上海杨浦。说好的谷歌退出中国大陆呢?这说明教育网的谷歌是墙内有关部门自己建的镜像。并且仔细看可以发现这个谷歌是没有证书认证的(如下)。

可能firefox会自动屏蔽非https的原因,学校网络部门给这个假谷歌自己签了个证书,并且在4楼机房每一台PC都安装了:

同济也做了CA

看懂了觉得实在是好笑,哈哈。

评论 在此处输入想要评论的文本。

Copied title and URL