二重支払い攻撃:ブロックチェーン取引で「送信」だけを見ても意味がない理由

多くのユーザーは、ブロックチェーン取引が「送信」された時点で資金が安全に到着したと仮定していますが、実際はそれほど単純ではありません。取引所、マーチャント、一般ユーザーにとって重要なのは、取引がブロードキャストされたかどうかではなく、ブロックによって確認されたかどうか、確認数が十分かどうか、そして基盤となるチェーンが再編成のリスクを抱えているかどうかです。これらの概念を理解することは、「二重支払い攻撃」を防ぐための基礎です。
この記事は主にプルーフ・オブ・ワークネットワークに焦点を当てており、確認厚さと累積プルーフ・オブ・ワークが再編リスクの中心です。その他のコンセンサスシステムは異なる最終性メカニズムを使用します。
ダブルスペンディング攻撃とは?
「二重支払い攻撃」とは、攻撃者が同じデジタル資産を二回支払おうとする試みです。
最も直感的な例として、攻撃者が1 BTCしか保有していないが、同時に2つの矛盾する取引を開始するとします。1つはマーチャントまたはプラットフォームに入金、購入、またはサービスの支払いを行う取引であり、もう1つは同じ1 BTCを攻撃者が制御するウォレットアドレスに送金する取引です。両方の取引は同じ資金を消費するため、チェーン上ではいずれか一方のみが有効になります。マーチャントまたはプラットフォームが「まだ安定して確認されていない」取引を早期に信頼すると、攻撃者は後でチェーンの再編成やより長いチェーンによる上書きを悪用し、以前確認された入金記録を無効にすることが可能です——その一方で、資産はすでに攻撃者に解放されています。
したがって、二重支払い攻撃は「資産を複製する」ことではなく、取引の確認が不十分であること、ブロック生成の競合、またはチェーンの再編成を利用して、ビジネスプロセス内で同じ資産を二度使用することを狙っています。
ダブルスペンディング攻撃はなぜ発生するのか?
ブロックチェーンは取引が不可逆であることを強調していますが、この「不可逆性」は取引が送信された直後には通常適用されません。取引がパッケージ化され、伝播され、確認された後、徐々に不可逆性に近づいていきます。
オンチェーントランザクションは一般的に複数のステータスを経ます:
| 状態 | 説明 |
| 作成済み | ウォレットが取引を作成します |
| 放送 | トランザクションはブロックチェーンネットワークにブロードキャストされます |
| 保留中 | マイナーまたはバリデーターがパッケージ化して確認するのを待っています |
| 確認済み | トランザクションがブロックに含まれ、確認数の蓄積が開始されました |
| 失敗 / 削除 / 取り替え | トランザクションに失敗しました、または置き換えられたり削除されたりしました |
リスクは「保留中」ステージおよび「確認済みだが確認数が少ない」ステージで発生しやすいです。これらの段階では、トランザクションは「存在するように見える」ものの、まだ十分に安定していません。ネットワークがフォークした場合、または攻撃者が大幅なハッシュパワーを制御してより長いチェーンを構築した場合、元のトランザクションを含むブロックが破棄され、トランザクション記録が「消える」可能性があります。
これは「チェーンの再編成」と呼ばれるものです。チェーンの再編成は単にレコードを削除するのではなく、ネットワーク全体が別のチェーンを最終的に認識し、元のチェーン上の一部のブロックが無効になることを意味します。入金トランザクションが廃棄されたブランチにのみ存在する場合、プラットフォームが以前確認した入金レコードの有効性が失われる可能性があります。
確認がなぜ如此重要なのでしょうか?
確認回数が多ければ多いほど、トランザクションを元に戻すのが難しくなります。
トランザクションが最初にブロックに含まれるとき、通常は1回の確認しかありません。新しいブロックが生成されるたびに、確認数は増加します——2回の確認、3回の確認、6回の確認、さらには12回の確認まで。確認数が多ければ多いほど、トランザクションを無効にするために巻き戻す必要があるブロック数が増え、攻撃コストも高くなります。
そのため、取引所は通常、0〜1確認までユーザーにcreditingを行いません。この段階ではリスクが高く、特にハッシュパワーが弱い、または51%攻撃やチェーン再編成の歴史があるブロックチェーンでは、より高い確認数が必要になります。
📌 注目の事例:ETC 2019年51%ハッシュパワー攻撃と二重支払い事件
二重支払い攻撃は理論的な脅威ではない。2019年1月、Ethereum Classic(ETC)は、二重支払い取引を伴う大規模な51%攻撃を経験した。
典型的な攻撃プロセス:
| ステップ | アクション |
| 1 | 攻撃者はまずETCネットワークで大幅なハッシュパワーの支配を獲得し、プライベートにより長いチェーンをマイニング可能にしました |
| 2 | 攻撃者はETCを取引所に預けました |
| 3 | 取引所が入金取引が必要な確認回数に達したことを確認した後、攻撃者の口座に資金が入金されました |
| 4 | 攻撃者は取引所でETCを迅速に売却し、USDTやBTCその他の資産に換金して資金を引き出しました |
| 5 | 一方、攻撃者は入金トランザクションを含まないより長いチェーンを秘密裏にマイニングし続けました。 |
| 6 | この長いチェーンがネットワークに公開された際、ネットワークは新しいメインチェーンを受け入れ、取引所が確認していた入金チェーンはロールバックされました。 |
この攻撃パターンの結果:取引所の記録上で「確認済み」とされていた入金が消え、攻撃者はすでに変換された資産を引き出し、二重支払いを完了した。
この事例は重要な事実を示しています:トランザクションがすでにブロックチェーン上に存在しても、基盤となるネットワークのセキュリティが不十分である場合、または攻撃者がブロックを再編成する能力を持っている場合、トランザクションは依然として巻き戻される可能性があります。ブロックチェーントランザクションの「確定性」は絶対的に即座に達成されるわけではなく、確認数が増えるにつれて徐々に強化されます。
🛡️ トランザクション中に二重支払い攻撃を避ける方法
二重支払い攻撃を防ぐことは、「相手のスクリーンショット」や「トランザクションハッシュが存在する」ことに頼ることではありません。適切な確認とリスク管理メカニズムを構築することです。
まず、「ブロードキャスト」を「受信」と扱わないでください
ユーザーがウォレットで「送信済み」と表示されている場合、または取引相手がトランザクションハッシュを提供した場合でも、資金が安全であるとは限りません。ブロードキャストされたということは、取引がネットワークの伝播段階に入ったことを意味するだけで、ブロックによって確認されたことを意味しません。入金の反映、コインの解放、商品の発送、またはサービスの提供は、保留中の状態に基づいて行うことはできません。
第二に、オンチェーン確認状況を確認する必要があります
トランザクションの信頼性を判断するには、最低限以下を確認してください:
-
トランザクションがブロックにパッケージ化されたかどうか
-
現在の確認数はいくつですか
-
取引に異常な置き換え、競合する取引、またはドロップのリスクが含まれるかどうか
リスクの高いシナリオでは、「取引が存在するかどうか」だけでなく、「確認が安定しているかどうか」を確認してください。
第三に、チェーンのリスクレベルに応じて適切な確認回数を設定してください
異なるブロックチェーンには異なるセキュリティレベルがあります。大手でハッシュパワーの高いチェーンと、小規模でハッシュパワーの低いチェーンでは、51%攻撃やチェーン再編成にかかるコストに大きな差があります。リスクの高いチェーンについては、プラットフォームは入金確認のしきい値を引き上げるべきです。大口取引については、さらに高い確認要件を設定すべきです。すべてのケースに同じ基準を適用するのではなく、状況に応じた対応が必要です。
第四に、異常な入金行動に対してリスクコントロール監視を適用してください
以下の行動は追加のレビューをトリガーする必要があります:
| 異常な行動 | リスクの説明 |
| 短期間に複数の大きな入金が発生し、その後迅速に売却と引き出しが行われる | 典型的な二重支払い攻撃の経路 |
| 過去にセキュリティが弱いコインを用いた頻繁な入金 | ハッシュパワーが低いチェーンは攻撃コストが低い |
| 最小確認数に達した直後に資産の引き出しをリクエスト | 不十分な確認の脆弱性を悪用する可能性があります |
| ブロックチェーンエクスプローラー上で異常な遅延、競合の兆候、または不安定な状態が見られる取引 | 可能性のあるチェーンの再編成 |
これらの行動は、二重支払い攻撃の運用パターンと密接に一致することが多いです。
五つ目、支払いスクリーンショットや単一ページのステータスを信じないでください
スクリーンショットは最も偽造が容易で、最も誤解を招きやすいです。マーチャント支払い、オーバーザカウンター取引、または入金の確認においては、チャット記録や支払いのスクリーンショット、口頭の主張ではなく、ブロックチェーンエクスプローラーとシステムリスク管理の検証を常に信頼してください。
六つ目、「不変性」は「即時性」ではないことを理解してください
ブロックチェーントランザクションが十分な確認数に達すると、実際に取り消すのは非常に困難です。しかし、確認数が不足している場合、フォーク、混雑、置き換え、またはチェーンの再編成によりトランザクションは変動する可能性があります。セキュリティ教育における最も一般的な誤解は、「ブロックチェーントランザクションは取り消せない」という言葉を「送信したら絶対に安全」と解釈することです。これが二重支払い攻撃が成功する認知のギャップです。
💎 一般ユーザーとプラットフォームのためのセキュリティーヒント
一般のユーザーにとって、確認前に商品やデジタル資産、サービスを提供しないことが最も重要です。特にオーバーザカウンター取引、ピアツーピア振替、そして見知らぬ人との支払いにおいて、確認をチェックせずにスクリーンショットのみを確認することは極めて高いリスクを伴います。
マーチャントおよびプラットフォームにとって、真に効果的な保護は「手動での経験」ではなく、標準化されたメカニズムです:
-
明確な確認しきい値
-
チェーンごとの差別化されたリスクレベル
-
異常な引き出し経路の特定
-
高リスク資産の入金における審査時間の延長
-
再編成や51%攻撃の歴史のあるコインには注意を高めてください
結論
二重支払い攻撃の本質は、「ハッカーがコインを複製すること」ではなく、攻撃者が不安定に確認されたトランザクションを悪用し、ビジネスプロセス内で「既に支払済み」の錯覚を生み出すことです。ETC 2019年の事例は、基盤となるチェーンに再編成の可能性がある限り、十分に確認されていないトランザクションを最終的に受領済みと見なすべきでないことをすでに示しています。
安全な取引の基本的な原則は、次の1文に集約されます:
確認をスクリーンショットではなく、最終確定性を表面的な状態ではなく見てください。
確認回数が多ければ多いほど、二重支払い攻撃が成功する可能性は小さくなります。
Disclaimer: The information on this page may come from third parties and does not necessarily reflect KuCoin’s views. It is provided for general reference only and should not be interpreted as financial or investment advice.
Virtual asset investments may involve risk. Please carefully assess the product risks and your own risk tolerance. For more information, please refer to our Terms of Use and Risk Disclosure.