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.

DesignWhere uniqueness comes fromExhaustion is handled by
AES-GCM recordsAn IV, typically a counterRekey before the counter wraps
ChaCha20-Poly1305A 96-bit nonce from a counter or generatorA message limit per key
WireGuardA per-key 64-bit counterRekey at a message cap
OpenVPN AEADPacket identifier plus implicit key materialRekey on the packet-id limit
IKEv2Fresh nonces per exchangeA 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.

Artigos relacionados