Las zk-SNARK son un tipo de prueba criptográfica diseñada para garantizar la máxima privacidad posible. Para lograrlo las zk-SNARKs se construyen usando los protocolos o pruebas de conocimiento cero, una interesante técnica que nos permite validar y verificar información sin tener que dar acceso a la misma.

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. 

¿Cuánto sabes, criptonauta?

¿Las zk-SNARKs son pruebas criptográficas seguras?

¡CIERTO!

La prueba zk-SNARKs han sido diseñada desde un principio para proveer un altísimo nivel de seguridad y privacidad, no alcanzable por medios de criptografía asimétricas convencional como ECDSA o EdDSA.

Zcash y los zk-SNARKs

La primera criptomoneda en aplicar las pruebas de conocimiento cero para garantizar la privacidad y seguridad de los usuarios es Zcash (ZEC). La implementación de las pruebas de conocimiento cero le permiten a Zcash poder verificar las transacciones realizadas en la red. Todo ello sin necesidad de revelar quién ha sido el remitente, el destinatario o la cantidad de dinero que ha sido transferida. 

En Zcash, el protocolo ZKP elegido es la implementación zk-SNARKs. Una elección que le permite modificar completamente la manera en que se comparten los datos en una red. Permitiendo que las transacciones puedan permanecer cifradas pero que aún así se pueda verificar y certificar su autenticidad y validez. Ofreciendo un grado de anonimato, privacidad, seguridad y confidencialidad sin precedentes para los usuarios.

Zcash admite direcciones privadas y transparentes, donde ambas son totalmente interoperables entre sí y dependen de los usuarios la activación o retiro de las protecciones sobre la información. Entonces, las direcciones transparentes en la blockchain de Zcash operan de forma similar que en Bitcoin o Ethereum. Donde la información está visible públicamente.

Por el contrario, si se opera con direcciones privadas sólo se verá en la cadena que ha ocurrido un movimiento y que las tarifas de dicha transacción han sido canceladas. Pero no se tendrá conocimiento sobre las partes involucradas en dicha transacción, ni de los montos que fueron transferidos. Por lo que estos datos no son visibles al público aunque estén dentro de la cadena pública. 

Esto es posible sólo gracias al uso de pruebas de conocimiento cero, que permiten cifrar o encriptar los datos dentro de la blockchain. 

Zero Knowledge Protocol en Zcash

Zcash implementa los protocolos de conocimiento cero, conocidos por su siglas en inglés como ZKP, para establecer un mecanismo mediante el cual una parte pueda demostrarle a otra su posesión sobre una determinada información. Sin revelar nada más que una prueba que confirme que dicha declaración es verdadera. 

Gracias a la implementación del protocolo ZKP, esta criptomoneda puede gozar de un gran nivel de seguridad y anonimato, si así lo requieren los usuarios. Puesto que la  extraordinaria capacidad del protocolo ZKP de brindar privacidad permite la creación de un sistema de comunicación seguro sin precedentes. 

Por todas sus propiedades, este protocolo de privacidad tiene una amplia variedad de aplicaciones. Apliaciones que van desde implementaciones militares y de seguridad nacional, hasta sistemas de comunicación y autenticación seguros. Pasando por supuesto por las criptomonedas y la tecnología blockchain. Donde cumplen un papel importante al proteger y mantener íntegras las transacciones que se realicen dentro de la blockchain pública. Pero sin revelar o filtrar información entre las partes involucradas. Es por esta razón que Zcash ha implementado el protocolo ZKP en su sistema. 

Características principales de Zcash en zk-SNARK

  • En Zcash se pueden efectuar transacciones de forma rápida, segura y privada con costos de transacción bajos de 0.0001 Zcash.
  • Con Zcash puede disfrutar de direcciones completamente privadas u optar por direcciones públicas y transparentes
  • Con las direcciones privadas, los campos de memos no son revelados públicamente. Por lo que puede incluir información importante para el destinatario de la transacción sin riesgos ni vulnerabilidades. Ya que dicha información se encontrará protegida y encriptada. 
  • En las direcciones privadas, los usuarios pueden revelar detalles de sus transacciones en caso de auditorías o de tener que cumplir normas reglamentarias. No obstante, el usuario puede revelar toda la información de la transacción si lo desea. Asi podemos ver los montos transferidos, el campo memo o algún mensaje vinculado. Todo ello sin mostrar quién ha sido el destinatario o receptor de la operación. 

Otros tipos de pruebas de conocimiento cero parecidas a zk-SNARK

Otro ejemplo de pruebas de conocimiento cero parecidas a zk-SNARK son las zk-STARKs.  Los zk-STARK se crearon como una versión alternativa de las pruebas zk-SNARK y se consideran una implementación más rápida y económica de esta tecnología. 

Pero, lo realmente importante de este sistema es que las zk-STARKs no requieren una configuración inicial de confianza (por lo tanto, la “T” es transparente). Adicionalmente, los zk-STARK tienen una mayor fortaleza contra ataques del tipo cuántico. Debido a esto se les considera una forma de criptografía más confiable contra este tipo de sistemas.