Firma digital en Bitcoin: cómo demostrar que una moneda es tuya sin revelar tu clave
Artículo 5 de 9 de la serie «Las Matemáticas Invisibles en Bitcoin». Si empiezas aquí, conviene haber leído antes el problema que Bitcoin resolvió con matemáticas, la curva elíptica secp256k1 (parte 1 y parte 2) y SHA-256.
Imagina que quieres gastar un bitcoin delante de miles de desconocidos que no se fían de ti. No puedes enseñarles tu clave privada, porque cualquiera que la viera podría gastar tus fondos. Pero tienes que convencerles de que la posees. Esa paradoja se resuelve con la firma digital, una de las ideas más elegantes de la criptografía y la pieza que une lo que ya hemos visto en esta serie: la curva elíptica y la función hash.
La firma como prueba de conocimiento 🟡
Una firma digital no es una contraseña que se envía. Es una prueba de que conoces un secreto sin mostrarlo, atada además a un mensaje concreto: tu transacción. Si alguien cambia una sola coma de ese mensaje, la firma deja de valer.
Esta idea es la puerta de entrada a las pruebas de conocimiento cero que veremos en el artículo 8. Conviene aclarar que presentar la firma como «prueba de conocimiento» es un marco pedagógico (🟡), no una definición de ingeniería. Lo que sigue en este artículo sí es matemática comprobable (🟢).
Una analogía para fijar la idea
Piensa en un sello de lacre personal. Cualquiera puede mirar el sello estampado en una carta y comprobar que es auténtico, pero solo el dueño del anillo puede estamparlo. Con las firmas digitales ocurre algo parecido, con una diferencia decisiva: el «sello» cambia con cada mensaje. Una firma válida para una transacción no sirve para ninguna otra, así que nadie puede copiarla y pegarla en un gasto distinto. Es una analogía, no un modelo matemático, pero ayuda a recordar las dos propiedades que buscamos: autenticidad (solo el dueño de la clave puede firmar) e integridad (cualquier cambio en el mensaje invalida la firma).
Qué se firma realmente
Firmar la transacción entera sería pesado. En su lugar se firma su huella: el hash que calculamos en el artículo sobre SHA-256. A ese número lo llamamos z. Cambia un bit de la transacción y z cambia por completo.
De la curva elíptica necesitamos tres ingredientes que ya conoces:
- G, el punto generador público de la curva.
- d, tu clave privada, un número secreto.
- Q = d·G, tu clave pública, un punto de la curva. Calcular Q a partir de d es rápido; recuperar d a partir de Q es, hasta donde se sabe, inviable. Es el problema del logaritmo discreto.
Además, la curva tiene un orden n: el número de veces que hay que sumar G consigo mismo para volver al punto de partida. Todas las cuentas de abajo se hacen módulo n.
ECDSA paso a paso
ECDSA es el algoritmo de firma que Bitcoin usó desde el principio. Funciona así:
- Se elige un número aleatorio secreto k, llamado nonce (de «number used once»).
- Se calcula el punto R = k·G, y r es su coordenada x (módulo n).
- Se calcula s = k⁻¹ · (z + r·d) mod n.
- La firma es el par (r, s).
Para verificar, cualquiera con la clave pública Q, el mensaje (es decir, z) y la firma calcula:
- u₁ = z · s⁻¹ mod n
- u₂ = r · s⁻¹ mod n
- el punto X = u₁·G + u₂·Q
La firma es válida si la coordenada x de X es igual a r. El verificador nunca ve d ni k. Funciona porque X = (z + r·d)·s⁻¹·G = k·G = R.
Un ejemplo que puedes comprobar a mano
La curva real de Bitcoin trabaja con números de 256 bits, imposibles de seguir con lápiz. Usemos una versión de juguete con la misma ecuación, y² = x³ + 7, pero módulo el primo 43. Elegimos como generador G = (2, 12). Esta curva tiene 31 puntos y el orden de G es n = 31.
| Dato | Valor |
|---|---|
| Clave privada d | 13 |
| Clave pública Q = 13·G | (13, 21) |
| Hash del mensaje z | 20 |
| Nonce k | 9 |
| R = 9·G | (20, 40), luego r = 20 |
| s = 9⁻¹ · (20 + 20·13) mod 31 | 7 · 1 = 7 |
La firma es (r, s) = (20, 7). Verificamos: s⁻¹ = 9, así que u₁ = 20 · 9 mod 31 = 25 y u₂ = 20 · 9 mod 31 = 25. Entonces 25·G + 25·Q = (20, 40), cuya coordenada x es 20, igual que r. La firma es válida.
Ahora alteramos el mensaje y probamos con z = 21 en lugar de 20. El resultado de la verificación ya no coincide con r, y la firma se rechaza. Esa es la protección contra la manipulación.
Nota de rigor (🟢): hemos comprobado estas cifras con un programa propio de curva elíptica en Python. Si no reproduces los resultados, el artículo está equivocado (condición F2 más abajo).
El talón de Aquiles: el nonce
Toda la seguridad de ECDSA descansa en que k sea secreto e irrepetible. Si firmas dos mensajes distintos con el mismo k, cualquiera puede despejar tu clave privada con álgebra de instituto.
Seguimos con el juguete. Firmamos un segundo mensaje con z₂ = 11 y el mismo k = 9. Obtenemos s₂ = 6, y el r es el mismo, 20, porque R no ha cambiado. Un observador ve dos firmas con el mismo r y calcula:
- k = (z₁ − z₂) / (s₁ − s₂) = 9 / 1 = 9
- d = (s₁·k − z₁) / r = (63 − 20) / 20 mod 31 = 13
Acaba de recuperar tu clave privada.
No es una curiosidad teórica. En agosto de 2013, un fallo en el generador de números aleatorios de Android hizo que varias aplicaciones de carteras Bitcoin repitieran nonces, y se vaciaron fondos de usuarios afectados (Bitcoin Magazine, 2013; The Register, 2013). Por eso las carteras modernas derivan el nonce de forma determinista a partir de la clave y del mensaje, en lugar de fiarse de un generador aleatorio defectuoso.
Schnorr: la misma idea, más limpia
En 2020 se publicó el BIP-340, que propone firmas Schnorr sobre la misma curva secp256k1 (Wuille, Nick y Ruffing, 2020). La estructura es parecida, pero la ecuación de firma es lineal:
- Se elige k, se calcula R = k·G y un desafío e = hash(R, Q, mensaje).
- La firma es s = k + e·d.
- Se verifica comprobando que s·G = R + e·Q.
En nuestro juguete, con e = 5 (un valor de ejemplo, no un hash real), s = 9 + 5·13 mod 31 = 12. Y 12·G = (37, 36), que es exactamente R + 5·Q. Cuadra.
Esa linealidad tiene consecuencias prácticas, según el propio BIP-340: varias partes pueden combinar sus claves y producir una sola firma para la suma de sus claves públicas, y varias firmas pueden verificarse por lotes, con coeficientes aleatorios, de forma más rápida. Además, las claves públicas se codifican con solo la coordenada x (32 bytes) y las firmas ocupan 64 bytes.
El ejemplo del juguete simplifica algunas decisiones de BIP-340, como la elección del punto con coordenada y par y el hash etiquetado. Está pensado para entender la ecuación, no para implementarla.
Taproot: qué cambia para el usuario
Las firmas Schnorr llegaron a Bitcoin con Taproot, descrito en el BIP-341, que combina las firmas Schnorr con ramas de Merkle para que, al gastar, solo se revele la condición que realmente se ejecuta. Se activó en el bloque 709.632, en noviembre de 2021 (bloque en blockchain.com).
Para quien solo usa una cartera, el cambio es casi invisible: tus claves y tus direcciones siguen funcionando. Pero abre la puerta a transacciones más pequeñas, más privadas y a multifirmas indistinguibles de un pago normal.
Tres malentendidos frecuentes
«La firma cifra la transacción.» No. La transacción viaja en claro y cualquiera puede leerla; la firma no oculta nada, solo prueba quién la autoriza. La confidencialidad y la autenticidad son problemas distintos.
«Mi clave privada viaja en la firma.» Tampoco. En el ejemplo, d solo aparece dentro de la ecuación de s, mezclada con el nonce k, que el verificador no conoce. Mientras k siga siendo secreto e irrepetible, de la firma no se puede despejar d.
«Una firma válida demuestra que la persona es honesta.» Demuestra únicamente que quien firmó conoce la clave privada. Qué hace esa persona con los fondos, o si alguien le robó la clave, queda fuera de lo que la matemática puede decir. Por eso la custodia de la clave es un asunto práctico tan importante como la propia criptografía.
Lo que no hemos dicho, y por qué importa
La seguridad de ambos esquemas descansa en una suposición, no en una demostración: que nadie sabe calcular logaritmos discretos en secp256k1 de forma eficiente. Un ordenador cuántico suficientemente grande podría hacerlo con el algoritmo de Shor. Es una de las dos grandes preguntas del artículo 8, junto con las pruebas de conocimiento cero.
Compruébalo tú mismo
Las cifras de este artículo (la firma, su verificación y cómo se recupera una clave si se repite el nonce) se han calculado con un pequeño programa en Python. Puedes descargarlo y ejecutarlo en tu ordenador para obtener los mismos números. No necesita instalar nada ni toca dinero real.
Descargar el código (.zip) Programa de este artículo: ecdsa_juguete.py (usa curva_juguete.py, incluido en el zip)
Falsadores de este artículo
- F1. Si se publica un algoritmo clásico de tiempo polinómico para el logaritmo discreto en secp256k1, la seguridad de ECDSA y Schnorr queda refutada.
- F2. Si el ejemplo numérico de este artículo no se reproduce, el artículo es incorrecto.
- F3. Si las pruebas de rendimiento de Bitcoin Core no muestran ventaja en la verificación por lotes de Schnorr frente a ECDSA, la afirmación sobre su velocidad debe matizarse.

Conclusión
Una firma digital resuelve la paradoja del principio: demuestra que posees un secreto sin revelarlo y ata esa prueba a un mensaje concreto. ECDSA lo hizo posible desde el primer bloque; Schnorr lo simplifica y abre nuevas posibilidades. En el siguiente artículo veremos de dónde sale la dirección a la que se envían los fondos y cómo una palabra semilla se convierte en todas tus claves.
Si quieres profundizar con lecturas en español, en nuestra librería Bitcoin tienes una selección curada de libros sobre Bitcoin y criptografía, pensada como educación Bitcoin y contenido para bitcoiners. (Cuando enlacemos a libros concretos de Amazon, se indicará que son enlaces de afiliado.)
Preguntas frecuentes
Es una prueba matemática de que quien autoriza una transacción conoce la clave privada asociada a los fondos, sin revelarla. Está ligada al hash de la transacción, de modo que cualquier cambio en esta invalida la firma.
Ambas usan la curva secp256k1. En ECDSA la ecuación de firma es s = k⁻¹(z + r·d); en Schnorr es s = k + e·d, que es lineal. Esa linealidad permite combinar claves y firmas y verificar varias firmas por lotes con más rapidez (BIP-340).
Si dos firmas distintas usan el mismo k, un observador puede despejar k y después la clave privada con álgebra elemental. Por eso las carteras modernas derivan el nonce de forma determinista.
Una actualización de Bitcoin descrita en el BIP-341 que introdujo las firmas Schnorr y ramas de Merkle para gastar, mejorando privacidad y eficiencia.
Referencias
- Bitcoin Magazine. (2013). Critical vulnerability found in Android wallets. https://bitcoinmagazine.com/technical/critical-vulnerability-found-in-android-wallets-1376273924
- Blockchain.com. (s. f.). Bitcoin Block 709,632. https://www.blockchain.com/btc/block/709632
- The Register. (2013, 12 de agosto). Android bug batters Bitcoin wallets. https://www.theregister.com/2013/08/12/android_bug_batters_bitcoin_wallets/
- Wuille, P., Nick, J. y Ruffing, T. (2020). BIP 340: Schnorr Signatures for secp256k1. https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
- Wuille, P., Nick, J. y Towns, A. (2020). BIP 341: Taproot: SegWit version 1 spending rules. https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki
Nota de transparencia: este artículo ha sido elaborado con la asistencia de un asistente de escritura (Claude). Las cifras del ejemplo han sido comprobadas con código; las citas y enlaces deben ser validados por Kiko Tsuki antes de publicar.
Siguiente: De la clave privada a tu dirección Bitcoin: hash, Base58Check, Bech32 y frase semilla
Valor por valor: ¿te ha servido esta serie?
En Nakamotobook el contenido es de acceso libre, sin muros de pago. Si lo que has leído te ha aportado valor, puedes devolverlo como creas justo con unos sats por Lightning. Es voluntario y sin contrapartida: no desbloquea contenido ni es una compra.
Dirección Lightning: Tomyy@coinos.io
Escanea el código QR con tu cartera Lightning o copia la dirección. Comprueba siempre que coincide con la de arriba antes de enviar.

Compartir el artículo, comentarlo o corregirnos un error también es valor. Las donaciones no constituyen asesoramiento financiero ni una inversión.
Kiko Tsuki es escritor de ciencia ficción y editor de una revista digital centrada en Bitcoin y la cultura libertaria. En sus textos explora cómo la tecnología descentralizada transforma la vida cotidiana y la relación de las personas con el poder. Cree en una futura Holocracia.








