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:
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 containermake shell
- will give you an interactive shell to try to tool out
You can install the CLI tool by running go install
go install github.com/nomasters/handshake/cmd/handshake
or by building from the cmd/handshake
directory.