ECDSA
El sistema de firma digital que controla la posesión de los bitcoins
Bitcoin usa un sistema de firma digital llamado ECDSA para controlar la posesión de los bitcoins.
En resumen, un sistema de firma digital permite generar tu propio par de claves privada/pública. Luego puedes usar la clave privada para generar firmas que prueban que eres el dueño de la clave pública, sin tener que revelar la clave privada.
Cualquiera puede generar su par de claves, y cualquiera puede "bloquear" una salida a tu clave pública. Nadie puede robar esos bitcoins, porque solo la persona con la clave privada correcta puede generar firmas válidas para desbloquearlos.
Curvas elípticas
La columna vertebral matemática de ECDSA
ECDSA usa la curva elíptica secp256k1 como base. Las tres operaciones relevantes son la suma, la duplicación y la multiplicación de puntos. La más importante es la multiplicación, que crea la clave pública a partir de la clave privada:
Multiplicación en la Curva
Uso
¿Cómo se usa ECDSA en Bitcoin?
El proceso implica tres etapas:
1. Generar las claves
Genera una clave privada (número aleatorio) y calcula la clave pública (clave privada × G).
Clave Privada
Clave Pública
2. Firmar
Para firmar un mensaje (un hash de 32 bytes), combinas la clave privada, el hash del mensaje y un número aleatorio (nonce) usando la aritmética de la curva. El resultado son dos números: r y s — la firma.
ECDSA (firmar/verificar)
El nonce debe ser único y secreto en cada firma. Si el mismo nonce se reutiliza en dos firmas distintas, es posible calcular la clave privada a partir de ambas firmas. Eso ya ha causado pérdidas de fondos en el pasado.
3. Verificar
Cualquiera puede verificar la firma usando la clave pública, el hash del mensaje y la firma (r, s). La aritmética de la curva confirma si la firma fue creada por la clave privada correspondiente, sin revelar la clave privada.
En Bitcoin, la firma ECDSA se serializa en formato DER antes de colocarse en la transacción.