Zero Knowledge Proof, confianza a ciegas

  • Julio Marqués

La digitalización de muchos procesos y la constante evolución tecnológica traen consigo muchos beneficios, pero también nuevas posibilidades de ciberataques. Muchas empresas actuales recopilan una gran masa de datos que les ayudan a mejorar los mecanismos de marketing, sus productos y sus servicios, siendo más propensos a constantes ataques. Es por ello que en este articulo explicaremos como el Zero Knowledge Proof (ZKP) permite proteger datos confidenciales y aumentar la privacidad haciendo uso de cálculos matemáticos.

Se necesita más seguridad

Los datos cada día son más importantes y al mismo tiempo, encontramos un aumento exponencial de los dispositivos IoT en nuestro mundo. Es por ello que aparece la necesidad de un sistema de seguridad que pueda garantizar la seguridad de la transmisión de los datos en todo momento. La industria 4.0 hará que existan una cantidad inimaginable de dispositivos conectados a Internet, como sensores, coches inteligentes, cámaras de detección, etc... Todo esto es un gran paso para el internet de las cosas (IoT) donde el principal objetivo es mejorar la calidad de nuestras vidas. El problema está en que todos los datos se verán expuestos a otro gran número de amenazas si no somos capaz de utilizar un mecanismo seguro de cifrado de los datos.

En el sector IoT las transacciones entre máquina – máquina o máquina – humano, requieren de una velocidad y escalabilidad a niveles cada vez más exigentes y que necesitan mantener la privacidad de la información confidencial. Existen ya varios métodos para la escalabilidad de los dispositivos IoT y métodos para aumentar la velocidad de las transacciones y de procesamiento, sin embargo, no se ha hecho tanto esfuerzo por asegurar la privacidad de la información.

ZKP

El concepto de Zero Knowledge Proof fue originalmente publicado por el MIT en 1985. La prueba de conocimiento cero, consiste en una técnica matemática mediante la cual se puede verificar la veracidad de los datos sin necesidad de revelar la información en sí. En este artículo no se entrará en detalle en la explicación matemática detrás del mecanismo, pero si es interesante aclarar dos conceptos muy importantes:

Criptografía de curva elíptica

La criptografía de curva elíptica consiste en un conjunto de puntos satisfaciendo una ecuación de curva elíptica y que resulta sencillo a la hora de hacer el cálculo, pero muy difícil de revertirlo. Se trata de una variante de la criptografía asimétrica o de clave pública y que está basada en las curvas elípticas.

Una curva elíptica es un conjunto de puntos que satisfacen una ecuación matemática especifica. La ecuación para una curva elíptica se ve tal que así:

𝑦 ! = 𝑥" + ax + b

Por lo que podemos decir que es muy fácil crear una clave ECC, pero romperla es prácticamente imposible. La dificultad principal está en la inviabilidad de calcular el logaritmo discreto de un elemento de curva elíptica aleatoria con respecto a un punto base conocido públicamente. Esto se conoce como el “Problema de logaritmo discreto de curva elíptica (ECDLP)”.

sicamente se trata de la existencia de una clave privada y una clave pública. La clave privada se utiliza para cifrar los datos en un hash y ese hash se puede utilizar para verificar al propietario. Un ejemplo bastante claro se explica en el articulo publicado por ISA Manipal.

Residuos cuadráticos

Un residuo cuadrático, en matemáticas, se le llama al número que deja el cuadrado de cualquier otro número al ser dividido entre otro número llamado módulo. De una forma más formal se puede decir que ‘El entero r es residuo cuadrático de un primo p si existe un entero x tal que x al cuadrado que deja residuo r en la división x^2 / p. La ecuación es tal que: 𝑥! ≡ 𝑟 (𝑚𝑜𝑑 𝑝)

Pongamos un ejemplo para dejarlo más claro: Si decimos que 3 es residuo cuadrático de módulo 22, significa que si escogemos un número x como por ejemplo x = 5, al dividir el cuadrado de x (25) entre el módulo (22), deberá dar un resto de 3.

Explicación sencilla del ZKP para tus hijos

En lugar de dar una explicación matemática o teórica, lo mejor será entender en que consiste este método con un ejemplo publicado por Jean Jacques y Louis Guillou en un informe llamado “How to Explain Zero-Knowledge Protocols to your children”.

Imaginemos que hay dos personas (A y B) en una cueva, y en el interior de la cueva existe una puerta que comunica la vía C y D. La persona A sabe la combinación que hay que introducir en la puerta para que se abra y quiere demostrárselo a B, pero sin decirle la clave, por lo que:

  1. En primer lugar, la persona A comienza a caminar hacia cualquier lado de la cueva (C o D).
  2. Una vez ya no se ve la persona A, B se va a la posición desde donde comenzó la persona A y que puede ver ambos caminos.
  3. Ahora la persona B le puede ordenar a A que salga por el carril C o por el carril D.
  4. Debido a que A sabe la clave, utilizará la misma para abrir la puerta secreta y salir por el carril que B le dijo.
  5. Puede que B no esté convencido porque podría haber sido suerte ya que tenía un 50% de probabilidades de adivinar correctamente la clave.
  6. Por lo que la persona B decide repetirlo 25 veces o cualquier número. Si se repite esta prueba varias veces, la probabilidad de adivinar la clave finalmente sería muy baja.
  7. Esto permite verificar a B que A sabe la clave sin necesidad de revelar la información (la clave)

Principales propiedades

Integridad Si la información que se proporciona es verdadera, el verificador podrá verificar una y otra vez la veracidad de esa información.
Solidez En el caso de que la información sea falsa o errónea, el verificador sabrá que esa información directamente es falsa.
Conocimiento cero En caso de que la información sea cierta, el verificador no sabrá la información en si, simplemente sabrá si es verdadera o falsa, nada más.

Tipos de ZKP: zk-SNARKs vs zk-STARKs

Actualmente existen dos tipos de ZKP que son altamente reconocidos. En primer lugar zk-SNARK que fueron las primeras pruebas y se utiliza en proyectos como Zcash, aunque han llegado a ocasionar problemas como “crear monedas de la nada” y en segundo lugar zk-STARK que es una mejora de las SNARKs.

  • zk-SNARK: "Zero Knowledge Succinct Non-Interactive Argument of Knowledge" se tratan de un tipo de prueba de conocimiento cero, por lo que no es lo mismo ZKP que zk-SNARK, sino que zk-SNARK está construido en base a ZKP. Al hacer referencia al término “No interactivo”, quiere decir que no existe un intercambio constante entre el demostrador y el verificador. Este tipo de ZKP requiere de mayor poder computacional, mayor coste económico y mayor vulnerabilidad frente a ataques de tipo cuántico.
  • zk-STARK: "Zero Knowledge Scalable Transparent Argument of Knowledge" se trata de una gran mejora de zk-SNARK y a diferencia de SNARK, aquí si que existe un constante intercambio para conseguir que el verificador esté convencido. Los zk-SNARK requerían una fase de configuración confiable, mientras que los zk-STARK no depende de dicha configuración sino que utilizan la aleatoriedad verificable de forma pública. Además, son más escalables tanto a nivel de velocidad como de tamaño computacional, es decir, no son tan complejos como zk-SNARK que a veces la complejidad puede ocasionar problemas y finalmente, son más resistentes a los ataques cuánticos.

Seguimos en el camino a la privacidad

Está claro que no todo puede ser perfecto, y en cierto modo el uso de la prueba de conocimiento cero no es perfecto al 100%. A pesar de que el protocolo permite alcanzar altos niveles de anonimato, seguridad y privacidad, también tiene algunos inconvenientes. Por ejemplo, la imposibilidad de garantizar que la información es veraz al 100%. Es decir, tal y como se ha explicado si se van repitiendo las interacciones entre probador y verificador muchas veces, llega un punto que la probabilidad de acierto de manera aleatoria es sumamente baja, pero nunca se podrá llegar a cero. Por otro lado, la potencia computacional necesaria es más grande que la de otros protocolos, al igual que el tamaño que se ocupa al realizarla.

No obstante, se está en continua mejora de los algoritmos de cifrado para conseguir llegar a un punto de inflexión donde se puedan usar de una forma coherente y traigan consigo multitud de ventajas para la transmisión de datos de una forma segura y anónima. Ya se aplica en el sector militar, para asegurar las comunicaciones evitando que los enemigos puedan descifrarlas, o en el sector sanitario, para historiales médicos, en proyectos como ZCash, Monero y dispositivos IoT con protocolos como Crowdpatching que aplica parches de seguridad en las actualizaciones de dichos dispositivos.

  • Business
  • Seguridad
  • Técnicas
  • Protocolos