被称作洋葱路由的原因在于消息一层一层的加密包装成被称作洋葱数据包的数据结构,层数取决于到目的地中间会经过的节点数,每经过一个节点层会将数据包的最外层解密,因此任一个节点都无法同时知晓这个消息最初与最终的目的地,使发送者达到匿名的效果。
虽然消息在洋葱路由网络中被层层加密,但是在出口节点时,该节点会把最后一层解密并将原始消息传给接收者;因此若出口节点遭到攻击或是受控制,则原始的消息将会被截取。瑞典研究员丹伊格史塔德(瑞典语:DanEgersta)曾用此方式获得了超过100封寄给外国大使馆的电子邮件密码。出口节点漏洞的原理与未加密无线网络很类似,后者为用户将未加密的数据在无线网络上传送时可能中途被其他人截走;这两种问题都可以通过端对端加密连接如SSL、HTTPS等方式解决。
Tor是实现匿名通信的自由软件。Tor是第二代洋葱路由的一种实现,用户通过Tor可以在因特网上进行匿名交流。Tor用于防范互联网上广泛存在的流量过滤、嗅探分析。Tor在由“洋葱路由”组成的表层网(overlaynetwork)上进行通信,可以实现匿名对外连接、匿名隐藏服务。
前身为TorBrowserBundle(TBB),是Tor项目的旗舰产品,操作容易,对电脑没有多少知识的人也能使用。由MozillaFirefoxESR浏览器修改而成,并由TorProject开发人员做了许多安全性和隐私保护的调校,预载TorButton、TorLauncher、NoScript和HTTPSEverywhere等扩展与Tor代理。其为开源软件、自由软件、绿色软件,可在多种操作系统上运行,包括Windows、MacOSX、Linux、Unix、BSD、以及Android手机。Tor浏览器在后台启动Tor进程并透过其连接网络。一旦程序断开连接,Tor浏览器便会自动删除隐私敏感数据,如cookie和浏览历史记录。Tor浏览器目前提供16种语言的接口,包括简体中文(但尚无繁体中文)。Tor浏览器本身提供SOCKS代理服务,一些应用程序已可借此使用Tor网络。若结合代理服务器软件Privoxy,可以让所有走HTTP/HTTPS协议的连网应用程序、以及所有能够设置HTTP/HTTPS代理的应用程序都通过Tor网络来上网。
Android平台上的Tor服务器名为Orbot,并搭配Orfox浏览器来打开网页。Orbot本身可以当作VPN和Proxy使用,让用户指定同一设备上的任何程序通过Tor网络来匿名上网。
Tor网络是一种覆盖网络,每个洋葱路由器(onionrouter,OR)作为一个没有任何特权的用户层正常程序运行,与其他所有节点维持一个TLS链接。每个用户运行自己的洋葱代理程序:获取目录,建立路径,处理连接。这些代理接受TCP数据流,并且在同一条线路上复用他们(?)。每个洋葱路由器维护一个长期的验证密钥和短期的洋葱密钥。验证密钥来签署TLS的证书,签署OR的描述符(包含了当前节点的keys,地址,带宽,退出策略等等),还被目录服务器用来签署目录。洋葱密钥则用来解码用户发送来的请求,以便建立一条通路同时协商临时的密钥。TLS协议还在通讯的OR之间使用了短期的连接密钥,周期性独立变化,来减少密钥泄漏的影响。
流量在网络中以固定大小的单元进行传输,每个单元是包含头和有效载荷的12字节数据。头包括一个线路标识符(这个单元使用哪条线路)和一个指令(指明将要对这个单元的数据做什么)。指令包括:
中继单元在有效载荷数据之前有额外的头(中继头),包含了一个streamID,一个端到端的校验和,中继负载的长度和一个中继命令。整个中继单元的信息在线路上流动时,使用128位的AES进行加解密。中继命令包括:
洋葱路由最初位每个TCP流都建立一条线路。而由于建立一条线路可能会耗费0.1秒(因为公钥加密和网络延迟),这种设计导致像网页浏览器这样会打开很多TCP流的应用消耗线路成本过高。在Tor里,一条线路可以被很多TCP流共享。
EpkBob()是使用Bob的公钥进行加密,H是一个安全的哈希函数,|表示级联。
OR在收到Alice的中继单元数据以后,用相应的密钥解密中继单元头和负载。如果这个中继单元是由Alice向目的地发出的,则检查是否有有效摘要(作为优化,前两个字节作为完整性检查,看是否是0,大多数情况下,这样可以避免计算hash值)。如果有效,他们将按照下面说的进行处理。否则的话,洋葱代理处理进来的中继单元很简单:他们用和每个OR的公钥迭代地解出中继头和负载。(在任何节点发现解出的摘要失效)???Alice对每个节点都针对性的赋值了摘要,并进行了加密,因为摘要已经在每步都加密成了不同的值,只有在特定的目标OR才有意义。这种leakypipcircuit拓扑允许Alice发送的流在线路上的不同OR处退出。Alice也可以根据自己的退出策略选择不同的节点退出,或者让OR无法得知流是否来自于同一个人。如果要截断路径,Alice发送一个destroy控制单元。线路上每个接受到destroy的OR,关闭这条线路上的所有stream,并且传递这个destroy到下一个节点,这个过程也是增量的,同样执行destroy完毕的OR也发送relaytruncatecell确认。通过这种方式,Alice就不用通知中间节点她更换了线路。这样“截断节点查看线路是否断开”的攻击破坏性就不大了。
这两位来自美国东北大学的两位科学家在Tor洋葱网络进行了一项实验,此项实验用到1500蜜罐服务器已发现出至少110台“流氓服务器”。本此实验(2016年2月12日–2016年4月24日)旨在测试Tor同胞服务器的可信因素和HSDirs(隐藏服务目录),尤其是HSDirs,它是指一个Tor服务器用于承载一个.onion(深网)网站的复杂项目。
大多数数据查询表现出恶意行为,如访问服务器的根目录的路径,description.json服务器文件,以及Apache状态页面数据。GuevaraNoubir教授补充道:
“我们检测到其它攻击手段,如SQL注入(针对INFORMATION_SCHEMA.TABLES),Drupal用户名枚举,跨站点脚本(XSS),路径遍历(寻找boot.ini文件和/etc/passwd文件),瞄准RubyonRails框架(导轨/信息/属性),和PHP复活节彩蛋(=PHP?––––*)。”这110台行为不端的HSDirs中,有70%是运作在专业云计算基础架构上。这就说明,这些“流氓服务器”不是建立自己的家用台式机作为节点服务器。
Tor网络的攻击都为Tor项目,探讨这些项目的大多是民族国家行为者,犯罪侦查机构,学术研究人员和网络犯罪分子。研究中,25%的HSDirs充当Tor流量的出口节点,也就是说这类人群可能会利用这些服务器来开展中间人攻击(MitM)攻击的征兆,并窥探Tor流量,隐患重重。
目前为止(2016.8.31),全球大概有7000个中继节点,2000个入口节点和1000个出口节点。攻击者只需要有一个蜜罐入口和出口,就可以分析出你的流量去向,获得你的真实身份,(1/2000*1/1000)的机率,恰好你使用了这个入口和出口节点,考虑到在用Tor时,你一个HTTPServer的访问就可能建立很多条线路,这个机率将大大提升,如果你长期使用Tor,那么被蜜罐节点收集到信息的可能性更大。Tor在低延迟和高匿名性之间做了一个取舍(tradeoff),因为tor的最广泛应用是浏览器,为了维持访问的流畅性,牺牲了部分匿名性。
很难被封杀在抗封杀方面,I2P比TOR要坚挺。
先说说TOR为啥被天朝封杀:TOR每次启动时,需要先连接到某个TOR的目录服务器,获取网络上可用节点的信息。由于目录服务器数量有限,GFW就把互联网上所有的TOR目录服务器的IP地址都列入黑名单。后来,TOR官网提供网桥中继,帮助网友接入TOR网络。但是,TOR的网桥中继,数量依然不太多。据说GFW专门有人在盯着TOR官网更新的网桥中继地址——每次有新的中继地址贴出来,就列入黑名单。经过GFW的不懈努力,大部分TOR的网桥都被封杀。所以,TOR在天朝内不太好使。
Vuvuzela’sapproachtoanonymouschatistoencryptthemetadatathatitcan,addnoisetothemetadatathatitcan’t,andusedifferentialprivacytoanalysehowmuchanonymitythisnoiseprovides.
类似Dissent,尚未部署,实验阶段。继续平衡高匿名性和低延迟之间的取舍。
上面提到的新技术,很少有能完整可用地部署到现实中的,一个原因是研究人员通常不倾向于做出产品级的项目,没有足够的热情。另一个是技术实现上有很多障碍,理论研究和实际开发仍有距离。个人认为,SDN+Tor(之类)