Bitcoinプライバシーの質を高めるDandelionプロトコル

お知らせ
Table of Content

論文:https://github.com/bitcoin/bips/blob/master/bip-0156.mediawiki

Bitcoinのプライバシーの対策

現在、Bitcoinプロトコルで用いられている拡散プロトコルは接続中の各ピア毎に指数関数的な遅延時間をもって各ピアにトランザクションを送信するようになっています。しかしながら、このプロトコルにはいくつか問題点がありトランザクションとユーザーのIPアドレスを結びつけるといった非匿名化攻撃に脆弱です。この脆弱性の対策としてBIP-156で発案されたのがDandelionです。

なぜ脆弱なのか?

Bitcoinのこの拡散プロトコルはピアごとに指数関数的な遅延をもってメッセージが送信されます。そのため、メッセージは統計的に対称的な方法でネットワークを伝わっていきます。攻撃者がスパイノードにデータを取らせれば、パターンからトランザクションソースを推測することが可能になります。また、Finger print attackという攻撃でネットワーク構造の完全な非匿名化もできます。

どうすれば防げるのか?

  1. 拡散プロトコルにおける対称性を壊す
  2. 同じパスに沿って異なるソースからのメッセージを転送してトランザクションをmixする

この2つを実現するのがDandelionです。Dandelionは3つのフェーズからなります。

Dandelionプロトコル

Dandelonプロトコルは以下のように3つのフェーズからなります。(1)プライバシーグラフの構築、 (2)stemフェーズのルーティング、 (3)fluffフェーズで拡散プロトコルによるネットワークへのブロードキャスト(あるnodeに対してconnectionを立ち上げたpeerをinbound、それ以外をoutboundとする)

dandelion

  • プライバシーグラフの構築
    各ノードはそのoutbound-peerのサブセットをDandelionの宛先の候補としそのリストの中から置き換えをせずにランダムに2つのDandelionの宛先を選ぶ。

  • Stemフェーズ
    プライバシーグラフに沿ってトランザクションが転送される。インバウンドの接続を介してこのノードに届くDandelionトランザクションはDandelion-destinationに転送されます。しかしランダムに一様に選択されたDandelion-destinationに転送される場合、fingerprint-attackが発生しP2Pネットワークの完全な非匿名化を達成できるようになります。そこでnode毎にDandelion-destinationを決めるのではなく、inbound-peer毎に特定のdastinationを決めることで防げます。

attack
(上の画像はfingerprint-attackの間に、グラフ構造の知識を持つボットネット形の敵対者が最初にトランザクションの伝搬をシミュレートをし、各ネットワークノードのfingerprintを生成する様子。そしてオンライン攻撃中、敵対者はスパイノードでトランザクションを収集し、これらの観測結果をシミュレートしたfingerprintと一致させる。)

  • Fluffフェーズ
    トランザクションはDandelionのstemフェーズでランダム回ホップした後、fluffフェーズに移行します。トランザクションは拡散プロセスを通じてネットワークに共有されます。fluffフェーズでは各ノードが重み付きコインを振ります。コインを振ってランダム値がある閾値を下回る場合、Dandelionトランザクションは典型的なトランザクションに変換されブロードキャストされます。fluffフェーズに入る確率を10%と重みをつけるとstemの経路長とトランザクション拡散の待ち時間にちょうど良いバランスを与えます。

(補足)
Dandelion TxはBitcoin Txとは異なります。DandelionTxはメモリプールは変更されませんがstempoolと呼ばれるCTxMemPoolの別のインスタンスが、Dandelionトランザクションに使用されます。一般的なTxとは異なりDandelion Txが届くと、そのTXはstempoolに追加され、メモリプールには追加されません。

以上3つのプロトコルを通してDandelionが成立します。
また、敵がプライバシーグラフを学習するのを困難にするため、平均10分に一度、Dandelionルートのマップは再構築されます。

より一層の安全のために

Dandelionの予測精度保証としてはPrecision(適合率)とRecall(再現率)を指標として用いていますがノードが他のノードによって覆い隠されたシナリオ、またはISPのような敵対者によってノードが具体的にターゲットにされているシナリオには対処していません。非匿名化のターゲットとされることを心配する個人は、Torを使用する必要があります。

タイトルとURLをコピーしました