- 暗号技術ベースのネットワーキングスタックであり、LoRa・パケット無線・WiFi などさまざまな媒体で動作し、超低速・高遅延環境でも安定した通信をサポート
- エンドツーエンド暗号化、送信者匿名性、自動構成マルチホップルーティング、偽造不可能な配信確認など、セキュリティ重視の機能を搭載
- IP スタックに依存せず、Python 3 環境でカーネルモジュールなしにユーザー空間で実行可能
- 低コストで自律的なネットワーク構築を目標とし、中央統制や検閲なしに数千の独立ネットワークを相互接続可能
- 分散型通信インフラ構築とオフグリッドネットワーキングのためのオープンソースツールとして、開発者や研究者に高い活用価値
Reticulum 概要
- Reticulum は 暗号技術ベースのネットワーキングスタックで、一般的なハードウェアを使ってローカルおよび広域ネットワークを構築できる
- 高遅延・低帯域幅環境でも動作
- エンドツーエンド暗号化、送信者匿名性、自動構成マルチホップ転送、効率的なアドレッシング、偽造不可能な配信確認機能を提供
- 目標は、誰もが自分自身のネットワーク運用者となり、中央統制なしに自律的で相互接続可能なネットワークを構築できるようにすること
- Reticulum は単一のネットワークではなく、数千の独立ネットワークを構築するためのツールとして設計されている
- IP を基盤として動作させることもでき、インターネットやプライベートネットワーク上でトンネリング可能
- Python 3 環境で動作し、カーネルモジュールやドライバは不要
主な機能
- グローバルに一意なアドレッシングと自動構成マルチホップルーティングをサポート
- 送信者匿名性を保証: パケットにソースアドレスを含めない
- 非対称 X25519 暗号化と Ed25519 署名ベースの通信
- 512ビット Curve25519 キーセットを使用
- Forward Secrecy をサポートし、AES-256-CBC 暗号化および SHA256 HMAC 認証を使用
- 拡張可能なインターフェースシステムにより、カスタムインターフェースを追加可能
- シンプルな API を提供し、分散型アプリケーションの開発が容易
- 大容量データ転送をサポートし、自動圧縮・チェックサム・転送調整機能を含む
- 軽量な Request/Response メカニズムと効率的なリンク確立(3パケット、297バイト)
参照実装とプロトコル
- このリポジトリの Python コードが公式の参照実装であり、プロトコル定義の基準
- Reticulum License で配布され、プロトコルは2016年にパブリックドメインへ寄贈
- 互換性は参照実装との完全な相互運用性によって定義される
活用例
- rnsh: Reticulum ベースのリモートシェルセッション
- LXMF: 分散型メッセージ転送プロトコル
- LXST: リアルタイム音声・信号転送フレームワーク
- Nomad Network: オフグリッド暗号化メッセージ通信プラットフォーム
- Sideband: ファイル転送・音声通話・地図機能を備えた GUI アプリ
- MeshChat: Web ベースの LXMF クライアントで、画像・音声・ファイル転送をサポート
対応媒体とデバイス
- 最低 5bps 以上の半二重チャネルと 500バイト MTU をサポートするあらゆる媒体で動作
- LoRa、パケット無線、WiFi、イーサネット、光通信リンクなどを利用可能
- RNode は Reticulum 用の LoRa インターフェースで、自作または完成品の購入が可能
- Raspberry Pi などで LoRa・パケット無線・WiFi を混在構成可能
対応インターフェース
- イーサネット、LoRa(RNode)、パケット無線 TNC、KISS モデム、シリアルデバイス、TCP/UDP、stdio パイプなどをサポート
- カスタムインターフェースモジュールの追加が可能で、実運用で検証された PR を歓迎
性能と状態
- 目標性能範囲: 250bps〜1Gbps、現在は約 150bps〜500Mbps
- コアプロトコル機能は完全実装されており、API とフォーマットは安定状態
接続のブートストラップ
- Reticulum は加入型サービスではなく自律ネットワーク
- コミュニティ運営の公開エントリポイントディレクトリを通じて初期接続が可能
- 例:
directory.rns.recipes, rmap.world
暗号技術の構成要素
- Curve25519 ベースの 512ビット キーセット、Ed25519 署名、X25519 鍵交換
- HKDF、AES-256-CBC、HMAC-SHA256、SHA-256/512 を使用
- デフォルトでは OpenSSL と PyCA/cryptography を通じて提供
- 純粋な Python 実装も含まれるが、セキュリティ検証レベルは低い
1件のコメント
Hacker Newsの反応
自分は複数の地域コミュニティでメッシュネットワークを深く扱ってきたが、Reticulumを実際に使っている大規模なネットワークは見たことがない
コミュニティが参加しない主な理由は、このプロジェクトが事実上1人の開発者中心で、Gitの変更履歴も「Update」「Better Version」「Cleanup」のようなものばかりで、追跡がほぼ不可能だからだ
今後は予測不能な散発的アップデートがあるだけで、サポートやコミュニティ運営は一切行わないと述べている
結局また1つの燃え尽きた1人オープンソースプロジェクトになってしまったわけだ
別れの挨拶のように感じられる文章だった
Reticulumはプロダクション級の完全なネットワークスタックで、暗号化と匿名性が中核にある
LoRa専用ではなく、トランスポート層非依存だ
ただし2つ問題がある
C APIを持つ小さなライブラリのほうがよいと思う
ただしColumbaのようなアプリが少しずつ改善している
現在、C++、Zig、Rust、Goなどで低レベル言語版を作る試みが4件ほどある
その中ではBeechatのRust実装が最も成熟して見えるが、実運用例はほとんどない
「昔ながらのやり方」はブラウザの鍵アイコンを信頼することで、「Zen方式」はハッシュフィンガープリントを直接検証することだ
しかしこのアプローチはUXがひどい
技術者の自分でさえ設定に苦労したのだから、一般ユーザーが使うはずがない
結局、大衆化を望むなら、あの緑の鍵アイコンが必要だ
誰も言及していないのが驚きだが、Yggdrasilというルーティングプロトコルがある
暗号ベースのアドレスを使い、TCP/IPやLoRa上でも動作する
自分はここ数週間Tailscaleの代替として使っているが、遅延も似たようなものでかなり安定していた
Reticulumとの違いが気になる
Yggdrasil公式サイト
実際に自分が最も気にしているのはメッセージ配送の保証だ
Reticulumは「Store and Forward」を基本モードとしている
メッセージがすぐに届かなくても、後で接続が生じれば送信される
ただ、メッセージが順不同で届いたとき、クライアントがそれを正しく並べ替えるためのメタデータを含んでいるのか気になる
Reticulumは1.0.0バージョンに到達しており、実際によく動く
始めるならmeshchatや
Android向けのSidebandを使ってみるとよい
LoRaで写真や音声チャットも可能で、帯域が足りなかったりリンクが切れたりすると自動的に別の転送方式へ切り替わる
自分が混乱しているのは、公式プロトコル仕様が公開されていない点だ
LoRaのような無線チップ向けならマイクロコントローラで動く必要があるのに、Python版やRust std版はそうした環境では使えない
ライセンスを見ると、完全な自由ソフトウェアではない
「人間に害を与えないこと」と「AI使用禁止」の条項が含まれている
3つともeBGPのようなマルチスパニングツリー構造を備えたマスター・スレーブノード構成が必要だ
誰かがAnathemのファンらしい