x
1

Prueba de conocimiento cero



En criptografía, un protocolo de conocimiento cero o prueba de conocimiento nulo, 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 pruebe a otra que una declaración (generalmente matemática) es cierta, sin revelar nada más que la veracidad de la declaración.

Hay una historia bien conocida que presenta algunas de las ideas de pruebas de conocimiento cero, publicado por primera vez por Jean-Jacques Quisquater y otros en su artículo "Cómo explicar pruebas de conocimiento cero a tus hijos".[1]​ Es una práctica común para etiquetar las dos partes en una prueba de conocimiento cero como Peggy (el probador de la declaración, prover) y Victor (el verificador de la declaración, verifier).

En esta historia, Peggy ha puesto al descubierto la palabra secreta que se utiliza para abrir una puerta mágica en una cueva. La cueva tiene forma de círculo, con la entrada en un lado y el bloqueo de la puerta mágica al otro lado. Víctor dice que va a pagarle por el secreto, pero no hasta que esté seguro de que ella realmente lo sabe. Peggy dice que va a decirle el secreto, pero no hasta que se recibe el dinero. Ellos establecen un plan por el cual Peggy puede demostrar que conoce la palabra sin decírsela a Víctor.

En primer lugar, Víctor espera fuera de la cueva mientras que Peggy ingresa. Ellos etiquetan los caminos a la izquierda y derecha de la entrada A y B. Peggy toma al azar cualquier camino A o B. A continuación, Víctor entra en la cueva y grita el nombre de la ruta en la que quiere que Peggy regrese, ya sea A o B, elegidos al azar. Proporcionar que ella realmente conoce la palabra mágica es fácil: ella abre la puerta, si es necesario, y vuelve a lo largo de la trayectoria deseada. Tenga en cuenta que Víctor no sabe cuál es el camino que se ella ha elegido.

Sin embargo, supongamos que no conocía la palabra. Entonces, solo sería capaz de volver por el camino si Victor diese el nombre de la misma ruta por la que ella había entrado. Dado que Victor elegiría A o B al azar, habría una probabilidad del 50% de acertar. Si tuviera que repetir este truco muchas veces, por ejemplo 20 veces seguidas, su probabilidad de éxito sería prácticamente nula.

Por lo tanto, si Peggy fiablemente aparece en la salida que Víctor nombra, se puede concluir que es muy probable que conozca la palabra secreta.

Observe que también es posible demostrar que Peggy sabe la palabra si ella entra en una ruta y regresa en otra. Pero en este caso, Peggy prueba a todo el mundo que ella sabe la palabra. En el sistema donde Peggy toma una ruta al azar sin decirla a nadie, los de fuera pueden pensar que Peggy y Víctor tienen un acuerdo sobre la orden de rutas que Víctor va a gritar, entonces Peggy solo va a demostrar su conocimiento de la palabra a Víctor.

Una prueba de conocimiento cero deben satisfacer tres propiedades:[2]

Si se cumplen las dos primeras se dice que es una prueba de conocimiento.

Las pruebas de conocimiento cero no son pruebas en el sentido matemático del término, porque hay una probabilidad pequeña, el error de solidez (soundness error), de que un probador engañoso será capaz de convencer al verificador de una declaración falsa. En otras palabras, que son probabilistas y no deterministas. Sin embargo, hay técnicas para disminuir el error de la solidez a valores insignificantes.

Una definición formal de conocimiento cero tiene que usar algún modelo computacional, la más común es la de una máquina de Turing . Sean , y máquinas de Turing. Un sistema de prueba interactiva con para un lenguaje es de conocimiento cero, si para cualquier tiempo polinomial probabilístico (PPT) verificador existe un simulador PPT esperado tal que:

El probador se modela teniendo un poder de cálculo ilimitado (en la práctica, por lo general es una máquina de Turing probabilística). Intuitivamente, la definición establece que un sistema de prueba interactiva es de cero-conocimiento, si por cualquier verificador existe un simulador de eficiente que puede reproducir la conversación entre y en cualquier entrada. La cadena de auxiliar en la definición desempeña el papel de "conocimiento previo". La definición implica que no puede utilizar ningún conocimiento previo para extraer información de su conversación con , porque se demanda que también tiene este conocimiento previo, entonces puede reproducir la conversación entre igual que antes.

La definición que se da es el de perfecto conocimiento cero. El conocimiento cero computacional se obtiene al exigir que las opiniones de los supervisores y el simulador sean computacionalmente indistinguibles , dada la cadena auxiliar.

Las pruebas de conocimiento cero pueden ser interactivas o no interactivas.

En las pruebas de conocimiento cero interactivas, también conocidas por las siglas IZKP (del inglés Interactive Zero-Knowledge Proof), tanto el probador como el verificador necesitan estar presentes durante la ejecución del protocolo. Las pruebas de conocimiento cero interactivas suelen tener la siguiente forma:[3][4]

Este proceso puede repetirse varias veces para asegurar la verificación.

Ejemplos de este tipo de algoritmos son:

las pruebas de conocimiento cero no interactivas, también conocidas por las siglas NIZKP (del inglés Non-Interactive Zero-Knowledge Proof), son pruebas de conocimiento cero que no necesitan que el verificador y el probador estén presentes durante la ejecución del protocolo. En estos protocolos el probador genera una transcripción del protocolo de tal forma que el verificador pueda verificarlo más tarde.[3]

Para transformar una prueba interactiva en una no interactiva se suele usar la heurística de Fiat-Shamir.



Escribe un comentario o lo que quieras sobre Prueba de conocimiento cero (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!