匿名通信是由 Chaum 提出的,他提出了基于Mix节点的匿名通信算法,Mix 节点接收多个发送者的消息,并对这些消息进行混合处理,然后传输给接收者,因此掩盖了发送者和接受者的身份信息,实现了匿名。
1. 匿名通信的基本框架
1.1 匿名属性
匿名属性包括不可辨识性(unidentifiability)和不可联系性(unlinkability)。不可辨识性是指对手无法识别用户的身份和行为;不可联系性是指对手无法通过观察系统将消息、行为和用户相关联。
1.2 对手能力
对手是意图降低、消除通信匿名的通信网络用户或用户的集合。匿名通信系统一般通过提出威胁模型( thread
mode),来表明该系统能够抵抗的对手能力。对手能力分为三个方面:可达能力( reachability)、攻击能力(attackability)和适应能力(adaptability)。
1.3 网络类型
匿名通信系统的网络类型由以下三个因素确定,分别为:路径拓扑(path topology)、路由机制( route scheme)和路径类型(path type)。
2. 现阶段匿名通信分类:
2.1 基于 Mix 算法的匿名通信系统
该类通信系统的核心思想是利用单个Mix节点或瀑布型的多个 Mix 节点实现匿名通信。Mix 节点是指网络中向其他节点提供匿名通信服务的节点,它接收用其公钥加密的数据,并对数据进行解密、批处理、重序、增加冗余字节等处理,然后将数据传输给下一个 Mix 或最终接收者。基于 Mix 算法的匿名通信系统具有以下特点:
- 匿名通信系统网络中一部分节点为其他节点提供匿名通信服务;
- 发起者需要在发起匿名通信之前确定整个通信的传输路径,该路径在传输中不会改变;
- 发起者需要在发起匿名通信之前,得到整个传输路径中各个Mix节点的信息,包括地址、密钥信息等;
- Mix节点对来自多个发送者的通信信息进行解密、复用、批处理、重序、增加冗余字节等处理,系统匿名较高,但通信传输的时延较高,一般不适合实时的数据通信。
基于 Mix 算法的匿名通信系统包括 Babel、Cyberpunk(Type I)、Mixmaster(Type II)、Mixminion(Type III)
2.2 基于 Onion Routing 算法的匿名通信系统
基于 Onion Routing 算法的匿名通信系统更注重数据通信的实时性以及系统的简单
性、有效性和可实施性,其特点为:
- 基于 Onion Routing 算法的匿名通信系统建立在 TCP 传输的基础上,节点之间通常通过 SSL 方式传输;
- 基于 Onion Routing 算法的匿名通信系统在路径建立时采用非对称密钥算法加密,在数据通信时采用对称密钥算法加密,以提高数据传输效率,降低时延;
- 基于 Onion Routing 算法的匿名通信系统采用实时复用并转发,不对通信数据进行乱序、固定输入输出流量等批处理。基于 Onion Routing 算法的匿名通信系统包括 Tor、FreeNet 等。
2.3 基于泛洪算法的匿名通信系统
基于泛洪算法的匿名通信系统是近期匿名通信传输领域新的研究热点,主要基于flooding、epidemic等类洪泛算
法实现匿名通信,目前仍处于实验室研究阶段,没有实际部署的成熟的匿名通信系统。基于泛洪算法的匿名通信系统一般
具有以下特点:
- 发起者在发起匿名传输之前完全不清楚匿名传输的路径,也无需得到传输中间节点的任何信息;
- 发起者的每一次匿名传输路径并不固定;
- 匿名通信网络中的任何一个中间节点都不知道匿名通信的发起者和接收者。
3. Tor介绍
Tor 是第二代基于 Onion Routing 算法的匿名通信系统,目前以中继节点志愿的方式广泛地部署在 Internet 中,是 Internet 中最成功的公共匿名通信服务。Tor 网络在全球有超过 1000 个的中继节点,大多数位于德国和美国,同时具有数以百万计的用户。Torproject,是其应用项目。
Tor 是基于通道 (circuit) 交换的低延迟的匿名通信服务。Tor 的设计引入了完美前向机密(perfect forward secrecy)、拥塞控制(congestion control)、目录服务(directory service)、完整性校验( integrity checking)和可配置的出口策略(configurableexitpolicies)等机制,解决了第一代基于Onion Routing算法的匿名通信系统设计的种种问题。Tor 有两种实体,分别是 Tor 用户(Tor user)和Tor节点(Tornode)。Tor 用户在本地系统中运行 Onion Proxy(OP)程序,该程序负责建立通道,接收应用TCP数据流,并将该数据流通过已建立通道传输。
通道建立过程如下。
OP 访问目录服务,得到网络中 Tor 节点的信息,包括 IP 地址、公钥、出口策略、带宽和在线时间等。
OP 随机选择三个 Tor 节点作为中继节点,分别为入口节点、中间节点和出口节点。中继节点中只有入口节点知道通信发起者的身份,因此如何选择入口节点对于保护通信发起者的匿名十分重要。中间节点知道通道中入口节点和出口节点的身份,但是不知道匿名通信发起者和接收者的身份。出口节点作为网关负责 Tor 网络和外部 Internet 网络的应用层连接,并充当加密的 Tor 网络传输流量和非加密的 Internet 传输流量之间
的中继。出口节点知道匿名通信接收者的身份。当 OP 在构建通道时,OP 和每一个中继节点协商共享的会话密钥。在这种设计下,通道中没有一个单一的节点知道匿名通信发起者和接收者的身份,因此实现了通信的匿名。
通信消息传输过程如下。
一旦建立完通道,OP 可以开始传输应用数据。OP 通过 SOCKS 协议接收应用程序数据,然后选择最新建立的通道进行传输。通信传输时,OP 将应用消息分割为 512 B 的 Cell,每一个 Cell 依次使用 OP 和中继节点共享的会话密钥进行加密,顺序如下:出口节点、中间节点和入口节点。当数据经过通道传输时,中继节点使用会话密钥进行解密,解密后传输给下一个中继节点。出口节点将消息还原为明文消息并传输给接收者。
Tor 适合于既有数据传输匿名要求,也有数据传输实时性要求的低延迟匿名通信,如 Web 访问和即时消息传输等。