Skip to content
a peculiar chat app for strange times
Branch: master
Clone or download
Latest commit 55f943b Apr 10, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd/handshake removed build binary Apr 10, 2019
design-docs Update handshake-core.md Apr 9, 2019
images
x big dep update Apr 10, 2019
.gitignore update gitignore Feb 12, 2019
Dockerfile
LICENSE Initial commit Jun 16, 2018
Makefile testbed updates Feb 13, 2019
README.md Update README.md Apr 10, 2019
chat.go core POC push Feb 12, 2019
chat_test.go core POC push Feb 12, 2019
crypto.go
crypto_test.go POC lookupHash KDF Feb 6, 2019
go.mod
go.sum big dep update Apr 10, 2019
handshake.go initial working version of NewChat Feb 10, 2019
handshake_test.go
profile.go initial working version of NewChat Feb 10, 2019
session.go it works Feb 12, 2019
session_test.go initial commit of working message sending with parent message support Feb 12, 2019
storage.go it works Feb 12, 2019
storage_test.go handshake design doc update Mar 22, 2019
strategy.go initial working version of NewChat Feb 10, 2019
strategy_test.go initial working version of NewChat Feb 10, 2019

README.md

handshake logo

handshake

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:

demo

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 github.com/nomasters/handshake/cmd/handshake

or by building from the cmd/handshake directory.

You can’t perform that action at this time.