とってもやさしいビットコイン

とってもやさしいビットコイン

ビットコインや仮想通貨の知識が全くない初心者の方でもビットコインや仮想通貨がどういうものなのか分かりやすく理解できるブログを目指してます。

仮想通貨のリプレイアタック(攻撃)とは <初心者向け>

f:id:jyutakugyoseiku:20171005150434p:plain

 

仮想通貨が分裂(フォーク・分岐)するかどうかの議論が起きるとその新たに誕生する可能性のある通貨に「リプレイアタック(攻撃)」が無いと困る、等との問題が起きます。ここでは初心者の方にも分かりやすくリプレイアタックについて解説をしていきます。

 

 

bitFlyer ビットコインを始めるなら安心・安全な取引所で

 

リプレイアタック(攻撃)とは

リプレイアタックとは分岐する前のブロックチェーンAと分岐後のブロックチェーンBにおいて攻撃者が意図的に同額の量の仮想通貨を生む事でそのブロックチェーンを混乱させる(又は攻撃者が得をする)攻撃の事を言います。

 

分裂後の送金

リプレイアタックを理解をする為にまず仮想通貨分裂前後で送金はどのような仕組みになっているかを知ると分かりやすいと思います。

 

例えば分裂前のブロックチェーンAの仮想通貨を太郎さんが仮想通貨を花子さんに送信したいとします。

通常、ブロックチェーンAを利用しているのでその仮想通貨送受信はブロックチェーンAに記載され決済が完了します。

 

<通常の送受信>

f:id:jyutakugyoseiku:20171005083042p:plain

 

しかし、ここでブロックチェーンAがブロックチェーンBという分岐(分裂)をしていた場合はこれだけでは終わっていません。

AとBは仕様が同じ仮想通貨なので太郎さんは花子さんに対してブロックチェーンB上でも送信をしている事になります。

 

これは簡単に言えば、ブロックチェーンAとBの仕様が同じな為、ブロックチェーンBの取引記録を処理するマイナー(マイニングする人)もAのマイナーと同様に取引データを受け取ってしまい、処理を行うからです。

 

<分岐している場合>

f:id:jyutakugyoseiku:20171005083608p:plain

 

これはビットコインがビットコインキャッシュに分裂した時に保有ビットコインと同数のビットコインキャッシュが保有者に付与され、そしてその後ビットコインキャッシュ対応ではないウォレットにビットコインを送るとビットコインキャッシュも送信したビットコインと同じように送信された(くっつくようにして送信された)事をイメージしていただけると分かりやすいです。

 

分裂した後では元の仮想通貨を送信すると、分裂後の仮想通貨も同じように送信されてしまいます。

 

もちろんこれは送信側(太郎さん)がブロックチェーンAの仮想通貨とブロックチェーンBの仮想通貨を意識しておらず、それぞれに対応しているウォレットを太郎さんが利用していない場合です。「どちらも送ってしまえばいい」と太郎さんが考えるのであればこれは問題がありません。

受け取った花子さんも2つ(ブロックチェーンA・B)の仮想通貨対応のウォレットを利用していれば仮想通貨が2つに分かれてウォレットに表示されますし、対応していなければブロックチェーンAだけしっかりと表示されます。(裏にBは存在しています。)

 

しかし、もし太郎さんがブロックチェーンAの仮想通貨「だけ」を花子さんに送信したい時にリプレイアタックの保護がないと困る事になります。

スポンサー

 

 

リプレイアタックとは何か

リプレイアタックとは先ほどの例で言えば太郎さんがブロックチェーンAの仮想通貨だけを送信した時に「ブロックチェーンBの仮想通貨を攻撃者が作り出して送信する事が出来てしまう」というものになります。

 

仮に太郎さんはブロックチェーンAの仮想通貨(以下仮想通貨A)とブロックチェーンBの仮想通貨(以下仮想通貨B)を保有しているとします。

そして仮想通貨Aだけを花子さんに送信します。

 

花子さんは仮想通貨Aを受け取りますが攻撃者がその取引データをコピーして仮想通貨Bの取引データを作り出す攻撃を仕掛ける事によって(ブロックチェーンBに同量の送信データを載せる)事で太郎さんの仮想通貨Bが送金されてしまうのです。

 

f:id:jyutakugyoseiku:20171005144707p:plain

 

リプレイアタックをする事で仮想通貨Bが複製されてしまうと仮想通貨Bのブロックチェーン上では送信した事になります。

 

このように仮想通貨が分岐する場合、リプレイアタックが行われる事によって資金の流出が起きてしまう可能性があるのです。

 

リプレイアタック保護(プロテクション)

このようなリプレイアタックを防ぐために分岐した仮想通貨にはリプレイアタック保護を実装する必要があります。

 

リプレイアタック保護は先ほどの例では太郎さんが仮想通貨Aを送信した時に仮想通貨Bを攻撃者がそのデータをコピーしたとしても仮想通貨B特有の署名をしなければ仮想通貨Bの送金はできない、というような方法で実装されます。

 

f:id:jyutakugyoseiku:20171005150146p:plain

 

8月1日に誕生したビットコインキャッシュでは簡単に言えばこのような方法でリプレイアタックを防いでいます。

 

他にもリプレイアタック保護の方法はありますが、元の仮想通貨や分裂後の仮想通貨を守るためには必要なシステムです。

 

関連記事

<特集>ビットコイン、仮想通貨の分裂とは?(まとめ)

ビットコインの11月分裂騒動を知ろう!

 

bitFlyer ビットコインを始めるなら安心・安全な取引所で