Glossário

O que é Nonce?

Um nonce (number used once, número usado uma única vez) é um valor único, normalmente aleatório ou sequencial, que é usado exatamente uma vez em uma operação criptográfica para garantir que entradas idênticas produzam saídas diferentes, evitando os ataques de repetição e a análise de padrões.

Também conhecido como: number used once, cryptographic nonce

Se você criptografa o mesmo texto simples com a mesma chave e sem nonce, obtém um texto cifrado idêntico a cada vez. Um atacante que observe várias mensagens poderia detectar padrões: textos cifrados idênticos revelam que a mesma mensagem foi enviada, mesmo sem descriptografá-la. Um nonce elimina esse problema introduzindo um valor único em cada operação de criptografia, garantindo que o mesmo texto simples criptografado com a mesma chave sempre produza um texto cifrado diferente.

Os requisitos de segurança dos nonces variam conforme o algoritmo. Alguns algoritmos (como o AES-GCM) exigem que um nonce nunca seja reutilizado com a mesma chave: a reutilização pode comprometer de forma catastrófica tanto a confidencialidade quanto a autenticação. Para esses algoritmos, os nonces aleatórios devem ser grandes o bastante para que uma colisão acidental seja insignificantemente improvável. Um nonce aleatório de 96 bits (como o usado no AES-GCM) fornece resistência a colisões suficiente para até aproximadamente 2^32 criptografias sob uma única chave.

Os nonces aparecem ao longo dos protocolos criptográficos sob nomes diferentes. No AES-GCM eles são chamados de vetores de inicialização, na autenticação de desafio-resposta são desafios e na blockchain são nonces de mineração. O denominador comum é a unicidade: o valor não deve se repetir dentro do contexto em que é usado.

Como o Vaulted usa Nonce

Cada segredo criptografado com a Vaulted usa um nonce aleatório único de 12 bytes (96 bits), gerado pelo gerador de números aleatórios criptograficamente seguro da Web Crypto API. Esse nonce serve como vetor de inicialização para a criptografia AES-256-GCM. Ele é armazenado junto ao texto cifrado no servidor e transmitido ao destinatário para a descriptografia. Como cada segredo usa um par de chave e nonce recém-gerado, a reutilização do nonce não é uma preocupação prática nem mesmo em escala.