mindedsecurity / shhlack

Slack message encryptor/decryptor for desktop app and browser
Apache License 2.0
171 stars 21 forks source link

WARNING

This is an experimental and ongoing project. You can fork it, install it, play with it, but it's surely not ready for real use. So use it with grain of salt!

Shhlack

Shhlack is an encryptor/decryptor to improve privacy in peer-to-peer messages in Slack created by Minded Security. It relies on pre-shared keys between the peers so only the peers with the right passphrase will be able to see the encrypted message.

Everyone else will see encrypted content, such as:

Sample Title@@@@BASE64ENCRYPTEDCONTENT####HMAC

In order to facilitate search a title in clear text can be used.

Build

To create slack app patcher and browser extension:

node build.js

This will create two diretories in build/:

build/extension/ // << Browser extension 
build/standalone/    // << standalone patcher

Installing the extension for Chrome

The extension will be available once it's tested. For now, installation is achieved by building the source accoridng to the above instructions and then using Chrome's "Load Unpacked" feature. Developer mode must be enabled in order to do this.

Once installed you can click on the Shhlack icon (a colourful lock next to where text is input) and, if you're on a slack chat room, the Shhlack dialog will appear. Alternatively you can use Alt-s shortcut on Windows.

Installing the patch for standalone

On Linux/MacOS:

cd build/standalone/
./patch_slack.sh

The script will ask for root password since it will try to write in an root directory.

On windows:

cd build/standalone/
./patch_slack.bat

During the process, a backup copy of the original file is created.

Uninstalling the patch for standalone

On Linux/MacOS:

cd build/standalone/
./unpatch_slack.sh

The script will ask for root password since it will try to write in a directory owned by root.

On windows:

cd build/standalone/
./unpatch_slack.bat

Usage

After building and running the install script, Shhlack should work when you login to the standalone client, or when the extension is added and enabled in Chrome.

The first time you use Shhlack, you will be asked to add at least one passphrase to use for encryption/decryption. You can alternatively give a previously saved file to share the passphrases between clients/PCs/peers.

Press Alt-S or click on the Shhlack extension icon (extension only) and you'll get:

If there is more than one passphrase the dropdown menu will show a list of mnemonic keys and you'll be able to choose a passphrase used to encrypt the message. Alternatively you can send a raw message without the fancy dialog by adding the prefix @@@@ to your text.

For example:

@@@@ Hello world.

This will be encrypted by Shhlack using the current passphrase.

Encrypted content will not be searchable, however you can add a title that can be searched on.

The format is:

title@@@@message

You and all your mates using shhlack will see the decrypted message on your client but on the server it'll appear as

ClearTextTitle@@@@Base64(rawAESenc)#HMAC

TODO: