Many of us (or at least me) would probably like to see Signal getting decentralized. Here are a few thoughts I had about this recently.
First let me define three persons:
- Peter (using the official signal.org instance)
- Ted (using the example.com instance)
- Andrew (using his own instance under andrew.chat)
Couldn’t we use the upcoming username feature to build a decentralized signal network? For example with a modified client or maybe just a modified libsignal library we could parse the instance from the username which would look like an email address (ted.42@example.com or andrew.62@andrew.chat). If the username doesn’t have a domain part it just uses the default instance (so Peter just has the username peter.94).
Maybe we have some people here who are already familiar with the Signal codebase and willing to assist?
EDIT: Yes I know Session and Matrix exist but Session is to extreme and technical and Matrix is more focused on communities and groups which aren’t even encrypted. Besides that both of them have a much smaller userbase compared to Signal.
Figured I’d repost because I see Session being recommended again.
======== Original Post: https://lemmy.ml/comment/1615043
Session’s developers dropped Signal’s Perfect Forward Secrecy (PFS) and deniability
[0]
security features. Personally I would not trust a product that drops an end-user security feature for the sake of making the developer’s life easier[1]
.For those unaware, PFS protects your data/messages from future exploits and breaches. With PFS, each message’s encryption is isolated, preventing compromise of current and past interactions
[2]
.A simple example to illustrate why PFS is beneficial. Lets assume any 3 letter agency is collecting all Signal/Session messages - on top of the tons of data they’re already capturing. The great thing is that your messages are encrypted, they can’t see anything - YAY - but they’re storing them basically forever.
Two ways they may be able to compromise your privacy and view ALL your messages:
A flaw is discovered that allows them to crack/brute force the encryption in weeks instead of years/decades/eternity. If you were using Session, because you use the same key for every message, they now have access to everything you’ve ever said. If you were using Signal, they have access to that one message and need to spend considerable resources trying to crack every other message.
Your phone is compromised and they take your encryption keys. If you were using Session, this again gives them access to your entire message history. If you were using Signal, because the keys are always rotating (known as ephemeral) they can only use them to unlock the most recent received messages.
It’s important to state that both cases above only really matter if you delete your messages after a certain time. Otherwise, yes, all they have to do is take your phone and get access to your entire message history - which is why ephemeral messaging (i.e. auto deleting messages after a certain time) is crucial if you suspect you may be targeted.
[0]
https://getsession.org/blog/session-protocol-explained[1]
https://getsession.org/blog/session-protocol-technical-information[2]
https://www.signal.org/blog/advanced-ratcheting/That’s a fair criticism. I prefer using Session with better multiple device support and without waiting for Signal to finally stop using phone numbers.
When using either, disappearing messages should be enabled.
The part about PFS falls down, for me, when you assume both that keys can be cracked in some shorter than normal time-frame, and that the new key (per message, or less often) won’t also be cracked quickly.
@KLISHDFSDF
The argument doesn’t hold because its known that keys aren’t 100% secure
[0]
. This is why recommended key algo’s and lengths are constantly changing and increasing in size because either they’re found to be weak and/or compute has increased to the point where, although it may not be easy, it’s still a possibility for someone with enough resources to break. And again, at least on the Signal side, they’re left with having to decrypt every single message, where with Session, one key gets you access to everything.I do agree that disappearing messages should be enabled for maximum security.
[0]
See page 54 in this PDF -> nvlpubs.nist.gov for what NIST recommends for key length and specifically note the caveat that:Page 62 further presses the point: