ビットコインのオンチェーン送金には匿名性がないと表現されることがあります。しかし、ビットコイン上では身分確認をして実名を使って送金しているわけでもありません。ビットコインアドレスという「原則使い捨ての擬似的なアイデンティティ」を用いて利用する仕組みには、匿名性ではなく偽名性があるといいます。

しかし、実際のところアドレスを使い回さない理想的な使い方をしていても、ビットコイントランザクションの特徴や、そのトランザクションの配信時、あるいはウォレットの挙動によってプライバシーが漏れ、ウォレット内の複数のアドレスの関連性を推測されてしまうことがあります。その結果、保有するビットコインの総額を推測されてしまったり、あるいは誤った関連付けによって自分の財産が犯罪資金だと誤判定されてしまうことがあります。後者の場合、取引所などで凍結の憂き目に遭うことも考えられます。

今日はチェイナリシスなどのブロックチェーン解析企業のような、ビットコインのプライバシーを丸裸にしようとする主体が用いる様々な関連付け手法を解説し、ビットコインユーザーとしてプライバシーを守るために取れる対策を挙げていきます。

・トランザクションの特徴から推測する「ヒューリスティクス」

・圧倒的物量でネットワーク内の発信地を探る「シビル攻撃」

・意識の低いユーザーを狙う「エレクトラムサーバー公開」

・私たちが取れる対策(まとめ)

トランザクションの特徴から推測する「ヒューリスティクス」

ビットコインはUTXOという単位で保有されます。ブロックチェーン解析の目的が「同じウォレットと思われるUTXOを関連付ける」ことだとすると、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があります。過去記事をご覧ください。

CoinJoinの進化版としてのPayJoin
先日、コロナウイルスの影響もあってかVRが流行しているビットコイナーたち数十名が、Altspace VRというアプリを使って学会発表のようなものを行っていました。そこでのプレゼンテーションはPayJoinというCoinJoinの新形態についてでしたが、興味深い内容でしたので共有させていただきます。ちなみに、このようなイベントの企画が行われているBitcoin VR Degeneratesというテレグラムグループがあるので、参加したい方はどうぞ。 COINJOIN ご存知の方も多いかもしれませんが、CoinJoinとは複数の主体が1つのトランザクションに参加して、outputが誰のコインかわからなくする(混ぜる)ということが目的で行われます。プライバシーを向上することが目的の場合、inputとoutputの金額を比較されても完全には解析されないように、すべての参加者が一定の金額で行うことが多いです(0.1BTC単位のinputを任意の数追加して、出力として同じ数だけ受け取るなど)。そうすると、等しい金額のinputとoutputの対応は確率的にしか判断できません。この過程で問題視され

Round Amount Heuristic

例えば送金時にUTXOが2つ(送金額とお釣り)生まれるとします。もし金額にランダム性があれば、どちらが送金でどちらがお釣りかはわかりません。しかし、様々な分析を通して推測をすることはできます。

その1つがRound Amount Heuristicです。例えば、きっかり100万satsを送って、お釣りが177563 sats…のように、人間が人為的に選んだ可能性のあるキリのいい数字は送金額である可能性が高いです。そのタイミングでのBTC/ドルのレートを知っていれば、「ドル建てでキリがよい数字」も分析の対象に含むことができます。これを応用したのが、ブロックチェーンデータのみから現在のビットコイン価格を推測できるUTXOracleです。

取引所などに頼らず自分のノードだけでビットコイン価格を推定できる方法が発明:UTXOracle
みなさんはビットコイン価格を知りたいとき、どのように調べていますか? 一般的な調べ方として以下のような方法が考えられると思います: ・取引所のウェブサイトやアプリ、APIから確認する ・TradingViewのようなトレードツールから確認する ・Googleなどで検索する これらはどれも何らかの主体にデータ提供を依存しています。よくこの主体のことを「オラクル」と呼び、オラクルなしでは市場価格がわからない問題、ひいてはオラクルが嘘をつくことで市場を操作できる可能性を指して「オラクル問題」と呼んだりします。 イーサリアム上のDefiで数年前に普及し始めたAMMという取引所のようなスマートコントラクトでは預けられた資産の割合によって価格が決定するという斬新なアプローチを取っています。仮に「BTC・USDTペア」に1 BTCと1万USDTが預けられていれば現在のBTC価格は10,000 / 1 = 10,000 USDT、というふうに、そのスマートコントラクトに預けられている資産だけで価格が計算できます。つまりオラクルを使用しません。 それでも実際には安全性の面でオラクルを利用し

Round Amount Heuristic以外にも、トランザクションのパターンなどから後日、ある出力がお釣りだったか送金だったかを判断する材料が増えることもあります。オンチェーンプライバシーの難しい点として、このように後に新情報によって低下するリスクがあり、しかも他者の行動によって低下するリスクがあることが挙げられます。

Lightning Channel Force Closure

ライトニングチャネルは協調的に開設・閉鎖をする限り、特にTaproot Channelsを使っていればブロックチェーン上ではそれとはわかりません。しかし、強制閉鎖を行った場合はコミットメントTXやHTLCといった特徴的なトランザクションとスクリプトが公開されてしまうため、それがライトニングチャネルの強制閉鎖であったことが誰の目にも明らかになってしまいます。

ただ、後述しますがライトニングはプロトコル上、送金を中継できるパブリックチャネルの開設時にはそのチャネルに対応するオンチェーンのUTXOをライトニングネットワークにアナウンスする必要があるので、パブリックチャネルに関してはライトニングネットワークを監視することで全て認識することができてしまいます。Mempool.spaceなどでライトニングチャネルの開設や閉鎖にノードの名称が表示されるのはそのためです。

それぞれの出力がLNBiG [Hub-3]ノードのチャネル開設であることが明記されているMempool.spaceの画面

ちなみに協調閉鎖時にはチャネル内の残高がそれぞれのノードのウォレットに払い出されますが、後に別のチャネル開設などに使われるとこのようにどっちの出力が誰のものだったか明らかになりやすいです。

圧倒的物量でネットワーク内の発信地を探る「シビル攻撃」

ブロックチェーン解析企業はブロックチェーンだけを見ているわけではありません。ブロックに取り込まれる前のトランザクションが流れるP2Pネットワークや、ライトニングのようにUTXOやトランザクションについて補完的な情報を得られるネットワークにも耳を澄ませています。

例えばビットコインネットワークには数万のノードが存在しますが、特定のトランザクションが最初にどのノードから配信されたかを特定したければ大量のノードをネットワーク中に配置し、それぞれのトランザクションについてどのタイミングで受信したかを調べることで絞り込むことができます。配信元を特定できることによって、ざっくりとした地理的な位置を推測したり、使っているウォレットを推測したり、あるいは当局などがそのノードの運用者にログを要求することができるかもしれません。

この攻撃については2025年に「スパイノード」として寄稿しました。興味がある方はぜひ読んでみてください。

BitcoinノードのP2P通信から見える、スパイノードの存在
皆さんはビットコインのプライバシーについて、ブロックチェーンに刻まれるトランザクション以外の部分についてどれくらい考えているでしょうか。 ランサムウェア、身代金の支払いやDMMビットコインのような流出事件など、犯罪者にもビットコインが利用されている関係で、捜査当局にツールを提供するChainalysis社のような企業は様々な手段でビットコイントランザクションの出どころを突き止めようとアンテナを張っています。 今日はあるビットコインユーザーが公開した「ビットコインノードのP2Pトラフィックデータ分析」から、いわゆる「スパイノード」の存在に触れ、トランザクションの出どころを解析する他のいくつかの手法(とプライバシーを守るために私達が取れる対策)を解説します。 引用元の記事はこちらです: Bitcoin node P2P traffic analysisI’d like to share some of my recent node traffic analyses in case someone else might find the method for making estim

またライトニングで情報収集しているのは確定事項として、Ordinal Inscriptionsのようなメタプロトコルも監視しているかもしれません。取引所などが負担させられているコンプラツール予算はこのようにビットコインユーザーのプライバシーに対する攻撃に使われています。

意識の低いユーザーを狙う「エレクトラムサーバー公開」

最後に、これもほぼ確実に行われているものとして「エレクトラムサーバーの公開」というデータ収集手法があります。

エレクトラムサーバーとは、ビットコインノードの残高検索機能を強化するソフトウェアで、一般的なビットコインウォレットはビットコインノードに直接接続するのではなく、エレクトラムサーバーに対して各アドレスの残高を問い合わせています。未使用のものを含めて、ウォレット内の大量のアドレスの残高を問い合わせるため、サーバーの視点では「アドレスの関連性」が非常に高精度に記録できる恐ろしいプライバシーの穴です。

あなたが普段使っているウォレットはどこのエレクトラムサーバーに問い合わせているでしょうか?公開されているエレクトラムサーバーの中にはデータを収集せずプライバシーを守ると規約で約束しているものもありますが、本当にそういう運用になっているか確実に調べる方法はありません。

3年前にはユーザーのプライバシーを技術的に守る発想の「Spiral」というブロックチェーンエクスプローラーが一時期現れましたが、すぐ消えてしまいました。本稿で取り上げています:

プライバシー重視の一味違うブロックエクスプローラー:Spiral
読者のみなさんはビットコインのトランザクションが着金するのを確認したり、ブロックサイズを確認する際にはどうしていますか? もちろん本稿のコアな読者の中には「自分のノードで確認するわ!」というユーザーもある程度いらっしゃると思いますが、世の中の大多数のユーザーはウェブで利用できるいずれかのブロックチェーンエクスプローラーを利用しているのではないかと思います。実際、取引所の入出金で送られてくるメールなんかにも、その取引所が選んだエクスプローラーのリンクが貼ってありますよね。 代表的なサービスとしてBlockstream.infoやBlockchain.comなどをよく見かけますが、他にもBlockchairや国産のChainflyerなど多数のエクスプローラーが存在します。これらは差別化ポイントとして、例えばSegwitの利用でどれくらい手数料を節約できたかを表示したり、「ユーザデータを保持しない」というトラストフルな約束をしたり、充実した検索機能などを提供していますが、保証できる形でユーザーのプライバシーを守るものはこれまでありませんでした。 今日はユーザーのプライバシーに重きを置

多くのウォレットではユーザーが設定できるようになっているので、Umbrelなどを設置しているならぜひビットコインノードに加えてエレクトラムサーバーとVPNをインストールし、ウォレットの接続先に指定することをおすすめします。

私たちが取れる対策

ブロックチェーン解析企業は多くの場合、あくまで犯罪利用を防いだりするためのツールであり、悪いことをしていないユーザーにとっては脅威ではない。なぜ対策を取る必要があるのか?という考えの読者もいるでしょう。

しかし、プライバシーを守るべき理由はたくさんあります。例えばそのように収集されたデータが個人情報と紐づいて流出してしまったら、もはや賞金首になったようなものです。政府がEvilな国においては、政府へと流出するリスクも考える必要があります。

ビットコインは技術的には守りやすい資産ですし、今の日本は治安がいいですが、物理的にも守りやすい状態を保ちたいならプライバシーはあるに越したことはありません。それでは対策を見ていきましょう。

対策一覧(まとめ)

・なるべく稚拙なトランザクションを作らない

コインセレクション(使用するUTXOを手動で選ぶ機能)が使えるウォレットと、過去のトランザクションの記録、そして練習が必要になりますが、必要以上にプライバシーを漏洩する稚拙なトランザクションを作らないことが1つの対策になります。

例えば別々の機会に受け取ったUTXOをなるべく関連付けないように(あたかも別のウォレットであるように)運用することで、全貌が掴めなくなります。そもそもウォレット自体を分けるという手もあります。(運用を間違えないように!)

一番多いであろう稚拙なトランザクションは「せっかくUTXO間の関連性が低かったのに1つの出力にまとめてしまう」というものでしょうか。ただ、手数料高騰時のユーザービリティなどにも影響するので難しいところです。

・自分のノード、自分のエレクトラムサーバーを使う

これは自明です。自分のウォレットのことを他人に問い合わせるのをやめましょう。

・たまに「違うノードから配信する」

正直、P2Pネットワークのスパイノードに対する対策は個人では取りにくいところがあります。また、それ自体で資産を結びつける決定的な証拠にはなりにくいので、必ずしも対策しなくても良いと思いますが、どうしてもしたいのなら違うノードからトランザクションを配信すると良いでしょう。例えばマイニングプールやブロックエクスプローラーにトランザクション配信フォームがあったりします。

Tor経由で接続すればブロックエクスプローラー側からも接続元を隠せます。

・ライトニングを活用する

この記事で若干ネガティブな文脈で登場したライトニングですが、「非公開チャネル」(いわゆるプライベートチャネル)であればチャネル自体も、それに対応するUTXOもネットワークに公開されません。ライトニング自体は送り主にとってプライバシーがかなり高いので、プライベートチャネルのみもつライトニングノードから使えばそもそもブロックチェーン解析を回避できます。チャネルごとに新しいノードを立てるのもいいでしょう。過去にそのようなウォレットがありました:

ライトニングユーザーがプライバシーを最重視するならどう使う?
ライトニングネットワークはオンチェーンの送金と比較してプライバシーの高い側面と低い側面があります。今日紹介するMutiny Walletはライトニングをプライバシーを最重視して使うユーザーを想定して開発されている奇特なウォレットです。 ちなみにSpiral (Square Crypto)が開発するLDKを使ったSenseiというライトニングノードをバックエンドに採用しています。 ※まだ実際に利用できるクオリティではありません。 LNのプライバシー ライトニングネットワークでの送金はオフチェーンで行われるため不特定多数の目にさらされることはなく、これがオンチェーンの送金と比較してプライバシーが高いと言われる主要因です。ところが、送金に関する情報が他者にリークしてしまうLN特有の問題がいくつかあります。以下に大きなものを2つ挙げます。

チャネル閉鎖後はそれがライトニングチャネルであったことは接続先ノードの行動によって推測されるかもしれませんが、得られる情報はわずかです。


ビットコインをプライバシーを守りながら使うのは熟練の技をもってしても難しいものです。その点、ライトニングを使えばある程度のプライバシーが得られるのは大きな魅力なのではないでしょうか。