# ビットコインの脆弱性修正:時間の歪み攻撃問題が解決される2025年3月26日、あるビットコイン開発者が、ビットコインプロトコルに存在するいくつかの長年の脆弱性と弱点を修正するための新しい改善提案を提出しました。この"大共識清理"と呼ばれるソフトフォーク提案は、重複取引の問題を解決するだけでなく、さらに深刻な脆弱性である"時間歪攻撃"も修正します。## ビットコインブロックタイムスタンプ保護メカニズム時間の歪み攻撃について議論する前に、現在の時間操作保護ルールを振り返りましょう:1. 中位過去時間(MPT)ルール:ブロックのタイムスタンプは最近の11ブロックの中央値の時間よりも遅くなければなりません。2. 未来のブロック時間ルール: ブロックのタイムスタンプは、ノードのピアの中央値の時間よりも2時間以上早く設定されてはいけません。ノードの時間とローカルシステムの時計との最大許容差は90分です。MPTルールはブロックのタイムスタンプが過度に遡及するのを防ぎ、将来のブロックのルールはタイムスタンプが過度に前に進むのを防ぎます。注目すべきは、過去のタイムスタンプを防ぐために将来のブロックルールのようなものを実施することはできないということです。なぜなら、それは初期のブロックチェーンの同期に影響を与える可能性があるからです。時間の歪み攻撃は、まさに遠くに遡ったタイムスタンプを偽造することで実現されます。! [ビットコインセキュリティ侵害:タイムワープ攻撃](https://img-cdn.gateio.im/social/moments-aa8abf74d491995c6a26218fdae94a29)## 中本聡の計算ミスビットコインの難易度調整周期は2016個の区块を含み、10分の区块目標で計算すると約2週間の時間になります。マイニング難易度調整を計算するために、プロトコルは2016区块ウィンドウ内の最初と最後の2つの区块のタイムスタンプ差を計算します。このウィンドウは実際には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年以降、平均ハッシュレートが増加し続けているためです。! [ビットコインセキュリティ侵害:タイムワープ攻撃](https://img-cdn.gateio.im/social/moments-84e76f095ac839f76d2ca1240f644337)## タイムワープアタック時間歪曲攻撃は2011年に初めて発見され、中本聡の難易度計算の誤りを利用しました。この攻撃では、マイニングが完全に中央集権化されていると仮定し、マイナーはプロトコルが許可する任意のタイムスタンプを設定できます。攻撃者は大多数のブロックのタイムスタンプを前のブロックよりもわずかに1秒早く設定し、ブロックチェーンが時間的にゆっくり進むようにし、同時にMTPルールを遵守します。できるだけ遅く時間を進めるために、マイナーは連続して6つのブロックで同じタイムスタンプを保持し、その後次のブロックで時間を1秒増やします。このようにして繰り返します。これは、ブロックのタイムスタンプが6つのブロックごとに1秒進むことを意味します。この攻撃はブロックチェーンをリアルタイムからますます遅れさせ、難易度が増し、マイニングがより困難になります。しかし、攻撃効果を高めるために、各難易度調整サイクルの最後のブロックで、マイナーはタイムスタンプをリアルワールドの時間に設定します。次のブロック(は新しい難易度調整ウィンドウの最初のブロック)として、その後、前の難易度調整ウィンドウの倒数第二のブロックよりも1秒早く過去に設定されます。これはMTPルールにまだ準拠しており、単一の異常は11のブロックの中央値に影響を与えません。この攻撃を行う際、最初のサイクル後の難易度は影響を受けません。しかし、攻撃開始後の2回目の調整サイクルの後、難易度は下方調整を始めます。その後、マイナーは非常に速い速度でブロックを作成でき、大量のビットコインを生成し、利益を得るために売却する可能性があります。! [ビットコインセキュリティ侵害:タイムワープ攻撃](https://img-cdn.gateio.im/social/moments-21f436beb58cee5eac9817dfd8cf127a)## 攻撃の実現可能性と解決策理論的には、この攻撃が壊滅的な結果をもたらす可能性がありますが、実施するにはいくつかの課題があります。攻撃を実行するには、大部分の計算能力を制御する必要があるかもしれません。誠実なマイナーが実際のタイムスタンプを入力した場合、攻撃の難易度は大幅に増加します。MTPルールと誠実なマイナーのタイムスタンプは、悪意のあるマイナーがタイムスタンプを操作できる程度を制限する可能性があります。さらに、誠実なマイナーが任意の難易度調整ウィンドウの最初のブロックを生成した場合、そのサイクルの攻撃は機能しません。攻撃を実行しづらくするもう一つの要因は、それがすべての人に見えるということです。誰でもタイムスタンプの異常を見ることができ、難易度の調整が行われる前に周囲のタイムスタンプを操作する必要があり、これが私たちに緊急ソフトフォーク修正を展開する時間を与える可能性があります。! [ビットコインセキュリティ侵害:タイムワープ攻撃](https://img-cdn.gateio.im/social/moments-3768d663a24114915f45612fb4754fef)この脆弱性を解決するために、開発者は比較的シンプルな解決策を提案しました。新しい提案では、新しい難易度サイクルの最初のブロックの時間が前のサイクルの最後のブロックの前の特定の分数よりも早くないことが要求されています。現在議論されている時間範囲は10分から2時間までさまざまです。最新の大合意クリア提案では、この時間が2時間に設定されています。この2時間の制限は、難易度調整サイクルの目標時間の約0.6%に過ぎず、したがって難易度を下方に操作する能力を大幅に制限しています。この修正は、時間の歪み攻撃を効果的に防ぎ、無効なブロックの偶発的な生成リスクを最小限に抑えるだけでなく、既存の将来のブロックタイムスタンプのルールにも一致しています。この改善を実施することで、ビットコインネットワークは潜在的な時間歪み攻撃に対してより良く耐えることができ、さらなる安全性と安定性を強化します。! [ビットコインセキュリティの脆弱性:タイムワープ攻撃](https://img-cdn.gateio.im/social/moments-ceb4c636ad7cdbe85d7dd25709ca2dd6)
ビットコインは時間歪み攻撃の脆弱性を修正し、ネットワークの安全性を向上させます。
ビットコインの脆弱性修正:時間の歪み攻撃問題が解決される
2025年3月26日、あるビットコイン開発者が、ビットコインプロトコルに存在するいくつかの長年の脆弱性と弱点を修正するための新しい改善提案を提出しました。この"大共識清理"と呼ばれるソフトフォーク提案は、重複取引の問題を解決するだけでなく、さらに深刻な脆弱性である"時間歪攻撃"も修正します。
ビットコインブロックタイムスタンプ保護メカニズム
時間の歪み攻撃について議論する前に、現在の時間操作保護ルールを振り返りましょう:
中位過去時間(MPT)ルール:ブロックのタイムスタンプは最近の11ブロックの中央値の時間よりも遅くなければなりません。
未来のブロック時間ルール: ブロックのタイムスタンプは、ノードのピアの中央値の時間よりも2時間以上早く設定されてはいけません。ノードの時間とローカルシステムの時計との最大許容差は90分です。
MPTルールはブロックのタイムスタンプが過度に遡及するのを防ぎ、将来のブロックのルールはタイムスタンプが過度に前に進むのを防ぎます。注目すべきは、過去のタイムスタンプを防ぐために将来のブロックルールのようなものを実施することはできないということです。なぜなら、それは初期のブロックチェーンの同期に影響を与える可能性があるからです。時間の歪み攻撃は、まさに遠くに遡ったタイムスタンプを偽造することで実現されます。
! ビットコインセキュリティ侵害:タイムワープ攻撃
中本聡の計算ミス
ビットコインの難易度調整周期は2016個の区块を含み、10分の区块目標で計算すると約2週間の時間になります。マイニング難易度調整を計算するために、プロトコルは2016区块ウィンドウ内の最初と最後の2つの区块のタイムスタンプ差を計算します。このウィンドウは実際には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年以降、平均ハッシュレートが増加し続けているためです。
! ビットコインセキュリティ侵害:タイムワープ攻撃
タイムワープアタック
時間歪曲攻撃は2011年に初めて発見され、中本聡の難易度計算の誤りを利用しました。この攻撃では、マイニングが完全に中央集権化されていると仮定し、マイナーはプロトコルが許可する任意のタイムスタンプを設定できます。攻撃者は大多数のブロックのタイムスタンプを前のブロックよりもわずかに1秒早く設定し、ブロックチェーンが時間的にゆっくり進むようにし、同時にMTPルールを遵守します。
できるだけ遅く時間を進めるために、マイナーは連続して6つのブロックで同じタイムスタンプを保持し、その後次のブロックで時間を1秒増やします。このようにして繰り返します。これは、ブロックのタイムスタンプが6つのブロックごとに1秒進むことを意味します。
この攻撃はブロックチェーンをリアルタイムからますます遅れさせ、難易度が増し、マイニングがより困難になります。しかし、攻撃効果を高めるために、各難易度調整サイクルの最後のブロックで、マイナーはタイムスタンプをリアルワールドの時間に設定します。次のブロック(は新しい難易度調整ウィンドウの最初のブロック)として、その後、前の難易度調整ウィンドウの倒数第二のブロックよりも1秒早く過去に設定されます。これはMTPルールにまだ準拠しており、単一の異常は11のブロックの中央値に影響を与えません。
この攻撃を行う際、最初のサイクル後の難易度は影響を受けません。しかし、攻撃開始後の2回目の調整サイクルの後、難易度は下方調整を始めます。その後、マイナーは非常に速い速度でブロックを作成でき、大量のビットコインを生成し、利益を得るために売却する可能性があります。
! ビットコインセキュリティ侵害:タイムワープ攻撃
攻撃の実現可能性と解決策
理論的には、この攻撃が壊滅的な結果をもたらす可能性がありますが、実施するにはいくつかの課題があります。攻撃を実行するには、大部分の計算能力を制御する必要があるかもしれません。誠実なマイナーが実際のタイムスタンプを入力した場合、攻撃の難易度は大幅に増加します。MTPルールと誠実なマイナーのタイムスタンプは、悪意のあるマイナーがタイムスタンプを操作できる程度を制限する可能性があります。さらに、誠実なマイナーが任意の難易度調整ウィンドウの最初のブロックを生成した場合、そのサイクルの攻撃は機能しません。
攻撃を実行しづらくするもう一つの要因は、それがすべての人に見えるということです。誰でもタイムスタンプの異常を見ることができ、難易度の調整が行われる前に周囲のタイムスタンプを操作する必要があり、これが私たちに緊急ソフトフォーク修正を展開する時間を与える可能性があります。
! ビットコインセキュリティ侵害:タイムワープ攻撃
この脆弱性を解決するために、開発者は比較的シンプルな解決策を提案しました。新しい提案では、新しい難易度サイクルの最初のブロックの時間が前のサイクルの最後のブロックの前の特定の分数よりも早くないことが要求されています。現在議論されている時間範囲は10分から2時間までさまざまです。最新の大合意クリア提案では、この時間が2時間に設定されています。
この2時間の制限は、難易度調整サイクルの目標時間の約0.6%に過ぎず、したがって難易度を下方に操作する能力を大幅に制限しています。この修正は、時間の歪み攻撃を効果的に防ぎ、無効なブロックの偶発的な生成リスクを最小限に抑えるだけでなく、既存の将来のブロックタイムスタンプのルールにも一致しています。
この改善を実施することで、ビットコインネットワークは潜在的な時間歪み攻撃に対してより良く耐えることができ、さらなる安全性と安定性を強化します。
! ビットコインセキュリティの脆弱性:タイムワープ攻撃