Skip to content


Repository files navigation

handshake logo


a peculiar chat app for strange times

Handshake is designed to be an experiment in one-time key symmetric encrypted communications. The tool is based on in-person initialization of communication so that all future transmissions rely on symmetric key cryptography. This is primarily a design for out-of-band communication in which communicating parties aim to mitigate potential compromises in asymmetric encryption methodology ranging from CA poisoning to reliance on trusted centralized service providers for communications technology, and it can even be used to explore patterns in post-quantum readiness.

Handshake is designed initially to work on IPFS and hashmap, but there are no technical reasons other backends couldn't be supported. In fact, support for strategies is built into the core of handshake to allow for experimentation. For the sake of focus, this initial implementation utilizes hashmap and IPFS, but other decentralized tooling based around smart contracts and other systems should be able to be incorporated in the future.

You can read more about how handshake works in the design doc.

You can check out an early CLI-based proof of concept here:


Running in Docker

If you'd like to try this out without installing on your machine directly, you can run this in docker with a couple of Makefile helpers

  • make build - will build hashmap's cli tool from source inside of a fresh container
  • make shell - will give you an interactive shell to try to tool out

installing the CLI tool

You can install the CLI tool by running go install

go install

or by building from the cmd/handshake directory.