第 7卷第 3 期
2009 年 6 月
信息与电子工程
INFORMATION AND ELECTRONIC ENGINEERING
文章编号 1672-2892(2009)03-0235-05
Vo 1. 7 ,
jun. ,2009
基于 Tor 的 Internet 集成匿名浏览系统设计与实现
周彦伟,吴振强,江景祥,王 宁
(陕西师范大学计算机科学学院,陕西西安 710062)
摘 要:设计的 Internet集成匿名浏览系统是基于Linux和 Tor技术来保护用户的信息安全,该系
统能够解决Linux环境下用户上网的隐私保护问题,软件的集成使匿名服务相对简单,方便普通用
户的使用。测试结果表明,当系统启动后,浏览器通过Tor网络发送的数据包是经过封装后的加密
数据,表明系统对用户的真实身份等信息都进行了有效隐藏,可以有效地保护用户的隐私信息。
关键词:洋葱路由器:匿名通信:匿名浏览
中图分类号 ; 文献标识码 A
Design and implementation of integrated internet anonymous hrowsing system
based on Tor
ZHOU Yan-wei , WU Zhen-qiang , JIANG Jing-xiang , WANG Ning
(College of Computer Science , Sh8llnxi Normal University , Xi' an Shaanxi 710062 , China)
Ahstract: The integrated anonymous hrowser hased on Linux and Tor is designed to protect the
security of users' information , which could offer the privacy protection under Linux circumstance. The
integration of software makes the anonymous service símple and convenient for the user. The test shows
that data packets sent through Tor by browser has been encrypted after system starts , and the user identity
information has been concealed , which protects users' privacy effectively.
Key words: The onion router; anonymous communications; anonymous browse
传统的网络安全包含秘密性(Confidentiality)、完整性(Integrity)、可用性(Availability)和真实性(Authenticity)4
个要素。然而随着网络的普及与发展,匿名性(Anonymity)被认为是网络安全的重要因素[1]。
文献[2)中的民意测验表明,用户使用 Internet 时感到最大的障碍是担心自己的隐私被发现。虽然目前比较成
熟的密码技术,是通过加密信息方式隐藏网络通信中的信息内容,可以较好地保证网络上传输信息内容的安全性,
却不能隐藏有关通信中发送者或接收者的位置信息和通信模式,即它不能阻止通过流量分析,推测出一些有价值
信息的行为。攻击者可以利用源地址、目的地址、报文长度等信息实施窃听与流量分析相结合,来攻击在取通信
双方的地址信息,根据数据包控制信息部分以及信息特征等可见部分推断出信息的来源、去向、数据量和其他隐
含信息。这样,某些位置(或网络节点)在发送/接收大量信息时,如果被对手监视到这一情形,即使对手不明白这
些信息的内容,但大量进进出出的信息这一事实揭示着这个站点(或网络节点)是足够活跃的,从而把它作为一个
极大的目标进行攻击。例如,在军用网络上,攻击者根据这些信息可以容易地推断军事指挥中心的位置,从而采
取进一步的攻击手段来进行破坏[3-4] 。
匿名通信,是在不改变现有网络协议的情况下实现业务流中通信关系的隐藏,使窃听者无法直接获知或推知
政方的通信关系或通信一方的身份。目前在 Windows 系统下,已经有保护用户信息安全的软件,但这一过程比
较繁琐,只有在 Vidalia,Tor,Privoxy 这 3 个软件同时启动后才能实现匿名上网的目标, 3 个软件中只要有 1 个软
件启动不成功,就无法进行匿名上网。而在Linux 系统下目前尚无任何软件来保护用户的隐私信息,随着Linux
系统用户的增多,为了满足Linux 用户对匿名上网的需求,本文提出以 Tor 匿名系统为技术支持,设计并实现了
基于 Tor 的 Internet 集成匿名浏览系统。该匿名浏览系统操作方便,人性化界面设计,使普通用户通过简单配置
后,能够向用户提供更好、更方便、更安全和更可靠的网络匿名服务。
收稿日期: 2008-11-17; 修回臼期 2009-05-04
基金项目:国家 863 基金资助项目。∞7AAO 12438200)
236 信息与电子工程 第 7 卷
1 Tor的技术原理
Tor匿名通信系统(5]被称为第二代洋葱路由系统,该系统由一组洋葱路由器(Onion Router. OR)组成,这些洋
葱路由器用来转发起始端到目的端的通信流,每个洋葱路由器,都试图保证在外部观测者看来输入与输出数据之
间的无关联性,即由输出的数据包不能判断出其对应的输入数据包,使攻击者不能通过跟踪信道中的数据流而实
施流量分析。
1. 1 Tor 的工作原理
在Tor匿名通信系统中,需要匿名的用户首先启动洋葱代理(Onion Proxy. OP)程序,洋葱代理负责通信链路
的建立和数据的加/解密。它首先从目录服务器(Directory Server. DS)中获得所有Tor节点信息,然后在Tor节点集
合中随机选取一个节点,与它协商密钥,最后与它建立一个安全信道。密钥建立过程使用短期的Diffie-Hellman
密钥交换协议,同时使用TLS(Transport Layer Security protocol)传输协议,进-步保证信道的保密性和信息的前
向安全,以后所有的数据将通过这个信道进行传输。然后OP通过已建立的信道,再继续将连接拓展至其他的Tor
节点,与其交换密钥,最终建立一条多层加密信道。数据在传输前首先被OP按其所通过Tor节点的顺序从后至前
层层加密(类似于洋葱、).在传输过程中,加密后的数据每通过一个Tor节点被解密一次,直到最后→个节点数据被
完全解密并转发到目的端。数据从目的端返回的过程中,每经过一个Tor节点被加密一次,到达OP后又被层层解
密,最终转发给用户端的应用程序。由于每个Tor节点只知道自己的加/解密密钥,对于外部攻击者和合谋Tor成员
来说,除非他们能够获得路径中所有Tor节点的密钥,否则他们不可能得到通信数据的明文[川I门1
Tor 的特点
Tor 匿名系统是一种基于 TCP 连接的匿名通信系统,它可以用于网页浏览、即时消息等通信。用户在通信前,
首先要建立一条通过匿名网络的虚电路,虚电路中的转发节点仅知道自己的直接前驱和直接后继,但是不知道路
径中的其他节点,外部观察者即使检测到了通信数据,而他们所看到的 IP 数据报中的地址并不是通信发起者和
接收者的地址,由此,通信的发起者与接收者被匿名。文献[6]中将 Tor 与第一代洋葱路由相比,得出 Tor 具有拥
塞控制、端到端的完整性检测、完美的前向安全机制等特点。
2 匿名浏览系统的功能模块设计
匿名浏览系统的工作原理
从图 1 中可以看出,匿名浏览系统是 Tor 的图形控制界
面,用户通过匿名浏览系统来配置管理 Tor. Tor 提供网络
代理连接,即 Tor 提供 Socks 代理连接,而浏览器使用的是
Http 代理连接,所以数据过滤模块的功能是实现 Socks 代理
连接与 Http 代理连接的相互转换,同时将数据包封装完成
后交由 Tor 网络来传输。
匿名浏览系统功能模块简介
匿名浏览系统的功能模块如图 2 所示。
1) 常规模块的功能:设置匿名浏览系统是随Linux 系统启动而自动运行还是由用户控制手工启动;
2) 服务模块的功能 z 完成匿名浏览系统作为中继服务器运行时对本地 Tor 的设置. Tor 网络是所有志愿者共
同建立起来的,如果用户拥有较好的网络资摞,如固定的 IP 和较高的网速,就可以加入 Tor 网络来为他人提供
匿名服务;
3) 设置模块的功能是:完成匿名浏览系统作为客户端运行时对本地 Tor 的设置,使匿名浏览系统为用户提
供更好、更方便、更安全和更可靠的网络匿名服务;
4) 启动模块的功能:启动 Tor 和代理 Tsocks;
5) 运行状况图像显示模块的功能 z 以图像的形式显示 Tor 的当前工作状态,显示出 Tor 收发数据包的速率
以及收发数据的总量,方便用户查看当前 Tor 的工作状态,使其对 Tor 工作状态有感性认识。
第 3 期 周彦伟等:基于 Tor 的 Internet 集成匿名浏览系统设计与实现 237
3 技术实现
匿名浏览系统开发库及开发平台
GTK(GlMP Toolkit)是一套用于创建图形用户界面的
工具包,它遵循 LGPL 许可证,这意味着用户可以用它来
开发开源软件、自由软件。
Glade(Glade Interface Designer)是Linux 平台下基于
GTK 图形库的 C 图形应用程序开发工具。信号与事件机制
则将程序的前台界面与后台业务逻辑代码分离开来,增强
了程序的结构性,使程序更加容易理解和修改。
启动功能的实现
匿名浏览系统的启动按钮主要功能是:完成 Tor 软件
的启动和代理 Tsocks 配置信息的添加。在该按钮的触发画
数 onJun_clickedO中添加相应的功能代码:
Void On_Run_Clicked (GtkButton*button , gpointer
、,
F
a t a AU飞
1
··A puw n3 HU
L一:::L一广m叫阳山 browsing systern…「
r←一士_. I autornatically withtl怡笠些吧雪一__J
,一一一一一一-一一一一一~一一一←一一一--~
,-' Tor as a client
i 厂一二-, /…」一一十一一一-一一一一→一一」
1 …ices一人\,---一-一一一→一一「
飞 Tor 描 a relay server
L 一二→一一一二一~~'
cor句ure Tor client i曲nnation
L一一-一→一一一←-一一← F 一_J
「一-一一一→一-←一一 一一一一一 1
1start Tof •
,--一→-一一-一-一一一一一-一一一-寸
tart Tsocks agent ~
\\ ~丁丽.e of receive副邮盹hdaM!
\ra山再丁~i 叫ofTor1 0币 K.
r 一一…一一→一 \-J irnage of receive and dispatch ra阳。f I
L Tor 一一一~
哇哇哇俨i附问nz
Functional modules ofthe anon:严nous browsing system
图 2 匿名浏览系统功能模块示意图Function_DeleteO;//删除 Tsocks 配置信息
。nStartFunctionO;//系统启动前的准备函数
gtk_ widget_set_sensitive((gpointer)button , FALSE); //使启动按钮在点击后失效
ιthread_create((gpointer)tor_main_thread , NULL , FALSE , NULL); //添加线程程序
tor_rnain_threadO;//该程序是 Tor 启动程序
gdk _ threads _ enterO;
Function_AddO;//Tsocks 配置信息添加
函数 Function_ AddO主要功能是 z 将 Tsocks 的配置信息添加到相应的配置文件中,当匿名浏览系统启动成功
时,配置信息也添加成功。
函数 Function_DeleteO主要功能是:将 Tsocks 的配置信息删除。因为 Tsocks 配置信息的添加和 Tor 的启动
是有先后之分,如果不删除配置信息,则在启动网络匿名系统的同时启动 Tor,而 Tor 是网络应用程序,由于配
置信息不为空,启动 Tor 的同时就会加载 Tsocks ,在加载 Tsocks 时请求使用 Tor 建立的虚电路(由图 1 匿名浏览
系统工作原理示意图可知),这样就会形成 Tor 加载 Tsocks , Tsocks 请求 Tor 为其提供服务的死循环。
在匿名浏览系统退出时,也必须清空 Tsocks 的配置信息,否则,在不启动该系统时,配置信息不为空,这
时 Linux 系统中的网络应用程序在启动时根据配置信息的要求会加载 Tsocks ,而 Tsocks 请求使用 Tor 建立的虚
电路,但此时 Tor 没有启动(匿名浏览系统没有启动),无法为 Tsocks 提供虚电路,此时会出现错误。
当用户点击"俨关闭系统时,窗体关闭将产生 delete_ event 事件,使用函数 g_signal_ connectO将该事件与函
数 DeleteO关联,即当窗口捕捉到 delete_event 事件后触发 DeleteO函数来删除配置信息。
注意:函数 DeleteO与 Function_DeleteO的功能都是清空 Tsocks 配置信息,唯一的区别是 DeleteO函数有返
回值,且其返回值必须为 FALSE,如果返回值为 TRUE 时,匿名浏览系统主窗口的关闭按钮"x"将不起作用。
性能分析固像的显示
匿名浏览系统之间以及匿名浏览系统与代理之间都是通过 Socket 通信。通信结构如图 3 所示。
由图 3 可知对匿名浏览系统来说,通信数据包括接
收数据和发送数据,而接收数据和发送数据都是通过
Socket 接口进行传输。因此,匿名浏览系统之间 Socket
发送和接收数据的总量就是该系统处理数据的总量。通
过监视该系统 Socket 缓冲区的数据量,可以获得该系
统发送和接收数据的总量,而每秒发送和接收数据总量
的变化量即为发送和接收数据的速率。 Communication ofthe anonymous browsing system 图 3 匿名浏览系统通信因
238 信息与电子工程 第 7 卷
每运行-秒都会产生一个新的速率值,速率值的个数与运行时间成正比,因此理论上速率值的个数可以无
限增加,这为速率的存储提出了难题,而软件运行时需要记录的速率个数有限,只是需要动态更新,对于速率
值的存放方法,本文提出用带标记的循环数组以"先进先出"的方式存放最近 120 s 的速率值。由于速率数组是每
秒更新一次,因此匿名浏览系统将图像显示程序添加到进程程序中使其每秒运行一次,就能动态显示当前 Tor
的收发速率变化情况。
角色转换的实现
匿名浏览系统提供给Tor的角色有两种:一种是作为客户端;另一种是作为中继服务器。
1) 客户端介绍
客户端,即用户仅仅使用Tor软件,通过中间节点来保护用户的信息安全,这是匿名浏览系统默认的功能。
2) 中继服务器介绍
中继服务器,即为网络中的一个节点,为他人提供匿名服务。 Tor网络的运行主要依靠志愿者贡献多余的带
宽,这需要用户把匿名浏览系统配置成一台中继服务器,为Tor网络做贡献,当然,并不是必须要求每个用户都
要配置成Tor中继服务器,只要用户的网络连接速度达到20 KB/s以上时,就可以配置成为Tor网络的中继服务器,
因为运行中继的主机越多, Tor网络的速度就越快,同时节点的增加,也会使Tor的匿名性更好。
3) 匿名浏览系统角色转换的实现
匿名浏览系统安装成功的同时,将同步安装Tor , Tor安装完成后,会产生一个torrc[71的文本文件,它里面包
括了 Tor项目所有的配置选项。默认的torrc文件可以满足大部分用户的匿名要求。如果想成为中继服务器,就必
须编辑torrc文件。一旦更改了torrc文件,需要重启 Tor以使更改生效。要实现这两种角色的转换,就要对这个配
置文件中的有关选项进行更改。
4 系统功能与测试
在匿名浏览系统完成后,对其匿名功能进行测试,本文使用两种方法对其匿名上网的效果进行测试。
基于浏览器的测试
在Linux 系统下,打开 FireFox 浏览器输入网址 来查询主机当前 IP 地址的真实物理位置,该网页
打开时,默认输入的 IP 地址为本机的 IP 地址。
在没有启动匿名浏览系统前,主机 IP 地址为陕西省西安市陕西师范大学的 IP 地址。
匿名浏览系统启动成功时, Tor 和代理 Tsocks 也同时启动成功,再次打开 FireFox 浏览器,使用同样的方法
来查询主机 IP 地址的真实物理位置,可以看到,在匿名浏览系统启动后,主机的 IP 地址发生变化。关闭匿名浏
览系统,再次启动该系统查询主机的 IP 地址时,发现主机的 IP 地址又发生了变化。
从测试结果可以看出,当主机运行了匿名浏览系统之后,用户的真实身份将被隐藏。而且每次启动匿名浏
览系统时主机的 IP 地址各不相同,这是因为每当匿名浏览系统启动时, Tor 同时启动并且从目录服务器下载节点
信息,并建立虚电路。由于每次随机所选择的节点各不相同,建立的虚电路就不同,所以启动匿名浏览系统后每
次查询得到的主机 IP 地址各不相同。
基于数据包的分析测试
进行数据包分析测试之前,必须安装网络抓包工具,本文选择的软件是 wireshark,利用 wireshark 软件对使
用了匿名浏览系统的主机所发出的数据包进行抓包。 加 的.ω.28 、 TCP
在启动匿名浏览系统之前,使用实验主机 ZiZ切~[;2;22:L5 ;;312;在?13
()通过浏览器访问陕西师范大学的主页 Zi1232zmm 刃剑;22 3
(). 通过 wireshark 软件可以清楚地看到主机 加 斜阳 149川.57 TCP
29咀 且 Lt' 在和 (陕西师范大学主页的 IP 300 i3:í :4855<>4
地址)进行通信。 指出iz;2i;12228m iz;238吁 :2
在成功启动匿名浏览系统后,主机再次访问陕西师植大 骂武器EZ:iZLm iZ绞沪m z
学主页,图 4 是抓包后的截图,可以看到与主机 219. Screensbot of packet capωre after 伽eano町mωs
通信的目标 IP 地址不再是 ,而是国 browsing system 翩而19Up suω喝S削Iy图 4 主机成功启动匿名浏览系统时的抓包截图
第 3 期 周彦伟等:基于 Tor 的 Internet 集成匿名浏览系统设计与实现 239
外的 IP 地址(其中 为德国的 IP 地址, 为美国的 IP 地址),这说明在启动匿名浏览系统后,
主机发出数据包的目标地址,并不是用户所要访问的真实 IP 地址,这样就对目标地址进行了隐藏。
通过上述功能测试可以得出以下结论:
当用户启动匿名浏览系统上网时,用户的真实身份和目标地址将被隐藏,网络检测者不能从某一点来获知通
信双方的关系或者一方的身份,他只能知道该点前一个节点和后一个节点的信息,这样就隐藏了真实的用户身份
和目标地址,除非攻击者拥有所有通信节点的数据信息才能获知一些有价值的信息,而这在目前网络环境下是很
难实现的。综上所述,匿名浏览系统达到设计之初所设想的隐藏通信双方的关系和身份的目标,与预期的效果相
吻合。
5 结论
本文使用 C语言开发的基于 Tor 的 Internet 集成匿名浏览软件具有较强的移植性,该系统的实现解决了Linux
环境下用户上网隐私保护的技术问题,同时这一集成化的匿名软件弥补了当前 Windows 环境下匿名过程较复杂
的不足。匿名浏览系统是一种运行在终端的软件程序,目标是对运行该系统的主机所发出的数据包进行加密,隐
藏用户的真实身份和目标地址,很好地保护了通信双方的通信关系和通信一方的身份,同时该系统作为中继服务
器运行时为 Tor 网络提供网络服务,提高了 Tor 网络的匿名性。下一步将研究匿名浏览系统可能存在的安全问题,
增强匿名浏览系统的匿名性。
参考文献:
[ 1 ] 杨元原.一种混合的Tor通信系统方案[D]. 西安:西安电子科技大学, 2007.
[ 2] Claessens J,Diaz C,Goemans C. Revocable anonymous access to the internet[C]// Research:Electronic Networking Application
and Policy. 2003:13-25.
[ 3 ] 吴艳辉.王伟平,陈建二.匿名通信研究综述[J]. 小型微型计算机系统, 2007片(5):583-587.
[ 4] 吴振强,杨波.基于蕴头路曲技术和MPLS的隐匿通信模型[J]. 西安电子科技大学学报, 2002 ,29(4):513-517.
[ 5] Roger Dingledine ,Nick Mathewson,Paul Syverson. Tor: the Second-Generation Onion Router[EB/OL]. [2008-05-25].
http://www . pdf.
[ 6] 莫蜡云.匿名通信系统仿真评估平台的研究与实现[D]. 长沙:中南大学, 2004.
[ 7] Anonymous. Tor:概述[EB/OL]. [2008-05-20]. hup://.
作者简介:
周彦伟(1986-),男,甘肃通渭人,在读硕士
研究生,研究方向为网络安全、可信计算.email:
zhouyanwei@sω..
美摄强(1968-),男,陕西样水人,博士,副
教授,研究方向为匿名通信技术、自适应安全.
江景祥(1 984-),男,山东济宁人,本科生,
研究方向为网络安全.
王 宁(1985-),女,陕西大荔人,在读硕士
研究生,研究方向为网络安全.