Carteiras de cripto que não geram nonces de assinatura suficientemente aleatórias, em 2025, vão além da negligência.
Tansel Kaya
Tansel Kaya29 de nov. de 2025
A "extração de chaves de assinaturas" mencionada no hack Upbit é um ataque avançado de criptoanálise ao algoritmo Elliptic Curve Digital Signature Algorithm (ECDSA) usado na Solana (e em muitas outras blockchains). Devido ao nonce previsível (número aleatório único k) gerado pelo software de carteira da Upbit, os atacantes detectaram um padrão oculto nas assinaturas, permitindo calcular matematicamente a chave privada da carteira. 1. Como funciona o ECDSA? Ao assinar cada transação: Chave privada: d (nunca compartilhada) Número aleatório único: k (nonce) → deve ser completamente aleatório e secreto para cada assinatura Assinatura resultante: par (r, s) (visível para todos na blockchain) Se k não for aleatório ou tiver um padrão previsível, a chave privada d pode ser extraída de múltiplas assinaturas. 2. Vulnerabilidade no Upbit O próprio software de carteira da Upbit não conseguia gerar valores nonce de forma aleatória o suficiente. Isso criou um viés estatístico nos valores das assinaturas (r, s). Os atacantes coletaram dezenas/centenas de transações da carteira quente da Upbit, analisaram essas assinaturas para descobrir quais bits dos nonces eram previsíveis e calcularam a chave privada em segundos/minutos usando métodos matemáticos (ataque em rede). 3. Tipos de ataques matemáticos utilizados Problema dos Números Ocultos (HNP) + Redução de Rede (algoritmos LLL/BKZ) Mesmo uma previsibilidade de apenas 3–8 bits é suficiente para quebrar completamente a chave com 20–100 assinaturas. Mesmo que haja viés mais fraco (1–2 bits), ele ainda pode ser quebrado com milhares de assinaturas 4. Por que dizem que "só Lázaro pode fazer isso"? Este ataque exige: conhecimento em nível de doutorado em criptografia (HNP, criptoanálise em rede) Expertise em análise de dados blockchain Recursos computacionais poderosos (clusters de GPU) Paciência e monitoramento a longo prazo 5. Lições e Precauções a Serem Tomadas A produção de nonce deve ser feita com o RFC 6979 (determinístico, mas seguro) ou com fonte verdadeira de aleatoriedade de hardware (HWRNG). Assinaturas devem ser necessárias para passar nos testes de aleatoriedade (NIST, Dieharder).
Não tenho certeza dos detalhes aqui. Como alguns já apontaram, Solana deveria usar Ed25519, que possui nonces determinísticos. Mas essa é uma assinatura de Schnorr e tem a mesma vulnerabilidade se alguém implementou mal o processo de amostragem de nonces de forma uniforme.
Também quero dizer: se eu encontrasse uma falha de aleatoriedade/uniformidade em um esquema de assinatura usado em uma carteira de criptomoedas, especialmente se explorado por um grupo patrocinado pelo Estado, eu não necessariamente pularia para o "acidente" como minha única explicação.
14,19K