←前の記事 次の記事→

リプレイアタック(Replay Attack)とは?

暗号通貨のリプレイアタックとは何か。


Translate this article in English

リプレイアタック(Replay Attack)とは?
リプレイアタックとは。(BTC Keychain)

ハードフォーク騒動

暗号通貨プロジェクトの多くは基本的にオープンソースであるため、誰もがそれを利用して開発を行うことが出来る。

当然ながらビットコイン(Bitcoin)もまたオープンソースであり、多くの開発者がビットコインのソースをもとに別のプロジェクトを生み出している。

以前話題となったビットコインキャッシュ(Bitcoin Cash)はビットコインからハードフォーク(分岐)したプロジェクトで、マーケットに大きな影響を与えた。

最近ではビットコインゴールド(Bitcoin Gold)もまた大きな話題となっており、こちらもビットコインからハードフォークされたプロジェクトである。

そして11月にはSegwit2Xというプロジェクトがハードフォークによって誕生する予定であり、これも暗号通貨界隈に何らかの影響を与えるのは確実だろう。

これらプロジェクトで共通の話題とされるのが、リプレイアタックという存在だ。

リプレイアタックは分岐時に派生した元帳を悪意のある者が利用することで、元の送信者の元帳から通貨を勝手に送信させる(盗み取る)攻撃であり、攻撃された者の資産が大きく失われる可能性がある。

この記事ではリプレイアタックに関する詳細、および対策法を紹介していく。

(本文前に)簡単な3行まとめ

  • リプレイアタックは分岐後に元の送信者の元帳から通貨を勝手に送信させる攻撃。
  • 攻撃はブロックチェーンが類似していることや秘密鍵の流出が原因。
  • 対策としてハードウェアウォレットの使用や秘密鍵の厳重管理が挙げられる。

ハードフォークとは

そもそもハードフォークとは何か。

暗号通貨の世界にはまだまだ多くの初心者や技術に精通していないユーザーが数多く存在しているため、意味が分からないという人も多いだろう。

ハードフォーク(Hardfork)とは簡単に言うならば、すべてのユーザーがアップグレードしなければならないアップデートのことである。

フォーク(fork)は分岐という意味であり、ハードフォークによるアップデートはシステムが大きく変更されるため、ネットワークは完全に分岐する。

なお、簡単な調整でネットワークを分岐する必要が無い場合にはソフトフォーク(Softfork)と呼ばれる。

BTCとBTUの議論

実際にハードフォークに至った例としてビットコインコア(BTC -Bitcoin Core)とビットコインアンリミテッド(BTU – Bitcoin Unlimited)の議論が挙げられる。

以前からビットコインは使用者が増えたことによってネットワークが遅延し、送金が遅れる不具合が発生している。

その対策として、ビットコインコアは元のコードをそのまま維持しつつ、SegWitを統合したソフトフォークを導入したいと考えていた。

Segwitはトランザクション効率を向上させる機能であり、実際に導入することでネットワーク遅延の影響は少なくなる。

一方、ビットコインアンリミテッドはビットコインの元のコードを変更することによって、ビットコインのブロックサイズ(許容量)を1MBから2MBに増やしたいと考えていた。

これは文字通りブロックサイズを増やすことでビットコインのトランザクション効率を上げる方法である。

BTUの変更は元のコードを変更する必要があるため、これをハードフォーク(分岐)と呼ぶ。

ハードフォークではシステムが異なるためにブロックチェーンネットワークが完全に分かれ、分岐後はBTCネットワークおよびBTUネットワークの2つになる。

分岐前の通貨

ここで気になるのが、もし分岐される前から通貨を持っていた場合にその通貨がどうなるのかである。

結論から言うと分岐された後のブロックチェーンにある通貨はどちらも自分のものになる。

BTCとBTUのケースでは、分岐後にBTC残高とBTU残高の両方が得られるのだ。

単純な話、分岐前に持っていた通貨が倍増していることと同じだ。

ビットコインキャッシュやビットコインゴールドのハードフォーク前にビットコインの買いが多くなるのもこれが理由である。

ただし通貨が倍増するとはいえ、市場における価値はそれぞれ同じではないため、価値が倍増することはない。

というようにハードフォークにはメリットがあるように見えるが、重要な点が存在している。

ハードフォーク後の通貨はどちらも同じプライベートキー(秘密鍵)を使用しているのだ。

秘密鍵は暗号通貨資産を守っている最重要要素であり、秘密鍵が同じということはリプレイアタックと呼ばれる別の問題が発生する可能性がある。

リプレイアタック

先述したように、秘密鍵が同じということは攻撃者が他のブロックチェーン上で行われたトランザクションを再利用する機会を与える。

そしてどちらの通貨も分岐による対策がなれていない場合には分岐後のトランザクションは両方のチェーンで有効であり、BTCノードおよびBTUノードの両方がそれを受け入れている。

これにより、リプレイアタックによる攻撃が可能となる。

攻撃例

例えば、あなたはビットコインブロックチェーンを用いて何かを購入するために5BTCのトランザクションを実行したとする。

トランザクションを署名し、あなたは販売者のBTCアドレスに送信する(販売者にはBTCとBTUの両方のアドレスを有している)。

送信後あなたはBTUウォレットをチェックすると、5BTUがあなたのBTUウォレットから販売者のBTUアドレスへ送信されていることを確認する。

これは、BTCブロックチェーン上でBTUブロックチェーン上のノードに送信したトランザクションを誰か(受信者である販売者が攻撃したと考えられる)が再支払/再ブロードキャストしたためである。

しかしBTUノードはトランザクションがどのチェーンに属しているのかを特定する方法が無い。

何故ならこの署名されたトランザクションは、BTUブロックチェーンとBTCブロックチェーンの両方で有効であるためである。

このシナリオはBTUを送信したらBTCが送信されていたという、逆のパターンも想定される。

取引所での攻撃例

リプレイアタックには取引所への攻撃も行われる。

何の対策もしていない取引所でハードフォーク後に通貨を引き出した場合、通貨の同一性を認識しないためにBTCおよびBTU両方の通貨が引き出されてしまう。

これを悪用し、取引所が扱う通貨(BTC)のみを取引所に戻して別の通貨(BTU)は他のウォレットに保管する、を繰り返した場合、一定のBTCを持っているだけで取引所内にあるBTUを全て引き出すことが可能となる。

価値の無い通貨であれば同時に引き出せても問題はないが、価値が生み出されている通貨であればその損害は大きなものとなるだろう。

これは秘密鍵を使わないプログラム使用している、取引所特有の問題である。

ただ、現在の取引所では大きく話題となっているハードフォークが発生する場合にはスナップショット(残高記録)を保持しているため、それぞれ別物として取り扱いはされているようだ。

両方のチェーンで取引が有効な理由

トランザクションはブロックチェーンが異なっていても、個々のトランザクションや元帳の履歴は類似しているため、両方のブロックチェーンで取引が有効になる。

ビットコインのトランザクションを増やすためのハードフォークという解決法は、各トランザクションレベルではなくブロックレベルで行われている。

このブロックにはすべてのトランザクションが含まれている。

したがって、1つのブロックチェーン上の任意のタイプの通貨(BTC / BTU)をアドレスAからアドレスBに移動するトランザクションは、別のブロックチェーン上で通貨を移動させてしまうことが可能であり、トランザクションは両方のチェーンで有効となっている。

これを悪意のある者が元の送信者のトランザクションをコピーし、もう一つのブロックチェーン上でコピーした取引を実行することで、元の送信者が意図しない送金が行われてしまう。

可能な対策

現段階で考えられる対策は以下の通りである。

トランザクションIDなどを変更する

トランザクションIDをはじめとしたパラメータを変更することで取引は別物となるが、これにはデメリットもある。

このような変更を行った場合には現在配布されているビットコインウォレットはすべて廃止され、再び互換性を持たせるためには完全な再設計が必要になる。

これは解決策の一つであるといえるが、理想的な解決策では無い。

取引を行わない

ハードフォーク前後にこのような問題が発生している場合には、状況が落ち着くまでトランザクションの送信自体を行わないことをおすすめしている。

まず、フォーク直後の通貨にはいくつかのリスクが存在している。

どちらの通貨にもリプレイプロテクションが欠如していることや、ハッシュパワーおよびコミュニティサポートの欠乏がある。

そのため、分岐直後の取引にはリスクがあることを認識しなければならない。

最終的にこれらの問題は時間の経過と共に解決するか、どちらかの通貨が消え去る(価値がなくなる)かに行き着くだろう。

リプレイプロテクションの搭載

リプレイアタックはリプレイプロテクションというリプレイアタックから保護する機能を追加すれば解決する。

このプロテクションを利用することで、ハードフォークとなった場合でもお互い完全に独立した存在となるため、リプレイアタックを行うことは出来ない。

なお、ビットコインキャッシュはSIGHASH_FORKIDというリプレイプロテクション機能を追加しており、リプレイアタックから保護されている。

ハードウェアウォレットの使用

トレザー(Trezor)やレジャーナノS(Ledger Nano S)などのハードウェアウォレットには、リプレイアタックから保護されるプロセスがあると主張している。

そのため、ハードウェアウォレット経由での取引を行うことで、リプレイアタックからの保護が可能となる。

秘密鍵は厳重に管理

そもそも、リプレイアタックは秘密鍵が流出しなければ攻撃を行うことは出来ない。

鍵の掛かった金庫には鍵が無ければ中身を取り出せないように、暗号通貨でも秘密鍵が無ければ資産を送信することが出来ないからだ。

そのため、秘密鍵の無い取引所に資産を保管することはおすすめできないが、もし取引所に置いておきたいと考えるならば二段階認証などのセキュリティ設定は確実に設定しておく必要がある。

今後も関連したハードフォークの発生は十分考えられるため、各々が適切に資産の管理を行わなければならないだろう。

▲ サイト最上部へ移動 ▲