代码改变世界

基于P2P的匿名技术研究

2011-10-23 16:12  夜雨瞳  阅读(1459)  评论(0编辑  收藏  举报

李超 北京图形研究所

摘要:本文针对匿名通信中两种基本技术:Mix和洋葱路由进行了论述,并分析了P2P网络对于Mix网络和传统的洋葱路由的改进和缺陷,论述了基于P2P的匿名通信在提高通信性能和抗攻击能力上的实现技术。

关键词:P2P 洋葱路由 网络 匿名

1、概述

  传统意义下的网络安全包括以下四个要素:秘密性(Confidentiality)、完整性(Integrity)、可用性(Availability)和真实性(Authenticity)。近期的研究表明,匿名性(Anonymity)在某种意义上也可被称为是安全性的构成要素之一。随着Internet网络上应用的增多,Internet上的安全和隐私越来越受到人们的关注,为保护用户隐私,提供匿名服务,一些应用如电子投票(E2Voting)、电子银行(E2Banking)、电子商务(E2Commerce)等已将匿名性作为一个衡量的指标。

  利用现代加密体制,例如公私钥加密、电子签名、密钥协商算法能够很好地解决信息的机密性、完整性、可用性和真实性。匿名通信技术已研究发展多年,迄今为此还没有形成完整的匿名理论体系,现有的各种匿名通信技术实现实时环境下的匿名性都很困难。

  本文在对目前几种比较可靠的匿名系统解决方案分析研究的基础上,从对网络环境下匿名系统可能受到的威胁方式研究入手,开发研制出一个安全性相对加强的基于P2P的匿名通信系统。

 

2、典型匿名通信系统

2.1、Chaum混淆(Mixes)网络

  在1981年David Chaum提出Mix网络的概念。Chaum定义了一个经过多个中间节点转发数据的多级目标路径,为隐蔽接收者,发送者可选定N个连续目标,其中之一为真正的接收者。窃听者在一段链路上获取真正接收者的概率为1/N,并且中间节点在传送消息时可采取重新排序、延迟和填充手段使获取真正目标的概率更低,从而加大攻击者进行流量分析的难度。Mix网络结构示意图见图1。

为实现上述混淆,必须满足以下两个条件:(1)所选目标能可靠地完成上述工作且彼此间存在安全通道;(2)中间节点必须知道整个路径结构才能重新排序。再者,上述延迟虽然可以防止敌手跟踪,但也可能为攻击者进行攻击提供时间。在Mix概念的基础上,发展了一系列可行的匿名系统,使基于Internet的匿名技术得到了局部应用。

2.2、洋葱路由技术

  洋葱路由技术(Onion Routing,简称OR)是美国海军研究实验室的研究者们采用多次混淆的办法,提出的一种新的匿名通信技术,可以在公开的计算机网络中隐蔽网络结构,对在互联网上进行的跟踪、窃听和流量分析有很强的抵抗作用,通信双方用洋葱包代替通常的TCP/IP数据包,利用代理技术实现与目标系统间的连接,这种洋葱路由代理技术实现过程见图2。

2.2.1、洋葱路由技术的缺陷

  (1)路径信息可以隐蔽,但代理路由器X和W易成为攻击的重点,尤其是主机A至X,W至主机B之间是以明文传输,即使采用应用层加密,但传输层的端口地址和IP层的IP地址却是公开的,缺乏端点的安全机制,一旦攻破X或W节点,则路由器上的链路状态和节点信息将全部公开了。

  (2)两路由节点通信数据采用了公钥密码机制,当主机节点增多且数据流量增大时,路由节点解密的时间长,占用大量的CPU资源,路由节点的转发效率下降,路由节点将成为网络的瓶颈。

  (3)所有节点必须把公私钥、认证码、可信标识、连接的链路信息、存取控制策略、链路当前状态等信息存放在数据库中,当节点N很大时,维护和管理链路的数据库变得庞大,存取路由信息的时延也加大,因此要满足可接受的效率,N的规模要受到限制。

  (4)单一类型的链路效率低,由于葱头路由是面向连接的技术,而实际的应用是各不相同的;有些连接是短暂的,如HTTP,而有些连接是长时间的,如RLOGIN和TELNET。

 

3、基于P2P的匿名通信系统

3.1、为什么引入P2P

  P2P网络和传统的客户/服务器(C/S)结构相比较,P2P网络中节点的关系是平等的(称为对等点--Peer),改变了客户机在C/S结构中是被动的角色,使得客户机在P2P网络中成为同时具有服务器和客户功能的Peer;减轻了服务器的负载并且减少了网络拥塞。P2P网络的体系结构能够解决C/S结构中一些由本身的结构引起而无法在本身构架中解决的问题。

  将P2P应用于匿名通信的主要思想在于:P2P网络中的每个节点都可以成为Mix节点,匿名通信系统可以从P2P网络得到了同等规模的Mix资源,而且发起匿名通信和接收匿名通信的节点都处在匿名通道中,没有了洋葱路由技术中首尾两个Mix节点的薄弱环节。P2P网络不是特定组织经营的,每一个使用对应P2P软件的用户拥有可以加入到该P2P网络,成为P2P网络一个节点,不可能有哪个组织或个人能随心所欲地控制所有的P2P节点。匿名通道构建过程中,中继节点是由用户随机选择,攻击者很难能控制匿名通道中的所有节点,破坏匿名性难度很大。如果攻击者控制了相当多数量的节点并进行联合攻击,也可能会窃取匿名通道信息,在本系统实现中引入了抵御联合攻击的算法。

3.2、基于P2P的匿名通信系统框架

  利用P2P标准框架JXTA进行开发,基于JXTA本身的特点可减少底层P2P网络模块开发的难度,增加系统的可扩展性和互操作性。

  系统是一个相互协作的系统,每个Mix节点主要包括匿名库和匿名服务器(MixServer)两部分。用户程序通过匿名应用开发接口调用匿名库函数,匿名库借助P2P平台的资源搜索功能找到符合条件的MixServer,并建立匿名通道。匿名传输协议是匿名库和MixServer之间的匿名通道协商构建通信协议。每一个在线的Mix节点都能够发起匿名通信,也必须提供MixServer服务。系统中内嵌了匿名http代理服务,用户不需开发专门的匿名http应用程序,只需修改IE或其它web浏览工具代理设置,即可匿名浏览指定网站。系统结构示意图如图3。

3.3、匿名实现

3.3.1、匿名通道的建立

  发送主S,中继节点m1,m2,m3,目标节点D,其中中继节点m1,m2,m3各有k-1个候选节点。发送方在决定建立匿名通道前,选择用何种长度(固定长度,随机长度)的匿名通道,并且不需要事先选定好中继节点,中继节点在建立的过程中动态产生。通道建立过程见图4。

  1)S首先用已有的节点选择算法产生第一组(k个)中继节点,通过发送s1密钥,S与这一组候选节点采用“群组协商密钥协议”与S产生共享密钥sk1,S发送{建立连接}sk1到m1节点,m1节点用与S共享的密钥sk1解密以后得到命令{建立连接},与S建立了连接。

  2)m1返回建立成功答复信息,此时建立了通道T(S---m1)。

  3)S向m1发送继续建立匿名通信信息{继续选择节点,密钥sk2}sk1。

  4)m1收到信息解密以后解密得到s2,采用节点选择算法产生第二组(k个)中继点,其中m2为这一组中继节点的第一候选节点,这一组候选节点与s2产生一个共享密钥sk2,m1向m2发出{建立连接}sk2。

  5)m2收到信息用sk2密钥解密,然后返回成功答复信息给m1。

  6)m1收到m2发出的成功建立连接信息后,向S发出成功连接信息:{成功连接,密钥sk2}sk1,S收到m1发送的成功连接信息,此时建立了通道T(S---m1---m2),S记录路径m2以及与m2产生的共享密钥sk2。

  7)S向m1发出继续建立请求:{传递给m2,{继续选择节点,密钥m3}sk2}sk1。

  8)m1收到S的请求后,解密得到一个传递给m2的命令,于是将消息继续传递给m2。

  9)m2收到m1传递的消息用sk2解密,得到继续选择节点的命令,于是(第四步到第六步)的方法继续创建一个节点m3。

  10)m3用与S传递的s3产生一个共享密钥sk3,用sk2加密后传递回m2。

  11)m2将得到的消息继续用sk1加密。

  12)S得到消息{{建立成功,m2,sk3}sk2}sk1,S循环解密得到信息,并记录,此时建立了通道T(S---m1---m2---m3)。

  13)最后用同样的方法(第十三步到二十步)发送消息到m3,m3接受到消息解密判断不需要再传递消息,直接连接目标节点D,最终建立通道:T(S---m1---m2---m3---D)。

3.3.2、匿名socket服务的建立

  利用已经建立了的匿名通道T(S---m1---m2---m3---D)建立socket服务,S首先向通道的第一个结点m1发送{建立socket服务}sk1,m1在收到消息以后用自己与S的共享密钥sk1解密以后得到建立socket服务命令,然后建立与S的socket服务,然后S再向m1发出建立socket服务消息{m2,{建立socket}sk2}sk1,m1收到一个经过循环加密的消息,用自己的密钥解密以后就得到下一个要通讯的地址m2,然后把消息的后半端传递到m2,m2收到消息以后用自己与S共享的密钥sk2解密得到{建立socket连接}。

 

4、系统分析

4.1、系统性能提高方法

4.1.1、通道复用

  由于建立通道用公私钥加解密,而传输数据用对称加密,从而导致建立通道的开销比实际传输数据的开销大的多,所以在系统中采用了通道复用技术。通道复用的基本概念是,应用程序可以在一条匿名通道上建立多条匿名Socket,且匿名Socket之间数据和生命期相互独立。具体做法是:在发送数据时让匿名Socket将数据将由一条匿名通道发送,并在通道的末端区分出数据属于哪个匿名Socket,在接收数据时,所有数据经由同一条通道返回,并且由客户端的匿名库区分数据属于哪个匿名Socket。

4.1.2、K个节点候选

  选择算法采用同时存在k个候选节点,k个候选节点使用“群组协商密钥协议”产生共享密钥。在文件的传输过程中,文件采用循环加密,通道中某一个节点发生故障(或者下线),如果只有一个候选节点,将导致文件传输的中断,此时只能采用重新建立匿名通道,并且利用新建立的通道重新传递。而采用k个节点候选,k个节点共享一个密钥的方法后,发生故障p的节点可以通过其他候选节点进行代替,保证通道畅通,顺利将文件传递到候选节点p',p'节点代替p节点重组匿名通道。只有当k个候选节点同时不可用的时候,才需要发送方重新建立通道,所有k节点候选的方法可以提高通道的可靠性,维持通道的持久性。

4.1.3、冗余机制

  系统在实现过程中为了避免P2P节点的动态变化性强的特点,采用了冗余传输策略,为同一份数据建立冗余备份,通过冗余传输多个备份实现可靠的数据传输。

4.1.4、节点信誉度模型

  由于P2P网络中,节点动态变化性强,系统在P2P网络构造中引入了信誉度模型,节点提供的服务越可靠,信誉值越高,就会被其它节点选中,同时也会享受其它节点的相对好的服务。

4.2、系统匿名安全性提高

4.2.1、P2P网络的匿名安全特性

  基于P2P的Mix系统不再由特定的组织经营,用户是动态加入网络的,匿名通道节点也是随机选择的,只要加入到Mix网络中的节点达到一定的数目,就能保证每个用户有足够的Mix可选择,攻击者对匿名网络的攻击是盲目的。

4.2.2、可按长度的通道建立

  系统允许用户指定匿名通道的长度,避免攻击者利用固定长度通道特征进行流量分析。

4.2.3、节点选择引入抵御联合攻击算法

  根据攻击者能控制的节点的难度分析,引入基于ip地址两种数据,按阶梯形存放。例如下面表结构:

表的创建和节点的选择这里不作详述。

4.2.4、无首节点特征的匿名通道

  从本系统匿名通道建立过程中可以看出,匿名通道每个节点没有任何特征表明自己是通道的第一节点,避免了洋葱路由技术中有明显的通道首mix节点的匿名缺陷,从而使匿名通道从一点攻破而导致整个链条的匿名破坏。

4.2.5、相同长度的数据包

  为了防止攻击者通过观察信息的长度变化来判断出入影射关系,系统对数据包以同样的长度进行封装。

4.2.6、虚假信息欺骗

  为了防止攻击者持续观察连接时间和消息量,在系统实现中加入了虚假消息欺骗,根据Mix节点的状态随机发送虚假消息,来迷惑攻击者。

 

5、系统改进和后续研究

  (1)对匿名连接技术进行深入的研究分析。目前的匿名技术主要存在的问题有:公钥算法带来的网络延迟,多层加解密带来的密钥分配问题(如果静态分配不够安全,而动态分配又会带来更多的消耗),以及某些匿名系统(如OR)由于本身的连接方式带来的问题等。

  (2)研究新的匿名连接技术,基于连接的通信方式对于网络资源的使用较为浪费,且当链路中某节点发生问题时,链路将中断,所以研究无连接的匿名连接技术,以及适用于网络环境的快速高效的分层加解密方案。

  (3)分析匿名通信系统的负载与系统成员的数目、重路由长度的关系。

  (4)建立严格、精确的匿名数学模型,并对匿名通信系统中的不同角色进行匿名度衡量和系统的整体匿名度评价。

  (5)研究可撤消匿名性的匿名访问技术,即可按匿名访问技术。完全的匿名性可能也会带来负面影响,当某个怀有恶意的用户通过匿名服务系统攻击或篡改某个Web时,日志将无法记录该连接的任何信息,这使得恶意用户可以为所欲为。因此研究可撤消匿名性的匿名访问技术方案,它对于合法连接应该能充分保护其用户身份的匿名,一旦发现某个连接有问题,可以通过某种技术(如:可信任第三方等)取消该连接的匿名信,即找到该连接的源地址。

 

参考资料:

吴掁强     匿名技术的抗攻击性研究     陕西师范大学学报(自然科学版)Vol 32 No 1