比特幣協議漏洞曝光:時間扭曲攻擊或致大規模難度操縱

robot
摘要生成中

比特幣協議漏洞:時間扭曲攻擊

2025年3月,比特幣開發社區提出了一項名爲"大共識清理"的軟分叉提案。該提案旨在修復比特幣協議中長期存在的幾個漏洞和弱點,其中包括我們最近討論過的重復交易問題。另一個更爲嚴重的漏洞被稱爲"時間扭曲攻擊",這正是本文要重點探討的內容。

比特幣安全漏洞:時間扭曲攻擊

比特幣區塊時間戳保護機制

在討論時間扭曲攻擊之前,我們需要了解當前比特幣網路中的時間操縱保護規則:

  1. 中位過去時間(MPT)規則:新區塊的時間戳必須晚於前11個區塊時間戳的中位數。

  2. 未來區塊時間規則:新區塊的時間戳不能比網路節點的中位時間超前2小時以上。同時,節點之間允許的最大時間差爲90分鍾,這是另一重保障。

MPT規則防止區塊時間戳過於回溯,而未來區塊規則則限制時間戳過度超前。值得注意的是,無法對過去的時間戳實施類似未來區塊規則的限制,因爲這可能會影響區塊鏈的初始同步過程。時間扭曲攻擊正是通過僞造遠遠回溯的時間戳來實現的。

比特幣安全漏洞:時間扭曲攻擊

中本聰的"差一"錯誤

比特幣的難度調整周期包含2016個區塊,按10分鍾出塊時間計算,約爲兩周。在計算挖礦難度調整時,協議會計算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分鍾。這也解釋了爲什麼最近的減半事件提前到2024年4月而不是2025年1月。雖然這0.3秒的誤差看似微不足道,但它卻衍生出了一個更爲嚴重的漏洞。

時間扭曲攻擊原理

時間扭曲攻擊約在2011年首次被發現,它利用了中本聰在難度計算中的錯誤。假設挖礦完全中心化,礦工可以在協議允許的範圍內任意設置時間戳。攻擊者會將大多數區塊的時間戳設置爲比前一個區塊僅提前一秒,使區塊鏈在時間上緩慢前進,同時遵守MTP規則。爲了最大限度地減緩時間前進,攻擊者可以連續六個區塊保持相同時間戳,然後在第七個區塊增加一秒,如此循環。

這種操作會導致區塊鏈時間逐漸落後於真實時間,同時難度不斷增加,使挖礦變得越來越困難。然而,爲了增強攻擊效果,攻擊者會在每個難度調整周期的最後一個區塊中將時間戳設置爲真實世界時間。而下一個週期的第一個區塊則會被設置回過去,比前一周期倒數第二個區塊僅提前一秒。這種做法仍然符合MTP規則,因爲單個異常值不會影響11個區塊的中位數。

實施這種攻擊後,第一個週期的難度不會受影響。但從第二個調整周期開始,難度將開始顯著下降。隨後,攻擊者可以以極快的速度創建區塊,潛在地鑄造大量比特幣,從中獲利。

比特幣安全漏洞:時間扭曲攻擊

攻擊可行性分析

盡管理論上這種攻擊具有毀滅性,但實際實施面臨諸多挑戰:

  1. 可能需要控制大部分網路算力。
  2. 誠實礦工的存在會增加攻擊難度。
  3. MTP規則和誠實時間戳會限制惡意時間戳的回溯程度。
  4. 如果誠實礦工產生任何難度調整窗口的第一個區塊,該週期的攻擊將失效。
  5. 攻擊過程對所有人可見,可能觸發緊急軟分叉修復。

比特幣安全漏洞:時間扭曲攻擊

潛在解決方案

修復這個漏洞有幾種可能的方法:

  1. 改變難度調整算法,計算不同2016區塊窗口之間的時間跨度,同時修正"差一"錯誤。但這可能需要硬分叉。

  2. 取消MTP規則,要求每個區塊的時間都嚴格遞增。但這可能導致時間戳過度提前,或因礦工之間的時鍾差異而產生問題。

  3. 一個更簡單的解決方案是要求新難度週期的第一個區塊時間不早於前一周期最後一個區塊的特定分鍾數。目前討論的時間範圍從10分鍾到2小時不等。

在最新的大共識清理提案中,開發者傾向於採用2小時的限制。這個時間段約爲難度調整周期目標時間的0.6%,可以有效限制難度向下操縱的空間。

無論最終採用哪種方案,修復這個長期存在的漏洞都將進一步增強比特幣網路的安全性和穩定性。

比特幣安全漏洞:時間扭曲攻擊

查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 6
  • 分享
留言
0/400
喝茶看盘侠vip
· 07-07 18:30
这bug真给币圈添堵了
回復0
Gas_FeeCriervip
· 07-07 15:25
整天喊着gas费贵,那可不是闹着玩滴
回復0
ShibaOnTheRunvip
· 07-04 22:21
我杀了个来看看 这问题有点严重啊
回復0
末曾在场vip
· 07-04 22:15
早晚出事 没想到这么快
回復0
链上冷面笑匠vip
· 07-04 22:07
别担心 矿工们又不傻
回復0
GasWastingMaximalistvip
· 07-04 21:59
又得改共识了,btc搞事真多
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)