O que é um nonce numa VPN e por que reutilizá-lo quebra o túnel
Um nonce é um valor por mensagem que nunca deve repetir-se sob uma chave, e normalmente viaja em claro. Editá-lo à mão é o erro a evitar.
A maioria das pessoas encontra a palavra nonce num perfil de VPN e supõe que seja outro segredo partilhado a copiar entre pares. Não é. Um nonce é um valor que nunca deve repetir-se sob a mesma chave, e na maior parte da criptografia baseada em nonce ele viaja em claro. A confusão permanece inofensiva até alguém o editar à mão, e é aí que começa a avaria real.
De onde o nonce vem realmente
A criptografia autenticada precisa de um nonce diferente para cada mensagem cifrada sob uma chave. Os protocolos satisfazem esse requisito de formas distintas: um contador que cresce de forma monotónica, um sal combinado com um identificador de pacote ou um valor aleatório suficientemente longo. O IKEv2 troca nonces durante a troca inicial, e eles são entradas públicas para a derivação de chaves, não segredos.
A unicidade pode ser estrutural ou probabilística. Um contador não pode repetir-se até dar a volta, e por isso o protocolo define um ponto de renovação de chave muito antes. Um valor aleatório depende de bits suficientes para que uma colisão seja inverosímil dentro do limite de mensagens, o que é um argumento diferente com um modo de falha diferente. A documentação do protocolo indica qual método se aplica, e ambos são seguros apenas enquanto o limite declarado for respeitado.
| Design | Where uniqueness comes from | Exhaustion is handled by |
|---|---|---|
| AES-GCM records | An IV, typically a counter | Rekey before the counter wraps |
| ChaCha20-Poly1305 | A 96-bit nonce from a counter or generator | A message limit per key |
| WireGuard | A per-key 64-bit counter | Rekey at a message cap |
| OpenVPN AEAD | Packet identifier plus implicit key material | Rekey on the packet-id limit |
| IKEv2 | Fresh nonces per exchange | A new security association |
O que a reutilização realmente custa
Reutilizar um nonce sob uma chave não é uma questão menor de eficiência. Com GCM, duas mensagens que partilham um IV permitem a um observador recuperar a chave de autenticação e calcular o OU exclusivo dos dois textos em claro. Construções baseadas em fluxo reutilizam o fluxo de chave da mesma forma, o que transforma o texto cifrado num quebra-cabeça em vez de um segredo.
É por isso que as implementações renovam a chave antes de um contador dar a volta, e por isso param em vez de continuar quando o seu estado é incerto. Um reinício que repõe um contador enquanto o par ainda detém a chave antiga, ou uma máquina virtual restaurada de um instantâneo tirado a meio da sessão, é exatamente a situação que os limites existem para impedir. Não é preciso atacante; as operações comuns bastam.
Por que a edição manual é a solução errada
Contadores, sais e identificadores de pacote são máquinas de estado partilhadas pelas duas pontas. Mudar um lado dessincroniza o outro, e o túnel falha de maneiras que parecem um problema de encaminhamento. A alavanca suportada é uma nova troca de chaves, que repõe o estado nas duas pontas ao mesmo tempo.
Palavras-passe e nonces também desempenham papéis diferentes. Uma palavra-passe é entrada secreta para a derivação de chaves; um nonce é entrada pública por mensagem. Um campo de perfil rotulado nonce que pede um segredo longo costuma ser uma chave estática ou um segredo pré-partilhado com outro nome, por isso leia a documentação desse campo em vez de supor.
Quando um aviso trata do tratamento de nonces, a reparação é a versão corrigida do mantenedor, não outra cifra nem uma chave mais curta. Trocar a cifra para evitar a palavra nonce desloca o problema em vez de o resolver.
Ler um aviso sem adivinhar
Uma linha de registo sobre contadores ou nonces costuma descrever estado perdido, não um ataque. Verifique se um par foi reiniciado, se uma máquina virtual clonada reutilizou a mesma identidade e se as duas pontas concordam quanto às configurações de renovação de chave. Depois estabeleça uma nova sessão e veja se a mensagem volta.
Mantenha o diagnóstico separado de falhas não relacionadas. Uma página que não carrega, ou um pedido de credenciais que fica em ciclo, não é evidência de reutilização de nonce, e tratá-lo como tal leva-o para a camada criptográfica quando o problema está acima dela.
Para o uso comum, a regra segura é curta: deixe a implementação gerir o nonce, mantenha as duas pontas em versões suportadas e trate qualquer reposição de estado como motivo para renovar a chave em vez de editar um valor. Se um campo de perfil não estiver na documentação do fornecedor, não invente um valor para ele. Consertar o túnel começa por saber que camada está a observar.