SSB

From Wiki
Revision as of 17:04, 6 April 2019 by Joseph (talk | contribs)

Secure ScuttleButt (SSB) is a P2P protocol for replicating messages across a global group of peers.

One of its first implementations of the SSB protocol is a distributed social network. The nodes in the ScuttleButt form what is known as a Scuttleverse, analogous to the ActivityPub Fediverse. At the time of this writing, the SSB network has about 200 active users.


The reference implementation of the social network uses the patchwork core library written in NodeJS. Several clients have been built on top of this, the most popular at this time being Patchwork for desktop and Manyverse for mobile.


Offline first

ScuttleButt is offline-first, which means that it can perform most of its functions without network connectivity. Some analogies can be drawn with git, a distributed version control system. Just like a git user can do most of their work offline in a git repository and only has to go online to push to or pull from a remote, a ScuttleButt user can write posts, upload images etc. to their local ScuttleButt node totally offline and push them to their followers or pull from their follows when they get online. ScuttleButt doesn't strictly need internet access, since it's a P2P protocol. Two users can connect their clients over Wi-Fi, ethernet, bluetooth, tor, cjdns etc. ScuttleButt clients also support discovery of peers in the local network.

Pubs

An important thing to understand for people new to the ScuttleButt network is that interactions between people are similar to how they happen in the real world. You can directly talk to people who are in your immediate vicinity (think LAN, bluetooth etc.). When your local peer travels to another location and connects to someone else, they receive your messages too. But their client may filter them out if they're not following you. In order to be connected to people across the internet, there are large nodes in the network called pubs. Pubs are servers that are directly accessible over the internet. They are the data aggregation points of the SSB network. Two people can talk over the internet using SSB if they are connected to a common pub.

Security

Each SSB account is associated with a key pair. The public key is used for unique identification of an account in the SSB network. Each message is cryptographically signed to ensure authenticity of the message since the transport is peer-to-peer. Think of this as similar to how DHTs are used in the BitTorrent network to ensure the integrity of data since the peers are all strangers to you. In addition, private messages are encrypted using the same key pair.

Use cases

For people with intermittent network access

People living in the woods or on a sea voyage can use the SSB network to create posts, travelogues etc. and sync with the rest of the world when they get network access.

A private local-only social network

Consider a college campus or a community Wi-Fi network with a good LAN network but no good internet access. Since SSB can auto-discover peers on the network, people can use ScuttleButt as their private social network without installing a local server. Well, it is private only as long as one of them doesn't join a pub.

References

  1. https://librelounge.org/episodes/episode-14-secure-scuttlebutt-with-joey-hess.html
  2. https://ssbc.github.io/docs/
  3. https://www.scuttlebutt.nz/