基于P2P的匿名技术研究

摘要:
文摘:讨论了匿名通信中的两种基本技术:Mix和洋葱路由,分析了P2P网络对Mix网络和传统洋葱路由的改进和缺陷,讨论了基于P2P的匿名通信在提高通信性能和抗攻击能力方面的实现技术。在分析和研究了几种可靠的匿名系统解决方案的基础上,本文从研究网络环境中匿名系统可能面临的威胁入手,开发了一种基于P2P的匿名通信系统,该系统具有较强的安全性。

李超 北京图形研究所

摘要:本文针对匿名通信中两种基本技术: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。

基于P2P的匿名技术研究第1张

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

2.2、洋葱路由技术

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

基于P2P的匿名技术研究第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。

基于P2P的匿名技术研究第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)。

基于P2P的匿名技术研究第4张

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地址两种数据,按阶梯形存放。例如下面表结构:

基于P2P的匿名技术研究第5张

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

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

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

4.2.5、相同长度的数据包

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

4.2.6、虚假信息欺骗

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

5、系统改进和后续研究

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

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

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

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

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

参考资料:

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

免责声明:文章转载自《基于P2P的匿名技术研究》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【LInux】查看Linux系统版本信息Python递归 — — 二分查找、斐波那契数列、三级菜单下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

网络编程,从socket到epoll

网络编程,从socket到epoll 参考链接:https://www.bilibili.com/video/BV11Z4y157RY?p=2&spm_id_from=pageDriver socket基本知识: socket分类: socekt提供了流和数据报两种通信机制,即流socket和数据报socket。 简单的socket通信流程: 先...

安全和加密——openssl及自建CA

一、对称加密算法 对称加密:加密和解密使用共用一个秘钥 特点 加密、解密使用同一个秘钥,效率高; 将原始数据分割成固定大小的块,逐个进行加密 缺点 密钥过多,密钥需要分发 数据来源无法确认 1. 使用gpg实现对称加密 对称加密文件gpg -c file 生成 file.gpg 在另一台主机上解密gpg-o file -d file.gp...

vite尝鲜-最新代码原理分析

使用webpack在开发中,只改动一句代码,也需要数秒的热更新,这是因为webpack需要将所有的模块打包成一个一个或者多个模块,然后启动开发服务器,请求服务器时直接给予打包结果。这个过程随着项目的扩大,速度会变慢。然后vite来了。 描述:针对Vue单页面组件的无打包开发服务器,可以直接在浏览器运行请求的vue文件 特点: 冷服务启动-使用ES6 im...

C#实现异步阻塞TCP(SocketAsyncEventArgs,SendAsync,ReceiveAsync,AcceptAsync,ConnectAsync)

1.类 (1)socket IO操作内存管理类 BufferManager // This class creates a single large buffer which can be divided up // and assigned to SocketAsyncEventArgs objects for use with ea...

php websocket-网页实时聊天之PHP实现websocket(ajax长轮询和websocket都可以时间网络聊天室)

php websocket-网页实时聊天之PHP实现websocket(ajax长轮询和websocket都可以时间网络聊天室) 一、总结 1、ajax长轮询和websocket都可以时间网络聊天室 2、websocket:websocket是html5的新特性,是一种和http一个层次的协议 3、PHP 实现 websocket:PHP 实现 webso...

Linux下安装Nginx并实现socket代理

nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息。 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好。 ububtu平台编译环境可以使用以下指令 1 2 apt-get install build-essential apt-get install libtool cen...