The comparison was last updated on 11/Jan/2021. Please contact me with any updates, if I have made any mistakes.
Google Messages | Apple iMessage | Facebook Messenger | Element / Riot | Signal | Microsoft Skype | Telegram | Threema | Viber | Facebook Whatsapp | Wickr Me | Wire | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
TL;DR: Does the app secure my messages and attachments? | No | No | No | No | Yes | No | No | Yes | No | No | No | Yes |
Company jurisdiction | USA | USA | USA | UK | USA | USA | USA / UK / Belize / UAE | Switzerland | Luxembourg / Japan | USA | USA | Switzerland |
Infrastructure jurisdiction | Worldwide (rollout on-going, unsure of exact locations, most likely Google Cloud regions) | USA (Ireland and Denmark planned); iMessage runs on AWS and Google Cloud | USA, Sweden (Ireland planned) | UK (and potentially all jurisdictions, given it's a decentralised messaging platform) | USA | USA, the Netherlands, Australia, Brazil, China, Ireland, Hong Kong, and Japan | UK, Singapore, USA, and Finland | Switzerland | USA | USA (unsure of other locations) | USA (unsure of other locations) | EU |
Implicated in giving customers' data to intelligence agencies? | Yes | Yes | Yes | No | No | Yes | No | No | No | Yes | No | No |
Surveillance capability built into the app? | No | No | No | No | No | Yes | No | No | No | No | No | No |
Does the company provide a transparency report? | Yes | Yes | Yes | No | Yes | Yes | No | Yes | No | Yes | Yes | Yes |
Company's general stance on customers' privacy | Poor | Poor | Poor | Good | Good | Poor | Poor | Good | Poor | Poor | Good | Good |
Funding | Apple | New Vector Limited | Freedom of the Press Foundation / the Knight Foundation / the Shuttleworth Foundation / the Open Technology Fund / Signal Foundation (Brian Acton) | Microsoft | Pavel Durov | User pays / Afinum Management AG | Rakuten / friends and family of Talmon Marco (it's very unclear) | Gilman Louie / Juniper Networks / the Knight Foundation / Breyer Capital / CME Group / Wargaming | Janus Friis / Iconical / Zeta Holdings Luxembourg | |||
Company collects customers' data? | Yes | Yes | Yes | No | No | Yes | Yes | No | Yes | Yes | No | No |
App collects customers' data? | Yes (Difficult to assess given the app is integrated into Google's greater ecosystem) | Yes (Difficult to assess given the app is integrated into Apple's greater ecosystem) | Health & fitness / purchases / financial info / location / contact info / contacts / user content / search history / browsing history / identifiers / usage data / sensitive info / diagnostics / other data | Contact info / contacts / identifiers / diagnostics / user content (Contact info not sent when using anonymously) | Contact Info | Yes (Information not submitted to Apple Store) | Contact info / contacts / identifiers | Contact info / identifiers / diagnostics (Contact info not sent when using anonymously) | Location / identifiers / purchases / location / contact info / contacts / identifiers / usage data / user content / usage data / diagnostics | Purchases / financial info / location / contact info / contacts / user content / identifiers / usage data / diagnostics | Contact info / usage data / diagnostics (Contact info not sent when using anonymously) | Contact info / identifiers / usage data / diagnostics |
User data and/or metadata sent to parent company and/or third parties? | Minimal (mandatory mobile number sent to third party for registration & recovery) | Yes | No (optional mobile number sent to third party for registration) | Yes | Yes | |||||||
Is encryption turned on by default? | Yes | Yes | No | Yes | Yes | Yes | No | Yes | Yes (if device supports it) | Yes (if device supports it) | Yes | Yes |
Cryptographic primitives | Curve25519 / AES-256 / HMAC-SHA256 | RSA-1280 (encryption), ECDSA 256 (signing) / AES 128 / SHA-1 | Curve25519 / AES-256 / HMAC-SHA256 | Curve25519 / AES-256 / HMAC-SHA256 | Curve25519 / AES-256 / HMAC-SHA256 | RSA-1536 & 2048 / AES 256 / SHA-1 | RSA 2048 / AES 256 / SHA-256 | Curve25519 256 / XSalsa20 256 / Poly1305-AES 128 | Curve25519 256 / Salsa20 128 / HMAC-SHA256 | Curve25519 / AES-256 / HMAC-SHA256 | ECDH512 / AES-256 / HMAC-SHA256 | Curve25519 / ChaCha20 / HMAC-SHA256 |
Are the app and server completely open source? | No | No | No | Yes | Yes | No | No (clients and API only) | No (apps only) | No | No | No | Yes |
Are reproducible builds used to verify apps against source code? | No | No | No | No | Android only | No | iOS and Android | Android only | No | No | No | No |
Can you sign up to the app anonymously? | No | No | No | Yes | No | No | No | Yes | No | No | Yes | No |
Can you add a contact without needing to trust a directory server? | N/A, Google Messages uses RCS, which doesn't use a directory service | No | No | No | No | No | No | Yes | Yes | No | No | No |
Can you manually verify contacts' fingerprints? | Yes | No | Yes | Yes | Yes | No | No (session only, does not provide users' fingerprint information) | Yes | Yes | Yes | Yes | Yes |
Directory service could be modified to enable a MITM attack? | N/A, Google Messages uses RCS, which doesn't use a directory service | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Do you get notified if a contact's fingerprint changes? | No | Yes | Yes | No | No (session only, does not provide users' fingerprint information) | Yes | Yes | No (setting turned off by default) | No | If contact was previously verified | ||
Is personal information (mobile number, contact list, etc.) hashed? | N/A, Google Messages uses RCS, which doesn't use a directory service | No | No | No | Mostly | No | No | Yes | No | No | Yes | Mostly |
Does the app generate & keep a private key on the device itself? | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
Can messages be read by the company? | No | No | Yes | No | No | Yes | Yes | No | No | No | No | No |
Does the app enforce perfect forward secrecy? | Yes | No | Yes | Yes | Yes | No (session keys do change after being used 100 times) | No | Yes | Yes | Yes | Yes | |
Does the app encrypt metadata? | No | No | No | Yes | No | Yes | No | Yes | Mostly | |||
Does the app use TLS/Noise to encrypt network traffic? | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes |
Does the app use certificate pinning? | Yes (>=iOS 9.3) | Yes | Yes | Yes | ||||||||
Does the app encrypt data on the device? (iOS and Android only) | No | Yes (if passphrase enabled) | Yes | Yes (if passphrase enabled) | iOS: Yes (if passphrase enabled); Android: Yes (if master key set in the app) | iOS: Yes (if passphrase enabled); Android: Yes (unsure of function) | Yes | |||||
Does the app allow a secondary factor of authentication? | No | No | No | No | No | No | Yes | Yes | No | Yes | Yes (password for account used) | Yes |
Are messages encrypted when backed up to the cloud? | Yes (>= Android P) | No | Yes | N/A, Signal is excluded from iCloud/iTunes & Android backups | Yes | iOS: Yes Android: No | N/A, Wire is excluded from iCloud/iTunes & Android backups | |||||
Does the company log timestamps/IP addresses? | Yes | Yes | No | Yes | Yes | No | Yes | Yes | No | Some | ||
Have there been a recent code audit and an independent security analysis? | No | No | No | No | Yes (October, 2014) | No | Yes (November, 2015) | Yes (October, 2020) | No | No | Yes (August, 2014) | Yes (March, 2018) |
Is the design well documented? | No | Somewhat | Somewhat | Somewhat | Somewhat | No | Somewhat | Somewhat | Somewhat | Somewhat | Somewhat | Somewhat |
Does the app have self-destructing messages? | No | No | Yes | No | Yes | No | Yes | No | Yes | No | Yes | Yes |
Red = Something of major concern.
Yellow = Something of concern.
Green = Nothing of concern.
Blank = I couldn’t find any information about it.