Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Quantum-Algorithm-for-Elliptic-Curve-Discrete-Logarithms-with-Space-Efficient-Point-Addition — Framework de estimativa de recursos baseado em Qiskit para circuitos de inversão modular quântica e adição de pontos afins com eficiência de espaço, usados em algoritmos de logaritmo discreto em curvas elípticas. | Kitploit
Ferramentas/GitHubGitHub/zerowang030221/quantum-algorithm-for-elliptic-curve-discrete-logarithms-with-space-efficient-point-addition
Análise EstáticaAnálise de CódigoCriptografiaAnálise de BináriosPapers e PesquisaAprendizado e Educação
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

Framework de estimativa de recursos baseado em Qiskit para circuitos de inversão modular quântica e adição de pontos afins com eficiência de espaço, usados em algoritmos de logaritmo discreto em curvas elípticas.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
143há 12 diasAinda não revisado

Algoritmo Quântico para Logaritmos Discretos em Curvas Elípticas com Adição de Pontos Eficiente em Espaço

Este repositório contém código Qiskit para estimativa de recursos dos circuitos quânticos de inversão modular eficiente em espaço e adição de pontos afins usados em configurações de logaritmos discretos em curvas elípticas.

O código atual está centrado em três fluxos de trabalho:

  1. contagem recursiva em blocos do circuito de inversão modular;
  2. otimização local opcional de template NCT do circuito;
  3. estimativa de recursos compilada em blocos do circuito de adição de pontos afins encapsulado.

Estrutura do repositório

root@kitploit:~
.
├── README.md
│
├── eea_model/: implementação original clássica de referência do EEA, usada para prototipagem do algoritmo e validação de correção.
│
├── 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 principais

  • run_eea_s835_fastdual_recursive_chunks_checkpoint.py
    Conta os passos do Algoritmo-3 do EEA recursivamente, em blocos com checkpoint.

  • run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py
    Mesmo fluxo de contagem do EEA, mas com otimização local de template NCT.

  • count_s835_fastdual_wrapped_point_addition_blocks_compiled.py
    Conta o circuito de adição de pontos encapsulado contando recursivamente sub-blocos reutilizáveis compilados e montando os componentes aritméticos repetidos com multiplicidades exatas.

Arquivos EEA

  • eea_circuit_s835_fastdual.py: Implementação principal do circuito EEA de produção.
  • eea_circuit_s835_lowaux.py: Rotinas auxiliares de baixo nível usadas pela implementação principal.
  • eea_circuit_updated.py: Blocos de construção EEA compartilhados e utilitários de contagem recursiva de recursos.
  • eea_circuit.py: Encapsulador de compatibilidade reversa para testes.

Arquivos de adição de pontos e aritmética

  • point_addition_fig14_s835_fastdual_wrapped_quadratic.py: constrói o circuito encapsulado de adição de pontos afins correspondente ao cronograma da Fig.14.
  • quadratic_fig15_inplace_s835_fastdual_wrapped.py: constrói a estrutura da Fig.15 de divisão in-place e multiplicação in-place com EEA, multiplicação, medição, reset e correção de fase feed-forward.
  • quadratic_modular_arithmetic.py: instruções de adição/subtração modular, multiplicação, multiplicação inversa, duplicação e redução pela metade usadas pelo contador de adição de pontos.
  • quadratic_gidney_arithmetic.py: primitivas aritméticas estilo Gidney e auxiliares de medição e feed-forward usados pela camada aritmética modular quadrática.
  • quadratic_squ_minus.py: bloco square-minus usado no cronograma de adição de pontos afins.
  • under1000_eea_shared_s835_fastdual_wrapped.py: encapsulador EEA compartilhado e auxiliar usado pelo circuito de adição de pontos.
  • under1000_modular_arithmetic_base.py: pequenos utilitários aritméticos modulares compartilhados.

Utilitários de contagem e otimização

  • ccx_recursive_block_counter.py: contador recursivo para circuitos Qiskit, com políticas para expansão MCX e expansão SWAP.
  • nct_template_segment_optimizer.py: otimizador local baseado em templates para segmentos {X, CX, CCX}.

Requisitos

Ambiente recomendado:

  • Python 3.10+
  • Qiskit

Instale a dependência principal com:

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

Início rápido

Execute o conjunto de testes:

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

Para um teste rápido de adição de pontos:

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

1. Contagem recursiva de blocos EEA

O ponto de entrada padrão para contagem EEA é:

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: largura de bits.
  • --T-max: substituição opcional para o número de passos do Algoritmo-3; por padrão, o valor de eea.get_n_config(n) é usado.
  • --chunk-size: número de passos do Algoritmo-3 contados por bloco de checkpoint.
  • --aux-size: substituição opcional para o pool de qubits auxiliares; se omitido, o tamanho do layout auxiliar é computado automaticamente.
  • --measurement-uncompute: habilita a descomputação baseada em medição nos blocos EEA contados.
  • --resume: reutiliza arquivos JSON de bloco existentes e não vazios em --workdir.
  • --workdir: diretório para arquivos de checkpoint por bloco.
  • --out: resumo JSON cumulativo escrito após cada bloco.

O script escreve arquivos por bloco como:

root@kitploit:~
eea_s835_fastdual_chunks25/eea_s835_fastdual_n192_T0001_0025.json

e um JSON de saída cumulativo contendo 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. Contagem EEA com otimização de template NCT

O ponto de entrada para contagem otimizada é:

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 fluxo tenta otimização local de template em segmentos {X, CX, CCX}. Ele é projetado como um contador fail-open limitado: se um passo otimizado expirar ou gerar uma exceção, esse passo é contado exatamente sem rodadas de template e então checkpointado, de modo que as contagens finais relatadas permanecem completas.

Argumentos úteis além dos argumentos padrão do EEA:

  • --templates {small-nct,all-nct}: seleção da biblioteca de templates.
  • --rounds: número de rodadas de otimização de template.
  • --max-nct-segment-gates: tamanho máximo de um segmento reversível enviado para otimização de template.
  • --max-nct-segment-qubits: número máximo de qubits em um segmento.
  • --segment-timeout-s: tempo limite para otimização de segmento individual.
  • --step-timeout-s: tempo limite para um passo inteiro do Algoritmo-3 antes de recair na contagem inalterada.
  • --fallback-step-timeout-s: tempo limite para a contagem exata de fallback.
  • --force: recalcula mesmo que checkpoints de passo/bloco já existam.
  • --ignore-policy-mismatch: reutiliza checkpoints antigos mesmo quando a política de otimização difere; isso é principalmente para depuração.

O fluxo otimizado escreve checkpoints de nível de passo sob:

root@kitploit:~
<workdir>/steps/

e resumos de nível de bloco sob:

root@kitploit:~
<workdir>/

3. Contagem compilada em blocos de adição de pontos encapsulada

O contador de adição de pontos depende de um JSON do Algoritmo-3 EEA produzido por um dos fluxos EEA acima. O valor --n do contador de adição de pontos deve corresponder ao campo n no JSON EEA.

Exemplo 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

Então execute:

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

Exemplo para a saída EEA otimizada 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: largura de bits.
  • --p: módulo; padrão é o primo secp256k1.
  • --s-qubits: substituição opcional para o tamanho do registo aritmético EEA compartilhado.
  • --point-constant {secp256k1-generator,zero,custom}: seleção de constante de ponto para as atualizações de coordenadas constantes da Fig.14.
  • --x2, --y2: coordenadas de ponto personalizadas; necessário quando --point-constant custom é usado.
  • --eea-steps-json: arquivo JSON contendo contagens recursivas do Algoritmo-3 EEA.
  • --allow-eea-n-mismatch: substituição apenas de depuração permitindo que o n do JSON EEA difira do --n solicitado.
  • --mcx-policy {clean-vchain,keep}: política de expansão MCX para contagem recursiva.

O relatório de saída inclui:

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

O contador de adição de pontos constrói circuitos Qiskit reutilizáveis, conta-os recursivamente na base {CCX, CX, X} e então monta blocos repetidos maiores como multiplicação, multiplicação inversa, divisão in-place, multiplicação in-place, square-minus e o bloco total de adição de pontos da Fig.14.


Testes

Este repositório inclui dois drivers de teste Python simples. Eles foram intencionalmente escritos sem pytest, Aer ou simulação completa de statevector. Os testes expandem recursivamente definições Qiskit quando apropriado e simulam estados de base computacional para blocos de rede de Toffoli.

Testes estritos EEA

Os testes EEA estão em:

root@kitploit:~
test_eea_strict_main.py

Execute o conjunto padrão EEA com:

root@kitploit:~
python test_eea_strict_main.py

O conjunto padrão verifica:

  • a implementação não é um atalho de ponto final para n pequeno;
  • o cronograma de blocos tracejados do Algoritmo-3 está presente;
  • fórmulas de janela ativa em várias larguras pequenas;
  • iteração unária, deslocamento pré/pós, atualização de fase, swap controlado por localização e blocos de atualização de comprimento;
  • pontos finais do Algoritmo-3 para os primos padrão 3, 5, 7, 11, 13, 17, usando contagens exatas de passos e T_max fixo;
  • o encapsulador completo do Algoritmo-1 para primos padrão pequenos 3, 5, 7.

Variantes úteis:

root@kitploit:~
# Apenas testes estruturais e de bloco rápidos.
python test_eea_strict_main.py --skip-endpoint --skip-alg1

# Inclui o benchmark de rastreamento PDF/Tabela-4 p=37, x=13 mais pesado.
python test_eea_strict_main.py --table4

# Testa todos os valores x para primos acima de 13 também.
python test_eea_strict_main.py --primes 3 5 7 11 13 17 --mid-all-x --verbose

Testes estritos de adição de pontos

Os testes de adição de pontos estão em:

root@kitploit:~
test_point_addition_strict_main.py

Execute o conjunto padrão de adição de pontos com:

root@kitploit:~
python test_point_addition_strict_main.py

O conjunto padrão de adição de pontos verifica:

  • layout de registo de adição de pontos encapsulada;
  • a identidade n=256 de largura 835 = 1 + 3*256 + 66;
  • ordem de operação de alto nível Fig.14/Fig.15;
  • estrutura explícita de circuito dinâmico envolvendo operações H, measure, reset, Z controlado classicamente e swap;
  • montagem de subbloco aritmético compilado para um módulo pequeno;
  • um relatório de contador de adição de pontos integrado minúsculo usando um JSON do Algoritmo-3 sintético, para que o caminho do relatório seja testado sem executar uma contagem EEA grande.

A matriz de regressão de primo grande cobre pares representativos da largura de bits do corpo n e do módulo primo p, variando de corpos primos de 12 bits a 512 bits. As instâncias testadas incluem, por exemplo, n=16, p=65521, n=32, p=4294967291, o primo secp256k1 em n=256 e primos representativos em n=128, 160, 192, 224, 384, 512.

Para cada par (n,p), os testes incluem traços EEA de limite, simétricos, aleatórios e relativamente longos. A montagem aritmética compilada completa é executada apenas para instâncias de largura moderada selecionadas, enquanto os pares (n,p) maiores são usados para validar construção de circuito, layout de registo, cronograma e caminhos de contagem recursiva de recursos.

Variantes úteis:

root@kitploit:~
# Ignora o relatório integrado minúsculo e verifica apenas construção/cronograma/montagem.
python test_point_addition_strict_main.py --skip-report

# Teste rápido que também ignora a verificação de construção da largura n=256.
python test_point_addition_strict_main.py --skip-n256 --skip-report

# Usa um primo/largura pequeno diferente para validação de bloco compilado.
python test_point_addition_strict_main.py --n 5 --p 17

Se o Qiskit não estiver instalado, test_point_addition_strict_main.py imprime uma mensagem de ignorar e sai com sucesso. O teste estrito EEA requer Qiskit porque ele constrói os blocos de portas EEA/PDF.


Reproduzindo as estatísticas principais

Nosso artigo relata resultados numéricos de estimativa de recursos para:

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

Um fluxo de trabalho típico é:

  1. execute o contador do Algoritmo-3 EEA para um dado n;
  2. opcionalmente execute a versão otimizada NCT para o mesmo n;
  3. passe o JSON EEA resultante para o contador de adição de pontos encapsulada;
  4. colete os campos key_ccx, block_summaries e qiskit_width_report do relatório de saída.

Para larguras grandes, use --resume e mantenha os diretórios --workdir, pois os checkpoints de bloco e passo são projetados para suportar execuções longas interrompidas.

Citação

Se você usar este código em sua pesquisa, 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}, 
}
Baixar ferramenta
  • --validate-full-mul: para n pequeno, conta recursivamente definições completas de multiplicação/quadrado e as compara com as contagens de blocos montados.
  • --out: caminho do JSON de saída.