35 comments

[ 3.1 ms ] story [ 77.7 ms ] thread
I think that HTTP(S) is not a good protocol for real time chat. However, Matrix does have the advantage of being open source. (But, I prefer IRC; it does not require specialized software to use it, and does not add too many complicated things (although some implementations do, you can mostly ignore them).)
What's your reason against using HTTP(s) for a chat protocol? Bloat? Or because server-initiated messages are more complicated?
Still no proper terminal client. Been using weechat-matrix-rs for a couple of months, it's the best option available but far from suitable for everyday use.

The official web client is sluggish. I still can't jump back and forwards to notifications. It's very cpu-intensive for me.

Related: can anyone on HN explain which of those (matrix, signal, telegram, whatsapp) is the "safest" in terms of privacy and the technical reasons why?
Matrix: Federated chat E2E encrypted for 1-1 chats and possible E2E on group chats. Cares about user freedom and encourages writing software and clients to integrate with Matrix. Possibly it's super private but it doesn't emphasize privacy that much. Signal: E2E encrypted with an emphasis on being super secure. Uses proven crypto techniques and doesn't allow unencrypted messaging I think. Does not allow and third party clients or integrations in the name of security, which does mean a restriction on user freedom. Telegram: Not E2E encrypted by default. Has an option for encrypted 1-1 chat, but otherwise everything is readable by the Telegram admins. Uses a homegrown encryption algorithm criticized by security researchers, but not known to be broken. Whatsapp: It's owned by Facebook do I need to say more.
Signal is open source and well established. The end-to-end encryption has been audited and cannot be disabled.

Matrix has e2ee but the overall UX of Matrix is still not really there, and the encryption can have issues where messages are not able to be decrypted. It has been audited and is open source. With Matrix you have more freedom because you can run your own server, but personally I would pick Signal since there is less chance of messing things up, for example accidentally having an un-encrypted chat.

Telegram does not do encrypted chats by default and has a history of implementing their own poor encryption. The Telegram server is closed source.

WhatsApp has good encryption, the same as Signal, enabled for all chats. But it is closed source.

Thats the usual response. Privacy (and e2EE) depends on threat model and business model. WhatsApp depends on FB (nee' Meta) for sustenance, and it's hard to believe that they will keep their paws off the sweet data nectar. Signal is bankrolled by state agencies and millionaires. MobileCoin adds little more distrust (it's like the Brave model of browser). Telegram doesn't have a visible model of selling user content. Signal copied everything from Telegram's features- namely the "secret chats" that don't sync between devices and disappear after a while (depending on the set time). Nothing else. Signal's UI is washed out and the only "innovation" they could bring was the change in the size of emoji.
Signal is opensource-ish. The fact you can't compile the code and federate with the main Signal network means having some version of source online is mostly meaningless. They proved this when they developed the crypto functionality behind everyone's back with no commits to the public source code for months. Who is to know if they are really running the source code they publish?

Matrix is the only one where you can be sure that the source code matches what you are running on both the client and (your) server.

Matrix is the only one of those that is fully open source in a meaningful way (i.e. it's practical to actually patch your client and use it on the network) and has identities that aren't tied to phone numbers, both things that should be absolutely bare minimum for anyone taking privacy seriously.

All of them use broadly similar E2EE protocols from the same cryptographic lineage (except possibly Telegram who have a history of making false claims about their encryption protocols). The Signal/WhatsApp implementation feels a bit more mature than Matrix's.

I don't feel super great about any of them, but I'd absolutely pick Matrix over any of the others.

More or less my thoughts on the matter. Matrix is by no means perfect (or even great), but it's a step up from XMPP/OMEMO in user experience and that's really what matters at the end of the day. If you require privacy and security at all costs, Matrix is your best option. The issue is that for everyone else, it's not a particularly attractive platform yet, and likely won't be until they revise their attestation protocol.
Privacy from whom? If you’re looking for privacy from other users on the platform, Signal and WhatsApp fail miserably because everyone else in the groups you’re in would get your phone number. In Telegram the default is not to expose your phone number to others.

If it’s privacy from the platform operators, then Telegram loses because it stores all normal chats in plain text on its servers (though that makes searching a great experience). Signal, to a great extent, and WhatsApp to a lesser extent, try to avoid storing information about your use of the platform. But they do maintain some metadata until the time you delete your account.

All the above fail on the phone number requirement to sign up. They’re also centralized platforms depending on the benevolence of one team or company.

Matrix is a mix here. It allows you to sign up without revealing your phone number. If you choose to use end-to-end encryption, then all your chats would be encrypted (like in Signal or WhatsApp, where this is the default). But Matrix also stores metadata about you and your presence.

My recommendation would be Matrix because you’re not tied to one provider (you can self host it and connect with other Matrix instances, if you wish). The client UI and UX are lacking, but I believe this has a better future on privacy than Signal (with the addition of non-chat features like Mobilecoin).

(comment deleted)
I'll attempt to give an answer to this, but only if other people promise to correct the mistakes I make, I am not a security expert and you should not trust my opinion without looking into things more.

Short version:

- If you absolutely need your messages to be private, use Signal.

- If you're looking for a more flexible/future-proof chat app that doesn't have some of Signal's downsides, use Element, but be cautious because it's had some issues in the past.

- Use the others if someone forces you to, I guess.

Longer version:

----

Signal has been around for a while and is highly vetted by the security industry, and most security professionals I see online swear by it. Signal does a lot of stuff very right and for the most part does an extremely good job of not leaking extra data.

Signal has several glaring downsides that do not affect its overall security, but that might be dealbreakers for some people:

- it requires a phone number to sign up

- very glaringly, it leaks to other contacts on your phone who are already using Signal that you've joined (they'll get a notification in Signal that you installed the app).

- it's extremely centralized, which Moxie (the creator) lists as an upside because it allows faster iteration and simplifies some problems like key sharing, but which many people see as a downside for a lot of reasons, including that it makes it harder to fix problems that Moxie isn't interested in prioritizing (such as requiring phone numbers or leaking that you've joined to contacts).

Signal is a narrow application trying to solve a narrow problem, secure text messages. It is highly secure for that use case, and difficult to use outside of that use-case. It also has some questionable choices about privacy in regards to user identity around signup, and questionable choices around things like alias accounts. But again, Signal isn't really trying to solve those problems.

----

Element/Matrix is trying to solve those problems.

In theory, Element/Matrix is a better choice than Signal; but theory isn't the same as practice. In practice, Element is trying to do something much harder than Signal is doing, (decentralized end-to-end encryption), and Element is a much newer app undergoing a lot more active development, which makes it harder to trust. Element has had issues in the past with leaking data and vulnerabilities. Unlike with Signal, it is possible to make unencrypted rooms in Element (Signal makes this a bit harder unless one of your contacts is using SMS text messaging). Signal tends to be really obsessive about not leaking any contextual information around things like stickers, basically no HTTP requests to anyone other than Signal's servers, and a lot of those HTTP requests get masked and obfuscated in really smart ways. Element sometimes messes up in this area.

Element is also just flat-out bigger than Signal in terms of what functionality it's trying to achieve, which makes it more complicated. All of that makes it harder to trust Element for really, really important communication at this time.

On the other hand, Element is decentralized and is working on some privacy tools including P2P communication that Signal is kind of ignoring because Moxie likes his server. Element might occasionally leak information in a bad request, but it doesn't require users to give their phone number to join. It is attempting to solve problems around private communication that Signal is not interested in solving and that likely will not be interested in solving for some time if ever. Certainly if you are looking for a chat app in the neighborhood of Discord, or you care about having multiple identities online, or if you care about self-hosting, Signal is not going to work for you, it cannot handle those use cases -- it's not designed to do so.

Element has the downside of being a bigger application, but it also has the upside of being a bigger application, meaning that it's a good way of unifyi...

whatsapp/signal/telegram REQUIRE a mobile number to get started. this is a no go from the start for many people, including me personally. i don't care if my chats are e2e if the people after me know WHO i am talking to. the identity is the message and it fails in that test. Second, matrix allows you to set up your own server where YOU allow who comes in, who stays and who talks to other servers, kinda like your own island. none of the others allow that, they are centralized to the core. "signal inc" might not tell the police what you typed but they will tell them when did you log in, how long were you typing and maybe who you were talking to. as i said, that is a big problem because if the police are asking this much about you, they don't care what you said or not.

matrix, well you are the owner of the server if you choose so you get to decide.

signal calls itself "open source" but its not really "free software". the same "open source vs free software" comes up. what i think signal is "source open" and not much. you can't set up your own server, your own client, they are selling centralization as a feature which its not. email has proved otherwise for decades. matrix is what is email.

Self-hosted Matrix servers still incur the risk of leaking metadata to whatever other servers it federates with (which of course isn't a problem if you don't federate, but that kind of defeats the purpose of using Matrix in the first place).

IMO that's an acceptable tradeoff for achieving decentralization without making the protocol overly complex (AIUI something like Signal's "sealed sender" system doesn't work in a decentralized environment)...but it still feels like a nagging threat that needs a proper solution eventually.

The safest instant messenger is no instant messenger. No instant messenger cannot leak your chats, cannot reveal your presence information, cannot install viruses on your phone.

Practicality and function are always a tradeoff for privacy, though.

What's your threat model? Who do you care about protecting against? What is the risk of the information you're communicating being leaked?
I don't know much about security. I'm asking from a purely theoretical perspective, so you could imagine a worst case scenario - for example, Alice wants to use her phone to securely chat with Bob about resisting the dictatorship they're living in or something like that. Or they need to trade industry secrets that are in their phones.
So disclaiming this with the warning that I haven't really kept myself too up to date the last year or two with the latest in private communications so please correct me if I'm wrong or outdated about any of this.

Also remember that privacy and security are never a silver bullet, and anyone claiming that something is, is probably not being genuine about their intentions. Privacy and security are about making things harder, not impossible - how difficult is entirely based on what you're trying to protect, and from who or whom you're trying to protect it. There are no perfect systems or completely safe platforms/locations/etc.

Right, with that out of the way.

In this case, tapping is less of a concern with anything E2EE encrypted and using proper cryptography suites - which is usually a given these days with most privacy-focused applications. Signal, Matrix, and Briar come to mind. But "censorship resistance" being the key term here, means that the infrastructure used to actually send the messages cannot be tampered with or otherwise taken offline.

You want to make sure that automatic updates can't be pushed to the app by a third party. App signing helps but making sure that automatic updates are off and that you update frequently enough and ensuring that each release is properly released by the author is important. There are other modes where this still isn't bulletproof (system OTA update with a backdoor, app author is compromised, etc.) but these are typically not within your model.

Open source projects tend to be the defacto if you really care about good intentions since it allows everyone (including you, but more importantly, independent auditors and people who are experts at looking at this stuff) to look at the code and assess that it works as described.

Telegram is not censorship resistant[0], and while it's E2EE in secret chats, it's not E2EE by default. This is a common misconception by a lot of people.

Signal by design isn't censorship resistant but they do a lot of work to make it effectively so (e.g. [1]) - when they're not fighting amongst themselves[2]. Signal is also quite aggressive when it comes to antiestablishment sentiments historically, which depending on where you are can work against you or be in conflict with your goals[3].

Matrix is a decent enough protocol at a higher level, though admittedly I'm not super acquainted with its internals. I do use it quite a bit, however, and generally like it, but it's very unapproachable to all but the savvier tech enthusiasts, and has a pretty young ecosystem when it comes to clients, phones, etc. It's also wildly underused compared to other platforms. I myself am a long time IRC user and get very confused with Matrix at times.

Finally there's Briar[4], which I've not used but it was mentioned not too long ago here on HN. It can use other means of communication on phones to send messages securely.

As always, Tor can be a great way to obfuscate your internet usage and in some cases even bypass state-enacted blockages of certain sites, but it's not foolproof and can actually make things worse[5] if you don't understand how it works and when not to use it. Make sure to research first.

By the way, threat modeling[6] can be fun and is applicable to a lot of situations, including your own personal safety. The five functions[7] are a fun place to start. Read up on it if you want!

Hope this is a decent enough overview!

[0] https://en.wikipedia.org/wiki/Government_censorship_of_Teleg...

[1] https://reclaimthenet.org/signal-offers-workarounds-for-iran...

[2]

WhatsApp has the largest user base, so most of your friends will be on it. Chats are end-to-end encrypted, but most of them are backed up unencrypted into iCloud and Gdrive. It is also owned by Facebook, which means it can access all your metadata and contacts.

Signal is also end-to-end encrypted, but suffers from a lack of users and their apps don't have a great UI. Sync is also not that great, and backups are terrible.

Telegram is the best app feature-wise (stickers, multi-device, bots, instant sync, unlimited storage) but chats are not end to end encrypted by default. Their apps are native on all platforms, and are very smooth.

Element (a matrix client) has e2ee chats, but the UI is not that great, and the number of users seem to be lower than Signal.

Signal’s UI has improved over the last couple of years. I’d suggest checking it out if you haven’t used it recently. The UI seems to be constantly improving (unlike whatsapp which doesn’t seem to have received a UI improvement in a very long time - no reactions in 2022).
I use Signal every week, it still feels unpolished compared to Telegram or even WhatsApp. Although I must agree with you that it has improved a lot over the last couple of years.

FYI, WhatsApp has added Reactions. It is in beta for some users.

https://wabetainfo.com/whatsapp-beta-for-android-2-21-25-11-...

I had no idea about the beta thanks for posting it. I do think whatsapp has a faster experience, I find media loads slower on signal as well as sharing content using the share sheet tends to have a slower upload time (upload has to occur for sharing a link seems strange).
Matrix is not bound to a phone number and has different design goal then the other three listed.

I.e. it's not like a protocol usable by system competing with discord, slack, teams etc.

If you ignore matrix in this comparison and only look at phone messaging signal wins by far.

If it's about non-phone specific messaging matrix wins by default as the other don't even really compete there.

The use case of Matrix is more to do with the client than the protocol. For example FluffyChat (https://fluffychat.im/) is an up and coming client that is designed exactly the compete in the market of the other phone messengers you listed, while the protocol itself is very much more ambitious and multi-function.
(comment deleted)
Previous discussions, for reference:

Matrix – An open network for secure, decentralized communication https://news.ycombinator.com/item?id=24239564

Matrix 1.0 and the Matrix.org Foundation https://news.ycombinator.com/item?id=20157809

Matrix 1.0 – Are We Ready Yet? https://news.ycombinator.com/item?id=19416678

Synchronous Messaging at Mozilla: The Decision https://news.ycombinator.com/item?id=21835749

Automattic invests in Matrix https://news.ycombinator.com/item?id=23256050

Cross-signing and end-to-end encryption by default https://news.ycombinator.com/item?id=23107564

Running your own secure communication service with Matrix and Jitsi https://news.ycombinator.com/item?id=22802645

We’ve decided to rename Riot https://news.ycombinator.com/item?id=23611863

I’ve hosted a personal Matrix server (Dendrite) and web client (Element) for the last six months, with unhappy results. In practice an entirely self‐hosted Matrix stack seems to be kind of unreliable for me. Having joined just a couple of large rooms—open source project chats that migrated from IRC after the Freenode debacle—sync on login never seems to work right, either getting stuck on a loading animation, or loading messages out of order (“Friday” followed by “Today” followed by January followed by “Yesterday” followed by “Today”). The room history seems to have corrupted itself somehow, according to the logs, but I have no idea how attempt a resync from scratch besides wiping and reinitializing the whole PostgreSQL database. And from the beginning, the client randomly disconnects from the server, but when I refresh it’s connected again.

I’m no stranger to self‐hosting, and I personally run my own email server (with MTA‐STS, DANE, and mandatory TLS for outgoing mail) and Mumble for voice chat, and even Pleroma. These have all been very reliable, enough that I regularly communicate with friends this way. In contrast, my Matrix experience makes me reluctant to suggest it to anyone I know, because it’s hard enough to get anyone onto something user‐friendly like Signal.

I want to love Matrix. The idea is really cool, there is obviously a lot of work behind it, and I appreciate having something federated to compete with Signal’s model. But it just hasn’t worked for me. I hope the self‐hosted situation will improve.

Dendrite is still beta, and is categorically not reliable yet - Dendrite 0.6 (released last week) has a tonne of major changes; switching from Kafka to NATS, refactoring a bunch of the microservices and general heart surgery as we knock it into shape.

Synapse on the other hand is mature and solid (if still a bit resource heavy).

Sorry that you got bitten by this :(

My main problem with many (most?) chat tools is that of retrieving information. In Element (the default Matrix client), search isn't (yet?) implemented. So how do I find the note from some days ago where I remembered a keyword? No search ... ok, let's export the chat protocol then (onto an encrypted disc, because security) and search with grep or even agrep, but ... no export option either. So the bottom line is: information lost in cyber space.

This never happened to me with email, even when encrypted (as long as I have the privates keys). All MUAs offer search capabilities, and/or exports so I have access to existing information.

Both search and chat export features exist for rooms in Element and have done so for a while.

Not to say it's flawless to retrieve information (and personally I would like to see an archival-type client / tempted to make one), but it would be wrong to say it doesn't exist! :)

Me enters room, hits search button in (encryped) room in the Android client. A dialog pops up telling me that search in encrypted rooms isn't yet supported. Export? Nothing even remotely like that visible. So if it exists, it's some kind of fractal existence ;-0

The Mac client has a search button and it asks me for a search term. When I enter a string (which I know to appear in the room I selected) the search reports ""No results" ... I'm not sure if I'd call this an "existing search capability" either ;-0

OK, I have to admit that the latest Mac client now (finally) has an export feature, as I just checked. So it seems usability improvements happen, albeit slowly and unevenly deployed.

> My main problem with many (most?) chat tools is that of retrieving information.

With irssi (IRC in general), you grep a logfile. Since I don’t log, I only /lastlog on what’s still in my buffers.

FOSDEM 2022 was on this past weekend and it was fascinating to see the spectrum of talks about Matrix use cases. https://fosdem.org/2022/schedule/track/matrixorg_foundation_...

You have everything from Drone C2, to chat, to networked photoframes.

It definitely has a lot of growing and a chunk of bugs to get ironed out but I truly believe that a federated open source chat protocol is the only option for the open future of IM, and Matrix is the best we have in that space.