¿Qué son las pruebas zk-SNARK?

El desarrollo tecnológico actual puede ser tan benéfico como perjudicial para la privacidad de los datos que se manejan en la red. Y es que esta característica siempre ha sido la más valorada por todos aquellos usuarios que desean realizar sus transacciones a través de criptomonedas. Incluso antes de existir las criptomonedas, desde la época de los criptoanarquistas

La realidad es que en tiempos de Big Data, redes neuronales artificiales analizándote sin parar, corporaciones y gobiernos absorbiendo todo cuanto hacemos para controlarte a su antojo, es más importante que nunca la privacidad personal y la transparencia de las instituciones. Por ello, la creación de soluciones más poderosas y eficientes que resguardan la privacidad en el mundo digital, hoy en día cobra mayor fuerza e importancia gracias a la llegada de las criptomonedas. 

Hoy aprenderás una de las herramientas en este sentido: las pruebas de conocimiento cero zk-SNARKs. Se trata de una implementación criptográfica muy poderosa que permite demostrar la propiedad sobre cualquier información o datos, sin la necesidad de tener que revelarle dicha información o datos a ningún usuario o red, en ningún momento. Interesante ¿no? Pues veamos a profundidad de qué se tratan estos novedosos sistemas de prueba criptográfica ciega.  

Entendiendo que es un zk-SNARK

zk-SNARK es el acrónimo de “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge” que significa “Argumento de Conocimiento No Interactivo Sucinto de Conocimiento Cero”. Los zk-SNARKs son sistemas de prueba de conocimiento cero muy confiables y seguras. Pruebas que nos permiten probar la posesión sobre una información, demostrando que además dicha información es correcta. Pero que al mismo tiempo nunca se revela, sino que se mantiene en estricta confidencial y en secreto.

Es importante diferenciar entre protocolo ZKP y zk-SNARK. Mientras que el protocolo ZKP es una forma o protocolo de hacer pruebas criptográficas, los algoritmos zk-SNARK son algoritmos que ponen un protocolo ZKP en uso. Para que lo entiendas es como el protocolo TCP/IP (la base de internet), pero luego, sobre ella se crean implementaciones concretas: como el protocolo SMTP (protocolo de envío de emails). SMTP se crea sobre TCP/IP, usando TCP/IP de una determinada forma. En este caso, el protocolo ZKP sería la base, y sobre este se fundamenta zk-SNARK.

Esta implementación concreta del protocolo ZK, tiene algunos matices que podemos descubrir entendiendo cada una de las letras que componen el nombre zk-SNARK:

  • ZK: Conocimiento cero: es un tipo de prueba criptográfica. Hace referencia a la confidencialidad y privacidad de la información entre los usuarios sin comprometer su seguridad. Puedes leer más sobre esto aquí.
  • S: Sucinto: hace referencia a la brevedad y rapidez con la que se puede verificar y comprobar que la prueba es verdadera o legítima. Cómo las pruebas son una demostración de la posesión de información o datos, su tamaño es pequeño, por lo que se pueden verificar y validar en cuestión de milisegundos.
  • N: No interactivo: significa que no hay una interacción, comunicación o relación de intercambio constante entre el demostrador y el verificador. Es decir, en las pruebas de conocimiento cero sólo hace falta enviar un mensaje con la prueba para demostrar la posesión sobre la información, sin necesidad de una comunicación constante o frecuente entre las partes.
  • ARK: Argumento de conocimiento: hace referencia a la prueba o conocimiento que tiene un probador y que puede demostrar ante un verificador, para convencerlo de que posee una información que conoce y que es correcta, pero sin revelar cuál es esa información. 

Básicamente un zk-SNARK nos permite contarle que tenemos en nuestro poder una información secreta a un amigo, sin tener que revelar en ningún momento dicha información. Y al mismo tiempo, convencer a nuestro amigo al cien por cien de que la información realmente está en nuestro poder. Suena genial ¿No crees? De hecho, la utilidad de pruebas de este tipo es gigantesca, pero antes eso sigamos entendiendo que más se esconde en las zk-SNARKs.

¿Cómo funcionan los zk-SNARKs?

La tecnología que envuelve a los zk-SNARKs es profundamente compleja y novedosa. Las bases de su construcción fueron diseñadas por los criptógrafos Shafi Goldwasser, Silvio Micalli y Charles Rackoff en 1985. Lo que dio origen a los primeros protocolos para decir que se tiene conocimiento de un secreto que existe y que es correcto pero sin revelarlo es, prácticamente, decir “Lo sé”, sin ir más allá de esas palabras. 

Sin embargo detrás de esto se esconde una potente y compleja matemática que pocas personas pueden comprender del todo. Por ello, un ejemplo explicativo y sencillo expuesto por el criptógrafo Jean-Jacques Quisquater en 1990 puede ayudarnos a comprender cómo funcionan las pruebas de conocimiento cero. Veamos:

El concepto de prueba de conocimiento cero se refleja como una parábola que involucra a la Cueva de las Mil Maravillas de Alí Baba. En su ejemplo la cueva se refleja como un círculo perfecto que sólo contiene una entrada, y que en su interior sólo existen dos caminos laterales. Para acceder a la cueva a través de esa pequeña puerta es necesario decir las palabras secretas correctas. 

Entonces, si Alice quiere demostrarle a Bob que tiene conocimiento de cuáles son las palabras secretas correctas, pero sin revelarlas en ningún momento, podrá acordar con Bob que ella estará al final de cueva y él en la entrada. Cuando Bob diga una palabra para indicar que Alice debe aparecer por uno de los caminos específicos, cuando Alice escuche a Bob deberá aparecer por el camino que él indica de forma confiable. Demostrando que tiene conocimiento de las palabras secretas correctas. 

El proceso puede ser repetido n cantidad de veces para demostrar que Alice conoce el secreto y que no ha elegido el camino por simple coincidencia. 

Importancia de los zk-SNARKs

La facilidad de dar seguimiento o rastrear las transacciones que realizan los usuarios en las blockchain públicas, ha llevado a la implementación de nuevos mecanismos de seguridad que garanticen la protección y el resguardo de la privacidad. Tanto de los usuarios como de las criptomonedas, pues la privacidad, también es un elemento que le brinda fungibilidad a las monedas digitales. 

Por ello, la implementación de protocolos de privacidad como zk-SNARK permite garantizar la privacidad de todos los usuarios y participantes en una red blockchain, sin comprometer en ningún caso la privacidad ni la seguridad de ninguno de ellos. 

El uso de los zk-SNARKs puede reducir cualquier tipo de conexión o relación que pueda existir entre el remitente y el destinatario, así como los montos involucrados en las transacciones. Este mecanismo de seguridad puede ser usado en conjunto con otras implementaciones de privacidad como Tor, para ocultar, por ejemplo, la IP de los usuarios. Haciendo más efectiva la garantía de privacidad en todas las operaciones. Aunque es importante destacar que zk-SNARK es un mecanismo que se activa de forma manual.