
reticulumは、容易に利用できるハードウェアを備えたローカルおよび幅広いエリアネットワークを構築するための暗号化ベースのネットワークスタックです。非常に高いレイテンシと非常に低い帯域幅でも動作できます。 reticulumを使用すると、既製のツールを備えた幅広いエリアネットワークを構築でき、エンドツーエンドの暗号化と接続性、イニシエーターの匿名性、暗号化されたマルチホップ輸送、効率的なアドレス指定、容認できない配信の承認などを自動確認することができます。
Reticulumのビジョンは、誰でも自分のネットワークオペレーターになることを許可し、無数の独立した接続可能な自律的なネットワークで広大な領域を安価で簡単にカバーできるようにすることです。 reticulumは1つのネットワークではありません。これは、何千ものネットワークを構築するためのツールです。キルスイッチ、監視、検閲、制御のないネットワーク。互いに自由に相互運用し、関連付け、関連することができるネットワークは、中央の監視を必要としません。人間のためのネットワーク。人々のためのネットワーク。
Reticulumは完全なネットワーキングスタックであり、IPまたは高レイヤーに依存していませんが、IPを網膜の基礎となるキャリアとして使用することは可能です。したがって、インターネットまたはプライベートIPネットワークを介して網膜をトンネルするのは簡単です。
従来のネットワーキングスタックに依存関係がないため、暗号化の原則に直接構築されたネットワークスタックを実装するために使用され、オープンで信頼のないネットワークでも回復力と安定した機能性が可能になります。
カーネルモジュールまたはドライバーは必要ありません。 reticulumはユーザーランドで完全に実行され、Python 3を実行するすべてのシステムで実行できます。
reticulumの完全なドキュメントは、markqvist.github.io/reticulum/manual/で入手できます。
また、ReticulumマニュアルをPDFとして、またはEPUB形式の電子書籍としてダウンロードすることもできます。
詳細については、reticulum.networkとWikiのFAQセクションを参照してください。
網状体はすでに完全に機能した機能的なネットワーキングスタックですが、多くの改善と追加が積極的に取り組んでおり、将来のために計画されています。
reticulumの方向と未来の詳細については、開発ロードマップをご覧ください。
Reticulumが何ができるかをすばやく理解したい場合は、次のリソースをご覧ください。
実際には、スループットが5ビットあたり5ビット、MTUは500バイトのMTUで少なくとも半分二重チャネルをサポートできる媒体よりも。データラジオ、モデム、ロラ無線、シリアルライン、ax.25 TNC、アマチュア無線デジタルモード、WiFiおよびイーサネットデバイス、フリースペース光リンク、および同様のシステムはすべて、Reticulumが使用できる物理デバイスのタイプの例です。
rnodeと呼ばれるオープンソースロラベースのインターフェイスは、reticulumで使用するために特別に設計されています。自分で構築することは可能です。または、ホストへのUSB接続が必要な完全なトランシーバーとして購入することもできます。
reticulumは既存のIPネットワークを介してカプセル化することもできます。そのため、有線イーサネット、ローカルWiFiネットワーク、またはインターネット上でそれを使用することを妨げるものは何もありません。実際、網状体の強度の1つは、利用可能なインフラストラクチャの利用可能な混合物を使用して、さまざまな媒体を自己構成、回復力、暗号化されたメッシュに簡単に接続できることです。
例として、LORA無線、パケット無線TNC、WiFiネットワークの両方に接続されたRaspberry PIをセットアップすることができます。インターフェイスが構成されると、Reticulumが残りを処理し、WiFiネットワーク上の任意のデバイスがネットワークのLORAおよびパケット無線側のノードと通信し、その逆も同様です。
reticulumネットワークスタックを始めるための最良の方法は、あなたがしたいことによって異なります。詳細と例については、reticulumマニュアルの速いセクションを開始することをご覧ください。
システムにreticulumと関連ユーティリティを単純にインストールするために、最も簡単な方法はpipを使用することです。その後、reticulumを使用するプログラムを開始したり、RNSDユーティリティを備えたシステムサービスとしてreticulumを開始できます。
pip install rns pipを介して通常のユーザーパッケージのインストールをブロックするオペレーティングシステムを使用している場合、 ~/.config/pip/pip.confファイルを編集し、 [global]セクションに次の指令を追加することで、 pipを通常の動作に戻すことができます。
[global]
break-system-packages = true
または、 pipxツールを使用して、孤立した環境にreticulumをインストールすることもできます。
pipx install rns最初に開始すると、Reticulumはデフォルトの構成ファイルを作成し、ローカルに到達可能な他のReticulumピアへの基本的な接続を提供します。デフォルトの構成ファイルには、いくつかの例と、より複雑な構成を作成するための参照が含まれています。
システムに古いバージョンのpipがある場合は、 pip install pip --upgradeで最初にアップグレードする必要がある場合があります。 pipがまだインストールされていない場合は、 sudo apt install python3-pipなどを使用してシステムのパッケージマネージャーを使用してインストールできます。
Packet RadioやLora、Serial Ports、または高速IPリンク、UDPおよびTCPインターフェイスを使用してインターネットなどの多くの媒体で通信を拡張する方法の詳細な例については、Reticulumマニュアルのサポートされているインターフェイスセクションをご覧ください。
reticulumには、ネットワークを管理するためのさまざまな有用なユーティリティ、表示ステータスと情報の表示、その他のタスクが含まれています。これらのプログラムの詳細については、reticulumマニュアルの含まれているユーティリティプログラムのセクションで読むことができます。
rnsdrnstatusと呼ばれるインターフェイスステータスユーティリティrnpathパステーブルを表示および変更できるrnprobeと呼ばれる診断ツールrncpと呼ばれる単純なファイル転送プログラムを使用して、システム間でファイルを簡単に転送できますrnidアイデンティティを管理し、ファイルを暗号化/復号化しましょうrnxコマンドとプログラムを実行し、リモートシステムから出力を取得しましょうrnxやrncpを含むすべてのツールは、LORAやPacket Radioなどの非常に低い帯域幅リンクでも確実に機能します。 Reticulum上のフル機能のリモートシェルについては、RNSHプログラムもご覧ください。
網膜は、網状体が走ることができる通信ハードウェアのほとんどをカバーする一連の一般化されたインターフェイスタイプを実装します。ハードウェアがサポートされていない場合、カスタムインターフェイスモジュールを実装するのは簡単です。
カスタムインターフェイスのプルリクエストは、一般的に有用であり、現実世界の使用で十分にテストされている場合、感謝して受け入れられます。
現在、次の組み込みインターフェイスがサポートされています。
Reticulumは非常に広く使用可能なパフォーマンスエンベロープをターゲットにしていますが、低帯域幅媒体の機能とパフォーマンスを優先します。目標は、毎秒250ビットから通常のハードウェアで1秒あたり1ギガビットに動的なパフォーマンスエンベロープを提供することです。
現在、使用可能なパフォーマンスエンベロープは1秒あたり約150ビットから1秒あたり40メガビットで、物理媒体は飽和しないよりも速いです。現在のレベルを超えるパフォーマンスは、将来のアップグレードを目的としていますが、現時点では非常に優先されていません。
現在、reticulumはベータソフトウェアと見なされるべきです。すべてのコアプロトコル機能が実装され、機能していますが、実際の使用が調査されているため、おそらく追加が発生します。バグがあります。 APIとワイヤー形式は、現時点では比較的安定していると見なすことができますが、保証されれば変更される可能性があります。
デフォルトのrnsパッケージのインストールには、以下にリストされている依存関係が必要です。ほとんどすべてのシステムと分布には、これらの依存関係のために容易に利用可能なパッケージがあり、 rnsパッケージがpipでインストールされると、ダウンロードおよびインストールされます。
より珍しいシステム、およびまれな場合には、上記のモジュールの1つ以上をインストールしたりコンパイルしたりすることはできない場合があります。このような状況では、代わりにrnspureパッケージを使用できます。これには、インストールに外部依存関係を必要としません。 rnsとrnspureパッケージの内容は同一であることに注意してください。唯一の違いは、 rnspureパッケージがインストールに必要な依存関係をリストしないことです。
網状体がどのようにインストールされ、起動されていても、それらが必要で利用可能な場合にのみ、外部依存関係をロードします。たとえば、pyserialをサポートできないシステムでreticulumを使用する場合、 rnspureパッケージを使用してそうすることは完全に可能ですが、reticulumはシリアルベースのインターフェイスを使用できません。必要に応じて、他のすべての使用可能なモジュールは引き続きロードされます。
ご注意ください! rnspureパッケージを使用して、PYCA/暗号化をサポートしていないシステムでReticulumを実行する場合、このドキュメントの暗号化プリミティブセクションを読んで理解することが重要です。
物理的なネットワークを構築せずに実験を開始したい場合は、RNS開発テストネットに参加できます。
テストネットは、テストと実験のための非公式のネットワークです。ほとんどの場合、誰でも参加できますが、サービスの可用性について保証がないことも意味します。
おそらく言うまでもありませんが、ユーザーに出荷するアプリケーションのハードコーディングまたはデフォルトのインターフェイスとしてテストネットのエントリポイントを使用しないでください。出荷アプリケーションの場合、ベストプラクティスは、必要に応じて適用される場合、またはほとんどの場合、接続するネットワークをユーザーに任せた独自のデフォルト接続ソリューションを提供することです。
TestNetは、Reticulumの最新バージョンを実行します(多くの場合、公開される前にしばしばします)。場合によっては、実験バージョンのreticulumがテストネット上のノードに展開される場合があります。これは、奇妙な動作が発生する可能性があります。それがあなたを怖がらない場合は、TCPまたはI2Pを介してテストネットに参加できます。次のインターフェイスのいずれかをreticulum構成ファイルに追加するだけです。
# TCP/IP interface to the RNS Amsterdam Hub
[[RNS Testnet Amsterdam]]
type = TCPClientInterface
enabled = yes
target_host = amsterdam.connect.reticulum.network
target_port = 4965
# TCP/IP interface to the BetweenTheBorders Hub (community-provided)
[[RNS Testnet BetweenTheBorders]]
type = TCPClientInterface
enabled = yes
target_host = reticulum.betweentheborders.com
target_port = 4242
# Interface to Testnet I2P Hub
[[RNS Testnet I2P Hub]]
type = I2PInterface
enabled = yes
peers = g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq.b32.i2p
TestNetには、多くのNOMADネットワークノードとLXMF伝播ノードも含まれています。
次のチャネルのいずれかを介して寄付することにより、オープン、フリー、プライベートのコミュニケーションシステムの継続的な開発をサポートできます。
84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
0xFDabC71AC4c0C78C95aDDDe3B4FA19d6273c5E73
35G9uWVzrpJJibzUwpNUQGQNFzLirhrYAH
開発ロードマップの特定の機能は、あなたまたはあなたの組織にとって重要ですか?実装をスポンサーすることで、それらを迅速に実現します。
Reticulumは、一般的なCPUとマイクロコントローラーの両方で使用できる広く利用可能な実装を備えた、効率的で強力で十分にテストされた暗号化プリミティブのシンプルなスイートを使用しています。利用されたプリミティブは次のとおりです。
デフォルトのインストール構成では、 X25519 、 Ed25519およびAES-128-CBCプリミティブがOpenSSLによって(PYCA/暗号化パッケージを介して)提供されます。ハッシュ機能SHA-256およびSHA-512は、標準のPython Hashlibによって提供されます。 HKDF 、 HMAC 、 Tokenプリミティブ、およびPKCS7パディング機能は、常に次の内部実装によって提供されます。
網状体には、純粋なPythonに必要なすべてのプリミティブの完全な実装も含まれています。網状体が開始されたときにOpenSSL&PYCAがシステム上で利用できない場合、網膜は代わりに内部の純粋なピソンプリミティブを使用します。これの些細な結果はパフォーマンスであり、OpenSSLバックエンドははるかに高速です。しかし、最も重要な結果は、OpenSSLの精査、テスト、レビューの量を見たことがないプリミティブを使用することによるセキュリティの潜在的な喪失です。
内部の純粋なパイソンプリミティブを使用したい場合は、これがもたらすリスクを十分に理解し、それらのリスクがあなたに受け入れられるかどうかについて情報に基づいた決定を下すことを非常に勧めます。
reticulumは比較的若いソフトウェアであり、そのように考える必要があります。暗号化の最善の実践を念頭に置いて構築されていますが、外部のセキュリティ監査はなく、プライバシーやセキュリティ破壊バグがある可能性があります。支援したい場合、または監査のスポンサーを支援したい場合は、連絡してください。
網膜は、それが上に構築されたオープンソースの山の山、関係者全員の貢献、そして長年にわたってプロジェクトをサポートしてきたすべての人のためにのみ存在します。助けてくれたすべての人に、どうもありがとうございました。
他の多くのモジュールとプロジェクトは、Reticulumの一部または使用されています。著者と次のプロジェクトの貢献者に心から感謝します。