从实证角度来看,公链是安全的。纵观其历史(尽管它仍然很短),公链确实达到了其设计目的:顺利处理交易。这对我们所有人来说都是显而易见的。至于原因,很难提出一个理论来解释。
面对自己看好的项目,人们通常会从自己最能理解和最看重的角度来解释自己的安全性,“某某公链的安全保障是什么?”不管你问谁这个问题,答案只不过是经济激励、算力的去中心化、所有节点和具有相同价值观的狂热社区。这并不奇怪:正如工具法则(也被称为马斯洛的锤子)所说,人们过于依赖他们熟悉的工具。如果你手里只有一把锤子,你会把一切都当作钉子。
我认为上述因素中的任何一个火币交易所都不足以确保公链的安全。即使一家公共公链在某方面无可挑剔,攻击它也不难。例如,在一个所有用户都运行所有节点的网络中,矿工仍然可以伪造另一条链来控制链上的所有资产。因此,各种因素必须相互补充和影响,才能为无许可证数字现金系统提供足够强的安全性。
分析区块链安全性的洋葱模
我提出了一个区块链安全模,希望能够清楚地显示构成安全的每个元素。该模旨在帮助我们更全面地看待公链,找出其优缺点,并比较不同的公链。公链的安全性就像洋葱,每一层都增加了额外的安全性。
如果要**销毁公链,必须销毁用户对其分类账状态(所有权列表)的信任,并使公链无法可靠地更新分类账状态。外部的几个安全层可以防止这种情况发生。
攻击必须通过漏斗状的防御层才能到达核心。现在,让我们逐一分析这些安全层。
密码学保证
最外层的保护由加密保证提供。密码学是最可靠的保证形式,因此我们希望它成为阻止尽可能多的攻击的第一道防线。加密技术主要可以确保以下几点:
- 额外的代币不能凭空发行:所有区块(以及所有区块奖励)必须附有有效的工作量证明。
- 无法窃取他人的代币:数字签名方案可以确保代币只能由其合法所有者使用。
- 无法篡改前一个块的数据:由于哈希指针,如果攻击者想要篡改前一个块的数据,他必须重建从该块到当前块的链。
上述袭击在第一道防线外被制止:
然而,虽然具有强大的加密功能,但它也有它无法提供的保证。例如,如果有两条相同长度的链条,它就无法决定哪条是正确的(这需要来自现实世界的信息,例如“大多数人会选择哪条链条”和“从长远来看,哪条链条的市场价值更高”)。它也不能强迫矿工挖矿特定区块,挖矿区块后立即广播,甚至不能确保他们打包特定交易。
共识保证
通过第一安全层的一些攻击将在共识层被阻止。在中本的共识下,节点总是关注网络并自动切换到最长(成本**)的链。只有在最长链条上挖矿区块的矿工才能获得报酬。因此,他们需要与其他矿工达成共识。这导致矿工极端偏好在矿链顶端挖矿,因此他们的区块最有可能被其他矿工识别。
如果恶意挖矿者想在前一区块挖矿,他们必须与其他挖矿链顶端的挖矿者竞争。他必须以比其他矿工更快的速度挖出区块,才能赶上并超越他们。然而,块的速度取决于算力的比例,即使只是表面上的重组,其成功的概率也很低。
为了发起有效的攻击,攻击者必须首先获得共识层的控制权。这意味着,如果它是一种工作负载证明的一致性机制,则需要控制50%以上的算力;如果是基于拜占庭容错股权证明共识机制,则有必要控制超过33%的存款;如果是基于最长链原则的一致性利息证明机制,则有必要控制50%以上的存款。
这种攻击的难度往往被低估。例如,政府常常被视为公链的**威胁。然而,如果他们想在一级市场购买必要的硬件,这些硬件将很快受到中国大陆、中国大陆、台湾和韩国芯片铸造厂的限制。这些芯片铸造厂的产量受到澳大利亚稀土开采以及亚洲和非洲芯片生产等因素的限制。因此,芯片的年产量非常有限,即使买家更加活跃,也无济于事。至少需要三年的时间才能买到不易察觉的硬件。
除非政府没收现有硬件以获得50%的算力,或迫使池运营商联合发起攻击。这在一开始可能是可行的,但在矿工们注意到并关闭他们的算力之前是行不通的。虽然这种攻击短期内不太可能在比特币上发生,但对于算力或存储量较低的小网络来说,很难说。
经济保证
正如我之前所讨论的,由于经济保证,如果一个实体控制共识层,区块链不会立即崩溃。通过采取适当的激励措施,区块链可以让邪恶有一个真实的价格。这是可能的,因为区块链通过本地代币引入了数字稀缺(和价值)的概念,可以奖励善行(通过区块奖励和手续费)和惩罚恶行(通过没收存款或扣留未来奖励)。
奖惩的规模与参与者对共识层的控制成正比。如果控制更多(甚至是最多)算力的参与者破坏了网络,损失将更加严重。因此,潜在的经济损失将阻止攻击者。
并非所有的经济激励措施都具有相同的效果。区块奖励的价值相对于网络价值越高,网络的安全性就越高,因为它对矿工的利益有更大的影响(这就是为什么区块奖励的减少会对比特币的安全造成威胁)。
矿工也是利益相关者,因为散列计算需要特殊的硬件(即ASIC矿工)。一旦整个网络消失,这些硬件将变成一堆废铁。因此,到目前为止,所有挖矿攻击都发生在相信反ASIC的小网络中,这并非巧合。攻击者可以控制这些网络,成本很低或没有成本(例如,通过算力租赁)。
社会保证
如上所述,为了**销毁公链,我们必须销毁用户对其分类账状态(所有权列表)的信任,并使公链无法可靠地更新分类账状态。
这是因为区块链本身不是我们的目的地。我们没有理由因为公链暂时的局部故障而打包回家。区块链只是建立社会共识过程的自动化手段,也是维护和更新共享数据库的工具。数据库的状态对参与者来说很有价值,因此当系统崩溃时,参与者有很强的动机修复数据库。
例如,如果加密散列函数被破解,社交层可以达成人工共识(在技术专家的指导下)来替换损坏的部分:
类似地,如果共识攻击击败了经济保障,社会阶层将人为地阻止它。如果具有**算力的攻击者开始通过掏空的块在网络上发起DoS攻击,则无论他将遭受何种经济损失,用户都可以决定更改pow功能,以人为解除矿工对网络的控制。
如我们所见,如果你想**杀死一个区块链,你要么让用户完全失去对其分类账状态的兴趣,要么将系统破坏到无法修复的程度。
当攻击能够穿透所有安全层并最终粉碎系统的社会核心,使其无法再修复外围安全层时,系统将面临极大的危险。
为了使自愈和人为干预都能发挥作用,每个项目的社区需要围绕项目的主要特征建立强大的社会习俗。以比特币为例,其核心价值包括交易不可逆性、反审查、不实施向后不兼容更新和2100万代币发行上限。这些价值观不仅为社会干预提供了行为蓝图,还形成了修复选项的谢林点。
项目的核心价值需要不断地重新协商,并非所有用户都同意这些特性。然而,社会对某一价值观的共识越强烈,在危机时期就越有可能坚持这一价值观。如果我们将社会层视为所有区块链的“原始爆炸点”(注:***爆炸的中心点),那么社会工程攻击确实是一个重大威胁。
如果恶意开发人员可以在没有监督的情况下潜入系统并篡改代码,特别是在频繁使用硬分叉的系统中,这将削弱外围安全层的防御(单击此处阅读相关文章)。
总结
我发现洋葱模可以很好地分析每一层如何保护区块链的安全。在某种程度上,该模是我上一篇文章“分析比特币的社会契约”的延伸:任何公链都源自一组共同的核心价值观,并描绘了系统愿景的蓝图。
这套价值观必须转化为人际行为规则(即,一致!)。然后,我们自动执行这些规则以实现不同类的保证:经济性、一致性和加密。该系统通过限制参与者的行为来增强社会可扩展性,并在低信任环境中相互合作创造财富。
文章标题:深度|如何理解区块链安全性的洋葱模型?
文章链接:https://www.btchangqing.cn/307136.html
更新时间:2021年08月01日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。