Conflux采用GHAST共识机制。近几日,我仔细研究了GHAST论文,发现它存在一个致命漏洞!
当诚实节点进入“conservative setting”时,会打出大量权重为0的区块。这些权重为0的区块是非常脆弱的,非常容易遭到自私挖矿攻击。恶意攻击者可以不断打出权重为1的区块,将权重为0的区块“屏蔽”掉。直到有诚实节点打出权重为ηw的区块,这些权重为0的区块才能被确认。在这期间,恶意攻击者将独占所有高价值的交易。如果再配合平衡攻击,问题就会非常严重。
GHAST共识机制是为了解决GHOST共识机制的平衡攻击问题而提出的。实际上,如果恶意攻击者有实力对GHOST共识机制发动平衡攻击,那么他同样有实力对GHAST共识机制发动平衡攻击+自私挖矿攻击。这个方案在解决老问题的同时又引进了新的问题。所以,我不认为这个方案实际上解决了问题。
有大神能够解答我的疑问吗?
Conflux的致命漏洞(此贴存在标题党的行为,括号内容为管理员手动加入)
很高兴又有社区的朋友关注 Conflux 的共识机制了,就是这个标题起得也太标题党了。GHAST 设计目标就不是解决经济分配公平性问题的,而是解决区块最终性问题的。
首先,我们需要明确一下,平衡攻击会导致什么问题?GHAST 解决了什么问题?
简单来说,平衡攻击解决的是区块排序的“最终性”问题。假如 A 有 10 块钱,区块 X 打包了 A 给 B 10块的交易,区块 Y 打包了 A 给 C 10块钱的交易。那么区块 X 和 Y 谁排在前面,决定了是 B 拿这笔钱还是 C 拿这笔钱。
所以,我们需要一个时刻,知道区块 X 与区块 Y 谁排在前面,而且知道即使攻击者掌握了 20%, 30%, 40% 的算力,也高概率(99.999…%)无法更改区块 X 与区块 Y 的排序,也无法在区块 X 和 区块 Y 前插入其他区块。我们称区块 X 与 Y 进入到了一种不可篡改的状态,也称为区块(高概率的)最终性。
那么平衡攻击是一个什么问题?正常情况下,高速出块的 GHOST 可以在 1 分钟内达到上述这种无法篡改的状态,Ethereum 大概在 10 分钟可以到达这种状态。而平衡攻击下,一个 23% 算力的攻击者,可以使某个时刻之后的区块永久无法到达这种状态。
这是否会有双花问题?没有。Conflux 有一套算法告诉你哪些区块进入了不可篡改的状态,哪些区块没有。也就是说,被平衡攻击的区块,哪怕后面跟了多少区块, Conflux Scan 上也会显示安全度“低”,整个区块链系统卡在了那里。
而 GHAST 是为了解决这个问题的。我们证明了无论攻击者采用什么样的手段,GHAST 协议总可以保证区块在一定时间后,进入这种不可篡改的状态。
下面,我们来看一下,楼主提出的是什么问题。
楼主所提出的是,GHAST 协议下,攻击者可能会通过一些操纵手段,造成交易费分配不公平。
确实会有这个问题,很多操作会造成交易费分配的不公平,或者鼓励lazy的矿工。所以 Conflux 的激励机制里有很多细小的点,就是为了解决一些我们当时想到的攻击方式。这篇文献里也讲了一些攻击方式与解决的方法:https://www.cs.toronto.edu/~fanl/papers/conflux-brain20.pdf
然而,与区块不可篡改性分析不同的是。我们无法找到一个模型去囊括所有可能对经济公平性有影响的攻击策略,只能 case by case 地讨论。抛开 GHAST, 哪怕像比特币那样简单的协议,也不存在一个模型框架,可以囊括所有可能的公平性分析。
楼主所说的攻击方式就是之一,攻击者利用某些优势,独自打包高价值的交易,这确实是一个值得思考的问题。但这个攻击思路未必可行,我不确定攻击者是否能容易地构造出一个情形,让自己在正常的 case 下,而诚实节点都在 conservative 的 case 下。不过,目前的 Conflux 链以区块奖励为主,这个问题也不是那么突出,可以多花一些时间想想。
最终总结一下
作为一个严谨的、有研究边界的学术工作,GHAST 的任务很明确:在一个高性能的区块链中,保证“正常状态”下快速地达到不可篡改的状态(学界最优),“有攻击时”也可以通过等待固定的时间可以达到不可篡改的状态。在这个分析中,不考虑利益分配的公平性,不考虑参与者的利益理性(假定一定比例的无条件忠诚者和一定比例的无利益动机、不计成本攻击者)。在这个模型下,GHAST 协议完成了自己的目标任务,没有安全问题。
但在现实中,攻击者可能会从各个层面发起攻击,不会说 GHAST 只研究区块的最终性,我就只针对区块最终性做攻击。针对经济分配公平性的攻击是更难防御的,Conflux 也 case by case 地去设计机制防止了一些我们能想到的公平性攻击,但注定无法防止所有影响经济分配公平性的攻击。
目前,没有任何一个共识机制能够做到防止所有可能的影响经济分配公平性的攻击,只是影响程度多少而已。因此,你说有攻击的可能就是有致命漏洞,其实并不成立。
这种说法太自欺欺人了。所有问题都应该统筹考虑。
如果单看自私挖矿攻击,算力阈值可以低到接近于0。也就是说,任何一个“吃瓜群众”都可能发动这样的攻击。不能不说“致命漏洞”!
而且“吃瓜群众”有充分的动机发动这样的攻击。考虑这样一种情形:“吃瓜群众”有一笔交易需要在极短的时间内被确认。比如说,ICO/IDO、竞速类游戏、限时空投等。在这类应用中,时间就是金钱。您认为用户会诚实地等待漫长的时间,还是发动自私挖矿攻击让交易被迅速确认?当Conflux上存在大量这样时间就是金钱的应用时,这个问题就会凸显出来。
当这样极端自私的“吃瓜群众”大量存在时,恶意攻击者再发动平衡攻击,就会出现GHOST共识机制那样的情形:达成共识遥遥无期!
另外,我想请教一下,GHAST的那一大堆证明是怎么整出来的?非常令人震惊。
我现在想到了一个方案,想整一个证明,但不知道怎么下手。
算力阈值当然不是0,如果让诚实节点进入 conservative 的状态的话,我记得之前估算的算力阈值在20%以上。然后构造平衡攻击的话,视算力分散情况。10000个节点完全分散大概是 23% 左右,现实算力比较集中的话,应该更高。
从双花攻击的角度看,恶意节点更倾向于自己挖 conservative 区块,一把梭哈去追诚实节点的子树权重。所以之前的分析考虑恶意节点自己挖 conservative 攻击的情形多一些。恶意节点在通过 conservative 区块拖慢区块最终性的阈值是 17% 上下。这个阈值其实可以通过参数调,17%是我们选出来的。
您完全误解了我的意思。根据论文,一个区块b是否处于“conservative setting”完全由b.past决定。恶意攻击者可以决定b.past,使他打出的区块不处于“conservative setting”,因此区块的权重总是为1。而诚实节点由于必须在b.past中包含所有区块,所以区块的权重为0。
即使没有发生平衡攻击,仍然会有一定的概率使得诚实节点的区块处于“conservative setting”。恶意攻击者可以瞄准这个时机发动自私挖矿攻击。因此算力阈值可以接近于0。
诚心请教,GHAST证明是怎么整出来的?感觉一大堆的定义就像从石头里蹦出来一样。整这些证明有什么好的方法?比如,有没有什么有用的算法、程序可以帮助整理出这样的证明过程?
实际上,我看了GHAST的证明过程,发现了N多的错误。但令我惊讶的是,这些错误都不影响结论。我不得不认为您们是通过某种神奇的方法整出这些证明的。能否请您透露一下?
在网络正常,没有攻击行为的情况下,我认为这个概率是几乎不存在的。conservative setting 大概会在区块链出现分叉时产生,而网络正常,没有攻击行为时,区块链不应该出现持续长时间的分叉。
我思考了一下,如果诚实节点真的进到了 conservative setting 的状态,攻击者确实有能力让自己的权重都是1,这一点你是对的。
从system设计的角度上,确实应该想一想如果攻击者调集25%的算力做你说的这种攻击,可能的影响会有多大,怎么缓解。
分析 GHAST 的时候,我曾经把整个区块链运行状态分类讨论了 308 种情况,后来合并成 105 种。现在附录中大概只有 20 种情况。是因为从分类讨论的结果能找到一些规律,这些规律为定义给了一些 hint. 整个证明大概花了两年的时间完成它。
原始手稿我不方便全部拿出来。这张表是第二轮分类讨论中的一个 summary, 里面充满了只给自己看的用词.
有任何错误欢迎指正。如果真的帮我们发现很多错误的话,我会将您加入 Acknowledgement 中的 ~
"这个概率是几乎不存在的"这个说法没有说服力。你们应该做过模拟实验吧。这个概率具体是多少?考虑到一旦进入“conservative setting”,平均有360个诚实区块的权重都为0。即使这个概率只有千分之一,造成的影响也是非常可观的。
我们所说的小概率,至少是百万分之一起步,一般都是指小于 2 的负 40 次方。具体到无攻击的 conservative setting,这个概率我估计是低于 2 的负 40 次方的。如果你需要 reasoning 的话,晚些时候我可以详细地解释一下。
至少 Conflux 上主网以来,没有跑出过一次 conservative setting,而且离触发 conservative setting 非常远。(当然,如果你今天调 20% 的算力去搞主网,可能明天就有了)
但我觉得,你这个攻击思路,可能不通过触发 conservative setting 也能构造,容我想想。
围观大神
即使"这个概率是几乎不存在的",算力阈值接近于0也是一个非常严重的问题。这就意味着GHAST共识机制不得不依赖于一个非常天真的假设:绝大多数节点都是诚实的。这在现实中很难站的住脚。
如果我们考虑另一种假设----理性人假设(比特币所采用的假设),那么我们就会发现,当诚实节点进入“conservative setting”时,绝大多数节点都会选择自私挖矿。
也就是说,在理性人假设之下,GHAST共识机制与GHOST共识机制实际上没有差别!
希望看到更多这样深入的技术讨论
希望此人进技术组
呵呵,我不会进。这个项目不看好。
不过话又说回来,这个项目的成员确实很优秀。
能发现问题,是优。能解决问题,是绝。conflux可以做个赏金计划,供全天下技术性人才发现漏洞。但标题太过于攻击性,其目的性就强于技术探讨与交流。哪有完美无瑕的东西,几乎不存的概率不能理想化夸大。
一点不夸大,也没有攻击性。实事求是而已。确实没有完美无瑕的东西,但就问题严重性而言,Conflux的问题比比特币更加严重!
=============================手动分割线=================================
我也塞进一层,回答下面的问题。
1、我提出的攻击策略是平衡攻击+自私挖矿攻击,确实需要算力阈值在20%以上。如果单看自私挖矿攻击,就像我说的算力阈值接近于0。“单看自私挖矿攻击”是指在“conservative setting”已经触发的情况下。我之所以要强调“conservative setting”已经触发的情况,是因为在这种情况下,其他“吃瓜群众”都会纷纷搭上恶意攻击者的便车捞一杯羹,并且没有任何针对“吃瓜群众”的门槛。
2、无论您怎么争辩,不可否认的是GHAST共识机制的区块最终性需要在诚实人假设之下才能成立,而在理性人假设之下是不成立的!
关于自私挖矿和激励相容性问题,我也作过一丢丢的研究。