The Living Thing / Notebooks :

Secure chat systems

Optimising back channel interjections into other people’s meetings

Usefulness: 🔧
Novelty: 💡
Uncertainty: 🤪 🤪 🤪
Incompleteness: 🚧 🚧 🚧
Most communication systems spraypaint your friends’ houses with dick picks. Metaphorically. Usually metaphorically.

From the old EFF chat client scorecard.

tl;dr Everyone use Signal and/or Keybase, or just meet up face-to-face. In a Faraday cage. The Electronic Frontier Foundation has a review of good encryption options.

The ephemeral nature of chats is possibly easier to practically secure than email, at least if you do it right.

There are too many chat programs which aspire to security and not enough secure anything else, and we can’t persuade people to use even the secure chat clients, let alone the same chat protocols. Building them is hard and many are doing it badly. The ones that exist are often awful - gossip is that the stalwart pidgin/adium/libpurple is bad in that it is full of security bugs. Even without bugs, the underlying protocol XMPP by design leaks information about your contact list to the server, if not the message content.

Nonetheless it gets worse with commercial systems. For a visualisation of how the popularity of chat clients increases roughly in proportion to how much of your information is given to unaccountable third parties, see the EFF chat scorecard

Skype, however, does not do it right; rather, it is an NSA honeypot, and not even an especially usable one.

There are attempts to do it right below as regards confidentiality, but refer also of course to the problem of jurisdiction.

Trumping end to end encryption

Currently, the NSA can tap into a broad range of communications, but have no means to compel communications to be in a form they can monitor. This is likely to change; after all, they will need to be able to hunt down those involved in, or providing support to, terrorist groups like Black Lives Matter and Friends Of The Earth, not to mention the President’s extensive list of enemies. As such, it is quite likely that, at some point during Trump’s first year, end-to-end encrypted messaging systems will be required to provide real-time plaintext to the security services.

UPDATE: This part got outsourced to Australia via the AssAccessBill.

(Things have already been moving slowly in this direction, and will only accelerate under a president who has expressed admiration for autocrats and a brutishly Hobbesian view of how power works.)

Similar laws are already in force in more established autocracies such as Russia and Turkey. The difference is that American companies, subject to American law, provide many of the communications systems used worldwide, such as Apple iMessage, WhatsApp and Signal. These are likely to be compelled to provide the US homeland-security authorities with the plaintext of all messages coming through them, in real time, and to make whatever changes are necessary to their architecture to achieve this.



Signal (Formerly redphone):

Free, worldwide, encrypted voice calls for iPhone and Android by Open Whisper Systems. Does not disclose message content, in principle. Does not disclose contact list, if they are to be believed.

Signal uses your existing number, doesn’t require a password, and leverages privacy-preserving contact discovery to immediately display which of your contacts are reachable with Signal. Under the hood, it uses ZRTP, a well-tested protocol for secure voice communication.

Signal was designed specifically for mobile devices, using a jitter buffer tuned to the characteristics of mobile networks, and using push notifications to preserve battery life while still remaining responsive. Signal is also Free and Open Source Software, allowing anyone to audit the code for correctness or help contribute improvements. The project even pays out a percentage of donated Bitcoin for every merged pull request.

Seems good that it is open, friendly, widely used etc. Not as polished, reliable or easy as more mainstream clients.

The Signal algorithm is apparently used in iMessage and Whatsapp, although how can you tell in these secretive closed-source apps? Whatsapp, at least, breaks the security of the protocol in aid of convenience, and uploads your contacts to suspect 3rd parties.

Signal is what I’m recommending not because it is perfect, but because it is widely used, and OK-ish. The governance could be better, but most others are worse. One problem is that it’s hard to archive history chats. You can export from Signal Desktop (See some wrinkles discussed here). There is an automated version via SCAB.


keybase is neat. It’s a chat(+other things) program for your mobile or desktop, which connects you with your social profiles, e.g. twitter or github or website or whatever. Friendly, easy to use, support cryptocurrency transfers as a bonus. I’ve just started using it but it’s been handy so far.

Still has some rough edges (like high CPU demand for the desktop client). I’m not sure exactly how secure it is. Worth investigating though.


Mobile: Wickr is not open source but looks interesting because it has trendy cryptographers backing it. Claims not to disclose message content or your contact list, much like Signal.

🚧 Update to mention public source disclosure by the company. This is probably more secure now.


Mobile: Telegram is popular in Germany, but has possibly shitty security. Probably better than nothing, or if you have lots of German friends.


Matrix is some kind of messaging layer for the internet, at lower level than a chat solution per se. Specifically, it aims to

[provide] an open universal communication layer perfect for VR calling, messaging and collaboration, powering immersive experiences for conferencing, tourism, entertainment, telepresence, e-learning, etc. […]Matrix is that missing signalling layer for WebRTC. If you are building VoIP into your app, or want to expose your existing VoIP app to a wider audience, building on Matrix’s SDKs and bridges should be a no-brainer.

Client encryption is available but optional. The recent security breach is, amongst other things, a lesson in why you should not trust server encryption - all the server-encrypted stuff was compromised, but end-to-end encrypted messages appear to have been safe.


Wire (Source)

Like Signal but with a better jurisdiction?

A free, personal account gives everyone the benefits of a secure, privacy-focused messaging app. Personal accounts can connect and communicate with Pro accounts.


Desktop, mobile. Jami I think formerly GNU Ring.

The application uses distributed hash tables (DHT) to establish communications. This technology eliminates the use of centralized registers (servers) and the retention of personal data. Jami is based on a distributed network technology, eliminating the need for servers. Mass surveillance can not be undertaken by the servers as there is not any.

Jami stores your secrets (private keys for encryption and identity) only on the device which executes it, which belongs to you. Your device is therefore the sole holder of your information.

Jami offers a digital identity with accounts that do not require anyone exposing their personal identity. All of the communications are encrypted with no exception with the most advanced current techniques. As free software, Jami is underpinned by an essential objective: to be a distributed communication system that respects the privacy of its users, thanks to its design without infrastructures or centralized servers.

Bridgefy chat

The flagship app of the Bridgefy mesh network, about which I know little except that it doesn’t require the internet.

Chat over IMAP

COI Chat-over-IMAP backloads real-time chat into email servers. Unclear if this are capable of forward secrecy. Or if this is actually sane.



CoyIM is a new chat client that is safe and secure by default: no settings to change, no plugins to install, no computer configuration to change.

Not yet audited. Do not use for anything sensitive… CoyIM is a standalone chat client that focuses on safety and security. It is a self-contained program that runs on Windows, Linux and macOS. CoyIM only supports one chat protocol - XMPP (sometimes known as Jabber). CoyIM has carefully picked and chosen the features that are necessary to create a good chat experience, while keeping the attack surface of the system to a minimum.

It also has built-in support for Tor, OTR and TLS. The Tor support allows users to become anonymous while chatting, OTR makes end-to-end encryption of communication possible, and TLS adds another layer of encryption for the communication with chat servers. These features are not plugins or extras in any way.

CoyIM is implemented in Go. Many other implementation languages open up the door for a large number of attacks; we try to minimize those risks by using Go.

Does not leak message content but AFAICT does leak your contact list.


Desktop: tox is a chat protocol and implementation

Tox is a free-as-in-freedom, peer-to-peer, end-to-end encrypted, distributed, multimedia messenger. Using existing technologies such as dispersed networking and strong cryptography, Tox can provide a superior instant messaging experience than current market offerings. Files can be shared as fast as you and your partner’s Internet connection allows, audio calls are instantaneous, and there are no arbitrary limits to how many people you can have in a group conversation.

Favoured client seems to be qTox.

You can probably stop reading here; that should be enough chat clients to keep anyone busy and too many for fragmentation of your chat communities. From here on, the suggestions get successively more esoteric and/or untested.

Mozilla Hello

Desktop: Hello is the new firefox one. How does that work now?


Desktop/mobile: Cryptocat is an open implementation of OTR for text chat. TBC

Retroshare et al

Retroshare does peer-to-peer chat, as does scuttlebutt and other decentralised social networks.


iOS: Chatsecure

ChatSecure is a free and open source messaging app that features OMEMO encryption and OTR encryption over XMPP. You can connect to your existing Google accounts or create new accounts on public XMPP servers (including via Tor), or even connect to your own server for extra security.

Unlike other apps that keep you stuck in their walled garden, ChatSecure is fully interoperable with other clients that support OMEMO or OTR and XMPP, such as Conversations (Android), CoyIM (Desktop), and more.

See the suggestive (but old) security audit


Desktop: bitmessage

is a P2P communications protocol used to send encrypted messages to another person or to many subscribers. It is decentralized and trustless, meaning that you need-not inherently trust any entities like root certificate authorities. It uses strong authentication which means that the sender of a message cannot be spoofed, and it aims to hide “non-content” data, like the sender and receiver of messages, from passive eavesdroppers like those running warrantless wiretapping programs.


Desktop: Jitsi is an open-source desktop skype-ish client.


Mobile: blackphone is a whole secure mobile device?


Group communications are nice to have if you have more than one friend. Dissent is one a open-source attempt to provide that with good academic credentials. No released products, though, and I suspect this project is dead

Dissent’s technical approach differs in two fundamental ways from the traditional relay-based approaches used by systems such as Tor:

Dissent offers an anonymous communication substrate intended primarily for applications built on a broadcast communication model: for example, bulletin boards, wikis, auctions, or voting. Users of an online group obtain cryptographic guarantees of sender and receiver anonymity, message integrity, disruption resistance, proportionality, and location hiding.



OStel is a public testbed of the Open Secure Telephony Network (OSTN) project, an effort with the goal of promoting the use of free, open protocols, standards and software, to power end-to-end secure voice communications on mobile devices, as well as with desktop computers. Both are concepts from The Guardian Project.

Pidgin/Adium etc

Pidgin/adium/libpurple works, for what it is worth, but are probably insecure because of bugs and deprecated and leaks your metadata (citation required). Does not disclose message content if you choose the right settings but does leak, for example, the identities of who you are contacting. Probably if you are using this, you want to use coyim instead?

Skype if you must

Skype, as we have already mention is honeypot spyware, that reads your passwords. But you have some colleagues who are determined to use it, right? You could run it in a docker jail, but it is probably simpler to use the web client.

Group chat

You want a social media site but for a single project?