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

Multiplicación de punto (EC Multiply)

Multiplique un punto en la curva elíptica secp256k1.

Punto 1
x:
0d
y:
0d
0d
Punto 1 × Multiplicador
x:
0d
y:
0d

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 Privada

Genere un número aleatorio de 256 bits.

Bits

0b
0 bits
0d
0x
0 bytes

Nunca uses una clave privada generada por un sitio, ni introduzcas tu clave privada en un sitio. Los sitios pueden guardar fácilmente la clave privada y usarla para robar tus bitcoins.

Clave Pública

Clave Pública

Calcule la clave pública a partir de una clave privada.

0 bytes

Clave Pública

Coordenadas
0d
0d

Una clave pública es solo un punto en una curva elíptica. La clave pública final son esas coordenadas en hexadecimal.

Compresión

La curva es simétrica en el eje x, así que la clave comprimida guarda solo la coordenada x y si la y es par o impar. La x-only se usa en salidas Taproot.

0 bytes

Nunca introduzcas tu clave privada en un sitio, ni uses una clave privada generada por un sitio. Los sitios pueden guardar fácilmente la clave privada y usarla para robar tus bitcoins.

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)

Firma ECDSA

Firme el hash de un mensaje usando una clave privada.

Normalmente es el hash de datos de una transacción (ya preparados para la firma)

0x
0 bytes
0x
0x
0 bytes
Firma
0d
0d
High: Low:

Nunca introduzca su clave privada en un sitio web, ni use una clave privada generada por un sitio web. Los sitios pueden guardar fácilmente la clave privada y usarla para robar sus bitcoins.

Verificación ECDSA

Verifique una firma usando el hash de un mensaje y una clave pública.

0x
0 bytes
Firma
0d
0d
0x
0 bytes
Verificación de la firma
0d
0d

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.