I think the normal issue prohibiting e2e encrypted messages being actually good is that end to end encryption requires keys, and keys require verification, and verification requires a trusted outside channel.
As it stands I would want a secure line to some random user I don’t know anything about, so I need a key. Where do I get a user’s key? I ask the same untrusted admin of their lemmy instance for it and they give it to me. How do I validate this key is actually this user’s? I don’t, I just trust the key the admin gave me. Then I encrypt my message and send it over.
So it protects against an honest instance being attacked later. Or against a shortsighted admin who might feel a little like peeking but hadn’t thought about being dishonest yet.
But in exchange for a smidge of security, what you gain is that new clients can’t read any DM you received before you started using it, or a buggy client who hasn’t synced the keys lately sending a message that only 2 of your clients can read but not the one you’re using right now. Or a phone falling into a toilet and effectively taking all your DMs with it because either there was no UI to back up your keys, or there was one but you didn’t use it because no one ever uses it, or there is a UI to backup the keys but no UI to import them on the next client, etc.
indeed, difficult problems abound - but signal or briar style tradeoffs may be acceptable to those looking to make use of encrypted DM type comms.
this comment by @[email protected] in the thread points to at least one early consideration on the issue.
anyone who cares (as you do) knows that e2ee is hard as hell to implement properly, especially when its user facing. lots of traps at every step, but there are possible paths if we define what we want to achieve and make that scope crystal clear to the user. improper / mistaken tool use is often much worse than no tool at all. federation makes tool selection all the more important.
as for me, fediverse e2ee would be an initial channel to establish connections that may lead to other, more suitable channels. confirmed identity of internet strangers (beyond initial key exchange) in this particular venue is less important to me than the ability to pass a few ephemeral, secure messages. in my world, who I send my grandmother’s super secret meat sauce recipe to is slightly less important than putting clear text on the wire or into instance storage for anyone to potentially see… forever. everyone has their own requirements and its unlikely that fedi e2ee will satisfy them all.
oo I got pinged when you wrote my name (I think?). Good to know that’s how that works. I agree that as it stands we’re nowhere close to proper encryption on DMs - we shouldn’t even try to be implementing half-measures as a stand-in. I would guess that the best option would be to put a warning above DMs saying “this isn’t encrypted, the instance owner can read what you write, if you want encrypted conversation use e.g. Matrix or Signal”. I know that there’s a slot for a Matrix username on my Lemmy profile, so there might even be some potential for integration there.
On the topic of “everyone has their own requirements”, Soatok actually says the following in their article:
The answer is simple: I do not trust Megolm, the protocol designed for Matrix.
Megolm has benefited from amateur review for four years. Non-cryptographers will confuse this observation with the proposition that Matrix has benefited from peer review for four years. Those are two different propositions.
In fact, the first time someone with cryptography expertise bothered to look at Matrix for more than a glance, they found critical vulnerabilities in its design. These are the kinds of vulnerabilities that are not easily mitigated, and should be kept in mind when designing a new protocol.
Most (all?) of these vulnerabilities have since been fixed, but it goes to show that even a titan like Matrix still cannot be trusted to handle perfect encryption.
It looks like Soatok’s proposal has been stalled on their github (probably because they got busy with something else in the meantime).
Not sure if this will ping correctly since their handle is from mastodon but @[email protected] if you care to share any thoughts on this topic (E2EE DMs w/ ActivityPub) since your blog post was referenced. I’m not even close to being good at cryptography so forgive anything stupid I said
Edit: Actually it looks like the language I proposed is already there:
completely agreed wrt your reply. encryption is serious business and I am pretty sure that physicists will eventually discover a fundamental law of the universe already known to mathematicians - “never roll your own”.
having said that, we do have examples of state of the art trustless key distribution and encryption frameworks that are believe to be robust. adapting a suitable fedi e2ee framework is likely quite some time away, but I think it is something that should be on the radar and gently agitated for - at least to keep the underlying activitypub protocol agnostic to it during continued buildout.
anyone reading this thread and interested in possible federated e2ee should take a look at the excellent article that you highlighted. it starts a thought process and gives an entry point for contribution and collaboration. again, thanks for sharing, it was a great read.
I think the normal issue prohibiting e2e encrypted messages being actually good is that end to end encryption requires keys, and keys require verification, and verification requires a trusted outside channel.
As it stands I would want a secure line to some random user I don’t know anything about, so I need a key. Where do I get a user’s key? I ask the same untrusted admin of their lemmy instance for it and they give it to me. How do I validate this key is actually this user’s? I don’t, I just trust the key the admin gave me. Then I encrypt my message and send it over.
So it protects against an honest instance being attacked later. Or against a shortsighted admin who might feel a little like peeking but hadn’t thought about being dishonest yet.
But in exchange for a smidge of security, what you gain is that new clients can’t read any DM you received before you started using it, or a buggy client who hasn’t synced the keys lately sending a message that only 2 of your clients can read but not the one you’re using right now. Or a phone falling into a toilet and effectively taking all your DMs with it because either there was no UI to back up your keys, or there was one but you didn’t use it because no one ever uses it, or there is a UI to backup the keys but no UI to import them on the next client, etc.
indeed, difficult problems abound - but signal or briar style tradeoffs may be acceptable to those looking to make use of encrypted DM type comms.
this comment by @[email protected] in the thread points to at least one early consideration on the issue.
anyone who cares (as you do) knows that e2ee is hard as hell to implement properly, especially when its user facing. lots of traps at every step, but there are possible paths if we define what we want to achieve and make that scope crystal clear to the user. improper / mistaken tool use is often much worse than no tool at all. federation makes tool selection all the more important.
as for me, fediverse e2ee would be an initial channel to establish connections that may lead to other, more suitable channels. confirmed identity of internet strangers (beyond initial key exchange) in this particular venue is less important to me than the ability to pass a few ephemeral, secure messages. in my world, who I send my grandmother’s super secret meat sauce recipe to is slightly less important than putting clear text on the wire or into instance storage for anyone to potentially see… forever. everyone has their own requirements and its unlikely that fedi e2ee will satisfy them all.
oo I got pinged when you wrote my name (I think?). Good to know that’s how that works. I agree that as it stands we’re nowhere close to proper encryption on DMs - we shouldn’t even try to be implementing half-measures as a stand-in. I would guess that the best option would be to put a warning above DMs saying “this isn’t encrypted, the instance owner can read what you write, if you want encrypted conversation use e.g. Matrix or Signal”. I know that there’s a slot for a Matrix username on my Lemmy profile, so there might even be some potential for integration there.
On the topic of “everyone has their own requirements”, Soatok actually says the following in their article:
Most (all?) of these vulnerabilities have since been fixed, but it goes to show that even a titan like Matrix still cannot be trusted to handle perfect encryption.
It looks like Soatok’s proposal has been stalled on their github (probably because they got busy with something else in the meantime).
Not sure if this will ping correctly since their handle is from mastodon but @[email protected] if you care to share any thoughts on this topic (E2EE DMs w/ ActivityPub) since your blog post was referenced. I’m not even close to being good at cryptography so forgive anything stupid I said
Edit: Actually it looks like the language I proposed is already there:
completely agreed wrt your reply. encryption is serious business and I am pretty sure that physicists will eventually discover a fundamental law of the universe already known to mathematicians - “never roll your own”.
having said that, we do have examples of state of the art trustless key distribution and encryption frameworks that are believe to be robust. adapting a suitable fedi e2ee framework is likely quite some time away, but I think it is something that should be on the radar and gently agitated for - at least to keep the underlying activitypub protocol agnostic to it during continued buildout.
anyone reading this thread and interested in possible federated e2ee should take a look at the excellent article that you highlighted. it starts a thought process and gives an entry point for contribution and collaboration. again, thanks for sharing, it was a great read.