Algoritmo de identificación de Schnorr

De testwiki
Ir a la navegación Ir a la búsqueda

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

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 (p21024)
  • q es un primo grande divisor de p-1 (q2160)
  • gZp* tiene orden q por lo que es generador de un grupo Gq el cual es un subrupo de Zp*
  • t es un parámetro de seguridad tal que q>2t (La probabilidad del adversario de engañar a Alice o Bob será 2t, 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 xZq,0xq1 que se va a llamar clave secreta. A partir de ella construye y=gx(modp) que será la correspondiente clave pública. Para calcularla podemos aprovechar que g tiene orden q en Zp* y por tanto y=gx(modp)=gqx(modp). 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 cZq,0cq1, y envía a V su certificado y w=gc(modp)
  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 eZq y 1e2t
  3. P calcula s=c+xe (mod q) y envía s a V
  4. V verifica la identidad de P si y solo si se cumple w=gsye(modp) ya que
gsye(modp)=gc+xeye(modp)=gc+xegxe(modp)=gc(modp)=w

Ejemplo

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 y=gx(modp)=gqx(modp)=703221031755mod88667=13136
  • Supongamos que Alicia escoge c=543. Por tanto w=70322543mod88667=84109
  • Supongamos que Bob escoge el desafío e=1000. Entonces Alicia computa s=c+xe (mod q)=543+755*1000mod1031=851
  • Bob verifica que 84109=70322851131361000mod88667

Propiedades

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 2t 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

Además, para un texto cifrado de ElGamal (G,M)=(myr,gr), 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 gr. Como y es un parámetro público, si P conoce r, puede recuperar m calculando m=G/yr. Por tanto el protocolo también prueba que P conoce el texto plano m.[1]

Referencias

Plantilla:Listaref

Plantilla:Control de autoridades

  1. 1,0 1,1 1,2 Verifiable Voting Systems Plantilla:Wayback. Thea Peacock, Peter Y. A. Ryan, Steve Schneider y Zhe Xia. University of Luxembourgy University of Surrey
  2. 2,0 2,1 2,2 2,3 2,4 2,5 2,6 Cryptography. Theory and practice Plantilla:Wayback. Third Edition. Douglas R. Stinson. University of Waterloo. Chapman & Hall/CRC. 2006