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-zk-proof-poc — Código de prova de conceito para superar a prova ZK de criptoanálise quântica do Google | Kitploit
Ferramentas/GitHubGitHub/trailofbits/quantum-zk-proof-poc
Análise de VulnerabilidadesExploraçãoEngenharia ReversaCriptografiaPapers e PesquisaAprendizado e Educação
GitHubtrailofbits/quantum-zk-proof-poc

quantum-zk-proof-poc

Código de prova de conceito para superar a prova ZK de criptoanálise quântica do Google

Ver Repositório
15há 4 mesesAinda não revisado

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

PoC para quebrar a prova de conhecimento zero do Google sobre criptoanálise quântica

Este repositório contém recursos para a postagem do blog da Trail of Bits detalhando como vencemos a prova de conhecimento zero do Google de que eles têm um circuito quântico de alta eficiência para criptoanálise de curvas elípticas. Inclui nossa prova forjada, instruções para verificação e código para gerar o circuito quântico que explora vulnerabilidades no código não corrigido do simulador zkVM.

O binário completo da prova está aqui, e os resultados comparando as provas do Google com as nossas estão abaixo.

Tipo de RecursoLow-Gate do GoogleLow-Qubit do GoogleNossa Prova
Operações Totais17,000,00017,000,0008,300,000
Número de Qubits1,4251,1751,164
Contagem de Toffoli2,100,0002,700,0000

Um resumo da prova é o seguinte.

Hash SHA-256 do Circuito: 0x7efe1f62bb14a978322ab9ed41d670fc0fe0f211331032615c910df5a540e999

Bytes da Prova Groth16: 0x0e78f4db0000000000000000000000000000000000000000000000000000000000000000008cd56e10c2fe24795cff1e1d1f40d3a324528d315674da45d26afb376e8670000000000000000000000000000000000000000000000000000000000000000024ac7f8dd6b1de6279bcce54e8840d8eb20d522bf27dedd776046f6590f33add217db465201c63724e6b460641985543d2b79c3c54daeea688581676a786aafc1dba8604a361acdd9809e268b6d8bc73943a713bb0ed0d96221f73d26def6ea4041d05b077523d9351a48b2ecd984c686b6473df69d20a24296d0a1cba3cdbe92eb13a7cc0ecd92f27f7bf23f9ac859d4293e17216dcbd85d1c7f60a52f65a9d02faef077336acd39e845d534200b575b029d6e3f0afb4f90815557233eab70b0fe88919834dd9beb90d47241f1490dc202e0dce44e4894982b07073c8d4426513732d79e9af9913b254aa29471e1a98fa1b43a1886afb5dbd36988153217aa2

Chave de Verificação: 0x00ca4af6cb15dbd83ec3eaab3a0664023828d90a98e650d2d340712f5f3eb0d4

Etapas de Verificação

O Google forneceu scripts para verificar suas provas ZK em um conjunto de dados do Zenodo. Nosso ataque visa a versão 1, e a versão 2 contém correções. As instruções para instalar as dependências estão em docs/getting_started.md. O ambiente requer Rust, Go e, opcionalmente, Docker. Os comandos para verificação são fornecidos no final de run_proofs.sh. Os artefatos de prova do Google estão no diretório proofs/, e nosso artefato de prova está em proof_trailofbits.bin.

root@kitploit:~
# Verify Google's proofs
cargo run --release -p verifier -- \
    --vkey proofs/vkey.bin --proof proofs/low_toffoli/proof_9024.bin
cargo run --release -p verifier -- \
    --vkey proofs/vkey.bin --proof proofs/low_qubits/proof_9024.bin
# Verify our proof
cargo run --release -p verifier -- \
    --vkey proofs/vkey.bin --proof proof_trailofbits.bin

A saída do último comando inclui o seguinte.

root@kitploit:~
Successfully verified Groth16 SNARK proof.
Circuit hash commitment: 0x7efe1f62bb14a978322ab9ed41d670fc0fe0f211331032615c910df5a540e999
Demanded Number of tests: 9024
Demanded Qubit count: 1164
Demanded Average non-Clifford count: 0
Demanded Total ops: 8300000

Os comandos de verificação conferem as provas ZK contra a chave de verificação, que é uma representação criptográfica concisa do programa convidado (guest program) da zkVM. Alternativamente, você pode usar --elf proofs/zkp_ecc-program para fornecer ao verificador o binário ELF do programa convidado. Se você omitir essa flag por completo, o verificador usa um contêiner Docker para recompilar o binário do programa convidado a partir do código-fonte em program/.

Etapas do Exploit

Executar gen_secp256k1_tob.py gera um script kickmix de 142MB chamado ec_secp256k1_add_into.kmx. Para obter a prova de 0-Toffoli, use prove.rs.diff para aplicar um patch em prover/prove.rs no repositório do Zenodo. Isso modifica código não confiável executado fora da zkVM para manipular a serialização do circuito kickmix.

As instruções para geração de prova estão no repositório do Zenodo. Seguimos as instruções em docs/sp1_cluster_deployment_guide.md em uma máquina em nuvem com 4 GPUs NVIDIA H100 e executamos o seguinte comando para gerar a prova.

root@kitploit:~
./run_proofs.sh --num-tests 9024 --kmx "ec_secp256k1_add_into.kmx" --qubit-counts 1164 --toffoli-counts 0 --total-ops 8300000 --proving-mode "multi-gpu" > proofs/ec_secp256k1_add/log_run.out 2>&1 &

A prova forjada levou aproximadamente 4 horas para ser gerada.

Baixar ferramenta