Four layers, and the last one is a refusal.
Each of these is a separate thing that can fail, and each failure ends the session rather than continuing it in a weaker form. That is the whole design in one sentence.
- The carrier
Ciphertext on the wire
The stream is sealed with XSalsa20-Poly1305 under a key agreed for that session alone. A relay forwards bytes it cannot read and holds no key that would open them.
XSalsa20-Poly1305 - The proof
A signed identity
The rendezvous server signs each peer’s identity with an Ed25519 key. The client checks that signature against the public key built into it, then checks that the identity inside it is the device you actually dialled.
Ed25519 - The agreement
A key per session
Only after the proof holds do the two ends establish the symmetric key. Nothing before that point carries a pixel, a keystroke or a file.
1 key · 1 session - The refusal
And no branch that continues
Wrong key, wrong identity, wrong message type, no answer: the client aborts. There is no path that falls back to plaintext — which is precisely the path an attacker would aim for.
The session is refused
