Nonce é a sigla de “Number used once” (número usado uma única vez). No contexto da criptografia e dos protocolos de comunicação, designa um número aleatório ou pseudoaleatório gerado para garantir a unicidade das comunicações. Os atributos essenciais do nonce são:
• Unicidade: Tal como o nome indica, este número é utilizado apenas uma vez numa comunicação encriptada específica e não é reutilizado.
• Imprevisibilidade: Em contextos criptográficos, o nonce deve ser aleatório, de modo a impedir que agentes maliciosos antecipem o seu valor.
No mecanismo de Proof of Work (PoW) do Bitcoin, o nonce é a única variável que os mineradores podem ajustar manualmente durante os cálculos do hash. Não podem alterar os dados das transações, pelo que têm de experimentar sucessivamente diferentes valores de nonce, recalculando o hash a cada tentativa. Quando um minerador encontra um nonce que gera um hash do bloco compatível com o grau de dificuldade exigido, esse nonce serve de prova de trabalho.
Este processo assemelha-se à compra de bilhetes de lotaria: os dados do bloco representam o seu nome e o nonce é o número aleatório escolhido. Vai alterando o número (nonce) até “ganhar” (atingir a dificuldade do hash).
No Ethereum, o nonce tem duas funções principais, sendo o nonce da conta a mais comum:
O principal objetivo do nonce é reforçar a segurança e integridade dos sistemas:
• Prevenção de Replay Attack: Esta é a função mais elementar do nonce. Atacantes podem intercetar comunicações legítimas e tentar reenviá-las para obter acesso indevido. O nonce garante que, mesmo que o pedido seja intercetado, o servidor o rejeitará porque o número já foi utilizado.
É semelhante ao número de série de um cheque: se alguém descontar um cheque com o número #001, o banco invalida esse número. Mesmo que alguém copie o cheque, não poderá descontá-lo novamente.
• Garantia de Atualidade dos Dados: Ao incluir um nonce, o destinatário pode confirmar que os dados foram gerados em tempo real, e não são uma repetição de informação antiga. Isto impede que agentes maliciosos recorram a registos de sessões anteriores para forjar identidades.
• Maior Imprevisibilidade: O nonce introduz uma variável no processo de encriptação, tornando bastante mais difícil a análise de padrões e o compromisso do sistema por parte de atacantes.
Consoante o método de geração e as necessidades de aplicação, os nonces dividem-se essencialmente em duas categorias:
• Nonce aleatório: Gerado através de um gerador de números pseudoaleatórios criptograficamente seguro (CSPRNG), oferece elevada entropia e imprevisibilidade. É utilizado em assinaturas digitais e esquemas de encriptação avançados.
• Nonce sequencial: Produzido por incremento de um contador. Apesar de ser menos imprevisível, garante unicidade absoluta e é adequado para mecanismos de autenticação.
A utilização de nonce estende-se a múltiplos cenários — desde a navegação na internet até às transações em moedas digitais, passando por diversos protocolos de segurança e tecnologias emergentes. A lógica central reside sempre na unicidade e imprevisibilidade.
• Gestão de identidade e autenticação: Em HTTP Digest Authentication, Single Sign-On (SSO) e autenticação de dois fatores (2FA), os nonces validam a identidade do utilizador e garantem a autenticidade dos pedidos.
• Protocolos criptográficos e assinaturas digitais:
◦ Durante as negociações SSL/TLS, clientes e servidores trocam nonces para verificação de identidade.
◦ Em algoritmos como AES-GCM, o nonce atua como Initialization Vector (IV), assegurando que textos simples idênticos não originam textos cifrados idênticos.
• Blockchain e registos distribuídos
Esta é atualmente a aplicação mais relevante dos nonces, resolvendo as questões de “quem regista as transações” e “ordem das transações”.
Por exemplo, na mineração Proof of Work (PoW): No Bitcoin, o nonce é um campo de 32 bits. Os mineradores ajustam este número até que o hash do cabeçalho do bloco seja inferior ao alvo de dificuldade.
Na gestão de contas Ethereum: Cada conta Ethereum mantém um nonce incremental. Isto não só previne replay attacks (enviar a mesma transação duas vezes), como também permite substituir ou cancelar transações bloqueadas ao submeter uma nova transação com o mesmo nonce e uma taxa mais elevada.
Embora nonce e valor de hash surjam frequentemente em conjunto nos contextos de blockchain, são conceitos distintos:
O valor de hash é uma “impressão digital” dos dados, determinada pelo input e de tamanho fixo. O nonce é uma variável temporária utilizada para alterar os resultados do hash.
Do ponto de vista temporal, o hash serve como identificador fixo de um conjunto de dados, enquanto o nonce é normalmente descartado após um único uso.
Se a geração ou gestão do nonce for inadequada, os sistemas ficam expostos a riscos significativos. Os ataques mais comuns incluem:
◦ Ataque por reutilização de nonce: Atacantes exploram nonces reutilizados para comprometer mecanismos criptográficos. Por exemplo, em julho de 2021, o protocolo cross-chain Anyswap Multichain Router V3 assinou duas transações com o mesmo valor (um componente da assinatura), permitindo aos atacantes deduzir a chave privada e provocando perdas de quase 8 milhões de dólares.
◦ Ataque por previsibilidade de nonce: Se o padrão de geração do nonce for previsível, atacantes podem manipular processos de mineração ou autenticação.
◦ Ataque de força bruta: Atacantes tentam exaustivamente valores de nonce até encontrarem um hash que cumpra os critérios. Por exemplo, em 2018, o Bitcoin Gold (BTG) foi alvo de múltiplos ataques de 51%. Os atacantes alugaram grande poder computacional para forçar nonces, acabando por roubar 388 200 BTG e causando perdas de cerca de 18 milhões de dólares.

Fonte da imagem: Bitcoin Gold Explorer
Para mitigar estes ataques, os programadores e projetos devem recorrer a algoritmos de geração altamente aleatórios (como CSPRNG), impor verificações rigorosas de unicidade e atualizar regularmente as bibliotecas criptográficas.
Enquanto elemento fundamental da tecnologia criptográfica, a propriedade de “utilização única” do nonce oferece uma camada robusta de segurança para comunicações complexas na internet e para registos distribuídos. A compreensão e correta implementação dos mecanismos de nonce são essenciais para garantir a segurança, transparência e integridade do mundo digital.
Leitura adicional:





