ビットコインも利用するTorとは
自分のIPアドレスを知られることなく通信を行うための通信経路の秘匿化技術にTorと呼ばれるものがあります。
自身のプライバシーを守るための技術で、プライバシー重視なブラウザBraveが対応していたりします。
身近なところですと、ビットコインノードも当たり前のように対応しています。
こんなTor技術ですが、匿名性を高める代わりに通信速度であったり通信の安定性が犠牲になっています。
Lightning Networkでの決済がタイムアウトすることの一因にTorもあるなあと、ノード運営者だと実感する今日この頃かもしれません。
さて、今回はこのTorがなぜ遅いの?というところを深堀りしてみたいと思います。
TORのしくみ
なぜ遅いの、の前にTorのしくみを簡単に俯瞰してみましょう。

[図1]
図にあるように、Torを用いた通信経路秘匿化通信では、複数の中継ノードを経由することで、アクセス元のIPアドレスを割り出しにくくする、といったしくみが導入されています。
もう少しかみ砕いた説明をすると、
- 複数のリレーノードを経由して通信が行われる
- 今の仕様では、Entry Guardノード、Middleノード、Exitノードといった3つの役割のノードを順次経由し最終地点のWebサイトのサーバーにアクセスする
- リレーノードはアクセスログを保存しない
- 最終地点のWebサイトのサーバーログには最後のExitノードのIPアドレスだけが記録される
- 本当のアクセス元を知るには、Exitノード、Middleノード、Entry Guardノードを順に辿る必要があるが、アクセスログがないのでたどり着けない
といったかたちになります。
なぜ遅いのか
おもに次の2点が大きな要因です。
1.仕組み自体がそもそも遅い(中継ノードを3つも経由する分遅くなる)
2.需要に対してリソースが足りない(1つのノードが沢山の通信を処理している)
個人的には、2021年からのLightning Networkノードでの利用増が圧倒的に要因2を推し進めたと思っています。
せっかくなので、ちょっと数字を追いかけてみましょう。
ちょっと古いですが、Umbrel (Tor接続を行うLightning Networkノード)の稼働数をBitcoin Magazineが集計していました。
https://bitcoinmagazine.com/.../90-of-lightning-nodes...
いくつかの時期を抜粋すると、
2020年7月 14台
2021年1月 2,236台
2021年7月 9,349台
といったかんじです(詳しくは図2)。

[図2]
2021年末には全Lightningノードの半数近くはUmbrelとのことで、これらが全てTor通信を行っていると考えると凄いです。
しかも、世の中にはmyNode、raspiblitzといった似たようなプロジェクトもあり、これも加味するとビットコインノードの過半数はTor通信をしていると思われます。
では、これに対しTor中継ノードの数はどんなかんんじでしょうか。
Tor中継ノードの数について、公式サイトから拾ってくると次のようなかんじでした。

[図3]
だいたい6,000〜7,000台で推移しています。
特に、セキュリティ的な面を考えるとなかなか担い手ボランティアがいないExitノードについては、1,000〜1,500台くらいで推移しています。
ビットコインノードという需要は急増しているのに、Torノードの数はあまり変化がない現状が見て取れます。
ちなみに、日本でのTorノード運用数はどうなのかな、と調べてみると、なんと、
48台
だそうです。
参考: https://metrics.torproject.org/rs.html#search/country:jp
さて、1万台近くものLightningノードがひっきりなしに決済だったり、プロービングだったりのパケットを流しています。
個人的にエグいなあと思うのは、ビットコインがP2P通信な点とLightningにおけるプロービングです。
P2P通信では、1つのノードが何台ものノードと通信します。
ということは、ネットワーク全体でのトラフィックは、ノード数の増加に対して指数的に増えるしくみなんですね。
しかも、現状のLightning Networkでのノード運用ではプロービングが積極的に利用されています。
プロービングは(手数料が安い、安定しているなどの面で)より良い接続ノードを探索しようと、様々なノードに対してソナーを打つような行為です。
詳しくは下記加藤さんのコラムを是非参照いただきたいのですが、Lightning Networkの通信の98%がプロービングかもしれないと。
【2022/4/14】LNの中継ノードを圧迫するProbingもネットワークに貢献する?

Lightning Networkの現状は、ただでさえ負荷が高まって辛い状況にあるTorネットワークの上でDOS攻撃のようなどんちゃん騒ぎをしている感じになっています。
なかなか辛いですね。
TOR中継ノードを立てるには
Tor中継ノードが少ない要因のひとつには、そもそも立て方が分からないという点もあるかと思います。
実は、皆さんがLightning Networkで遊んでいるラズベリーパイなどでも運用できちゃうようです。
私自身はTorノードを運用している訳ではなくとても軽い言及になってしまうのですが、立てるにあたって以下が参考になりそうです。
https://zenn.dev/psyashes/articles/ccc6e78b97f4f2
Umbrelをセットアップしたことがある方ならなんとかなりそうですね。
一般家庭のインターネットで実際に立てられるのかは自分にはよく分かっていません。
実践編はまた改めてコラムにしたいなと思います。
Umbrelは、いろんなアプリを搭載するならTorノード機能も提供すればいいのに、とか思う今日この頃です。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。

ディスカッション