作者:DAOrayaki区块链似乎是适用于线上投票的完美技术。它们可以充当“公告板”,即在几十年的电子投票研究中被假设(但从未真正实现)的全球分类账。更妙的是,区块链使智能合约成为可能,它可以自主地执行链上选举,并排除选举机构。但不幸在于,智能合约不仅适用于选举,也同时为买通和贿选(vote-buying)创造了良好条件。在这篇博文中,我们将解释如何以及为什么如此。作为案例分析,我们将介绍一个完全实现的、针对流行的链上CarbonVote系统的简单贿选攻击。我们还将讨论可信硬件是如何实现更强大的买通技术的,这些技术即使在最先进的加密投票协议下似乎也难以解决。最后,我们引入了一种称为Dark DAO(黑暗DAO,去中心化黑暗组织)的新攻击形式,不要与“Dark DAO”混淆,就像DAO不应与The DAO混淆一样。黑暗DAO是一个去中心化的卡特尔,它不透明地(也就是“在黑暗中”)在链上买票。我们提出了一个基于Intel SGX的具体实施例。在这样的攻击中,可能没有人,甚至DAO的创建者,可以确定DAO的参与者数量、承诺用于攻击的资金总额或攻击的确切逻辑:例如,黑暗DAO可以攻击代币项目如Tezos,暗中收集其代币,直到它达到一些隐藏的阈值,然后告诉其成员做空。像这样的黑暗DAO还具有通过发送例如可否认的空头通知来执行信息不对称的独特能力:卡特尔内部的成员将能够验证空头信号,但他们自己可以产生看似真实的虚假信号,并发送给外人。信任最小化的买票和黑暗DAO基元的存在,意味着所有链上投票的用户都容易受到财阀和胁迫力量的束缚、操纵和控制。这直接意味着所有的链上投票方案,如果用户可以在受信任的环境之外生成自己的密钥,就会内在地退化为财阀制。这种模式被公认全面劣于民主模式,而这种协议试图在链上趋近民主模式。我们所有的方案和攻击都是在不考虑身份控制的情况下进行的,允许用户的行为被自由买卖。这意味着依赖于用户生成的与用户身份绑定的密钥的方案,如uPort或Circles,在本质上和根本上也容易受到财阀的任意操纵。我们的方案也可以被重新利用来攻击股权证明或工作证明的区块链,并从中获利,而这对所有区块链都有严重的安全影响。当今的区块链投票机制如今,区块链投票计划比比皆是。Votem是一种端到端的可验证投票方案,允许使用移动设备进行投票,并利用区块链作为安全发布和统计选举结果的场所。流行的智能合约IDE Remix提供了一个选举管理智能合约作为其训练示例。链上投票面临许多挑战,其中包括隐私、延迟和扩展。这些都不是投票这一机制本身所特有的,而且所有这些最终都是可以克服的。而投票买通又是另一回事。在政治体系中,买通投票是一种普遍且具有腐蚀性的选举欺诈形式,在世界各地破坏选举诚信的历史悠久。有时,买通的成本只相当于一杯啤酒。值得庆幸的是,正如学者们所观察到的,正常的市场机制通常会在买票中崩溃,原因有三。首先,买票在大多数情况下是犯罪。在美国,根据联邦法律,这会面临处罚。其次,在使用秘密投票的情况下,很难执行合规。选民可以表面上接受您的贿赂(简单地喝下您的啤酒),然后根据自己的喜好秘密投票。第三,即使选民确实出售了他们的选票,也不能保证对方会支付。在区块链系统中不会出现这样的障碍。使用同样强大的选举管理工具:智能合约,可以有效地运行买通市场。与往常一样,化名和管辖权的复杂性为起诉提供了(一些)保障。一般来说,电子投票计划在某些方面比亲自投票更难防止欺诈,并且多年来一直是学术界所感兴趣的主题。David Chaum早期引入了一个基本构建块,为消息提供匿名混合网络,这些消息可以由参与者匿名发送并收到包含的收据。这种端到端的可验证投票系统,用户可以在不牺牲隐私的情况下检查他们的选票是否正确计算,不仅是理论家的领域,而且实际上已被用于具有约束力的选举。Benaloh和 Tuinstra后来的工作对电子投票计划提出了质疑,指出他们向选民提供了一份“收据”,提供了给定投票方式的加密证明。这将允许极其高效的买通和强制,这显然是不受欢迎的属性。作者定义了一个新的属性,即收据自由,来描述不可能进行这种加密证明的投票方案。Juels、Catalano和Jakobsson的进一步工作模拟了更强大的强制对手,表明即使是无收据的计划也不足以防止强制和购买选票。这项工作为投票方案定义了一个新的安全定义,称为“强制抵抗”,提供了一种协议,恶意方无法以可能改变选举结果的方式成功胁迫用户。在工作中,Juels等人指出,“我们的构造的安全性依赖于……由受信任的第三方生成密钥对,或者,依赖于参与者之间的互动的、计算安全的密钥生成协议”。这种 “可信的密钥生成”、”可信的第三方 “或 “可信的设置 “的假设是抗胁迫投票方案的学术文献中的标准。不幸的是,这些要求并没有转化为无权限模型,在这种模型中,节点可以在任何时候来回走动,而不需要事先了解对方。这(在某种程度上)自然意味着用户在所有此类部署的系统中生成自己的密钥,并且不能利用可信的多方密钥生成或任何集中的密钥服务仲裁者的优势。如今的区块链空间,以可预见的结果,会继续其忽视数十年研究的传统,而选择实施最天真的投票形式:以暴发户的方式直接计算代币加权的投票,以纯文本形式存储在链上。不幸的是,目前还不清楚在链上是否可以实现比这种暴政更好的投票。我们表明,无权限模式从根本上说对投票是不利的。尽管有任何基于身份或第二层的缓解尝试,所有无权限投票系统(或允许用户在不信任的环境中生成自己的密钥的方案)都容易受到相同风格的买票和胁迫攻击。许多买票攻击也可用于胁迫,通过武力将用户束缚在特定的投票选择上。“你的这个链上投票很不错……”值得注意的是,Vitalik Buterin部分探讨了此类协议中贿赂攻击的严重性,但并未提供具体机制。本文描述了对投票、身份购买、强制和高级协调有用的无摩擦机制,并讨论了这些特定机制的含义。攻击的不同特点考虑一个非常简单的投票方案:一个代币的持有者每持有一个代币就可以获得一票,并且可以不断改变他们的投票,直到某个结束区块编号。我们将使用这个简单的“EZVote”方案来建立我们的攻击如何在任何链上投票机制中工作的直觉。这种方案有几种可能的升级攻击方式。(1)简单的智能合约对链上投票系统的最简单的低协调攻击涉及买通智能合约。此类智能合约将简单地根据对一个选项的可证明投票(或参与投票,或如果投票不是匿名的则弃权)向用户支付费用。在EZVote中,智能合约可以是一个简单的合约,将你的ERC20保留到结束日期之后,投赞成票,然后将其返还给你;合约中的所有保证都可以由底层区块链强制执行。这种方案的优点在于它只需要底层系统中已经固有的信任假设,但也有很大的缺点。一方面,在选举结束后有可能公开多少选票被购买,因为这是处理当今智能合约系统中的支付流所必需的。此外,贿赂的平台天然性质使其受到有兴趣维护底层平台/系统健康的各方的审查。根据投票方案和底层协议的性质,可能有一些解决这些缺点的方法。例如,选民可以向投票购买者提供环签名(ring signature),证明他们在投赞成票以换取付款的选民名单中。我们将这些方案的实现细节和通用性保持开放。一般而言,任何用于私人智能合约的机制也可以用于私人投票购买,解决基于智能合约的攻击的公共性;在密码学上,等价物是投票买方和卖方通过MPC一起生成用于资金存储的密钥,签署两笔交易:同意投票和在间隔结束后向投票卖方释放资金的交易。只有在拥有保证退款和付款的交易后,投票卖家才会将资金转移到该密钥。这看起来类似于以前在分布式证书生成方面的工作,增加了安全分析以确保公平性。这种方案的简单实施将阻碍用户在投票期间将资金用于其他目的(此类行为是可能的,但需要代表投票购买者的合作;或者,可以使用受信任/保税托管方)。可信的硬件购买一个更令人担忧的投票购买攻击方案涉及使用可信硬件,例如Intel SGX。此类硬件具有称为远程证明的关键功能。本质上,如果Alice和Bob在Internet上进行通信,则SGX实现的可信计算允许Alice向Bob证明她正在运行某段代码。可信硬件通常被视为证明您运行的代码不是恶意代码的一种方式:例如,它在DRM中用于证明用户不会复制仅临时授权给他们的文件,如电影。相反,我们将使用可信硬件来束缚加密货币用户,支付或强迫他们使用基于可信硬件的加密货币钱包,这些硬件可证明限制了他们允许行为的空间(例如,通过强迫他们在选举中不以某种方式投票)或允许买通者信任最小但限制使用用户的密钥(例如投票购买者可以强迫用户签署“我投票A”,但不能窃取或花费用户的钱)。将此类技术用于投票购买的最简单方法是简单地允许用户证明他们正在运行投票购买者的恶意钱包代码以换取付款,双方通过远程认证技术进行保护。将此类技术用于买通的最简单方法是允许用户证明他们正在运行投票购买者的恶意钱包代码以换取付款,双方通过远程认证技术进行保护。在我们的“EZVote”示例中,用户只需使用加载在Intel SGX上的加密货币钱包,运行投票购买者的程序。SGX将向用户保证钱包永远不会窃取用户的钱(除非英特尔与投票购买者勾结)。用户可以证明可以使用钱包来做他们可以用普通以太坊钱包做的所有事情,包括将他们的钱转出去(尽管在这种情况下他们不会得到报酬)。用户运行自己的钱包,不需要信任第三方来控制或安全他们的资金。用户甚至可能不需要信任英特尔或可信赖的硬件供应商来保证他们的资金安全,因为他们可以编译自己的钱包!当预定义的触发条件发生时,这样的SGX程序会根据投票买家的命令自动对EZVote进行投票,并向投票买家发送收据。买通者本身将运行一个SGX飞地,该飞地维护声称已投赞成票的所有用户的总数,以及他们的地址列表。鉴于对新交所的信任,买通者无需查看会员用户的完整列表或知道总质押金额。在投票结束时,投票买家的飞地将支付所有没有移动资金或更改投票的用户。这将通过enclave定期发布Merkle根来完成,总结要在链上支付的用户,向每个用户提供他们最终将获得支付的证据。用户可以通过提供包含在已发布的Merkle历史记录中的证明,在某个时间段到期后要求付款。在一些特别容易受到攻击的投票设计中,SGX enclave可以通过简单地预先收集用户的“同意”投票作为交易、在投票结束时发布并为他们提供付款来提高其效率。隐藏的可信硬件卡特尔(Dark DAO)当受信任的硬件与DAO的理念相结合时,就会出现更令人担忧的攻击,从而产生一个以操纵加密货币投票为目标的去信任组织(trustless organization)。一个基本黑暗 DAO的例子上图概述了一种可能的架构。买通者将通过运行SGX飞地网络来支持DAO,这些飞地本身执行共识协议(此处显示为乌云以表明其从外部不可见)。用户将与这个飞地网络进行通信,并提供证据证明他们正在运行“买通贿赂”(例如)以太坊钱包,当前余额为X个硬币。这个“邪恶的钱包”证明运行了买通者支付的攻击代码,而买通者证明他们运行的代码保证在攻击结束时支付给用户(可能与基于智能合约的协议结合使用,在加密经济上加强了活力和诚实)。买通者可以通过系统跟踪承诺投票的总资金数量,使用新交所内置的隐私功能向外界隐藏这一事实。用户可以通过参与这样的系统获得可证明的支出,在基于新交所的去中心化交易所中实现类似于全有或全无结算的财产。买通者可以获得可证明的保证,即客户永远不会发出与他们想要的投票政策相矛盾的投票。使这样一个组织变得黑暗的是,买通者不需要向任何人(甚至可能是他们自己)透露有多少用户参与了系统。该系统可以简单地积累用户,为运行攻击者的自定义钱包软件向用户付费,直到达到激活攻击的某个阈值(例如此类软件持有的硬币);以这种方式,不需要检测失败的尝试。更具破坏性的是,任何小用户的个人激励明显指向加入系统。如果小用户认为他们的投票无关紧要,他们可能会在没有感知到边际下降的情况下获得回报。在链上投票中尤其如此,根据经验观察到投票率极低。不投票的用户可能是出售选票的理想目标。黑暗DAO运营商可以通过对买通者实际反对的选择发起攻击,将其作为潜在的虚假标记操作或抹黑活动来进一步搅浑水;例如,Bob可以运行一个有利于Alice的Dark DAO,以使Bob认为他可能会失败的选举结果合法化。激活阈值、支付时间表、全面攻击策略、系统中的用户数量、向系统承诺的总金额等都可以保密或选择性或全局公开,使此类DAO最终可以针对结构化的激励变化进行调整。由于该组织存在于链外,因此区块生产者或其他系统参与者的卡特尔无法检测、审查或阻止攻击。这样一个黑暗的组织有几个直接的实际缺点。首要的是,要在Intel SGX上使用,需要英特尔授予许可,这对于恶意软件来说不太可能发生。此外,Intel SGX 中的侧信道、隐藏的软件后门或平台攻击或Dark DAO钱包的审计都可能削弱该计划,尽管随着可信硬件的不断进步和发展,此类攻击的成本很可能会大幅增加。最终,我们希望其他可信硬件能够提供Intel SGX 的远程认证功能,这意味着此类攻击将不需要SGX;这就是我们将“SGX”与“可信硬件”互换使用的原因。例如,在某些Android安全处理器上可以实现远程认证。我们的方案适用于任何允许机密数据和远程证明的硬件设备。对经典方案的攻击:CarbonVote 和 EIP999为了证明这些选票购买策略的有效性,我们首先查看在现有加密货币系统中执行的治理关键型投币。也许最重要的此类投票是DAO CarbonVote。这次投票的操作很简单:账户汇款到一个地址投赞成票,另一个投反对票。每个地址都是一个合约,记录了给定地址的投票。然后CarbonVote前端会统计投票数,并显示所有投赞成票和/或反对票的账户的净余额。后来的投票取代了之前的投票,允许用户改变主意。在投票结束时,对支持情况进行了快照,并用于衡量社区情绪。这种投票方式被重用于其他有争议的生态系统问题,包括EIP-186。该框架中一种可能的信任最小化投票购买智能合约涉及使用托管;用户将以太币发送到ERC20代币合约,该合约持有以太币直到投票结束。对于他们存入的每个以太币,用户将获得1个VOTECOIN。合约预先编程为在投票结束时投票赞成,持有100%的用户以太币。投票结束后,每个VOTECOIN代币都可以全额退还创建它的原始以太币。用户取回他们的原始以太币,以及投票购买者希望为这项服务向他们支付的任何贿赂。我们已经实施了此类合同的完整开源概念证明,使任何投票购买者都可以向合同的BRIBEPOOL提供资金。用户可以通过在合约中临时锁定他们的Ether来从BRIBEPOOL支付,并且可以在目标投票结束时收回100%的Ether。攻击可以预先从BRIBEPOOL中支付给投票卖家(一旦他们锁定代币,投票就得到保证),随着时间的推移作为红利,或两者兼而有之。为 DAO Carbonvote 购买以太坊智能合约的投票代码用户还可以在锁定他们的Ether后出售他们的VOTECOIN,基本上使VOTECOIN成为一种代币化的投票购买衍生品。然后,投票卖家可以立即将资金锁定所带来的任何风险卸载给对投票结果漠不关心的各方:因为每个ERC20都以编程方式保证最终收到所有原始ETH,这基本上从基础资产转化为专用于以预定义方式投票的衍生资产。如果保证非负收益,对投票结果不感兴趣的买家应该始终锁定他们的ETH,并且基本上可以选择稍后卸载给其他同样不感兴趣的买家。如果BRIBEPOOL的红利除了预先支付之外,还会随着时间的推移支付给VOTECOIN,这些衍生代币甚至可以用来推测攻击本身是否成功。这个智能合约可以通过使用诸如Town Crier之类的预言机来简化(也可以组合多个预言机、预测市场等)。因为CarbonVote系统会在Etherscan上发布包括完整选民日志在内的结果,所以使用任何外部网络抓取预言机检查某人的投票方式相对简单,如果最终快照中包含的投票符合买家的偏好,则支付。也可以轻松使用类似Dark DAO的模型。每个用户只需运行一个钱包,在每次转账交易后的某个时间,它也会在CarbonVote上以所需的方式投票(实际上这可能成为许多钱包的标准行为)。用户只有在此类投票被登记后才能获得报酬,因此激励用户确保此投票交易包含在链上。网络无法确定给定的CarbonVote中有多少票是由此类投票购买卡特尔产生的,以及有多少是合法的。这些计划中的任何一个固有的是在将资产汇集到多个投票购买者时最小化信任的能力;贿赂智能合约可以简单地允许任何人向BRIBEPOOL付款,而新交所网络的架构也可以类似地开放参与。一些方案,例如EIP999投票,存在更严重的问题。在这些方案中,如果用户投票两次,则选择较晚的投票。一种简单而严重的攻击是简单地收集用户对“是”和“否”投票的签名,在选举期结束时向所选签名发送垃圾邮件,并依靠压倒区块链的能力来确保大多数此类选票持续。或者,因为合约部署者能够为给定合约中的所有资金投票,另一种攻击是简单地强迫用户在投票期间使用基于合约的钱包,该钱包由买通者部署,然后他们可以任意控制所有锁定在合约中的资金的投票权,而无需保管这些资金。比特币也不能幸免。比特币社区通常依赖投币投票,并且可以应用类似的买通方案(如本作品中的以太坊智能合约,或Dark DAO风格;比特币本身不提供对足够丰富的合约购买选票的原生支持)。超越投票——攻击共识精明的读者可能会指出,所有无许可区块链本质上都依赖于某种形式的无许可投票,即共识算法本身。每次区块链就状态的某些属性达成全球共识时,发生的事情本质上都是在无许可设置中进行的无许可(通常是硬币或PoW加权)投票。在这些情况下,“买通”已经进行了一些探索,这也许并不奇怪。例如,以太坊上的智能合约可用于通过审查、历史修订或激励空块来攻击以太坊和其他区块链。这种攻击直接作用于工作量证明投票本身,根据他们的加权工作贿赂矿工。几乎没有理由相信权益证明系统会免受类似攻击的影响,尤其是在存在复杂的委托投票结构的情况下,这些结构的激励可能不明确,其正式分析可能不完整或不存在。与我们探索用于购买投票的Dark DAO相关的一个令人不安的概念是我们将其称为“Fishy DAO”,以经典Flash游戏命名。在这个(超级有趣!)游戏中,您从一条小鱼开始。规则很简单;您可以吃较小的竞争对手鱼,但不能吃与您相同或比您大的鱼。每顿饭后你都会变大一点,直到你最终(如果你幸运的话)成长为主宰海洋。一个不需要Flash并添加网络的现代类似游戏是agar.io。就像 Fishy,但小鱼也可以与大鱼结盟!Fishy DAO将使用上述类似Dark DAO的技术来为区块链做同样的事情。使用SGX,Fishy DAO成员可以在达到攻击阈值时收到不可转让(DAO成员可以验证消息真实性,但非成员无法判断消息是否伪造)的通知,允许他们在此类攻击发生前不久做空货币市场。每一次区块链Fishy DAO攻击都为Fishy DAO带来了一些利润,即使是失败的攻击也随之而来的宣传使Fishy DAO因追求利润但可能不道德(在某些框架中)而臭名昭著。如果Fishy DAO未能达到要求的阈值,Fishy DAO只会消失并退还其参与者,可能但不一定会烧掉他们的一些钱来激励他们招募参与。Fishy DAO需要Dark DAO技术,就好像用智能合约公开执行一样,可观察的参与率将为底层区块链的价格提供市场信号,通过允许风险定价来使攻击无利可图。正是DAO成员和更广泛的生态系统参与者之间的加密可执行的信息不对称,使这种攻击成为可能。其他的应用请注意,Dark DAO的影响远远超出上述范围。例如,一个Dark DAO旨在以盈利方式购买用户的基本收入身份,以少量费用预先支付以获得用户的常规基本收入付款。或者一个Dark DAO,通过从信用良好的用户那里租用(以最小的信任限制)此类密钥,以通过基于密钥的身份进行信用检查。或者是一个运行邪恶矿池的Dark DAO,可以证明攻击基于ASIC的工作量证明加密货币,其攻击池的规模可能无法检测到,不可阻挡。还可以想象,有了身份,身份系统本身可能就有针对购买行为的社会保障。例如,某些身份系统可能允许用户亲自出现以撤销或管理身份,这可能会在社会上规避针对身份盗用的自动化技术保护措施。仍然有办法解决这个问题:贷款的经典解决方案是通过抵押品。潜在的像企业这样的“担保人”也可以通过物理/法律恐吓和合同为无法负担抵押品的用户提供社会还款保证。如果这种无需许可的基本收入系统与当前的市场系统一起部署,发薪日贷款和保释金机构将非常适合这类业务,至少在美国是这样(在许多其他地方,可能有更不受欢迎的机构愿意介入进行适当的削减)。区块链机制协调空间大,环境恶劣。所有投票或财务激励的基于身份的方案都应该非常谨慎地考虑底层无许可模型对长期可行性、可扩展性和安全性的影响。核心洞察也许你是一个正在浏览这篇文章的学者,或者是一个感兴趣的用户,想知道这一切到底意味着什么。从我们上述的思想实验中,可以得到一些有趣的、非常令人惊讶的见解(见参考文献)。显然,这些都需要进一步探索、调整和证明。但我认为我们至少提供了一些直觉,说明为什么我们认为上述内容在原则性分析框架中成立。结论区块链中链上投票的趋势受到人类悠久的投票和民主传统的启发。不幸的是,我们在现实世界中可用的保护措施,例如强制私人/可拒绝投票、近似身份控制和广泛欺诈的可归因性,在无许可模型中根本不可用。使用用户自己生成的公钥时,链上投票无法为这些用户提供任何反强制保证。精心设计的投票方案对平息(并且在许多情况下确实会加剧)问题几乎没有作用。链上投票计划使激励机制进一步复杂化,造成不稳定且混乱的激励机制,可以随时通过去信任的智能合约或Dark DAO式的投票购买、贿赂和哀悼计划进行更改。我们鼓励社区对任何链上投票的结果保持高度怀疑,特别是因为链上投票成为区块链系统决策的重要组成部分。设计能够以比以往任何时候都更低的协调成本实现新形式滥用的机制的空间支持投票应该用于信号而不是决策的立场,并且各种各样的投票机制应该填补这些角色。如果没有这样的保护措施,所有链上投票系统仍有可能通过直接投票和参与购买,甚至投票代币化而退化为富豪统治。此类攻击对所有基于区块链的投票系统的未来安全性具有重大影响。致谢我们要感谢帕特里克·麦科里(Patrick McCorry)在这篇文章的整个生命周期中提供的有用而全面的反馈,以及在投票购买和链上投票系统方面的开创性工作。我们还要感谢Omer Shlomovits和István András Seres对本文早期访问版本的有益评论。附录A—链上投票的差异化指标我们注意到链上投票系统中有几个不同的差异化因素:
原创文章,作者:惊蛰财经,如若转载,请注明出处:http://www.xmlm.net/wang/13953.html