Nonce é a abreviação de “Number used once” (“Número usado uma vez”). No contexto da criptografia e de protocolos de comunicação, refere-se a um número aleatório ou pseudoaleatório gerado para garantir a exclusividade nas comunicações. Os principais atributos do nonce são:
• Exclusividade: Como o nome indica, esse número é utilizado apenas uma vez em uma comunicação criptografada específica e jamais é reutilizado.
• Imprevisibilidade: Em aplicações criptográficas, o nonce precisa ser aleatório para evitar que atacantes consigam prever 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 de hash. Os mineradores não podem alterar os dados das transações; por isso, precisam testar continuamente diferentes valores de nonce, recalculando o hash a cada tentativa. Quando um minerador encontra um nonce que gera um hash de bloco dentro da dificuldade exigida, esse nonce serve como prova de trabalho.
Esse processo se assemelha à compra de bilhetes de loteria. Os dados do bloco representam seu nome, e o nonce é o número aleatório escolhido. Você segue alterando o número (nonce) até “ganhar” (atingir a dificuldade do hash).
No Ethereum, o nonce possui dois principais usos, sendo o nonce da conta o mais recorrente:
O nonce tem como finalidade principal reforçar a segurança e integridade dos sistemas:
• Prevenção de ataques de repetição (Replay Attack): Esta é a função mais fundamental do nonce. Atacantes podem interceptar comunicações legítimas e tentar reenviá-las para obter acesso indevido. O nonce garante que, mesmo interceptada, a solicitação será recusada pelo servidor, pois o número já estará expirado.
É semelhante ao número de série de um cheque: ao descontar um cheque de número #001, o banco invalida esse número. Mesmo que alguém copie o cheque, ele não poderá ser descontado novamente.
• Garantia de atualidade dos dados: Ao incluir um nonce, o destinatário pode verificar que os dados foram gerados em tempo real, e não são uma repetição de informações antigas. Isso impede que atacantes reutilizem registros de sessões anteriores para forjar identidades.
• Aumento da imprevisibilidade: O nonce insere uma variável no processo de criptografia, tornando muito mais difícil para atacantes analisarem padrões e comprometerem o sistema.
De acordo com o método de geração e as necessidades de aplicação, os nonces são classificados principalmente em duas categorias:
• Nonce aleatório: Gerado por um gerador de números pseudoaleatórios criptograficamente seguro (CSPRNG), oferece alta entropia e imprevisibilidade. É amplamente utilizado em assinaturas digitais e esquemas criptográficos avançados.
• Nonce sequencial: Produzido por meio do incremento de um contador. Apesar de menos imprevisível, garante exclusividade absoluta e é apropriado para mecanismos de autenticação.
O nonce é utilizado em uma ampla gama de cenários — da navegação diária na internet a transações com moedas digitais, além de protocolos de segurança e tecnologias emergentes. Sua lógica central está sempre baseada em exclusividade e imprevisibilidade.
• Gestão de identidade e autenticação: Em HTTP Digest Authentication, Single Sign-On (SSO) e autenticação em dois fatores (2FA), os nonces validam a identidade do usuário e garantem a autenticidade das solicitações.
• Protocolos criptográficos e assinaturas digitais:
◦ Durante o handshake SSL/TLS, clientes e servidores trocam nonces para verificar identidades.
◦ Em algoritmos como o AES-GCM, o nonce funciona como o vetor de inicialização (IV), garantindo que textos claros idênticos não gerem textos cifrados idênticos.
• Blockchain e registros distribuídos
Esta é a aplicação mais proeminente dos nonces atualmente, resolvendo “quem pode registrar transações” e a “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 esse número continuamente até que o hash do cabeçalho do bloco seja inferior à dificuldade alvo.
Na gestão de contas Ethereum: Cada conta Ethereum mantém um nonce incremental. Isso não só previne ataques de repetição (enviando a mesma transação duas vezes), como também permite que usuários “substituam” ou “cancelem” transações travadas enviando uma nova transação com o mesmo nonce e uma taxa maior.
Nonce e valores de hash aparecem juntos com frequência em contextos de blockchain, mas são conceitos distintos:
O valor de hash é uma “impressão digital” dos dados, determinado pela entrada e de tamanho fixo. Já o nonce é uma variável temporária utilizada para alterar o resultado do hash.
Do ponto de vista temporal, o valor de 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 o gerenciamento do nonce for inadequado, os sistemas ficam expostos a riscos relevantes. Os ataques mais comuns incluem:
◦ Ataque por reutilização de nonce: Atacantes exploram nonces reutilizados para quebrar proteções criptográficas. Em julho de 2021, por exemplo, o protocolo cross-chain Anyswap Multichain Router V3 assinou duas transações com o mesmo valor (componente da assinatura), permitindo que atacantes deduzissem a chave privada e causando perdas de quase US$ 8 milhões.
◦ Ataque por predição 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 testam exaustivamente valores de nonce para encontrar um hash que atenda aos critérios. Em 2018, por exemplo, o Bitcoin Gold (BTG) sofreu múltiplos ataques de 51%. Atacantes alugaram grande poder computacional para forçar nonces, roubando 388.200 BTG e causando perdas de cerca de US$ 18 milhões.

Fonte: Bitcoin Gold Explorer
Para mitigar esses ataques, desenvolvedores e projetos devem empregar algoritmos de geração altamente aleatórios (como CSPRNG), impor verificações rigorosas de exclusividade e atualizar periodicamente as bibliotecas criptográficas.
Como elemento fundamental da tecnologia criptográfica, a característica de “uso único” do nonce proporciona segurança robusta para comunicações complexas na internet e para registros distribuídos. Compreender e implementar corretamente mecanismos de nonce é essencial para garantir a segurança, transparência e integridade do universo digital.
Para saber mais:





