¿Qué es la Prueba de conocimiento cero (ZKP — Zero-Knowledge Proof) en la blockchain?
La transparencia de las blockchains públicas constituye la mayor parte de su éxito. Sin embargo, ¿cómo mantener la transparencia y garantizar la privacidad al mismo tiempo? Es posible gracias al método de Prueba de conocimiento cero (ZKP — zero-knowledge proof), cada vez más utilizado en las blockchains públicas.
La Prueba de conocimiento cero (ZKP) es un método que permite comprobar la exactitud de una declaración sin revelar información adicional sobre el propio mensaje. El concepto de prueba ZK fue introducido por primera vez en 1985 por los investigadores Shafi Goldwasser, Silvio Micali y Charles Rakoff, y desde entonces se ha desarrollado y aplicado en varios proyectos de criptografía y tecnología blockchain.
En el marco del protocolo, el probador demuestra la validez de la declaración al verificador sin proporcionar ningún dato adicional. Las tres características principales de la Prueba ZK son la integridad, la precisión y el conocimiento cero.
- La exhaustividad se refiere a la capacidad de la prueba para garantizar que el enunciado de la prueba es verdadero.
- La solidez se refiere a la capacidad de la prueba para garantizar que una declaración verificable es exacta y no ha sido manipulada.
- El conocimiento-cero se refiere a la capacidad de la prueba de no revelar ninguna información adicional sobre la afirmación sometida a prueba.
Existen dos tipos principales de pruebas de conocimiento-cero: interactivas y no interactivas.
Las pruebas interactivas implican interacciones repetitivas entre el probador y el verificador. El verificador le “exige” al probador que demuestre repetidamente su conocimiento del hecho. El proceso se repite hasta que el verificador esté seguro de que el verificador no miente.
La prueba no interactiva implica que ambas partes no necesitan comunicarse y que la autenticidad de la declaración puede probarse a posteriori.
Los ejemplos más famosos de pruebas ZK son las zk-SNARK y las zk-STARK.
Un excelente ejemplo de la aplicación con éxito de la Prueba ZK es la criptomoneda Zcash, que utiliza zk-SNARK para garantizar la confidencialidad y el anonimato de las transacciones. Otro proyecto que utiliza la prueba ZK es la bolsa de derivados descentralizada dYdX. El proyecto utiliza zk-STARK para ejecutar contratos inteligentes.
El cofundador de Ethereum, Vitalik Buterin, calificó la prueba ZK como “la tecnología más importante” para escalar las plataformas de blockchain.
¿Cómo funciona la prueba de conocimiento-cero en la blockchain? En términos sencillos
Imaginemos que dos partes desean intercambiar información. Una parte debe confirmar la integridad de la declaración de la otra sin saber lo suficiente sobre ella. En este caso, es necesario desarrollar la mecánica de algunas acciones para que la primera parte pueda probar la declaración. De esta forma, la segunda parte (el verificador) podrá confirmar su autenticidad.
Para ilustrar cómo funciona la ZKP, imaginemos una situación. Tú y tu amigo estáis en la entrada de la casa. Al entrar en ella verás un pasillo a la izquierda (A) y otro a la derecha (B). El camino que elijas es opcional, pero debes recordar que estos pasillos están conectados en un punto por una puerta con cerradura. Sólo tú tienes la contraseña secreta de la puerta, pero un amigo lo pone en duda. Tu tarea consiste en demostrar que posees el código secreto sin nombrarlo. Para realizar la tarea, tu amigo entra en casa en el momento en que tú ya estás en la puerta. Él te llama y tienes que volver a él por el pasillo: ya sea el pasillo A o el pasillo B. O podràs volver por el mismo pasillo por el que llegaste a la puerta o bien abres la cerradura con el código secreto y entras en el pasillo deseado. Al repetir el experimento varias veces, confirmarás la veracidad de tu afirmación sin aportar datos reales, es decir, el código secreto de la puerta.
¿Cuáles son los pros y los contras de las pruebas de conocimiento-cero?
Las ventajas de las pruebas de conocimiento-cero son:
- Confidencialidad. Una de las principales ventajas de la Prueba ZK es su capacidad para preservar la privacidad de los datos que se verifican. Ésta verifica la integridad y exactitud de la información sin revelar información adicional sobre la propia declaración.
- Concisión. Las pruebas del método son rápidas de crear, lo que significa que el proceso de verificación no debería requerir mucho tiempo.
- No interactividad. Las pruebas ZK no son interactivas, lo que significa que el probador no necesita comunicarse con el verificador durante el proceso de verificación.
- Verificación. Las pruebas ZK son verificables, lo que significa que cualquiera puede comprobar las pruebas y confirmar su validez sin necesidad de información adicional.
- Compatibilidad con contratos inteligentes. La prueba ZK puede utilizarse para crear contratos inteligentes que sean privados y verificables.
Los inconvenientes de las pruebas de conocimiento-cero son:
- Complejidad. La creación y aplicación de la prueba ZK puede ser compleja y requerir un alto nivel de conocimientos matemáticos y recursos informáticos.
- Generación fuera de la cadena. Las pruebas ZK se generan fuera de la cadena, lo que significa que existe el riesgo de que actores maliciosos creen pruebas falsas.
- Aplicabilidad limitada. La prueba ZK no es adecuada para todos los tipos de datos o casos de uso. Funciona mejor con tipos específicos de problemas o datos.
- Escalabilidad limitada. La prueba ZK puede requerir muchos cálculos y no ser adecuada para grandes conjuntos de datos.
- Requiere confianza en la configuración. La prueba ZK requiere una fase de configuración en la que se genera una cadena de referencia estándar (CRS — Common Reference String). Esta CRS debe mantenerse en secreto. Si la CRS se ve comprometida, la seguridad de todo el sistema puede estar en peligro.
¿Qué es zk-SNARK y zk-STARK?
Zk-SNARK (Zero-knowledge Succinct Non-interactive Argument of Knowledge — Conocimiento cero Argumento sucinto no interactivo del conocimiento) es una ZKP no interactiva que requiere confianza entre el verificador y el probador. La creación de pruebas para transacciones privadas implica un conjunto de parámetros públicos o “reglas” que se escriben en el código del protocolo.
Uno de los ejemplos más claros de zk-SNARK es la criptomoneda Zcash. El proyecto utiliza el protocolo zk-SNARK para garantizar la confidencialidad y el anonimato de las transacciones. Estos últimos se cifran en la red y se validan mediante pruebas de conocimiento cero. Siguiendo las reglas de consenso, los verificadores no necesitan conocer toda la información sobre una transacción para verificarla.
Una alternativa a zk-SNARK es zk-STARK, una versión más rápida y barata de la tecnología. Un rasgo característico de zk-STARK es la ausencia de una estructura fiduciaria. En su lugar, zk-STARK utiliza una criptografía simétrica más sencilla que son funciones hash resistentes a las colisiones. Otro rasgo distintivo de zk-STARK es su velocidad de ejecución. Debido al mismo número de ciclos de comprobación, zk-STARK opera con una menor cantidad de datos, lo que evita una carga excesiva en el sistema y mejora la escalabilidad. Por lo tanto, los zk-STARKs se utilizan en ZK-Rollups, soluciones para las blockchains de segundo nivel (L2).