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.
ビットコインタイムワープ攻撃の脆弱性分析:原理、影響、修正
ビットコインのセキュリティ脆弱性:時間歪曲攻撃
最近、ビットコイン開発者のAntoine Poinsotが「大共識清理」と呼ばれるソフトフォーク提案を提出しました。この提案は、ビットコインプロトコルに長年存在するいくつかの脆弱性や弱点を修正することを目的としており、その中には最近議論された重複取引の問題や、この記事で重点的に探討するより深刻な「時間歪曲攻撃」の脆弱性が含まれています。
! ビットコインセキュリティ侵害:タイムワープ攻撃
ビットコインブロックタイムスタンプ保護メカニズム
時間の歪み攻撃について議論する前に、現在の時間操作保護ルールを理解する必要があります:
中位過去時間(MPT)ルール:ブロックのタイムスタンプは前の11ブロックの中位時間よりも遅くなければなりません。
未来のブロック時間ルール:ブロックのタイムスタンプはノードのピアの中央値から2時間以上を超えてはならない。ノードの時間とローカルシステムクロックの最大許容差は90分である。
MPTルールはブロックのタイムスタンプが過去から遠く離れすぎるのを防ぎ、未来ブロックのルールはタイムスタンプが過度に未来に入ることを制限します。特に注意すべきは、過去のタイムスタンプを防ぐために未来ブロックのルールに似たメカニズムを実施することはできないということです。これは初期ブロックチェーンの同期に影響を与える可能性があるからです。タイムディストーション攻撃は、まさに古代のタイムスタンプを偽造する可能性を利用しています。
! ビットコインセキュリティ侵害:タイムワープ攻撃
サトシ・ナカモトの「1人足りない」ミス
ビットコインの難易度調整周期は2016個のブロックを含み、10分の目標ブロック生成時間で計算すると約2週間です。マイニング難易度調整を計算する際、プロトコルは関連する2016ブロックウィンドウ内の最初と最後のブロック間のタイムスタンプの差を計算します。この2016ブロックのウィンドウは実際には2015個のブロック間隔を含みます(つまり2016から1を引いたもの)。したがって、正しい目標時間は60秒 × 10分 × 2015個の間隔 = 1,209,000秒です。しかし、ビットコインプロトコルは目標計算に2016という数字を使用しています:60秒 × 10分 × 2016 = 1,209,600秒です。これは典型的な1つの誤りであり、中本聡がブロックとブロック間隔の概念を混同した可能性があります。
このエラーは、目標時間があるべきよりも0.05%長くなる原因となります。実際には、ビットコインの目標間隔時間は10分ではなく、10分0.3秒です。このバグは一見些細に思えますが、ビットコインの起動以来、平均ブロック間隔は9分36秒であり、明らかに10分よりも少なくなっています。これは主に2009年以降、平均ハッシュレートが増加しているためです。これが、最近の半減期が2024年4月に発生した理由であり、2025年1月ではない理由を説明しています。実際、私たちは進捗を前倒しにしました。長期的には、価格とハッシュレートが安定してくると、この0.3秒の誤差が私たちが元の進捗に戻るのに役立つかもしれません。
! ビットコインセキュリティ侵害:タイムワープ攻撃
タイムワープアタック
タイムワープ攻撃は2011年頃に初めて発見され、サトシが難易度計算で犯した誤りを利用します。マイニングが完全に中央集権化されていると仮定すると、マイナーはプロトコルが許す範囲内で任意のタイムスタンプを設定できます。攻撃者は、大多数のブロックのタイムスタンプを前のブロックよりもわずかに1秒早く設定し、可能な限り遅くブロックチェーンの時間を進めながら、MTPルールを遵守します。時間の進行を最大限に遅らせるために、マイナーは連続して6つのブロックで同じタイムスタンプを保持し、7つ目のブロックで1秒時間を増やし、このループを繰り返します。
この攻撃は、ブロックチェーンの時間が実際の時間よりも遅れる原因となり、同時に難易度が継続的に上昇し、マイニングがますます困難になります。しかし、攻撃の効果を強化するために、各難易度調整周期の最後のブロックで、マイナーはタイムスタンプをリアルワールドの時間に設定します。その後、新しい難易度調整周期の最初のブロックのタイムスタンプは過去に戻され、前の周期の倒数第二のブロックよりもわずかに1秒早く設定されます。この操作は依然としてMTPルールに準拠しており、単一の異常は11のブロックの中央値に影響を与えません。
この攻撃を実施した後、最初の周期の難易度には影響がありません。しかし、2回目の調整周期から、難易度は下がり始めます。この時、マイナーは非常に速い速度でブロックを作成でき、短期間で大量のビットコインを生み出すことができ、不正な利益を得る可能性があります。
! ビットコインセキュリティ侵害:タイムワープ攻撃
攻撃の実現可能性と課題
理論的にはこの攻撃は壊滅的なものであるが、実際の実施には多くの課題がある。
ソリューション
この脆弱性を修正するためのいくつかの方法があります:
難易度調整アルゴリズムを変更し、2016ウィンドウ内のブロック間の時間間隔を計算し、完全に差分エラーを修正します。しかし、これにはハードフォークが必要になる可能性があります。
MTPルールをキャンセルし、各ブロック内の時間が常に前に進むことを要求します。しかし、これは時間が遠い未来に固定される可能性があり、システムクロックを使用しているマイナーに問題を引き起こす可能性があります。
より簡単な解決策は、新しい難易度サイクルの最初のブロックの時間が、前のサイクルの最後のブロックの特定の分数前よりも早くないことを要求することです。ポワンソの大共通合意クリア提案では、この時間を2時間に設定しています。
この2時間の制限には以下の利点があります:
この方法では、攻撃者が各サイクルで難易度を約0.6%下げることが可能ですが、これは一度きりの変化であり、重ねて適用することはできません。全体として、この解決策はネットワークの安全性を保護し、システムの安定性を維持する間で良いバランスを達成しています。
! ビットコインセキュリティの脆弱性:タイムワープ攻撃