La prueba de conocimiento cero o ZKP, es un concepto que está en auge en estos momentos en el sector blockchain, en un momento en el que la privacidad está tomando cada vez más relevancia en el sector, pero ¿Sabemos realmente de qué se trata?
Desde Whispr, os vamos a explicar cómo los protocolos ZKP permiten compartir y verificar la información sin revelar datos innecesarios, manteniendo así un altísimo nivel de seguridad.
Vamos a ello!
La importancia de la privacidad
Antes de nada es necesario aclarar que todos los días hay millones de usuarios que navegan por Internet aceptando “cookies” y compartiendo información confidencial y personal a cambio de poder acceder a servicios digitales de cualquier tipo
Esto hace que millones de usuarios se vean expuestos a la red renunciado a su privacidad para poder hacer uso de las diferentes plataformas. Si no sabes de lo que hablamos, te recomendamos el articulo donde hablamos de la importancia de la privacidad donde se habló sobre la relevancia de ésta para los usuarios, tanto dentro como fuera de la red.
Después de conocer todos los datos inherente a la privacidad; así como, las formas como estos datos son tomados de la red y de cómo la Web3 viene a dar una solución a esta problemática con la implementación de varios protocolos que ayudan a mejorar dicho inconveniente, hoy describiremos una de las formas con la que se cuenta en blockchain para poder preservar nuestra privacidad.
Según lo expuesto en el párrafo anterior actualmente la blockchain cuenta con un protocolo seguro, confiable y que se encuentra en una amplia expansión tanto dentro como fuera de la blockchain, esto gracias a la forma como ha evolucionado la criptográfia en los últimos años.
Cuando hablamos del “Zero Knowledge Proof (ZKP)” o “Prueba de Conocimiento Cero”, no es mas que un protocolo que ayuda a preservar nuestros datos dentro y fuera de la red, debido a que permite realizar una serie de actividades en la red sin revelar ningún tipo de información confidencial en todo el proceso de ejecución.
Procedencia
Las pruebas de conocimiento cero (ZKPs) fueron mencionadas por primeravez por Shafi Goldwasser, Silvio Micali y Charles Rackoff en su artículo ” La complejidad del conocimiento de los sistemas de prueba interactiva” en la década de 1980.
Aunque éste fue considerado uno de los mayores avances teóricos en su momento por la comunidad criptográfica, también fue catalogado como imposible para la práctica debido a su complejidad. Ahora bien, al ver los preceptos con los que fue concebido este protocolo, nos surge la siguiente interrogante:
¿Es posible demostrar que algo es verdad sin develar los datos que lo prueban?
Sí, esto es lo que propone la tecnología “Zero Knowledge Proof (ZKP)”, o “Prueba de Conocimiento Cero”, este es un método que emplea algoritmos criptográficos para que varias partes puedan verificar la veracidad de una información sin necesidad de compartir los datos que la componen.
¿Qué es exactamente la prueba de conocimiento cero?
Es un protocolo criptográfico que estipula un método para que una de las partes pruebe a otra que una declaración (generalmente matemática) es cierta, utilizando los mecanismos necesarios para no revelar nada más que la veracidad de la declaración.
Elementos intrínsecos en el sistema ZKP
- Declaración: Es la verdad queremos probar.
- Datos: Es la información disponible tanto para el probador como para el verificador.
- Testigo: Es el que se encarga de probar la información conocida solo por el probador, la cual es suficiente para probar la declaración. El probador mantiene esta información en secreto del verificador.
- Prueba: Una información derivada por el probador de la declaración, los datos y el testigo que se puede verificar con la declaración y los datos para probar la verdad del reclamo.
Propiedades de la prueba de conocimiento cero:
Las pruebas deben satisfacer tres propiedades:
- Totalidad. Supongamos que la declaración es verdadera y se quiere probar:
Si tenemos un verificador y un probador honestos (siguen el protocolo correctamente) el protocolo hará que el probador convenza de forma abrumadora al verificador de que la declaración es verdadera. La definición de probabilidad abrumadora depende de la aplicación pero generalmente implica que la probabilidad de fallo no es significativa en la práctica. - Solvencia. Supongamos que la declaración es falsa:
No existe un probador engañoso que pueda convencer al verificador honesto de que la declaración es verdad, excepto con alguna probabilidad pequeña, la cual se puede corregir con un excelente diseño criptográfico. - Conocimiento cero: Si la declaración es verdadera, un verificador engañoso no aprende otra cosa más que este hecho. Esto se formaliza mostrando que cada verificador engañoso tiene algún simulador que teniendo en cuenta solo la declaración a ser demostrada (y sin acceso al probador), puede producir una transcripción que “parece” una interacción entre el probador honesto y el verificador tramposo y por ende no puede probar la veracidad de la información.
Si se cumplen las dos primeras se dice que es una prueba de conocimiento.
En este sentido las pruebas de conocimiento cero no son pruebas en el sentido matemático del término, debido a que hay una probabilidad pequeña, del error de solidez (soundness error), donde un probador engañoso puede ser capaz de convencer al verificador de una declaración falsa. En pocas palabras son datos probabilistas y no deterministas, pero existen técnicas para disminuir el error de la solidez a valores insignificantes.
Modelo computacional del ZKP
El conocimiento cero tiene que usar algún modelo computacional, la más común es la de una máquina de Turing . Sean P, V y S máquinas de Turing. Un sistema de prueba interactiva con ( P, V ) para un lenguaje L es de conocimiento cero, si para cualquier tiempo polinomial probabilístico (PPT) verificador existe un simulador PPT esperado S tal que:
El probador se modela teniendo un poder de cálculo ilimitado (en la práctica, por lo general es una máquina de Turing probabilística).
La definición que se da es el de perfecto conocimiento cero. El conocimiento cero computacional se obtiene al exigir que las opiniones de los supervisores y el simulador sean computacionalmente indistinguibles , dada la cadena auxiliar.
Ejemplo práctico del como funciona el ZKP:
En el ámbito académico se emplea habitualmente un sencillo ejemplo para mostrar como funciona la lógica que sustenta el algoritmo criptográfico que hace posible esta tecnología: “La cueva de Alí Babá”. Entonces para este caso usemos la analogía de “La clave secreta de Alice y Bob”: Alice y Bob, se encuentran a las puertas de una cueva que tiene dos entradas distintas por dos caminos separados (A y B). En el interior de la cueva hay una puerta que comunica ambos caminos, pero solo puede abrirse con una clave secreta. Bob (el ‘probador’) posee esta clave y Alice (la ‘verificadora’) quiere comprarla, pero antes quiere estar segura de que Bob no miente.
¿Cómo puede Bob demostrar a Alice que tiene la clave sin revelar su contenido?
Para lograrlo, hacen lo siguiente: Alice espera fuera de la cueva y Bob entra al azar por uno de los dos caminos. Una vez dentro, Alice llama a Bob y le pide que salga por uno de los dos caminos. Como Bob tiene la clave secreta, será capaz de volver siempre por el camino que Alice le pida, ya sea A o B.
Alice puede pensar que esto ha sido cuestión de suerte: había un 50% de posibilidades de que ambos hubieran elegido el mismo camino. No obstante, si se realiza este ejercicio múltiples veces, la probabilidad de que Bob salga por el camino señalado por Alice sin tener la clave se van reduciendo progresivamente, hasta ser prácticamente imposible.
Para concluir la prueba: Bob debe indicar un número suficiente de veces por el camino indicado; de cumplir esto Bob ha demostrado inequívocamente a Alice la veracidad de su afirmación: por ende él tiene la clave secreta. Y para ello no ha hecho falta compartir la clave.
Podemos demostrar la veracidad de los datos sin compartirlos
Otro ejemplo sería le propuesto por Kenny Li (Co-Fundador de Manta Network) quien, en una entrevista realizada por Whispr News, explicaba el funcionamiento de ZKP y él uso la analogía del “Pub”, esta analogía consiste en saber sí una persona es mayor de 21 años o no donde:
“…una persona entra a un Pub en EE.UU., y pide una cerveza, pero este debe ser mayor de 21 años para poder beberla, entonces el camarero necesita saber sí este tiene la edad suficiente para poder beberla, entonces el camarero para conocer su edad le hace una serie de preguntas inherentes a él, para determinar así su mayoría de edad sin necesidad de preguntarle directamente o pedir su ID; donde el camarero puede comenzar pidiéndole una foto cuando tenía 18 años, cuantos años tiene su mejor amigo, que estudiaba en un determinado año, entre otras para saber la edad del cliente”.
Estas simples analogías hechas nos permite saber como es el funcionamiento de la prueba de conocimiento cero, demostrando con estas el potencial que tiene para darnos un equilibrio al momento de aplicarla; todo esto debido a que este posee un conjunto de elementos que nos permite validar si una información es verdadera o no, sin la necesidad inherente de ver los datos que lo demuestran, o para decirlo de una forma más fácil “se puede demostrar que ciertos datos son verdaderos sin compartirlos con un tercero”.
Clasificación de las pruebas de conocimiento cero
Estas pruebas las podemos clasificar en 2: las interactivas y no interactivas.
1) Pruebas de conocimiento cero interactivas o IZKP:
Las pruebas de conocimiento cero interactivas, también conocidas por las siglas IZKP (del inglés Interactive Zero-Knowledge Proof), se destacan porque tanto el probador como el verificador deben estar presentes al momento de ejecutarse la prueba; estas suelen darse de la siguiente forma:
- El probador genera un mensaje de compromiso indicando que conoce el secreto.
- El verificador devuelve un desafío al probador, este desafío suele ser aleatorio.
- El probador envía una respuesta al verificador. El cálculo de la respuesta necesita tener en cuenta el compromiso de que se posee el secreto, el desafío y el secreto.
Este proceso puede repetirse varias veces para asegurar la verificación.
2) Pruebas de conocimiento cero no interactivas o NIZKP:
las pruebas de conocimiento cero no interactivas, también conocidas por las siglas NIZKP (del inglés Non-Interactive Zero-Knowledge Proof), estas pruebas son las mas complicadas debido a que no necesitan que el probador ni el verificador estén presentes para poder ejecutar la acción. La forma como se ejecutaría esta prueba:
- El probador genera una prueba.
- La prueba se genera con una transcripción del protocolo específica.
- La transcripción puede ser revisada luego por el verificador.
- El verificador prueba sí la transcripción esta acorde para ser aprobada.
Aplicabilidad del protocolo ZKP
El protocolo ZKP tiene un amplio abanico de usos que van desde la blockchain hasta la web tradicional, debido a que este protocolo pude trabajar con web tradicional y dispositivos móviles, es de señalar que dada la forma como se ejecuta dicho protocolo, ofrece un menor tiempo de ejecución de forma confiable.
Casos de uso de la Prueba de conocimiento cero:
– Mensajería:
Es necesario el cifrado de los mensajes de extremo a extremo como el caso de Whatsapp y Telegram, usado para preservar la privacidad de los mensajes, para este caso los usuarios tienen que verificar su confianza en el servidor y viceversa. Es aquí donde el ZKP proporciona esa confianza de extremo a extremo sin filtrar ninguna información adicional, dando como resultado que nadie podría hackear su mensaje.
– Autenticación:
En este caso, la prueba de conocimiento cero puede ayudar a transmitir información confidencial como información de autenticación con seguridad adicional; debido a que este puede mantener un canal seguro para que el usuario use su información sin exponerla; evitando así que ocurra una fuga de datos
– Compartir datos:
Este protocolo nos permite compartir datos sin necesidad de terceros, debido a que alguien siempre puede piratear o interceptar los datos al compartir información; donde ZKP, sería una capa más de seguridad al momento de realizarla.
– Seguridad para información confidencial ( Datos bancarios ):
Para algunos datos confidenciales como los extractos bancarios o la información de la tarjeta de crédito, se hace necesaria una capa mas de seguridad; aunque los bancos mantienen un historial de las transacciones, deben acudir a un servidor externo para poder solicitar información acerca de algún movimiento del cliente.
Aunque los bancos pasan por una línea segura, el historial de la tarjeta de crédito sigue siendo mucho más sensible que los datos promedio. En este caso, no solo cifrando toda la información como una, sino bloqueando, los bancos pueden proporcionar una mejor seguridad; debido a que los bancos solo manipularían los bloques necesarios sin tocar otros bloques, ZKP puede proporcional una mejor capa de seguridad al momento de necesitarse dichos datos.
– Documentación compleja:
El protocolo ZK puede filtrar a los usuarios al momento de acceder algún tipo de documentación compleja descartando así a los que no tienen autorización para verla; todo esto debido a que el protocolo puede cifrar los datos en fragmentos y como al momento de acceder a algunos datos solo tendrá que manipular ciertos bloques, entonces esto permite dar y restringir el acceso de usuarios.
– Protección de almacenamiento:
El ZKP proporciona una mayor protección al momento de almacenar alguna información, permitiendo así mantener alejados a los hackers; donde este genera un mejor cifrado de la información. Cabe señalar que también se puede cifrar el canal de acceso a esta aumentando así la seguridad de la misma.
– Control del sistema de archivos:
El ZKP permite que los archivos, los usuarios e incluso cada inicio de sesión dentro de cualquier sistema pueda tener diferentes capas de seguridad por separado, al permitir estratificar cada uno. Por lo tanto, puede ser un gran caso de uso cuando sea necesario.
Es de destacar que estos han sido los casos más importantes de uso del ZKP.
Prueba de conocimiento cero y la Web3:
Actualmente en la Web3 podemos encontrar varios proyectos que están trabajando en base al ZKP, donde algunos de ellos ya tienen aplicaciones en funcionamiento y con diferentes opciones de uso dentro de los cuales encontramos:
- Polygon: Plataforma de fácil uso y escalado, desarrollado sobre Ethereum. Su componente central es Polygon SDK, un marco modular y flexible que admite la creación de múltiples tipos de aplicaciones. También permite crear cadenas acumuladas ZK, cadenas independientes o cualquier otro tipo de infraestructura requerida.
- Immutable X: Solución de capa 2 para NFT en Ethereum. Según Immutable X, su cadena de bloques elimina las limitaciones de Ethereum, donde los usuarios se benefician del comercio instantáneo y la escalabilidad masiva, sin comprometer la seguridad de los activos o los usuarios, construido con la tecnología STARK zk-rollups.
- Mina Protocol: Cadena de bloques construida para reducir los requisitos informáticos con el fin de ejecutar DApps de manera más eficiente; la cual, tiene un equilibrio en términos de seguridad y descentralización, donde usa el protocolo (Zk-SNARK), una prueba criptográfica que permite a alguien autenticar información sin revelar dicha información (NIZKP).
- Zcash: Protocolo descentralizada enfocado en la privacidad y el anonimato el cual utiliza la tecnología de prueba de conocimiento cero zk-SNARK que permite a los nodos de la red verificar transacciones sin revelar ninguna información confidencial sobre esas transacciones.
- Manta Network: Una blockchain ZKP capa 1 descentralizada, rápida y que brinda una privacidad programable en la web3. Esta, a su vez, posee un conjunto de productos y servicios principales, en varios aspectos de la Web3 incluidos la privatización de tokens no fungibles, zkNFTs, zkSBT, en su plataforma NPO ( Oferta Privada de NFT) y pagos privados con MantaPay, al tiempo que ofrece un fácil uso y un potente ZK.
Disposiciones finales:
Como hemos visto en este artículo sobre la “Zero Knowledge Proof (ZKP)”, o “Prueba de Conocimiento Cero”, este protocolo vino para ayudar a mejorar la privacidad de los usuarios, debido a su amplia aplicabilidad, que va desde mensajes de texto hasta transacciones bancarias.
Gracias a ello, se permite preservar la integridad y seguridad de las personas que usan la Web debido a que el protocolo ayuda a preservar nuestros datos dentro y fuera de la red. Debido a esto, el protocolo permite realizar una serie de actividades en la red sin revelar ningún tipo de información confidencial en todo el proceso.
Como se ha indicado en reiteradas oportunidades este tipo de proyectos hace que el ecosistema criptográfico evolucione a pasos agigantados presentando una serie de innovaciones que permiten un amplio desarrollo de la misma.