8月1日のビットコイン騒動がいよいよ盛り上がって来た(?)感じです。

当初懸念されていたようなSegWit2xのフォークは起こらない可能性が高いようですが、新たにBitmain主導のBitcoinABC(BIP148)によるフォークが多くのマイナーに受け入れられていたりと目まぐるしい変化ですね(^-^;

さて、ハードフォーク・リスクのひとつとしてリプレイアタックが挙げられますが、ハードフォークと同じように良く分かっていない人も多いのではないでしょうか。

良い機会(?)なので簡単にリプレイアタックについてまとめておきます。

ハードフォークが起こるとビットコインはどうなるの?

ハードフォーク、ビットコイン分裂と聞くとビットコインが二つ(以上?)に別れてしまうようなイメージですが、これは手持ちのビットコインが50:50に別れてしまうわけではありません。(価値はどうか分かりませんが)

例えばハードフォーク前に100BTC持っていたとして、ハードフォークによってBTC(A)とBTC(B)に別れたとしたら、どちらのコインも100BTC持つことになります。

『なんだ、どちらのコインも100BTC貰えるなんてラッキー!』

と秘密鍵を完全に管理している状態であれば大丈夫なのですが、脆弱な取引所にBTCを預けていた場合はリプレイアタックによって資産を失うことになりかねないので注意が必要です。

リプレイアタックってなに?

『リプレイアタック』というのは、そもそもビットコインだけの用語ではなくて、情報ネットワークや情報システムに対して【不正アクセス】する方法のひとつです。

直訳すれば反射攻撃、反復攻撃とでも言えるでしょうか。

ビットコインにおけるリプレイアタックは『不正な出金を繰り返す』という意味となります。

例えば、BTCを預けていた取引所が『ハードフォークに対応していない取引所』だとします。

非対応というのは、分かりやすく言えばフォークによって分かれたBTCを区別して取り扱えないということです。

なので、あるユーザーがBTCを引き出す操作を行った場合、BTC(A)、BTC(B)の両方を引き出すことに成功してしまいます。

(例えば上図のように5BTCを引き出すと、5BTC(A)、5BTC(B)を引きだせてしまいます。)

逆に片方のBTCを取引所に戻すと?

脆弱な取引所は分裂したBTCを区別して扱えないため、リプレイアタックをする攻撃者は、任意のBTC(B)を別のウォレットに移し、もう片方のBTC(A)を取引所に戻します。

すると…?

なんと、両方のBTCが戻って来たと取引所は錯覚してしまいます。

そして、攻撃者が再びBTCを引き出す作業を行うと…?

なんと、またBTC(A)とBTC(B)の両方を引きだせてしまうのです。

この作業を繰り返すと…?

なんと、なんと、5BTCの入出金を繰り返す(リプレイアタック)だけで取引所にある任意のBTCを全て不正に引き出すことも可能になってしまいます。

わずか5BTCの入出金を繰り返すだけで100BTCを引き出すことも可能?

どうしてこんなことが出来てしまうの?

取引所は日々大量の送受信を機械的に行っていますから、私たちがウォレットで一つ一つの送金を管理しているわけではありません。

なので取引所はリプレイ攻撃に対して脆弱であるのでは?と言われるんですね。

直近の対策としてBitFlyerやCoinCheckはハードフォーク予定日前後の数日間、取引を停止しすると発表しています。

リプレイアタックに備えるには?

リプレイアタックは秘密鍵を厳重に保管している1ユーザーに対しては仕掛けるのが非常に困難です。

やはり、ハードフォーク前にハードウェアウォレットやペーパーウォレットに保管しておくのが最も安全と言えるでしょう。

(ハードフォークに限らず、常にその方が安全です)

落ち着くまで取引しない

リプレイアタックの逆もしかり、分裂したコインを上手く分けて扱えない取引所やウォレットにBTCを送った場合、意図しない方のBTCを送ってしまったり、送信先で消失してしまうリスクもあります。

8月1日にハードフォークが行われた場合、対応が落ち着くまでに2~3日掛かると言われているので、それまではビットコインの送受信はしない方が安全です。

暗号通貨ホルダーならそろそろ持っておきましょう

まとめ

  • ハードフォークが行われると、分裂したコイン全てでフォーク前の枚数を所持することになります。
  • リプレイアタックは分裂したコインを区別して扱えないだろう取引所が標的にされます。
  • リプレイアタックが成功すると、取引所に保管されているコインを不正に引き出すことができてしまいます。
  • 各取引所はハードフォーク予定日前後に取引を停止してリプレイ攻撃等の攻撃・不具合に備えます。
  • 秘密鍵を厳重に管理して、ハードウェアウォレットやペーパーウォレットでホールドするのが安全です。
  • ハードフォークが落ち着くまで(2~3日)は、ビットコインのやりとりは控えた方が良いでしょう。