Practical Cryptography for Real People: Part 2
End-to-End Encrypted (E2EE) Messengers
Before you read this blog post, read this from privacytools.io. (A great place for, well, what it says on the tin.) The post talks about understanding your threat model, choosing what your goals are, etc. Because this series is for Real People though, I'm going to assume:
- You aren't a journalist or activist and don't need to hide your communication from governments.
- You're interested in securing everyday sensitive conversations, the ones you have with your partner about wanting to get pregnant (so you don't suddenly get ads on Facebook for diapers) or the ones you have with your friends about whose turn it is to buy a sack (because paranoid stoners don't get caught) or the ones with your latest Tinder hookup where you share your most intimate and disgusting kinks (because you're just sick). (Just kidding, no kink-shaming here.)
- You want multi-device support with minimal hassle. (This is the trickiest assumption, by the way. The end-to-end in e2ee means each end has to have its own private key. So coordinating multiple devices that represent a single user agent is actually a non-trivial problem.)
So what are the contenders for this use case? First up, Facebook Messenger and WhatsApp are right out, as well as iMessage. The first two are owned by Facebook and regularly troweled for data, and the third is owned by Apple and again pilfered. I talked about putting more faith in open source messengers in the last post, but I don't consider it to be a hard requirement. I will, however, list them first. The ones I've used personally will be marked with an asterisk, which I'll write more about, while the others will simply link to their website.
Open source messengers
Closed source messengers
Keybase is far and away my favorite of the messengers I've tried because it's more than just a messenger. It's encrypted cloud storage, even within shared teams; identity proofs for Twitter, Reddit, your random Wordpress website you might have, Mastodon and many others; and colossal bonus, once your account is old enough, you get monthly deposits of Stellar Lumens (XLM for the cryptocurrency folk). The entire UI is polished and friendly, and it's only gotten better over time.
Finally, I like to think of Keybase as a gateway for Real People to the world of crypto. Maybe you'll make a PGP key for fun. Perhaps you'll get that first XLM deposit and wonder what you can do with it. The rabbit hole goes deep, and Keybase lowers the initial barrier of entry by quite a bit.
Signal holds a special place in this list because not only is it open source, but it's also a non-profit organization. This means that all of its funding and spending are public, and they operate through donations and grants. The UI for Signal is nothing spectacular, but it's entirely functional, and it can be used as your default SMS app if you use Android; keep in mind SMS is not an encrypted channel, even if handled by Signal.
At the risk of making your eyes glaze over, Riot is actually just a client for any server that implements the Matrix Protocol. Matrix is a protocol for decentralized communication. (Which is a fancy way of saying no one entity owns all of the data in the Matrix network.) Because it's an open protocol, there are actually many different Matrix clients in development on every platform you can think of. Riot is just the most mature right now.
Due to some ideological purity, e2ee is not the default in Matrix right now, but that's soon™️ to change. Plus, when you do turn encryption on, you'll get a warning message that you're sending to an unverified device (i.e., the other person you chatting with). You can then verify each other's devices through a request that shows each of you a set of emojis. If you both have the same emojis in the same order, bingo, the line is secure. The idea is that for people truly paranoid (rightfully or not) about their threat model, you'll verify the emojis in person, then if another device (i.e., another “end” to the end-to-end) shows up on the other person's list, you can be aware that their account may have been compromised. ¯\_(ツ)_/¯ Even if you don't verify though, your messages will still be encrypted. The overall UI is one to grow on, but like Signal, it's functional.
So full disclosure, for the typical Real Person, Telegram is what you're looking for. The service got a massive surge in membership during a recent-ish Messenger outage, so it's a good bet some of your friends are already on it. It's got a slick UI too.
A note to consider though, is that unless you use the Secret Chat feature, your chats are not actually e2ee. Regular conversations work by encrypting from the sender to the cloud, then from the cloud to the receiver. Thus, Telegram controls the keys to all essential parts of the chat and can read them. If you do use the Secret Chat feature, Telegram makes no attempt to provide multi-device support. A secret chat is only accessible on exactly two devices.
With that caveat, switching to Telegram is still a considerable step towards rebelling against the surveillance capitalism perpetuated by the likes of Facebook and Google!