Hola amigos como les va? Ya estamos cerca del final de las airdrops, y es tiempo de comenzar a hablar de las funciones que serán implementadas (en un principio) en nuestro proyecto DeepOnion. Digo en principio ya que muchas decisiones serán tomadas a través del Voto Central, por lo que probablemente la lista de funciones/características sea mayor a la planificada en la hoja de ruta, definida hace unos meses atrás. En otra oportunidad hemos dado información acerca del Voto Central, DeepVault, DeepSend, entre otras, sin embargo, en el día de hoy me gustaría brindar un poco mas de información acerca de la prueba de conocimiento cero.
La noción de "conocimiento cero" fue propuesta por primera vez en la década de 1980 por los investigadores del MIT Shafi Goldwasser, Silvio Micali y Charles Rackoff. Estos investigadores estaban trabajando en problemas relacionados con sistemas de prueba interactivos, sistemas teóricos donde una primera parte (llamada "probador") intercambia mensajes con una segunda parte (el "verificador") para convencer a éste de que cierta afirmación matemática es verdadera.
En criptografía, un protocolo de conocimiento cero, también conocidas por las siglas ZKP (del inglés Zero Knowledge Proof), es un protocolo criptográfico que establece un método para que una de las partes (probador) pruebe a otra (verificador) que una declaración (generalmente matemática) es cierta, sin revelar nada más que la veracidad de la declaración. Para que dicha prueba exista, debe cumplir una serie de propiedades, las cuales son:
- Totalidad: si la declaración es correcta, el "verificador" honesto (esto es, aquella parte que sigue el protocolo correctamente) quedará convencido del hecho por un "probador" honesto.
- Ser lógica: si la declaración es falsa, ningún "probador" deshonesto podrá probar al "verificador" honesto que es verdadera. Excepto, con una probabilidad muy baja.
- Conocimiento-Cero: si la declaración es verdadera, ningún "verificador" deshonesto aprende algo más que este hecho. Esto se formaliza mostrando que cada "verificador" deshonesto tiene algún "simulador" que, dado el argumento a probar (y ningún acceso al "probador"), puede producir una copia que "parece ser como" una interacción entre el probador "honesto" y el "verificador" deshonesto.
Con el paso del tiempo, las experimentaciones que se han realizado en el campo del conocimiento cero, han alentado la utilización de sistemas de autenticación donde una persona le prueba a la otra su identidad a través de alguna información secreta (como por ejemplo una contraseña o password), sin que la segunda sepa algo de dicha contraseña (ni tampoco que lo sepa).
Si tuviésemos que definir los pasos para llevar adelante dicha prueba, podemos redactarlos de la siguiente manera:
En primer lugar, el probador envía un mensaje de "compromiso" al verificador.
En segundo lugar, el verificador responde dicho mensaje enviando un "desafío".
Por último, el probador da una respuesta a dicho desafío.
Este protocolo se puede realizar varias veces y, dependiendo de las respuestas obtenidas, el "verificador" puede aceptar o no la prueba realizada.
Si bien este proceso resulta bastante técnico y no muy fácil de entender para el común de la gente, podemos ilustrarlo a través de un ejemplo clásico, el cual es conocido como "la cueva de Alí Babá".
Alice quiere probarle a Bob que ella conoce las palabras secretas que abren la puerta R-S en la cueva. Pero, no desea revelar el secreto. El compromiso de Alice es ir a R o S. Una típica rueda del protocolo sería: Bob va a P y espera que Alice vaya a R o S. Bob se dirige a Q y grita a Alice que salga por la derecha o la izquierda. Si Alice no conociese las palabras secretas que abren la puerta R-S habría sólo una chance del 50% de que ella acertara al salir por izquierda o derecha. Si ella realmente conoce el secreto, no importa cuantas veces se repita el proceso siempre saldrá del lado correcto. Y, no reveló la frase "ábrete sésamo".
Lo expuesto anteriormente es sólo una introducción de todo lo que tiene para ofrecer la prueba de conocimiento cero. A medida que vayan transcurriendo las semanas, el equipo de desarrolladores estará brindando más información, para que la gente comprenda la importancia de su utilización en DeepOnion. Se estima que dicha función salga a la luz en el tercer cuarto del 2018, por lo tanto estén atentos a las novedades que vayan surgiendo, las cuales serán bastantes en el corto plazo.
Esto es todo por hoy, muchas gracias por leerme.
Saludos,
Nicolas.
Muchas gracias Nicolas, excelente artículo, muy interesante la información, debe ser compartida para que todos aprendan sobre ello.
Esta esto muy claro y bien explicado muchas gracias!