Race Attackとは何ですか?
Race Attackは、ほぼ同時に二つの競合する暗号取引を送信し、望ましくない方ではなく別の方が先に受理されることを期待する行為です。これはゼロコンファーム支払いを受け付ける店舗に対する典型的な手口です。例えると同じ口座から二枚の小切手を出して、窓口が自分に有利な方を先に処理するかに賭けるようなものです。
「Race AttackはReplace by Feeが必要だ」必ずしもそうではありません。RBFは関連しますが、明示的な置換ルールがなくてもRace Attackは発生し得ます。そのためトランザクション置換攻撃とは異なります。
Race Attackの仕組み
店のカウンターで誰かが暗号通貨で支払う場面を想像してください。コーヒーを受け取りつつコインを手元に残したい。手口は以下の通りです。
- ステップ1: 攻撃者は同じ入力を使う二つの取引を作り、受取人を変えます。
- ステップ2: 一方を店側に送り、同時にもう一方を別の ノード に大量に送信してより早く伝播することを狙います。
- ステップ3: 店は最初に届いた方を見て支払い済みと判断し、商品を渡します。
- ステップ4: マイナーが競合する取引のどちらか一方を確認します。ブロックが生成されるともう一方はネットワークで拒否されます。
- ステップ5: 確認された方が攻撃者の狙い通りなら、店は代金を受け取れず教訓だけが残ります。
そうです。やり方はそれだけで、要はタイミングが肝心です。
なぜRace Attackが問題になるのか
では、誰かがこれを試したらどうなるでしょうか?
- 利点: Race Attackを理解していれば支払いルールを適切に設定でき、実際に決済されない約束で商品を渡すことを避けられます。
- 視点: これはより広い二重支払い攻撃の一種ですが、高価な装備や大規模な資金を必要としません。
- 関連性: POSウォレット、電子商取引、ゼロコンファーム支払いを検討するサービスなどでこの話題に出会います。
配送が必要な商品や実物の価値があるものを販売する場合は、引き渡す前に一回以上のトランザクション確認を待ってください。対面での少額購入では上限を設け、競合を検出するウォレットを使うと安心です。
Race Attackの主な特徴
Race Attackを特徴づける点:
- 即時性: 最初のブロック確認の前に事が進みます。
- 競合性: 二つの取引が同じ入力を使い、確認されるのはどちらか一方だけです。
- 速度: 伝播とマイナーの選択が勝敗を左右します。高価な機材は不要です。
- 違い: 51%攻撃やマイニングの支配を必要としません。 51%攻撃 を伴う必要はありません。
バリエーション
Race Attackには関連するいくつかのタイプがあります:
- クラシック: ほぼ同時に二つの競合する取引がブロードキャストされます。
- フィニー: マイナーが支払いを含むブロックを事前に採掘し、商人に支払ってからそのブロックを公開します。
- Vector76: 事前採掘ブロックとタイミングを組み合わせて取引所などを騙す手口です。
- RBF: 目的は似ていますが、純粋な伝播競争ではなく手数料に基づく置換ルールに依存します。
ネットワークの接続構成は重要です。攻撃者が多くのピアを支配したり偽の識別を使ったりすると成功確率が上がります。だからこそRace Attackの防御ではシビル攻撃がよく話題になります。
例
詐欺師がゼロコンファーム送金でキオスクに支払いをし、その後競合する取引をマイナーに向けて競わせて勝ち、画面には一時的に支払い済みと表示されてもキオスクは代金を受け取れない、という状況です。
豆知識
Race Attackは初期のビットコインフォーラムでも議論されており、サトシの「複数の確認を待て」という昔ながらの助言は今でも有効です。古典的な助言とインターネットの議論が交差する話です。
まとめ
一言で言えば: Race Attackはゼロコンファームを狙ったタイミングを操る手口です。少し待てば問題にならなくなります。
