Conoce Atico34 - Solicita presupuesto
CiberseguridadGlosario

Zero-knowledge proof o Prueba de conocimiento cero

Entre las técnicas de cifrado que se usan actualmente en entornos digitales, especialmente en aquellos donde se quiere garantizar el anonimato y la privacidad, tenemos el denominado protocolo Zero-knowledge proof o Prueba de conocimiento cero. En este artículo explicaremos en qué consiste, cómo funciona y qué aplicaciones tiene.

¿Qué es el Zero-knowledge proof o Prueba de conocimiento cero?

El Zero-knowledge proof (ZKP) o prueba de conocimiento cero es un protocolo criptográfico que permite a un «probador» demostrar a un «verificador» que posee determinado conocimiento, pero sin revelar la información que conforma ese conocimiento. Es decir, permite al probador demostrar al verificador que se sabe algo, pero sin decir qué es ese algo que sabe.

Por ejemplo, probar que tengo una contraseña de acceso a una aplicación, pero sin revelar ni introducir la contraseña.

El Zero-knowledge proof se basa en técnicas criptográficas que emplean algoritmos y funciones de muy difícil reversibilidad (cifrados, funciones hash, aritmética modular, etc.). Esto convierte a las pruebas de conocimiento cero en evaluaciones probabilísticas, donde es posible, aunque muy poco probable, que se produzcan errores de verificación, puesto que la prueba puede repetirse infinidad de veces para demostrar que se tiene la información a verificar.

Aplicado el ZKP a la protección de datos, permite cumplir con el principio de minimización de datos y con la limitación en la accesibilidad a los datos, recogidas en el artículo 25 del Reglamento Europeo de Protección de Datos.

Características del Zero-knowledge proof

Las pruebas de Zero-knowledge proof deben reunir las siguientes características:

  • Integridad: El probador y el verificador deben ser honestos y seguir el protocolo marcado. Es decir, se asume que el probador no miente respecto a la información que dice tener y que seguirá las instrucciones del verificador para demostrarlo.
  • Solidez: Si el probador mintiera, el verificador nunca podría ser convencido de que el probador posee la información verdadera, salvo en una muy pequeña probabilidad de casos.
  • Conocimiento cero: El verificador no tiene la información que el probador posee, por lo que si el verificador no es honesto, nunca aprenderá la información, protegiendo así el secreto.

Tipos de Zero-knowledge proof

Existen dos tipos principales de Zero-knowledge proof:

  • ZPK interactivos: En ellos probador y verificador deben estar presentes en la ejecución del protocolo; el verificador va proponiendo una serie de tareas al probador para que esta pueda demostrar de manera suficiente que posee la información que dice poseer.
  • ZPK no interactivos: Aquí no se requiere la interacción entre el probador y el verificador al mismo tiempo, sino que el probador realiza todas las tareas y el verificador puede comprobarlas con posterioridad. Para poder llevarlo a cabo, es necesario usar dispositivos o software adicional.

¿Cómo funciona el ZKP?

En la base del Zero-knowledge proof están los algoritmos que emplean en el proceso de verificación y puede volverse más complejo aplicando el uso de técnicas de criptografía asimétrica, pero para entender cómo funciona el ZKP, vamos a usar el mismo ejemplo que se da siempre para explicar este protocolo.

Tenemos dos personajes, Alice y Bob, y una cueva circular, con dos caminos (A y B), en cuyo centro hay una puerta que solo se abre usando una contraseña. Alice conoce esta contraseña y quiere demostrárselo a Bob, pero sin revelarle a este ni a nadie dicha contraseña. Para ello, Alice entra en la cueva tomando uno de los caminos al azar, A. Bob llega un poco después y le dice a Alice por qué camino debe regresar, B. Para regresar por B, Alice debe introducir la contraseña (aunque no se la revelará a Bob) y abrir la puerta que comunica ambos caminos.

Evidentemente, hay un 50% de probabilidades de que Alice hubiese entrado por B y regresado sin necesidad de demostrar que posee la contraseña, pudiendo así hacer creer a Bob que sí la tiene. Sin embargo, para asegurar que esto no ocurre, Bob le puede pedir a Alice que repita la prueba varias veces, reduciendo así las probabilidades de ser engañado, porque si Alice no tuviese la contraseña, no podría demostrar lo contrario siempre.

Si aplicamos el Zero-knowledge proof a la autenticación, consistiría en que el usuario, para autenticarse, no necesita introducir su contraseña en el servicio al que quiera acceder, sino demostrar que tiene dicha contraseña al verificador.

Ventajas y desventajas de la Prueba de conocimiento cero

El Zero-knowledge proof tiene tanto ventajas como desventajas. Entre las ventajas, la más destacada es el nivel de seguridad y privacidad que se alcanza con esta técnica de cifrado, puesto que la información que se quiere verificar nunca se desvela, ni siquiera ante el verificador.

Es decir, en el caso de la autenticación, la contraseña solo la tiene el usuario, ni siquiera el proveedor del servicio va a guardar una copia de ella, puesto que la forma de verificación no consiste en usar la contraseña, sino, como hemos dicho, en demostrar que se tiene la contraseña. De manera que solventaría el problema de una posible brecha de seguridad y una filtración de datos, puesto que el proveedor no guarda ninguna copia de nuestra contraseña.

De cara la protección de datos ya lo hemos adelantado, el ZKP permite cumplir con el principio de minimización de datos y de limitación a la accesibilidad de los datos, pudiendo emplearse para desvincular al usuario de su información, ya que no tiene que revelarla para poder demostrarla (por ejemplo, si queremos demostrar que somos mayores de edad en una web, podemos hacerlo a través de un protocolo ZKP apoyado en un tercero de confianza, que verificará que tenemos esa edad realizando el proceso de verificación de la información a través del algoritmo que emplee para ello).

Entre las desventajas del ZKP, está el hecho de que si perdemos la contraseña, no podremos volver a acceder al servicio (o información o archivo, que hayamos protegido mediante este método), ya que nos resultará imposible autenticarnos ante el verificador.

Además, dado los cálculos que debe hacer, es un método más lento, lo que hace que la experiencia de usuario no sea del todo cómoda.

Y en su aplicación en protección de datos puede entrañar algunas vulnerabilidades relacionadas con el tercero de confianza, la posibilidad de inferir datos personales basados en los metadatos asociados en el intercambio de información entre el usuario, el tercero de confianza y el servicio de Internet, o del cruce de los metadatos con la huella del dispositivo entre los distintos servicios de Internet, por citar algunos.

¿Para qué sirve el ZKP? Aplicaciones

El Zero-knowledge proof tiene diferentes aplicaciones, especialmente en el blockchain y protección de datos para proteger la información confidencial en la cadena de bloques, de manera que puede usarse para proteger y mantener oculta determinada información en los smart contracts, así como en la protección de datos en la nube, puesto que, como hemos visto, el proveedor de servicios en la nube no tendrá conocimiento de nuestra contraseña y la información que tengamos almacenada ahí permanecerá encriptada incluso si es robada de alguna forma.

Más centrado en la protección de datos, se puede usar para comprobar la edad en el acceso a determinadas páginas y servicios online, para comprobar las condiciones de nacionalidad, el voto electrónico, para comprobar la solvencia financiera, para realizar compras seguras, para acreditar la identidad en el derecho de acceso, etc. Y, si bien, el ZKP no elimina la información personal, puede emplearse como una medida de seudonimización que desvincula la información personal del interesado.