查看原文
其他

攻击向量:长程攻击

Dfifans DFINITY 2022-07-07




这是我与Robert对话的第3部分,内容涉及著名的针对区块链的攻击以及DFINITY采取的防御类型。


在长程攻击中,攻击者购买旧的(未使用的)密钥来覆盖历史记录。通过要求对每个区块进行公证并清除旧密钥,DFINITY使得此类攻击变得更加困难。


Cédric:好的,这听起来像是DFINITY已实施了一些策略,可以防止无利害攻击,或者我们仅说网络中发生了问题。


Robert:所以在我们的系统中,作为一个区块制造者,您开采一个以上的链对您来说不是一个有利可图的策略,因为那样您的区块就不会被接受,您的任何区块都不会被接受,并且您也会受到惩罚。


Cédric:让我们继续前进到第三个。


Robert:好的,第三个攻击向量是长程攻击。


长程攻击


Robert:这些长程攻击与“无利害攻击”问题有些相似,因为攻击者都尝试重新创建更长的分叉链。


在这种情况下,攻击者可以追溯到过去,因此他不仅可以在当前创建一些模棱两可的区块,而且可以追溯到过去并尝试重写历史的较长部分。那么,攻击者如何实现这一目标呢?


权益证明区块链


Robert:如果我们想象像传统那样的一个权益证明区块链,那么我们知道每个区块都是由某个矿工或区块制造者创建的,具有私有和公共密钥等等。


现在,如果在一个简单的系统中,这些密钥也可以用于发送交易,但是最终每个矿工可能会停止其作为矿工的活动,因为他们可能失去保持或参与系统的兴趣,他们出售了全部股份,因此与区块链不再有任何关系。


现在,如果攻击者来找老矿工购买了这些密钥,这些矿工已经卖掉了股份,对采矿不再感兴趣,那么这些密钥很可能不再具有很高的价值,它们什么都不是了。攻击者不用花很多钱从旧矿工那里购买旧密钥。


Robert:这是读者问题或者为什么有问题?因此,我们必须查看攻击者是否可以购买好几个旧密钥,是否允许他创建更长的链,然后再创建诚实链。


当然,攻击者将无法购买所有旧密钥的百分之一百,那是不现实的。也许甚至没有50%,或者攻击者可以在某个时候购买10%,所以对于历史的这一部分,我们可以说,攻击者购买了10%的密钥。


因此,乍一看,我们会说攻击者没有机会创建更长的分叉,并且因为诚实链拥有100%的密钥,或者100%的矿工仍在该链上建立,并且该链随着时间的推移会不断增长。


股权粉碎问题


Robert:但是,在这种情况下还会出现另一个问题,这就是所谓的股权粉碎问题。因为如果在权益证明链中,您需要一种方法去决定或选择哪个采矿者应该有权创建下一个区块,那么最佳选择机制应该是完全随机的。


现在,事实证明,天真的系统或第一代权益证明系统的随机数生成器都易于操纵。攻击者可能会回过头来,并可能尝试更改区块中的某些参数,这些参数用于推导选择下一个矿工或下一个区块的随机性。通过这样做,攻击者可以增加创建更长链的机会。这样,攻击者就可以用10%或少数的旧密钥,来沿链创建。


不再具有内在价值的旧密钥以及具有操纵过去随机性的方式的组合,使攻击者在某些情况下可以创建更长的分叉链,这些分叉链可以追溯到过去以克服诚实链并重写某些部分。


Cédric:实际上,他花了一些钱将代币翻倍,这可能是其背后的动机之一。


Robert:双花,或者任何其它的原因,使得他可能只想审查所有交易或删除所有交易,因为他不喜欢参与的各方,或者双花当然也可能。


门限签名


Cédric:DFINITY如何做到这一点?


Robert:正如已经提到的,在DFINITY中,对于每个块,我们都有一个公证人,因此,一个公证人应该对该块进行集体签名和验证,这种公证为您提供了所谓的阈值签名作为输出。


为了创建这样的阈值签名,您至少需要50%的公证人。因此,必须有50%的公证人通过在区块上创建签名共享来参与,然后通过收集更多或至少50%的这些共享来重新创建区块上的公证。当然,每个块都相同。


Robert:现在,如果一个对手想要重写历史,他不仅需要获得创建新区块的密钥,而且还需要获得多数,每个公证这些区块的委员会或团体,这意味着他将拥有在整个历史记录中购买超过50%的参与者的密钥共享或私钥,这些参与者以其密钥共享或签名共享的方式参与。


他将不得不购买它们,在更长的时间内,他将不得不购买很多密钥。因此,从这个意义上讲,有效地需要超过50%的人口,如果您查看整个矿工的人口总数,则可能需要占总人口的55%,以便能够在一系列旧的公证人团体中获得多数。


Cédric:当然,这要贵得多,因此比只需要购买所有密钥共享的5%至10%的可能性要小得多。


公证密钥共享


Robert:确实是,因为我还要提到另一个方面。用于公证的密钥共享,它们仅具有这种用途,不用于其他目的,例如用于签署交易,它们仅由客户端软件在内部用于公证区块。因此,一旦对该区块进行了公证,客户端软件便会丢弃这些密钥共享。因此它们会被客户端自动删除。


这也意味着,一直在使用正式客户端的矿工,尚未操纵客户端的矿工,仅使用摆脱了密钥共享的正式客户端,因为不再需要它们,攻击者甚至无法购买这些密钥共享,因为它们不存在。


Cédric:太好了,因此,我们涵盖了三个潜在的攻击向量:自私挖矿,无利害问题,最后是长程攻击,以及DFINITY如何应对所有这三种潜在的攻击情况。谢谢Robert,超级有帮助。我认为这是一个很棒的概述。


如果你们喜欢这个视频,并且希望听到更多关于这些策略的信息,请在评论中告诉我们,我们将制作关于每种策略的视频,并介绍一些细节,使其更加科学。如果您喜欢这部影片,并且想看更多,请单击“订阅”,这样我们很快就会再见。



作者:Cédric Waldburger

(Medium, 2018.9.15)

翻译:Catherine



攻击向量:无利害攻击

攻击向量:自私挖矿攻击

如何开始学习区块链?



进Dfinity官方社群,请添加小助手微信:

comiocn




长按关注

Dfinity官方微信

给你第一手资讯和项目信息

更可随时答疑解惑



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存