Quatro camadas, e a última é uma recusa.
Cada uma delas é uma coisa distinta que pode falhar, e cada falha termina a sessão em vez de a continuar numa forma mais fraca. Todo o desenho cabe nessa frase.
- O transporte
Texto cifrado no fio
O fluxo é selado com XSalsa20-Poly1305 sob uma chave acordada apenas para aquela sessão. Um relay reencaminha bytes que não sabe ler e não guarda chave nenhuma que os abra.
XSalsa20-Poly1305 - A prova
Uma identidade assinada
O servidor de rendezvous assina a identidade de cada ponta com uma chave Ed25519. O cliente verifica essa assinatura com a chave pública compilada dentro de si, e depois verifica se a identidade nela é o dispositivo que marcaste.
Ed25519 - O acordo
Uma chave por sessão
Só depois de a prova se aguentar é que as duas pontas estabelecem a chave simétrica. Antes desse ponto não passa um pixel, uma tecla ou um ficheiro.
1 chave · 1 sessão - A recusa
E nenhum ramo que continue
Chave errada, identidade errada, tipo de mensagem errado, nenhuma resposta: o cliente aborta. Não há caminho que caia para texto em claro — que é precisamente o caminho a que um atacante apontaria.
A sessão é recusada
