Introducción
Una prueba de conocimiento cero (Zero‑Knowledge Proof, ZKP) es un protocolo criptográfico mediante el cual un verificador puede quedar convencido de que una afirmación es verdadera sin recibir ninguna información adicional que le permita recrear la prueba ni extraer datos ocultos. En el contexto de la criptografía avanzada, las ZKP se distinguen por sus tres propiedades formales: completitud, solidez y cero‑conocimiento. Por ejemplo, el protocolo de zk‑SNARK usado en Zcash permite demostrar que una transacción es válida sin revelar ni el remitente, ni el receptor, ni el monto, manteniendo la cadena de bloques pública íntegra.
工作原理/How it works
Los ZKP modernos se construyen sobre pares de funciones bilineales o sobre circuitos aritméticos que describen la relación a probar. El prover codifica el circuito (por ejemplo, una multiplicación de 256‑bit) y genera un witness (datos auxiliares) que satisface la ecuación; a continuación, mediante un algoritmo de *commitment* y un desafío aleatorio del verificador, produce una prueba que ocupa típicamente entre 200 y 400 bytes. La verificación consiste en una única operación de emparejamiento que tarda menos de 0,2 ms en hardware de consumo, lo que permite validar millones de pruebas al día sin sobrecargar la red.
常见用例/Common use cases
- Privacidad de transacciones: Zcash emplea zk‑SNARKs para crear “shielded transactions” cuyo tamaño ronda los 2 KB y que pueden ser verificadas por cualquier nodo sin revelar los valores involucrados.
- Identidad auto‑soberana: protocolos como zk‑ID permiten a un usuario demostrar que posee al menos 18 años usando una prueba de 300 bytes, sin exponer su fecha de nacimiento completa.
- Escalado de capa‑2: los rollups zk‑Rollup agrupan miles de transferencias en una única prueba de menos de 1 KB, reduciendo el coste de gas en Ethereum en más del 90 % respecto a los métodos basados en pruebas de fraude.
常见误解/Pitfalls
- “Cero‑conocimiento = sin seguridad”: la solidez de una ZKP depende de supuestos matemáticos (p‑adic hardness, conocimiento de exponentes) y de un *setup* confiable; un *trusted setup* comprometido puede permitir la generación de pruebas falsas.
- Coste de generación: crear una prueba zk‑SNARK para un circuito de 10 mil puertas aritméticas puede requerir varios segundos en una CPU de gama media, lo que limita su uso en dispositivos con recursos restringidos.
- Errores de sonido: aunque la probabilidad de aceptación de una prueba falsa es típicamente < 2⁻⁸⁰, ciertos esquemas de ZKP de tipo *interactive* pueden presentar vulnerabilidades si el desafío no es verdaderamente aleatorio.
FAQ
Q1: ¿Cuál es la diferencia práctica entre zk‑SNARK y zk‑STARK?
A1: zk‑SNARK necesita un *trusted setup* y produce pruebas de ≈ 300 bytes con verificaciones sub‑milisegundo; zk‑STARK elimina ese setup y usa pruebas más grandes (≈ 10 KB) pero con verificaciones igualmente rápidas y resistencia a la criptografía cuántica.
Q2: ¿Puedo usar ZKP para proteger datos fuera de una blockchain?
A2: Sí. Empresas de fintech están integrando ZKP en protocolos de auditoría para demostrar que sus balances cumplen regulaciones sin exponer los detalles de cada cuenta, usando pruebas de menos de 1 KB que se envían por API segura.
**Q3: ¿Qué ocurre si el *setup* confiable se ve comprometido?**
A3: Un atacante que controla el *toxic waste* generado durante el *setup* puede crear pruebas falsas que el verificador aceptará como válidas, lo que anula la garantía de solidez; por eso se prefieren esquemas con *setup* verificable o sin *setup* (p. ej., zk‑STARK).