Skip to main content

Firma | Bitcoin Glossary | Mapping Bitcoin

Firma

Criptografía

Also known as: digital signature, ECDSA signature

Prueba criptográfica con la clave privada que autoriza gastar bitcoin y puede ser verificada por cualquiera usando la clave pública del firmante.

Descripción general

Una firma digital en Bitcoin es una prueba criptográfica de que el titular de una clave privada ha autorizado una transacción específica. Las firmas son el mecanismo fundamental que previene el gasto no autorizado — sin una firma válida que corresponda a la clave pública (o hash de clave) con la que está bloqueada una salida, el bitcoin no puede moverse. Bitcoin admite dos esquemas de firma: ECDSA (Algoritmo de Firma Digital de Curva Elíptica), utilizado desde el inicio de Bitcoin, y firmas Schnorr, introducidas con la actualización Taproot.

Cómo funcionan las firmas

Proceso de Firma:

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│ Datos de la  │     │ Clave privada│     │   Firma      │
│ transacción  │────>│ + algoritmo  │────>│  (r, s) para │
│ (mensaje a   │     │   de firma   │     │  ECDSA o     │
│  firmar)     │     └──────────────┘     │  (R, s) para │
└──────────────┘                          │  Schnorr     │
                                          └──────┬───────┘
                                                 │
Proceso de Verificación:                         │
                                                 ▼
┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│ Datos de la  │     │ Clave pública│     │  ¿Válida?    │
│ transacción  │────>│ + firma      │────>│  SÍ / NO     │
│              │     │ + verificar  │     │              │
└──────────────┘     │   algoritmo  │     └──────────────┘
                     └──────────────┘

Propiedad clave: Cualquiera puede verificar, solo el titular de la clave puede firmar

ECDSA vs. Schnorr

PropiedadECDSASchnorr
En uso desde2009 (lanzamiento de Bitcoin)2021 (activación de Taproot)
Tamaño de firma71-73 bytes (DER)64 bytes (fijo)
AgregaciónNo soportadaSoportada (MuSig)
Verificación por lotesLimitadaEficiente
Tipos de salidaP2PKH, P2WPKH, P2SHSolo P2TR

Qué cubre una firma

Una firma no firma ciegamente toda la transacción. La bandera sighash especifica qué partes de la transacción se incluyen en el mensaje firmado. El SIGHASH_ALL predeterminado se compromete con todas las entradas y salidas, asegurando que ninguna parte de la transacción pueda modificarse después de firmar.

Las firmas en la transacción

Antes de SegWit, las firmas se colocaban en el campo scriptSig de cada entrada. Con SegWit, las firmas se mueven a la sección de testigo, que está segregada de los datos de la transacción usados para calcular el ID de transacción. Esta separación corrigió la maleabilidad de transacciones y habilitó el descuento de testigo.

Multifirma y firmas agregadas

La multifirma tradicional requiere múltiples firmas ECDSA separadas en cadena (por ejemplo, multisig 2-de-3 necesita 2 firmas y 3 claves públicas). Las firmas Schnorr habilitan la agregación de claves MuSig, donde múltiples firmantes colaboran para producir una única firma agregada que es indistinguible de una firma de clave única en cadena. Esto ahorra espacio y mejora la privacidad.

Concepto erróneo común

Una firma no cifra nada. No es un secreto — las firmas son públicamente visibles en cada transacción Bitcoin en la blockchain. La propiedad de seguridad es que solo el titular de la clave privada puede crear una firma válida, pero una vez creada, cualquiera puede verificarla. Revelar una firma no compromete la clave privada.