チェイナリシスは何を見ている?ビットコイン送金のプライバシー漏洩ポイントと守り方
ビットコインのオンチェーン送金には匿名性がないと表現されることがあります。しかし、ビットコイン上では身分確認をして実名を使って送金しているわけでもありません。ビットコインアドレスという「原則使い捨ての擬似的なアイデンティティ」を用いて利用する仕組みには、匿名性ではなく偽名性があるといいます。
しかし、実際のところアドレスを使い回さない理想的な使い方をしていても、ビットコイントランザクションの特徴や、そのトランザクションの配信時、あるいはウォレットの挙動によってプライバシーが漏れ、ウォレット内の複数のアドレスの関連性を推測されてしまうことがあります。その結果、保有するビットコインの総額を推測されてしまったり、あるいは誤った関連付けによって自分の財産が犯罪資金だと誤判定されてしまうことがあります。後者の場合、取引所などで凍結の憂き目に遭うことも考えられます。
今日はチェイナリシスなどのブロックチェーン解析企業のような、ビットコインのプライバシーを丸裸にしようとする主体が用いる様々な関連付け手法を解説し、ビットコインユーザーとしてプライバシーを守るために取れる対策を挙げていきます。
・トランザクションの特徴から推測する「ヒューリスティクス」
・圧倒的物量でネットワーク内の発信地を探る「シビル攻撃」
・意識の低いユーザーを狙う「エレクトラムサーバー公開」
・私たちが取れる対策(まとめ)
トランザクションの特徴から推測する「ヒューリスティクス」
ビットコインはUTXOという単位で保有されます。ブロックチェーン解析の目的が「同じウォレットと思われるUTXOを関連付ける」ことだとすると、UTXOを消費・生成するメカニズムであるトランザクションを分析することになります。
UTXOについては三倉さんの記事が網羅的なので、この時点で混乱してしまった方は先にそちらを読んでください。
トランザクションには特徴があり、例えば消費されるUTXOの数・金額・スクリプトの種類・由来、生成されるUTXOの数・金額・種類などがそれに当たります。ヒューリスティクスとは、トランザクションの内容を見て「確率的にはこのUTXOとこのUTXOが同じ主体な可能性が高い」と推測するための判断基準をいいます。
非常にたくさんありますが、3つ例を挙げます。
Common Input Ownership Heuristic
例えば「Common Input Ownership Heuristic」あるいは「Co-spend Heuristic」というヒューリスティクスは、一般的なトランザクションにおいて「入力サイドのUTXOはすべて同じ主体が保有している」というものです。例えばたくさんのUTXOがあるウォレットから大きめの送金をする際、入力に複数のUTXOを使ったりします。これらは別の機会に受け取ったもので、全く関連性のないものだったかもしれませんが、このトランザクションにおいてすべて入力側にあります。
そして考えてみてほしいのですが、トランザクションを作成するときに複数のユーザーが入力を追加して回るようなビットコインの使い方は一般的ではありません。したがって、同じトランザクションの入力側のUTXOはすべて同じウォレットのものと考えてほぼ間違いないでしょう(おそらく98%以上のケースでそうでしょう)。これがCommon Input Ownership Heuristicです。
このヒューリスティクスが当てはまらないプロトコルの例としてPayjoinやCoinjoinがあります。過去記事をご覧ください。
Round Amount Heuristic
例えば送金時にUTXOが2つ(送金額とお釣り)生まれるとします。もし金額にランダム性があれば、どちらが送金でどちらがお釣りかはわかりません。しかし、様々な分析を通して推測をすることはできます。
その1つがRound Amount Heuristicです。例えば、きっかり100万satsを送って、お釣りが177563 sats…のように、人間が人為的に選んだ可能性のあるキリのいい数字は送金額である可能性が高いです。そのタイミングでのBTC/ドルのレートを知っていれば、「ドル建てでキリがよい数字」も分析の対象に含むことができます。これを応用したのが、ブロックチェーンデータのみから現在のビットコイン価格を推測できるUTXOracleです。
Round Amount Heuristic以外にも、トランザクションのパターンなどから後日、ある出力がお釣りだったか送金だったかを判断する材料が増えることもあります。オンチェーンプライバシーの難しい点として、このように後に新情報によって低下するリスクがあり、しかも他者の行動によって低下するリスクがあることが挙げられます。
Lightning Channel Force Closure
ライトニングチャネルは協調的に開設・閉鎖をする限り、特にTaproot Channelsを使っていればブロックチェーン上ではそれとはわかりません。しかし、強制閉鎖を行った場合はコミットメントTXやHTLCといった特徴的なトランザクションとスクリプトが公開されてしまうため、それがライトニングチャネルの強制閉鎖であったことが誰の目にも明らかになってしまいます。
ただ、後述しますがライトニングはプロトコル上、送金を中継できるパブリックチャネルの開設時にはそのチャネルに対応するオンチェーンのUTXOをライトニングネットワークにアナウンスする必要があるので、パブリックチャネルに関してはライトニングネットワークを監視することで全て認識することができてしまいます。Mempool.spaceなどでライトニングチャネルの開設や閉鎖にノードの名称が表示されるのはそのためです。

ちなみに協調閉鎖時にはチャネル内の残高がそれぞれのノードのウォレットに払い出されますが、後に別のチャネル開設などに使われるとこのようにどっちの出力が誰のものだったか明らかになりやすいです。
圧倒的物量でネットワーク内の発信地を探る「シビル攻撃」
ブロックチェーン解析企業はブロックチェーンだけを見ているわけではありません。ブロックに取り込まれる前のトランザクションが流れるP2Pネットワークや、ライトニングのようにUTXOやトランザクションについて補完的な情報を得られるネットワークにも耳を澄ませています。
例えばビットコインネットワークには数万のノードが存在しますが、特定のトランザクションが最初にどのノードから配信されたかを特定したければ大量のノードをネットワーク中に配置し、それぞれのトランザクションについてどのタイミングで受信したかを調べることで絞り込むことができます。配信元を特定できることによって、ざっくりとした地理的な位置を推測したり、使っているウォレットを推測したり、あるいは当局などがそのノードの運用者にログを要求することができるかもしれません。
この攻撃については2025年に「スパイノード」として寄稿しました。興味がある方はぜひ読んでみてください。
またライトニングで情報収集しているのは確定事項として、Ordinal Inscriptionsのようなメタプロトコルも監視しているかもしれません。取引所などが負担させられているコンプラツール予算はこのようにビットコインユーザーのプライバシーに対する攻撃に使われています。
意識の低いユーザーを狙う「エレクトラムサーバー公開」
最後に、これもほぼ確実に行われているものとして「エレクトラムサーバーの公開」というデータ収集手法があります。
エレクトラムサーバーとは、ビットコインノードの残高検索機能を強化するソフトウェアで、一般的なビットコインウォレットはビットコインノードに直接接続するのではなく、エレクトラムサーバーに対して各アドレスの残高を問い合わせています。未使用のものを含めて、ウォレット内の大量のアドレスの残高を問い合わせるため、サーバーの視点では「アドレスの関連性」が非常に高精度に記録できる恐ろしいプライバシーの穴です。
あなたが普段使っているウォレットはどこのエレクトラムサーバーに問い合わせているでしょうか?公開されているエレクトラムサーバーの中にはデータを収集せずプライバシーを守ると規約で約束しているものもありますが、本当にそういう運用になっているか確実に調べる方法はありません。
3年前にはユーザーのプライバシーを技術的に守る発想の「Spiral」というブロックチェーンエクスプローラーが一時期現れましたが、すぐ消えてしまいました。本稿で取り上げています:
多くのウォレットではユーザーが設定できるようになっているので、Umbrelなどを設置しているならぜひビットコインノードに加えてエレクトラムサーバーとVPNをインストールし、ウォレットの接続先に指定することをおすすめします。
私たちが取れる対策
ブロックチェーン解析企業は多くの場合、あくまで犯罪利用を防いだりするためのツールであり、悪いことをしていないユーザーにとっては脅威ではない。なぜ対策を取る必要があるのか?という考えの読者もいるでしょう。
しかし、プライバシーを守るべき理由はたくさんあります。例えばそのように収集されたデータが個人情報と紐づいて流出してしまったら、もはや賞金首になったようなものです。政府がEvilな国においては、政府へと流出するリスクも考える必要があります。
ビットコインは技術的には守りやすい資産ですし、今の日本は治安がいいですが、物理的にも守りやすい状態を保ちたいならプライバシーはあるに越したことはありません。それでは対策を見ていきましょう。
対策一覧(まとめ)
・なるべく稚拙なトランザクションを作らない
コインセレクション(使用するUTXOを手動で選ぶ機能)が使えるウォレットと、過去のトランザクションの記録、そして練習が必要になりますが、必要以上にプライバシーを漏洩する稚拙なトランザクションを作らないことが1つの対策になります。
例えば別々の機会に受け取ったUTXOをなるべく関連付けないように(あたかも別のウォレットであるように)運用することで、全貌が掴めなくなります。そもそもウォレット自体を分けるという手もあります。(運用を間違えないように!)
一番多いであろう稚拙なトランザクションは「せっかくUTXO間の関連性が低かったのに1つの出力にまとめてしまう」というものでしょうか。ただ、手数料高騰時のユーザービリティなどにも影響するので難しいところです。
・自分のノード、自分のエレクトラムサーバーを使う
これは自明です。自分のウォレットのことを他人に問い合わせるのをやめましょう。
・たまに「違うノードから配信する」
正直、P2Pネットワークのスパイノードに対する対策は個人では取りにくいところがあります。また、それ自体で資産を結びつける決定的な証拠にはなりにくいので、必ずしも対策しなくても良いと思いますが、どうしてもしたいのなら違うノードからトランザクションを配信すると良いでしょう。例えばマイニングプールやブロックエクスプローラーにトランザクション配信フォームがあったりします。
Tor経由で接続すればブロックエクスプローラー側からも接続元を隠せます。
・ライトニングを活用する
この記事で若干ネガティブな文脈で登場したライトニングですが、「非公開チャネル」(いわゆるプライベートチャネル)であればチャネル自体も、それに対応するUTXOもネットワークに公開されません。ライトニング自体は送り主にとってプライバシーがかなり高いので、プライベートチャネルのみもつライトニングノードから使えばそもそもブロックチェーン解析を回避できます。チャネルごとに新しいノードを立てるのもいいでしょう。過去にそのようなウォレットがありました:
チャネル閉鎖後はそれがライトニングチャネルであったことは接続先ノードの行動によって推測されるかもしれませんが、得られる情報はわずかです。
ビットコインをプライバシーを守りながら使うのは熟練の技をもってしても難しいものです。その点、ライトニングを使えばある程度のプライバシーが得られるのは大きな魅力なのではないでしょうか。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。

ディスカッション