Articulo de referencia

Prueba de conocimiento

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áqui...

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 .

Dejarincógnita{\displaystyle x}ser una declaración de lenguajeL{\displaystyle L}en NP yW(incógnita){\displaystyle W(x)}el conjunto de testigos para x que deben ser aceptados en la prueba. Esto nos permite definir la siguiente relación:R={(incógnita,w):incógnitaL,wW(incógnita)}{\displaystyle R=\{(x,w):x\in L,w\in W(x)\}}.

Una prueba de conocimiento para la relaciónR{\displaystyle R}con error de conocimientoκ{\displaystyle \kappa }es un protocolo de dos partes con un probadorPAG{\displaystyle P}y un verificadorV{\displaystyle V}con las dos propiedades siguientes:

  1. Completitud : Si(incógnita,w)R{\displaystyle (x,w)\in R}, entonces el probadorPAG{\displaystyle P}quién conoce testigow{\displaystyle w}paraincógnita{\displaystyle x}logra convencer al verificadorV{\displaystyle V}de su conocimiento. Más formalmente:Pr(PAG(incógnita,w)V(incógnita)1)=1{\displaystyle \Pr(P(x,w)\leftrightarrow V(x)\rightarrow 1)=1}, es decir, dada la interacción entre el probador P y el verificador V, la probabilidad de que el verificador esté convencido es 1.
  2. Validez : La validez requiere que la probabilidad de éxito de un extractor de conocimientomi{\displaystyle E}al extraer al testigo, se le otorgó acceso oracular a un probador posiblemente malicioso.PAG~{\displaystyle {\tilde {P}}}debe ser al menos tan alta como la probabilidad de éxito del probador.PAG~{\displaystyle {\tilde {P}}}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 ]

DejarR{\displaystyle R}ser un pariente testigo,W(incógnita){\displaystyle W(x)}el conjunto de todos los testigos de interés públicoincógnita{\displaystyle x}, yκ{\displaystyle \kappa }el error de conocimiento. Una prueba de conocimiento esκ{\displaystyle \kappa }-válido si existe una máquina de tiempo polinomialmi{\displaystyle E}, dado el acceso al oráculo aPAG~{\displaystyle {\tilde {P}}}, de tal manera que para cadaPAG~{\displaystyle {\tilde {P}}}, es el caso quemiPAG~(incógnita)(incógnita)W(incógnita){}{\displaystyle E^{{\tilde {P}}(x)}(x)\in W(x)\cup \{\bot \}}yPr(miPAG~(incógnita)(incógnita)W(incógnita))Pr(PAG~(incógnita)V(incógnita)1)κ(incógnita).{\displaystyle \Pr(E^{{\tilde {P}}(x)}(x)\in W(x))\geq \Pr({\tilde {P}}(x)\leftrightarrow V(x)\rightarrow 1)-\kappa (x).}

El resultado{\displaystyle \bot }significa que la máquina de Turingmi{\displaystyle E}No se llegó a ninguna conclusión.

El error del conocimientoκ(incógnita){\displaystyle \kappa (x)}denota la probabilidad de que el verificadorV{\displaystyle V}podría aceptarincógnita{\displaystyle x}, aunque el probador en realidad no conoce a un testigow{\displaystyle w}El extractor de conocimientomi{\displaystyle E}se utiliza para expresar lo que se entiende por el conocimiento de una máquina de Turing . Simi{\displaystyle E}puede extraerw{\displaystyle w}dePAG~{\displaystyle {\tilde {P}}}, decimos quePAG~{\displaystyle {\tilde {P}}}conoce el valor dew{\displaystyle w}.

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κ(incógnita){\displaystyle \kappa (x)}, como por ejemplo280{\displaystyle 2^{-80}}o1/pagoly(|incógnita|){\displaystyle 1/\mathrm {poly} (|x|)}, 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:

Dejargramo{\displaystyle \langle g\rangle }ser un grupo cíclico con generadorgramo{\displaystyle g}en el que se cree que resolver el problema del logaritmo discreto es difícil. Decidir la pertenencia al lenguajeL={incógnitagramow=incógnita}{\displaystyle L=\{x\mid g^{w}=x\}}es trivial, como todoincógnita{\displaystyle x}está engramo{\displaystyle \langle g\rangle }Sin embargo, encontrar al testigow{\displaystyle w}de tal manera quegramow=incógnita{\displaystyle g^{w}=x}Esto 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íclicoGRAMOq{\displaystyle G_{q}}del ordenq{\displaystyle q}con generadorgramo{\displaystyle g}.

Para demostrar conocimiento deincógnita=registrogramoy{\displaystyle x=\log _{g}y}El probador interactúa con el verificador de la siguiente manera:

  1. En la primera ronda, el probador se compromete con el azar.r{\displaystyle r}; por lo tanto el primer mensajet=gramor{\displaystyle t=g^{r}}También se le llama compromiso .
  2. El verificador responde con un desafío.do{\displaystyle c}elegido al azar.
  3. Después de recibirdo{\displaystyle c}, el probador envía el tercer y último mensaje (la respuesta )s=r+doincógnita{\displaystyle s=r+cx}reducido módulo el orden del grupo.

El verificador acepta, sigramos=tydo{\displaystyle g^{s}=ty^{c}}.

Podemos ver que se trata de una prueba de conocimiento válida porque tiene un extractor que funciona de la siguiente manera:

  1. Simular que el probador genere una salidat=gramor{\displaystyle t=g^{r}}El probador se encuentra ahora en estadoQ{\displaystyle Q}.
  2. Generar valor aleatoriodo1{\displaystyle c_{1}}y lo introduce en el probador. El resultado es:s1=r+do1incógnita{\displaystyle s_{1}=r+c_{1}x}.
  3. Rebobinar al probador para afirmarQ{\displaystyle Q}Ahora genera un valor aleatorio diferente.do2{\displaystyle c_{2}}y ingréselo al probador para obtenerlo.s2=r+do2incógnita{\displaystyle s_{2}=r+c_{2}x}.
  4. Producción(s1s2)(do1do2)1{\displaystyle (s_{1}-s_{2})(c_{1}-c_{2})^{-1}}.

Desde(s1s2)=(r+do1incógnita)(r+do2incógnita)=incógnita(do1do2){\displaystyle (s_{1}-s_{2})=(r+c_{1}x)-(r+c_{2}x)=x(c_{1}-c_{2})}, la salida del extractor es precisamenteincógnita{\displaystyle x}.

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 dey1{\displaystyle y_{1}}yy2{\displaystyle y_{2}}con respecto a las basesgramo1{\displaystyle g_{1}}ygramo2{\displaystyle g_{2}}son iguales o cumplen alguna otra relación lineal . Para los elementos a y b deZq{\displaystyle Z_{q}}, decimos que el probador prueba el conocimiento deincógnita1{\displaystyle x_{1}}yincógnita2{\displaystyle x_{2}}de tal manera quey1=gramo1incógnita1y2=gramo2incógnita2{\displaystyle y_{1}=g_{1}^{x_{1}}\land y_{2}=g_{2}^{x_{2}}}yincógnita2=aincógnita1+b{\displaystyle x_{2}=ax_{1}+b}La igualdad corresponde al caso especial donde a  =  1 y b  =  0. Comoincógnita2{\displaystyle x_{2}}se puede calcular trivialmente a partir deincógnita1{\displaystyle x_{1}}Esto es equivalente a probar el conocimiento de un x tal quey1=gramo1incógnitay2=(gramo2a)incógnitagramo2b{\displaystyle y_{1}=g_{1}^{x}\land y_{2}={(g_{2}^{a})}^{x}g_{2}^{b}}.

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.

PAGK{(incógnita):y1=gramo1incógnitay2=(gramo2a)incógnitagramo2b},{\displaystyle PK\{(x):y_{1}=g_{1}^{x}\land y_{2}={(g_{2}^{a})}^{x}g_{2}^{b}\},}

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

  1. 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 .
  2. 1 2 Mihir Bellare , Oded Goldreich: Sobre la definición de pruebas de conocimiento . CRYPTO 1992: 390–420
  3. 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
  4. Sobre los protocolos Sigma
  5. Cramer, Ronald (1996). Diseño modular de protocolos criptográficos seguros y prácticos (tesis doctoral). CWI y Universidad de Ámsterdam.
  6. Sistemas de demostración para afirmaciones generales sobre logaritmos discretos