比特币时间扭曲攻击漏洞解析:原理、影响与修复方案

robot
摘要生成中

比特币安全漏洞:时间扭曲攻击

近日,比特币开发者Antoine Poinsot提出了一项名为"大共识清理"的软分叉提案。该提案旨在修复比特币协议中长期存在的几个漏洞和弱点,其中包括我们最近讨论过的重复交易问题,以及本文将重点探讨的更为严重的"时间扭曲攻击"漏洞。

比特币安全漏洞:时间扭曲攻击

比特币区块时间戳保护机制

在探讨时间扭曲攻击之前,我们需要了解当前的时间操纵保护规则:

  1. 中位过去时间(MPT)规则:区块时间戳必须晚于前11个区块的中位时间。

  2. 未来区块时间规则:区块时间戳不得超过节点对等体中位时间2小时以上。节点时间与本地系统时钟的最大允许差异为90分钟。

MPT规则防止区块时间戳过于远离过去,而未来区块规则则限制时间戳不能过度进入未来。值得注意的是,无法实施类似未来区块规则的机制来阻止过去的时间戳,因为这可能会影响初始区块链同步。时间扭曲攻击正是利用了伪造远古时间戳的可能性。

比特币安全漏洞:时间扭曲攻击

中本聪的"差一"错误

比特币的难度调整周期包含2016个区块,按10分钟的目标出块时间计算,约为两周。在计算挖矿难度调整时,协议会计算相关2016区块窗口中第一个和最后一个区块之间的时间戳差。这个2016区块的窗口实际包含2015个区块间隔(即2016减1)。因此,正确的目标时间应为60秒 × 10分钟 × 2015个间隔 = 1,209,000秒。然而,比特币协议使用了2016这个数字来计算目标:60秒 × 10分钟 × 2016 = 1,209,600秒。这是一个典型的差一错误,可能是中本聪混淆了区块与区块间隔的概念。

这个错误导致目标时间比应有的长0.05%。实际上,比特币的目标间隔时间不是10分钟,而是10分钟零0.3秒。虽然这个漏洞看似微不足道,但自比特币启动以来,平均区块间隔一直是9分钟36秒,明显少于10分钟。这主要是因为自2009年以来,平均算力一直在增加。这也解释了为什么最近的减半事件发生在2024年4月,而不是2025年1月。我们实际上提前了进度。从长远来看,当价格和算力趋于稳定时,这个0.3秒的误差可能会帮助我们重新回到原定进度。

比特币安全漏洞:时间扭曲攻击

时间扭曲攻击

时间扭曲攻击大约在2011年首次被发现,它利用了中本聪在难度计算中的错误。假设挖矿完全中心化,矿工可以在协议允许的范围内设置任意时间戳。攻击者会将大多数区块的时间戳设置为比前一个区块仅提前一秒,以尽可能缓慢地推进区块链时间,同时遵守MTP规则。为了最大限度地减缓时间推进,矿工可以连续六个区块保持相同的时间戳,然后在第七个区块中将时间增加一秒,如此循环。

这种攻击会导致区块链时间越来越落后于实际时间,同时难度会不断增加,使挖矿变得越来越困难。然而,为了增强攻击效果,在每个难度调整周期的最后一个区块中,矿工会将时间戳设置为真实世界时间。随后,新难度调整周期的第一个区块的时间戳会被设置回过去,比前一个周期的倒数第二个区块仅提前一秒。这种操作仍然符合MTP规则,因为单个异常不会影响11个区块的中位数。

实施这种攻击后,第一个周期的难度不会受到影响。但从第二个调整周期开始,难度将开始下调。此时,矿工可以以极快的速度创建区块,可能短时间内创造大量比特币,从而获取不当利益。

比特币安全漏洞:时间扭曲攻击

攻击的可行性与挑战

尽管理论上这种攻击具有毁灭性,但实际实施面临多重挑战:

  1. 可能需要控制大部分算力。
  2. 诚实矿工的存在会增加攻击难度。
  3. MTP规则和诚实矿工的时间戳会限制恶意时间戳的回溯程度。
  4. 如果诚实矿工生成任何难度调整窗口的第一个区块,该周期的攻击将失效。
  5. 攻击过程对所有人都是可见的,可能给社区足够时间推出紧急软分叉修复。

解决方案

修复这个漏洞有几种可能的方法:

  1. 改变难度调整算法,计算不同2016窗口中区块之间的时间跨度,并完全修复差一错误。但这可能需要硬分叉。

  2. 取消MTP规则,要求时间在每个区块中总是向前移动。但这可能导致时间卡在远未来,并给使用系统时钟的矿工带来麻烦。

  3. 一个更简单的解决方案是要求新难度周期的第一个区块的时间不早于前一周期最后一个区块之前的特定分钟数。Poinsot的大共识清理提案中将这个时间设定为2小时。

这个2小时的限制有以下优点:

  • 最大限度降低意外无效区块的风险
  • 与未来区块时间戳规则相匹配
  • 相比当前规则,是一个更为保守的变化
  • 0.6%的调整幅度相当小

虽然这仍然允许攻击者每个周期将难度向下操纵约0.6%,但这只会是一次性变化,无法叠加。总的来说,这种解决方案在保护网络安全和维持系统稳定性之间取得了良好的平衡。

比特币安全漏洞:时间扭曲攻击

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 7
  • 分享
评论
0/400
冷钱包_守护者vip
· 4小时前
修复了这bug我就放心了
回复0
BridgeNomadvip
· 4小时前
经历过足够多的桥接漏洞攻击,我知道 - 这种攻击方式让我真的有了 juno 桥接的创伤后应激反应。
查看原文回复0
frenethvip
· 4小时前
没谁是傻瓜 谁不想白嫖
回复0
NotAFinancialAdvicevip
· 4小时前
改完漏洞矿工不得玩了啊
回复0
retroactive_airdropvip
· 4小时前
修了个寂寞
回复0
GmGmNoGnvip
· 4小时前
又在修bug 解决一个又来一个
回复0
quiet_lurkervip
· 4小时前
按理说矿工该炸锅了
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)