Algoritmo de Shor vs Bitcoin: anatomía de una kill chain sobre la derivación de claves
Cómo la rutina de búsqueda de periodos de Shor rompe ECDSA sobre secp256k1, qué significa para los UTXO de Bitcoin expuestos, y cómo es realmente una migración a un esquema de firma post-cuántico a nivel de protocolo.
TL;DR ¶
El algoritmo de Shor reduce el problema del logaritmo discreto sobre curvas elípticas (ECDLP) a la búsqueda de periodos, que un ordenador cuántico tolerante a fallos resuelve en tiempo polinómico. Las firmas de Bitcoin viven sobre secp256k1, una curva ECDLP-dura. En cuanto exista un cuántico lógico suficientemente grande, cualquier dirección que haya expuesto su clave pública en la cadena es recuperable. Aproximadamente el 25% del BTC en circulación está hoy exactamente en ese estado — sobre todo salidas P2PK, direcciones P2PKH reutilizadas, y cualquier UTXO cuya transacción de gasto ya se haya transmitido pero no esté minada.
Este no es un problema de 2026. Es un problema de ~2030 con una ventana de migración en 2026.
1. La matemática, comprimida ¶
ECDSA sobre secp256k1 elige un punto base G de orden primo n ≈ 2^256 y un escalar privado d ∈ [1, n-1]. La clave pública es P = d·G. Firmar implica el nonce por mensaje k, produciendo (r, s) donde:
1 r = (k·G).x mod n 2 s = k^-1 · (H(m) + r·d) mod n
Un atacante clásico tendría que invertir la multiplicación escalar d·G → d, una instancia de ECDLP. El mejor ataque clásico conocido es rho de Pollard con ≈ √n ≈ 2^128 operaciones. Cómodamente irrompible.
Shor reformula ECDLP como un problema del subgrupo oculto sobre Z_n × Z_n. Dado un oráculo para la función:
1 f(a, b) = a·P + b·G
f tiene periodo (d, -1) mod n. La transformada cuántica de Fourier extrae ese periodo en O((log n)^3). En concreto, una máquina tolerante a fallos rompe secp256k1 con aproximadamente:
- 2330 qubits lógicos (Roetteler et al., 2017)
- ~10^9 puertas Toffoli
- ~ 8 horas de reloj a tasas de reloj lógicas proyectadas de ~10^4 Hz
Traducir lógico a físico con la sobrecarga actual del código de superficie (10^3–10^4 físicos por lógico) sitúa el coste en 2 × 10^7 – 2 × 10^8 qubits físicos. Condor de IBM (1121 qubits, 2023) y los 1180 qubits de átomo neutro de Atom Computing (2024) siguen siendo NISQ ruidosos — muy por debajo del umbral, pero la brecha se cierra en una curva tipo Moore.
2. El inventario expuesto de BTC ¶
Una dirección de Bitcoin solo revela su clave pública cuando se gasta un UTXO en esa dirección. El modelo de exposición tiene capas:
| Capa | Estado clave pública | BTC aprox (Q1 2026) |
|---|---|---|
| Salidas P2PK (pre-2010, era Satoshi) | Siempre expuesta | ~1.7M BTC |
| Direcciones P2PKH/P2WPKH reutilizadas | Expuesta tras primer gasto | ~2.5M BTC |
| P2PKH/P2WPKH/P2TR frescas sin gastar | Solo hash | ~14M BTC |
| Tx en mempool (transmitida, sin minar) | Expuesta ~10 min | ~50k BTC rotando |
Las dos primeras filas — ~4.2M BTC, aproximadamente 280 mil millones USD a precio actual — son recuperables por cualquier actor que logre relevancia criptoanalítica primero. Las monedas de Satoshi están en este cubo.
La exposición del mempool es la superficie de ataque activa: un adversario con un cuántico suficientemente rápido puede romper la clave privada desde la firma transmitida antes de que se confirme la transacción, y luego correr una transacción con mayor comisión que redirige los fondos.
3. La kill chain, en concreto ¶
1 [tx transmitida] 2 | la firma revela P = d·G 3 v 4 [harvest ahora] -> almacena tuplas (P, tx_hash) 5 v 6 [descifra después] -> Shor sobre P -> d 7 v 8 [forja gasto] -> firma nueva tx con d, RBF mayor comisión
El modelo "harvest now, decrypt later" no es teórico para Bitcoin. Adversarios estatales archivan demostrablemente toda la cadena más el mempool. Cada firma ya publicada es un pagaré contra capacidad cuántica futura.
Un adversario con capacidad de minero más Shor ni siquiera necesita correr — puede mantener un UTXO como rehén seleccionando silenciosamente en contra de cualquier tx que gaste desde una dirección vulnerable y sustituirla por la suya.
4. Cómo es la migración a nivel de protocolo ¶
No hay ruta soft-fork que proteja claves ya expuestas. La migración tiene tres formas viables:
4a. Nuevo tipo de dirección con firmas PQ ¶
Añadir un opcode (p. ej. OP_CHECKDILITHIUM) y una nueva versión de witness. Las firmas ML-DSA-44 son de 2420 bytes — ~75× más grandes que los 65 bytes de ECDSA. Los bloques engordan; los descuentos de witness al estilo SegWit lo mitigan. La parte dura es la disciplina de rotación de carteras: los usuarios deben mover cada moneda desde direcciones expuestas a direcciones PQ antes del Q-day.
4b. Firmas híbridas durante la transición ¶
Requerir tanto una firma ECDSA como una Dilithium en el witness. Cinturón y tirantes. Duplica la sobrecarga de firma pero ofrece rollback limpio si la primitiva PQ resulta rota (ha ocurrido: SIKE en 2022, Rainbow en 2022, ambos finalistas NIST).
4c. Firmas hash de un solo uso (XMSS / SPHINCS+) ¶
SPHINCS+ es sin estado y conservador — la seguridad se reduce solo a la función hash. Las firmas son grandes (~8 KB en NIST L1) pero la historia criptográfica es la más simple de verificar. Cobertura razonable para un protocolo monetario de capa base donde domina la cautela.
Se ha propuesto un soft-fork coordinado de congelación de direcciones legacy tras un flag-day, y es políticamente incendiario. Resultado probable: direcciones PQ opt-in en 2027-2028, monedas vulnerables en carteras activas migran, monedas latentes terminan siendo drenadas por quien cruce el umbral cuántico primero.
5. Una prueba juguete: la estructura de Shor sobre una curva pequeña ¶
No puedes ejecutar un Shor de 256 bits en un portátil. Sí puedes ejecutarlo sobre una curva de 5 bits — instructivo, y la estructura es idéntica.
1 # shor-ecdsa-sim.py (extracto) — fichero completo en Descargas 2 # Sustituto clásico de la búsqueda de periodos. Modela el oráculo cuántico f(a,b) = a*P + b*G 3 # sobre la curva juguete E: y^2 = x^3 + 2x + 3 (mod 97). Orden n = 5. 4 5 def shor_ecdlp_demo(P, G, n): 6 # En una ejecución real, esta extracción del periodo la hace la QFT; 7 # aquí brutaleamos la estructura para exponerla. 8 for a in range(1, n): 9 for b in range(1, n): 10 if scalar_mult(a, P) == scalar_mult(b, G): 11 # a*d ≡ b (mod n), así que d = b * a^-1 mod n 12 return (b * pow(a, -1, n)) % n 13 return None
El fichero completo en el bundle de descargas incluye:
- Ley de grupo de secp256k1 para curiosos
- Una demo de 5 bits de extremo a extremo
- Un estimador que toma tu
ny te dice el número de qubits lógicos que necesitaría Shor
6. Qué hacer, este trimestre ¶
- Audita tu exposición: para cada cartera que controles, lista direcciones que hayan sido alguna vez emisoras de una transacción. Esas claves son públicas. Barre los fondos a una dirección fresca nunca-gastada-desde. P2TR (Taproot) es solo-hash hasta el primer gasto — úsalo.
- Deja de reutilizar direcciones. Es una norma de higiene que preexiste a Shor y ahora tiene dientes.
- Evita canales Lightning con grandes saldos latentes en nodos legacy. Las transacciones de apertura de canal revelan claves públicas.
- Vigila BIP-360 y el BIP-?? (firmas PQ) para propuestas a nivel de protocolo. La disciplina de migración va a ser un problema de UX, no de matemática.
- Si operas un exchange, comienza ya la rotación de cold-storage. La responsabilidad custodia escala linealmente con la proximidad cuántica.
7. Lectura recomendada ¶
- Roetteler, Naehrig, Svore, Lauter — Quantum Resource Estimates for Computing Elliptic Curve Discrete Logarithms (2017)
- Aggarwal, Brennen, Lee, Santha, Tomamichel — Quantum Attacks on Bitcoin, and How to Protect Against Them (2018)
- Stewart, Ilie, Zamyatin et al. — Committing to Quantum Resistance (2018)
- NIST IR 8413 — Status Report on the Third Round of the NIST Post-Quantum Cryptography Standardization Process (2022)
El reloj arranca no cuando llega el Q-day, sino cuando el primer adversario cree que el Q-day está más cerca que tu plazo de migración. Ese momento puede haber pasado ya.
OPS RELACIONADAS
Dentro de la suite PQC de NIST: ML-KEM (FIPS 203), ML-DSA (FIPS 204), SLH-DSA (FIPS 205)
Cuatro años después de nombrar a los finalistas de ronda 3, los estándares están firmados. Aquí está qué hace cada uno, qué parámetro elegir en cada nivel de seguridad, y la llamada mínima en Python y TypeScript.
Q-day: cómo los analistas fijan la ventana entre 2029 y 2034
Los pronósticos convergen en una ventana de cinco años. Comparamos seis estimaciones publicadas lado a lado, mostramos qué asume cada una, y enviamos una calculadora del teorema de Mosca para que derives tu propio plazo de migración.
Grover muerde a AES: por qué 128 ha muerto y 256 es tu nueva base
El algoritmo de Grover da un speedup cuadrático sobre la búsqueda de clave por fuerza bruta. AES-128 baja a ~64 bits efectivos. AES-256 se queda en ~128 bits. El arreglo es una línea de config — pero hay que encontrar cada sitio donde vive estado de cifrado.