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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
quantum — Este repositório contém o código e os detalhes de submissão para o desafio do prêmio QDay por https://www.projecteleven.com/ | Kitploit
Ferramentas/GitHubGitHub/giancarlolelli/quantum
ExploraçãoCriptografiaSegurança de HardwarePapers e PesquisaAprendizado e EducaçãoExploração de Binários
GitHubgiancarlolelli/quantum

quantum

Este repositório contém o código e os detalhes de submissão para o desafio do prêmio QDay por https://www.projecteleven.com/

Ver Repositório
352012há 5 mesesRevisado pelo Kitploit

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

Solucionador quântico para o Problema do Logaritmo Discreto em Curvas Elípticas (ECDLP), desenvolvido para o Q-Day Prize Challenge 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 cloud-native. Formação em ciência da computação com experiência prática em ecossistemas .NET, Python, Rust e Cloud. Atualmente trabalhando como Especialista Cloud GTM 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), coincidindo com a família secp256k1. O solucionador implementa a variante de dois registros do algoritmo de Shor para ECDLP:

  1. Preparar os registros de contagem |j>, |k> em superposição uniforme (Hadamard)
  2. Calcular |j>|k>|jG + kQ> via 2t adições de pontos controladas (t = num_counting qubits)
  3. Medir o registro do ponto, colapsando-o em algum elemento de grupo R
  4. Aplicar a QFT inversa nos registros 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 solucionador 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 de 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 é a identidade (controle=0), o bloco inferior direito permuta os estados base de acordo com o mapa P -> P+S (controle=1).

  • Codificação: Índice do grupo (0..n-1)
  • Memória: O(2^{2n}) por matriz
  • Qubits: 2t + n (dois registros de contagem + registro 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 transposições a partir de sua estrutura de ciclos. 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 de múltiplos bits a 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 portas Toffoli O(n) 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 do 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 registro quântico mantém as coordenadas reais (x, y) dos elementos de campo em binário mais uma flag de identidade. O layout do registro 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 curvas elípticas sobre todas as codificações de coordenadas válidas, produzindo uma permutação no registro de coordenadas. Essa permutação é decomposta 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 por coordenadas (mesmo da Estratégia 3) com primitivas de aritmética modular baseadas em QFT como blocos de construção para uma adição de pontos totalmente aritmética. O código inclui implementações testadas de:

  • Somador modular de 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, portas O(n^3)
  • Permutação de inversão 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 de Beauregard

As primitivas aritméticas alcançam escalonamento O(n^3) por adição de ponto versus 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 de desafio (até 12 bits), o somador baseado em permutação permanece mais rápido e é usado por padrão.

Estratégia 5: Estimação de Fase Semiclássica do Google (--oracle google)

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

Substitui os dois registros de contagem multi-qubit (j, k) e a QFT inversa em massa por dois qubits reciclados únicos e correções de fase condicionadas classicamente. Cada bit do registro de contagem é processado sequencialmente: preparar em |+>, aplicar adição de ponto controlada, corrigir a fase com base em todos os bits previamente medidos e então medir. Os primitivos de circuitos dinâmicos reset + if_test no Qiskit permitem isso no 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), portanto a economia de qubits vem inteiramente da eliminação dos registros de contagem.

Tamanho da curvaQubits padrãoQubits semiclássicosEconomiaVerificado em hardware
4 bits (n=7)11555%Sim
6 bits (n=31)17759%Sim
7 bits (n=79)26 + anc1446%Sim
8 bits (n=139)25 + anc10 + anc60%Não (overhead de sincronização QPU)
10 bits (n=547)31 + anc12 + anc61%Não (overhead de sincronização QPU)
Baixar ferramenta