Slackeee - Slack End-to-End Encryption
This isn’t really a blog post per se, but more of a “Hey, I did this thing”.
I’ve been working on a browser extension that adds end-to-end encryption to Slack messages. It started out as a small hackathon project, but I’ve been polishing it up and adding features since then.
The extension is available for Firefox, but written for cross-compatibility (I just haven’t gotten around to publishing it to the Chrome Web Store yet), and you can find the source code on GitHub.
How It Works
Slackeee uses the Web Crypto API to encrypt and decrypt messages. When you send a message, it’s encrypted on your machine before being sent to Slack’s servers. When you receive a message, it’s decrypted on your machine before being displayed.
You generate a key, per channel, that’s stored in your browser’s local storage. This key is used to encrypt and decrypt messages in that channel. You share the key with other users in the channel, and they can decrypt messages sent to them.
Features
Emoji Support: Because what’s the point of a chat app without emojis?
Cross-Platform: Supports Firefox on Android as well. iOS.. Well, that’s a different story.
Open Source: The extension is open source, so you can see how it works, and deploy your own version if you want.
No Server: The extension doesn’t rely on any external servers for encryption/decryption. Everything is done client-side.
Per-Chat Encryption: Each chat channel has its own encryption key, so you can have different keys for different channels or DMs.
Multi-Language Support: Works across all the languages Slack supports.
(You’d think this is a given, but you’d be surprised the work it took)