2017年はビットコインからハードフォークした仮想通貨がいくつも登場しましたね。
取引所によってはビットコインと同量のコインが付与されたりしました。
付与によってビットコインキャッシュを手に入れた方も結構いらっしゃるのではないかと思います。
しかし嬉しいことばかりではなく、ハードフォークの後はリプレイアタックという攻撃をされると資産を失ってしまう危険性もあります。
そこで今回はリプレイアタックの意味やビットコインゴールド がリプレイアタック対策を行っているのかを調べてみました。
リプレイアタックとはどういう意味?
仮想通貨においてリプレイアタックとは、ハードフォークした後に利用者の知らないうちに他者によって不正に送金されてしまう攻撃方法です。
ハードフォーク直後にどちらかのコインを送金した時の送金記録を使ってもう一方の不正に送金されてしまうことです。
送金記録がポイントとなるので、詳しく説明します。
私たちがビットコインを送金するときは送金先のアドレスとビットコインを指定するという操作をしますね。
その裏側では、以下の流れで送金が行われます。
2.取得した公開鍵で、送信するデータを暗号化する。暗号鍵で署名し受信者のビットコインアドレスへ送信
3.受信者は、受け取った暗号化されたデータを受信者の秘密鍵で暗号を解く
4.送られたデータと受信したデータが一致すると有効になる
公開鍵は誰でも見ることができるものですが、秘密鍵は公開されず、セキュリティ上誰にも知られてはいけないものです。
しかし、分岐後は別々のブロックチェーンであっても同じ秘密鍵を使用します。
ハードフォーク後に片方のどちらかのコインを送金した時に悪意のある人が送金記録から秘密鍵を特定し、もう一方のコインを不正に送金されてしまうリプレイアタックが起こってしまうのです。
通常のビットコインのブロックチェーンであれば同じトランザクションを複数回作ることはできません。
ハードフォークによって類似したブロックチェーンが生まれることで起きてしまうのです。
ビットコインゴールドのリプレイアタック対策
リプレイアタック対策とは、ハードフォークしたそれぞれのブロックチェーン上でリプレイアタックによる取引かどうか判断し、取引をさせないことです。
リプレイアタックへの対策はリプレイプロテクションとも呼ばれます。
ビットコインゴールドのホームページによると2017年11月1日に2つのリプレイアタック対策を実装した事を発表しました。
- SIGHASH_FORK_ID
- オプトインリプレイプロテクション
それぞれ簡潔にご説明します。
・SIGHASH_FORK_ID
ビットコインキャッシュにも採用されているリプレイアタック対策で、トランザクション内にSIGHASH_FORK_IDというタグのようなものをつけておきます。
ビットコイン:タグなし
ビットコインキャッシュ:0
ビットコインゴールド:79
(ビットコインゴールドの79は金の原子番号が由来です。)
それぞれのブロックチェーン上でタグのついていないトランザクションがあったらリプレイアタックによる取引ということがわかる仕組みです。
・オプトインリプレイプロテクション
オプトインとは選択可能という意味です。
簡単に説明すると、ブラックリストに入っているアドレスやトランザクション内のアウトプットの情報に対して「ごく少額のビットコインゴールドを送金する」という履歴を目印代わりに残します。
この履歴があるとリプレイアタックの可能性があると判断され、取引ができない仕組みです。
どちらのリプレイアタック対策も、不正に作られたトランザクションを認識させてリプレイアタックを防ぐという点は共通していますね。
日本国内の取引所では「ビットコインゴールドがリプレイアタックを実装したらビットコイン保有者に付与する」対応を予定しているところがいくつかあります。
ビットコインゴールドに対する各取引所の対応についてはこちらの記事に詳しく書いています。
リプレイアタック対策が実装されているかどうかはしばらくの間取引の様子を見て、リプレイアタックの被害がないことを確認しているようです。
以上、リプレイアタックについてご紹介しました。
個人でリプレイアタックへの対策はハードフォーク後はしばらく取引を行わないということだそうです。
また、ビットコインゴールド 公式ホームページによると、リプレイアタック対策は行われているものの、外部からは認められていないようですね。
今後、ビットコインゴールド に実装されるのか注目したいと思います。
最後までお読み頂いてありがとうございました。