s2underground / GhostNet

GhostNet
834 stars 54 forks source link

Integrating Reticulum Network Stack in the Future #26

Open Sudo-Ivan opened 1 month ago

Sudo-Ivan commented 1 month ago

What is the Reticulum Network Stack?

The Reticulum Network Stack is a decentralized cryptography-based network stack that allows communication over any medium, including HF/VHF/UHF, LoRa, Internet, and virtually anything if you create the software support for it. It supports low bandwidth, high latency networks, which is perfect for something like HF or LoRa.

The vision of Reticulum is to allow anyone to be their own network operator, and to make it cheap and easy to cover vast areas with a myriad of independent, inter-connectable and autonomous networks. Reticulum is not one network. It is a tool for building thousands of networks. Networks without kill-switches, surveillance, censorship and control. Networks that can freely interoperate, associate and disassociate with each other, and require no central oversight. Networks for human beings. Networks for the people. - https://github.com/markqvist/Reticulum

There is still more work that needs to be done on the stack, and the cryptography needs to be reviewed by a professional. The purpose of this issue is to discuss how to implement it in the future.

How will it integrate with the GhostNet?

rns-ghostnet

The stack can combine different mediums to achieve a wide range of coverage and complicate censorship efforts greatly.

Internet

The stack supports TCP/UDP (regular internet) and I2P (Invisible Internet Project), so a community network can be created to ensure censorship-resistant comms and exchange anything from files, memes, and voice messages. A TCP/I2P node would need to be created to allow users to find each other. The data is not decrypted at the server; if propagation is enabled, it can store encrypted messages for offline users for up to 30 days but the data remains encrypted until reaching the user.

A cheap VPS can be used to create the node for the network or self-hosted over I2P using something as cheap as a Raspberry Pi Zero W 2. However, users would need to install and setup I2P to be able to use that interface. Additional existing networks can be used as a backup if the node goes down. Even private networks can be created, and only those with the passphrase can join.

LoRa

Reticulum RNode provides LoRa support but requires a computer (such as a Raspberry Pi Zero W 2) as a full standalone version of the software in C++ is still a work in progress. This will allow groups to create private, secure groups and also combine with other interfaces like HF for long-range comms between RNode devices.

HF/VHF/UHF

In the event of a dire national emergency, and if necessary, secure comms can be established over radio to exchange sensitive information.

Someone has tested it over HF, here is a video: https://youtu.be/blwNVumLujc?si=vID7p5BuPvoIzIK7

Support for Other Communication Methods

A custom interface can be created to support really any communication method that at minimum supports half-duplex operation, provides an average throughput of 5 bits per second or greater, and supports a physical layer MTU of 500 bytes.

Communication possibilities

Chat

You can send messages, files, images and voice messages.

Propagation nodes store encrypted messages for offline users, this is of course optional and you need to set a propagation node or host your own.

Pages (Very minimal websites)

Any user can host a node and create a page using markup. Like this:

image

Even dynamic node generated pages using PHP, Python and bash.

Email

There is no email client yet, but it is very possible and potentially easy to build one that I might take on the task of creating it within the next few months if no one else does.

Voice

MeshChat and Sideband support exchanging voice messages and MeshChat has a calling feature so you can call other users on MeshChat, even over LoRa.

image

Offline Support

LXMF is the messaging format and delivery protocol built for the Reticulum Network Stack and it supports paper messages using QR codes or text-based URI. The messages remain encrypted, ensuring that only the intended recipient can read the contents.

ATAK and FreeTAK

Community members, including myself have talked about creating an ATAK integration.

The FreeTAK team as adopted Reticulum stack into their flock of parrots concept: https://matrix.to/#/!TRaVWNnQhAbvuiSnEK:matrix.org/$NSp9xNVnbFqG7ezLQGNTkmtVLyVV8bNssT65tq8q5lw?via=matrix.org&via=tchncs.de&via=matrix.minuteman-tech.net

Possible Issues Blocking Integration (as of 02 OCT 2024)

These are potential issues that may prevent adoption:

  1. Group Messaging
  2. Barrier to entry
  3. Apps and Integrations
  4. Hardware Support
  5. Simple Guides and Video Tutorials

For users that want to test it now

Current nodes and users image

Existing Apps

Meshchat - Web/Electron app NomadNet - Terminal Interface Sideband - Android and IOS Testflight

Awesome Reticulum

https://github.com/markqvist/Reticulum/wiki/Awesome-Reticulum

Manual, Videos and FAQ

I barely touched the surface of the stack and really suggest anyone who is interested read the full manual here: https://markqvist.github.io/Reticulum/manual/

If you want a short video explanation of the Reticulum Network Stack, I recommend checking out: https://www.youtube.com/watch?v=q8ltLt5SK6A

FAQ can be found here: https://github.com/markqvist/Reticulum/wiki/Frequently-Asked-Questions

Matrix Group for Reticulum

Join the official matrix room here: https://matrix.to/#/#reticulum:matrix.org

How am I contributing?

I am working on several bots, hardware encryption support (for Kryptor FPGA), donating, and also have some apps planned for the future. Occasionally I will do some security testing and make sure other projects are implementing best coding practices to prevent exploits.

tim292stro commented 1 month ago

I support this effort, and agree with the conclusions made above. I moved from Meshtestic to rNode a while back and have done some of my own ATAK server work (a "superuser" node on an RPi Zero 2 w as a USB-C connected local "server", providing longer reach connectivity to normal users in range). I'm interested if this gets traction in GhostNet, and would be willing to help out.

One of the capabilities I like about Reticulum is the ability to do an off-line dump via sneaker-net (not just using IT systems or radios) - something that the Western NC event show would be useful, when people have to (but still can) walk in an out.

Sudo-Ivan commented 1 month ago

Thanks for reminding me, The offline features are very useful in certain situations.

s2underground commented 3 weeks ago

Yes, reticulum will be integrated into this in the future. For now, a lot of content has to be made on it that explains how things work for the layperson, but it will be integrated at some point