Revery: v0 of a secure messaging protocol (github.com)
from slugr@leminal.space to privacy@lemmy.ml on 21 Jul 00:26
https://leminal.space/post/23233232

i started a (very niche) private messaging protocol & little CLI app demo. i’m no security expert, so any feedback or questions would be appreciated.

the gist is an ephemeral message exchange without identities. the goal is ultimate deniability.

the interesting (and weird) part is that messages are encrypted but not authenticated. this means an imposter could show up if they know the shared secret. otoh this means you can deny anything you say.

#privacy

threaded - newest

slugr@leminal.space on 21 Jul 01:48 next collapse

also, i’m new to lemmy, so if there are any communities i should cross post this to that may be interested, please let me know!

JumpyWombat@lemmy.ml on 21 Jul 10:28 next collapse

The knowledge of a shared secret suggests that the message could be authentic. It makes more sense to use asymmetric encryptions (without signatures).

slugr@leminal.space on 21 Jul 12:32 collapse

interesting point! i chose symmetric shared key because it means you can’t prove who sent what message.

the shared secret does add some authentication, which i think is necessary. the goal is it only creates enough to be practical (a random person can’t eavesdrop), but not enough to prove things. messages themselves still aren’t authenticated by any one person.

JumpyWombat@lemmy.ml on 21 Jul 12:45 collapse

A shared secret implies that the message was sent by someone who knows the shared secret, and that restrict the number of potential senders.

If you mail a message with gpg, everyone knows the public key, and the message is still safe.

slugr@leminal.space on 21 Jul 12:52 collapse

you’re not wrong, but that’s just the trade off that has to be made, i think. it’s the only way i can think to do it, at least. need -some- authentication for practical usability.

your gpg example removes the deniability since it proves who wrote the message.

JumpyWombat@lemmy.ml on 21 Jul 13:29 collapse

your gpg example removes the deniability since it proves who wrote the message.

You confuse digitally signing a message with the sender’s private key, and encrypting a message with the recipient’s public key.

cipherd@lemmy.ml on 21 Jul 13:45 next collapse

Couldn’t you use HMAC with shared secret key to authenticate messages while keeping plausible deniability? Since the key is only supposed to be known to the 2 parties, the recipient can deduce that a message was actually sent by the sender if he did not create it himself. I think that’s what OTR was using.

slugr@leminal.space on 21 Jul 14:18 next collapse

ooh, i’ll have to think through it, but it sounds like that’d add message integrity without sacrificing deniability. also wouldn’t be much to add. appreciate the feedback!

[deleted] on 21 Jul 14:18 collapse

.

gaylord_fartmaster@lemmy.world on 24 Jul 02:49 collapse

Same encryption key can create “alternative facts” - impossible to prove which conversation really happened

Can you elaborate on what this means?

slugr@leminal.space on 24 Jul 03:05 collapse

sure!

during or after a conversation, anyone with the keys can create fake transcripts by creating messages with the same metadata, same nonce, different content.

because of this, no transcript can be proven to be the correct transcript. the trade-off is you don’t get forward secrecy on the per-message level, but you get it per-conversation.

another detail is that there is no identity, so all the above aside, there’s also no way to prove who sent which message.