我们提供类似Tor的洋葱路由和隐私保护。我们在学术上使用自组织(没有服务器)-纯P2P方式。
我们已经在Tribler中实现了Tor有线协议的主要部分。我们不使用Tor使用的TCP协议,而是使用UDP协议,以便能够进行NAT穿越。我们已经使用此Tor变体创建了我们自己的网络,我们的代码与普通Tor不兼容。我们使用基于UDP的端到端拥塞控制。逐跳拥塞控制是ToR速度慢的主要原因之一。我们工作的关键部分是让每个匿名下载的人也成为接力者。我们的工作将BitTorrent针锋相对的想法带到了飞镖上。你帮助别人匿名来获得你自己的隐私。
弱点:我们不提供与Tor相同级别的匿名性,去中心化会削弱安全性。
免责声明:Tribler是独立于Tor®匿名软件生产的,不保证Tor Project的质量、适用性或其他任何内容。
创建过程通过发送创建消息来启动。当电路接通时,有两种截然不同的情况。在第一种情况下,发起者发起电路的创建。在第二种情况下,电路的末端应发起者的请求创建电路,扩展原始电路。CREATE的当事人不能区分这两种情况,这一点很重要,否则可以很容易地确定发起人的身份。当发起者想要创建新电路时,它向第一跳发送创建消息,该消息包含发起者分配给该电路的电路ID。当第一跳接受创建请求时,它发送回创建消息作为确认。
创建每当节点想要创建新电路时,它都会将创建消息发送到第一跳。
扩展当节点想要扩展其电路时,它会沿着电路发送扩展消息。
扩展如果电路已扩展,则扩展的消息将传播回源。
节点之间的数据传输使用数据分组来完成。如果数据包不能路由,它将通过直接线路发送,发送节点充当出口节点。
下面显示的是洋葱的加密和解密。我们使用简单的Socks5接口与电路通信。
每次用附加节点扩展电路时,电路的创建者和要用来扩展电路的节点随机地生成新的密钥对。接下来,两个节点交换创建/创建消息,这些消息用于彼此通知它们各自的公钥。一旦此过程完成,通过使用曲线25519椭圆曲线Diffie-Hellman来商定共享密钥。
建立共享密钥后,所有后续数据包将使用AES-GCM-128进行部分加密。分组报头是未加密的,并且仅由电路标识符组成。数据包内容始终是加密的。对于每条消息,其内容被加密为单独的GCM流。为了防止IV重复使用,IV由计数器和在密钥协商期间确定的固定部分构成。上行和下行流量使用不同的密钥。根据电路标识符和节点在电路中的位置,有五种不同的方法来解密传入的数据包:
·电路标识符+发送方组合未知使用接收方的私钥解密数据包。Drop Packet iunEncrypted Packet不可读或不是CREATE PACKET。
·电路标识符+已知的发送者组合,电路中的最后一个节点使用AES和接收者知道它与电路标识符共享的秘密对数据包进行解密。可能的数据包类型:数据请求或扩展。
·电路标识符+发送器组合已知,电路中的第一个节点从端点到电路中的第一个节点与AES和对方知道它与电路中的每一跳同时拥有的共享秘密同时解密数据包。可能的数据包类型:扩展或中继。
·电路标识符+已知的发送方组合,方向端点使用AES和接收方知道它与电路标识符共享的秘密对数据包进行解密。可能的数据包类型:中继。
·电路标识符+已知的发送方组合,方向发起方数据包使用AES和接收方知道其与电路标识符共享的秘密进行加密。可能的数据包类型:RELAY。电路的发起方是电路中唯一启动数据包传输的节点。根据数据包类型和电路状态,发送的数据包始终是加密的。
我们试图通过在大学超级计算机集群上运行的测试框架、几次大规模试验和简单的单元测试来消除错误、问题和性能问题。
2013年11月,我们的第一个里程碑是使用简单的未加密中继实现5兆字节/秒的下载速度。
在2013年12月的一次成功的小规模试验中,匿名下载BitTorrent群进行了测试。
2014年3月21日,使用8跳(即8层加密)进行压力测试。令人惊讶的是,在如此繁重的CPU测试和几乎没有代码优化的情况下,我们甚至获得了147KByte/秒。
TriblerV6.3版本包括通过大约8个洋葱电路进行匿名测试下载,每个电路3跳。总共下载了50兆字节,测试了该方法的加密效率、下载速度和健壮性。
对于TriblerV7.0的大版本,我们将提供任何内容的通用匿名下载和流式传输。去年2月,我们原则上已经开始运作了。然而,还需要进行更多的试验和测试,以确保IS将扩展到潜在的100多万用户。
我们使用我们的Jenkin服务器进行自动测试,当前代码在所有加密都被禁用的情况下能够获得5兆字节/秒的吞吐量。在适度的硬件上启用加密后,这将降低到0.5兆字节/秒。明确需要改进的地方。一项新的Beta功能使加密层可以容忍丢包。
我们在Tor社区出色的工作基础上再接再厉。不幸的是,去中心化使得我们的方法比最初的Tor协议加网络更弱。Sybil攻击是当前匿名流设计中的一个已知弱点。我们对Sybil攻击防御进行了多年的研究。然而,单个开发人员需要一整年的时间才能实现这些想法。欢迎志愿者!