Secure Scuttlebutt


Secure Scuttlebutt is a peer-to peer communication protocol, mesh network, and self-hosted social media ecosystem. Each user hosts their own content and the content of the peers they follow, which provides fault tolerance and eventual consistency. Messages are digitally signed and added to an append-only list of messages published by an author. SSB is primarily used for implementing distributed social networks, and utilizes cryptography to assure that content remains unforged as it is propagated through the network.

History

SSB was created by Dominic Tarr in 2014 as part of experimental development in alternative databases and distributed systems. Dominic lived on a sailboat with unreliable internet connection, and became interested in creating an offline-friendly secure gossip protocol for social networking. The word scuttlebutt is slang for "water-cooler gossip" among sailors. SSB gained popularity on the wave of privacy controversies raising against the traditional social media.

Protocol

Secure Scuttlebutt operates as a database of immutable append-only feeds, which allows resilient replication over the Internet, local area networks, and sneakernets. Messages are hashed with SHA256 and verified with an Ed25519 signature; this makes it impossible to forge a message without the private key of the author. Users only download messages from peers that they follow, which prevents harassment and spam. This makes the network invite-only, meaning that new peers who join the network aren't visible until someone follows them.
User content in SSB is organized as an append-only sequence of immutable messages, where messages cryptographically sign adjacent messages for the purpose of guaranteeing unforgeabilitity of the sequences as they are replicated to other peers. SSB peers exchange asymmetric keys and establish authenticated connections between each other using an Authenticated Key Exchange protocol, Secret Handshake.

Applications

The reference implementation is written in JavaScript with Node.js. There are also active implementation efforts in Go, Python, and Rust.
Many independent applications have been implemented on SSB, including a social network, music sharing, chess, a Git subsystem, and an npm registry.

See Also