NOTE: THIS IS AN EARLY VERSION PENDING A SECURITY AUDIT. THERE ARE BUGS, AND THE API IS SUBJECT TO CHANGE. IT IS NOT YET FULLY COMPATIBLE WITH SERVAL BUT WILL BE SOON.
Clatter is a set of software libraries for secure, device-to-device communication without using the internet. The purpose of the Clatter project is to create memory-safe implementations of offline networking protocols with clear APIs and documentation to make it easy for developers to add these technologies to their applications. Currently, Clatter includes implementations of three protocols pioneered by the Serval Project. Features listed below include those either already planned or in existence for Serval, and their implementation status in Clatter.
MDP is an encrypted network protocol addressed by curve22519 public keys instead of IP addresses. It is conceptually independent of IP but is currently utilized primarily un top of UDP/IP. It provides message confidentiality, has built-in mesh routing, and is highly optimized for low-bandwidth wireless broadcast networks.
- Message confidentiality
- Mesh routing
- Per-hop retransmission
- STUN/TURN (for unicast support)
- Compression
API | Architecture | Serval
First, add this to your Cargo.toml
:
[dependencies]
mdp = "0.1.0"
Next, add this to your crate:
extern crate mdp;
See the here for documentation and examples.
MSP is an encrypted network streaming protocol built on top of MDP. Whereas MDP is analagous to UDP, MSP is analagous to TCP. MSP provides session handling, in-order transmission of messages, and reliable rebroadcast.
- Session handling
- In-order message delivery
- Reliable transmission
- Perfect forward secrecy
API | Architecture | Serval
First, add this to your Cargo.toml
:
[dependencies]
msp = "0.1.0"
Next, add this to your crate:
extern crate msp;
See the here for documentation and examples.
Rhizome is a delay-tolerant-messaging (DTN) layer on top of the Serval protocol stack. Rhizome transmits message "bundles" that are best-effort synchronized across all nodes in the network. Rhizome provides a decentraized method of transmitting files and messages within a network that is unreliable or sparsely connected.
- Delay tolerance
- Bundle confidentiality
- Bundle pseudonymity
- Append-only encrypted journaling
- SMS-like messaging service
- Tree-based synchronization protocol
API | Architecture | Serval
First, add this to your Cargo.toml
:
[dependencies]
rhizome = "0.1.0"
Next, add this to your crate:
extern crate rhizome;
See the here for documentation and examples.
Clatter is a free software project licensed under the GNU General Public License v3.0 (GPLv3). It implements open protocols designed by the Serval Project.