Glosario cripto

Reutilización del nonce en ECDSA

Definición

La reutilización del nonce en ECDSA es un fallo criptográfico: dos firmas hechas con el mismo número secreto permiten calcular la clave privada.

Cada firma ECDSA, el esquema que usan las cuentas de Bitcoin y Ethereum, necesita un valor secreto nuevo llamado nonce, que suele escribirse k. Si se usa el mismo k para firmar dos mensajes distintos con la misma clave, un poco de álgebra sobre las dos firmas públicas revela k y, con él, la clave privada. Incluso un nonce solo en parte predecible o sesgado puede delatar la clave mediante ataques estadísticos sobre muchas firmas.

No es teoría. La clave de firma de la PlayStation 3 de Sony se extrajo en 2010 porque usaba un nonce constante, y en 2013 un fallo del generador aleatorio de Android hizo que wallets de Bitcoin repitieran nonces, lo que permitió vaciar las direcciones afectadas. Los investigadores que rastrean la blockchain siguen encontrando claves expuestas por nonces repetidos de software o hardware defectuoso.

Las wallets actuales lo evitan con nonces deterministas derivados de la clave y del mensaje, estandarizados en el RFC 6979, o con librerías y esquemas de firma seguros por defecto. Reutilizar una dirección no provoca por sí mismo este fallo; el peligro está en la mala aleatoriedad o en el código de firma casero.

Ejemplo

Un script de firma casero con un generador aleatorio roto firma dos transacciones de Bitcoin desde la misma dirección con el mismo k; un bot detecta el valor repetido en la cadena y vacía la dirección en minutos.

Términos relacionados

Últimos artículos sobre Reutilización del nonce en ECDSA