Almost three years ago, we published the series ‘Secure Messengers...or not so secure?’ here on Decentralize.Today. At the time, Threema was one of our top picks when it came to privacy.
Let’s see what has changed, what has improved and what is missing, if anything, before we draw any conclusions as we move towards our overall pronouncement on the best messaging services available today.
Threema started life as an acronym: “EEEMA” being derived from “End-to-End Encrypted Messaging Application”. The three consecutive Es were considered a bit unwieldy, so it morphed into THREEMA.
Threema uses the trusted open source NaCl cryptography library for encryption. The encryption keys are generated and safely stored on user's devices to prevent backdoor access or copying.
One of the issues we raised last time around and which still needs to be addressed is that the code employed is not fully open source in its entirety. That's usually a big NO-NO, but Threema has been fully and independently audited:
Audited by: Lab for IT Security of Münster’s University of Applied Sciences
Report: by CNLAB
The encryption element of Threema's code is fully open source, which is great as this is basically the part we want to see.
When you start using Threema for the first time, you move your finger over the screen to generate your 8-digit Threema ID. This is a truly ‘decentralized’ form of ID as it is generated away from any server. To sign up for Threema, you need neither a phone number nor an email address, a unique feature which allows users to remain 100% anonymous. If you prefer, there is an option to enter your email and phone number in your profile which will allow friends to find you. However, we recommend to run with just the Threema ID.
To ensure maximum security, both the connection between the app and the servers and the one between the parties communicating with each other are encrypted separately. The former is especially important as anyone capturing network packets (on public WiFi for instance) will not be able to figure out who is messaging whom.
Users have total control over key exchange with encryption and decryption staying on their device only. The server operators or any other party are therefore unable to decrypt messages.
“Strength of the encryption: The asymmetric ECC-based encryption used by Threema has a strength of 255 bits. According to a NIST estimate, this corresponds with at least the strength provided by 2048 bit RSA. ECDH on Curve25519 is used in conjunction with a hash function and a random nonce to derive a unique 256 bit symmetric key for each message, and the stream cipher XSalsa20 is then used to encrypt the message. A 128 bit message authentication code (MAC) is also added to each message to detect manipulations/forgeries.
Forward secrecy: Threema provides forward secrecy on the network connection (not on the end-to-end layer). Client and server negotiate temporary random keys, which are only stored in RAM and replaced every time the app restarts. An attacker who has captured the network traffic will not be able to decrypt it even if they find out the long-term secret key of the client or the server after the fact."
The auditing agency which Threema employed attested in their report as follows:
• Threema's concepts meet the requirements for truly secure and trustworthy messaging
• The application of the encryption is correct and implemented as documented by Threema
• The used protocols are free of vulnerabilities
• The app's local data is stored in a safe and secure manner
• The server components only store data that is absolutely necessary for message delivery
• The servers are located in Switzerland
Every message gets deleted from Threema's server the moment it has been delivered to your device. Again, encryption takes place on your device. This makes Threema one of the best, if not the best messenger option around. You can also protect your actual app with a PIN, or on iOS with the Touch ID. (Apple claims that your fingerprints never reach the iCloud - although there is no proof of this, let's just assume it is true). Additionally, you select an encryption password which is used to encrypt the messages on your device.
All this effectively prevents the collection and possible misuse of your personal information, including the all-important meta data.
Threema even wrote on their own blog a little explanation which, on its own, sets Threema aside from competitors, especially when it comes to meta data:
Master your Meta Data
Threema uses Google cloud or Apple push for push notifications. On the iOS devices there was and likely will never be a way around this; however, luckily for Android users, you can install Threema via threema.ch/shop (Bitcoin payments accepted) and do not need a Google account or the Play services for it to work.
Three years ago, we raised the issue of switching devices. Essentially, if you change your device, you can move from Android to Android with a full data backup (on the device) or from iOS to iOS with a full backup stored on iTunes or the iCloud.
If, however, you wanted to switch from Android to iOS or vice versa, you could bring your ID, but not your groups. This has been addressed with the Threema-Safe. You can now backup your entire account on a Threema hosted safe. You can also host a safe yourself. This is a great way to switch devices and never lose your account and groups again.
A nice standalone feature on Threema is the poll capability. This allows you to create unique polls and invite your group to vote on, well, stuff!
Under settings / troubleshooting, you can select polling and polling intervals (5/15 out of 30 minutes). Threema will then poll the messages from the server just like an IMAP polling without push. In our testing, we still received almost instant notifications, which is ideal.
Three years back, Threema did not offer the option of voice calls. Today it does, and when tested, the system worked perfectly, producing what we believe to be one of the clearest voice call services among the ones we tried.
To add a new contact’s details, enter their Threema ID to start messaging them immediately. A red dot next to your usernames will signify that neither of you has been verified. Should you later meet up in real life, you can scan each other's QR codes, and the red dots will turn to green to indicate verification.
For further privacy, Threema allows you to turn off the ‘message read’ and ‘typing’ indicators. In other words, if you don't want the other party to see that you have read their message or that you are typing a reply, these indicators will not be shown.
You can mute individual notifications (per member) or switch off group notifications altogether. As the administrator of a group, you can adjust memberships within your group at any time. On Android, unique notification sounds can be set for for each group or individual. On iOS, you can set one sound for all your individual chats and one for all of your group chats.
Threema also allows you to block contacts from connecting with you: if someone knows your Threema ID but you have never exchanged the QR code or a key fingerprint, they won't be able to text you. If you enter their ID manually and they enter yours, they will be able to text you as you will have mutually exchanged IDs (albeit not verified as indicated by the red dot). This can prevent so-called ‘man-in-the-middle’ attacks.
You may also choose to select an option whereby everyone who knows your Threema ID can text to you. This is very practical should you want to post your ID on a website or elsewhere.
Finally, you can even set your Threema up in a way that only people in your Threema contacts can reach you. In other words if you don’t have the Threema ID details of the counter party in your address book, they can't reach you.
On Android, you can hide groups and/or individuals by accessing a small little icon on the top, applying your fingerprint or a PIN, and opening this part of your messaging app. This feature only works on Android. When messages arrive, you hit an ‘agree or disagree’ feature on the incoming notification on your screen or even on your smart watch (but let’s talk about smart watches and privacy separately in the near future).
Threema also has an easy and convenient desktop application. Just go to web.threema.ch, scan a QR code, and your messages arrive simultaneously on your browser and on your mobile device. Replies can be sent on either device.
Unfortunately, Threema accounts will only work on one mobile device at a time. The message gets delivered to and encrypted on your one mobile; therefore you can only use it on one device.
If you install the same Threema account on two mobile phones, you will have to have one phone offline, or they will confuse the polling or push notifications and you get one message on this device and another on the other.
One way around this is to setup two different Threema accounts and add them to a group. This way you will get notifications from 2 accounts on two different devices ;)
To give further confidence to users, Threema's servers are located in Switzerland. But even if the servers are compromised, it is reassuring to know that your encrypted communications could still not be read. Moreover, your messages are only on the server until they are delivered to your device, after which they are deleted.
We monitored the network traffic of the application, and Threema is connecting only to threema.ch. There are no analytics or other connections listening to your device.
Threema also offers a version called Threema works. Here you can be your own administrator, and it has many features which are useful for companies. Check it out here.
We won’t review Threema works here, as this piece is all about the messenger app and as a review for individuals.
If Threema was to be totally open source, it would be the ultimate messaging app. However, we need to rely on the auditor's report; so we have a link below with all the required information.
There were, in fact, at least 2 independent teams who looked over Threema's claims and the source code.
Audited by: Lab for IT Security of Münster’s University of Applied Sciences
Report: by CNLAB
But ultimately, Threema is great, and many of us use and rely on it daily.