查看原文
其他

【官方】对Chia区块链的攻击与对策

河马/HemaDAO HemaDAO 2023-10-27

【 攻击与对策 】

多数攻击(Majority Attack)

在多数攻击中,攻击者创建一条替代链,最终达到比诚实链更高的权重,并迫使用户重新组织。这种攻击存在于包括 Chia 在内的许多区块链网络以及工作量证明系统上。它通俗地称为“51%攻击”,因为攻击者必须控制一半以上的区块链资源(PoW 的算力,PoST 的网络空间)才能成功。

Chia 的共识使得这种攻击的评估比工作量证明系统更加复杂。在分析这种攻击时,有几个变量在起作用:

  • 时间领主(timelords)的数量(无论速度)

    • 攻击者必须控制至少一个时间领主才能进行攻击。
    • 如果只有一个时间领主,攻击者只能构建一条私链。
    • 有了无限数量的时间领主,攻击者可以同时构建多个链,保留最好的一条,同时丢弃其余的。这使得攻击者能够创建具有更少块的插槽,从而给他们带来“双浸(double-dip)”优势,下面将详细讨论。
  • 时间领主的速度(无论数量)

    • 如果攻击者只有一个时间领主,则攻击所需的存储量与攻击者时间领主的速度(相对于网络上最快的诚实时间领主的速度)直接相关。
    • 例如(其他条件不变),如果攻击者的时间领主的速度是网络上最快的诚实时间领主的两倍,那么攻击者的空间将是“有价值空间”的两倍。
    • 此外,随着时间领主速度的提高,双浸优势也会增加。然而,由于最少区块的要求,这种优势将在时间领主的速度达到网络上最快的诚实时间领主的两倍以下时达到最大限制。此外,需要多个时间领主才能获得任何双浸优势。

  • 攻击持续时间

    • 对于持续时间少于 1 个 周期(epoch,约 4608 个区块或 1 天)的攻击,我们必须根据时间领主的速度和数量,假设攻击者双浸优势的最坏情况。
    • 对于持续一个时期或更长时间的攻击,始终可以使用最小双浸优势。这是因为攻击过程中难度会调整,因此攻击者将失去用更少的块创建插槽的能力。

在我们评估各种场景的百分比要求之前,我们必须首先计算双浸优势的范围。

《股权证明最长链协议:安全性与可预测性》一文概述了针对使用 1 到 10 个连续区块的链,得出攻击者进行多数攻击所需的网络空间最小百分比的公式面临同样的挑战。然而,Chia 在相同的挑战中使用了更大数量且可变的连续块。因此,我们必须求解方程以获得两个附加值:

  • 16——这是一个槽中的最小块数。(有关更多信息,请参阅溢出块和权重页面https://docs.chia.net/overflow-blocks#minimum-block-requirement。)在最坏的情况下,拥有无限数量的快速时间领主的攻击者理论上可以创建一条始终使用此最小数量的链,如下一节所述。
  • 32——这是每个子插槽的目标块数。(有关更多信息,请参阅挑战页面https://docs.chia.net/consensus-challenges。)这个数字会有一些自然差异,但没有最快时间领主的攻击者将无法操纵它。

以下是在 Wolfram alpha 中求解这些值的代码,其中 c 是具有相同挑战的连续块的数量:

% Wolfram% solve q=-(c*p)/(ln(-p)+(c-1)ln(1-p)) , -ln(-p)-(c-1)ln(1-p)=-1+(c-1)*(p/(1-p)), c=16 ,f=1/(1+q)% Solution over the reals: p≈-0.438787 ∧ q≈1.34313 c=32% Solution over the reals:p≈-0.616585 ∧ q≈1.4678 c=16% 1/(1+1.4678)= 0.405219% 1/(1+1.34313) = 0.4267795

我们DD来表双浸优势,

  • 对于单个时间领主,DD 始终为 1(没有优势),无论时间领主的速度如何。这是因为攻击者只能构建一条私有链。
  • 对于无限数量的时间领主,DD 将存在于一个范围内,例如 1.34313 < DD < 1.4678。由于每个槽最少有 16 个块,因此该范围具有最大值。

除了 DD 之外,我们还将在计算中使用以下变量:

  • SH是网络上诚实节点的总空间
  • VH是最快诚实时间领主的速度(VDF)
  • SA是攻击者的总空间
  • VA是攻击者时间领主的速度(VDF)

使用这些变量,计算攻击者何时能够以与诚实链相同的速度创建链的公式为:

SH * VH = SA * VA * DD

如果我们将网络的诚实空间和最快的时间领主标准化为等于 1,那么为了使攻击成功,攻击者的空间、时间领主速度和双浸优势的乘积必须至少为 1:

SA * VA * DD >= 1

计算最小 SA 的公式变为:

SA = 1 / (VA * DD)

最后,计算攻击所需的最小网络空间百分比的公式为:

% = (SA / (1 + SA)) * 100

下表显示了攻击者为了成功进行多数攻击而必须拥有的总网络空间的最小比例。该表对于持续任意时间的攻击都有效,但有时对于持续超过一个时期的攻击来说过于保守。它对前两列使用固定值。

对于持续时间超过 1 个周期(epoch) 的攻击,DD不会超过 1.34313。在此类攻击中,上表中的最后一行将更改为以下内容:

请注意,如果我们继续增加 VA,第一个表的 DD 将始终保持在 1.4678,第二个表的 DD 将始终保持在 1.34313。所需网络空间的百分比将线性减少。

可以合理地假设,如果尝试进行多数攻击,攻击者的时间领主不会比最快的诚实时间领主快得多。此外,攻击者不太可能获得无限数量的时间指令,因此攻击者不会获得双浸优势。因此,Chia 使用的基线假设是多数攻击有机会成功所需的网络空间为 51%。

为了减少攻击者获得快速时间领主的可能性,Chia 网络目前正在开发ASIC 时间领主https://www.businesswire.com/news/home/20211013005324/en/Chia-Partners-With-Supranational-to-Create-Industry-Leading-Proof-of-Space-Time-Security)。

延伸多个链

正如上一节所讨论的,如果攻击者正在创建自己的私有链,他们可以选择将哪个块注入到挑战链中,因此可以尝试许多不同的注入,以便获得最佳的链。

由于平均有 32 个区块具有相同的挑战,攻击者只能尝试大约 32 种不同的组合(找出挑战链中包含哪个区块)。尝试其中每一个所产生的指数分支将为攻击者提供小幅的空间提升。例如,拥有 5 PiB 的人可以假装拥有 6 或 7 PiB。

只获得小幅提升的原因是,正在尝试的替代链质量较差,而且不太可能超过最长的链。PoSAT paper(https://arxiv.org/abs/2010.08154对此进行了分析。

如果每个区块都有一个新的空间挑战证明,攻击者可以将其空间乘以因子e=2.718,这样只需要 27% 就可以超越网络。Chia 选择通过将每个子插槽的预期块数设置为 32 来减轻这种攻击向量。这将攻击者所需的空间增加到 42.7%。

然而,Chia 还选择不将每个子插槽的块数增加到大于 32 的数字。这样做会减少块之间的时间,这将使仅比其他所有块快一点的时间领主更容易地孤立块 。就目前情况而言,每个子插槽有 32 个区块,攻击者需要拥有比其他人快得多的时间领主才能成功孤立任何区块。

此外,PoSAT paper 表明,增加每个挑战的区块数量会以非常慢的速度提高安全性,因此稍微增加这个数字并不会带来太大的好处。

如果攻击者要操纵难度(difficulty),他们可以改变它,以便他们在每个插槽中获得更少的奖励块。然后他们可以包含或排除每个块,并同时以指数方式扩展所有链。这将使攻击者能够将他们的空间乘以一个小因子。目前尚不清楚这种攻击是否能获得很大收益,因为攻击者必须改变难度,这需要牺牲一些权重(weight)。然而,为了防止这种攻击,要求必须创建至少 16 个奖励链区块才能包含挑战区块。如上所述,这使得在最坏情况下(无限的稍快的时间领主)攻击者所需的空间从 27% 增加到 42.7%。

全球硬盘空间

有人担心,与硬盘制造商或大公司的可用空间相比,如果 Chia 网络没有大量空间,那么它将容易受到远程攻击。因此,Chia 网络占用的空间越多,网络就越安全。

不过,我们认为这种类型的攻击不太可能发生。大型数据中心和拥有大量存储空间的公司往往没有太多未使用的存储空间来保存 Chia 地块。Chia 网络上的空间越多,每 TB 的奖励就越低。目前(2021 年 12 月)网络空间为 35 EiB,这些公司将发现很难证明购买驱动器或删除业务数据的合理性。此外,创建地块需要一定数量的前期时间和金钱(根据当前计算,一个k32 图大约需要 1kWh,或者大约 10 美分,即每 TB 1 美元)。

最有可能的长期情况是,每 TB 的回报将足够低,从而阻止人们和公司仅仅为了种植 Chia 而购买新存储。因此,未来的大部分新网络空间将来自二手硬盘,通常来自原本会被送往垃圾填埋场的硬盘。这将有两个目的:防止此处的攻击,并保持 Chia 绿色。

100% 攻击

如果每 X 个时间领主槽触发难度调整,而不是每 X 个区块,这将可能形成 100% 攻击,即所有农民串通一气不断降低或增加难度。

正常操作下,每个槽有 32 个块。

在假设的 100% 攻击下:

  1. 难度将被人为地减半,暂时允许每个槽创建 64 个区块。

  2. 然后难度会人为增加 4 倍,暂时允许每个槽 16 个区块。
  3. 重复步骤 1。

这次攻击的结果是每个槽位平均产生 (64+16)/2 = 40 个区块奖励,奖励增加 25%。这也是Chia选择根据区块数量触发难度调整的原因。如果在当前系统下尝试这种攻击,它会减慢和加速网络,但不会产生任何额外的奖励。

短程重新绘图(Rplotting)攻击

即使在快速硬件上,绘图通常也需要几分钟到几个小时,但它是可并行的并且速度越来越快。

将来的某一天,拥有高端硬件的攻击者可以在释放标牌点(signage point)后开始创建地块,并在注入点(infusion point)之前完成绘图。然后,攻击者可以在获得质量评级后(或者在提交符合条件的证明后)删除该图。这将允许攻击者创建一个自动通过过滤器的地块,从而有效地允许他们在不存储任何硬盘空间的情况下进行耕种。只有能够在 28 秒内(注入前)创建一个地块,这种攻击才变得可行。

如果我们假设最坏的情况是农民能够立即创建一块地块,那么问题就变成了,攻击的成本是什么,好处是什么?

成本是创建地块所需的电力、内存、硬件和基础设施。目前创建 k32 地块所需的电力约为 0.10 美元,即每 TB 约 1 美元。

其好处与将绘图存储 80 分钟(标牌点间隔乘以绘图过滤器常数)的好处相同。这是因为攻击者总是可以创建能通过地块过滤器的地块。假设每年每 TB 的价值为 5 美元,则 80 分钟的 1TB 地块的价值为 0.00094 美元。因此,使用当前的绘图软件和硬件,存储地块比重新创建地块要便宜得多。

另一种看待这种攻击的好处的方法是:如果攻击者可以创建一个始终能通过过滤器的图,则相当于在本地存储 512 个图。存储 512 个图和运行此攻击哪个更便宜?

如果 1 TB HDD 存储成本为 15 美元,那么购买足够的空间来存储 512 个地块将花费大约 750 美元。如果我们考虑到一台低端计算机来运行农民,那么该系统的总成本大约为 1000 美元。因此,重新绘图攻击仅在价值低于 1000 美元的系统上才变得经济可行。如果这种攻击成为可能,那么运行攻击的成本可能比存储图的成本至少高一个数量级。(请记住,存储的价格往往每年都会下降,因此攻击的好处不断减少,尽管其可行性正在增加。)

地块过滤常数对于减少农民必须执行的磁盘查找量非常有用。当地块过滤器为 512 时,农民只需每 80 分钟进行约 7-9 次读取,而不是每 9 秒每个地块进行 7-9 次磁盘读取。

地块过滤器常数的缺点是它为攻击者提供了重新绘图好处的乘数,因此不能将其设置得太高。当地块过滤器常数为 512 时,1/512 地块对于每个挑战都有效。然后,攻击者只需创建通过过滤器的图,因此不需要创建其他 511/512。

将过滤器常数设置为 512 可提供 512x 乘数。如果重新绘图攻击在经济上变得可行,一种缓解措施是减少过滤器,从而降低攻击的收益。另一种缓解措施是增加最小地块大小,从而降低攻击的可行性。

无论如何,考虑到硬件速度的预计改进,这种攻击至少要到 2026 年才会变得可行。

更快的时间领主(但不是 51% 攻击)

有了系统中最快的时间领主,攻击者可以更有效地进行远程攻击:他们可以在私有链中耕种的同时扩大空间。

如果攻击者没有达到总共 40.5% 的空间(如上所述,时间领主会增强并延伸出许多链),则更快的时间领主的有用性会大幅下降。这是因为块的包含和排除并不取决于执行 VDF 的速度,而是取决于它是否小于子插槽迭代。此外,攻击者需要网络其余部分的空间才能前进,因此必须向网络释放挑战。

在某些块非常接近的情况下,拥有更快的时间领主可以让攻击者孤立某些块,尽管这不会在短期内增加奖励(它会伤害其他人,但对攻击者没有好处),并且从长远来看存在破坏网络的风险(孤立区块会降低公众信任)。

自私耕种(Selfish Farming)

自私耕种是指攻击者私下耕作区块,并且只有在有被诚实链超越的风险时才释放它们。

在中本聪 PoW 中,这提供了显着的收益,因为在任何时候,当矿工领先于网络的其他部分时,网络的其他部分就会在一条不会获胜的链上浪费他们的算力。

在 Chia 共识中,“自私”的农民可以在注入点之前保留证明,但这与立即提交证明相比带来的好处为零。每个标牌点可以有多个区块获胜者,因此耕种不像 PoW 那样是零和游戏。此外,时间领主不能接受已经过去的注入点的证明,因此农民不允许堆积大量证明以供以后注入。

农民贿赂攻击(Bribe Trunk Attack)

PoSAT 白皮书中探讨的一个有趣的攻击是贿赂攻击,它利用了每个时段当选“领导者”的可预测性。作者分析了权益证明链,并认为当参与者提前知道他们将获胜时,就存在潜在的贿赂攻击。

在 Chia 中,如果参与者提前知道哪些地块会获胜,每个用户就可以通知攻击者他们愿意参与攻击。如果参与者的数量达到一定的阈值,他们可以完全重组链(或孤立那些不参与的人,审查交易等)。这种攻击不需要网络中的大部分空间参与;它只需要在短时间内达到一定的获胜者门槛。此外,它是无法检测到的,因为攻击者可以创建一条看起来正常的链。

本次 Chia 共识算法修订版发布后就不存在这个问题了。这个问题是通过降低可预测性来解决的:每个农民在标牌点出现之前都不确定他们的空间证明是否完全合格。因此,攻击者必须贿赂大部分空间才能完成此攻击。

农民贿赂树叶重组攻击(Bribe Foliage Re-Org Attack)

由于区块是由 PoSpace 密钥签名的,理论上,农民可以在相同的高度使用相同的 PoSpace 签署多个区块。该攻击需要恶意方用一定数量的资金贿赂农民,让他们提供替代链的签名。它不要求攻击者拥有更快的时间领主。

如果攻击者能够说服 N 个区块深度的每个农民进行签名,他们就可以恢复或重新排序这 N 个区块中的任何交易。这种攻击需要 100% 的合规性,可能来自不知情的参与者。一旦这些参与者得知这次攻击,至少其中一些人可能会停止。因此,这只是一次短期攻击。

防止这种攻击的一种潜在方法是使用欺诈证明。然而,这些会导致其他攻击并使行为复杂化,因此没有选择它们。

相反,解决方案就是等待更长的时间。经过 32 个区块(大约 10 分钟)后,我们可以做出合理的假设,即至少有一个农民遵循协议而不是双重签名。如果 57.4% 是非共谋的(假设攻击弹性为 42.7%),则 32 个区块后逆转的概率为 0.426^32 或 1.38*10^-12= 0.00000000000138。此外,这种攻击是可检测的,因此不容易成功。

每个用户都可以选择自己的阈值,以接受交易/区块作为最终阈值。例如,在总网络空间突然下降的情况下,用户可以更加小心,不要将交易视为最终交易,以防由于网络分裂而出现另一个现有分叉。

孤立交易区块的费用

交易区块与非交易区块不同,因为它们包含交易费用。这些可能会超过区块奖励。例如,以太坊创建了一些带有 2 eth 奖励和 8 eth 费用的区块。(EIP 1559 显着改变了计算,因此这只是其他链中可能发生的事情的历史示例。)

在 Chia 中,情况会更加极端,因为并非每个区块都包含交易。这会导致第二名农民忽略第一名以试图赢得交易块的攻击。如果第二个块在第一个块之后不到 28 秒出现,则它们不会指定前一个块,因此第二个块不能孤立第一个块。第三名可能会成为孤儿,但没有人会遵循这条链,因为它更短。

然而,如果第一个区块的 28 秒内没有区块,第二个区块可能会孤立第一个区块,但他们必须说服下一个区块在其备用链上进行耕种。如果攻击者同时控制第二个和第三个,则攻击会更容易,在这种情况下,他们可以忽略第一个并且仍然更长。这些孤立攻击不允许攻击者窃取奖励,而是允许攻击者稍微降低难度。由于它们的情况非常特殊并且需要大量空间,因此尝试这种攻击对网络的损害可能大于攻击者的潜在收益。

孤儿率(Orphan Rate)

在 Chia 共识中,大约同一时间的两个竞争区块都可以并行地包含到区块链中,而无需彼此了解(尽管最多一个可以是交易区块)。当同时包含多个区块时,结果是一条权重更高的链。这意味着假设网络延迟较低,Chia 的孤儿率基本上为零。如果网络延迟超过注入延迟(30-40 秒),则几乎可以保证块的孤立,因此它更像是一个阶跃函数。这与 Nakamoto-PoW 形成鲜明对比,在 Nakamoto-PoW 中,如果存在网络延迟,孤儿率就会很高,并且随着网络条件的改善而平稳下降,但永远不会达到零。




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

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