兰花 - 一个通过带宽挖矿激励的完全分布式的匿名代理网络

1,728 阅读22分钟

兰花《一个通过带宽挖矿激励的完全分布式的匿名代理网络》

  • 作者: David L. Salamon, Brian J. Fox, Jay Freeman, and Gustav Simonsson with Stephen F. Bell, and Dr. Steven Waterhouse, Ph.D.
  • Version 0.9.0
  • 原文

摘要

互联网的飞速发展, 越来越多的方法和途径可以很有效的快速发现和查找个人及组织的隐私, 因此, 大众对匿名化保护隐私的需求越来越迫切。 虽然现在有些方法(如I2P和洋葱网络)被广泛采用,但是这些网络只有几千名志愿者愿意加入中继和退出节点, 这样会导致攻击者可以用很少数量的节点轻易的监视整个加密网络。我们提出基于市场的“带宽挖矿“的方法, 来激励大家加入中继和退出节点。
本文旨在描述一个一直在开发的系统。因此会实时的更新该文内容,用以描述在实施当中遇到问题而对系统的调整; 并且该系统可以灵活的使用库组件和特定的加密算法。然而, 不管怎样调整系统,系统的本质会保持目标和目的不变。
贡献包括:

  • 基于区块链(具有顺序打包交易的数据)的随机支付机制
  • 带宽销售的商品说明
  • 归纳证明一个在对等分布式系统中使得Eclipse攻击非常困难的方法
  • 在攻击者可能会将其出价作为攻击的一部分的情况下,适用于销售带宽的高效安全硬化拍卖机制
  • 完全分布式的匿名带宽市场

1. 介绍

兰花协议将带宽卖家组织成一个刚性结构化的对等(P2P)网络,称为兰花市场。客户连接到兰花市场,并向多个带宽卖家做支付,形成特定网络服务器的代理链。 代理链允许客户从全球互联网发送和接收数据。

与从全球互联网发送和接收数据的更常见的方法不同,兰花市场中的代理链自然地将关于数据的来源和目的信息分离;没有一个中继或代理同时持有两条信息,或者知道某人的身份。兰花市场的刚性结构进一步支持信息分离,提供强大的抵抗串通攻击的能力 — 一组带宽卖家克服知识分离的能力。不同于互联网数据常用的传输方法,兰花市场提供固定速率中继,以防止流量分析,并通过代币激励大家发现检举隐藏或者信息无关的参与的参与节点。在我们描述系统的细节之前,我们将简要回顾一下解决的核心问题,以及我们为系统基础选择的一般解决方案。

1.1. 信息加密传送问题

问题陈述:想象一下,你在一个充满数学家的食堂里,希望在没有任何人知道这个事实的情况下,向你的朋友发送消息。 您尚未通过指定协议传递消息,因此所有实施细节都必须向所有人公开声明。 可以怎么做呢?
Chaum在1981年提出的这个问题的一个特别优雅的解决方案是让每个人都作为一个中继和一个接收者。 在这个方案中,参与者准备加密的消息,它们是数字等效的“包含信封的信封” - 向Alice发送消息,你会计算

Enc(“T oBob 00 ||Enc(“T oAlice 00 ||Enc(message, Alice), Bob), Carol)

并将该消息发送给Carol,他们将其解密并发送给Bob,Bob将其解密并发送给Alice。 为了防止流量分析,每个周期都会发送固定数量的消息。 为了处理返回地址,我们可以让Bob和Carol记住一个唯一的消息标识符,然后沿着这一条链路发送消息。
对使用上述方法的系统特别重要的是共谋的可能性。 如果Bob和Carol合作,他们可能会决定谁发送给定的消息以及发送给谁的消息。

1.2. 女巫问题

上述食堂问题陈述使用每个人本身来防止女巫攻击 - 一个参与者可能假装是任意大量的用户的情况。 不幸的是,在数字系统中,这种方法是不能使用的。
问题陈述:我们如何知道某人在纯数字环境中是“真实的”?
这个问题的解决方案可以在Hashcash [81]中找到。如果我们要求声称是“真实的”来消耗计算资源的话,那么我们可以把女巫攻击者置于只有拥有不可思议的计算资源才有能力攻击的位置。

1.3. 随机选择问题

上述食堂问题陈述假定了一种向系统的每个其他用户发送消息的简单方法(例如,横跨自助餐厅)。为了实现最大限度地抵抗“共谋攻击”的Chaumian组合,我们需要能够从那些“真实”的中继节点中随机选择。无论何时加入或离开网络,都需要收到通知。不幸的是,在现实世界的P2P网络中,每个用户维护这样的列表将导致不可接受的网络流量(O(n 2)通知)。
问题描述 :我们如何维护所有当前“真实”中继节点的分布式列表,以最大限度地减少网络开销,并支持高效率的随机选择对等体?
Chord [81]分布式哈希表(DHT)中可以找到一个特别优雅的解决方案。 在该方案中,对等体在大空间中分配唯一的地址,然后以在O(log(n))时间内执行查找的方式连接。 添加或删除用户只需要通知O(log(n))对等体。

1.4. 系统总览

“兰花协议”的核心是上述解决方案的组合。在我们的方法中,同行们需要制作奖章来证明他们的“真实性”,然后被组织成一个称为兰花市场的分布式P2P网络。为了保持兰花市场的参与者诚实,每个同行都会检查其邻居行为的正确性。客户然后使用兰花市场为Chaumian消息转发选择随机对等体。为了激励参与,我们的客户以每转发字节为单位向中继节点支付报酬。
这想法虽然简单,但依然需要魔鬼的细节。系统要完全分散,完全自主,完全匿名,并且能做金融交易。因此,本设计文件的大部分内容集中在防止对客户安全,系统性能和系统经济性的攻击稳健。虽然攻击分析是重要的,并且将占用我们大部分时间,但最终只不过是市场运行背景下的必要条件; 如果你发现自己“迷失在森林里”,我们希望你将使用前面的总览作为你的北极星 - 系统的设计细节都是为了实现上述三个问题的真实解决方案。

2. 攻击

本文的大部分内容都是针对攻击预防,我们首先回顾一下关于这些攻击的文献对P2P网络尤其常见。

2.1. 攻击目标

2.1.1. 信息收集
兰花协议必须保卫的最大的攻击类型是 揭示有关其用户的信息。因为兰花被实现为现有互联网上的叠加层,一些信息不可避免地与一些同行共享。 在下面的列表中,这样的信息被标记为“*”。任何未被明确列出的信息在本文档中不可避免地共享,但是发现了一种方法来发现信息被称为信息攻击,并被Orchid的White Hat Bug Bounty所覆盖。有关共享内容的更多信息,请参见第8节中的协议规范和第9.2节中的串通讨论以及网络参考实现[1]。
被认为是攻击者感兴趣的数据的类型(永恒的):

  • 现实世界的身份信息。 如用户的姓名, SSN, 地址等。
  • 网站帐户信息。用户帐户在特定的网站。 注意这可以查找不同现实世界身份信息。
  • *IP信息。 用户访问兰花网络的IP地址。 请注意,在某些使用场景中,这可能等同于知道“真实世界身份信息”。
  • ethereum信息。 与用户钱包相关联的公钥和私钥。 请注意,在某些使用场景中,这可能等同于知道“真实世界身份信息”。
  • 兰花网络信息。 与兰花网络上的节点当前业务相关联的密钥(公钥或私钥)。
    被认为是攻击者感兴趣的行为信息的类型(时间和链相关联数据):
  • *客户识别。 攻击者探悉客户的IP地址。
  • *中继识别。 攻击者探悉中继的IP地址。
  • *代理识别。 攻击者探悉代理的IP地址。
  • *链接识别。 攻击者探悉到在链中使用了两个IP地址。
  • *网站访问。 攻击者探悉到兰花网络进行了outbound连接到一个特定的网站。
  • *Web服务器访问。攻击者了解到,从兰花网络到特定的网络服务器(可能会托管多个网站)进行了出站连接。
  • *以太坊联系。 攻击者了解到,一个兰花用户持有一个Ethereum公钥。
  • *购买联系。 攻击者了解到两个交易共享一个付款人。
  • *购买信息。 攻击者了解通过链发送的带宽的数量和时间。
    尽管上述行为信息在正常操作期间与兰花网络上的其他节点共享,如下所述,在大多数情况下,假设用户只有在行为信息收集时才会受到直接的伤害,如果攻击者可以快速探悉几条信息。例如,要说用户X访问了网站Y,攻击者将需要:买方识别,网站访问信息和几条链接标识。 因此,遵循参考规格的同行不会存储或共享上述任何信息,除非提供客户购买的服务所需。

    2.2. 经济攻击

    与相关系统不同, 兰花协议必须关心支付机制的攻击。本文归纳两大类如下:
    -1. 经济利益。 有利的不良行为,例如用户提供“免费样品”带宽,允许用户专门使用免费样品带宽。
    -2. 经济拒绝服务(EDoS)。 使用付款来淹没兰花网络上的另一个节点进行购买,从而使其脱机。

    2.3. 服务质量攻击

    一些对手可能会通过放慢兰花网络用户的系统性能来满足,从而潜在地减少使用。

    2.4. 中间人攻击

    只有在两个互动方之间插入自己才能执行的操作统称为中间人攻击。可以记录加密的信息用于分析元数据(第2.8节),而非加密数据可能另外被更改为控制行为。如果密钥交换没有得到保障,中间人也可能会欺骗双方使其错误地认为攻击者的密钥是对方的密钥。

    2.5. 女巫攻击

    伪装成多个用户执行恶意行为称为Sybil攻击,使被攻击者承受多方伪装用户的假冒数据。这种攻击的应用包括:
  • 向Yelp, Amazon 等平台提供多个reviews。
  • 通过假装是多个倾听者来实现BitTorrent从而可以快速下载[72]。

    2.6. 日蚀攻击

    在日蚀攻击中,攻击者的目标是隐藏系统的一部分。 采用的方法是一般网络相当于特权升级攻击:获得网络位置的控制权更多地控制网络,然后使用该控制来获取更多的控制权。
  • 比特币的p2p,所有节点都是平等地位,端口数是有限制的,需要”51%”攻击的比特币网络把临近节点的端口数全被攻击者给占用,以致用小于51%的算力通过欺骗临近节点加入自己的网络,对比特币形成“51%“攻击。
  • 通过接管与磁链接相关联的地址空间,从BitTorrent DHT中删除文件[83]。

    2.7. 拒绝服务攻击

    拒绝服务攻击即是攻击者想办法让目标机器停止提供服务。 “意外”情况下的系统行为通常指定和测试不足。 DoS攻击对P2P网络中的节点进行去匿名化是非常有用的。
  • 对特定目标DoS攻击结合女巫攻击来监测Tor的流量从而获悉匿名化的信息[53]。
  • 只需要20个女巫节点,Dos就能 完全可以泛滥式攻击I2P的数据库使其脱机,从而对网络上的所有流量进行归档。

    2.8. 推理攻击

    源于系统行为的统计建模的去匿名化被称为推理攻击或监视攻击。这些通常与精心制作或定时的“探测动作”相结合请求或其他攻击,例如DoS将特定对等体脱离网络并观察流量模式
    响应。
  • 从SSL加密的Web流量推断医疗疾病、家庭收入和最终用户的投资选择[ 58 ]。
  • 来自全球传输日志的Tor,I2P和兰花流量的分析去除匿名[60]。
  • 通过时序分析学习OpenSSL服务器的私钥[55]。

    2.9. 黑客

    通过将历史上可信赖的对等体转换为攻击向量,激励的攻击者可能会直接危及网络上的节点。当使用链部署带宽时,迭代黑客可能最终允许攻击者“回溯”连接。这种攻击具有重要的安全隐患,但不符合兰花网络的范围。 如果兰花网的设计达到目标,这将是对系统用户的主要攻击。

    3. 可替代的方法

    3.1. 不受保护的互联网访问

    在没有保护的情况下访问互联网的用户将其完整的浏览历史记录和网站使用情况提供给ISP,然后他们可以共享或出售该数据。

    3.2. 虚拟专用网络(VPN)服务

    虚拟专用网(VPN)使用加密技术将VPN用户的流量安全地传输到更大的不安全网络。 一旦VPN接收到流量,它将被解密并通过不同的大型不安全网络重新传输。 重传可以帮助用户规避网站的访问限制,并在较小的程度上减少对他们网站浏览习惯的跟踪。加密防止用户的ISP看到他们的流量,从而防止监视攻击。 这是通过使VPN成为用户的新ISP来实现的。 以前ISP可以执行的任何攻击都可以由VPN提供商轻松执行。
    VPN用户不应该认为他们的VPN提供商是值得信赖的。 尽管VPN服务提供商面临比ISP更多的竞争,但他们最终从相同的来源获得人才,并且具有类似的带宽 - 强制型商业模式。 VPN提供商不可能不会受到导致用户不信任他们的ISP的同样的激励。 另外,在VPN设置中重复使用IP地址来中继流量,可以相对容易地阻止商业网站的使用[13]。

    3.3. Tor

    Tor [61]是一个免费软件项目,以向更广泛的受众介绍洋葱路由的思想而闻名。 在这个系统中,用户下载一个中继和出口节点的全局列表,随机从列表中选择,并从他们的选择形成洋葱路线。 洋葱路线是中继的有序列表; 为每个对等体轮流发送的数据包依次加密,确保每个节点都必须收到一个数据包才能被出口节点理解。结果是,除非有多个节点被同一个用户入侵或运行,否则两个中继都不知道谁发送了一个数据包,也不知道它到了哪里。

    4. 扩展库

    兰花的功能是建立在几个重要的组件上。 由于一些读者可能不熟悉这些原语,或者不熟悉兰花网络中使用的特定属性,我们在这里简要总结一下。

    4.1. WebRTC

    WebRTC [48]是最初设计用来促进Web浏览器之间实时通信的系统。 它提供了优秀的NAT和防火墙穿越方法,包括STUN,ICE,TURN和RTP-over-TCP。 通过选择WebRTC作为我们网络协议的基础,而不是定制编码的TCP和UDP网络代码,我们都获得了这些技术的世界级实施,并且(在一定程度上)将用户的流量掩盖为一般的网络流量。

    4.2. NACL

    NaCL [49](发音为“salt”)是Daniel J.Bernstein等人的一个密码学库,专注于构建构建高级加密工具所需的核心操作。 它被选为这个项目的密码原语的来源,因为它和它的作者的英镑声誉。 下面介绍的所有加密操作都是使用NaCL实现的,除了以太坊智能合约加密代码。

    4.3. 以太坊

    以太坊[56]是一个分散的区块链平台,包括一个本地货币(ETH)和Turingcomplete智能合约。 这些智能合约对于Orchid的设计非常有用,使我们能够减轻与追踪付款余额有关的大量设计问题,以及Orchid付款门票的验证和公正性。

    5. 奖章

    完全分散的,完匿名的数字系统遭受单个恶意用户假装成千上万用户(Sybil攻击)的攻击。
    为了打击这类攻击,兰花协议使用奖章 - 数据表明给定的公钥在给定时间拥有相当数量的计算。 由于计算是一种昂贵的资源,因此使用奖章会对给定的攻击者假冒多个用户的能力造成预算限制。

    5.1. 奖章规则

    为了生成奖章,对等体采用公钥K,并且最近的以太坊块哈希E,然后(迭代地或并行地)定位盐S,使得H(K,E,S)≥ N,其中N是一些 难度缩放因子。
    因为它是特定的密钥,所以不能用来模拟多个公钥。 因为它被绑在一个以太坊块哈希,不能预先计算。

    5.2. 证明类型的选择

    熟悉其他基于分布式市场的网络的读者将会认可Medallion在工作证明系统(比特币等)的前提下是相似的,并且可能会倾向于问:为什么不使用权益证明(proof-of-stake), 空闲证明(proof-of-idle),还是其他不那么有力的浪费方法来证明“真实性”?
    权益证明取决于没有攻击者将控制大多数代币的假设。 由于我们的攻击模式包括压迫政府,这是不能指望的。 即使比特币的惊人的市值也远远低于一个中等规模国家的国内生产总值。更为复杂的是,在不久的将来,我们打算将这个系统扩大到支持匿名支付,这将使得发现这种“敌意收购”变得更加困难。简而言之:我们并没有使用权益证明,因为我们不想设计一个系统,让我们的用户的隐私权可以出售给出价最高的人。
    空间证明(proof-of-space)看起来更有趣。尽管我们不确定将找到合适的方法,但我们会在即将到来的兰花协议版本中使用空间证明。 例如,这将允许用户在家中安装旧的智能电话作为中继和代理。有关这个想法的更多信息,请参见15.1节。
    空闲证明基于额外的假设,即周期性同步工作证明足以证明用户对全局计算能力的分享。
    遗憾的是,在网络尚处于起步阶段(少于1,000万传播者)的情况下,任何一家控制超级计算中心的公司都只要牺牲1%的计算能力就能控制网络。正如我们所指出的,在我们没有拥有足够数量的传播者之前,我们不会使用空闲证明。

    6. 奖章式工作证明

    奖章构成了我们核心安全假设与整个网络之间的桥梁。由于我们的基本安全目标是限制激励攻击者获得对兰花网络的控制权,因此我们选择的奖章创作必须符合以下条件:
  1. 对于非恶意节点来说,创建奖章必须非常容易。
  2. 奖章必须很容易验证。
  3. 奖章必须难以批量创建。
    有了这些条件,我们将难度定义为在时间和金钱上的高度可伸缩性。 简而言之,我们需要一个工作证明系统,在这个系统中,一个正常的节点很容易进入网络,但攻击者难以进入网络。 我们将讨论我们选择的工作证明,而不是其他方法,例如权益证明或者空间证明。
    目前存在两种主要的方法来满足上述要求:质询-响应协议和加密难题。不幸的是,质询- 响应协议可能不能在兰花模型中提供足够的安全性,因为攻击者可能通过合谋预先计算质询并作出响应。这留下了今天有很多存在的加密难题[51,76],每个难题都有自己的权衡。同样,为了满足兰花的要求,只有这些密码拼图的一个子集是合适的。也就是说,平行化的密码拼图,制作成ASIC,或平凡地缩放这样的手段是非常困难的。最近,研究人员发现了一些算法,可以产生易于验证的结果,这些结果具有可调的创建难度[51]。这些算法集合利用了内存和总硅片面积昂贵的趋势[46,62]。这类算法被称为不对称记忆硬功能,我们用它们来创建奖章。这些功能有几种类型[51,73,82],但我们选择使用Equihash。Equihash基于k-XOR生日问题,通过时空折衷方案提供记忆硬度。由于Equihash是可调的,简单的,基于NP问题,并且已经在加密货币社区中被接受,所以我们相信使用这样的函数作为我们的工作证明基础提供了可接受的安全性和面向未来的水平。
    为了产生奖章,一个同伴拿一个公钥K,以前的以太坊块散列E,然后进行一系列的计算,以便定位一个盐S,使得F(K,E,S,…)≥N 其中N是一些难度缩放因子。 当一个新的以太坊块被添加到链中时,必须计算一个新的S来保持当前的奖章。

7. 支付

7.1. 兰花支付需求

支付带宽是一个相当独特的挑战。 在大多数其他支付系统中,物品的成本远远高于发送包的成本,因此联网成本可能被安全成本忽略,被包括在交易成本中。然而,在兰花网络中,一个包的成本就是支付的价格,所以即使支付的交易成本低于一个包,它们的购买成本也是相同的。
因此,我们要求交易费用足够低,以便用户可以(自动通过Orchid客户端)支付任意数量的中继流量,直至单个数据包。除了低交易费用之外,支付机制必须足够精细,以至于可以进行微支付甚至纳支付。这不仅要求支付机制的效率,而且要求支付基础物品或可核实记录的可分性。
由于兰花网络的目的是为了摆脱网络监控和审查制度,支付机制的其他要求还包括不可靠,匿名,不依赖于可信任的第三方。即使底层网络不受监视和审查,如果付款机制不是,那么它就将使得用户可以被审查和跟踪。同样,可信赖的第三方可能在影响支付提供商的国家行为体和其他强大实体的干涉之下暴露兰花网络暴。
因此,兰花网络的支付需求包括:
1. 不可伪造性,只有拥有付款接受的抵押物品或可核实记录的所有者才能够使用它进行付款。 2. 可用性,意味着没有人可以阻止用户发送兰花付款,也没有人可以阻止收款人收到付款。
3.不可逆转性,即使是付款方,也不可能扭转过去的付款。 4.匿名,定义为发件人和收件人的不可链接性,无论是按帐户地址,金额还是时间,都找不到用户信息走过的痕迹。 理想情况下,匿名会达到如下的效果: 不仅是在恶意的观察者的攻击下,还是发送者或接收者的恶意攻击下,都能是匿名的。
在下面的章节中,我们将讨论支付的潜在解决方案,牢记这些要求。我们会辩证的去讨论,兰花支付(7.12节)完成除匿名要求以外的所有内容。下面,我们继续讨论支付匿名,效率的扩展和改进,并使计划更加非互动。