ハクソク

世界を動かす技術を、日本語で。

Reticulum、セキュアで匿名のメッシュネットワーキングスタック

概要

  • Reticulumは、暗号技術を基盤としたネットワーキングスタック
  • IP非依存で、超低帯域・高遅延環境でも動作可能
  • 誰でも自分専用ネットワーク構築が可能、中央管理不要
  • 多様な物理層・トポロジに対応し、柔軟な拡張性
  • ドキュメント・実装・ツールが豊富に提供

Reticulumとは

  • Reticulumは、暗号技術を基盤としたネットワーキングスタック
  • ローカル・広域ネットワーク構築を、汎用ハードウェアで実現
  • 高遅延・超低帯域環境でも安定動作
  • エンドツーエンド暗号化・発信者匿名性・自動設定型マルチホップ伝送
  • 効率的アドレス管理・偽造不能な配信確認・多彩な機能

基本理念とビジョン

  • 誰もが独立したネットワーク運用者になれる世界観
  • 安価・容易に広範囲ネットワークを自作可能
  • 中央管理・検閲・監視・制御のないネットワーク実現
  • 自由な相互接続・分離が可能なネットワーク群
  • 人間のためのネットワーク、公共性重視

技術的特徴

  • IP非依存、任意の物理層で動作
  • ユーザーランド実装、カーネルモジュール不要
  • Python 3上で動作、幅広いシステム対応
  • グローバル唯一アドレス・自己構成マルチホップルーティング
  • 発信者匿名性・パケットに送信元アドレス非記載
  • X25519暗号化・Ed25519署名による通信
  • 前方秘匿性・パケット/リンクごとに一時鍵生成
  • AES-256-CBC暗号・HMAC-SHA256認証
  • 柔軟なインターフェース拡張・独自インターフェース容易作成
  • 仮想ネットワーク分割・全インターフェースで認証対応
  • 直感的で強力なAPI・分散/分権アプリ開発容易化
  • 任意データ量の信頼性転送・自動圧縮/順序制御/チェックサム
  • 効率的なリンク確立・維持(3パケット/297バイト、維持0.44bps)

参考実装とプロトコル

  • Pythonリファレンス実装がプロトコル仕様の唯一の基準
  • Mark Qvistによるメンテナンス
  • Reticulum Licenseライセンス、プロトコル自体は2016年パブリックドメイン
  • 互換性=リファレンス実装と完全な相互運用性

Reticulum応用例

  • rnsh:Reticulum経由のリモートシェル
  • LXMF:遅延耐性メッセージ転送プロトコル
  • LXST:リアルタイム音声・信号伝送、ハードウェア電話機開発可能
  • Nomad Network:オフグリッド暗号化メッシュ通信基盤
  • Sideband:多機能GUIアプリ(ファイル転送、音声通話等)
  • MeshChat:WebベースのLXMFクライアント、画像/音声/ファイル転送対応

利用可能な物理媒体

  • 半二重/最低5bps/MTU500バイト以上の通信路で動作
  • データラジオ、モデム、LoRa、シリアル、AX.25、WiFi、Ethernet、光通信
  • RNode:Reticulum用LoRaインターフェース、USB接続可能
  • IPネットワーク上でのトンネリングも容易

導入方法

  • pipで簡単インストールpip install rns
  • pipxによる隔離環境インストールpipx install rns
  • 初回起動時に自動設定ファイル生成
  • pipのアップグレード・インストールも案内
  • 詳細な導入例・設定例は公式マニュアル参照

付属ユーティリティ

  • rnsd:常駐サービス用デーモン
  • rnstatus:インターフェース状態表示
  • rnpath:経路管理・表示
  • rnprobe:接続診断
  • rncp:ファイル転送
  • rnid:アイデンティティ管理・ファイル暗号化
  • rnx:リモートコマンド実行
  • rnsh:低帯域でも安定動作のリモートシェル

対応インターフェース

  • Ethernet全般
  • LoRa(RNode)
  • Packet Radio TNC(AX.25対応/非対応)
  • KISS互換モデム
  • シリアル接続機器
  • IPネットワーク上のTCP/UDP
  • 外部プログラム・カスタムハードウェア(stdio/pipe経由)
  • 独自インターフェースモジュール追加も容易

パフォーマンス

  • 実用帯域幅:150bps~500Mbps(将来的に拡張予定)
  • 低帯域環境優先、高帯域もサポート
  • 通常ハードウェアで最大1Gbps目標

現状と安定性

  • コア機能は実装済・安定
  • API・ワイヤーフォーマットは安定版
  • 今後も実利用を踏まえ機能追加予定

依存関係

  • PyCA/cryptography等、主要依存パッケージはpip経由で自動インストール
  • ほとんどのOS/ディストリビューションで容易に導入可能

公式ドキュメント・情報源

Hackerたちの意見

2022年に人気だった(95ポイント、15コメント) https://news.ycombinator.com/item?id=30870187
…今すぐ必要だね ;)
今年の夏にバージョン1.0.0が出たけど、ちゃんと動くよ!始めるのが簡単なメッシュチャットをチェックしてみてね: https://github.com/liamcottle/reticulum-meshchat それと、Android用のサイドバンド: https://github.com/markqvist/Sideband もう写真を送ったり、Loraでボイスチャットができるし、Loraの帯域幅が足りなくなったり、リンクがない場合でも、プロトコルは他のリンクタイプにスムーズに切り替えられるんだ。
最近、他のネットの部分からReticulumについて知ったんだけど、めっちゃ面白いと思ってる。基本的に、任意のコードを実行できるものと他のデバイスと通信できる能力があれば動くって考えていいのかな?(頑張ればシリアルでも動きそうだし)
現在利用可能な完全に機能するスタックは、Python >= 3.8が必要で、これが動作する場所の主な制限なんだ。でも、それでもできることはたくさんあるよ!
- Pythonとpip/pipxが動けば、必要なパッケージをpip/pipx経由でインストールできれば、Reticulumは動くよ。 - 32ビットのx86プラットフォームでは、PyCA/cryptographyモジュールをビルドする必要があるけど、それが終われば問題なく動く。 - Reticulumはいくつかの物理インターフェースをサポートしていて、シリアルもその一つ。もちろん、LoRaラジオ用の「RNode」インターフェースもあるよ。Ethernet用には「AutoInterface」があって、ピア発見のためにIPv6自動設定を使い、運搬にはIPv6 UDPを使うけど、DNSやDHCPには依存しないんだ。同じネットワーク上のPCやスマホ、他のデバイスがIPv6を有効にしていて、レイヤー2でフィルタリングがなければ、超簡単だよ - そこにいるどのデバイスも他のデバイスからのアナウンスを見て、MeshChatを立ち上げるだけで取引できる。 - 他のインターフェースタイプにはTCPクライアント、TCPサーバー、IPv4 UDP、I2P、パイプインターフェースがある。パイプインターフェースは面白くて、基本的に選んだ実行可能ファイルへのstdin/stdoutなんだ。だから、SSHトンネルみたいに、考えられるほぼすべてのものでReticulumを利用できるんだ。
誰かがアナセムのファンみたいだね!
ソフトウェアは、人工知能、機械学習、または言語モデルのトレーニングデータセットの作成に、直接的または間接的に使用してはならない。これは、そのようなモデルやアルゴリズムのトレーニングや開発に寄与する使用を含むが、これに限定されない。
これも見たけど、すぐに思ったのは「GitHubに公開したから、少なくともMicrosoftのCopilotのトレーニング用にコードを使うライセンスがあるんじゃないの?」ってこと。だから、別のGitプラットフォームで公開すればよかったのに。
マークのReticulum実装には、強いイデオロギー的背景があります。AIへの反対だけじゃなくてね。開発者の動機に興味がある人は、こちらのマニフェストを見てみてください: https://github.com/markqvist/Reticulum/blob/master/Zen%20of%...
meshtasticとはどう違うの? meshtasticはもっとチャットベースで、こっちはもっと一般的な感じ?
meshtasticはチャットとLoRaだけだよ。プロトコルは超非効率で信頼性も低いし、メッシュ内で最大7ホップまでしか扱えない。
Reticulumは、完全なユーザー匿名性を持つフルネットワークスタックです。P2Pネットワーク接続が必要で、遅い接続でも大丈夫なアプリにはどれでも統合できます。ReticulumはTCP/IPやUDP/IPの代替として、メッシュを使用しています。MeshtasticやMeshcoreはメッシュメッセンジャーで、メッシュテキストメッセージに特化しています。
野外でReticulumの大きなネットワークを見たことがない。俺はメッシュ関連のことに深く関わっていて、いくつかのローカルコミュニティにも参加してるんだけど、コミュニティがこのプロジェクトに乗り出さなかった主な理由の一つは、ほとんどが一人でやってるプロジェクトだからで、Gitの変更も「アップデート」「より良いバージョン」「アップデート」「クリーンアップ」みたいな感じで、変更を追跡するのがほぼ不可能なんだよね。
それに、3週間前にはその一人が「このプロジェクトとの公共の場でのやり取りから一歩引く」って言ってた。[1] さらに「不定期に更新があるかもしれないけど、サポートはないし、問題への返答もないし、議論もないし、コミュニティ管理もこの場や他の公共の場では行われない」って。特に問題はないけど、ただの燃え尽きたメンテナーがいる一人のオープンソースプロジェクトって感じだね :(。[1] - https://github.com/markqvist/Reticulum/discussions/1069
じゃあ、初心者におすすめのメッシュ関連のものは何?
誰もYggdrasil [0]を挙げてないのに驚いた。これは暗号的で非トポロジカルなアドレスを持つルーティングプロトコルで、TCP/IPやLoRaのような代替スタックの上で使える。数週間、Tailscaleの代わりに使っていて、ゲームサーバーのホスティングもしてるけど、レイテンシーはほぼ同じで、かなり安定してるように感じた。Reticulumとはどう違うの? [0] https://yggdrasil-network.github.io/
まず、ReticulumはYggdrasilネットワーク上でネイティブに通信できるけど、俺が知る限り、Reticulum上でYggdrasilリンクを実装した人はいないよ。
Reticulumは、商用利用に耐えうるフルネットワークスタックです。暗号技術と匿名性が重要視されています。トランスポート層に依存せず、LoRa専用ではありません。私は好きですが、広く普及するのを妨げている2つの主な問題があります。それは関連しています。1. ライブラリがPythonで書かれていることです。電話アプリやLinuxサーバーデーモンをCで設計したり、Lilygo T-Deckのような組み込みソフトウェアを作るのには不向きです。なんとかできるけど(組み込み以外は)、楽しくはないですね。C APIとC ABIを持つ小さなライブラリの方が良いです。2. エンドユーザー向けのソフトウェアのUIがひどいです。でも、AndroidメッセンジャーのColumba(https://github.com/torlando-tech/columba)みたいなソフトウェアで改善されてきています。もし1の問題が解決できれば、もっとエンドユーザー向けのソフトウェアが増えるでしょう。現在、4つのプロジェクトが1を解決しようとしていて、低レベル言語でReticulumライブラリを書いていますが、みんな自分の好きな言語で、自分のやり方でやってますね。C++、Zig、Rust、Goなど。BeechatのRust実装が最も成熟しているようですが、Beechatのデバイス以外で使われているのは見たことがありません。