Pruebas de Conocimiento Cero (ZKP), el state of art de la criptografía

José Maldonado
08 JUN 2020
Pruebas de Conocimiento Cero (ZKP), el state of art de la criptografía
1.

Introducción

Una de las tecnologías más vanguardistas del mundo de la tecnología criptográfica son sin duda alguna las Prueba de Conocimiento Cero o Zero Knowledge Proof (ZKP por sus siglas en inglés). Pero ¿Qué son en realidad estas pruebas? ¿Cómo funcionan? ¿Qué las hace tan revolucionarias? Pues bien, esto y más lo veremos a continuación. 

2.

¿Qué son las Pruebas de Conocimiento Cero o Zero Knowledge Proof (ZKP)?

Las Pruebas de Conocimiento Cero o Zero Knowledge Proof (ZKP), es el nombre de un método criptográfico que nos permite mantener un secreto criptográficamente protegido y al mismo tiempo, demostrar a otros que dicho secreto existe, está en nuestro poder, y pueden validarlo cuando deseen. Esto en forma sencilla es la definición de una Prueba de Conocimiento Cero.

El objetivo de estas pruebas es muy sencillo: guardar secretos, permitir su validación, pero sin revelar nada del secreto en sí. Algo así como tener la receta secreta de Coca-Cola y decir públicamente que la tenemos, mientras otros validan que efectivamente es así, pero sin nunca revelar cuál es la receta finalmente.

Una interesante propiedad que, si bien parece imposible, la verdad es que matemática, computacional y criptográficamente, es posible. Pero la creación de estas pruebas no fue un trabajo simple. De hecho, es el resultado de años de investigación y diseño lo que dio origen a las mismas, como veremos a continuación.

Relacionado: ¿Qué es la criptografía asimétrica?

3.

Origen de las Pruebas de Conocimiento Cero (ZKP)

El origen de las Pruebas de Conocimiento Cero (ZKP) comienza con el desarrollo de las llamadas Firmas Ciegas o Blind Signature de David Chaum en el año de 1982. Las Blind Signatures fue un diseño criptográfico que permitía firmar digitalmente documentos, archivos y mensajes de manera que no se revelará información a las partes involucradas en el intercambio de firmas.

Fue en cierta forma un prototipo de lo que sería las Pruebas de Conocimiento Cero que se establecerán en 1985 con la salida de del artículo “La complejidad del conocimiento de los sistemas de prueba interactivos”. Creado por los especialistas en criptografía Shafrira Goldwasser, Silvio Micali y Charles Rackoff. Estas fueron las mentes detrás de la definición y acuñamiento de las Pruebas de Conocimiento Cero.

Finalmente, David Chaum junto con Gilles Brassard y Claude Crépeau, publicaron en 1987 el trabajo “Pruebas de Revelación Mínima de Conocimiento”. Allí estaría la definición más sencilla y detallada de las Pruebas de Conocimiento Cero:

“Un protocolo de conocimiento cero, permite que un “probador” convenza a un “verificador” de que el primero tiene información secreta verificable. Todo ello sin permitir que el verificador sepa algo sobre dicha información. La información secreta, puede ser verificable estadísticamente o de manera determinística. Y sólo uno de ellos, el verificador o el probador, necesitan contar con recursos limitados”.

En este punto, las Pruebas de Conocimiento Cero comienzan a ser vistas como un medio criptográfico posible, lleno de complejidades, pero con un potencial enorme para proteger la privacidad en el mundo digital que estaba por venir.

4.

¿Cómo funcionan las Pruebas de Conocimiento Cero?

Básicamente el funcionamiento de una Prueba de Conocimiento Cero o ZKP, consiste en crear un método de autenticación compartida. Uno donde no sea necesario revelar secretos completos para alcanzar el objetivo de revelar información sensible. De esta forma, si no hay revelación de información sensible es imposible robar el secreto, lo que brinda un alto nivel de seguridad.

Así tenemos que el hecho de funcionamiento básico de las ZKP, es generar un sistema que no revele información pero que permita a terceros verificar la existencia de la misma. Así nuestro sistema crea dos partes que son esenciales para el funcionamiento de un ZKP, el probador y el verificador.

El papel del probador es generar el secreto y mantener el control total sobre el mismo. Mientras que el verificador, simplemente puede verificar la autenticidad del mismo por medio de pruebas criptográficas que así se lo permiten. Por supuesto, estos principios criptográficos son ampliamente complejos y no son únicos. Por ejemplo, las Pruebas de Conocimiento Cero No Interactivas (zk-SNARK) o las Blind Signatures de David Chaum son solo algunos ejemplos de ZKP, cada una de ellas con sus propias particularidades.

El ejemplo de la cueva de Alí Babá

Sin embargo, la dificultad no solo teórica y práctica de las Pruebas de Conocimiento Cero, resultaba complejo no solo para muchos especialistas criptográficos, sino también para el público en general. Fue así como en 1992, se publicó; ¿Cómo explicar a tus hijos los Protocolos de Conocimiento Cero? Un sencillo artículo escrito por Louis Guillou, Jean-Jacques Quisquater y Thomas Berson, en el que explicaban las Pruebas de Conocimiento Cero con un sencillo ejemplo llamado "La cueva de Alí Babá".

Básicamente este ejemplo dice lo siguiente:

Imaginemos una cueva, donde la entrada de la misma se divide en dos, formando un anillo que da al final con una puerta. Esta puerta puede ser abierta si y sólo si se dicen las palabras mágicas apropiadas para tal fin, permitiendo que una vez abierta, la persona pueda cruzar al otro lado.

En este ejemplo tenemos a María y Pablo. María conoce las palabras mágicas y lleva a Pablo hasta la cueva para darle una prueba fehaciente de que ella conoce las palabras mágicas. Así pues, María deja a Pablo en la entrada de la cueva mientras ella se adentra en uno de los pasillos. Al llegar a la puerta ella dice las palabras mágicas, logra cruzar al otro lado y seguir su camino hasta salir por el otro pasillo hasta la entrada donde está Pablo.

En este punto, Pablo puede dar por hecho que María pudo hacer trampa, así que le pide hacer lo mismo repetidamente. María lo hace y en cada ocasión María entra por un lado del pasillo y sale por el otro, demostrando claramente que conoce las palabras mágicas. De esa forma, María ha logrado demostrar a Pablo que conoce las palabras mágicas que abren la puerta de la cueva, pero en ningún momento se las ha revelado.

Como vemos un sencillo ejemplo para demostrarnos a todos cómo funcionan las Pruebas de Conocimiento Cero (ZKP).

5.

Características de las Pruebas de Conocimiento Cero

Recibe el nombre de Prueba de Conocimiento Cero (ZKP), si logra cumplir estos tres requisitos:

  1. Integridad y exhaustividad. Se asume que las dos partes involucradas (el probador y el verificador) son honestos y seguirán el protocolo. Esto significa que, si un probador da una declaración, el verificador será convencido efectivamente por la misma.
  2. Solidez y robustez. El protocolo debe asumir que la honestidad es escasa o nula. Por lo que para probar que efectivamente el probador tiene un secreto, se debe convencer al verificador. Todo ello reduciendo al máximo las posibilidades de engañar con éxito al verificador.
  3. Conocimiento cero. Esto significa que si la declaración es verdadera ningún verificador tramposo puede saber más que este hecho.

El cumplimiento de estos tres requisitos es fundamental para que un protocolo pueda cumplir con el “conocimiento cero”. En caso de que no pueda hacerlo, el protocolo no puede llamarse de esa manera pues no garantiza el anonimato.

A parte de esto, el protocolo debe garantizar una fuente de aleatoriedad segura. La justificación viene dada porque la generación de números aleatorios es otra condición necesaria para el correcto funcionamiento del mismo.

6.

Pros y contras de las ZKP

Pros

  1. Permite alcanzar altos niveles de seguridad, privacidad y anonimato. El sistema abre las puertas para la construcción de criptomonedas que cuiden de la privacidad de sus usuarios en todo momento.
  2. Las ZKP tienen capacidad de lograr resistencia a la computación cuántica, por lo que sus sistemas de cifrados son más seguros frente a esta naciente tecnología.

Contras

  1. Son complejos de diseñar, mantener y computacionalmente son costosos de ejecutar. Una muestra de esto lo vemos en Zcash cuyo modelo ZKP llevó a un bug que podían aprovechar para generar nuevas monedas sin necesidad de minar.
  2. No resuelve el problema de transmisión segura de información. Se debe a que es vulnerable frente a un tercero que pueda interceptar la transmisión, modificando o destruyendo el mensaje.

Relacionado: El futuro de las criptomonedas: Los últimos avances de la criptografía cambian la Blockchain

7.

Casos de uso de la tecnología ZKP

Como hemos mencionado ZKP permite alcanzar altos niveles de anonimato, privacidad y seguridad que es imposible alcanzar en otro tipo de protocolos. Esto ha hecho que ZKP sea visto por distintos sectores como una tecnología que pueden aplicar a sus campos. Por ejemplo, los militares pueden usar sistemas de cifrado ZKP para asegurar sus comunicaciones evitando que el enemigo pueda descifrarlas.

Por otro lado, una empresa de seguridad puede usar ZKP para diseñar sistema de control de acceso a espacios e información controlados, que le permiten reducir al máximo la superficie de acceso a dichos recursos.  Asimismo, por ejemplo, ZKP puede usarse dentro de sistemas de acceso a historial médico y dentro de una plataforma de seguro, para mejorar la interoperabilidad de distintas organizaciones, accediendo a la data que necesitan de sus pacientes y usuarios, en un espacio limitado y bien definido.

En criptomonedas, podemos ver que las ZKP pueden permitir garantizar de mejor manera la privacidad y anonimato de sus usuarios. Así tenemos el caso de monedas como Monero y Zcash que hacen uso de las ZKP para habilitar transacciones seguras en sus redes. Aproximaciones cercanas también pueden verse en Bitcoin, con las llamadas Transacciones Confidenciales, que son una implementación de las ZKP adaptadas para esta red.