2017-03-29 以太坊爱好者 PoW内部攻击者的一个简单模型 | 翻译: Stuart
原文链接: https://medium.com/@Vlad_Zamfir/simple-model-of-an-internal-pow-attacker-1a713cf00672#.c9k8aog6s | 原文作者: Vlad Zamfir,
摘要:PoW是保证公有区块链网络安全的重要手段。区块奖励的存在正是为了保证PoW能够正常运作。该如何思考区块奖励与网络安全的关系,以太坊基金会核心开发者Vlad在本文中给我们提供了一个思路。
我在昨天发布的一篇博客中提到过只有天真的攻击者才会从外部攻击PoW共识算法。因此我构建了一个我所设想的内部攻击者的简单模型。
我首先要表明的是虽然PoW共识算法(仅在协议激励上)在协调的选择博弈论中没有任何安全性可言,因为矿工之间可以组成多数联盟并且利用审查(censor)和恢复区块来套利。然而,当我们考虑针对PoW共识算法的攻击时,我们通常不会考虑组成联盟或者贿赂矿工的方式进行攻击,而只会考虑购买更多矿机并挖出更长的区块链来进行攻击。
这篇博客的目的就是为了模拟PoW在面对直接控制一半的算力的攻击者时的安全性(模型中他们不能租用算力或贿赂矿工,或采取其他任何与矿工合谋的攻击方式)。
外部攻击者
一个外部攻击者购买足够的GPU和ASIC算力来对100%诚信的网络进行51攻击,或者至少这是一个网络内部100%没有人与攻击者进行合作的网络。
我想这样假设:
向一个通过GPU挖矿的区块链添加X的哈希计算力,一个敌人会推动与X数量相同的GPU算力从该区块链的挖掘中转移到其他区块链的挖掘(如果他们没有,攻击者的受害链将不太可能有利可图)。这是一种高效/完全竞争性的使用GPU来挖矿的区块链市场。
在这种“最简单的模型”中从外部攻击一个攻击拥有T的哈希计算力的GPU区块链,需要哈希率X = T/2. 这是很多的GPU算力! :)
我还想这样假设:
通过向单个单独的可通过ASIC来挖矿的区块链添加X的ASIC计算力,你可以把该ASIC网络的总计算力提高X。这是一种使用ASIC挖矿区块链的垄断市场假设。
在这另一种“最简单的模型”中从外部攻击一个总共拥有T哈希计算力的ASIC区块链的需要拥有总共T的哈希率来进行攻击。
这些假设的事实情况比较折中。GPU矿工的区块链市场并不具有完全竞争性,而ASIC矿工的区块链市场并不是完全垄断的。
即使这些假设很有趣,我们将把这个问题保持简单化:
我们不再谈论ASIC挖矿的方式,接下来我只假设任何攻击者会需要T/2算力来攻击具有T算力的区块链。
我们要注意这是“竞争市场”的场景,因为矿工在攻击者出现时会立即切换到其他链上,因为被攻击的区块链对于他们来说可获利润会下降(难度重新调整!)
所有这一切的关键之处在于,在我们的简单模型中,具有T/2哈希率的攻击者可以攻击拥有T 哈希率的区块链。
“内部”攻击者
一个“内部进攻者”,不用购买足够的GPU来达到T/2的哈希率,他们只需购买一些内部的小部分的哈希率X = pT。当内部的攻击者开始挖矿,这时候网络上诚信部分拥有的哈希率为Y=T-X=(1-p)T(根据我们的效率假设)。
内部攻击者持续在最长的链上挖一段时间,赢得区块奖励,与矿工们进行竞争(我们假设没有人与我们的攻击者进行合作)。
内部的攻击者将他所有的采矿收入重新投入用于购买更多的哈希计算力。 我们将在我们的模型中假设内部矿工能够以每月1 + r的速率增加哈希率。 我的意思是,如果内部攻击者在第0个月有X的哈希值,那么它们在第1个月的时候会有X *(1 + r)的哈希率。
我们也假设诚实的矿工也通过投资来增加他们的哈希率,但是以每月1 + h的速度增加。
在这个设想的实验中,我们假设1 + r> 1 + h。攻击者专注于最大化其哈希率。诚实的矿工则专注于保持盈利。攻击者可能背后有着具有不法利益或长期战略的赞助商。然而诚实的矿工并没有与攻击者合作,也不知道攻击者是否存在(攻击者看起来像是在诚信挖矿 - 尽管进攻者自私的采矿会以r – h的速率增加)。
在N月后,内部攻击者具有X(1 + r)^ N的哈希率,网络的其余部分具有Y(1 + h)^ N的哈希率。 当攻击者与网络具有相同的哈希率的时候,他们将获胜:
X(1+r)^N =Y(1+h)^N
<==>
((1+r)/(1+h))^N = Y/X = (1-p)/p
让我们把比率(1 + r)/(1 + h)称作是攻击者的“优势”,并将其表示为“a”。所以当a ^ N = (1-p)/p时攻击者取得胜利。
拥有优势a和起始哈希计算力比例为p的内部攻击者进行一次成功的进攻总共需要的时间为:N = ln((1 - p)/p)/ln(a) 月。
顺便说一下,只要我们衡量下这个时期的“优势”,它可能都不需要几个月的时间 - 任何时间单位计算都是一样的。
下面的这张表和数字可以帮助我们理解:
看看当内部攻击者的攻击次数为每月5%,10%和25%,初始哈希力为10%,20%或30%的网络被攻陷所需要的时间。 PSA:我四舍五入到最近的一个月。
另外再说一句,假如能有人提出关于潜在敌人优势的真实估算真的会很酷啊!
这个模型中我们有多少的安全性?
知道这种“内部攻击”战略的外部攻击者可以进行选择。如果他们知道他们想在N月内进行攻击,且他们知道他们的优势,那么他们就可以计算出他们需要多少初始权重的哈希算力。这意味着他们可以计算出开始的时候要购买多少GPU。
换句话说,如果攻击者知道他们可以购买多少GPU,以及他们的优势,那么他们也可以计算出他们要在目标区块链上获得多数采矿力的月数。
所以区块奖励可以给我们带来什么?
区块奖励越高购买任何给定比例的哈希率的成本越高。以前可以买得起10%哈希率的攻击者可能只能买得起5%的哈希率来开始攻击。
两倍量的区块奖励可以延迟区块奖励时间:
∆N =ln((1 - p/2)/(p/2))/ln(a) - ln((1 - p)/p)/ln(a)
= (ln((2 - p)/p) - ln(p/(1 - p)))/ln(a)
= ln((2-p)/(1-p))/ln(a)
因此,翻倍区块奖励的价格会延迟一个具有优势“a”,并且能够购买哈希率“p”的敌人的攻击,∆N = ln((1-p)/(2-p))/ln(a)月。
下面是对应的另外一张表!
具有5%,10%或25%的优势,初始重量为网络哈希率的10%,20%或30%的敌人的攻击将由于两倍区块奖励的原因而被延迟的月数。这里假设网络的哈希率也会翻倍来响应于哈希率的翻倍(在竞争市场的合理假设下)。
通过翻倍区块奖励来将攻击延迟10个月的方案听起来很吸引人。然而,每10个月就将奖励翻一倍来无限期地延迟攻击的方案听起来非常昂贵(指数增长十分迅速)。
结论
最后,这个模型真的很简单。它假设敌人在初始时具有一定比例的链上权重,并且能够呈指数级的方式增长他们的哈希率,在某种程度上他们的增长速度超过了链上诚信矿工挖矿哈希率的指数增长速度。
这个假设的合理之处在于矿工的利润和哈希率成比例,也在于这个假设的数学计算十分可行。
我们也可以看一些数字,就是具有一定量优势的敌人进行攻击需要多少个月,和当区块奖励被翻倍的时候他们的攻击被延迟了多久。
所以很明显在这个矿工不与攻击者合作且攻击者必须购买哈希计算力来进攻的模型中(不管他们在买了哈希计算力后是否诚信挖矿),增加区块奖励可以提升安全性。
然而,关于这个模型会如何映射到现实世界中的许多种种仍然只存在于想象中。很期待看到其他人提出关于敌人优势的合理界限的讨论,当敌人尝试不同可行战略的时候。
上面这些数字真的可以帮助我们来思考一个问题,那就是:
矿工们可以为网络抵抗敌人(敌人不与矿工合作的情况下)提供多少的安全性?