洋葱路由(英语:Onion routing)为一种在电脑网路上匿名沟通的技术。在洋葱路由的网路中,讯息一层一层的加密包装成像洋葱一样的数据包,并经由一系列被称作洋葱路由器的网路节点传送,每经过一个洋葱路由器会将数据包的最外层解密,直至目的地时将最后一层解密,目的地因而能获得原始讯息。而因为透过这一系列的加密包装,每一个网路节点(包含目的地)都只能知道上一个节点的位置,但无法知道整个传送路径以及原传送者的地址。
基本介绍
- 中文名:洋葱路由
- 外文名:OnionRouting
- 原理:Chaum的混合瀑布原理
- 目标:保护信息传送者和接受者的隐私
- 学科:密码学
- 领域:密码学
发明与实现
1990年代中期,美国海军研究实验室的研究员保罗‧塞维亚森(Paul Syverson)、麦可‧里德和大卫‧戈尔德施拉格(David Goldschlag)为了保护美国线上情报系统而开发了洋葱路由。其后国防高等研究计画署接手该项目继续开发,并在1998年获得海军的专利。2002年计算机科学家罗杰‧丁高戴恩(Roger Dingledine)和尼克‧马修森(Nick Mathewson)加入了塞维亚森的项目,并开始开发Tor;Tor为“洋葱路由项目”(The Onion Routing project)的头字语,该项目后来成为规模最大的洋葱路由实现并广为人知。之后美国海军研究实验室将Tor以自由软体授权的方式公开了原始码,丁高戴恩、马修森以及其他五位成员在2006年成立了名为“The Tor Project”的非营利组织,并获得包含电子前哨基金会在内的几个组织的财政资助。
数据结构
一个在洋葱路由网路中传递的数据包例子。传送者首先将数据包传送给路由器A,解密了蓝色一层,并发现要传给B,而数据包传送至B时又解密了绿色一层,同理再传给C,而C在解密了红色一层后得到原始要传送的讯息并将之传给目的地。
被称作洋葱路由的原因在于讯息一层一层的加密包装成被称作洋葱数据包的数据结构,层数取决于到目的地中间会经过的节点数,每经过一个节点层会将数据包的最外层解密,因此任一个节点都无法同时知晓这个讯息最初与最终的目的地,使传送者达到匿名的效果。
数据包的创建与传送
为了传送洋葱数据包,传送讯息者会从“目录节点”(directory node)提供的列表中选取一些节点,并以这些规划出一条被称作“链”(chain)或“线路”(circuit)的传送路径,这条路径将为传输数据包所用。为了确保传送者的匿名性,任一节点都无法知道在链中自己的前一个节点是传送者还是链上的另一节点;同理,任一节点也无法知道在链中自己的下一节点是目的地还是链上另一节点。只有链上的最后一个节点知道自己是链上最终节点,该节点被称作“出口节点”(exit node)。
洋葱路由网路使用非对称加密,传送者从目录节点获得一把公开密钥,用之将要传送的讯息加密并传送给链上的第一个节点,该节点又被称作入口节点(entry node);其后与之创建连线和共享密钥。创建连线后传送者就可以通过这条连线传送加密过的讯息至链上的第二个节点,该讯息将只有第二个节点可以解密;当第二个节点收到此讯息后,便会与前一个节点也就是入口节点同样的创建连线,使传送者的加密连线延伸到它,但第二个节点并不晓得前一个节点在链中的身份。之后按照同样原理,传送者通过入口节点和第二个节点的这条加密连线将只有第三个节点能解密的讯息传送给第三个节点,第三节点同样的与第二个节点创建连线;藉由重複相同的步骤,传送者能产生一条越来越长的连线,但在性能上仍有限制。
当链上的连线都创建后,传送者就可以透过其传送数据并保持匿名性。当目的地回送数据时,链上的节点会透过同一条连线将数据回传,且一样对数据层层加密,但加密的顺序与传送者完全相反;原传送者收到目的地回传的数据时,将仅剩最内一层加密,此时对其解密就可拿到目的地回送的讯息。
弱点
计时分析
传统网际网路不被认为具有匿名性的一个理由为网际网路服务供应商具有纪录和追蹤各电脑间的连线能力;例如当有人访问一个特定网站时,往来的信息内容如密码等,虽然能透过像是HTTPS等加密连线方式保护让其他人无法得知内容,但是连线本身却仍会有纪录,包含何时创建连线,多少数据量被传送等。洋葱路由虽然能创建并隐藏两电脑之间的连线,使两者之间并无一个可分辨的直接连线,但仍会有上述的连线纪录问题。流量分析可藉由搜寻连线纪录的连线时间和数据传输量来试图判别潜在的一对传送者与接收者;例如当有人传送51KB的数据到一个未知的电脑,三秒后另一未知的电脑传送51KB的数据给一个特定的网站,则可以推断此人可能与该网站曾创建连线。此外还有一些原因可以让流量分析更加有效,包含节点的损坏或离开网路,以及当链已经因为定期重建而改变,但有些链上节点却仍在追蹤此前创建的会话等。
大蒜路由是洋葱路由的一种变体,其结合了I2P网路并将多份讯息加密打包在一起,使其更难被攻击者以流量分析的方式破解。
出口节点漏洞
虽然讯息在洋葱路由网路中被层层加密,但是在出口节点时,该节点会把最后一层解密并将原始讯息传给接收者;因此若出口节点遭到攻击或是受控制,则原始的讯息将会被截取。瑞典研究员丹‧伊格史塔德(瑞典语:Dan Egersta)曾用此方式获得了超过100封寄给外国大使馆的电子邮件密码。出口节点漏洞的原理与未加密无线网路很类似,后者为用户将未加密的数据在无线网路上传送时可能中途被其他人截走;这两种问题都可以透过端对端加密连线如SSL、HTTPS等方式解决。
相关条目
- 密码学
- 迪菲-赫尔曼密钥交换
- Java Anon Proxy
- 俄罗斯娃娃
- 代理伺服器
- 暗网