Whisper is a fork of Niltalk, a web based disposable chat server. It allows users to create password protected disposable, ephemeral chatrooms and invite peers to chat rooms. Rooms can be disposed of at any time.
Whisper implements peer to peer message encryption to improve users privacy.
- configuration less startup, single file executable
- embedded tor instance for instant connectivity
- ssl support with JIT self signed certificate generator, loading of regular pregenerated signed certificate or letsencrypt
- work at home or in the cloud
- persistent and ephemeral rooms
- multi theming
- Download the latest release for your platform and extract the binary.
- Run
./whisper --new-configto generate a sample config.toml and add your configuration. - Run
./whisperand visit http://localhost:9000.
- Run
whisper --new-unit, and follow the guide
To customize the user interface, start by extracting the embedded assets using whisper --extract-themes.
Then you can edit existing themes or create a new one by adding a folder under static/themes.
To rebuild template JIT during development phase, use the --jit flag.
The original license was kept as is, thus AGPL3.
This was not proof audited for security issues, use it at your own risks.
In the big picture, when you, Bob, login a room, your browser generates a pair of cryptographic keys, the public key is sent to the server and saved to the peer list. When a new user, Alice, login to the room it fetches the peer list and their public key. Alice and Bob both then send each other a query challenge to ensure they can trust each other. The challenge consist of a hash comparison of the room password and other things. If the challenge succeed, both peers send each other an accept message. Both messages contain a shared private key that both Bob and Alice knows and can use to generate and exchange secure messages over the network. If the challenges fails, the peer is ignored and the communication does not happen. To send a message to the room the peer has to select, preferably, the oldest connected peer in the room and use its shared private key to generate the protected message. Upon reception, an accepted peer, can lookup for the matching pair of private keys to decode the message and print it on screen.
