Algoritmo de identificación de Schnorr

De Wikipedia, la enciclopedia libre

El Algoritmo de identificación de Schnorr es un esquema de identificación que se puede usar como prueba de conocimiento cero del conocimiento de la clave secreta del algoritmo de cifrado de ElGamal sin revelarla.[1]

Descripción[editar]

El esquema requiere que una autoridad confiable, vamos a llamar TA, defina una serie de parámetros públicos para el esquema que cumplan una serie de propiedades:[2]

  • p es un primo grande ()
  • q es un primo grande divisor de p-1 ()
  • tiene orden q por lo que es generador de un grupo el cual es un subrupo de
  • t es un parámetro de seguridad tal que (La probabilidad del adversario de engañar a Alice o Bob será , así que t=40 dará una seguridad adecuada para la mayor parte de las aplicaciones)

Los parámetros p,q,g y t son públicos y serán usados por todas las parte en la red

Cada usuario de la red escoge su que se va a llamar clave secreta. A partir de ella construye que será la correspondiente clave pública. Para calcularla podemos aprovechar que g tiene orden q en y por tanto . Para cada usuario de la red (información de identificación) la TA certificará (creando un certificado con firma digital) su clave pública. El certificado también puede contener los parámetros p,q,g y t públicos.[2]

Con el siguiente algoritmo el probador P puede probar que conoce x sin revelarlo al verificador V:[2][1]

  1. P escoge de forma aleatoria un valor , y envía a V su certificado y
  2. V verifica, a partir del certificado, que la clave pública de P es y. A continuación envía a P un desafío aleatorio y
  3. P calcula y envía a V
  4. V verifica la identidad de P si y solo si se cumple ya que

Ejemplo[editar]

Veamos un ejemplo de aplicación de algoritmo omitiendo la parte del certificado emitido por la TA[2]

  • Supongamos p=88667, q=1031, t=10 y g=70322.
  • Supongamos que Alicia escoge como clave privada x=755.
  • Por tanto la clave pública es
  • Supongamos que Alicia escoge c=543. Por tanto
  • Supongamos que Bob escoge el desafío e=1000. Entonces Alicia computa
  • Bob verifica que

Propiedades[editar]

Se puede demostrar que el algoritmo de identificación de Schnorr es muy rápido y eficiente, tanto desde un punto de vista computacional como de la cantidad de información que necesita ser intercambiada entre las partes.[2]

Se puede demostrar que un parámetro de seguridad t suficientemente grande evita que un impostor pueda suplantar la identidad de un usuario legítimo. La probabilidad de que un impostor pueda suplantar es siempre que e sea elegida de forma aleatoria.[2]

Se puede demostrar que el sistema propuesto verifica los requisitos de una prueba de conocimiento cero: Totalidad, solvencia y conocimiento cero. Esto implica que el sistema es seguro bajo la suposición de la clave privada es imposible de calcular (logaritmo discreto).[2]

Prueba de conocimiento cero de clave de cifrado de ElGamal[editar]

Además, para un texto cifrado de ElGamal , el algoritmo de identificación de Schnorr puede ser usado para probar el conocimiento del texto plano m sin revelarlo. El protocolo primero prueba que P conoce el factor de cegado r en . Como es un parámetro público, si P conoce r, puede recuperar m calculando . Por tanto el protocolo también prueba que P conoce el texto plano m.[1]

Referencias[editar]

  1. a b c Verifiable Voting Systems Archivado el 15 de octubre de 2013 en Wayback Machine.. Thea Peacock, Peter Y. A. Ryan, Steve Schneider y Zhe Xia. University of Luxembourgy University of Surrey
  2. a b c d e f g Cryptography. Theory and practice Archivado el 28 de febrero de 2019 en Wayback Machine.. Third Edition. Douglas R. Stinson. University of Waterloo. Chapman & Hall/CRC. 2006