Skip to content

A set of software libraries for secure communication between devices without using the internet.

License

Notifications You must be signed in to change notification settings

commotionwireless/clatter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clatter

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.

Contents

Mesh Datagram Protocol (MDP)

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.

Features

  • Message confidentiality
  • Mesh routing
  • Per-hop retransmission
  • STUN/TURN (for unicast support)
  • Compression

Documentation

API | Architecture | Serval

Usage

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.

Mesh Streaming Protocol (MSP)

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.

Features (in addition to MDP's)

  • Session handling
  • In-order message delivery
  • Reliable transmission
  • Perfect forward secrecy

Documentation

API | Architecture | Serval

Usage

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 (COMING SOON)

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.

Features (in addition to MDP's)

  • Delay tolerance
  • Bundle confidentiality
  • Bundle pseudonymity
  • Append-only encrypted journaling
  • SMS-like messaging service
  • Tree-based synchronization protocol

Documentation

API | Architecture | Serval

Usage

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.

License

GPLv3

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.

About

A set of software libraries for secure communication between devices without using the internet.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages