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

General Programming Discussion

8287 readers
5 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
 

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
[–] [email protected] 1 points 4 days ago (1 children)

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

[–] [email protected] 1 points 3 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.