Reemplazan el backend de IBM Quantum por /dev/urandom
(github.com/yuvadm)- Incluso dejando intactos la construcción del circuito, los oráculos, el pipeline de extracción y el verificador
d·G == Q, la recuperación de la clave privada pudo reproducirse con solo sustituir el backend de IBM Quantum poros.urandom - El alcance del cambio se limita a 59 líneas modificadas en
projecteleven.py: se elimina la ejecución del backend y la recolección de resultados, y en su lugar se generan cadenas de bits aleatorias uniformes ajustadas al ancho del registro clásico, una por cadashot, para pasarlas al procesamiento posterior existente - De 4 bits a 10 bits, la ejecución con
/dev/urandomrecuperó valores dedidénticos byte por byte a los resultados de hardware reportados; en 16 bits y 17 bits también logró recuperar la clave en 4 de 5 y 2 de 5 intentos, respectivamente - La lógica de extracción adopta un
d_cand = (r − j)·k⁻¹ mod ncalculado en cada shot solo cuando pasa el verificador clásico; el documento explica la tasa de éxito de/dev/urandomconP(≥1 verified hit in S shots) = 1 − (1 − 1/n)^S - Aunque se mantienen ingenierías no triviales como seis oráculos, mapeo heavy-hex y semiclassical phase estimation, el alcance de la crítica se limita a la afirmación criptanalítica: los resultados de ejecución en hardware pueden reproducirse mediante verificación clásica y no necesariamente por recuperación cuántica
diff
- El cambio completo en
projecteleven.pyes de −29 / +30 líneas: se eliminan la inicialización del servicio de IBM Quantum, la ejecución del backend, la llamada al sampler y la recolección de resultados del trabajo, y se reemplazan por una generación decountsbasada en números aleatorios - El código agregado lee la longitud del registro clásico del circuito y crea
shotscadenas de bits aleatorias uniformes con ese mismo número de bits, para luego agregarlas conCountery pasarlas sin cambios al procesamiento posterior existentenbits = qc.num_clbitsbpb = (nbits + 7) // 8mask = (1 << nbits) - 1- En cada shot, genera un valor con
int.from_bytes(_os.urandom(bpb), "big") & masky luego lo convierte a una cadena binaria del ancho especificado
- El detalle completo de las 59 líneas modificadas puede verse en
git diff main
Resultados: ejecución del autor con el parche aplicado
- Usando exactamente el mismo comando CLI, se comprobó si era posible recuperar la clave privada usando únicamente resultados suministrados por
/dev/urandomen lugar del hardware - La tabla presentada en el documento compara directamente los valores de
dreportados por el autor con los valores dedrecuperados mediante/dev/urandom -
Desafíos pequeños, 1 intento cada uno, 8,192 shots
- El comando ejecutado es
python projecteleven.py --challenge <N> --shots 8192 - La salida completa va desde
urandom_runs/urandom_challenge_4.txthasta_10.txt - En todos los casos de 4 a 10 bits, el
drecuperado por/dev/urandomes idéntico byte por byte al resultado de hardware reportado por el autor- 4-bit: 6 → 6, verificación superada en el primer intento
- 6-bit: 18 → 18, verificación superada en el primer intento
- 8-bit: 103 → 103, verificación superada en el primer intento
- 9-bit: 135 → 135, verificación superada en el primer intento
- 10-bit: 165 → 165, verificación superada en el primer intento
- Según el documento, cada desafío se ejecutó una vez y
/dev/urandomtambién se ejecutó una vez; ambos tuvieron éxito
- El comando ejecutado es
-
Desafíos representativos, 5 intentos cada uno, 20,000 shots, oráculo ripple-carry
- El comando ejecutado es
python projecteleven.py --challenge <N> --oracle ripple --shots 20000 - La salida completa está recopilada en
urandom_runs/urandom_challenge_16_17_flagship.txt - En el desafío de 16 bits,
/dev/urandomrecuperó en 4 de 5 intentos eld = 20,248reportado por el autor - En el desafío de 17 bits,
/dev/urandomrecuperó en 2 de 5 intentos eld = 1,441reportado por el autor - El documento dice que el resultado de 17 bits era el caso que recibió 1 BTC, y que
/dev/urandomlo recuperó en alrededor del 40% de las ejecuciones en una laptop - También afirma que el autor ejecutó este caso una vez en IBM
ibm_fezy sostuvo que era un resultado cuántico - Se incluye además la salida completa de terminal de un ejemplo de ejecución de 17 bits
- Curva:
y^2 = x^3 + 0x + 7 (mod 65647) - Orden del grupo:
n = 65173 - Generador:
G = (12976, 52834) - Punto objetivo:
Q = (477, 58220) - Estrategia:
ripple-carry modular addition (CDKM) - Backend:
/dev/urandom - Ancho del registro clásico:
49 bits - En
20000 shots,Unique outcomes: 20000 - Resultado:
d = 1441 - Verificación:
1441*G = (477, 58220) [OK] VERIFIED,[OK] SUCCESS: Recovered correct secret key
- Curva:
- El comando ejecutado es
Por qué ocurre esto
- La lógica de extracción, según
ripple_carry_shor.py:197-240yprojecteleven.py:264, toma(j, k, r)de cada shot y calculad_cand = (r − j)·k⁻¹ mod n; luego lo acepta solo si pasa el verificador clásicod_cand · G == Q - El documento supone que, bajo ruido uniforme,
d_candsigue una distribución uniforme en el intervalo[0, n), y expresa así la probabilidad de obtener al menos una verificación exitosa enSshotsP(≥1 verified hit in S shots) = 1 − (1 − 1/n)^S
- Al sustituir en esta fórmula los valores de
(n, S)del documento, las tasas teóricas de éxito de/dev/urandomquedan así- 4-bit:
n = 7,shots = 8,192,100.00% - 6-bit:
n = 31,shots = 8,192,100.00% - 8-bit:
n = 139,shots = 8,192,100.00% - 9-bit:
n = 313,shots = 8,192,100.00% - 10-bit:
n = 547,shots = 1,024,84.65% - 16-bit:
n = 32,497,shots = 20,000,45.96% - 17-bit:
n = 65,173,shots = 20,000,26.43%
- 4-bit:
- El documento sostiene que la tasa de éxito empírica observada con
/dev/urandomcoincide con esos valores teóricos - También indica que en
README.md:210ya aparece esta frase"When shots >> n, random noise alone can recover d with high probability."
- De 4 bits a 10 bits, la relación
shots / nestá entre 1.9× y 1,170× en todos los casos; según el documento, todo ese rango entra en condiciones que el propio autor ya identificaba como un régimen clásico
Cómo reproducirlo
- Los resultados pueden reproducirse en la misma rama y entorno siguiendo estos pasos
git checkout urandom-reproduces-qpuuv venv .venv && . .venv/bin/activateuv pip install qiskit qiskit-ibm-runtime
- Ejemplos de ejecución
python projecteleven.py --challenge 4 --shots 8192python projecteleven.py --challenge 10 --shots 8192python projecteleven.py --challenge 17 --oracle ripple --shots 20000 # may need 2-3 tries
- El documento afirma que no hacen falta cuenta de IBM, token, hardware cuántico ni red
Indicios y alcance
- La implementación del repositorio en sí se evalúa como real y de ingeniería no trivial
- Incluye seis variantes de oráculo
- Mapea sumadores CDKM ripple-carry a topología heavy-hex
- Usa semiclassical phase estimation con mid-circuit measurement
- El alcance de la crítica se limita a la afirmación criptanalítica
- La conclusión del documento es que esta ejecución en hardware no representa una recuperación de claves ECDLP por computadora cuántica, sino una verificación clásica sobre candidatos aleatorios uniformes, y que, como muestra esta rama, puede reproducirse tal cual sin hardware cuántico
1 comentarios
Comentarios de Hacker News
Así que, aunque superficialmente dé el "resultado correcto", la razón puede estar completamente equivocada. Por eso, los casos de factorización de enteros pequeños o de ECDLP pequeños no son benchmarks adecuados para medir el progreso en computación cuántica.
Yo le advertí a la gente de project11 que esto iba a pasar. Pensé que al final terminarían dándole bitcoin a quien mejor ocultara el hecho de que la computadora cuántica no aportó nada, y también creí que era muy probable que el propio remitente se hubiera engañado a sí mismo. Parece que no me tomaron muy en serio.
[1]: https://sigbovik.org/2025/proceedings.pdf#page=146
/dev/urandomSu perfil habla de software empresarial, arquitectura full-stack, cloud native, arquitectura de soluciones e ingeniería de ventas, y por el historial de commits esto parece casi vibe coded: https://github.com/GiancarloLelli/quantum
Recuperar una clave ECC de 17 bits no tiene nada de difícil por fuerza bruta con una computadora clásica hoy en día
Perfecto
No sé si estoy viendo otra cosa, pero juraría que eso claramente es la
tde quan(tumslop)Esto sí es arte
Está medio asqueroso
También hay otros resultados recientes de dequantized: https://arxiv.org/abs/2604.21908
Si la computadora cuántica fuera la parte clave, al reemplazarla por un RNG no debería salir la respuesta, o por lo menos debería converger más lento. Pero como el resultado sale exactamente igual, toda la lógica real estaba del lado clásico y la QC solo metía ruido
Si el resultado es estadísticamente indistinguible de adivinar, entonces al final parece que solo construyeron una máquina de Rube Goldberg complicada
Los estafadores pueden revivir alguna moneda vieja fallida o crear una nueva, comprar una posición o emitirla, luego agregarle ML-DSA y promocionarla como resistente a lo cuántico para inflar la shitcoin y después descargarla.
En algún momento hasta los inversionistas minoristas menos informados se van a dar cuenta, pero la verdad ni sé a quién le está funcionando esto hoy
Ni siquiera Google ha podido demostrar que su computadora cuántica realmente funcione bien, y hasta sus algoritmos los han debilitado al extremo para llegar a cosas como 17 bits
https://blog.google/innovation-and-ai/technology/research/quantum-echoes-willow-verifiable-quantum-advantage/
Parece que van a terminar tirando cantidades absurdas de dinero en un montón de generadores de números aleatorios de 10 mil millones de dólares que nadie entiende muy bien