I’m not sure if it is entirely accurate to compare them in this way, as “Matrix” refers to simply the protocol, whereas “Signal” could refer to the applications, server, and protocol. That being said, is there any fundamental difference in how the Matrix ecosystem of federated servers, and independently developed applications compares to that of Signal that would make it less secure, overall, to use?
The most obvious security vulnerability that I can think of is that the person you are communicating with (or, conceivably, oneself, as well) is using an insecure/compromised application that may be leaking information. I would assume that the underlying encryption of the data is rather trustworthy, and the added censorship resistance of federating the servers is a big plus. However, I do wonder if there are any issues with extra metadata generation, or usage tracking that could be seen as an opsec vulnerability for an individual. Signal, somewhat famously, when subpoenaed to hand over data, can only hand over the date that the account was created, and the last time it was used. What would happen if the authorities go after a Matrix user? What information about that user would they be able to gather?
Matrix can’t be forced to put backdoors into their software because they are not s company. Signal can.
Key points off the top of my head:
- Both Signal and Matrix have solid cryptography. (In fact, the Matrix Megolm protocol is built upon Signal’s Olm protocol.)
- Signal’s client is open-source, but not its server. Matrix clients and servers are open-source. (Note that open server code is less important than open client code when end-to-end encryption is used.)
- Both have had security audits, and presumably will have more in the future.
- Both have cross-platform support. Matrix has a greater variety of clients, and last time I checked, the desktop clients were better than Signal’s.
- Signal prides itself on minimizing metadata exposure. Matrix started later, and hasn’t yet moved all metadata (e.g. reactions, group membership?) to an encrypted channel. (Note that metadata protection can’t ever be complete for either one of them, because an attacker that can gain access to the servers could just as well gain access to the routers, and correlate packets at the network level.)
- Signal is a centralized service (hosted by Amazon last time I checked), meaning all traffic flows through one place and can be shut down or monitored there. Matrix is federated, much like Lemmy.
- Signal does not offer self-hosting. Matrix does. (One might do this to be sure they always have a copy of their past messages, or to be independent of public server outages, or to be the sole keeper of data and metadata in conversations between local users.)
- Signal requires a phone number, which makes having an anonymous account challenging for many people. Matrix doesn’t require anything, but some Matrix servers require an email address for account recovery purposes.
- Signal apparently integrates cryptocurrency payments. Matrix does not.
The most obvious security vulnerability that I can think of is that the person you are communicating with (or, conceivably, oneself, as well) is using an insecure/compromised application that may be leaking information.
Indeed, end-to-end encryption is unable to protect the endpoints. That’s true of both messengers.
Since you brought it up, note that smartphones generally run system-level software that is controlled by the OS maker, meaning that Google or Apple have the ability to monitor those endpoints. Signal’s approach to addressing this is to offer a Google-free build of their app, if you can find it, buried on their web site and with a scary-looking warning against using it. Matrix publishes their apps on F-Droid, so there’s an easy Google-free option. Of course, most of the people using either messenger will have downloaded from the big app stores, so even if your phone and app are Google-free, it’s likely that most of your contacts’ phones are not. I believe Matrix has an advantage here, simply because their Google-free builds are easier to find and keep updated, and are therefore probably in use by more people.
In general I agree, but with one caveat: Matrix has two e2e encryption algorithms: OLM and MegOLM. OLM is indeed comparable to Signal’s however it isn’t used by default. MegOLM on the other hand is a severely watered down version that offers much weaker protection compared to Signal’s algorithm (or OMEMO used by XMPP). It’s a trade-off Matrix did to make some things more user-friendly at the expense of message security.
In what way is it watered down and what are the benefits?
Two ways mainly: the private key is no longer device specific but rather account specific and the ratchet required for perfect forward secrecy is not forwarded on every message AFAIK.
The benefits are better scalability in larger group chats and generally less key exchange hassles. But this comes at a significant downgrade in security.
Basically MegOLM is only slightly better than OpenPGP / OTR or similar older generation e2ee systems.
Not to downplay the security of OLM, but if MegOLM is as cryptographically sound as OpenPGP, then that’s already very secure.
As long as my private key is safe, it would be computationally impossible for anyone to decrypt messages intended for me.
OpenPGP is not very secure, by modern standards.
How so?
If my keys use elliptic curves, you couldn’t possibly brute force it.
Signal goes very far to protect even the tiniest bits of metadata.
For example see sealed sender, private contact discovery and group v2.
On the other hand, matrix stores your profile info, group membership, and ongoing conversation metadata in plaintext, some of them replicated across homeservers. In addition to metadata that matrix doesn’t encrypt, they also do not encrypt some actual data like emoji reactions.
Edit: clarified that conversations are not in plaintext. My wording what confusing as hell sorry.