コインの来歴を追跡する
Bitcoin の目標がオンライン取引に匿名性を導入することだとすれば、最も懸念されることの一つは、コインから過去の取引を追跡できることだ。フォーラムでこれに関する議論を多く読んだが、まだいくつか疑問が残っている。
まず、私が理解していることを述べる:
-
すべての取引は、その金額と公開鍵による身元が以下のように公開されている: a) 取引において、送金した人の公開鍵を見ることができる b) 取引において、受取人の公開鍵も見ることができると思うが、完全には確信がない。(見られなくても、後でその人がお金を使う時に見えるので、これはそれほど重要ではない。
-
取引を自分に帰属させたくなければ、公開鍵が自分の身元と結びつかないようにする必要がある。
ユーザーに#2 の方法をもっと教育する必要がある。私は情報セキュリティのバックグラウンドを持っているが、プライバシーを最大化するための Bitcoin の最良の取り扱い方法は、私にとってさえすぐには明らかではない。
このトピックに関して具体的な質問やコメントがある:
- 不要になった使い捨ての公開鍵は破棄されるのか?
例えば、Bitcoin ブロックを生成する際に使い捨ての秘密鍵が作成されると読んだ。これらのコインを使い、他の誰かに署名した後は、その秘密鍵はもう必要ないはずだ。IP 支払い用に作成された鍵についても同様だ。不要になった鍵を保持し続けると、後でウォレットが押収された際に取引の発信者であることを証明するために使われる脆弱性が生じる可能性がある。
-
再利用可能な鍵(GUI 内で作成されたもの)も、不要になったら同様に削除できるべきだ。これは少し危険で、鍵を削除するとその鍵への支払いを受け取れなくなるため、ユーザーは何が起きているかを本当に理解する必要がある。コインが保存されている鍵は明らかに削除すべきではない。
-
ユーザーが特定のコインを使うリスクを把握できるよう、コインバンドルの来歴を追跡できるようにする必要がある。GUI 内で、各コインバンドルに関連するすべての公開鍵を確認できるようにすべきだと思う。また、自分に関連する鍵にコメントをタグ付けして、どのコインを誰に送るか判断する際の助けにできると良い。そうすれば、別の Bitcoin ユーザーが自分の特定の鍵を見たことに気づき、その鍵に関連する他のコインを同様の目的に限定し、2 つの身元を結びつけてしまうような別の用途には使わないようにできる。
-
コインバンドルの来歴を追跡できるようにすることに加え、支払いに含めるコインバンドルを選択できるようにする必要もある。
ここで重要なのは、デジタルフォレンジックを通じて取得可能な情報を、エンドユーザーが容易にアクセスできるようにすることだ。この情報をエンドユーザーがアクセスできるようにして初めて、機密性の高い環境で Bitcoin を使う際に適切なセキュリティ判断ができるようになる。
もう一つ重要なこと:これらの機能が利用可能になったら、交換業者は明確なデータ保持ポリシーを持つ必要がある。例えば、もし私が交換業者なら、アクティブな取引相手の公開鍵を記録するだろう。取引で取得したコインを交換し終わるまでこの情報を保持するが、コインが自分の手元を離れたらこの情報を破棄するだろう。また、裁判所の命令がない限り、第三者とその情報を共有しないポリシーも設けるだろう。交換業者と取引する場合は、そのポリシーと自分の期待との違いを知りたいと思うだろう。
支払い受取時に新しいアドレスの使用をユーザーに強制できないだろうか? 支払いが受信されるたびに、アドレスバーに別の Bitcoin アドレスを表示する。(Bitcoin アドレス経由のトランザクションのみ。IP は意味がないのでもちろん除く。) 実際の鍵は保持されるため、同じアドレスに送る人からの支払いもユーザーは受け取れる。(「失われた」Bitcoin は最小限にしたいだろう?)
これはいくつかの疑問を生む:
- これは技術的に可能か?(おそらく。)
- ユーザーに強制するのは良くないか?(おそらく。)
- このような機能を実装すべきか?(分からない。選択肢がない限りはやらないが、防御がないよりは半分でもある方が良い!)
では、「コインの系譜」に対抗する他の方法はあるだろうか?
BitCoin がランダムなタイミングでランダムなコインを新しいアドレスに自動送信できるようにすることもできる。これにより、コインの系譜を知ることは攻撃者にとって無意味になる。これらの新しいアドレスのどれもが実際の人物である可能性があるからだ。
支払い受取時に新しいアドレスの使用をユーザーに強制できないだろうか?
支払いを受け取るたびに、アドレスバーに別のビットコインアドレスを表示する。(もちろんビットコインアドレス経由のトランザクションのみで、IP ではない。IP では意味がないからだ) 実際のキーは保持され、同じアドレスに送金する人からの支払いもユーザーが引き続き受け取れるようにする。 これは私のリストに入っている。近いうちに「あなたのビットコインアドレス:」ウィンドウが、表示されているアドレスに何かを受信するたびに自動的に変更されるようにする。
ウェブアプリの実装にもこのアプローチを推奨している。このやり方を提案するサンプルコードを先ほど投稿した。
0.2.4 以降の SVN バージョンでは、手動での変更を促すために、アドレスバーの横に「新規…」ボタンがすでに追加されている。
@theymos: 他に方法がなければ、将来その解決策に頼ることができる。
BitCoin がランダムなタイミングでランダムなコインを新しいアドレスに自動送信できるようにすることもできる。これにより、コインの系譜を知ることは攻撃者にとって無意味になる。これらの新しいアドレスのどれもが実際の人物である可能性があるからだ。
それなら、ビットコインを長時間動かし続けたらどうなるんだ? 破産してしまうのか?(あるいは「ランダム送金」の額をごく小さくするのか。) それに、トランザクションの額はそもそも公開されているはずではないか? もしそうなら、攻撃者は送金額が「ランダム送金の上限」より大きいかどうかを確認するだけで済むので、この機能は無意味になるだろう。
どうもよく分からないが、自分には悪いアイデアに思える。
コインは自分自身が所有するアドレスに送ることになる。だから何も失わない。自分自身に送っていることを見分けるのは不可能だ。「ランダム送金の上限」など必要ない。ウォレット全体を一度に「ロンダリング」しても害はない。
ランダムなアドレスを選ぶだけでは十分ではないと思う。法定通貨とビットコインの両替業者は、コイン購入者の身元と送金先アドレスの両方を知っているため、常にコインの「身元のアンカー」となるだろう。
自分の身元をビットコインから切り離すには、他のビットコイン保有者と定期的にランダムな交換を行う必要があるだろう。