比特幣時間扭曲攻擊漏洞解析:原理、影響與修復方案

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
· 14小時前
修复了这bug我就放心了
回復0
BridgeNomadvip
· 14小時前
经历过足够多的桥接漏洞攻击,我知道 - 这种攻击方式让我真的有了 juno 桥接的创伤后应激反应。
查看原文回復0
frenethvip
· 14小時前
没谁是傻瓜 谁不想白嫖
回復0
NotAFinancialAdvicevip
· 14小時前
改完漏洞矿工不得玩了啊
回復0
retroactive_airdropvip
· 14小時前
修了个寂寞
回復0
GmGmNoGnvip
· 14小時前
又在修bug 解决一个又来一个
回復0
quiet_lurkervip
· 14小時前
按理说矿工该炸锅了
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)