Quattro strati, e l’ultimo è un rifiuto.
Ognuno di questi è una cosa distinta che può fallire, e ogni fallimento chiude la sessione invece di continuarla in forma più debole. Il progetto sta tutto in questa frase.
- Il trasporto
Testo cifrato sul filo
Il flusso è sigillato con XSalsa20-Poly1305 sotto una chiave concordata per quella sessione soltanto. Un relay inoltra byte che non sa leggere e non tiene nessuna chiave che li apra.
XSalsa20-Poly1305 - La prova
Un’identità firmata
Il server di rendezvous firma l’identità di ogni capo con una chiave Ed25519. Il client verifica quella firma con la chiave pubblica compilata dentro di sé, poi verifica che l’identità che c’è dentro sia proprio il dispositivo che hai chiamato.
Ed25519 - L’accordo
Una chiave per sessione
Solo dopo che la prova regge i due capi stabiliscono la chiave simmetrica. Prima di quel punto non passa un pixel, un tasto o un file.
1 chiave · 1 sessione - Il rifiuto
E nessun ramo che prosegue
Chiave sbagliata, identità sbagliata, tipo di messaggio sbagliato, nessuna risposta: il client si ferma. Non c’è un ramo che ripiega sul testo in chiaro — che è esattamente il ramo a cui un attaccante punterebbe.
La sessione viene rifiutata
