En criptografía , una prueba de conocimiento es una prueba interactiva en la que el probador logra "convencer" a un verificador de que sabe algo. El significado de que una máquina "sabe algo" se define en términos de computación. Una máquina "sabe algo" si este algo puede ser computado, dado a la máquina como entrada. Dado que el programa del probador no necesariamente produce el conocimiento en sí (como ocurre con las pruebas de conocimiento cero [ 1 ] ), se introduce una máquina con un programa diferente, llamada extractor de conocimiento, para capturar esta idea. Nos interesa principalmente lo que pueden probar las máquinas con tiempo de ejecución polinomial . En este caso, el conjunto de elementos de conocimiento se limita a un conjunto de testigos de algún lenguaje en NP .
Dejarser una declaración de lenguajeen NP yel conjunto de testigos para x que deben ser aceptados en la prueba. Esto nos permite definir la siguiente relación:.
Una prueba de conocimiento para la relacióncon error de conocimientoes un protocolo de dos partes con un probadory un verificadorcon las dos propiedades siguientes:
- Completitud : Si, entonces el probadorquién conoce testigoparalogra convencer al verificadorde su conocimiento. Más formalmente:, es decir, dada la interacción entre el probador P y el verificador V, la probabilidad de que el verificador esté convencido es 1.
- Validez : La validez requiere que la probabilidad de éxito de un extractor de conocimientoal extraer al testigo, se le otorgó acceso oracular a un probador posiblemente malicioso.debe ser al menos tan alta como la probabilidad de éxito del probador.para convencer al verificador. Esta propiedad garantiza que ningún probador que no conozca al testigo pueda lograr convencer al verificador.
Detalles sobre la definición
Esta es una definición más rigurosa de Validez : [ 2 ]
Dejarser un pariente testigo,el conjunto de todos los testigos de interés público, yel error de conocimiento. Una prueba de conocimiento es-válido si existe una máquina de tiempo polinomial, dado el acceso al oráculo a, de tal manera que para cada, es el caso quey
El resultadosignifica que la máquina de TuringNo se llegó a ninguna conclusión.
El error del conocimientodenota la probabilidad de que el verificadorpodría aceptar, aunque el probador en realidad no conoce a un testigoEl extractor de conocimientose utiliza para expresar lo que se entiende por el conocimiento de una máquina de Turing . Sipuede extraerde, decimos queconoce el valor de.
Esta definición de la propiedad de validez es una combinación de las propiedades de validez y validez fuerte. [ 2 ] Para pequeños errores de conocimiento, como por ejemploo, puede considerarse más fuerte que la solidez de las pruebas interactivas ordinarias .
Relación con las pruebas interactivas generales
Para definir una prueba de conocimiento específica, no solo es necesario definir el lenguaje, sino también los testigos que el verificador debe conocer. En algunos casos, probar la pertenencia a un lenguaje puede ser sencillo, mientras que calcular un testigo específico puede resultar difícil. Esto se explica mejor con un ejemplo:
Dejarser un grupo cíclico con generadoren el que se cree que resolver el problema del logaritmo discreto es difícil. Decidir la pertenencia al lenguajees trivial, como todoestá enSin embargo, encontrar al testigode tal manera queEsto corresponde a resolver el problema del logaritmo discreto.
Protocolos
Protocolo de Schnorr
Una de las pruebas de conocimiento más simples y frecuentemente utilizadas, la prueba de conocimiento de un logaritmo discreto , se debe a Schnorr. [ 3 ] El protocolo se define para un grupo cíclicodel ordencon generador.
Para demostrar conocimiento deEl probador interactúa con el verificador de la siguiente manera:
- En la primera ronda, el probador se compromete con el azar.; por lo tanto el primer mensajeTambién se le llama compromiso .
- El verificador responde con un desafío.elegido al azar.
- Después de recibir, el probador envía el tercer y último mensaje (la respuesta )reducido módulo el orden del grupo.
El verificador acepta, si.
Podemos ver que se trata de una prueba de conocimiento válida porque tiene un extractor que funciona de la siguiente manera:
- Simular que el probador genere una salidaEl probador se encuentra ahora en estado.
- Generar valor aleatorioy lo introduce en el probador. El resultado es:.
- Rebobinar al probador para afirmarAhora genera un valor aleatorio diferente.y ingréselo al probador para obtenerlo..
- Producción.
Desde, la salida del extractor es precisamente.
Este protocolo resulta ser de conocimiento cero , aunque esa propiedad no es necesaria para una prueba de conocimiento.
Protocolos Sigma
Los protocolos que tienen la estructura de tres movimientos mencionada anteriormente (compromiso, desafío y respuesta) se denominan protocolos sigma . [ 4 ] El nombre proviene de Sig, que se refiere al zigzag que simboliza los tres movimientos del protocolo, y MA, una abreviatura de "Merlín-Arturo". [ 5 ] Los protocolos sigma existen para probar diversas afirmaciones, como las relativas a los logaritmos discretos. Utilizando estas pruebas, el probador no solo puede probar el conocimiento del logaritmo discreto, sino también que el logaritmo discreto es de una forma específica. Por ejemplo, es posible probar que dos logaritmos deycon respecto a las basesyson iguales o cumplen alguna otra relación lineal . Para los elementos a y b de, decimos que el probador prueba el conocimiento deyde tal manera queyLa igualdad corresponde al caso especial donde a = 1 y b = 0. Comose puede calcular trivialmente a partir deEsto es equivalente a probar el conocimiento de un x tal que.
Esta es la intuición detrás de la siguiente notación, [ 6 ] que se usa comúnmente para expresar qué es exactamente lo que se prueba mediante una prueba de conocimiento.
afirma que el probador conoce un x que cumple la relación anterior.
Aplicaciones
Las pruebas de conocimiento son una herramienta útil para la construcción de protocolos de identificación y, en su variante no interactiva, esquemas de firma. Dichos esquemas son:
También se utilizan en la construcción de sistemas de firmas grupales y credenciales digitales anónimas .
Véase también
Referencias
- ↑ Shafi Goldwasser , Silvio Micali y Charles Rackoff . La complejidad del conocimiento de los sistemas de prueba interactivos . Actas del 17.º Simposio sobre la Teoría de la Computación , Providence, Rhode Island. 1985. Borrador. Resumen extendido .
- 1 2 Mihir Bellare , Oded Goldreich: Sobre la definición de pruebas de conocimiento . CRYPTO 1992: 390–420
- ↑ CP Schnorr , Identificación y firmas eficientes para tarjetas inteligentes, en G Brassard, ed. Avances en criptología – Crypto '89, 239–252, Springer-Verlag , 1990. Lecture Notes in Computer Science, n.º 435
- ↑Sobre los protocolos Sigma
- ↑ Cramer, Ronald (1996). Diseño modular de protocolos criptográficos seguros y prácticos (tesis doctoral). CWI y Universidad de Ámsterdam.
- ↑ Sistemas de demostración para afirmaciones generales sobre logaritmos discretos
- Teoría de la complejidad computacional
- Criptografía