Skip to content

Glossary

Maleabilidad de firmas

Un fallo donde una firma válida puede transformarse en una segunda igualmente válida sin la clave privada, cambiando el hash de la transacción y habilitando bugs de replay o de doble procesamiento.

Toda firma ECDSA tiene la forma (r, s) y, por la simetría de la curva, el par (r, n - s) es una firma igualmente válida para el mismo mensaje y la misma clave. Un atacante que no puede falsificar una firma sí puede invertir s a su complemento, produciendo una segunda firma de aspecto distinto — y, en sistemas que identifican una transacción por el hash de sus bytes firmados, un identificador de transacción diferente para la misma intención.

La exposición temprana de Bitcoin a esto — invocada célebremente como excusa durante el colapso de Mt. Gox — y la amenaza que suponía para la protección ingenua contra replay on-chain llevaron a que EIP-2 de Ethereum exija la forma canónica low-s. En los contratos inteligentes, nunca trates una firma como identificador único: deduplica mediante un nonce explícito y verifica con una biblioteca auditada como el ECDSA de OpenZeppelin, que rechaza la variante maleable high-s.