谭庆丰,刘培朋,时金桥,王啸,郭莉
(1. 中国科学院 信息工程研究所,北京 100093;2. 信息内容安全技术国家工程实验室,北京 100093;3. 中国科学院 计算技术研究所,北京100190)
如今互联网已经成为人们日常生活和工作必不可少的工具,然而,随着互联网的发展,人们对于隐私保护,自由表达意识的提高,网络审查问题也就越来越受到人们关注。
近年来, 匿名通信和隐蔽通信技术作为隐私保护技术的主要方法已经吸引越来越多的国内外学者的研究兴趣,尽管存在一些抵御流量审查的匿名通信系统如 Tor[1]、JAP[2]、I2P[3]等,一方面这些系统需要建立额外的基础设施,通常是利用志愿者节点建立并维护一个Mix网络,经过Mix网络的某个节点只知道下一跳的路由,即所谓的洋葱路由[4];另一方面,这些系统都需要发布一些接入点(entry point),并在通信之前,双方通过这些接入点建立并维护一个连接。因此,对于审查者来说,这些接入点很容易被发现,从而可以阻断一个客户端连接到这些设施的代理节点,甚至可以通过流分析[5],以及通信过程中流的指纹,识别出哪些用户正在访问哪些站点。
为了解决这些问题,本文提出UGC3,一种新的基于UGC站点的抗审查隐蔽通信方法以绕过Web审查,该系统基于现有的网络基础设施(UGC站点),并在此之上建立一个全分布式的 F2F重叠网[6],采用好友对好友(F2F)模式[7],以合法数据流为载体,借助信息隐藏技术,目标是蒙蔽网络流量审查人员,绕过网络审查。因此,设计一个这样的抗审查通信系统存在以下挑战。一方面,为了抵御审查者的流分析,必须设计一个抗审查的隐蔽通道,由于UGC站点是世界范围内的,而且每天有大量的用户产生规模非常庞大的流量,因此,本文的方法是利用信息隐藏技术,将目标信息通过隐写术嵌入到掩体媒介。然后以合法的HTTP流上载到UGC站点,而对于接收者,当请求这些掩体媒介时也可以提供某种级别的可抵赖性。另一方面,如何在资源的发布者和接收者之间协商约会地点,即发布者将一个消息发布到某个或者多个 UGC站点上,如何让接收者很顺利的找到。笔者的想法是将所有可能用到的UGC站点组织起来,构建一个分布式的重叠网络,利用P2P中的DHT技术,设计一个高效的资源发现算法,来协商资源的发布者和接收者之间的约会地点,而资源的发布者与接收不需要直接通信。通过本文建立的隐蔽通道将需要发布的资源,通过加密,冗余编码,隐藏到掩体媒介,然后发布到某一个或者多个UGC站点,资源的接收者则利用本文的映射算法,找到相应的UGC站点,并搜索相应的掩体媒介标签,下载该掩体媒介并重构目标资源。
本文的主要贡献如下。
1) 利用已有的网络基础设施,如UGC站点,云存储等,并在此之上构建一个全分布式的F2F重叠网。
2) 构建一个新的隐蔽通道,其方法是通过设计一个高效的资源发现服务算法,通过资源标识符生成算法来动态生成消息ID,即双方只需要共享某个种子,然后通过算法动态生成消息ID,并利用DHT技术,把生成的消息ID映射到某个UGC站点和相应的掩体资源标签上。因此,通信双方不需要直接通信。
用户身份的可抵赖性:也就是说审查者很难识别某个用户是否正在使用该系统,即不能确定某个用户正在使用该系统有意的请求某个特别的内容。
容错和可用性:能够绕过常规的流量审查和防火墙,系统应该能够抵御因某些 UGC站点被屏蔽或者某些资源丢失导致资源的不可用。
利用现有的网络设施,不需要额外配置服务器或者搭建基础设施;具有全分布式,自主管理,可扩展性等特性;应用独立,能够支持协议之上的各种应用,如匿名信息发布与回收,Web内容缓存,隐蔽内容分享等。
图1给出了系统架构,为了能够获取到被审查的目标资源,使用该系统的用户必须能够以一种无害的方式访问Web站点,也就是审查者不能够区别出是否某个用户正在使用该系统,即该系统产生的流为正常的Web请求的流量。系统包括2个部分,即信息的发布者和信息的接收者,信息的发布者将信息发布到某个 UGC站点,信息的接收者作为本地客户端软件通过请求该 UGC站点,获取掩体媒介资源。因此,为了能够检索到目标资源,系统需要知道信息的发布者如何将信息发布到哪个 UGC站点。为了协商如此间接的通信方式,必须在发布者和接收者之间设计一个通信协议,该协议能够支持信息隐藏(隐藏目标信息内容)和隐藏信息服务的位置(提供掩体媒介存储空间的UGC站点)。为此,设计一个基于3层架构的软件系统。最低层为安全基础设施层,其中包括冗余编码、加密解密、数字签名等。第2层为服务层:提供网络的通信、服务协商、数据管理等。第3层为应用层:如资源发布与回收、Web内容缓存、隐蔽内容分享等应用。
图1 系统架构
为了编码和隐藏目标资源R,系统首先选择一个密钥 k,可以利用资源标识符,也可以利用接收者的公钥,然后通过k加密目标资源R,最后得到密文C。为了在发送者和接收者之间安全分享该密文。系统需要使用阈值秘密分享算法[8],即(n, k)IDA算法。一方面,该算法可以防止由于某些分片丢失导致整个文件不可用。另一方面,也可以防止从某一个节点(UGC站点)能够访问到所有的文件分片,从而实现秘密分享。为此,首先简单介绍冗余编码相关概念,其关键的思想是资源的发布者通过把源文件分割为k个分块,通过编码后变成N个分片(k<N),其中,任意k个分片都可以重构源文件。信息的发布者可以设定一个阈值作为秘密分享的参数,由阈值决定N个分片中只需要多少片就可以重构源文件。IDA算法如下所示:假设K为文件的分块数量,N为编码后的分片数量。因此,一旦K的大小确定,则文件分片B的大小就可以确定:
因此矩阵M(k,B)可以构造为如下矩阵:
其中,编码矩阵A(n,k)为一个Vandermonde矩阵:
且满足如下属性:
k<n,矩阵A的元素为GF(28)上的非零元素。且该矩阵的K个列向量线性无关,因此该矩阵可逆。
则 dispersal(n, k)=A·M=Fn;Recovery(n, k)=A-1·Fn。其中,Fn为编码后的 n片文件分片。A-1为矩阵A的逆。
一旦计算好所有的分片,系统需要选择一个或者多个掩体媒介,掩体媒介可以是任意可见的文本,图片,视频等信息,并把相应的分片隐藏到一系列的掩体媒介中去,为了实现信息隐藏采用 outguess工具[9],outguess信息隐藏算法是根据密钥和目标信息来修改图片的高频成分。主要分为3个过程:第1个过程为嵌入过程:寻找图片的冗余位,该过程不修改DCT系数值为0,1的系数,然后嵌入消息到部分的冗余位;第2个过程:利用密钥作为伪随机数生成器的种子产生间隔以决定下一个要嵌入DCT系数的位置;第3个过程为矫正过程,即消除对效应的出现,方法是利用那些未被修改的DCT系数进行修改来维持直方图保持不变形。因此一个攻击者在没有密钥的情况下很难提取出相应的目标信息。
因此,信息冗余编码和隐藏算法是设计一个有效的方法来隐藏目标信息到掩体媒介。一方面让资源不会因为部分信息不可用而导致整个资源失效,另一方面,让对抗者很难发现某个掩体媒体嵌入了目标资源,就算知道,在没有密钥的情况下也不可能检测到。
为了在资源的发布者和接收者之间协商约会地点,必须先在他们之间生成一个资源标识符,该标识符只有发布者和接收者知道。由于资源的发布者和接收者很难做到在几秒钟甚至是数分钟时间间隔内生成相同的资源标识,因此,为了避免时间同步问题,本文的算法在每隔一个小时,或者数个小时内产生一个新的资源标识符,例如,可以设置一个时间间隔阈值,一旦达到这个阈值,资源的发布者就生成一个新的资源标识符。其算法的伪码如下:
算法1 资源标识符生成算法
一个结构化的重叠网络由一个分布式散列表(DHT)组成[10],通过定义任意对等节点P到标识符空间的映射:
其所有的映射组成一个不相交的标识符集合,并定义一个度量空间。
其中,iu,iv分别为标识符u,v的第i位,且有如下属性:
即对每一个UGC站点P有一个唯一的URL,其 UGC站点标识符可以通过计算其 MD5或者SHA1值得到;对每一个掩体资源有一个唯一的标签,其标签标识符同样可以通过 MD5散列得到。一旦获得标识符,就可以通过式(2)计算任意 2个标识的距离。
为了在资源的发送者和接收者之间交换资源,需要协商一个约会地点,而不需要发布者和接收者直接通信。例如,某一个资源的发布者在优酷网上发布了一个标签名为“汽车”的视频,则相应的接收者需要在该站点去搜索标签为“汽车”的视频,并下载相应的视频,然后重构目标信息。由于用户提供内容的站点(UGC站点)非常之多,就算固定某一个站点,比如优酷网,在某一个时间内上载的内容也非常之多,因此,不可能把某个站点的所有新的内容都抓取下来。因此这里面有一个关键问题需要解决,即如何知道资源的发布者把掩体资源发布到哪个UGC站点,与发布的资源相关联的标签是什么?为此,设计一个分层的DHT架构,如图2所示:其中第1级为UGC站点对应的散列表,第2级为相应站点所有标签的散列表。
图2 分层的散列表
其资源发现服务算法的步骤描述如下。
第1步:散列所有的可能用到的UGC站点。可以采用MD5值或者SHA1值等。生成一个散列表如表1所示。
表1 UGC站点的散列表
第2步:映射资源标识符到最近的UGC站点上。通过前面 3.2节中的资源标识符生成算法在资源的接收者和发送者之间同时产生一个相应的资源标识符,通过式(2)计算出距离该资源标识符最近的UGC站点,即在异或度量空间上距离最近,然后,资源发送者发布资源到相应的 UGC站点。
第3步:映射资源标识符到最近的资源标签上,计算方法如第2步所示,则资源发布者在发布资源到某个 UGC站点的同时选择一个距离资源标识符最近的标签。即给某个分享的视频或者图片打一个标签。如表2所示。
第 4步:定位资源。资源接收者先通过 3.2节的资源标识符生成算法产生一个跟发送者相同的标识符。然后重复第2步,第3步即可以查询到某个站点相应的跟某个标签相关联的掩体资源位置。
本系统为一个抗审查的隐蔽通信系统,其中包括2个部分,资源的发布者和资源的接收者,对于资源的发布者,首先利用3.2节的算法产生一个共享的资源标识符,并将目标资源加密(可用这个共享的资源标识符作为密钥加密,也可以利用接收者的公钥加密),然后通过3.1节的安全编码算法将密文冗余编码后生成若干个分片,并选择一个合适的掩体媒介(如图片,视频,甚至是文本文件),并将其中的若干分片嵌入到该掩体媒介中,重复上述过程,直到所有的分片都嵌入。最后将所有嵌有目标资源的掩体媒介发布由3.3节计算得到的UGC站点,同样,接收者能够用该算法找到相应的 UGC站点。而对于信息的接收者,首先创建一个资源标识符,然后通过3.3节的算法,找到发布者发布资源信息的 UGC站点。然后下载掩体媒介,并检查该掩体媒介是否包含编码的目标信息,如果不是则继续取掩体媒介,如果是则看是否能够重构目标资源,如果不能够重构,则继续上面的过程。直到能够重构目标资源,并解密后得到目标资源。
笔者已经实现了一个原形系统,该系统采用C++语言和libcurl库大约10 000行代码实现,上层应用只需要调用几个简单的API就可以实现隐蔽的信息发布和回收。通信双方只需要共享一系列UGC站点和 Tag(即在在配置文件写入一系列关键词和UGC站点)。然后,信息发布者只需要调用一个信息发布的API即可实现所有隐蔽通信过程,包括信息加密,冗余编码,并通过标识符生成算法生成相应的ID,计算出最近的UGC站点和Tag,然后将该信息秘密发布到这些 UGC站点。信息接收者同样则可以通过双方共享的ID找到这些UGC站点和Tag。通过在这些UGC站点搜索相应的Tag找到需要下载的信息,然后重构这些信息。
图3 冗余编码效率和所需存储空间大小关系
图4 掩体媒介不可用率与网络流量关系
性能评估:图3的横坐标为信息隐藏的比率,即目标信息除以掩体媒介的比率。纵坐标为不同的冗余编码比率所需要的存储空间大小。由图3可以知道,信息隐藏的比率越小,冗余编码的比率越大,所需的存储空间就越大。图4的横坐标为每个任务的网络流量负载大小,纵坐标为总的流量大小。如图4所示,流量大小跟掩体媒介不可用的比率成正比。
在这个部分从对抗者的角度来讨论系统的安全性。重点分析了系统将可能面临的容错,可用性和客户端可抵耐性问题,此外,该方法同样应该保证通信过程中的私密性原则,即便审查者发现了某个客户端在利用该方法进行隐蔽通信,也不能获取到任何实质的内容。
由于信息隐藏技术本身存在各种攻击[11],只能提供某种形式上的安全保障,因此,不能单独使用这些信息隐藏技术来保障我们信息的私密性,由此,笔者的设计保证在并不完美的信息隐藏技术方案上,通过信息分散算法和加密技术来建立安全的通信信道,保证信息的私密性和完整性。
假定一个 UGC站点被屏蔽或者不可用的概率为P,则发送到该站点的所有分片将变成不可用状态或者是暂时不可用状态。由于笔者采用的是阈值秘密分享即(n, k)IDA算法。即n个分片中任意k个分片就可以重构源文件。因此,发布的资源可用的概率为
因此,通过(n, k)IDA算法,为了能够成功检索到文件,至少需要k个UGC站点可用。文件可用的概率可以通过式(3)计算得到。
在对抗模型中,假定审查者能够使用该系统,或者伪装成为我们的一个用户,如果一个审查者不能够从正常的网络流量中区别出是否有某些用户正在使用该系统,则笔者认为系统具有可抵赖性。因此可抵赖性的关键是通信过程中不具备某种流的模式。由于该系统本身产生的是正常的 Web流量,在攻击者看来仅仅是一个上载和下载图片或者浏览视频的过程,没有对正常的网络协议,网络流做任何修改,因此对于某个用户,审查者可能根据它的行为特征来猜测他是否是该用户,比如,该用户以前很少访问某个站点,在某段时间经常访问该站点,访问的站点的掩体资源媒介与某一个特定类别关联等等。因此,为了提高客户端可抵赖性,可以将资源发布到某些“常规的可抵赖UGC站点”,且发布或者请求的掩体资源类别是常规的内容,而且发布的资源类别尽可能跟其资源标签一致,比如,发布一个“汽车”图片,则该图片的标签就不应该是人物。更进一步,产生的网络流应该符合正常网络流量的统计分布。如果某个用户为了获取资源而频繁访问某个 UGC站点,由此产生过大的流量,则很可能被审查者怀疑,因此,可以将目标信息尽量分散到多个 UGC站点,以减少对同一个UGC站点的访问频率,提高系统的安全性。
在这部分介绍匿名,抗审查的通信系统和信息隐藏相关工作。抗审查的通信系统主要有2种方法,一种是采用匿名通信技术,另一类就是通过隐蔽通信的方法。匿名通信的核心思想是提供一个中间代理(中继代理或者是MIX网络),目标是隐藏目标身份以及通信关系。它主要分为2类系统,一类是高延时的匿名通信系统,另一类为低延时的匿名通信系统。而隐蔽通信方案则关注的是在不可信的网络环境里面如何在通信双方秘密通信,且通信客体很难被检测到,通信主体具有某种级别的可抵赖性。
匿名通信系统:早期人们通过使用代理或者匿名代理来绕过防火墙并实现一定的匿名通信,通过代理与服务器或者另一个主机通信。如 Anonymizer[12]一个基于Web代理的系统,但是这种通过代理的方式存在很多缺点,一方面,代理可能遭到服务器过滤,而且代理也有可能泄漏用户自己的身份,攻击者也可以监视代理的流量。为了解决这种单点失效的问题,国内外的学者又开始研究其他方式的匿名通信技术。后来研究者们又提出一种基于 MIX网络[2,3,13]匿名通信技术,一个主机通过若干个 MIX中继路由节点与服务器或者另一个主机进行通信。Onion routing,Freedom系统[14]就是这样一种模型,它们都是一种基于核心 MIX网络,系统指定一些核心MIX作为MIX中继,而用户不会成为他们中的一部分。如 Tor,JAP等。但是,如果一个伪装的中继节点收到一个来自非核心 MIX节点转发来的数据分组,则可以发现该节点是源节点,而且核心MIX网络的运营和部署困难,成本高。Freedom的关闭就是由于其运营和部署成本过高。另一方面,审查者同样可以发现这些代理中继节点,监视甚至屏蔽对这些代理。
隐蔽通信技术:隐蔽通信方法通常是利用信息隐藏技术,在通信主体之间设计一个隐蔽通道来实现通信的技术,隐蔽通道主要有基于存储的和基于计时的隐蔽通道。基于存储的隐蔽通道是研究在大的掩体媒介里面如何安全的嵌入私密信息,该信息很难被攻击者发现。和密码学一样,其关注的是在不可信的网络环境里面如何在通信双方秘密通信。但是,跟密码学不同的是信息隐藏的目的是掩盖通信双方正在进行秘密通信的事实。
Feamster等人基于Adler与Maggs不对称通信理论设计出一个抗流量审查的隐蔽通信系统Infranet[15]——在 HTTP中使用隐蔽通道以绕过审查员,即通过Infranet将一个隐蔽的HTTP请求编码为一系列正常的掩体HTTP请求,并利用隐写术将目标内容隐藏在掩体资源文件的图片中。然而Infranet需要部署自己隐蔽服务端,且具有迭代次数过多,延时过大等缺点。
Sam Burnett等人提出了一个基于UGC站点的抗审查通信系统 Collage[16]。但是,该系统需要在信息的发布者和接收者之间秘密共享一个资源标识符(消息ID),通过将任务(发送者和接收者之间共享的一个共同行为)映射到每一个资源标识符 ID,因此,如果该消息 ID被攻击者发现,则很容易通过对应的掩体资源找到隐藏的目标信息,另一方面,该系统在某个时期只是针对某一个UGC站点,因此,一旦审查者知道该站点,就很容易屏蔽或者对访问该站点所有用户进行流量审查。
互联网已经成为人们日常生活的必要的工具,如电子商务、教育、社交、休闲娱乐等。然而大量敏感的信息被滥用,网络审查问题目前还在很多国家广泛存在。因此,互联网的安全和隐私保护问题已经成为互联网用户最为关注的问题之一,传统的抗审查方法都需要部署一个代理设施,基于这个代理设施双方建立并维护一个通信信道,这样,审查者很容易发现这些代理设施,即访问的入口点,因此本文提出UGC3:一种新的基于UGC站点的隐蔽通信方法绕过网络审查,该方法利用已有的网络设施(UGC站点),并联合P2P的DHT技术,将这些 UGC站点组织起来,并设计一个高效的资源发现算法来定位资源。基于该方法的用户可以安全,匿名的发布信息,自由表达,并具有很高的安全性。
[1] DINGLEDING R, MATHEWSON N, SYVERSON P. Tor: The second-generation onion router[A]. Proc 13th USENIX Security Symposium[C]. San Diego, CA, 2004.
[2] JAP [EB/OL]. http://anon.inf.tu-dresden.de/index_en.html,2011.
[3] I2P anonymity &privacy[EB/OL].http://www.i2p2.de/,2011.
[4] REED M, SYVERSON P, GOLDSCHLAG D. Anonymous connections and onion routing[A]. IEEE J Selected Areas in Communications[C]. 1998. 482-494.
[5] MURDOCH S J, DANEZIS G. Low-cost traffic analysis of Tor[A].Proceedings of the 2005 IEEE Symposium on Security and Privacy[C].2005.
[6] POPESCU B C, CRISPO B, TANENBAUM A S. Safe and private data sharing with turtle: friends team-up and beat the system[A]. 12th International Workshop on Security Protocols[C]. Cambridge, UK,2004.
[7] BRICKLIN D. Friend-to-friend networks[EB/OL].http://www.bricklin. com/f2f.htm,2011.
[8] MICHAEL O R. Efficient dispersal of information for security, load balancing, and fault tolerance[J]. Journal of the ACM, 1989, 36(2),335-348.
[9] Outguess[EB/OL]. http://www.outguess.org/,2011.
[10] MAYMOUNKOV P, MAZIERES D. Kademlia: a peer-to-peer information system based on the XOR metric[A]. Proceedings of the 1st International Workshop on Peer-to-Peer Systems[C]. 2002. 53-65.
[11] FRIDRICH J, GOLJAN M, HOGEA D. Attacking the outguess[A].Proceedings of the ACM Workshop on Multimedia and Security[C].2002.
[12] Anonymizer[EB/OL]. http://www.anonymizer.com/,2011.
[13] DANEZIS G, DINGLEDINE R, MATHEWSON N. Mixminion:design of a type iii anonymous remailer protocol[A]. Proceedings of the 2003 IEEE Symposium on Security and Privacy[C]. 2003. 2-15.
[14] BOUCHER P, SHOSTACK A, GOLDBERG I. Freedom Systems 2.0 Architecture[R]. White paper, Zero Knowledge Systems, Inc, 2000.
[15] FEAMSTER N, BALAZINSKA M, HARFST G. Infranet: circumventing Web censorship and surveillance[A]. Proc 11th USENIX Security Symposium[C]. San Francisco, CA, 2002.
[16] BURNETT S, FEAMSTER N, VEMPALA S. Chipping away at censorship firewalls with user-generated content[A]. Proc 19th USENIX Security Symposium[C]. Washington, DC, 2010.