IP トランザクション削除の主張
IP アドレスへのトランザクション送信は削除するか、少なくともデフォルトで無効にすべきだ。
コミュニティの多くのメンバーが述べているように、これはまったく安全ではない。また、攻撃者が Bitcoin ノード運用者の身元を特定できる可能性もあると考えている。例えば、ネットワーク上の様々な IP に 0.01 BTC を送信し、IP と Bitcoin アドレス(Bitcoin アドレスは自動生成される)を記録する。Bitcoin 取引所の情報にアクセスできるか、Bitcoin を受け付ける店舗やサービスを運営していれば、その IP アドレスをそのサイト/サービスのユーザーと紐付けることができる。取引所の場合、その IP をユーザーの PayPal や銀行口座と紐付けることが可能だ!
もう一つの攻撃手法は、ターゲットノードに接続して IP トランザクションを開始することだ。ターゲットは新しいアドレスを生成し、その時点で切断して再び始める。これはサービス拒否攻撃として使える可能性がある。
デフォルトで IP 取引の受信を無効にするパッチを作成した。-allowiptransactions オプションまたは bitcoin.conf ファイルの allowiptransactions=true で有効にできる。
パッチはこちら:
http://github.com/aceat64/bitcoin-patchwork/blob/svn/patches/disable_ip_transactions.patch
自分のカスタムクライアントにはすでにこのパッチを組み込んである:http://github.com/aceat64/bitcoin-patchwork
ただし、IP 取引を完全に削除しないでほしい!
http://bitcointalk.org/index.php?topic=1042.msg13160
IP 経由での受信は、特に使用する意図がない限り無効にするのがおそらく最善だ。これは誰も使っていない大きな攻撃対象領域であり、デフォルトで開いている必要はない。
店舗のケースでは、通常、特定の注文やアカウントに関連付けられたビットコインアドレスのみを発行する自動化システムを通じて顧客に支払いを送ってもらいたいだろう。サーバーの IP アドレスに対して自発的に送られるランダムな身元不明の支払いは役に立たない。
一般的に、IP 経由での送信は有用なケースが限られている。プロキシを使わずに直接接続する場合、中間者攻撃のリスクは許容範囲かもしれないが、プライバシーはない。プライバシープロキシを使用する場合、中間者攻撃のリスクは受け入れがたいほど高くなる。SSL の実装にすべての労力を費やしたとしても、通常 CA 証明書を取得する手間をかけるのは大規模な店舗だけであり、それらのケースのほとんどでもビットコインアドレスを使用する方が良いだろう。
この変更を SVN rev 156 にアップロードした。有効にするスイッチは -allowreceivebyip だ。
このバージョンの送信者は「Recipient is not accepting transactions sent by IP address」(受信者は IP アドレスによる送信トランザクションを受け付けていない)というエラーが表示される。古いバージョンの送信者は「Transfer was not accepted」(転送は受け付けられなかった)と表示される。
スイッチには別の名前を使った。-allowiptransactions だと送信も含むように聞こえるためだ。スイッチのより良い名前があれば、再度変更できる。