观点 | 工作量证明生态的现状与运行原理,Part-3

Ajian   |     |   2624 次阅读

Part-1:非专用挖矿设备与激励相容
Part-2:行业的成熟与攻击


现有防御方法的不足之处

增加确认时长的不足之处

增加充币确认时长以应对网络波动,这在大部分情况下行之有效,能大幅降低某些类型的风险。但另一些时候,这种方法却毫无建树,无法提供切实保护。

在 P2P 网络出现波动的时候,增加确认时长确是最有效的措施之一。当遇到区块传输变慢、网络暂时分叉、节点扣块攻击,或者发生路由层攻击等情况时,增加确认数非常有效。把确认时长从 60 分钟延长到 24 小时,则有更充裕的时间来稳定最长链、修复分叉、或解决路由攻击。

增加确认时长,也能有效应对自私挖矿和总算力不足 50% 的欺诈挖矿。当自私挖矿严重,或大矿场开挖非正常区块时,区块大规模重组的几率会大大增加。和通常 2-3 个区块的重组不同,大规模重组的区块个数有可能达到十几个。当然,如果并非 51% 攻击,重组区块数量也不太可能超过几十个。此时,区块链仍将大概率保持单一方向增长。

然而,当遭受真正的 51% 攻击时,增加确认时长的效果则不甚显著。把确认时长从 60 分钟延长到 6 小时,需要攻击者租用更多的算力,或者需要攻击矿场耗费更多的时间,但也仅限于此,因此只有当攻击某币种的攻击门槛足够高时,这一策略(校注:通过增加租用算力成本或增长攻击时间造成攻击无利可图)才会有效。

很重要的一点,当加密货币遭受 51% 攻击时,攻击者将把所挖区块的奖励都收入囊中。如果攻击过后币价下跌有限,那么攻击者足以靠这些获利以战养战。这也是为什么对依靠 GPU 挖矿的规模较小的币种来说,增加确认时长的方法作用不大的关键原因之一。如果币种规模较小或区块奖励较低,攻击者可能只需租用几个小时的算力,便能获得整整一周的区块奖励。

地址黑名单的不足之处

之前,交易所曾用紧急添加黑名单的方法阻止攻击。攻击者实施双花时需要提币,通常会将币转移到其它交易所以供后续交易,因此,交易所之间可以互相知会那些参与双花的问题地址,并将他们列入黑名单,以此来阻止盗币和双花,挽回损失。

尽管地址黑名单有时候很有效,但攻击者也会逐渐掌握应对方法。这些方法包括使用匿名币、先行转移被盗货币到多个钱包后再发起双花、或使用去中心化交易所进行提币。复杂的攻击手段使得地址黑名单这一防护方式力不从心。

当然,交易所也不该就此弃用地址黑名单,从曾经追回过大量损失的角度看,这是个不错的方式。只是现在不该完全依赖它来挽回攻击遭受的损失,毕竟大多数情况下这将徒劳无功。

降低风险的一些建议

尽管处境糟糕,特别是那些交易所,我们依然可以采取些措施,来降低规模较大且使用多链矿机挖矿的币种的风险。不过,随着攻击方式复杂化以及基础设施(如去中心化的交易所和去中心化的算力市场)的改进,最终这些措施可能会失效。因此,唯一的一劳永逸的解决方案是,让所有的加密货币使用专有矿机,且它们的算法必须是独有且可以使用 ASIC 的。不过,在根本地解决问题之前,可以靠一些降低风险的措施来争取时间。

措施一,监控全球矿机的可用性

措施之一,是监控每一种加密货币矿机的使用情况,以帮助交易所管控风险。通过某一币种矿机的开机率,能较好地预测该币种的安全状况。

对于使用专用矿机的币种,只需要关注挖矿奖励情况以及矿机市场是否处于熊市。比如,当某币种因为挖矿利润太低,导致绝大部分矿机关机时,攻击者的攻击成本就会比较低,因为购买攻击用矿机的成本很低。除此之外,这一类币种在面对算力攻击时相对安全。

对于那些使用 ASIC 或其他专用矿机但有相同算法的币种来说,则需要关注每个币种的算力与该类矿机总算力的占比。一般地,当某一币种的算力占比超过 70% 时,我认为它是安全的;如果算力占比在 10% 和 70% 之间,可能需要将确认时间延长到 24 小时才安全。因为即便算力占比达到 70%,大矿场还是有可能发动算力攻击并获得成功,而 24 小时的确认时长,会使攻击的可行性大幅降低;如果某个此类加密货币算力占比小于 10%,则很不安全。交易所是否停止充提币,取决于自身的抗风险能力等因素,但我建议只有当这类币种改用更安全的挖矿算法时,才允许充提。

对于使用 GPU 挖矿的币种,风险管理着实依赖于对算力交易市场和大矿场运行情况的了解。

虽然没有进行大量严谨的调研,但据我估计,当前 GPU 算力交易市场的规模在 1 亿-2.5 亿美元之间。这个数字的关键之处,是它能够表明某个币种是否容易遭受 51% 攻击。当然,仅关心算力交易市场是不够的。曾有报道指出,一些大的矿场对一些小规模的币种发起过 51% 攻击。特别地,至少有一个 GPU 算力规模约在 1千万-1 亿美元之间的矿场,被指乐于参与攻击。

综上所述,我建议对那些硬件成本在 5 千万到 2 亿 5 千万美元之间的 GPU 挖矿币种,使用 24 小时的交易确认时长。对于那些规模更小的币种,则应该禁止充币,因为当硬件成本低于 5 千万时,攻击它们的难度和成本不是很高。

随着加密货币生态的演进,大矿场和算力交易市场会发生变化,针对不同规模和算法类型的加密货币的风险分析同样也会变化。交易所们只有紧跟变化,才能作出更精确的风险分析和最合适的商业决定。

措施二,和大矿场及算力交易市场保持良好关系

交易所和大矿场及主要算力交易市场保持良好关系,有助于减少整体风险。

算力交易市场是大部分攻击的源头。算力市场的中心化特点,有助于降低小规模币种遭受攻击的风险。降低风险的手段包括限制单次出租的算力总量,或者通过 KYC 等手段获取用户信息,特别是正在大规模采购算力的用户信息。最差情况下,当算力市场察觉到针对某币种算力的大规模突击采买时,可以及时对交易所示警。

当然,有经验的攻击者,可以通过女巫攻击或者盗用账号,来躲避交易市场的监控。随着中心化算力市场监控的深入,也会驱使用户寻找去中心化的解决方案,以躲避监控。因此,监控最多只是个临时方案,但在加密货币寻找到更好的解决方案前,它或许能争取足够时间。

同样,和大矿场建立关系也大有裨益。至少,通过了解当前不同币种的挖矿情况,交易所能够预判它们是否易受攻击。从降低风险的角度,我相信这种良好的关系会事半功倍。

自动停止交易以及地址黑名单

当交易所检测到加密货币会发生重大的重组时,该加密货币的交易应该自动停止,当检测到有双花交易时,相关的地址都应该自动列入黑名单中。越多交易所实行这样的措施越好,不应仅仅在受到双花交易攻击的交易所实行。

尽管暂时性的停止交易无助于资金被盗的事实,但这样确实大大减少了攻击者处理被盗资金的选择余地。同时,攻击者总是可以通过预测大规模攻击后币价的走势,并针对走势进行大规模的交易来获利。如果交易被冻结,攻击者潜在的利益来源就会减少。

地址黑名单也有相似的功效:它减少了攻击者的选择余地。减少攻击者更多的选择余地意味着我们有更多的机会来收回资金,也意味着即使攻击者有办法规避所有的控制,他们也不愿进行攻击了。

根据我们以往的经验,攻击者往往不是那么技艺高超,也总会犯下大错误。即使理论上来说当你面对一个完美的攻击者时是无能为力的,但现实就是攻击者并非完美。积极追捕攻击者来迫使他们犯下严重错误可能会非常有效。

焦土式反击

现在有一种更加高级同时更加有风险的选择来处理双花攻击,即发动反击。当一个攻击者在加密货币上创建了一笔双花交易时,受影响的交易所可以通过购买一定的算力来延长原始的链(即保证理论上正确的链有足够多的算力来成为“最长的链”),从而稳固原始交易不被攻击者覆盖。

当然,攻击者也可以反击这样的攻击,通过对于延长攻击链来应对交易所对于原始链的延长。这里的难点在于,对于每个时间点来说,交易所花费更多的钱去延长原始链和攻击者花费更多的钱去延长攻击链都是有意义的。即使攻击者和交易所所花费的已经超过了被盗窃的币的价值,他们仍然需要通过延长自己的那条链来收回投入的资金。

击者花了 10,000 美元买工作量证明算力,从交易所盗取了 50,000 美元。此时攻击者赚了 40,000 美元,交易所亏了 50,000 美元。此时交易所最佳措施就是也花费 10,000 美元将原始链恢复为最长的链,于是攻击者就变成了亏 10,000 美元,同时交易所也亏了 10,000 美元。如果我们继续下去,会得到以下结果:

轮次:               攻击者             交易所

第一轮攻击:    +$40,000       -$50,000

第一轮防守:    -$10,000       -$10,000

第二轮攻击:    +$30,000       -$60,000

第二轮防守:    -$20,000       -$20,000

第三轮攻击:    +$20,000       -$70,000

第三轮防守:    -$30,000       -$30,000

第四轮攻击:    +$10,000       -$80,000

第四轮防守:    -$40,000       -$40,000

第五轮攻击:    +$0            -$90,000

第五轮防守:    -$50,000       -$50,000

第六轮攻击:    -$10,000       -$100,000

第六轮防守:    -$60,000       -$60,000

当攻击者在整个攻击中不再获利时,交易所也已经损失了与面对攻击不作为会损失的同样金额。以该策略,在任何时候交易所都会亏损,而且只会亏损越来越多。

并且,这个博弈实际上没有结束状态。在任何时候,每一方都有动机继续尝试收回原本的 50,000 美元,因为每一次你花费 10,000 美元都是为了收回 50,000 美元。这就是为什么这个策略被称为 “焦土” ——没有哪一方会获胜,还会伴随着大量的资金被销毁。

这种策略的价值在于,至少从理论上说,交易所可以阻止攻击者(借此)赚钱。如果攻击者提前知道交易所会实行焦土策略,那么攻击将会变得没有意义,同时交易所在受到最初几次攻击之后将不会再受到攻击。

这个策略有另一个比较大的痛点。攻击者在准备方面有很大优势。一个攻击者可以花费数周或者数月来准备一次攻击,但是交易所必须几乎立即响应这次攻击。并且,如果攻击者愿意这样和交易所交战,很可能是因为攻击者有很大的优势。例如,如果攻击者优化了自己的代码,使得每轮只需要花费 5,000 美元,但是交易所每轮还是要花费 10,000 美元。在这样情况下,交易所也无法判断攻击者是否具有优势。

如果多个交易所同时使用这样的策略,也可能会出现问题。交易所最终可能会和彼此(并非攻击者)产生一场算力的战争,根据不同交易所的预算,代价可能会非常高昂。

这个策略的最后一个考虑因素在于,这可能会对生态系统造成巨大的连带损害。许多密码学货币并不能真正处理大量的连续重组。节点可能会宕机,其他交易可能会丢失或者在(算力)战争中可能会发生双花交易,一般来说,用户在这场焦土战争中可能会面临更大的风险。

综上所述,我并不推荐交易所使用上述策略来抵抗双花攻击

开发者决断

我提出的最后一种策略则是开发者决断,因为这在某些加密货币对抗攻击中成功过。当发生了一起盗币事件时,开发者总是可以通过提出一个硬分叉来收回被偷窃的币。但是这又会导致开发者的高度集中化,并且由于开发者也并非完美,他们可能被欺骗导致对攻击判断错误,最终误将用户账户上的合法代币转给攻击者而不是返还被盗窃代币。

开发者也可以对区块进行签名。一旦一个区块被开发者签名了,这个区块就是永久确定了,并且区块内的交易不可能是双花交易。这已经通过历史上无数次的密码学货币所证明,但这种做法本身非常危险。如果开发者的密钥被盗了,会发生大量问题。并且,一旦开发者事实上可以决定哪些交易能够上链,他们也就将受到金融监管机构的无情监管

开发者应该对这样的事情保持相当的谨慎,因为如果一个开发者在找回资产的时候做了一个错误的决策,签署了一个错误的块,或者允许了某个已知的恐怖组织进行交易,就会引发严重的法律后果。特别是现在监管机构对这个领域相当重视,我并不推荐这个方案,至于对中心化的担忧我也就不再提了。

结论

7

随着加密货币领域的不断发展,我们将会看到更加复杂的攻击手段。在接下来的 6-12 个月里,大部分攻击可能会集中在对于工作量证明保障较弱的加密货币的双花攻击上,但是我认为攻击种类会随着开发漏洞的显现而增加。安全的加密货币设计非常困难,大多数加密货币和 dApp 都无法确保他们项目的安全性。

由于多链矿机的算力攻击导致的价值数百万美元的币被盗事件让我们深有感触,但是这些只是对加密货币社区的第一波大规模攻击。

为了防止进一步的损失,我们需要在短期采取措施来防止交易所被多链矿机算力攻击。某些情况下,将确认时间增加至 24 小时是有效的,而在其他情况下,我建议锁定账户余额,直到该加密货币能分叉到一条安全的链上。从长期看,交易所需要对加密货币的风险模型采取更保守的措施,并对上交易所的代币进行更深入的调查。

特别感谢 Ethan Heilman 的审阅和反馈。

(完)


原文链接: https://blog.sia.tech/fundamentals-of-proof-of-work-beaa68093d2b
作者: David Vorick
翻译&校对: wuwei, Whisker & Elisa

 
0 人喜欢