Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
quantumslop — Solucionador cuántico para el Problema del Logaritmo Discreto en Curva Elíptica utilizando el algoritmo de Shor, implementando múltiples estrategias de oráculo para recuperar claves privadas ECC en hardware cuántico real. | Kitploit
Herramientas/GitHubGitHub/yuvadm/quantumslop
ExplotaciónCriptografíaCTFAnálisis de BinariosPapers e InvestigaciónAprendizaje y Educación
GitHubyuvadm/quantumslop

quantumslop

Solucionador cuántico para el Problema del Logaritmo Discreto en Curva Elíptica utilizando el algoritmo de Shor, implementando múltiples estrategias de oráculo para recuperar claves privadas ECC en hardware cuántico real.

Ver Repositorio
26513hace 5 mesesRevisado por Kitploit
Sitio web

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Algoritmo de Shor para ECDLP — Envío para el Q-Day Prize

Solucionador cuántico para el Problema del Logaritmo Discreto de Curva Elíptica (ECDLP), construido para el Q-Day Prize Challenge por Project Eleven. El objetivo: recuperar claves privadas ECC en hardware cuántico real usando el algoritmo de Shor.

  • Autor: Giancarlo Lelli
  • Contacto: [email protected]
  • LinkedIn: https://www.linkedin.com/in/giancarlolelli
  • Antecedentes: Líder tecnológico con más de 10 años en software empresarial, arquitectura full-stack y desarrollo nativo en la nube. Formación en ciencias de la computación con experiencia práctica en los ecosistemas .NET, Python, Rust y Cloud. Actualmente trabaja como Especialista GTM en la nube, centrado en arquitectura de soluciones e ingeniería de ventas.

Enfoque

Todas las curvas del desafío usan y^2 = x^3 + 7 sobre F_p (a = 0, b = 7), coincidiendo con la familia secp256k1. El solucionador implementa la variante de dos registros del algoritmo de Shor para ECDLP:

  1. Preparar los registros de conteo |j>, |k> en superposición uniforme (Hadamard)
  2. Calcular |j>|k>|jG + kQ> mediante 2t sumas de puntos controladas (t = qubits de conteo)
  3. Medir el registro del punto, colapsándolo a algún elemento de grupo R
  4. Aplicar QFT inverso a los registros de conteo
  5. Medir j, k y extraer d de la relación j + kd = r (mod n)

La clave privada d se recupera recolectando múltiples muestras (j, k) que satisfacen la misma relación lineal módulo el orden del grupo n. El solucionador admite seis estrategias de oráculo para las sumas de puntos controladas, seleccionadas automáticamente según el tamaño de la curva o manualmente mediante --oracle.

Estrategias de Oráculo

Estrategia 1: Unitaria Densa (predeterminada para n_bits <= 6)

Usada para curvas con orden de grupo hasta ~6 bits. Implementada en projecteleven.py.

Cada suma de puntos controlada "añadir S" se representa como una matriz de permutación de 2^(n+1) x 2^(n+1) aplicada mediante qc.unitary(). La matriz codifica la acción completa del grupo: el bloque superior izquierdo es identidad (control=0), el bloque inferior derecho permuta los estados base según el mapa P -> P+S (control=1).

  • Codificación: Índice de grupo (0..n-1)
  • Memoria: O(2^{2n}) por matriz
  • Qubits: 2t + n (dos registros de conteo + registro del punto)
  • Limitación: La descomposición unitaria de Qiskit es O(4^n), lo que la hace inviable más allá de ~6 bits

Estrategia 2: Descomposición Eficiente de Permutaciones (predeterminada para n_bits > 6)

Usada para curvas más grandes. Implementada en quantum_arithmetic.py.

En lugar de construir matrices densas, cada permutación "añadir S" se descompone en ciclos como transposiciones. Cada transposición (intercambio de dos estados base |a> <-> |b>) se implementa con:

  1. Reducción CNOT -- CNOTs desde un bit pivote a todos los otros bits que difieren, reduciendo la diferencia de múltiples bits a una diferencia de un solo bit
  2. X multicontrolada -- Una puerta MCX sobre el bit pivote, condicionada a que todos los otros bits coincidan con el patrón objetivo
  3. Deshacer CNOTs -- Invertir el paso 1 para restaurar los bits no pivote

La MCX usa descomposición en cadena-V con (n-2) qubits ancilla dedicados, dando O(n) puertas Toffoli por MCX en lugar de O(n^2) sin ancillas. Cada suma controlada se construye como un subcircuito aislado y se añade como una única puerta opaca, evitando el crecimiento cuadrático del DAG en Qiskit.

  • Codificación: Índice de grupo (0..n-1)
  • Memoria: O(N) por suma (N = orden del grupo)
  • Qubits: 2t + n + (n-2) ancillas
  • Puertas por suma: O(N * n)

Estrategia 3: Oráculo Cuántico Basado en Coordenadas (--oracle coordinate)

Disponible para curvas de hasta ~6 bits. Implementada en quantum_oracle.py.

En lugar de codificar puntos como índices de grupo, el registro cuántico contiene las coordenadas (x, y) de elementos de campo en binario más un indicador de identidad. La disposición del registro del punto es:

  • x_reg: f_bits qubits (f_bits = ceil(log2(p)))
  • y_reg: f_bits qubits
  • id_flag: 1 qubit (1 = punto en el infinito)

Cada suma controlada "añadir S" se calcula a partir de la fórmula de suma de EC sobre todas las codificaciones de coordenadas válidas, produciendo una permutación en el registro de coordenadas. Esta permutación se descompone en ciclos como transposiciones usando la misma infraestructura de reducción CNOT + MCX que la Estrategia 2.

  • Codificación: Coordenadas (x, y, id_flag)
  • Qubits: 2t + 2f_bits + 1 + max(0, 2f_bits - 1) ancillas
  • Puertas por suma: O(N * f_bits)

Estrategia 4: Oráculo Aritmético (--oracle arithmetic)

Marco para suma de puntos con escalado polinómico. Implementada en quantum_oracle.py y quantum_arithmetic.py.

Usa codificación de coordenadas (igual que la Estrategia 3) con primitivas aritméticas modulares basadas en QFT como componentes para la suma de puntos completamente aritmética. El código incluye implementaciones probadas de:

  • Sumador modular de Beauregard -- basado en QFT (objetivo + constante) mod p con descomputación de ancilla adecuada
  • Multiplicación modular cuántico-cuántico -- |a>|b>|0> -> |a>|b>|a*b mod p> mediante desplazar-y-sumar con duplicación modular explícita, O(n^3) puertas
  • Permutación inversa modular -- |x> -> |x^{-1} mod p> mediante transposiciones de tabla de búsqueda
  • Suma modular cuántico-cuántico controlada -- |a> controlado -> |a + b mod p> con reducción de Beauregard

Las primitivas aritméticas logran un escalado O(n^3) por suma de puntos frente a O(N*n) para el enfoque de permutación. Sin embargo, las operaciones basadas en QFT tienen un factor constante ~150 veces mayor, lo que hace que el enfoque aritmético sea más eficiente solo para curvas con orden de grupo superior a ~20 bits. Para los tamaños de desafío actuales (hasta 12 bits), el sumador basado en permutaciones sigue siendo más rápido y se usa por defecto.

Estrategia 5: Estimación de Fase Semiclásica de Google (--oracle google)

Implementada en google_semiclassical.py. Inspirada en la técnica de estimación de fase con reciclaje de qubits de Griffiths & Niu (1996), aplicada a escala en Babbush et al. (2026) para estimaciones de recursos ECDLP en secp256k1. El artículo de Babbush et al. se publicó el 30 de marzo de 2026.

Reemplaza los dos registros de conteo multiqubit (j, k) y el QFT inverso masivo con dos qubits reciclados individuales y correcciones de fase condicionadas clásicamente. Cada bit del registro de conteo se procesa secuencialmente: preparar en |+>, aplicar suma de puntos controlada, corregir fase basándose en todos los bits medidos previamente, luego medir. Las primitivas de circuito dinámico reset e if_test en Qiskit permiten esto en hardware IBM Quantum.

El oráculo para sumas de puntos controladas se delega en la infraestructura existente (unitaria densa para <= 6 bits, permutación eficiente para > 6 bits), por lo que el ahorro de qubits proviene únicamente de eliminar los registros de conteo.

Tamaño de curvaQubits estándarQubits semiclásicosAhorroVerificado en hardware
4 bits (n=7)11555%Sí
6 bits (n=31)17759%Sí
7 bits (n=79)26 + anc1446%Sí
8 bits (n=139)25 + anc10 + anc60%No (sobrecarga de sincronización QPU)
10 bits (n=547)31 + anc12 + anc61%No (sobrecarga de sincronización QPU)
Descargar herramienta