5

Hey everyone! I'm looking for some comments / discussion on a peer to peer encrypted messaging protocol I'm developing called Mariposa.

It functions on top of TOR, using hidden services to hole punch through firewalls and to provide anonymity.

you are viewing a single comment's thread
view the rest of the comments
[-] teri@discuss.tchncs.de 2 points 4 weeks ago

Maybe you could also consider to extend an existing good PQC protocol (for example https://signal.org/docs/specifications/pqxdh/) by adding a shared secret. The shared secret could flow into the key derivation functions which are used to derive the symmetric encryption keys. This way you would have quite strong guarantees (forward secrecy) as long as nobody can break the PQC algorithm and still some guarantee of confidentiality when somebody breaks asymmetric primitives. In the protocol you outlined now, there's no forward secrecy. Meaning that once a key is compromised, all past and future messages can be decrypted.

[-] lucas_givens@lemmy.world 1 points 3 days ago

Forward secrecy only guarantees that past communications are secure right? I couldn’t find anything on protecting future sessions

[-] teri@discuss.tchncs.de 1 points 2 days ago

Honestly I'm not sure what the definition says. But in case of the original axolotl/signal protocol the 'ratchet' construction in my understanding allows to recover from a key compromise given that the attacker is passive (read only). Let's say you have to hand your phone to the police, they disappear with it for a moment and get a copy of all the keys you use for the axolotl protocol. As long as they don't manage to manipulate network traffic but only intercept everything your chat session will 'recover' once a new (EC)DH agreement is completed with your chat partner. This might not happen immediately though in case your chat partner is offline.

This property (securing future messages) can only be achieved with asymmetric cryptography. Securing past messages can in principle be achieved with symmetric cryptography: You could imagine a ratchet mechanism where each chat partner computes a new key by transforming the old key with a entropy-preserving and hard-to-invert function (such as sha3) and then deleting the old key (and also best deleting old messages).

P.S. Just did some reading: https://signal.org/docs/specifications/doubleratchet/

Forward security: Output keys from the past appear random to an adversary who learns the KDF key at some point in time.

Break-in recovery: Future output keys appear random to an adversary who learns the KDF key at some point in time, provided that future inputs have added sufficient entropy.

So what I meant is not called forward secrecy but break-in recovery. Confusing terms.

this post was submitted on 23 Mar 2025
5 points (100.0% liked)

General Programming Discussion

8284 readers
3 users here now

A general programming discussion community.

Rules:

  1. Be civil.
  2. Please start discussions that spark conversation

Other communities

Systems

Functional Programming

Also related

founded 6 years ago
MODERATORS