En criptografía , una prueba de conocimiento cero es un protocolo en el que una parte (el demostrador) puede convencer a otra parte (el verificador) de que una determinada afirmación es verdadera, sin transmitir al verificador ninguna información más allá del mero hecho de la verdad de esa afirmación. [1] La intuición que subyace a las pruebas de conocimiento cero es que es trivial demostrar la posesión de la información relevante simplemente revelándola; la parte difícil es demostrar esta posesión sin revelar esta información (o cualquier aspecto de ella). [2]
Teniendo en cuenta que solo se puede generar una prueba de alguna afirmación cuando se posee cierta información secreta relacionada con la afirmación, el verificador, incluso después de haberse convencido de la verdad de la afirmación, no debería, no obstante, seguir siendo incapaz de probar la afirmación ante terceros.
Las pruebas de conocimiento cero pueden ser interactivas, lo que significa que el probador y el verificador intercambian mensajes de acuerdo con algún protocolo, o no interactivas, lo que significa que el verificador se convence con un solo mensaje del probador y no se necesita otra comunicación. En el modelo estándar , se requiere interacción, excepto para pruebas triviales de problemas BPP . [3] En los modelos comunes de cadena aleatoria y oráculo aleatorio , existen pruebas de conocimiento cero no interactivas . La heurística Fiat-Shamir se puede utilizar para transformar ciertas pruebas interactivas de conocimiento cero en no interactivas. [4] [5] [6]
Hay una historia bien conocida que presenta las ideas fundamentales de las pruebas de conocimiento cero, publicada por primera vez en 1990 por Jean-Jacques Quisquater y otros en su artículo "Cómo explicar los protocolos de conocimiento cero a sus hijos". [7] Las dos partes en la historia de la prueba de conocimiento cero son Peggy, como demostradora de la declaración, y Victor , el verificador de la declaración.
En esta historia, Peggy ha descubierto la palabra secreta que se utiliza para abrir una puerta mágica en una cueva. La cueva tiene forma de anillo, con la entrada en un lado y la puerta mágica bloqueando el lado opuesto. Víctor quiere saber si Peggy conoce la palabra secreta; pero Peggy, al ser una persona muy reservada, no quiere revelar su conocimiento (la palabra secreta) a Víctor ni revelar el hecho de su conocimiento al mundo en general.
Etiquetan los caminos de la izquierda y la derecha desde la entrada con A y B. Primero, Víctor espera fuera de la cueva mientras Peggy entra. Peggy toma el camino A o B; a Víctor no se le permite ver qué camino toma. Luego, Víctor entra en la cueva y grita el nombre del camino que quiere que use para regresar, A o B, elegido al azar. Si ella realmente conoce la palabra mágica, esto es fácil: abre la puerta, si es necesario, y regresa por el camino deseado.
Sin embargo, supongamos que no conocía la palabra. Entonces, solo podría regresar por el camino indicado si Víctor le dijera el nombre del mismo camino por el que ella había entrado. Como Víctor elegiría A o B al azar, ella tendría un 50% de posibilidades de adivinar correctamente. Si repitieran este truco muchas veces, digamos 20 veces seguidas, su probabilidad de anticipar con éxito todas las solicitudes de Víctor se reduciría a 1 en 2 20 , o 9,56 × 10 −7 .
Así, si Peggy aparece repetidamente en la salida que Víctor menciona, entonces él puede concluir que es extremadamente probable que Peggy, de hecho, conozca la palabra secreta.
Una nota al margen con respecto a los observadores externos: incluso si Víctor lleva una cámara oculta que graba toda la transacción, lo único que la cámara grabará es, en un caso, a Víctor gritando "¡A!" y a Peggy apareciendo en A, o en el otro caso, a Víctor gritando "¡B!" y a Peggy apareciendo en B. Una grabación de este tipo sería trivial de falsificar para dos personas cualesquiera (sólo se requiere que Peggy y Víctor acuerden de antemano la secuencia de A y B que Víctor gritará). Una grabación de este tipo seguramente nunca será convincente para nadie más que para los participantes originales. De hecho, incluso una persona que estuvo presente como observador en el experimento original no debería estar convencida, ya que Víctor y Peggy podrían haber orquestado todo el "experimento" de principio a fin.
Además, si Víctor elige sus A y B lanzando una moneda frente a la cámara, este protocolo pierde su propiedad de conocimiento cero; el lanzamiento de la moneda frente a la cámara probablemente sería convincente para cualquier persona que viera la grabación más tarde. Por lo tanto, aunque esto no le revela la palabra secreta a Víctor, sí hace posible que Víctor convenza al mundo en general de que Peggy tiene ese conocimiento, en contra de los deseos expresados por Peggy. Sin embargo, la criptografía digital generalmente "lanza monedas" basándose en un generador de números pseudoaleatorios , que es similar a una moneda con un patrón fijo de caras y cruces que solo conoce el dueño de la moneda. Si la moneda de Víctor se comportara de esta manera, entonces nuevamente sería posible que Víctor y Peggy hubieran falsificado el experimento, por lo que usar un generador de números pseudoaleatorios no revelaría el conocimiento de Peggy al mundo de la misma manera que lo haría usar una moneda lanzada.
Peggy podría demostrarle a Víctor que conoce la palabra mágica, sin revelársela, en una sola prueba. Si tanto Víctor como Peggy van juntos a la boca de la cueva, Víctor puede ver a Peggy entrar por A y salir por B. Esto probaría con certeza que Peggy conoce la palabra mágica, sin revelársela a Víctor. Sin embargo, una tercera persona podría observar esa prueba, o Víctor podría grabarla y sería convincente para cualquiera. En otras palabras, Peggy no podría refutar esa prueba alegando que coludió con Víctor y, por lo tanto, ya no tiene control sobre quién está al tanto de su conocimiento.
Imagina que tu amigo "Victor" es daltónico ( mientras que tú no) y tienes dos bolas: una roja y otra verde, pero por lo demás idénticas. A Víctor, las bolas le parecen completamente idénticas. Víctor es escéptico de que las bolas sean realmente distinguibles. Quieres demostrarle a Víctor que, de hecho, las bolas son de diferente color , pero nada más. En particular, no quieres revelar qué bola es la roja y cuál es la verde.
He aquí el sistema de prueba. Le das las dos bolas a Víctor y él las pone detrás de su espalda. A continuación, toma una de las bolas y la saca de detrás de su espalda y la muestra. Luego la vuelve a colocar detrás de su espalda y luego elige revelar solo una de las dos bolas, eligiendo una de las dos al azar con la misma probabilidad. Él te preguntará: "¿Cambié la bola?" Todo este procedimiento se repite tantas veces como sea necesario.
Por supuesto, si se observan los colores de las bolas, se puede decir con certeza si las cambió o no. Por otro lado, si las bolas fueran del mismo color y, por lo tanto, indistinguibles, no habría forma de adivinar correctamente con una probabilidad superior al 50%.
Dado que la probabilidad de que hayas logrado identificar aleatoriamente cada interruptor/no interruptor es del 50%, la probabilidad de haber logrado identificar aleatoriamente todos los interruptores/no interruptores se acerca a cero ("certeza"). Si tú y tu amigo repiten esta "prueba" varias veces (por ejemplo, 20 veces), tu amigo debería convencerse ("completitud") de que las bolas son, en efecto, de diferentes colores.
La prueba anterior es de conocimiento cero porque su amigo nunca aprende qué bola es verde y cuál es roja; de hecho, no obtiene ningún conocimiento sobre cómo distinguir las bolas. [8]
Un ejemplo bien conocido de una prueba de conocimiento cero es el ejemplo de "¿Dónde está Wally?". En este ejemplo, el probador quiere demostrarle al verificador que sabe dónde está Wally en una página de un libro de "¿Dónde está Wally? ", sin revelar su ubicación al verificador. [9]
El verificador comienza tomando una gran tabla negra con un pequeño agujero en ella, del tamaño de Waldo. La tabla es el doble del tamaño del libro en ambas direcciones, por lo que el verificador no puede ver en qué parte de la página la está colocando el verificador. Luego, el verificador coloca la tabla sobre la página de modo que Waldo esté en el agujero. [9]
El verificador puede ahora mirar a través del agujero y ver a Waldo, pero no puede ver ninguna otra parte de la página. Por lo tanto, el probador ha demostrado al verificador que sabe dónde está Waldo, sin revelar ninguna otra información sobre su ubicación. [9]
Este ejemplo no es una prueba perfecta de conocimiento cero, porque el demostrador revela cierta información sobre la ubicación de Waldo, como la posición de su cuerpo. Sin embargo, es una ilustración decente del concepto básico de una prueba de conocimiento cero.
Una prueba de conocimiento cero de alguna afirmación debe satisfacer tres propiedades:
Las dos primeras son propiedades de sistemas de prueba interactivos más generales . La tercera es lo que hace que la prueba sea de conocimiento cero. [10]
Las pruebas de conocimiento cero no son pruebas en el sentido matemático del término porque existe una pequeña probabilidad, el error de solidez , de que un verificador tramposo sea capaz de convencer al verificador de una afirmación falsa. En otras palabras, las pruebas de conocimiento cero son "pruebas" probabilísticas en lugar de pruebas deterministas. Sin embargo, existen técnicas para reducir el error de solidez a valores insignificantemente pequeños (por ejemplo, adivinar correctamente cien o mil decisiones binarias tiene un error de solidez de 1/2 100 o 1/2 1000 , respectivamente. A medida que aumenta el número de bits, el error de solidez disminuye hacia cero).
Una definición formal de conocimiento cero debe utilizar algún modelo computacional, siendo el más común el de una máquina de Turing . Sean P , V y S máquinas de Turing. Un sistema de prueba interactivo con ( P , V ) para un lenguaje L es de conocimiento cero si para cualquier verificador de tiempo polinomial probabilístico (PPT) V̂ existe un simulador de PPT S tal que:
donde View V̂ [ P ( x )↔ V̂ ( x , z )] es un registro de las interacciones entre P ( x ) y V ( x , z ) . El demostrador P se modela como si tuviera un poder computacional ilimitado (en la práctica, P suele ser una máquina de Turing probabilística ). Intuitivamente, la definición establece que un sistema de prueba interactivo ( P , V ) es de conocimiento cero si para cualquier verificador V̂ existe un simulador eficiente S (dependiendo de V̂ ) que puede reproducir la conversación entre P y V̂ en cualquier entrada dada. La cadena auxiliar z en la definición juega el papel de "conocimiento previo" (incluidas las monedas aleatorias de V̂ ). La definición implica que V̂ no puede usar ninguna cadena de conocimiento previo z para extraer información de su conversación con P , porque si a S también se le da este conocimiento previo, entonces puede reproducir la conversación entre V̂ y P tal como antes. [ cita requerida ]
La definición dada es la de conocimiento cero perfecto. El conocimiento cero computacional se obtiene al exigir que las vistas del verificador V̂ y del simulador sean solo computacionalmente indistinguibles , dada la cadena auxiliar. [ cita requerida ]
Estas ideas se pueden aplicar a una aplicación criptográfica más realista. Peggy quiere demostrarle a Víctor que conoce el logaritmo discreto de un valor dado en un grupo dado . [11]
Por ejemplo, dado un valor y , un primo grande p y un generador , ella quiere probar que conoce un valor x tal que g x ≡ y (mod p ) , sin revelar x . De hecho, el conocimiento de x podría usarse como una prueba de identidad, en el sentido de que Peggy podría tener tal conocimiento porque eligió un valor aleatorio x que no reveló a nadie, calculó y = g x mod p y distribuyó el valor de y a todos los verificadores potenciales, de modo que en un momento posterior, probar el conocimiento de x es equivalente a probar la identidad como Peggy.
El protocolo se desarrolla de la siguiente manera: en cada ronda, Peggy genera un número aleatorio r , calcula C = g r mod p y se lo revela a Víctor. Después de recibir C , Víctor emite aleatoriamente una de las dos solicitudes siguientes: o bien solicita que Peggy revele el valor de r o bien el valor de ( x + r ) mod ( p − 1) .
Víctor puede verificar cualquiera de las respuestas; si solicitó r , puede calcular g r mod p y verificar que coincide con C. Si solicitó ( x + r ) mod ( p − 1) , puede verificar que C es consistente con esto, calculando g ( x + r ) mod ( p − 1) mod p y verificando que coincide con ( C · y ) mod p . Si Peggy conoce de hecho el valor de x , puede responder a cualquiera de los posibles desafíos de Víctor.
Si Peggy supiera o pudiera adivinar qué desafío va a lanzar Víctor, entonces podría engañar fácilmente y convencer a Víctor de que sabe x cuando no es así: si sabe que Víctor va a solicitar r , entonces procede normalmente: elige r , calcula C = g r mod p y revela C a Víctor; podrá responder al desafío de Víctor. Por otro lado, si sabe que Víctor solicitará ( x + r ) mod ( p − 1) , entonces elige un valor aleatorio r ′ , calcula C ′ ≡ g r ′ · ( g x ) −1 mod p y revela C ′ a Víctor como el valor de C que él espera. Cuando Víctor la desafía a revelar ( x + r ) mod ( p − 1) , ella revela r ′ , para lo cual Víctor verificará la consistencia, ya que a su vez calculará g r ′ mod p , que coincide con C ′ · y , ya que Peggy multiplicó por el inverso multiplicativo modular de y .
Sin embargo, si en cualquiera de los escenarios anteriores Víctor plantea un desafío distinto del que ella esperaba y para el cual fabricó el resultado, entonces no podrá responder al desafío bajo el supuesto de inviabilidad de resolver el logaritmo discreto para este grupo. Si eligió r y reveló C = g r mod p , entonces no podrá producir un ( x + r ) mod ( p − 1) válido que pase la verificación de Víctor, dado que no conoce x . Y si eligió un valor r ′ que se plantea como ( x + r ) mod ( p − 1) , entonces tendría que responder con el logaritmo discreto del valor que reveló - pero Peggy no conoce este logaritmo discreto, ya que el valor C que reveló se obtuvo a través de aritmética con valores conocidos, y no calculando una potencia con un exponente conocido.
Por lo tanto, un probador tramposo tiene una probabilidad de 0,5 de hacer trampa con éxito en una ronda. Al ejecutar una cantidad suficientemente grande de rondas, la probabilidad de que un probador tramposo tenga éxito puede hacerse arbitrariamente baja.
Para demostrar que la prueba interactiva anterior no proporciona ningún conocimiento aparte del hecho de que Peggy sabe x , se pueden utilizar argumentos similares a los utilizados en la prueba anterior de completitud y solidez. En concreto, un simulador, digamos Simon, que no sabe x , puede simular el intercambio entre Peggy y Victor mediante el siguiente procedimiento. En primer lugar, Simon lanza al azar una moneda. Si el resultado es "cara", entonces elige un valor aleatorio r , calcula C = g r mod p y revela C como si fuera un mensaje de Peggy a Victor. A continuación, Simon también emite un mensaje "solicita el valor de r " como si se lo enviara de Victor a Peggy, e inmediatamente emite el valor de r como si se lo enviara de Peggy a Victor. Se completa una sola ronda. Por otro lado, si el resultado del lanzamiento de la moneda es "cruz", Simon elige un número aleatorio r ′ , calcula C ′ = g r ′ · y −1 mod p y revela C ′ como si fuera un mensaje de Peggy a Victor. Luego, Simon emite "solicita el valor de ( x + r ) mod ( p − 1) " como si fuera un mensaje de Victor a Peggy. Finalmente, Simon emite el valor de r ′ como si fuera la respuesta de Peggy a Victor. Se completa una sola ronda. Por los argumentos anteriores al probar la completitud y solidez, la comunicación interactiva simulada por Simon es indistinguible de la correspondencia verdadera entre Peggy y Victor. Por lo tanto, la propiedad de conocimiento cero está garantizada.
Peggy demuestra conocer el valor de x (por ejemplo su contraseña).
El valor ( x + r ) mod ( p − 1) puede verse como el valor cifrado de x mod ( p − 1) . Si r es verdaderamente aleatorio, distribuido uniformemente entre cero y p − 2 , entonces esto no filtra ninguna información sobre x (ver block de un solo uso ).
El siguiente esquema se debe a Manuel Blum . [12]
En este escenario, Peggy conoce un ciclo hamiltoniano para un grafo grande G. Victor conoce G pero no el ciclo (por ejemplo, Peggy ha generado G y se lo ha revelado). Se cree que encontrar un ciclo hamiltoniano dado un grafo grande es computacionalmente inviable, ya que se sabe que su versión de decisión correspondiente es NP-completa . Peggy probará que conoce el ciclo sin simplemente revelarlo (tal vez Victor esté interesado en comprarlo pero quiere la verificación primero, o tal vez Peggy sea la única que conoce esta información y esté probando su identidad a Victor).
Para demostrar que Peggy conoce este ciclo hamiltoniano, ella y Víctor juegan varias rondas de un juego:
Es importante que el compromiso con el grafo sea tal que Víctor pueda verificar, en el segundo caso, que el ciclo está realmente formado por aristas desde H. Esto se puede hacer, por ejemplo, comprometiéndose con cada arista (o falta de ella) por separado.
Si Peggy conoce un ciclo hamiltoniano en G , entonces puede satisfacer fácilmente la demanda de Víctor de un isomorfismo gráfico que produzca H a partir de G (al que se había comprometido en el primer paso) o de un ciclo hamiltoniano en H (que puede construir aplicando el isomorfismo al ciclo en G ).
Las respuestas de Peggy no revelan el ciclo hamiltoniano original en G. En cada ronda, Víctor aprenderá solo el isomorfismo de H a G o un ciclo hamiltoniano en H. Necesitaría ambas respuestas para una sola H para descubrir el ciclo en G , por lo que la información permanece desconocida mientras Peggy pueda generar una H distinta en cada ronda. Si Peggy no sabe de un ciclo hamiltoniano en G , pero de alguna manera supiera de antemano lo que Víctor pediría ver en cada ronda, entonces podría hacer trampa. Por ejemplo, si Peggy supiera de antemano que Víctor pediría ver el ciclo hamiltoniano en H , entonces podría generar un ciclo hamiltoniano para un grafo no relacionado. De manera similar, si Peggy supiera de antemano que Víctor pediría ver el isomorfismo, entonces podría simplemente generar un grafo isomorfo H (en el que tampoco conoce un ciclo hamiltoniano). Víctor podría simular el protocolo por sí mismo (sin Peggy) porque sabe lo que pedirá ver. Por lo tanto, Víctor no obtiene información sobre el ciclo hamiltoniano en G a partir de la información revelada en cada ronda.
Si Peggy no conoce la información, entonces puede adivinar qué pregunta hará Víctor y generar un grafo isomorfo a G o un ciclo hamiltoniano para un grafo no relacionado, pero como no conoce un ciclo hamiltoniano para G , no puede hacer ambas cosas. Con esta suposición, su probabilidad de engañar a Víctor es 2 − n , donde n es el número de rondas. Para todos los propósitos realistas, es increíblemente difícil derrotar una prueba de conocimiento cero con un número razonable de rondas de esta manera.
Se pueden definir diferentes variantes del conocimiento cero formalizando el concepto intuitivo de lo que se entiende por que la salida del simulador "se parece" a la ejecución del protocolo de prueba real de las siguientes maneras:
Existen varios tipos de pruebas de conocimiento cero:
Los esquemas de prueba de conocimiento cero se pueden construir a partir de varias primitivas criptográficas, como la criptografía basada en hash , la criptografía basada en emparejamiento , el cálculo multipartito o la criptografía basada en celosía .
La investigación en pruebas de conocimiento cero ha sido motivada por sistemas de autenticación en los que una parte quiere demostrar su identidad a una segunda parte mediante información secreta (como una contraseña), pero no quiere que la segunda parte conozca nada sobre este secreto. Esto se llama " prueba de conocimiento de conocimiento cero ". Sin embargo, una contraseña suele ser demasiado pequeña o insuficientemente aleatoria para ser utilizada en muchos esquemas de pruebas de conocimiento de conocimiento cero. Una prueba de contraseña de conocimiento cero es un tipo especial de prueba de conocimiento de conocimiento cero que aborda el tamaño limitado de las contraseñas. [ cita requerida ]
En abril de 2015, se introdujo el protocolo de pruebas uno de muchos (un protocolo Sigma ). [14] En agosto de 2021, Cloudflare , una empresa estadounidense de seguridad e infraestructura web, decidió utilizar el mecanismo de pruebas uno de muchos para la verificación web privada utilizando hardware del proveedor. [15]
Uno de los usos de las pruebas de conocimiento cero dentro de los protocolos criptográficos es imponer un comportamiento honesto manteniendo la privacidad. En líneas generales, la idea es obligar a un usuario a demostrar, utilizando una prueba de conocimiento cero, que su comportamiento es correcto de acuerdo con el protocolo. [16] [17] Debido a la solidez, sabemos que el usuario debe actuar realmente honestamente para poder proporcionar una prueba válida. Debido al conocimiento cero, sabemos que el usuario no compromete la privacidad de sus secretos en el proceso de proporcionar la prueba. [ cita requerida ]
En 2016, el Laboratorio de Física del Plasma de Princeton y la Universidad de Princeton demostraron una técnica que podría tener aplicación en futuras conversaciones sobre desarme nuclear . Permitiría a los inspectores confirmar si un objeto es o no un arma nuclear sin registrar, compartir o revelar su funcionamiento interno, que podría ser secreto. [18]
Las pruebas de conocimiento cero se aplicaron en los protocolos Zerocoin y Zerocash, que culminaron en el nacimiento de las criptomonedas Zcoin [19] (posteriormente rebautizada como Firo en 2020) [20] y Zcash en 2016. Zerocoin tiene un modelo de mezcla incorporado que no confía en ningún par o proveedor de mezcla centralizado para garantizar el anonimato. [19] Los usuarios pueden realizar transacciones en una moneda base y pueden hacer circular la moneda dentro y fuera de Zerocoins. [21] El protocolo Zerocash utiliza un modelo similar (una variante conocida como prueba de conocimiento cero no interactiva ) [22] excepto que puede ocultar el monto de la transacción, mientras que Zerocoin no puede. Dadas las restricciones significativas de los datos de transacción en la red Zerocash, Zerocash es menos propenso a ataques de sincronización de privacidad en comparación con Zerocoin. Sin embargo, esta capa adicional de privacidad puede causar una hiperinflación potencialmente no detectada de la oferta de Zerocash porque las monedas fraudulentas no pueden rastrearse. [19] [23]
En 2018, se introdujeron las Bulletproofs. Las Bulletproofs son una mejora de las pruebas de conocimiento cero no interactivas donde no se necesita una configuración confiable. [24] Más tarde se implementó en el protocolo Mimblewimble (en el que se basan las criptomonedas Grin y Beam) y la criptomoneda Monero . [25] En 2019, Firo implementó el protocolo Sigma, que es una mejora del protocolo Zerocoin sin configuración confiable. [26] [14] En el mismo año, Firo introdujo el protocolo Lelantus, una mejora del protocolo Sigma, donde el primero oculta el origen y el monto de una transacción. [27]
Las pruebas de conocimiento cero, por su naturaleza, pueden mejorar la privacidad en los sistemas de intercambio de identidad, que son vulnerables a las violaciones de datos y al robo de identidad. Cuando se integran a un sistema de identificación descentralizado, las pruebas de conocimiento cero añaden una capa adicional de cifrado a los documentos DID. [28]
Las pruebas de conocimiento cero fueron concebidas por primera vez en 1985 por Shafi Goldwasser , Silvio Micali y Charles Rackoff en su artículo "La complejidad del conocimiento de los sistemas de prueba interactivos". [16] Este artículo introdujo la jerarquía IP de los sistemas de prueba interactivos ( ver sistema de prueba interactivo ) y concibió el concepto de complejidad del conocimiento , una medida de la cantidad de conocimiento sobre la prueba transferida del probador al verificador. También dieron la primera prueba de conocimiento cero para un problema concreto, el de decidir residuos no cuadráticos mod m . Junto con un artículo de László Babai y Shlomo Moran , este artículo histórico inventó los sistemas de prueba interactivos, por los cuales los cinco autores ganaron el primer Premio Gödel en 1993.
En sus propias palabras, Goldwasser, Micali y Rackoff dicen:
De particular interés es el caso donde este conocimiento adicional es esencialmente 0 y mostramos que [es] posible probar interactivamente que un número es residuo cuadrático no mod m liberando 0 conocimiento adicional. Esto es sorprendente ya que no se conoce ningún algoritmo eficiente para decidir residuosidad cuadrática mod m cuando no se da la factorización de m . Además, todas las pruebas NP conocidas para este problema exhiben la factorización prima de m . Esto indica que agregar interacción al proceso de prueba puede disminuir la cantidad de conocimiento que debe comunicarse para probar un teorema.
El problema de los residuos cuadráticos no complejos tiene un algoritmo NP y uno co-NP , y por lo tanto se encuentra en la intersección de NP y co-NP . Esto también fue cierto en el caso de varios otros problemas para los que se descubrieron posteriormente pruebas de conocimiento cero, como un sistema de pruebas no publicado de Oded Goldreich que verifica que un módulo de dos primos no es un entero de Blum . [29]
Oded Goldreich , Silvio Micali y Avi Wigderson llevaron esto un paso más allá, mostrando que, asumiendo la existencia de un cifrado irrompible, se puede crear un sistema de prueba de conocimiento cero para el problema de coloración de grafos NP-completos con tres colores. Dado que cada problema en NP se puede reducir eficientemente a este problema, esto significa que, bajo este supuesto, todos los problemas en NP tienen pruebas de conocimiento cero. [30] La razón para el supuesto es que, como en el ejemplo anterior, sus protocolos requieren cifrado. Una condición suficiente citada comúnmente para la existencia de cifrado irrompible es la existencia de funciones unidireccionales , pero es concebible que algunos medios físicos también puedan lograrlo.
Además de esto, también demostraron que el problema de no isomorfismo de grafos , el complemento del problema de isomorfismo de grafos , tiene una prueba de conocimiento cero. Este problema está en co-NP , pero actualmente no se sabe que esté en NP ni en ninguna clase práctica. De manera más general, Russell Impagliazzo y Moti Yung , así como Ben-Or et al., continuarían demostrando que, también asumiendo funciones unidireccionales o cifrado irrompible, existen pruebas de conocimiento cero para todos los problemas en IP = PSPACE , o en otras palabras, cualquier cosa que pueda probarse mediante un sistema de prueba interactivo puede probarse con conocimiento cero. [31] [32]
Muchos teóricos, que no querían hacer suposiciones innecesarias, buscaron una forma de eliminar la necesidad de funciones unidireccionales . Una forma de hacerlo fue con sistemas de prueba interactivos con múltiples probadores (ver sistema de prueba interactivo ), que tienen múltiples probadores independientes en lugar de solo uno, lo que permite al verificador "interrogar" a los probadores de forma aislada para evitar ser engañado. Se puede demostrar que, sin ninguna suposición de intratabilidad, todos los lenguajes en NP tienen pruebas de conocimiento cero en un sistema de este tipo. [33]
Resulta que, en un entorno similar a Internet, donde se pueden ejecutar varios protocolos simultáneamente, la creación de pruebas de conocimiento cero es más desafiante. La línea de investigación que investiga las pruebas de conocimiento cero concurrentes fue iniciada por el trabajo de Dwork , Naor y Sahai . [34] Un desarrollo particular en esta línea ha sido el desarrollo de protocolos de prueba indistinguibles de testigos . La propiedad de indistinguibilidad de testigos está relacionada con la del conocimiento cero, pero los protocolos indistinguibles de testigos no sufren los mismos problemas de ejecución concurrente. [35]
Otra variante de las pruebas de conocimiento cero son las pruebas de conocimiento cero no interactivas . Blum, Feldman y Micali demostraron que una cadena aleatoria común compartida entre el probador y el verificador es suficiente para lograr un conocimiento cero computacional sin requerir interacción. [5] [6]
Los protocolos de prueba de conocimiento cero interactivos o no interactivos más populares (por ejemplo, zk-SNARK) se pueden categorizar ampliamente en las siguientes cuatro categorías: Argumentos de conocimiento no interactivos sucintos (SNARK), Argumentos de conocimiento transparentes escalables (STARK), Delegación polinomial verificable (VPD) y Argumentos no interactivos sucintos (SNARG). A continuación, se proporciona una lista de protocolos y bibliotecas de prueba de conocimiento cero junto con comparaciones basadas en transparencia , universalidad , seguridad postcuántica plausible y paradigma de programación . [36] Un protocolo transparente es uno que no requiere ninguna configuración confiable y utiliza aleatoriedad pública. Un protocolo universal es uno que no requiere una configuración confiable separada para cada circuito. Finalmente, un protocolo postcuántico plausible es uno que no es susceptible a ataques conocidos que involucran algoritmos cuánticos.
{{cite book}}
: CS1 maint: location missing publisher (link){{cite book}}
: CS1 maint: location missing publisher (link)