Total Pageviews

Wednesday 27 November 2013

浅析Lantern背后的Kaleidoscope设计

近日一款叫做Lantern的P2P网络封锁突破工具进入了中国用户的视线,以其“通过信任圈子”传播服务信息的特色作为主要卖点,对抗见洞插针(probing)的防火墙系统。若要明白这款服务高调挑战防火墙背后的理由,还得先从它的核心技术Kaleidoscope说起。

Kaleidoscope简介

Kaleidoscope是一个P2P中继系统,主要用途是让被封锁网络域内的用户能访问到被封锁的内容。换而言之,Kaleidoscope的主要目的就是突破网络内容封锁,而非匿名或传输安全性。后者分别是Tor与VPN的主要特性。
在应用需求上的转换使得Kaleidoscope的设计理念也与Tor和VPN大相径庭。作者意识到这个系统最迫切需要解决的问题是来自网络封锁组织的“主动入侵”(伪装成普通用户与伪装成友好中继),因此采取了“有限度服务发现”的策略,以确保在高入侵率与低可用中继数量的情况下,依旧保持较高的网络服务质量。

Kaleidoscope系统的假设

Kaleidoscope的设计遵循“最大化可用性”的理念,即便它不得不牺牲一定的匿名性。用怪叔叔能理解的话说就是——Kaleidoscope会尽可能帮助你看到页面,但如果页面上是违法的儿童色情,它不会像Tor一样保护你不被抓进去捡肥皂。
所以Kaleidoscope的第一个假设就是——大部分被封锁的内容都不是因为非法而被封锁的,而是因为它和敏感信息很像(例如恰好在同一网址或服务器上),而被误杀。这意味着该系统假设“看这些信息大概是合法的”(灰色地带),如果观看敏感信息在这个国家属于明确的违法行为,则用户需要额外使用匿名与加密工具来保护自己的人身安全。
与此同时,为了对抗来自网络封锁方的检测与入侵,Kaleidoscope需要非封锁域内有足够的中继出口,否则网络封锁方可能使用流量检测发现并封堵这些中继。但中继出口毕竟是可遇不可求的东西(就像没被封的Tor Bridge一样),因此Kaleidoscope尝试利用现实中的人际关系与有限服务发现技术来平衡“发现”与“隐蔽”的跷跷板。
Kaleidoscope的第二个假设是——网络内的有足够多的可信中继,无论是否为出口。这非常重要,因为在 这个系统里,入侵者需要获得相当的占比才能取得流量检测上的优势(以有效封锁中继出口)。简单而言,假如安全入侵率为1%,则在1000人的网络里入侵者 需要拥有10个伪装节点,而在10万人的网络里它需要1000个节点。这也解释了为什么Lantern作为一个分布式网络,比Tor更擅长利用、更依赖与 人多势众的力量以达到自我保护的目的。
有趣的是,Kaleidoscope的最后一个假设,是最贴近GFW属性的中国特色。作者认识到网络封锁方掌控着网络架构的最终控制权。也就是说,假如封锁方来狠的,直接拔网线,禁止加密链接或使用白名单,则任何基于这些网络架构的工具都将失败。
因此Kaleidoscope系统假设与网络封锁方周旋的上策不是和它对扛加密与匿名技术,而是如何将自己与普通流量混淆起来,增加封锁方的经济成本——让封锁方不得不冒增大误封概率的险,并增加封锁需要的人力与硬件成本。这个系统促使封锁方权衡入侵网络的价值与成本,期望达到“知难而退、网开一面”的效果。

Kaleidoscope的基本实现

说了这么多假设,我们再来简单聊聊Kaleidoscope的实际方式。
Kaleidoscope系统针对以下几种不利的网络情景设计——
  • 网络封锁方控制着整个封锁域的网络架构。
  • 网络封锁方使用基于IP表,DNS与DPI的干扰技术。
  • 网络封锁方使用流量分析,积极寻找主要的中继出口。
  • 网络封锁方会伪装成普通用户与友好中继,发掘隐藏中继与监控网络数据。
这意味着Kaleidoscope系统必须满足以下条件——
  • 必须是分布式,否则中枢会被封锁。
  • 必须使用点对点加密,否则链接会因为DPI被重置。
  • 必须使用混淆通信包,否则包本身容易被指纹检测发现。
  • 必须使用远程DNS解析,因为本地的DNS查询结果不可靠。
  • 必须允许多点传递,否则中继出口很容易通过流量分析发现。
  • 必须限制节点发现,否则完整网络很容易被封锁方用大量伪装的用户发掘。
  • 必须合理分配流量,否则封锁方可能伪装成友好中继(甚至中继出口),捕获大量网络信息。
值得一提,所谓“限制节点发现”并不是什么特别神奇的算法。Kaleidoscope系统明确指出,当封锁方入侵网络时,总有一部分中继会被封掉——这时不能允许受影响的用户获得新中继,因为假如这些用户能获得新中继,入侵节点也能,这样整个网络很快就会被入侵节点遍历。
事实上不论用户的机器是否能访问被封锁资源,Kaleidoscope系统只要求他们与现实朋友建立可信链接,此外的事情都由系统通过节点发现与多点传递算法解决。
Kaleidoscope节点剩下的工作是通过中继传播自己,这里的传播包含不少艺术——包括控制一个节点能知道与能自我宣传的数量、允许的最大节 点转跳上限等等。主要用于防止入侵者设立虚假的节点关系来套取网络信息与流量(例如设置一个伪装的中继出口,再将设立许多中继传播这个出口到可信网络 里)。Kaleidoscope系统的论文花了很大段文字解释选择每个参数的理由与最优数值估计,这里就不逐一详述了。
在具体实现上,Kaleidoscope通过UDP传播自己的信息,数据则通过SSL/TLS完成。Lantern客户端使用了证书固定 (certificate pinning),避免证书替换导致的中间人攻击;同时确保SSL符合“正向加密”(PFS)要求,避免大规模的数据保存与延迟破解。

Kaleidoscope的测试结果

论文里的测试使用了两套方案,一是利用现有社交网络的人际关系圈的数据作为原型进行评估,二是作者们寻找几十位朋友参与项目测试。光说数字恐怕会让各位睡着,这里大概总结下结果好了——
  • 在社交网络(可信链接)的测试上,Kaleidoscope系统对可信链接数量较多的网络支持更好。Facebook和LiveJournal就比Flickr要更能面对“高入侵率与低可用中继”的环境。
  • 只要还有30%的中继在线,即便入侵者占据了2%的网络节点,出口只占整个网络的0.5%,Kaleidoscope依旧确保用户在3次节点传递 以内访问到被封锁的内容(假设网络流量足够)。10%的用户可以直接连上中继出口,而50%的用户可以通过一次转跳连上中继出口。
  • 在实际应用中,作者们发现,除了使用Kaleidoscope系统翻越本国防火墙,还有不少人用它绕过服务器IP限制。

小结

Kaleidoscope(万花筒)作为一个新的分布式中继系统,在“有限度服务发现”与“确保服务高可用性”上有很好的设计理念——这是Tor乃至VPN都没有的特性,完全符合中国特色的上网环境。
但我们也能预测到Kaleidoscope(以及实现它的Lantern)接下来可能遇到的问题。例如说它们一再强调的“信任链接”假设是否能保持 下去,还是会被用户的懒惰与知识匮乏所破坏?以及Kaleidoscope系统里需要用到的动态DNS(需要兼容动态IP,否则网络的拓扑变动太大)会带 来什么后遗症?这些都是未知之数。
无论如何,我们还是欢迎新一代工具诞生,希望它们战斗下去。

后注

如果你为防火墙服务,又不懂英文,或着懒得读英文,无意中来到这里——请允许我鼓励你考虑下自己生命的价值。在我看来,你比活在监狱中的贪官奸商更让人恶心。他们好歹接受了贿赂拉动了经济。而你,则是在用纳税人的钱,阻碍一个国家的经济与科技发展。
这不是爱国,这是叛国。
参考文献——
  1. Unblocking the Internet: Social networks foil censorsYair Sovran, Jinyang Li, Lakshminarayanan Subramanian
  2. Censorship Circumvention via KaleidoscopeJinyang Li
  3. Lantern Q&A for Developers - Team Lantern
  4. Lantern – Kaleidoscope系统的一种实现
-------------------------------------------------------------------------------

P2P代理软件Lantern开始beta测试


由Brave New Software开发的P2P代理软件Lantern展开了beta测试。Brave New Software此前和华盛顿大学联合研发了浏览器扩展uProxy,Lantern的原理与uProxy类似,都是利用社交网络帮助专制国家的网民战胜 网络过滤,而不同之处是Lantern采用了类似Tor的P2P中继连接方式,也就是用户可以利用朋友的朋友的朋友建立一条不被审查的互联网连接。 Lantern没有Tor的匿名性,用户需要有Google帐号,Lantern通过Google验证用户和加好友,Google将会知道用户的接入IP 地址。Lantern使用了LittleShoot P2P堆栈,LittleProxy HTTP代理,Smack XMPP客户端库,将DNSSEC整合到DNS查询中。Brave New Software CEO Adam Fisk表示,越多人使用Lantern和uProxy,审查将会越发困难.
----------------------------------------------------------------------------

Lantern(灯笼)代理软件安装和使用教程


本教程以常用的WinXP为例。

最近,Lantern团队做了一个 uProxy。 是Google Idea赞助的项目。他与Lantern有类似的地方,但也有重要区别。首先,Lantern是独立的应用,在后台运行,而uProxy是浏览器插件,需 要请一个朋友作为你的代理,而Lantern可以有很多直接间接的朋友当代理。另一个差异是,Lantern连接多达4层的朋友,而uProxy只连接一 个直接朋友。最后,Lantern只在访问被封锁的网站时通过代理,而uProxy的所有访问都通过你的朋友。

Lantern官方网站
https://www.getlantern.org/#zh_CN

Lantern如何工作

Lantern 的主要目的是访问:得到快速可靠的连接,到广阔的因特网。绝大多数翻墙软件需要服务器。在Lantern系统中,每台机器都可以作为服务器,从而比其他工 具提供更多的容量。通过运行Lantern,每个在非封锁区的电脑,都可以变成封锁区用户的代理,使他们可以访问被封锁的网站,诸如 Twitter,Facebook,Youtube,等等。
Lantern的核心是信任网络。使用者邀请他们的朋友来建立Lantern网络。通过只邀请他们信任的人分享因特网连接,大家共同努力,来增加网络反抗审查者的封锁的能力。你的Lantern朋友越多,因特网的速度和可靠性就越高。

Lantern安全性如何?

Lantern用了很大的精力来确保使用者的安全,不过,有些情况下,我们没法做到。因此,使用者需要知道这样才能安全地使用Lantern。对于位于被封锁区域中的使用者,非常重要的一点是,你只选择你真正信任的Lantern朋友。你访问网络的时候,所有的数据都将通过这些朋友的电脑。如果你添加了你不信任的朋友,有可能他是一个监视你的人。因此,只添加你信任的朋友。此外,Lantern可能通过你发出深达4层以外的朋友的信息,也就是,你的朋友的朋友的朋友的朋友。我们是这样建立起一个连接性好,可大可小的网络,因为,被封锁区的人通常并没有封锁区外的直接朋友。然而,每多一层联系,对朋友的信任度就越少(即,你对朋友的朋友的信任程度小于你对于朋友的信任)。请牢记,Lantern是提供访问的工具,而不是防止监视的工具。
Lantern不是匿名工具。如果你希望你访问的网站没法知道你的IP地址或物理地址(他们通常都会知道,好像给你一个惊喜一样),或者你不希望网络监视者知道你访问了哪些网站,我们推荐你使用 Tor。Tor很棒,我们常常与他们团队交流。再重复一遍,Lantern的目的是访问,Tor的目的是匿名。
保障你的安全最后防线:无论用什么工具(包括Lantern和Tor),你不要在迫害人民的政府管辖下的网站上放置敏感信息,尤其当你居住在那个地区的时候。这是因为像政府这样的全球网络监管者可以找出是你放置了这个信息并找到你。
以上介绍均来自Lantern官方网站。

第一部分:

安装教程:Win XP为例

首先你必须确定你已经安装好谷歌的Chrome浏览器,否则Lantern无法启动.

由于是测试版,证书尚未发行,有杀毒软件的可以设定为通过或安全.

目前仍为测试阶段,每个来自官方的邀请帐号都可以邀请多个朋友,但被邀请的帐号必须使用Gmail,因为软件下载时有一个识别的序列号,所以大家应该使用被邀请的Gmail登录Lantern.,否则可能无法使用。
下载Lantern软件:
https://s3.amazonaws.com/lantern-installers/v4j5evmw/lantern-net-installer_windows.exe

下载后安装软件.

安装过程中,系统会提示你安装JAVA,这是正常现像,WIN7好像无这提示.

完成后会弹出Lantern(灯笼)的介面面板,最新为Lantern1.0.0beta9中文版

第二部分
帐号设置和连接网络

使用你被邀请的Gmail邮件登录.

Google谷歌系统会验证你的帐号预留的电话号码并输入你收到的验证码.

Google会将你的帐号转换为GTALK登录Lnatern

目前有两台云服务器在支持不同地区的用户.

第三部分
1 设置使用和邀请:

成功安装Lantern后使用Google的Chrome浏览器非常简单,直接就可以浏览你想进入的所有网站,在这里介绍一下三个功能选项
邀请朋友,填写你想邀请加入的朋友.

双方互相确认后,我在Lantern面板就会出现他的代理节点.

2 自动代理网站提交

一些被GFW屏蔽的网站可以在这里提交,比如我提交的草榴永久域名地址.

3 自动和全局设置

4 IE/火狐浏览器设置

安装时会有一条自动生成的PAC脚本链接文件 参见上图,设置IE和火狐将此脚本链接复制到IE和火狐即可。

IE: 工具-internet选项-连接-局域网设置-使用自动配置脚本 如下图示


火狐:(使用Autoproxy插件的先在附加组件里禁用)

工具-选项-网络-设置

THE END.

Lantern正式版将很快推出,欢迎同学们加入Lantern(灯笼)网络下载使用,越多人用速度越快,越安全,GFW防火墙是无能为力,也不能阻止这些匿名节点,相信不久将来,GFW会倒闭破产。

更新:不能连接问题
1 请查看你是否使用被邀请的下载链接和被邀请帐号

2 请确认你已安装谷歌Chrome浏览器

3 请在运行-cmd输入netstat -n 查看5222端口是否在建立状态 ESTABLISHED.

lantern的wiki:
https://github.com/getlantern/lantern/wiki/Welcome