Protocolo Double Ratchet: Criptografia E2EE em WebSockets
Implemente o protocolo Double Ratchet para criptografia de ponta a ponta em WebSockets com sigilo perfeito e auto-recuperação em 2026.

O protocolo Double Ratchet consolidou-se em 2026 como a principal referência para o desenvolvimento de criptografia de ponta a ponta (E2EE) em aplicações web e móveis em tempo real. Difundido pelo Signal, seu uso em conexões bidirecionais WebSockets revolucionou a proteção em plataformas bancárias, mensageria corporativa e ferramentas de colaboração.
O grande objetivo em WebSockets consiste em manter sincronização constante enquanto se assegura o Sigilo Encaminhado (Forward Secrecy) e a Auto-Recuperação (Break-in Recovery) mesmo em redes móveis instáveis.
Arquitetura de Catraca Dupla: Cadeias KDF e Catraca Diffie-Hellman
O algoritmo interliga dois mecanismos criptográficos que progridem em sentido único:
- Catraca Simétrica (KDF Chain): Cada mensagem é criptografada com uma chave temporária exclusiva derivada via HKDF. Após o envio, a chave é sobrescrita imediatamente na RAM, impedindo a reconstrução de conversas anteriores.
- Catraca Assimétrica (DH Ratchet): A cada resposta recebida, um novo par de chaves Curve25519 (
X25519) é gerado. O novo segredo é inserido na chave-raiz KDF, renovando a entropia do canal e neutralizando possíveis interceptadores.
Para analisar e transmitir cargas binárias codificadas em base64 via WebSockets, utilize nosso Conversor Base64 Seguro.
Comparativo de Propriedades de Criptografia
| Propriedade de Segurança | TLS 1.3 Padrão | Chave AES Fixa Compartilhada | Protocolo Double Ratchet |
|---|---|---|---|
| Limite de Criptografia | Salto a Salto (Cliente-Servidor) | Ponta a Ponta | Ponta a Ponta (E2EE) |
| Confiança no Servidor WebSocket | Total (Servidor lê texto claro) | Parcial | Nula (Zero-Knowledge) |
| Sigilo Encaminhado por Mensagem | Não (Sessão global) | Não (Chave estática) | Sim (Chave única por frame) |
| Recuperação Pós-Comprometimento | Não | Não | Sim (Via nova etapa DH) |
| Resistência à Extração em RAM | Baixa | Muito Baixa | Máxima |
Implementação em TypeScript com Web Crypto API
Exemplo de avanço da cadeia KDF em TypeScript:
import { webcrypto } from 'crypto';
interface RatchetState {
rootKey: Uint8Array;
sendingChainKey: Uint8Array;
receivingChainKey: Uint8Array;
sendMessageNumber: number;
}
async function stepKdfChain(chainKey: Uint8Array): Promise<{ nextChainKey: Uint8Array; messageKey: Uint8Array }> {
const hkdfKey = await webcrypto.subtle.importKey(
'raw',
chainKey,
{ name: 'HKDF' },
false,
['deriveBits']
);
const derivedBits = await webcrypto.subtle.deriveBits(
{
name: 'HKDF',
hash: 'SHA-256',
salt: new Uint8Array(32),
info: new TextEncoder().encode('TecnoCrypter-Ratchet-Step')
},
hkdfKey,
512
);
const derivedArray = new Uint8Array(derivedBits);
return {
nextChainKey: derivedArray.slice(0, 32),
messageKey: derivedArray.slice(32, 64)
};
}
Dessa forma, cada pacote WebSocket transporta a chave pública efêmera atual do remetente, permitindo a sincronização no destinatário sem salvar dados sensíveis em disco.
Tratamento de Pacotes Atrasados ou Fora de Ordem
Para assegurar estabilidade em conexões móveis:
- Mapeamento de Chaves Puladas: Ao receber uma mensagem $N+2$ antes de $N+1$, a chave $N+1$ é mantida temporariamente em cache na memória com tempo de expiração.
- Eliminação Imediata: Assim que a mensagem atrasada é decifrada, sua chave é preenchida com zeros na memória RAM.
- Identificadores Exclusivos: Crie chaves de sessão imunes a colisão com nosso Gerador de UUID e ULID.
- Verificação de Identidade: Confirme as chaves públicas seguindo as diretrizes de Criptografia de Ponta a Ponta Web.
- Armazenamento no Cliente: Proteja as chaves principais conforme orientado em Criptografia do Lado do Cliente Zero-Knowledge.
Resumo
O protocolo Double Ratchet transforma conexões WebSockets em canais imunes a ataques de interceptação e a comprometimentos de servidores intermediários. Sua auto-recuperação contínua mantém a privacidade preservada.
Especificações e Referências:
- Signal Protocol: The Double Ratchet Algorithm Specification.
- IETF RFC 9180: HPKE Specification.
- Guia TecnoCrypter: Criptografia de Ponta a Ponta.


