Zero Knowledge Protocol o por sus siglas, ZKP, es un avanzado protocolo de criptografía empleado para crear sistemas distribuidos altamente seguros y anónimos. Los protocolos ZKP permiten compartir y verificar la información sin revelar datos innecesarios, manteniendo así un altísimo nivel de seguridad.
La seguridad, privacidad y el anonimato, son objetivos que los cypherpunks han perseguido desde los inicios del movimiento en la década de los 80. Una serie de objetivos nada fáciles de cumplir debido a la complejidad que encierran los sistemas capaces de proporcionar todas estas capacidades.
Sin embargo, el desarrollo conjunto y muchas veces comunitario de estas herramientas, nos ha permitido crear una tecnología capaz de ofrecer todas estas características. Y lo mejor de todo, es que no se renuncia en ningún momento a la flexibilidad y la facilidad de uso. Estamos hablando de los protocolos o pruebas de conocimiento cero (Zero Knowledge Protocol) o ZKP, por sus siglas en inglés.
Gracias a la existencia de este protocolo, en la actualidad podemos gozar de sistemas distribuidos muy seguros y anónimos.
El método Zero Knowledge Protocol
Una prueba ZKP sirve como un método de autenticación en el que no es necesario revelar secretos para alcanzar el objetivo de demostrar que se tiene una determinada información secreta. Esto es importante porque el hecho de no compartir secretos, significa que los mismos no se pueden robar. Sin lugar a dudas, una característica interesante que nos permite crear canales de comunicación muy seguros.
El objetivo de este tipo de protocolos es probar que se conoce alguno o varios secretos a alguien, sin que realmente se revele dicho secreto. El propio término «conocimiento cero» se origina en el hecho de que no se revela ninguna información. En este proceso participan dos partes; el «Probador» del argumento, y el «Verificador» del mismo.
La idea básica detrás de este protocolo, es probar inequívocamente que el «Probador» conoce el secreto sin revelarlo, una tarea que queda en manos del «Verificador». Lo mejor es que para comprobar dicha información, no se necesita consultar a un tercero, basta con tomar la información del «Probador» y aplicar el protocolo. De esta manera, el «Verificador» puede saber si es cierta la información en todo momento.
En pocas palabras:
Una prueba de conocimiento cero, es un método criptográfico por el cual, una de las partes puede demostrar a la otra la veracidad de una información, sin revelar datos sensibles de dicha información.
Desarrollar esta tecnología criptográfica conllevó un arduo trabajo por parte de muchos criptógrafos y colaboradores. Pero el resultado obtenido, nos ha permitido en la actualidad modelar y crear sistemas muy seguros y que antes eran impensables.
Un poco de historia previa a ZKP
La creación de las ZKP no fue un evento fortuito, sino que es la unión de diversos trabajos de más de 50 años de investigación.
La llegada de la criptografía asimétrica
El desarrollo de la criptografía, siempre ha estado ligado al hecho de velar por la seguridad y la privacidad de la información. Todo esto con el fin de que terceros no autorizados o deshonestos tengan acceso a la misma. En principio, los sistemas criptográficos lo lograron utilizando medios bastante sencillos. Pero la historia cambió radicalmente con la aparición de los ordenadores.
Gracias a los ordenadores alcanzamos el potencial de crear sistemas de cifrado usando matemáticas muy complejas, lo que se a su vez, se traducía en mayor seguridad. Todo este avance tecnológico derivó en un mayor desarrollo de la tecnología criptográfica. Sin embargo, el mayor salto cualitativo fue la aparición de la criptografía asimétrica.
Esta herramienta se convirtió rápidamente en el estándar criptográfico del mundo debido a su alto nivel de seguridad. ¿La razón? El diseño de sistemas criptográficos asimétricos, abría toda un nuevo abanico de oportunidades. La primera propuesta en este sentido fue presentada por los investigadores Whitfield Diffie y Martin Hellman. Fueron ellos en 1976, quienes diseñaron el algoritmo de Diffie-Hellman responsable actual de la seguridad en muchos sistemas informáticos, incluyendo Internet.
Creación de las firmas ciegas (Blind Signatures)
La evolución de la criptografía nos lleva a uno de los sistemas de criptografía asimétrica más conocidos; las Firmas Ciegas. Este fue diseñado por David Chaum, en el año de 1982. Con este sistema, Chaum cambió radicalmente la forma en que se podían firmar digitalmente documentos, archivos y mensajes. Todo ello, sin necesidad de revelar información a las partes involucradas en el intercambio de firmas. Esto permitía, mejorar el nivel de privacidad y solucionar graves problemas de seguridad de algunos sistemas existentes hasta ese momento.
Pero Chaum, como investigador dedicado mejoró la tecnología, hasta el punto de crear las conocidas Firmas Ciegas Grupales. Con esta mejora, ahora se permitía que se pudiera firmar el mensaje de un grupo de personas, verificar que el mensaje provenía de ese grupo, pero sin saber quien efectivamente había firmado. Con estos adelantos Chaum, fue uno de los pioneros en la investigación de los protocolos de conocimiento cero. Todo antes de que siquiera el término existiera. De esta forma sentó las bases de lo que sería un extraordinario avance en la tecnología criptográfica.
Pruebas de Revelación Mínima de Conocimiento
David Chaum sentó las bases de esta tecnología, no solo académicamente sino también en la práctica. Sin embargo, el término no comenzó a usarse hasta su primera aparición en 1985. Ese año salió a la luz «La complejidad del conocimiento de los sistemas de prueba interactivos». Este fue un artículo creado por Shafi Goldwasser y sus co-autores Silvio Micali y Charles Rackoff. Fue en este artículo, donde se utilizó por primera vez el término «prueba de conocimiento cero».
Más tarde en 1987, David Chaum junto con Gilles Brassard y Claude Crépeau, publicaron el trabajo «Pruebas de Revelación Mínima de Conocimiento». Con este nuevo trabajo, se terminó de definir lo que hasta ahora es, la base de un protocolo 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».
Zero Knowledge Protocol y La Cueva de Alí Babá
En 1992, se publicó; ¿Cómo explicar a tus hijos los Protocolos de Conocimiento Cero?. Este sencillo artículo escrito por Louis Guillou, Jean-Jacques Quisquater y Thomas Berson, lograban explicar de forma completamente sencilla el funcionamiento de este protocolo. Para ello idearon un sencillo ejemplo llamado «La cueva de Alí Babá«.
El ejemplo de la cueva de Alí Babá
María quiere demostrarle a Roberto que conoce la palabra mágica que abre la puerta de la cueva de Alí Babá, pero no quiere revelarle el secreto. Para ello Roberto y María van hasta la cueva. María se compromete a ir por el camino A o por el B.
Ambos caminos se comunican sólo a través de la puerta mágica. Bajo este punto, Roberto espera que María vaya por A o B, mientras él le espera en la entrada de la cueva.
- Llegado un momento, Roberto pide a María, que salga por A o por B.
- Si María no conociera las palabras mágicas, no podría abrir la puerta mágica. Lo que significa que no puede salir por el camino elegido por Roberto.
- Esto reduce a 50% las probabilidades de que haya elegido en un primer intento, el camino correcto elegido luego por Roberto.
- La repetición de este esquema en varias ocasiones sirve entonces, para determinar que realmente María sabe las palabras mágicas para abrir la puerta, pero en ningún momento, se las ha dicho a Roberto.
Características de un método Zero Knowledge Protocol
Un protocolo recibe el nombre de Prueba de Conocimiento Cero (ZKP), si logra cumplir estos tres requisitos:
- 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.
- 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.
- 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.
Casos de uso de la tecnología ZKP
Gracias a la enorme capacidad de anonimato, privacidad y seguridad de este tipo de protocolos, sus principales casos de uso apuntan a sistema de comunicación seguro. Por ejemplo, los militares y las organizaciones de espionaje emplean este tipo de tecnología para asegurar comunicaciones. Esto con el fin de permitir el despliegue en campo de sistemas de comunicación muy seguros. También son muy utilizados en sistemas de autenticación, incluso vía web.
La tecnología además tiene amplios usos dentro de sistemas de votación seguros. Con las ZKP es posible que el votante pueda realizar su voto, demostrar que votó, pero de ninguna manera nadie podrá saber por qué opción ha votado. De esta forma, ZKP puede ayudar a los sistemas de votación a mantener el secreto del voto y otorgar transparencias a estos sistemas.
Otro caso de uso muy visto en la actualidad se da en las criptomonedas, como el caso de Zcash y Monero. Ambas criptomonedas implementan el uso de Zero Knowledge Protocol. Como es de esperar, la finalidad es poder garantizar la privacidad y anonimato de sus usuarios.
En el caso de Zcash, su sistema de pruebas zk-SNARKs está basado en el funcionamiento de ZKP. De estas, existe una evolución bajo el nombre zk-STARK que presentan mejores características en cuanto a seguridad y rendimiento, especialmente resistencia a computación cuántica. Por su lado, Monero y sus Bulletproof son también una adaptación de ZKP y Transacciones Confidenciales, lo que también le confiere un alto nivel de seguridad.
Ventajas y Desventajas de sistemas ZKP
Ventajas
- Un sistema con ZKP implementado ofrece altos niveles de seguridad, privacidad y anonimato, pues no requiere la revelación de secreto alguno.
- La lógica del sistema es simple y no requiere la creación de nuevos sistemas criptográficos para su aplicabilidad.
Desventajas
- Un sistema con implementación ZKP, está limitado a utilizar valores numéricos.
- Resulta computacionalmente costoso en comparación con otros sistemas de cifrado.
- 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.
- La implementación y revisión algorítmica de estos sistemas es compleja, además de ser un área dominada por muy pocas personas en todo el mundo. Esto tiene como principal problema una poca capacidad para mejorar el sistema y depurarlo de errores.
Pulsa aquí para abrir de forma GRATUITA y segura tu cuenta de usuario en español y recibe un regalo de 15€.