🎉 Gate xStocks 交易開啓啦,現貨、合約、Alpha齊上線!
📝 在Gate廣場發帖,曬出你的交易體驗或精彩截圖,瓜分$1,000大獎池!
🎁 廣場優質創作者5名,每人獨享$100合約體驗券!
🎉 帖文同步分享到X(推特),瀏覽量前十再得$50獎勵!
參與方式:
1️⃣ 關注 @Gate廣場_Official
2️⃣ 帶 #Gate xStocks 交易体验# ,原創發帖(不少於20字,僅用活動標籤)
3️⃣ 若分享到推特,請將連結提交表單:https://www.gate.com/questionnaire/6854
注:表單可多次提交,發布更多帖文可提升獲獎機會!
📅 7月3日16:00—7月9日24:00(UTC+8)
詳情:https://www.gate.com/announcements/article/45926
每一條體驗,都有機會贏取大獎!快在Gate廣場show出你的操作吧!
比特幣時間扭曲攻擊漏洞解析:原理、影響與修復方案
比特幣安全漏洞:時間扭曲攻擊
近日,比特幣開發者Antoine Poinsot提出了一項名爲"大共識清理"的軟分叉提案。該提案旨在修復比特幣協議中長期存在的幾個漏洞和弱點,其中包括我們最近討論過的重復交易問題,以及本文將重點探討的更爲嚴重的"時間扭曲攻擊"漏洞。
比特幣區塊時間戳保護機制
在探討時間扭曲攻擊之前,我們需要了解當前的時間操縱保護規則:
中位過去時間(MPT)規則:區塊時間戳必須晚於前11個區塊的中位時間。
未來區塊時間規則:區塊時間戳不得超過節點對等體中位時間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個區塊的中位數。
實施這種攻擊後,第一個週期的難度不會受到影響。但從第二個調整周期開始,難度將開始下調。此時,礦工可以以極快的速度創建區塊,可能短時間內創造大量比特幣,從而獲取不當利益。
攻擊的可行性與挑戰
盡管理論上這種攻擊具有毀滅性,但實際實施面臨多重挑戰:
解決方案
修復這個漏洞有幾種可能的方法:
改變難度調整算法,計算不同2016窗口中區塊之間的時間跨度,並完全修復差一錯誤。但這可能需要硬分叉。
取消MTP規則,要求時間在每個區塊中總是向前移動。但這可能導致時間卡在遠未來,並給使用系統時鍾的礦工帶來麻煩。
一個更簡單的解決方案是要求新難度週期的第一個區塊的時間不早於前一周期最後一個區塊之前的特定分鍾數。Poinsot的大共識清理提案中將這個時間設定爲2小時。
這個2小時的限制有以下優點:
雖然這仍然允許攻擊者每個週期將難度向下操縱約0.6%,但這只會是一次性變化,無法疊加。總的來說,這種解決方案在保護網路安全和維持系統穩定性之間取得了良好的平衡。