Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
quantumslop — Solução quântica para o Problema do Logaritmo Discreto em Curvas Elípticas usando o algoritmo de Shor, implementando múltiplas estratégias de oráculo para recuperar chaves privadas ECC em hardware quântico real. | Kitploit
Ferramentas/GitHubGitHub/yuvadm/quantumslop
ExploraçãoCriptografiaCTFAnálise de BináriosPapers e PesquisaAprendizado e Educação
GitHubyuvadm/quantumslop

quantumslop

Solução quântica para o Problema do Logaritmo Discreto em Curvas Elípticas usando o algoritmo de Shor, implementando múltiplas estratégias de oráculo para recuperar chaves privadas ECC em hardware quântico real.

Ver Repositório
26520há 6 mesesRevisado pelo Kitploit
Site

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

Algoritmo de Shor para ECDLP — Submissão ao Q-Day Prize

Solver quântico para o Problema do Logaritmo Discreto de Curva Elíptica (ECDLP), construído para o Desafio Q-Day Prize pela Project Eleven. O objetivo: recuperar chaves privadas ECC em hardware quântico real usando o algoritmo de Shor.

  • Autor: Giancarlo Lelli
  • Contato: [email protected]
  • LinkedIn: https://www.linkedin.com/in/giancarlolelli
  • Histórico: Líder de tecnologia com mais de 10 anos em software empresarial, arquitetura full-stack e desenvolvimento nativo em nuvem. Formação em ciência da computação com experiência prática em ecossistemas .NET, Python, Rust e Cloud. Atualmente atuando como Especialista GTM em Nuvem, focado em arquitetura de soluções e engenharia de vendas.

Abordagem

Todas as curvas do desafio usam y^2 = x^3 + 7 sobre F_p (a = 0, b = 7), correspondendo à família secp256k1. O solver implementa a variante de dois registradores do algoritmo de Shor para ECDLP:

  1. Preparar os registradores de contagem |j>, |k> em superposição uniforme (Hadamard)
  2. Computar |j>|k>|jG + kQ> via 2t adições de pontos controladas (t = num_qubits_contagem)
  3. Medir o registrador de ponto, colapsando-o para algum elemento de grupo R
  4. Aplicar QFT inversa aos registradores de contagem
  5. Medir j, k e extrair d da relação j + kd = r (mod n)

A chave privada d é recuperada coletando múltiplas amostras (j, k) que satisfazem a mesma relação linear módulo a ordem do grupo n. O solver suporta seis estratégias de oráculo para as adições de pontos controladas, selecionadas automaticamente com base no tamanho da curva ou manualmente via --oracle.

Estratégias de Oráculo

Estratégia 1: Unitário Denso (padrão para n_bits <= 6)

Usada para curvas com ordem de grupo até ~6 bits. Implementada em projecteleven.py.

Cada adição de ponto controlada "add S" é representada como uma matriz de permutação 2^(n+1) x 2^(n+1) aplicada via qc.unitary(). A matriz codifica a ação completa do grupo: o bloco superior esquerdo é identidade (controle=0), o bloco inferior direito permuta os estados base de acordo com o mapa P -> P+S (controle=1).

  • Codificação: Índice de grupo (0..n-1)
  • Memória: O(2^{2n}) por matriz
  • Qubits: 2t + n (dois registradores de contagem + registrador de ponto)
  • Limitação: A decomposição unitária do Qiskit é O(4^n), tornando isso inviável além de ~6 bits

Estratégia 2: Decomposição Eficiente de Permutações (padrão para n_bits > 6)

Usada para curvas maiores. Implementada em quantum_arithmetic.py.

Em vez de construir matrizes densas, cada permutação "add S" é decomposta em ciclos convertidos em transposições. Cada transposição (troca de dois estados base |a> <-> |b>) é implementada com:

  1. Redução CNOT — CNOTs de um bit pivô para todos os outros bits diferentes, reduzindo a diferença multibit para uma diferença de um único bit
  2. X multicontrolado — Uma porta MCX no bit pivô, condicionada a todos os outros bits corresponderem ao padrão alvo
  3. Desfazer CNOTs — Passo reverso 1 para restaurar os bits não pivô

O MCX usa decomposição em cadeia-V com (n-2) qubits ancilla dedicados, resultando em O(n) portas Toffoli por MCX em vez de O(n^2) sem ancillas. Cada adição controlada é construída como um subcircuito isolado e anexada como uma única porta opaca, evitando o crescimento quadrático do DAG no Qiskit.

  • Codificação: Índice de grupo (0..n-1)
  • Memória: O(N) por adição (N = ordem do grupo)
  • Qubits: 2t + n + (n-2) ancillas
  • Portas por adição: O(N * n)

Estratégia 3: Oráculo Quântico Baseado em Coordenadas (--oracle coordinate)

Disponível para curvas de até ~6 bits. Implementada em quantum_oracle.py.

Em vez de codificar pontos como índices de grupo, o registrador quântico mantém as coordenadas reais (x, y) dos elementos de campo em binário mais um sinalizador de identidade. O layout do registrador de ponto é:

  • x_reg: f_bits qubits (f_bits = ceil(log2(p)))
  • y_reg: f_bits qubits
  • id_flag: 1 qubit (1 = ponto no infinito)

Cada "add S" controlada é computada a partir da fórmula de adição de EC sobre todas as codificações de coordenadas válidas, produzindo uma permutação no registrador de coordenadas. Essa permutação é decomposta em ciclos convertidos em transposições usando a mesma infraestrutura de redução CNOT + MCX da Estratégia 2.

  • Codificação: Coordenadas (x, y, id_flag)
  • Qubits: 2t + 2f_bits + 1 + max(0, 2f_bits - 1) ancillas
  • Portas por adição: O(N * f_bits)

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

Estrutura para adição de pontos com escalonamento polinomial. Implementada em quantum_oracle.py e quantum_arithmetic.py.

Usa codificação de coordenadas (mesmo da Estratégia 3) com primitivas aritméticas modulares baseadas em QFT como blocos de construção para adição de pontos totalmente aritmética. O código inclui implementações testadas de:

  • Somador modular Beauregard — baseado em QFT (alvo + constante) mod p com descomputação adequada de ancilla
  • Multiplicação modular quântico-quântico — |a>|b>|0> -> |a>|b>|a*b mod p> via shift-and-add com duplicação modular explícita, O(n^3) portas
  • Permutação de inverso modular — |x> -> |x^{-1} mod p> via transposições de tabela de consulta
  • Adição modular quântico-quântico controlada — |a> controlado -> |a + b mod p> com redução Beauregard

As primitivas aritméticas alcançam escalonamento O(n^3) por adição de ponto vs O(N*n) para a abordagem de permutação. No entanto, as operações baseadas em QFT carregam um fator constante ~150x maior, tornando a abordagem aritmética mais eficiente apenas para curvas acima de ~20 bits de ordem de grupo. Para os tamanhos atuais do desafio (até 12 bits), o somador baseado em permutação permanece mais rápido e é usado por padrão.

Estratégia 5: Estimativa de Fase Semiclássica do Google (--oracle google)

Implementada em google_semiclassical.py. Inspirada na técnica de estimativa de fase com reciclagem de qubits de Griffiths & Niu (1996), aplicada em escala por Babbush et al. (2026) para estimativas de recursos do secp256k1 ECDLP. O artigo de Babbush et al. foi publicado em 30 de março de 2026.

Substitui os dois registradores de contagem multiqubit (j, k) e a QFT inversa em massa por dois qubits reciclados únicos e correções de fase condicionadas classicamente. Cada bit do registrador de contagem é processado sequencialmente: preparar em |+>, aplicar adição de ponto controlada, corrigir fase com base em todos os bits medidos anteriormente, então medir. Os primitivos de circuito dinâmico reset + if_test no Qiskit permitem isso em hardware IBM Quantum.

O oráculo para adições de pontos controladas é delegado à infraestrutura existente (unitário denso para <= 6 bits, permutação eficiente para > 6 bits), então a economia de qubits vem inteiramente da eliminação dos registradores de contagem.

Tamanho da curvaQubits padrãoQubits semiclássicosEconomiaVerificado em hardware
4-bit (n=7)11555%Sim
6-bit (n=31)17759%Sim
7-bit (n=79)26 + anc1446%Sim
8-bit (n=139)25 + anc10 + anc60%Não (sobrecarga de sincronização QPU)
10-bit (n=547)31 + anc12 + anc61%Não (sobrecarga de sincronização QPU)
  • Codificação: Mesma da estratégia subjacente (índice de grupo)
  • Qubits: 2 + n_bits + ancillas (vs 2t + n_bits + ancillas)
  • Compensação: Requer circuitos dinâmicos (medição no meio do circuito, reset, portas condicionadas classicamente). Funciona em IBM Heron r2 até 7 bits; em 8 bits ou mais, a sobrecarga de sincronização de feedback clássico excede o orçamento de tempo da QPU

Estratégia 6: Adição Modular Ripple-Carry (--oracle ripple)

Baixar ferramenta