El protocolo Fiat-Shamir es uno de los protocolos de identificación de conocimiento cero más conocidos . El protocolo fue propuesto por Amos Fiat y Adi Shamir
Hágale saber a A algunos secretos . Es necesario demostrar el conocimiento de este secreto a alguna parte B sin revelar ninguna información secreta. La seguridad del protocolo se basa en la dificultad de extraer la raíz cuadrada módulo de un número compuesto n suficientemente grande cuya factorización se desconoce.
A le demuestra a B que sabe s en t rondas. La ronda también se llama acreditación. Cada acreditación consta de 3 etapas.
Las siguientes acciones se realizan secuencial e independientemente t veces. B considera probado el conocimiento si todas las rondas fueron exitosas.
La elección de e del conjunto {0,1} implica que si la parte A realmente conoce el secreto, siempre podrá responder correctamente, independientemente de la elección de e . Digamos que A quiere engañar a B. En este caso, A , solo puede responder a un valor específico de e . Por ejemplo, si A sabe que obtendrá e = 0, entonces A debe actuar estrictamente de acuerdo con las instrucciones y B aceptará la respuesta. Si A sabe que recibirá e = 1, entonces A elige una r aleatoria y la envía al lado B , como resultado obtenemos la deseada . El problema es que A inicialmente no sabe qué e recibirá y por lo tanto no puede con un 100% de probabilidad enviar al lado B la r y la x necesarias para engañar ( para e = 0 y para e = 1). Por lo tanto, la probabilidad de hacer trampa en una ronda es del 50%. Para reducir la probabilidad de hacer trampa (es igual a ) t se elige suficientemente grande ( t =20, t =40). Por lo tanto, B se asegura de que A sepa si y solo si todas las t rondas han tenido éxito.
Dónde
Si e era igual a 0, entonces Confirmado.
De lo contrario,
y Confirmado.