匿名性
現在のBitCoin実装はクレジットカードを使うよりは確かに良いが、多くの変更なしに強い匿名性が求められる環境で使おうとは思わない。
コインの履歴は公開されている。誰でもアドレスからアドレスへのBitCoinの流れを見ることができる。
これは「トランザクションチェーン」の特定のポイントが攻撃者に知られた場合に問題となる。下の図では、攻撃者がドゥ氏のBitCoinの出所と送金先の両方を支配している。ドゥは匿名ではない方法でコインを購入したため、容易に身元が特定される。彼の身元はトランザクションチェーン内のアドレスに紐付けられている。
より可能性の高いシナリオは、安全でないチャネル(メール、このフォーラムなど)で行われた取引からBitCoin残高が構成されることだ。特に不注意な場合、送金先がトランザクションチェーン内のすべてのアドレスをGoogleで検索するだけで良い。もしかすると、そのうちの一つがこのフォーラムのあなたの署名に含まれているかもしれない。
これをより困難にする方法を2つ考えた。1つ目は、ランダムに自分が生成した新しいアドレスにコインを送ることだ。コインはまだ自分の残高の一部だが、実際の人物ではなく自分自身にコインを送ったことを外部者が証明するのは不可能だ。しかし、トランザクションチェーンにはまだ自分の身元が含まれている。実際の調査では、捜査対象の人物を直接的または間接的に知っているか、あるいはその人物本人であるため、詳しい調査の対象となるだろう。
2つ目は、多くの異なる人々のコインを受け取り、混ぜ合わせ、同様の金額をそれらの人々のアドレスに送り返す外部サービスだ。ミキサーが誰がどのコインを受け取ったかのログを保持しなければ、いかなる調査もここで止まるはずだ。
最大限のセキュリティのために、BitCoinは複数の外部ミキサーを通じて自動的にコインを送る機能を持つべきだ。少なくとも1つがログを保持しない限り(そしてすべてが実際にコインを返してくれる限り)、これで完全に安全なはずだ。
これをすべて安全に調整するという問題がある。すべてのコインを少なくとも1回はミキシングしたいが、データベースで追跡するとplausible deniability(もっともらしい否認可能性)が損なわれる。おそらく最初は追跡する必要があるが、すべてのコインが安全になった後にデータベースを削除するべきだろう。
上記のチェーンの問題とは無関係に、BitCoinはネットワーク分析に対して脆弱だ。攻撃者がすべての受信・送信トラフィックを監視できる場合、どのトランザクションがあなたのものかを容易に把握できる。接続が暗号化されていない場合(現在がそうだ)、受信していないトランザクションをブロードキャストしたことが分かる。
暗号化されていても(Torや組み込みメカニズムを通じて)、攻撃者がBitCoinネットワークへの接続の両端を見ることができれば、どのトランザクションがあなたのものかを特定するのは不可能ではない。
Torを通じたトランザクションは以下のように特定できる:
- 攻撃者が自分が管理するIPアドレスでBitCoinネットワークを埋め尽くす。
- これらの「悪意のあるノード」がパケットを受信した時、攻撃者はあなたがパケットを送信した時刻に近い時刻に受信されたかどうかを確認する。これが数回発生すれば、攻撃者はあなたが誰かを知り、あなたのネットワークへの送信を見ることができる。
- あなたがトランザクションを送信する時、しばらくパケットを受信せずに送信した場合、攻撃者はそれがあなたのものだと分かる。
これを修正するために、BitCoinは暗号化、パディング(サイズベースの特定を防ぐため)、ダミーパケット、送信タイミングのランダム化を実装すべきだ。BitCoinがトランザクションをファイルにエクスポート・インポートできるようにすれば(インポートはトランザクションをネットワークにブロードキャストするが、エクスポートはしない)、plausible deniabilityも追加できるだろう。そうすれば、このファイルを別の方法(例えばUSBメモリー)で送信できる。
匿名性とは関係のない構造上の問題も2つ見つけた:
- ネットワーク層でネットワークが分断された場合(例えば大統領が「インターネットキルスイッチ」を発動した場合)、ブロックチェーンがフォークする。これは本当にまずい。
- 大量のIPアドレスを持つ攻撃者がネットワークをがんのように広がるノードで埋め尽くすのは非常に容易だ。これがBitCoinにどれほど悪影響を与えうるかは分からない。
実例
-
パナマでホストされたVPSに、Tor経由で接続して新しいBitcoinアドレス/Bitcoinクライアントをセットアップする。
-
人口密度の高い大都市の売店で100ユーロのpaysafecardコードを購入する。現金で支払い、自宅から2km離れた売店を選ぶ。
-
このフォーラムでpaysafecardコードの販売を、Torと無料の公衆Wi-Fiホットスポット経由で、新しいユーザー名を使って広告する。
-
買い手が現れる。新しく設定したウェブメールアドレスから、再びTorと無料の公衆Wi-Fiホットスポット経由で、ビットコインアドレスとpaysafecardコードを送信する。
上記の予防策を使えば、物理的なアイデンティティをビットコインアドレスに結びつけることは非常に困難になる。不可能ではないが、自分の目的には十分に困難だ。
悪くない。
匿名のインターネット接続という点では、プリペイド携帯電話も悪い選択ではない。安いし、ユーザーに紐付けるのはほぼ不可能で、使い終わったら破棄できる。繰り返すが、人口密度の高いショッピングモールやウォルマートで購入できる。
VPSの支払いにも匿名の方法を使うのを忘れずに、foreverdamaged。混雑した場所で購入したプリペイドクレジットカードでいけるかもしれない。
ちなみに、このユーザーは中国にいて自由に関する本を買おうとしていると想像するのが好きだ 😉
インターネットが完全に分断されることは想像しにくい。ある国が意図的かつ完全に世界の残りから自らを切り離す必要があるだろう。
ダイヤルアップモデムや衛星電話で封鎖を回避するなど、両側にアクセスできるノードがあれば自動的にブロックチェーンを流す。1つのノードだけで十分だ。ビジネスを続けたい人なら誰でも動機があるだろう。
ネットワークが分断されてから再統合された場合、短い方のフォークにあって長い方のフォークにはなかったトランザクションは、トランザクションプールに戻され、将来のブロックに含まれる資格が生じる。確認数はゼロからやり直しになる。
分断を利用して二重支払いをした人がいた場合、つまり各サイドで同じお金の異なる支払いがある場合、短い方のフォークの二重支払いは無効になり、0/未確認のままになる。
分断を利用して二重支払いをするのは容易ではない。一方から他方への通信が不可能なら、どうやって各サイドに支払いを入れるのだろうか? 方法があるなら、おそらく他の誰かもそれを使ってブロックチェーンを流しているだろう。
通常、自分が小さい方のセグメントにいるかどうかは分かる。例えば、あなたの国が世界の残りから切り離されたら、世界の残りが大きい方のセグメントだ。小さい方のセグメントにいる場合は、何も確認されていないと想定すべきだ。
インターネットが完全に分断されることは想像しにくい。ある国が意図的かつ完全に世界の残りから自らを切り離す必要があるだろう。
ダイヤルアップモデムや衛星電話で封鎖を回避するなど、両側にアクセスできるノードがあれば自動的にブロックチェーンを流す。1つのノードだけで十分だ。ビジネスを続けたい人なら誰でも動機があるだろう。
ネットワークが分断されてから再統合された場合、短い方のフォークにあって長い方のフォークにはなかったトランザクションは、トランザクションプールに戻され、将来のブロックに含まれる資格が生じる。確認数はゼロからやり直しになる。
実装にバグがあり、それが何らかの無効で特別に細工されたネットワークメッセージによってトリガーされ、bitcoinクライアントをハングさせる、というのは容易に想像できる。ただし、それは同じメッセージをピアに再送信した後、かつディスク上のブロックチェーンデータベースを破壊した後で起こる、というシナリオだ。
もし実装が一つしかなく、バージョンやプラットフォームを横断して同じバグが共有されていれば、ネットワーク全体がブロックチェーンを失うことになる。そして大多数が最終的に復旧したとき、個々のノードはそれぞれ独自の歴史認識を持って、既存のいずれかの多数派に再接続することになる。もしこの出来事が協調的な攻撃として発生したら、まったく異なる歴史を得てしまうかもしれない。 これは過去のトランザクションにどう影響しうるのかな? ところで、ブロックチェーンのバックアップはあるのかな?
PS:ソフトウェアの脆弱性をそこまで精密に悪用するのが不可能だという議論は、しないでおこう。それは独自の秘密と驚きを持った技芸だ。そしていや、今すぐそれが可能だと証明することはできない。