匿名通信与暗网
匿名通信指采取一定的措施隐蔽通信流中的通信关系,使窃听者难以获取或推知通信双方的关系及内容。匿名通信的目的就是隐蔽通信双方的身份或通信关系,保护网络用户的个人通信隐私。——MBA智库百科
匿名通信是一项技术,用于保护通信双方的隐私,使窃听者无法获取通信双方的关系及内容。匿名通信系统是提供匿名通信服务的一套完整网络,主要由提供加密服务的节点组成。暗网是匿名通信系统的其中一种表现形式,利用隐藏服务机制,使监管者无法有效监控暗网中的非法活动。
学术界对匿名通信系统研究的2个方向
专注于匿名通信系统本身,分析其安全性并提出相关的隐私增强技术:包括匿名接入、匿名路由、隐藏服务等机制的优化,流量混淆和协议伪装等技术的设计和应用。
针对匿名通信系统和暗网的攻击和监管:利用流量分析,系统/协议漏洞分析,提出去匿名化的攻击方法,包括暗网隐藏节点发现,隐藏服务定位,暗网用户的网络行为分析,暗网流量追踪,通信关系确认等。
匿名通信系统的基本工作原理
基本分类
高延迟匿名通信系统
即基于Mix算法的匿名通信系统,源于早期的Mixnet匿名通信网络,经典应用场景为高延迟邮件转发服务(Remailer),提供匿名电子邮件收发功能。该类通信系统的核心思想是利用单个Mix节点或瀑布型的多个Mix节点实现匿名通信。
Mix节点:是指网络中心向其他节点提供匿名通信服务的节点,它接受用其公钥加密的数据,并对数据进行解密、批处理、重序、增加冗余字段等处理,然后将数据传输给下一个Mix节点或最终接收者。——MBA智库百科
匿名通信网络的特点:
匿名通信系统网络中一部分节点为其他节点提供匿名通信服务;
发起者需要在发起匿名通信之前确定整个通信的传输路径,该路径在传输中不会改变;
发起者需要在发起匿名通信之前,得到整个传输路径中各个Mix节点的信息,包括地址、密钥信息等;
Mix节点对来自多个发送者的通信信息进行解密、复用、批处理、重序、增加冗余字节等处理,系统匿名较高,但通信传输的时延较高,一般不适合实时的数据通信。
基于Mix算法的匿名通信系统包括Babel、Cyberpunk(TypeI)、Mixmaster(TypeII)、Mixminion(TypeIII)等。
发展过程:
最早由chaum于1981年提出,用于邮件防追踪。核心思路基于Mix节点对输入的信息进行加密和混淆,节点隐藏了各消息间的输入和输出关系,防止攻击者对输入和输出消息进行关联
1996年,Culcu等人提出Babel,引入mix路径,通过延迟一些批量消息,来抵御流量分析攻击
2001年,Dingledine等人提出基于信誉系统的的mix节点选择技术,以提高可靠性和效率
2002年,Dingledine等人提出具有分布式信任的mix级联协议,基于信誉度重新排列mix级联,提高可靠性
2003年,Danezis提出结合"mix级联模型"和"自由路由"的受限路由mix网络,以保证消息的匿名性
2003年,Cottrell等人提出Mixmaster协议,在每个数据包末尾添加随机数据,将消息转化加密为统一大小,保证所有发送者的路由信息相同。
2003年,Danezis等人提出Mixminion协议,部署了一组冗余和同步的目录服务器系统,为电子邮件消息提供发送人和接收人匿名。
低延迟匿名通信系统
结构化P2P匿名网络,采用洋葱路由或类似洋葱路由的协议进行通信:Tor、I2P、Freedom
// Freedom为网络中的每个用户分配一个唯一身份标识,以屏蔽IP地址信息,同时利用类似洋葱路由的加密方式为用户提供匿名网页浏览等服务。
非结构化P2P匿名网络,主要采用基于DHT(distributed Hash table)的路由协议和随机游走协议:Torsk、Freenet、Crowds
// Crowds被设计用于匿名浏览网页,主要特征为节点随机选择。其所有节点都被分群,群中的每个节点都可以连接任何其他节点作为通信中继。
新型匿名通信
综合Mix技术和洋葱路由技术,可进一步提高匿名通信系统的匿名性、扩展性和性能:Taranet、Riffle、Loopix
暗网
匿名通信技术的提出源于对网络用户隐私保护的需求。然而不法用户通过Tor、I2P、Freenet等匿名通信系统提供的隐藏服务机制,架设必须通过特殊软件或进行特殊配置才能访问的服务,形成了无法被直接检索的暗网。
Dark Web:Web站点,需要特殊软件或配置才能访问,搜索引擎无法直接进行搜索。强调不可检索,不可直接访问,不强调匿名。包括:匿名Web站点(如Tor提供的隐藏服务站点),和非匿名站点(如ZeroNet提供的Web站点)。
Darknet:匿名网络,包含Web,IRC和文件共享等其他各类资源,需要特殊软件或配置才能访问,搜索引擎无法直接进行搜索。强调匿名性,所有资源都需要基于相应的匿名通信系统才能访问,资源不限于Web服务。如Tor、I2P、Freenet。
经典匿名通信系统
Tor(The Second-Generation Onion Routing)匿名通信系统
背景
1995年, 美国海军研究实验室提出开发洋葱路由,避免情报人员的网上活动不被敌对国进行监控。1997年,交由美国国防高级研究计划局(DARPA)进一步开发。2003年Tor正式版发布。2004年公开源码。
开始,该项目研究进展缓慢,直到2002年,两个MIT的毕业生Roger Dingledine和Nick Mathewson加入项目。与海军研究机构的Paul Syverson一起,2003年,3人开发了一个新版的洋葱路由,也就是Tor。
为了更好的隐藏情报人员的身份,Tor需要被很多不同的人使用,把政府情报人员的流量与普通用户的流量混在一起。 2004年底, Tor正式对普通用户发布。
洋葱路由 Onion Router
原理
洋葱路由的实现根据是Chaum的“混合瀑布”理论:消息在从发送端发送,通过一系列的代理(“洋葱路由器”),到接收端的过程中,在一条不可预测的路径上不断的重新路由转向。同时为了防止中间人窃得消息内容,消息在路由器之间传送的过程中是经过加密的。
信息封包经洋葱路由层层加密后,传送至目的端,目的端再层层解密,而其目的端回传的信息也需要经此传递链。
任一节点都无法得知在链中自己的前一个节点是传送端,还是链上的另一节点。同理,任一节点也无法知道在链中的下一节点是目的端,还是链上另一节点。只有链上的最后一个节点,知道本身是链上最终节点,即出口节点。
建立步骤
洋葱路由的组成及运作请参考网上的方式
优势
洋葱网络的优点是它没有必要去信任每一个合作的中间节点,如果一个或更多的中间节点被恶意操控,通信的匿名性仍然可以得到保证。
一个能够监视洋葱网络中所有洋葱路由器的攻击者,或许有能力跟踪消息的传递路径,但如果攻击者只能监视有限数量的洋葱路由器,那么跟踪消息的具体传送路径将变得非常困难。
Tor(The Second-Generation Onion Routing)第二代洋葱路由
Tor的核心技术是“洋葱路由 Onion Routing”。使用多跳代理机制对用户的隐私进行保护:首先,基于加权随机的路由选择算法分别选择3个中继节点,并逐跳与这些中继节点建立链路。在数据传输过程中,客户端对数据进行3层加密,由各中继节点依次进行解密。由于中继节点和目标服务器无法同时获得客户端IP地址、目的服务器IP地址和数据内容,从而保障了客户隐私。
Tor暗网的基本组件包括客户端、目录服务器、隐藏服务目录服务器、洋葱路由器(onion router,OR)和隐藏服务器。
客户端:是运行在用户操作系统上的本地程序,称为洋葱代理(onion proxy,OP)。OP将用户数据封装成Tor信元并层层加密,位各类TCP应用程序提供匿名代理服务。
洋葱路由器(OR):Tor暗网中的数据中继节点,Tor默认匿名链路由3个OR组成,分别是入口节点(entry),中间节点(middle),出口节点(exit),其中入口节点一般选择可行度较高的守护节点(guard)。
隐藏服务器:提供Web、IRC等TCP应用服务。受到Tor匿名性的保护,必须通过Tor客户端才能访问其TCP应用服务。
目录服务器:保存了所有洋葱路由器的IP地址和带宽等信息。客户端首次启用后,向目录服务器请求洋葱路由器信息,以完成节点选择和链路建立。
隐藏服务目录服务器:储存并为客户端提供隐藏服务器的引入节点(introduction point,IPO),公钥等节点信息。
以上组件的功能都集成在Tor软件包中,用户可通过配置文件对具体功能进行配置
工作方式
Tor隐藏服务器启动时,①选择3个引入节点(IPO)作为其前置代理,②并将引入节点及其公钥信息上传至隐藏服务目录服务器
客户端访问隐藏服务时,③先建立3跳链路访问隐藏服务目录服务器,获取引入节点(IPO)和公钥信息。
④客户端选择一个汇聚节点(rendezvous point,RPO)作为客户端与隐藏服务目录服务器通信链路的汇聚点,⑤并将汇聚节点的信息通过引入节点(IPO)告知隐藏服务器
⑥隐藏服务器和⑦客户端各自建立3跳链路到达汇聚节点,完成6跳链路的搭建后即可开始通信
Tor通过6跳链路访问隐藏服务器,在此过程中任意节点无法同时获知Tor客户端IP地址、隐藏服务器IP地址以及数据内容,保证了Tor客户端和隐藏服务器的匿名性。
I2P(invisible Internet project)匿名网络
是一种使用单向加密隧道的P2P匿名通信系统,采用大蒜路由,使隧道中每一跳节点只掌握相邻节点信息,无法获知通信双方的通信关系,保证通讯的匿名性。
大蒜路由是洋葱路由的一个变体,将传输的原始数据拆散为加密数据包通过多条隧道交叉疏散传递。在洋葱路由中,一条或多条数据的上传或下载公用一条隧道,而大蒜路由的上传与下载隧道相互独立,且两个方向上的隧道数量都可能大于1。——百度百科
与洋葱路由的电路交换(Circuit Switching)相比,大蒜路由也称为封包交换(Packet Switching)方式。大蒜路由是I2P与Tor及其他隐私/加密网络的主要区别之一。——百度百科
原理
I2P节点类型分为Floodfill和Nonfloodfill两类。节点默认初始身份为Nonfloodfill,其中满足性能要求的节点会自适应的成为Floodfill,其数量约占I2P所有节点的6%。
Floodfill节点保存RouterInfo和LeaseSet两类数据类型,RouterInfo包括节点ID,公钥,签名、通信协议、端口等信息;LeaseSet包括服务Hash值,隧道入口节点,起止有效时间等信息。
I2P系统根据Kademlia算法来组织所有的Floodfill节点,形成I2P的网络数据库(network database,netDB),以提供对所有RouterInfo和LeaseSet信息的保存和查询功能。
I2P拓扑结构如下图所示,每个节点根据256位路由值(router key)分布在逻辑环中,其中路由值通过SHA256算法对节点ID和当前日期计算获得。
I2P通过异或2个节点的路由值来度量节点间的距离。每个节点会选择异或距离最近的节点上传RouterInfo和LeaseSet信息。因此古玩论坛节点每天都会由于日期改变而呈现不同的逻辑分布,并将信息上传至不同的Floodfill节点,以此抵御Sybil攻击
SHA256,信息摘要算法
异或运算,相同为0不同为1
工作方式
I2P的客户端和服务器均利用多跳单项加密隧道进行通信。
节点初次加入网络时,通过官方补种网站(Reseed Website)进行补种,获取部分RouteInfo信息,并根据路由选择机制建立单向隧道。
根据用途可分为
探测隧道(exploratory tunnel):用于辅助构建、测试客户隧道,查询netDB中信息等。
客户隧道(client tunnel):用于应用服务,如Web浏览,聊天室,文件共享、邮件等。
根据传输方向可分为
输入隧道(inbound tunnel)
输出隧道(outbound tunnel)
客户端和服务器在通信过程中分别建立各自的输入隧道和输出隧道。默认隧道长度为3跳。一次完整的通信过程需要4条隧道参与。
客户端和服务器的数据先采用端到端加密,然后在客户端进行3次洋葱式加密后发送到其输出客户隧道网关(Gateway)节点,然后依次在各个节点上加密并转发到服务器,最终由服务器通过4次解密获得明文数据。
多条隧道中的节点只知道前驱和后继节点的信息,从而隐藏通信双方关系,同时单向隧道通过增加通信节点的数量,提升了通信的匿名性。
Freenet匿名网络
简介
Freenet是一个分布式的匿名信息储存和检索系统,为用户提供文件上传、下载和检索,并保证上传者和下载者的匿名性。
设计目标
保护文件下载者和发布者的匿名性——Freenet的多跳文件传输和检索机制
本地存储的可否认性——分块机密存储
能够抵抗第三方对信息可访问性的破坏——文件的冗余存储机制——保证在部分节点离开网络的情况下,文件依然具有较高的可访问性
高效的分布式存储与路由——利用DHT
完全的去中心化——非结构化的P2P架构
原理
所有节点分布在周长为1个单位的逻辑环上,按照功能可分为种子节点和非种子节点,默认的新加入节点为非种子节点。种子节点具有辅助发现节点的功能。
新节点随机产生一个[0,1)的实数,用于标记其在环上的位置,每个节点都会贡献一顶大小的本地硬盘空间,共同构成Freenet的存储空间。
Freenet节点有2种工作方式:
opennet模式:
可以和任何其他节点建立连接,与自身节点一跳的为邻居节点,邻居节点的数量与该节点带宽成正相关,最多支持85个邻居节点(版本号0.7.5)。节点间的距离是由节点间不大于0.5的弧长定义。
定义距离不超过0.01的邻居节点为近邻居,且每个节点原远邻居节点的数量不超过近邻居数量的30%,其余节点为近邻居节点。
新节点加入网络时,通过种子节点获取其他节点信息,然后选择邻居节点建立连接,从而加入Freenet
darknet模式:
节点只能和用户添加的信任节点建立连接,以保证安全性
Freenet节点通过FCP(Freenet client protocol)协议向上层应用提供匿名文件存储与检索服务,并集成基于FCP的Fproxy服务,从而提供HTTP代理,Freenet节点配置、文件上传与检索、Freesite浏览等功能。
工作方式
在文件上传前,Freenet将文件按照32KB大小切块,分别计算每块的唯一标识符,文件标识符主要分为内容哈希键值(content hash keys,CNK)和签名子空间键值(signed subspace keys,SSK)。文件的索引值可根据该键值通过SHA256哈希运算获得,索引值可转化为逻辑环上的对应位置。
在文件存储过程中,节点根据文件的位置查找距离最近的邻居节点,由其进一步迭代查找目标存储节点,最终通过该多跳查找路径将文件上传。
文件检索过程中,根据文件对应位置,利用深度优先的最近距离贪心算法查找目标存储节点。
ZeroNet网络
是一个基于BitTorrent的技术开源项目,采用早期的BitTorrent架构,强依赖于BitTorrent Tracker服务器。
BitTorrent(简称BT)是一个文件分发协议,每个下载者在下载的同时不断向其他下载者上传已下载的数据。用户之间相互转发,直到每个用户的下载都全部完成。——百度百科
用户数据采用MassagePack协议封装,并建立TCP长连接进行数据传输,每个用户只能和1000个其他用户进行连接。
ZeroNet采用椭圆曲线加密技术生产网站地址,并对站点内容进行签名和认证,并基于BIP32(bitcoin improvement proposals)方案为访问站点的用户生产标识。
每个新网站都会生成对应的公钥和私钥。私钥被网站拥有着掌握,用于对发布内容进行签名;公钥作为网站的地址,任何人可对网站内容的完整性进行验证。
工作方式
当用户请求访问ZeroNet上的网站时,客户端软件将基于BitTorrent技术从拥有该网站资源的站点(其他用户)上下载文件,并在本地浏览器进行解析。
网站所有者将访问站点的用户信息储存在ZeroNet客户端内置的SQL数据库中,在站点更新后会及时推送至用户端进行增量更新。