Algoritmo de identificación de Schnorr
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.
From Wikipedia, the free encyclopedia
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]
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]
- P escoge de forma aleatoria un valor , y envía a V su certificado y
- 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
- P calcula y envía a V
- V verifica la identidad de P si y solo si se cumple ya que
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
- Supongamos que Alicia escoge c=543. Por tanto
- Supongamos que Bob escoge el desafío e=1000. Entonces Alicia computa
- Bob verifica que