64 / 736PRIV

Bitcoin のプライバシー

Bitcoin Privacy

ビットコインで支払うたびに、自分の家計を相手にすべて見せたいわけではないでしょう。しかし公開された支払い履歴は、予想以上の情報を伝えることがあります。プライバシーを守る第一歩は、何が見えるのか、誰が自分を知っているのか、どの情報を不必要に結び付けているのかを理解することです。

Bitcoinのプライバシーとは、公開された支払いと特定の人、その人の他の資金との結び付きを抑えることです。通常のトランザクションに本名は必要ありませんが、使った資金、新しい出力、金額は見えます。請求書、サービスのアカウント、受取人が名前を補うこともあります。Bitcoinは自動的に匿名になる仕組みではありません。

Annaは仕事の報酬として100,000 satを受け取りました。satはビットコインの最小単位です。その資金からPavelに20,000 satを支払い、79,000 satは自分のウォレットに戻り、1,000 satが手数料になります。出力には、金額と、その資金を使うための条件が記録されています。ネットワークにはこの移動全体が見えます。Pavelは自分の受取額とAnnaを知っているため、別の出力が彼女のお釣りではないかと推測できます。貯蓄すべてが自動的に分かるわけではありませんが、手掛かりにはなります。銀行明細と違い、この記録を見られるのは銀行と名義人だけではありません。何年たっても誰でも見直せます。 [1]

見知らぬ人には公開記録が見えます。PavelはAnna本人も知っており、取引所は身分証明書を持っているかもしれません。ウォレットのサービス提供者は、アプリがどのアドレスを照会したか知り得ます。誰に対して何を守りたいのかを整理することを、脅威モデルを考えるといいます。全員を攻撃者と決め付ける意味ではありません。顧客に収入を知られない工夫と、ネットワーク接続を守る工夫では対策が違うからです。秘密鍵とは、ウォレットが支払いを承認するデジタル署名を作るための秘密のデータです。ただし、鍵を秘密にするだけで支払い履歴まで隠れるわけではありません。 [1] [3]

Annaは顧客ごとに新しい受取アドレスを渡せます。そうすれば、同じアドレスへの入金を単純に合計して収入を調べることは難しくなります。ウォレットは通常、送り手に戻る残額、つまりchangeと呼ばれるお釣りにも新しいアドレスを使います。これはよい出発点ですが、関連付けられない保証ではありません。後でAnnaが異なるアドレスの資金をまとめて使えば、自ら新しい手掛かりを作ることがあります。公開の寄付アドレスは特別な場合です。透明性を意図していることもありますが、その入金は非公開ではなくなります。 [1]

ウォレットが扱うのは区別のない一つの残高ではありません。以前のトランザクションで生まれ、まだ使われていない出力、UTXOを管理し、その一部を支払いの入力に選びます。複数の入力を一緒に使うと、分析者は同じ人のものだと推測しがちです。これはヒューリスティック、つまり推測の手法であり証明ではありません。複数人の共同トランザクションでは、その前提が崩れます。Coin Controlは入力の選択に関与する機能です。資金の出所を示すラベルは区分の維持に役立ちますが、ウォレット内のメモにすぎず、ネットワークに何かを強制しません。お釣りを理解せず手動選択すると、プライバシーにも手数料にも不利になり得ます。 [2] [7]

拡張公開鍵 XPUB からは別の公開鍵を導出でき、ウォレットのアドレス規則と組み合わせると該当する枝のアドレスを生成できます。この情報があればその枝の支払いを追えますが、XPUB だけで支払いに署名することはできません。見える範囲はどの鍵を共有したか次第で、ウォレット全体とは限りませんが、機微な情報であることは変わりません。サービスは出金を、KYCという顧客本人確認で把握した名前と結び付けられます。ウェブのトランザクション閲覧サービスは、何をどこから検索したか記録することがあります。残高確認のために復元用の単語や秘密鍵を渡してはいけません。公開情報であっても、必要性と共有範囲を理解して渡すことが大切です。 [1] [6]

アプリは自分に属する支払いを見つける必要があります。他人のサーバーへアドレス一覧を送れば、それらの関連性を明かすことになります。Full Node は、ネットワークのルールに従ってビットコインの取引やブロックを自ら検証するソフトウェアを動かすコンピューターです。自分のFull Nodeは、必要に応じて自前の索引サービスを通し、ウォレットが実際にそこからデータを得る場合に役立ちます。ウォレットの横でノードを動かすだけでは足りません。軽量ウォレットはBIP 157のコンパクトフィルターを使い、一覧を送る代わりに手元で一致を調べることもできます。それでも他のネットワーク上の手掛かりは残ります。Torはインターネット接続のアドレスであるIPアドレスの露出を抑えられますが、公開金額やトランザクション間のつながりは変えません。 [1] [3]

名前をアドレスから直接読み取る必要はありません。正確な金額の載った公開請求書、公表された購入の時期、その後の支払いだけで結び付く場合があります。トランザクションの形や、お釣りと思われる出力も手掛かりになります。一つの特徴だけで所有者を確実に証明はできませんが、複数が重なると推測は強まります。複数のウォレットに分けても、後から資金をまとめれば区分は保てません。Bitcoin Core の高度な機能 avoid partial spends は、同じアドレスの出力をまとめて使うよう選択できます。そのアドレスから少しずつ支払うことで新たな関連が生まれるのを抑えますが、入力が増えて手数料が高くなることもあります。結果は設定した手数料の上限にも左右され、万能の匿名化機能ではありません。 [1] [5]

CoinJoinは複数人の資金を一つのトランザクションにまとめます。新しい各出力を元のどの所有者が管理するか、観察者には判断しにくくなる場合があります。PayJoinは別の方法で、受取人が送り手の支払いに自分の入力を加えます。そのため、全入力が一人のものだという単純な前提が成立しません。どちらも履歴を消したり匿名性を保証したりはしません。効果はプロトコル、参加者、他者が持つ情報、その後の支払いによります。使う前に、調整の仕組み、手数料、中断時に起こることも理解する必要があります。機能名だけでは何も保証されません。 [2] [7]

BIP 352のSilent Paymentsでは固定の支払い情報を公開でき、送り手はそこから異なる宛先出力を導出します。受取人は相手ごとに新しい通常アドレスを事前に渡す必要がありません。ただし受取側ウォレットはプロトコルに対応し、入金を見つけるためデータを走査する必要があります。仕様は支払いを探す鍵と、使うための鍵を分けています。バックアップと復元は使用するウォレットに適合させる必要があり、使ったラベルも重要なことがあります。Silent Paymentsのラベルは別々の身元ではありません。公開の受取情報には共通のスキャン公開鍵があります。この技術も、その後の資金移動をすべて隠すわけではありません。 [4]

通常の入金ごとに新しいアドレスを使い、不要な支払い証明を公開せず、ウォレットがどこからデータを得るか確認しましょう。資金の出所を把握し、関連付けたくない用途を分けます。手動で入力を選んだり高度な技術を使ったりする前に、影響を理解してください。失敗はプライバシーのために必ず払う代償ではありません。アドレス、バックアップ、手数料の確認も同じく重要です。目的は不要な情報を減らすことであり、誰からもどの支払いとも決して結び付けられないと誤信することではありません。 [1] [3] [4]

理解を深めるには、この項目とあわせて次もお読みください 仮名性, CoinJoin, Coin Control, KYC, Bitcoin, ビットコインアドレス. 次の項目からも参照されています Watch-only Wallet, Coin Control, Change Address, Extended Public Key (xpub).

DOC · 001Bitcoin.org — Protect Your Privacy文書 DOC · 002BIP 78 — A Simple Payjoin Proposal仕様 DOC · 003BIP 157 — Client Side Block Filtering仕様 DOC · 004BIP 352 — Silent Payments仕様 DOC · 005Bitcoin Core 0.21 — Avoid Partial Spends文書 DOC · 006BIP 32 — Hierarchical Deterministic Wallets仕様 DOC · 007Gregory Maxwell — CoinJoin: Bitcoin privacy for the real world一次資料
改訂日: 一次資料を優先 · 投資助言ではありません