匿名性

現在の BitCoin 実装はクレジットカードを使うよりは確かに良いが、多くの変更なしに強い匿名性が求められる環境で使おうとは思わない。

コインの履歴は公開されている。誰でもアドレスからアドレスへの BitCoin の流れを見ることができる。

これは「トランザクションチェーン」の特定のポイントが攻撃者に知られた場合に問題となる。下の図では、攻撃者が Doe 氏の BitCoin の出所と送金先の両方を支配している。Doe は匿名ではない方法でコインを購入したため、容易に身元が特定される。彼の身元はトランザクションチェーン内のアドレスに紐付けられている。

より可能性の高いシナリオは、安全でないチャネル(メール、このフォーラムなど)で行われた取引から BitCoin 残高が構成されることだ。特に不注意な場合、送金先がトランザクションチェーン内のすべてのアドレスを Google で検索するだけで良い。もしかすると、そのうちの一つがこのフォーラムのあなたの署名に含まれているかもしれない。

これをより困難にする方法を 2 つ考えた。1 つ目は、ランダムに自分が生成した新しいアドレスにコインを送ることだ。コインはまだ自分の残高の一部だが、実際の人物ではなく自分自身にコインを送ったことを外部者が証明するのは不可能だ。しかし、トランザクションチェーンにはまだ自分の身元が含まれている。実際の調査では、捜査対象の人物を直接的または間接的に知っているか、あるいはその人物本人であるため、詳しい調査の対象となるだろう。

2 つ目は、多くの異なる人々のコインを受け取り、混ぜ合わせ、同様の金額をそれらの人々のアドレスに送り返す外部サービスだ。ミキサーが誰がどのコインを受け取ったかのログを保持しなければ、いかなる調査もここで止まるはずだ。

最大限のセキュリティのために、BitCoin は複数の外部ミキサーを通じて自動的にコインを送る機能を持つべきだ。少なくとも 1 つがログを保持しない限り(そしてすべてが実際にコインを返してくれる限り)、これで完全に安全なはずだ。

これをすべて安全に調整するという問題がある。すべてのコインを少なくとも 1回はミキシングしたいが、データベースで追跡すると plausible deniability(もっともらしい否認可能性)が損なわれる。おそらく最初は追跡する必要があるが、すべてのコインが安全になった後にデータベースを削除するべきだろう。

上記のチェーンの問題とは無関係に、BitCoin はネットワーク分析に対して脆弱だ。攻撃者がすべての受信・送信トラフィックを監視できる場合、どのトランザクションがあなたのものかを容易に把握できる。接続が暗号化されていない場合(現在がそうだ)、受信していないトランザクションをブロードキャストしたことが分かる。

暗号化されていても(Tor や組み込みメカニズムを通じて)、攻撃者が BitCoin ネットワークへの接続の両端を見ることができれば、どのトランザクションがあなたのものかを特定するのは不可能ではない。

Tor を通じたトランザクションは以下のように特定できる:

  1. 攻撃者が自分が管理する IP アドレスで BitCoin ネットワークを埋め尽くす。
  2. これらの「悪意のあるノード」がパケットを受信した時、攻撃者はあなたがパケットを送信した時刻に近い時刻に受信されたかどうかを確認する。これが数回発生すれば、攻撃者はあなたが誰かを知り、あなたのネットワークへの送信を見ることができる。
  3. あなたがトランザクションを送信する時、しばらくパケットを受信せずに送信した場合、攻撃者はそれがあなたのものだと分かる。

これを修正するために、BitCoin は暗号化、パディング(サイズベースの特定を防ぐため)、ダミーパケット、送信タイミングのランダム化を実装すべきだ。BitCoin がトランザクションをファイルにエクスポート・インポートできるようにすれば(インポートはトランザクションをネットワークにブロードキャストするが、エクスポートはしない)、plausible deniability も追加できるだろう。そうすれば、このファイルを別の方法(例えば USB メモリー)で送信できる。

匿名性とは関係のない構造上の問題も 2 つ見つけた:

  • ネットワーク層でネットワークが分断された場合(例えば大統領が「インターネットキルスイッチ」を発動した場合)、ブロックチェーンがフォークする。これは本当にまずい。
  • 大量の IP アドレスを持つ攻撃者がネットワークを有害ノードで埋め尽くすのは非常に容易だ。これが BitCoin にどれほど悪影響を与えうるかは分からない。