I2P节点数据分析系统IRAS的设计与实现
2019-10-08孟浩苏怡斐闫茹
孟浩 苏怡斐 闫茹
摘 要: 随着网络技术的发展,人们越来越重视个人隐私。I2P(Invisible Internet Project)是一种低时延的匿名通信系统,旨在保护用户通信免受法网监视和第三方(如ISP)的监视。它内部集成了诸多应用可供用户使用,比如email通信,IRC匿名聊天,网页浏览以及文件共享P2P下载等等。本文设计和完成了一个I2P节点数据分析系统IRAS(I2P RouterInfo Analyze System),通过在中国,美国,英国,德国,澳大利亚部署I2P服务器来获取节点信息,来对不同特征的节点数据样本进行实验分析,统计样本特性。
关键词: 匿名通信;节点信息;数据分析
【Abstract】: With the development of network, people are paying more attention to personal privacy. I2P is a low-latency anonymous communication system designed to protect user communications from French-language surveillance and third-party. It integrates many applications such as email communication, web browsing and file sharing P2P download. We design and implement an I2P node data analysis system IRAS (I2P RouterInfo Analyze System). We obtain I2P node information by deploying I2P servers in China, the United States, the United Kingdom, Germany, and Australia. The node data of different characteristics are statistically analyzed.
【Key words】: I2P; Anonymous communication; Node information; Data analysis
0 引言
随着网络技术的发展,个人隐私成为人们越来越关注的问题[1]。匿名技术是网络安全领域中非常重要的一个研究课题[2],使用一些变换方法将通信流中用户的身份信息、通信消息主体、通信双方的对应关系以及信息传播途径等信息加以隐匿[3],从而达到保护个人隐私的目的[4]。1981年,David Chaum首次提出了匿名通信系统的概念[5],核心思想为MIX,即消息通过多个路由转发、分层加密,中间的路由无法获知消息的发送方和接收方的身份信息。基于这一概念,The Onion Router (Tor) 匿名通信系统得以产生[6],Tor是一个分布式的匿名网络,由Tor节点和维护者运行的中央目录服务器组成,目录服务器存储Tor网络的所有信息,Tor节点可以从目录服务器下载这些网络数据并加入到Tor网络中。然而Tor这种相对集中的设计使它收到了一些限制,此时又一个匿名系统产生了,Invisible Internet Project(I2P)。
I2P有许多供用户选择的应用程序,比如匿名浏览网页、聊天、文件共享、网络托管、电子邮件和博客等等。除了匿名web浏览需要一个到正常Internet的出口代理之外,其他的应用程序都是在I2P自身的网络中交互,这也是造成它的用户量级要远小于Tor的原因[7],而且在Tor中,网络信息是集中化的,关于中继节点和隐藏服务的信息由位于美国和欧洲的(目前是九个)权威目录服务器提供,这些权威目录服务器跟踪网络的变化和分发信息,但是在I2P中并不存在这种集中化,它使用分布式结构,每个参与中继的节点在本地维护所有已知节点的列表,如果想要获取某一个节点的信息,很可能需要查询许多节点才能在其他节点的路由表上找到该节点信息[8]。所以针对I2P网络的测量以及分析工作远远少于Tor。
本文提出的I2P节点数据分析系统IRAS以自己部署的普通I2P节点以及floodfill节点获取到的匿名通信系统I2P的真实数據作为输入,在不同的属性指标下,分别统计分析这些节点的网络特征,帮助匿名网络领域的研究人员可以更为有效的获取到I2P网络的系统特性,进一步了解I2P系统。
1 需求分析
1.1 设计目标
可行性:通过调研分析I2P系统的往年研究成果、系统开发者的技术文档以及系统IRAS的实际功能性需求,该系统在实践上具有良好的可行性,相关的学习代码较为容易,对于系统的开发以及使用都很容易上手。
无侵害性:即使有的研究人员通过爬虫或者向其他floodfill节点伪造请求的方式获得了大量的网络元数据,但是I2P的设计者在官网上有规定[9],不得作出影响I2P网络的行为,并且只能收集自己的数据,所以I2P数据分析系统必须对I2P网络的侵害降至最低,最好具有无侵害性。
准确性:虽然系统收集到的数据不可能涵盖整个I2P网络,但是在对这些数据进行抽取实验时,必须做到分析的全面与准确,尽最大的可能保证系统实验结果的客观准确性。
可伸缩性:对于实际的I2P网络,时刻存在着路由节点加入或者离开网络的现象,并且I2P网络是分布式的,本系统提供应该是能够实时获取网络节点数据,并且系统的架构是可以伸缩的,以应对更大数据量的需求。
1.2 系统用例图
IRAS在不同角色下使用是不完全相同的,系统的管理员拥有对最初数据的处理的权限,而一般的用户没有这部分工作的权限,只能在数据处理成功之后才能参与到数据的统计工作中来,对于涉及到最后结果展示的制定统计规则规划图表的工作,管理员和用户的权限是相同的,两者都可以参与。图1是IRAS使用角色用例图。
2 系统总体设计
I2P节点数据分析系统IRAS的功能主要可以从数据获取,数据处理,数据存储以及数据统计等方面阐述,数据获取模块主要实现本地数据的读取,远程服务器数据读取以及数据库读取,数据处理模块主要实现获取数据之后的转换工作,包括输入流的字节流转换,RouterInfo实例封装以及有效信息的抽取,数据存储模块负责将处理好的数据写入硬盘,包括有效信息入库以及存量数据更新,数据统计功能模块则是将转换成功的数据统计出来显示在前端页面上,包括统计规则的制定,图表绘制以及多数据对比。图2展示了IRAS功能设计图。
3 模块设计
3.1 数据获取
从RouterInfo文件可以得到节点的很多特征信息,比如节点的IP地址(国家地区),版本号,在线时间等信息。有些信息可以在I2P启动之后的控制面板上看到,但这些数据只有本机实时获取的RouterInfo,并没有其他时间的历史信息。我们可以通过对多方获取到的RouterInfo进行分析,得到I2P网络的一般化特征。根据I2P官网上对研究者的规定,为了在测试真实环境时不为I2P系统增加网络负担,我们并不采取向别的路由节点发消息后获取节点信息的方法,而是通过在不同国家设置I2P服务器,来对不同特征的节点数据样本进行实验分析,统计样本特性。
根据Hoang等人的研究,设置10个floodfill节点floodfill节点,10个非floodfill节点就足够获得I2P的网络特性,为了得到网络特性是否和地域有关联关系,我们通过每天定时19:00在中国,美国,英国,德国,澳大利亚部署I2P服务器来下载RouterInfo信息,每个国家各有四台服务器,其中两台为floodfill节点,另外两台为普通节点,共计20个服务器,实验周期为10天服务器开启之后,我们在这些机器上都配置好Java运行环境以及I2P的软件包,这样每一台机器上的/root/.i2p/netDb(如果不对I2P启动文件i2prouter.sh做出修改的话,/root/.i2p/netDb是默认的netDb存储文件)路径下就会存在该机器获取到的routerinfo文件。数据采集的流程图如4所示。
3.2 数据处理
我们可以通过net.i2p.data.router.RouterInfo类中的相关方法解析这些RouterInfo文件,获取到节点信息。其中可以为我们所用的是addresses以及options属性,我们可以通过对ip,caps,router.version等变量进行统计分析,得到I2P网络的样本特征。
处理数据的第一步是将这些RouterInfo文件转换成输入流读入Java程序,之后通过I2P解析函数将每个RouterInfo文件导出成RouterInfo类实例,便于在下一步提取一些有用的信息。
第二步则是提取有用的信息,比如ip,caps等,将这些属性集合成新的TransData类实例,也就是之后直接用于统计分析的类。
此模块的流程图如图5所示。
3.3 数据存储
I2P的控制面板上也能够看到一些本地I2P路由抓取节点的实时网络数据信息,如这些节点的版本信息,使用协议传输情况以及节点所处国家信息。但是这些统计数据
是软件运行时需要的实时数据,如果用户想要了解过去一小时或者一天的数据的话,该网页是无法提供这些数据的。为了处理这一矛盾,IRAS引入了数据存储模块,在加载完实时数据并完成数据处理流程之后,直接存储进关系型数据库,实现数据从内存到磁盘的转换,以备查询历史数据的需求。下图6为此模块流程图。
3.4 数据统计
我们将从各个服务器每天定点下载的Router Info文件中解析到的数据存放到MySQL数据库中,用户如果想获得某项数据的统计信息,可以利用IRAS的统计规则从数据库提取数据。IRAS的管理员以及用户都可以建立数据的统计规则,比如,所有节点的国家分布中位于前十的国家,I2P版本信息分布等等。建立规则时采用的方式是利用数据库的sql语句查询数据库,返回符合条件的数据集合,之后根据各项数据的值绘制统计二维图表,如柱状图、饼状图和折线图等等。下图7展示了数据统计模块的流程图。
4 实验结果
我们将展示收集到的RouterInfo的统计信息,这些信息是通过分散在世界各地的I2P路由器收集到,路由器分别位于美国、英国、澳大利亚、德国、中国,实验周期共计10天。
I2P开发者根据节点的操作模式,可达性以及共享带宽将每一个节点都分了类,并将分类之后的标识符写入了RouterInfo文件中,具体位于Rou terInfo.options.caps属性。我们可以通过对这些标志符的分布情况进行分析进而得到I2P网络的概要情况。对于caps中的每一个字符都代表着不同的含义:
caps中会有该节点共享带宽的估算值,比如K代表共享带宽低于12 KBps,L代表共享带宽位于12到48KBps之间,M代表共享带宽位于48到64KBps之间,N代表共享带宽位于64到128 KBps之间,O代表共享带宽位于128到256 KBps之间,P代表共享带宽位于256到2000 KBps之间,X代表共享带宽大于2000 KBps;
图8展示了不同数量级的RouterInfo信息中共享带宽的分布情况。可以看出,不管是什么样的数量级,占比最大的种类为N,其次为O。
5 结论
I2P是一個低延迟、面向消息的匿名网络,本文提出的I2P节点数据分析系统IRAS,通过收集、处理、存储、统计分析真实的I2P网络数据得出I2P系统运行时的用户数据的整体特性。IRAS为I2P研究人员提供一个节点数据分析和网络性能研究的工具,促进I2P匿名网络研究与发展。
参考文献
齐荣. 用户隐私研究综述[J]. 软件, 2015, 36(1): 125-130.
李磊. 数据通信网络安全维护策略探讨[J]. 软件, 2018, 39(7): 191-193.
张小波, 付达杰. 网络信息资源个性化推荐中隐私保护的研究[J]. 软件, 2015, 36(4): 62-66.
张信媛, 陆天波. 一种用于P2P 文件共享网络的匿名通信方案[J]. 软件, 2015, 36(12): 05-08.
Chaum, D. Untraceable electronic mail, return addresses, and digital pseudonyms [J]. Communications of ACM 24(2), 1981, 84–88.
韩越, 陆天波. Tor 隐匿服务可扩展性研究[J]. 软件, 2016, 37(02): 66-73.
Introduction to Anonymizing Networks–Tor vs I2P. [Online].
Gao Y., Tan Q., Shi J., Wang X., & Chen M. Large-scale discovery and empirical analysis for I2P eepSites [A]. In Computers and Communications (ISCC), 2017 IEEE Symposium, 444-449.
I2P Official Homepage [EB/OL]. I2P Academic Research Guidelines. https://geti2p.net/en/research, 2018-12.