Skip to content
KitploitKITPLOIT
HerramientasBlog
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
Quantum-Algorithm-for-Elliptic-Curve-Discrete-Logarithms-with-Space-Efficient-Point-Addition — Marco de estimación de recursos basado en Qiskit para circuitos modulares de inversión y suma de puntos afines eficientes en espacio utilizados en algoritmos de logaritmo discreto en curvas elípticas. | Kitploit
Herramientas/GitHubGitHub/zerowang030221/quantum-algorithm-for-elliptic-curve-discrete-logarithms-with-space-efficient-point-addition
Análisis EstáticoAnálisis de CódigoCriptografíaAnálisis de BinariosPapers e InvestigaciónAprendizaje y Educación
GitHubzerowang030221/quantum-algorithm-for-elliptic-curve-discrete-logarithms-with-space-efficient-point-addition

Quantum-Algorithm-for-Elliptic-Curve-Discrete-Logarithms-with-Space-Efficient-Point-Addition

Marco de estimación de recursos basado en Qiskit para circuitos modulares de inversión y suma de puntos afines eficientes en espacio utilizados en algoritmos de logaritmo discreto en curvas elípticas.

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
Ver Repositorio
143hace 13 díasAún no revisado

Algoritmo Cuántico para Logaritmos Discretos en Curvas Elípticas con Suma de Puntos Eficiente en Espacio

Este repositorio contiene código Qiskit para la estimación de recursos de los circuitos cuánticos de inversión modular eficiente en espacio y suma de puntos afín utilizados en configuraciones de logaritmos discretos en curvas elípticas.

La base de código actual se centra en tres flujos de trabajo:

  1. conteo recursivo por fragmentos del circuito de inversión modular;
  2. optimización opcional local de la plantilla NCT del circuito;
  3. estimación de recursos compilada por bloques del circuito de suma de puntos afín envuelto.

Estructura del repositorio

root@kitploit:~
.
├── README.md
│
├── eea_model/: original classical EEA reference implementation used for algorithm prototyping and correctness validation.
│
├── run_eea_s835_fastdual_recursive_chunks_checkpoint.py
├── run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py
├── count_s835_fastdual_wrapped_point_addition_blocks_compiled.py
│
├── eea_circuit.py
├── eea_circuit_s835_fastdual.py
├── eea_circuit_s835_lowaux.py
├── eea_circuit_updated.py
├── under1000_eea_shared_s835_fastdual_wrapped.py
├── under1000_modular_arithmetic_base.py
│
├── point_addition_fig14_s835_fastdual_wrapped_quadratic.py
├── quadratic_fig15_inplace_s835_fastdual_wrapped.py
├── quadratic_gidney_arithmetic.py
├── quadratic_lazy_instruction.py
├── quadratic_modular_arithmetic.py
├── quadratic_squ_minus.py
│
├── ccx_recursive_block_counter.py
├── nct_template_segment_optimizer.py
│
├── test_eea_strict_main.py
└── test_point_addition_strict_main.py

Scripts de entrada principales

  • run_eea_s835_fastdual_recursive_chunks_checkpoint.py
    Cuenta los pasos del Algoritmo-3 EEA recursivamente, en fragmentos con puntos de control.

  • run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py
    Mismo flujo de trabajo de conteo EEA, pero con optimización local de plantilla NCT.

  • count_s835_fastdual_wrapped_point_addition_blocks_compiled.py
    Cuenta el circuito de suma de puntos envuelto contando recursivamente subbloques compilados reutilizables y ensamblando los componentes aritméticos repetidos con multiplicidades exactas.

Archivos EEA

  • eea_circuit_s835_fastdual.py: Implementación principal del circuito EEA de producción.
  • eea_circuit_s835_lowaux.py: Rutinas auxiliares de baja ayuda utilizadas por la implementación principal.
  • eea_circuit_updated.py: Bloques de construcción EEA compartidos y utilidades recursivas de conteo de recursos.
  • eea_circuit.py: Envoltorio de compatibilidad hacia atrás para pruebas.

Archivos de suma de puntos y aritmética

  • point_addition_fig14_s835_fastdual_wrapped_quadratic.py: construye el circuito de suma de puntos afín envuelto correspondiente al cronograma de la Fig.14.
  • quadratic_fig15_inplace_s835_fastdual_wrapped.py: construye la estructura de división in situ y multiplicación in situ de la Fig.15 con EEA, multiplicación, medición, reinicio y corrección de fase feed-forward.
  • quadratic_modular_arithmetic.py: instrucciones de suma/resta modular, multiplicación, multiplicación inversa, duplicación y reducción a la mitad utilizadas por el contador de suma de puntos.
  • quadratic_gidney_arithmetic.py: primitivas aritméticas estilo Gidney y ayudantes de medición y feed-forward utilizados por la capa aritmética modular cuadrática.
  • quadratic_squ_minus.py: bloque cuadrado-menos utilizado en el cronograma de suma de puntos afín.
  • under1000_eea_shared_s835_fastdual_wrapped.py: envoltorio EEA compartido y ayudante utilizado por el circuito de suma de puntos.
  • under1000_modular_arithmetic_base.py: pequeñas utilidades compartidas de aritmética modular.

Utilidades de conteo y optimización

  • ccx_recursive_block_counter.py: contador recursivo para circuitos Qiskit, con políticas para expansión MCX y expansión SWAP.
  • nct_template_segment_optimizer.py: optimizador local basado en plantillas para segmentos {X, CX, CCX}.

Requisitos

Entorno recomendado:

  • Python 3.10+
  • Qiskit

Instale la dependencia principal con:

root@kitploit:~
python -m pip install --upgrade pip
python -m pip install qiskit

Inicio rápido

Ejecute la suite de pruebas:

root@kitploit:~
python test_eea_strict_main.py
python test_point_addition_strict_main.py

Para una prueba rápida de suma de puntos:

root@kitploit:~
python test_point_addition_strict_main.py --skip-n256 --skip-report

1. Conteo recursivo por fragmentos EEA

El punto de entrada estándar para el conteo EEA es:

root@kitploit:~
python run_eea_s835_fastdual_recursive_chunks_checkpoint.py \
  --n 192 \
  --chunk-size 25 \
  --measurement-uncompute \
  --resume \
  --workdir eea_s835_fastdual_chunks25 \
  --out eea_s835_fastdual_algorithm3_recursive_chunks_n192_measurement.json

Argumentos importantes:

  • --n: ancho de bits.
  • --T-max: anulación opcional del número de pasos del Algoritmo-3; por defecto se usa el valor de eea.get_n_config(n).
  • --chunk-size: número de pasos del Algoritmo-3 contados por fragmento de punto de control.
  • --aux-size: anulación opcional del grupo de qubits auxiliares; si se omite, el tamaño del diseño auxiliar se calcula automáticamente.
  • --measurement-uncompute: habilita la anulación basada en medición en los bloques EEA contados.
  • --resume: reutiliza archivos JSON de fragmentos existentes no vacíos en --workdir.
  • --workdir: directorio para archivos de punto de control por fragmento.
  • --out: resumen JSON acumulativo escrito después de cada fragmento.

El script escribe archivos por fragmento como:

root@kitploit:~
eea_s835_fastdual_chunks25/eea_s835_fastdual_n192_T0001_0025.json

y un JSON de salida acumulativo que contiene campos como:

root@kitploit:~
mode
n
T_max
num_qubits
len_width
shift_width
aux_size
measurement_based
ops
chunks
elapsed_s_so_far

2. Conteo EEA con optimización de plantilla NCT

El punto de entrada para el conteo optimizado es:

root@kitploit:~
python run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py \
  --n 128 \
  --chunk-size 25 \
  --measurement-uncompute \
  --templates small-nct \
  --rounds 1 \
  --max-nct-segment-gates 40 \
  --segment-timeout-s 10 \
  --timeout-mode auto \
  --resume \
  --workdir eea_s835_fastdual_chunks_nctopt_failopen_r1_128_seg40_to10 \
  --out eea_s835_fastdual_algorithm3_recursive_chunks_n128_measurement_nctopt_failopen_r1_seg40_to10.json

Este flujo de trabajo intenta la optimización local de plantillas en segmentos {X, CX, CCX}. Está diseñado como un contador acotado con fallo abierto: si un paso optimizado agota el tiempo o genera una excepción, ese paso se cuenta exactamente sin rondas de plantilla y luego se marca como punto de control, por lo que los recuentos finales informados permanecen completos.

Argumentos útiles además de los argumentos EEA estándar:

  • --templates {small-nct,all-nct}: selección de biblioteca de plantillas.
  • --rounds: número de rondas de optimización de plantillas.
  • --max-nct-segment-gates: tamaño máximo de un segmento reversible enviado a optimización de plantillas.
  • --max-nct-segment-qubits: número máximo de qubits en un segmento.
  • --segment-timeout-s: tiempo de espera para la optimización de un segmento individual.
  • --step-timeout-s: tiempo de espera para un paso completo del Algoritmo-3 antes de retroceder al conteo sin cambios.
  • --fallback-step-timeout-s: tiempo de espera para el conteo de retroceso exacto.
  • --force: recalcula incluso si ya existen puntos de control de paso/fragmento.
  • --ignore-policy-mismatch: reutilizar puntos de control antiguos incluso si la política de optimización difiere; esto es principalmente para depuración.

El flujo de trabajo optimizado escribe puntos de control a nivel de paso en:

root@kitploit:~
<workdir>/steps/

y resúmenes a nivel de fragmento en:

root@kitploit:~
<workdir>/

3. Conteo compilado por bloques de suma de puntos envuelto

El contador de suma de puntos depende de un JSON del Algoritmo-3 EEA producido por uno de los flujos de trabajo EEA anteriores. El valor --n del contador de suma de puntos debe coincidir con el campo n en el JSON EEA.

Ejemplo para n=64:

root@kitploit:~
python run_eea_s835_fastdual_recursive_chunks_checkpoint.py \
  --n 64 \
  --chunk-size 25 \
  --measurement-uncompute \
  --resume \
  --workdir eea_s835_fastdual_chunks25_n64 \
  --out eea_s835_fastdual_algorithm3_recursive_chunks_n64_measurement.json

Luego ejecute:

root@kitploit:~
python count_s835_fastdual_wrapped_point_addition_blocks_compiled.py \
  --n 64 \
  --eea-steps-json eea_s835_fastdual_algorithm3_recursive_chunks_n64_measurement.json \
  --out point_addition_s835_fastdual_wrapped_blocks_compiled_counts_n64.json

Ejemplo para la salida EEA optimizada n=128:

root@kitploit:~
python count_s835_fastdual_wrapped_point_addition_blocks_compiled.py \
  --n 128 \
  --eea-steps-json eea_s835_fastdual_algorithm3_recursive_chunks_n128_measurement_nctopt_failopen_r1_seg40_to10.json \
  --out point_addition_s835_fastdual_wrapped_blocks_compiled_counts_n128.json

Argumentos importantes:

  • --n: ancho de bits.
  • --p: módulo; por defecto el primo secp256k1.
  • --s-qubits: anulación opcional del tamaño del registro aritmético EEA compartido.
  • --point-constant {secp256k1-generator,zero,custom}: selección de constante de punto para las actualizaciones de coordenadas constantes de la Fig.14.
  • --x2, --y2: coordenadas de punto personalizadas; requerido cuando se usa --point-constant custom.
  • --eea-steps-json: archivo JSON que contiene los recuentos recursivos del Algoritmo-3 EEA.
  • --allow-eea-n-mismatch: anulación solo para depuración que permite que el n del JSON EEA difiera del --n solicitado.
  • --mcx-policy {clean-vchain,keep}: política de expansión MCX para conteo recursivo.

El informe de salida incluye:

root@kitploit:~
counting_mode
n
p
point_constant_kind
qiskit_width_report
eea_meta
block_summaries
raw_block_counters
key_ccx
validation
elapsed_s

El contador de suma de puntos construye circuitos Qiskit reutilizables, los cuenta recursivamente en la base {CCX, CX, X}, y luego ensambla bloques repetidos más grandes como multiplicación, multiplicación inversa, división in situ, multiplicación in situ, cuadrado-menos, y el bloque total de suma de puntos de la Fig.14.


Pruebas

Este repositorio incluye dos controladores de prueba simples en Python. Están escritos intencionalmente sin pytest, Aer o simulación completa de vector de estado. Las pruebas expanden recursivamente definiciones de Qiskit donde corresponde y simulan estados de base computacional para bloques de red de Toffoli.

Pruebas estrictas EEA

Las pruebas EEA están en:

root@kitploit:~
test_eea_strict_main.py

Ejecute la suite EEA predeterminada con:

root@kitploit:~
python test_eea_strict_main.py

La suite predeterminada verifica:

  • la implementación no es un atajo de punto final para n pequeño;
  • el cronograma de bloques discontinuos del Algoritmo-3 está presente;
  • fórmulas de ventana activa sobre varios anchos pequeños;
  • bloques de iteración unaria, desplazamiento pre/post, actualización de fase, intercambio controlado por ubicación y actualización de longitud;
  • puntos finales del Algoritmo-3 para los primos predeterminados 3, 5, 7, 11, 13, 17, usando tanto recuentos de pasos exactos como T_max fijo;
  • el envoltorio completo del Algoritmo-1 para los primos predeterminados pequeños 3, 5, 7.

Variantes útiles:

root@kitploit:~
# Solo pruebas estructurales y de bloque rápidas.
python test_eea_strict_main.py --skip-endpoint --skip-alg1

# Incluir la prueba de referencia más pesada de PDF/Table-4 p=37, x=13.
python test_eea_strict_main.py --table4

# Probar todos los valores x para primos mayores de 13 también.
python test_eea_strict_main.py --primes 3 5 7 11 13 17 --mid-all-x --verbose

Pruebas estrictas de suma de puntos

Las pruebas de suma de puntos están en:

root@kitploit:~
test_point_addition_strict_main.py

Ejecute la suite de suma de puntos predeterminada con:

root@kitploit:~
python test_point_addition_strict_main.py

La suite de suma de puntos predeterminada verifica:

  • diseño de registro de suma de puntos envuelto;
  • la identidad de ancho n=256 835 = 1 + 3*256 + 66;
  • orden de operación de alto nivel de Fig.14/Fig.15;
  • estructura explícita de circuito dinámico que involucra operaciones H, measure, reset, Z controlado clásicamente y swap;
  • ensamblaje de subbloques aritméticos compilados para un módulo pequeño;
  • un informe de contador de suma de puntos integrado pequeño usando un JSON sintético del Algoritmo-3, de modo que la ruta del informe se pruebe sin ejecutar un conteo EEA grande.

La matriz de regresión de primos grandes cubre pares representativos del ancho de bits de campo n y módulo primo p, que van desde campos de 12 bits hasta 512 bits. Las instancias probadas incluyen, por ejemplo, n=16, p=65521, n=32, p=4294967291, el primo secp256k1 en n=256, y primos representativos en n=128, 160, 192, 224, 384, 512.

Para cada par (n,p), las pruebas incluyen trazas EEA de límite, simétricas, aleatorias y relativamente largas. El ensamblaje aritmético compilado completo se ejecuta solo para instancias de ancho moderado seleccionadas, mientras que los pares (n,p) más grandes se utilizan para validar la construcción del circuito, el diseño del registro, la programación y las rutas recursivas de conteo de recursos.

Variantes útiles:

root@kitploit:~
# Omitir el informe integrado pequeño y solo verificar construcción/programación/ensamblaje.
python test_point_addition_strict_main.py --skip-report

# Prueba rápida que también omite la verificación de construcción de ancho n=256.
python test_point_addition_strict_main.py --skip-n256 --skip-report

# Usar un primo/ancho pequeño diferente para la validación de bloques compilados.
python test_point_addition_strict_main.py --n 5 --p 17

Si Qiskit no está instalado, test_point_addition_strict_main.py imprime un mensaje de omisión y sale correctamente. La prueba estricta EEA requiere Qiskit porque construye las puertas de bloque EEA/PDF.


Reproducción de las estadísticas principales

Nuestro artículo informa resultados numéricos de estimación de recursos para:

root@kitploit:~
n = 64, 128, 160, 192, 224, 256, 384, 512

Un flujo de trabajo típico es:

  1. ejecute el contador del Algoritmo-3 EEA para un n dado;
  2. opcionalmente ejecute la versión optimizada NCT para el mismo n;
  3. pase el JSON EEA resultante al contador de suma de puntos envuelto;
  4. recoja los campos key_ccx, block_summaries y qiskit_width_report del informe de salida.

Para anchos grandes, use --resume y mantenga los directorios --workdir, ya que los puntos de control de fragmentos y pasos están diseñados para soportar ejecuciones largas interrumpidas.

Cita

Si utiliza esta base de código en su investigación, por favor cite:

root@kitploit:~
@misc{luo2026quantumalgorithmellipticcurve,
      title={Quantum Algorithm for Elliptic Curve Discrete Logarithms with Space-Efficient Point Addition}, 
      author={Han Luo and Ziyi Yang and Jingquan Luo and Ziruo Wang and Yuexin Su and Xiaoming Sun and Lvzhou Li and Tongyang Li},
      year={2026},
      eprint={2607.13816},
      archivePrefix={arXiv},
      primaryClass={quant-ph},
      url={https://arxiv.org/abs/2607.13816}, 
}
Descargar herramienta
  • --validate-full-mul: para n pequeño, cuenta recursivamente las definiciones completas de multiplicación/elevación al cuadrado y las compara con los recuentos de bloques ensamblados.
  • --out: ruta del JSON de salida.