Descripción General
Las firmas digitales son el mecanismo fundamental mediante el cual los propietarios de Bitcoin prueban que tienen derecho a gastar sus fondos. Cuando un usuario crea una transacción, firma cada entrada con la clave privada correspondiente a la dirección que tiene los fondos. Los nodos y mineros verifican estas firmas antes de aceptar la transacción, asegurando que solo el propietario legítimo pueda mover sus bitcoin.
Cómo Funciona
El proceso de firma y verificación sigue un patrón general:
FIRMA (por el remitente):
┌─────────────────────┐
│ Datos de Transacción│
│ (entradas, salidas) │
└────────┬────────────┘
│
▼
┌─────────────────────┐ ┌─────────────┐
│ Función Hash │ ◄───│ Clave Privada│
└────────┬────────────┘ └─────────────┘
│
▼
┌─────────────────────┐
│ Firma Digital │
│ (valores r, s) │
└─────────────────────┘
VERIFICACIÓN (por cada nodo):
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Firma │ │ Clave Pública│ │ Datos de Tx │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└────────┬────────┘─────────────────┘
▼
┌──────────────┐
│ Válido: ✓/✗ │
└──────────────┘
Tipos de Firma en Bitcoin
ECDSA (Algoritmo de Firma Digital de Curva Elíptica): El esquema de firma original utilizado en Bitcoin desde su lanzamiento. Las firmas ECDSA usan la curva secp256k1 y producen firmas de aproximadamente 70-72 bytes. Todos los tipos de transacciones anteriores a Taproot usan ECDSA.
Firmas Schnorr: Introducidas con la actualización Taproot en noviembre de 2021, las firmas Schnorr ofrecen varias ventajas: son matemáticamente más simples, demostrablemente seguras bajo suposiciones estándar, admiten agregación nativa de claves y firmas, y siempre tienen exactamente 64 bytes. Las firmas Schnorr se utilizan en salidas Pay-to-Taproot (P2TR).
Banderas Sighash
Al firmar una transacción, el firmante puede elegir qué partes de los datos de transacción cubre la firma usando banderas sighash:
- SIGHASH_ALL (predeterminado): Firma todas las entradas y salidas
- SIGHASH_NONE: Firma todas las entradas pero ninguna salida
- SIGHASH_SINGLE: Firma todas las entradas y solo la salida en el mismo índice
- SIGHASH_ANYONECANPAY: Se puede combinar con las anteriores; firma solo una entrada
Conceptos Erróneos Comunes
- Las firmas digitales no cifran nada. Proporcionan autenticación e integridad, pero no confidencialidad.
- La clave privada nunca se transmite ni se incorpora a la transacción. Solo se incluyen la firma y la clave pública.
- Cada firma es única para los datos de transacción específicos que se firman, por lo que una firma no puede reutilizarse para una transacción diferente.