Finney Attackとは何か?
Finney Attackとは、マイナーが自分宛ての支払いを含むブロックを内密に用意し、同じコインで未確認トランザクションを使って商人に支払う攻撃です。もし商人が確認が来る前に商品を渡してしまうと、マイナーは用意していたブロックを公開して支払いを取り消します。レジで保留中の振替を見せておいて、銀行がそれを巻き戻すようなイメージです。
多くの人はFinney Attackがネットワークの過半数支配を必要とすると考えがちですが、それは違います。それは51% attackであり別の話です。Finney Attackは一人のマイナーがブロックを秘密裏に見つけ、そのブロックを公開する前に購入を行うだけで成立します。
Finney Attackの仕組み
流れを端的に説明します。マイナーが自己宛ての支払いを含むブロックを秘密に採掘し、その後同じコインで未確認のトランザクションを使って売り手に支払います。商品を持ち出した後、マイナーは秘密のブロックを公開し、売買を取り消します。
- 準備: 攻撃者はminingに参加しており、ブロックを見つけ中身を選べる立場にあります。
- 秘密: コインを自分に戻す内容のブロックを秘密裏に採掘します。そのブロックを見つける確率はネットワークのhash ratesと運に依存します。
- 支払い: 同じコインで未確認トランザクションを使い、レジで商人に支払います。
- 受け取り: 商人が確認前に商品を渡してしまうと、攻撃者は秘密のブロックを公開します。
- 再編: ネットワークが秘密のブロックを受け入れ、自己宛ての支払いが確定するため、商人への支払いは消えます。攻撃者はコインと商品の両方を得ます。
素早く巧妙で、ゼロ確認の受け入れに対してのみ有効です。
Finney Attackが重要な理由
ここから何を学べばよいでしょうか?
- 利点: この手口の存在を知っていれば、詐欺師に無料で品物を渡すことや資金の損失を避けられます。
- 視点: これはdouble spendingの一種であり、対面取引での焦りにつけ込む攻撃です。
- 関連性: 小売での暗号決済、対面取引、未確認トランザクションを受け入れるマーケットプレイスで話題になります。
失うと痛いものは、最低で1つの確認を待つか、エスクローやライトニングのような決済方法を使ってください。ゼロ確認は少額の購入には問題ないことが多いですが、上限を設定しスタッフに画面を急いで押させないよう教育しましょう。
Finney Attackの主な特徴
特徴は一度知れば分かりやすいです:
- 事前準備: 店舗での購入が始まる前に、自己宛ての支払いを含む秘密のブロックを用意します。
- マイナー: 攻撃者はブロックを採掘できる立場である必要があり、単なるウォレット所有者では成立しません。
- タイミング: 販売とその秘密ブロックの公開の間の短い時間が勝負です。
- 対象: 未確認トランザクションを受け入れる商人や個人が狙われます。
- 範囲: 過半数支配は不要で、切れ味のある手口です。
バリエーション
関連する手口やよくある混同:
- Race: 攻撃者が対立する二つの支払いを同時に流し、商人の支払いが先に見えてから後で別の支払いが確定して失敗することを狙います。
- Vector76: 秘密ブロック生成とネットワーク上の競合を組み合わせた手口で、取引所や大口販売者を狙うことが多いです。
- Premine: これはpre miningとは別で、ローンチ前に供給を割り当てることを指します。
- ツール化: 一部の攻撃者はこれをexploitのようにスクリプト化し、販売が完了した瞬間にブロックを自動公開します。
確認があるのには理由があります。見知らぬ人から未確認の支払いを受け入れると、Finney Attackが起こる可能性があります。特に相手が今すぐ確認ボタンを押すよう急いでいる場合は要注意です。
例
小さな家電店がノー確認の支払いでノートパソコンを販売し、買い手が去った後に秘密裏に採掘されたブロックが現れて販売が取り消される、これが典型的なFinney Attackの例です。
豆知識
この名前はHal Finneyに由来します。彼は初期のビットコイン関係者で、Satoshiからの最初の取引の受取人でもあります。彼は確認を待つ重要性を説明するためにこの手口について書きました。
まとめ
一つだけ覚えておくならこれです:Finney Attackは未確認の支払いを信用したときにのみ成立します。
