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-zk-proof-poc — Código de prueba de concepto para superar la prueba ZK de Google de criptoanálisis cuántico | Kitploit
Herramientas/GitHubGitHub/trailofbits/quantum-zk-proof-poc
Análisis de VulnerabilidadesExplotaciónIngeniería InversaCriptografíaPapers e InvestigaciónAprendizaje y Educación
GitHubtrailofbits/quantum-zk-proof-poc

quantum-zk-proof-poc

Código de prueba de concepto para superar la prueba ZK de Google de criptoanálisis cuántico

Ver Repositorio
15hace 4 mesesAún no revisado

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

PoC para romper la prueba de conocimiento cero de criptoanálisis cuántico de Google

Este repositorio contiene recursos para la publicación del blog de Trail of Bits que detalla cómo superamos la prueba de conocimiento cero de Google de que tienen un circuito cuántico de alta eficiencia para el criptoanálisis de curvas elípticas. Incluye nuestra prueba forjada, instrucciones para la verificación y código para generar el circuito cuántico que explota vulnerabilidades en el código del simulador zkVM sin parchear.

El binario completo de la prueba está aquí, y los resultados que comparan las pruebas de Google con las nuestras se muestran a continuación.

Tipo de recursoPuerta baja de GoogleQubit bajo de GoogleNuestra prueba
Operaciones totales17,000,00017,000,0008,300,000
Número de qubits1,4251,1751,164
Recuento de Toffoli2,100,0002,700,0000

Un resumen de la prueba es el siguiente.

Hash SHA-256 del circuito: 0x7efe1f62bb14a978322ab9ed41d670fc0fe0f211331032615c910df5a540e999

Bytes de la prueba Groth16: 0x0e78f4db0000000000000000000000000000000000000000000000000000000000000000008cd56e10c2fe24795cff1e1d1f40d3a324528d315674da45d26afb376e8670000000000000000000000000000000000000000000000000000000000000000024ac7f8dd6b1de6279bcce54e8840d8eb20d522bf27dedd776046f6590f33add217db465201c63724e6b460641985543d2b79c3c54daeea688581676a786aafc1dba8604a361acdd9809e268b6d8bc73943a713bb0ed0d96221f73d26def6ea4041d05b077523d9351a48b2ecd984c686b6473df69d20a24296d0a1cba3cdbe92eb13a7cc0ecd92f27f7bf23f9ac859d4293e17216dcbd85d1c7f60a52f65a9d02faef077336acd39e845d534200b575b029d6e3f0afb4f90815557233eab70b0fe88919834dd9beb90d47241f1490dc202e0dce44e4894982b07073c8d4426513732d79e9af9913b254aa29471e1a98fa1b43a1886afb5dbd36988153217aa2

Clave de verificación: 0x00ca4af6cb15dbd83ec3eaab3a0664023828d90a98e650d2d340712f5f3eb0d4

Pasos de verificación

Google proporcionó scripts para verificar sus pruebas ZK en un conjunto de datos de Zenodo. Nuestro ataque apunta a la versión 1, y la versión 2 contiene parches. Las instrucciones para instalar las dependencias están en docs/getting_started.md. El entorno requiere Rust, Go y, opcionalmente, Docker. Los comandos para la verificación se proporcionan al final de run_proofs.sh. Los artefactos de prueba de Google están en el directorio proofs/, y nuestro artefacto de prueba está en proof_trailofbits.bin.

root@kitploit:~
# Verificar las pruebas de Google
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
# Verificar nuestra prueba
cargo run --release -p verifier -- \
    --vkey proofs/vkey.bin --proof proof_trailofbits.bin

La salida del último comando incluye lo siguiente.

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

Los comandos de verificación comprueban las pruebas ZK contra la clave de verificación, que es una representación criptográfica concisa del programa invitado de la zkVM. Alternativamente, puedes usar --elf proofs/zkp_ecc-program para proporcionar al verificador el binario ELF del programa invitado. Si omites esta bandera por completo, el verificador usa un contenedor Docker para reconstruir el binario del programa invitado a partir del código fuente en program/.

Pasos del exploit

Ejecutar gen_secp256k1_tob.py genera un script kickmix de 142 MB llamado ec_secp256k1_add_into.kmx. Para lograr la prueba de 0 Toffoli, usa prove.rs.diff para parchear prover/prove.rs en el repositorio de Zenodo. Esto modifica código no confiable que se ejecuta fuera de la zkVM para manipular la serialización del circuito kickmix.

Las instrucciones de generación de pruebas están en el repositorio de Zenodo. Seguimos las instrucciones en docs/sp1_cluster_deployment_guide.md en una máquina en la nube con 4 GPU NVIDIA H100 y ejecutamos el siguiente comando para generar la prueba.

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 &

La prueba forjada tardó aproximadamente 4 horas en generarse.

Descargar herramienta