This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
ビットコインプロトコルの脆弱性が暴露:時間歪曲攻撃が大規模な難易度操作を引き起こす可能性
ビットコインプロトコルの脆弱性:時間の歪み攻撃
2025年3月、ビットコイン開発コミュニティは「大共識清理」と名付けられたソフトフォーク提案を提出しました。この提案は、ビットコインプロトコルにおける長期的に存在するいくつかの脆弱性や弱点を修正することを目的としており、その中には私たちが最近議論した重複取引の問題も含まれています。もう一つより深刻な脆弱性は「時間の歪み攻撃」と呼ばれ、これが本文で重点的に探討される内容です。
! ビットコインセキュリティ侵害:タイムワープ攻撃
ビットコインブロックタイムスタンプ保護メカニズム
時間の歪み攻撃について議論する前に、現在のビットコインネットワークにおける時間操作保護ルールを理解する必要があります:
中位過去時間(MPT)ルール:新しいブロックのタイムスタンプは前の11個のブロックのタイムスタンプの中央値よりも遅くなければなりません。
未来のブロック時間ルール:新しいブロックのタイムスタンプは、ネットワークノードの中央値時間よりも2時間以上先行してはいけません。また、ノード間で許可される最大時間差は90分であり、これは別の保障です。
MPTルールはブロックのタイムスタンプが過度に遡ることを防ぎ、将来のブロックルールはタイムスタンプが過度に前に進むことを制限します。注意すべきは、過去のタイムスタンプに対して将来のブロックルールのような制限を施すことはできないということで、これはブロックチェーンの初期同期プロセスに影響を与える可能性があります。タイムディストーション攻撃は、はるかに遡ったタイムスタンプを偽造することによって実現されます。
! ビットコインセキュリティ侵害:タイムワープ攻撃
サトシ・ナカモトの「1人足りない」ミス
ビットコインの難易度調整周期は2016個の区塊を含み、10分間の出塊時間で計算すると約2週間になります。マイニングの難易度調整を計算する際、プロトコルは2016区塊ウィンドウの最初と最後の2つの区塊のタイムスタンプの差を計算します。このウィンドウには実際には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年頃に初めて発見され、サトシ・ナカモトの難易度計算の誤りを利用しました。マイニングが完全に中央集権化されていると仮定すると、マイナーはプロトコルが許可する範囲内で任意のタイムスタンプを設定できます。攻撃者はほとんどのブロックのタイムスタンプを前のブロックよりも1秒だけ早く設定し、ブロックチェーンが時間的に遅く進行するようにし、同時にMTPルールを遵守します。時間の進行を最大限に遅延させるために、攻撃者は連続して6つのブロックで同じタイムスタンプを維持し、その後7つ目のブロックで1秒増加させ、このように繰り返します。
この操作はブロックチェーンの時間が実際の時間に対して徐々に遅れる原因となり、同時に難易度が増加し、マイニングがますます困難になります。しかし、攻撃効果を高めるために、攻撃者は各難易度調整周期の最後のブロックでタイムスタンプを実世界の時間に設定します。そして次の周期の最初のブロックは過去に設定され、前の周期の倒数第二のブロックよりもわずかに1秒早くなります。この方法はMTPルールに依然として準拠しており、単一の異常値は11のブロックの中央値に影響を与えません。
この攻撃を実施した後、最初の周期の難易度には影響がありません。しかし、2回目の調整周期から、難易度は著しく低下し始めます。その後、攻撃者は非常に速い速度でブロックを作成でき、多くのビットコインを鋳造し、利益を得ることが可能です。
! ビットコインセキュリティ侵害:タイムワープ攻撃
攻撃実現可能性分析
理論的にはこの攻撃は壊滅的ですが、実際に実施するには多くの課題があります。
! ビットコインセキュリティ侵害:タイムワープ攻撃
考えられる解決策
この脆弱性を修正する方法はいくつかあります:
難易度調整アルゴリズムを変更し、2016ブロックウィンドウ間の時間のスパンを計算し、"差一"エラーを修正します。ただし、これにはハードフォークが必要になる可能性があります。
MTPルールを取消し、各ブロックの時間が厳密に増加することを要求します。しかし、これによりタイムスタンプが過度に前進する可能性や、マイナー間の時計の違いによる問題が生じる可能性があります。
より簡単な解決策は、新しい難易度サイクルの最初のブロックの時間が、前のサイクルの最後のブロックの特定の分数よりも早くないことを要求することです。現在議論されている時間範囲は10分から2時間まで様々です。
最新の大コンセンサスクリアリング提案では、開発者は2時間の制限を採用する傾向があります。この時間帯は、難易度調整周期の目標時間の約0.6%であり、難易度を下方操作する余地を効果的に制限できます。
最終的にどのプランが採用されるにせよ、この長年存在する脆弱性を修正することは、ビットコインネットワークの安全性と安定性をさらに強化することになる。
! ビットコインセキュリティの脆弱性:タイムワープ攻撃