Ingeniería en Informática Criptografía 7 de septiembre de 2007 APELLIDOS: En el siguiente test cada respuesta correcta aporta 2 3 resta 1 6 puntos. NOMBRE: puntos, mientras que cada respuesta fallida 1. La función resumen MD5 ha quedado en entredicho y se considera no resistente a colisiones fuertes. Por otro lado, SHA1 todavía se considera una función resumen segura. Consideremos las siguientes composiciones: SHA1 MD5(X) y MD5 SHA1(X) son funciones resúmenes resistentes a colisiones fuertes. SHA1 MD5(X) no es resistente a colisiones fuertes. MD5 SHA1(X) no es unidireccional. SHA1 MD5(X) no es una función resumen. 2. Sea α un elemento primitivo de Z p. Elegir la respuesta correcta. α i mod p es un elemento primitivo para cualquier 0 < i < p 1. α i mod p sólo es un elemento primitivo para i = 1. α i mod p es un elemento primitivo para 0 < i < p 1 con mcd(i, p 1) 1. α i mod p es un elemento primitivo para 0 < i < p 1 con mcd(i, p 1) = 1. 3. Sea X = x 1... x n una secuencia de bits donde cada x i es un bloque de 64-bits (1 i n). X se va a cifrar usando DES del siguiente modo: z 0 = IV z i = DES(z i 1, k), y i = x i z i donde k es una clave para DES y IV un bloque inicial de 64 bits. Y = y 0 y 1... y n denota la secuencia obtenida mediante el cifrado. Supongamos que en la transmisión del bloque j-ésimo, y j, (0 < j < n) se ha producido algunos errores (algunos 1 s se han cambiado por 0 s y/o viceversa) entonces en el descifrado de Y por parte del receptor se obtiene la secuencia X = x 1... x n: Hay un sólo bloque que no se descifra correctamente (x j x j ), el resto de los bloques se descifran correctamente (x i = x i, i j). Hay exactamente dos bloques que no se descifran correctamente (x j x j y x j+1 x j+1 ). Todos los bloques a partir del j-ésimo no se descifran correctamente (x i x i, j i n). 4. De las siguientes posibilidades para n, señalar cuál es la más apropiada de entre todas para formar una buena clave pública RSA (n, 35): 133307 375733 109 127 251 389 5. En un criptosistema de ElGamal de clave pública (p, α, α a ) un intruso intercepta el mensaje cifrado (n, k), e identifica n como α 3. En estas circunstancias: El intruso puede descifrar el mensaje, aun cuando no puede saber el valor de a, con sólo calcular el inverso i de (α a ) 3 en Z p y realizar k i (mod p). El intruso puede descifrar cualquier mensaje enviado con este criptosistema, toda vez que puede calcular el valor a de la clave privada. El intruso no puede descifrar ningún mensaje (ni siquiera el que ha interceptado), toda vez que no puede resolver el problema del logaritmo discreto.
6. Trabajando en Z 27 (x i Z 27 ) se cifra un texto x = x 1 x l del siguiente modo : x se divide en n bloques de 6 elementos, efectuando un relleno del último bloque si fuera necesario, x = X 1... X n. 0 0 1 0 0 0 0 0 0 0 0 1 Y i = X i K + b con K = 1 0 0 0 0 0 0 0 0 0 1 0 y b = (4, 4, 4, 4, 4) 0 1 0 0 0 0 0 0 0 1 0 0 Retorna y = Y 1... Y n (y es el cifrado de x). Se trata de un cifrado por sustitución monoalfabética. Se trata de un cifrado por sustitución polialfabética (Vigenère). Se trata de un cifrado por transposición. Se trata de un cifrado por una composición de sustitución y transposición. 7. En una empresa todos los usuarios usan el número 3 como su exponente de cifrado en RSA. Indique cuál es el riesgo cuando alguien envía el mismo mensaje a varios miembros de la empresa: Ninguno, porque cada uno usa un módulo diferente. Usando el Teorema de Euler se podrían obtener las claves privadas ya que 3 es muy pequeño. Interceptando el cifrado de un mensaje enviado a 3 destinatarios y usando el Teorema Chino del Resto, es muy probable que un atacante pueda encontrar el mensaje en claro. 8. Benito tiene como clave pública RSA n = 187709 y e = 1439. Óscar ha descubierto que la clave privada de Benito es d = 2207 y la usa para factorizar n: Usando que d y e son inversos en φ(n) y de ahí calcular φ(n). Utilizando un ataque de fuerza bruta para calcular φ(n). No está bien planteado ya que no es un primo fuerte. 9. Para aumentar la seguridad de un cifrado AES un usuario divide su mensaje en bloques de 8 bits y cifra cada uno de ellos. Indique la respuesta correcta: Es igual de seguro que si se utilizan bloques más grandes, su seguridad es la de AES. Es muy inseguro ya que bastaría un análisis de frecuencias sobre los 2 8 posibles mensajes cifrados. Es más seguro ya que aumenta la confusión.
10. Benito tiene como clave pública RSA n = 33, e = 3 y clave privada d. Supongamos que es computacionalmente imposible el cálculo de la clave privada d a partir de la pública (n, d). Entonces la firma del mensaje se realizará como: 10 3 mod 33 = 10. 10 d mod 33 = 10. Sería 10 d mod 33 = 10, pero no es una firma fiable ya que cualquiera podría realizarla si observa que x no se cifra. 11. Usando un alfabeto de 64 caracteres, el cifrado afín x 8x + 1 no es adecuado, principalmente por el siguiente motivo: Hay mensajes en claro que dan lugar al mismo mensaje cifrado. Hay mensajes que no se pueden cifrar. La función de descifrado está bien definida. 12. Alicia y Benito desean acordar una clave común usando el sistema de Diffie-Hellman usando como primo p = 72 y generador g = 7. Si Alicia elige el exponente 12 y Benito el 5, cuál es la clave que intercambian? 30. 51. 4. 13. Alicia (A) y Benito (B) usan el siguiente protocolo con el cual ambos verifican que conocen una clave secreta común k, usando una función resumen h: A envía a B el valor h(h(k)). B calcula h(h(k)) y comprueba que coincide con lo recibido. B envía h(k) a A. A calcula h(k) y comprueba que coincide con lo recibido. Si las dos comprobaciones han sido correctas, entonces ambos conocen el valor de k. Indique cuál es la afirmación correcta: Es un método válido y tan seguro como lo sea la función resumen utilizada. Es innecesario que A envíe h(h(k)), bastaría con enviar h(k). No es seguro porque cualquiera de los dos puede ser suplantado. 14. En un intento por aumentar la seguridad, un usuario que usa el alfabeto de 64 caracteres utiliza un doble cifrado XOR. Usando consecutivamente dos claves que él cree haber obtenido de forma aleatoria: la clave (A, B, C, D, E, F ) y la clave (,,, A D, B E, C F ). (Ayuda: X = X para todo carácter X del alfabeto). Indicar cuál es la respuesta más correcta: La seguridad ha aumentado, aunque el resultado sigue siendo un XOR de la misma longitud. El resultado no es un,criptosistema XOR. La seguridad ha disminuido; el resultado equivale a un XOR de longitud 3.
15. Un usuario de RSA ha elegido como clave pública n = 15 y e = 2 quiere cifrar los mensajes 15, 31. Al hacerlo e intentar descifrar encuentra problemas. Indique cuál es el motivo: Ha elegido un módulo demasiado pequeño y además el exponente no es primo. Ha elegido un módulo demasiado pequeño y además el exponente no tiene inverso en φ(n). Con otro exponente, por ejemplo e = 3 no hubiera tenido problemas, ya que tiene inverso en φ(n). Observaciones Alfabeto de 64 caracteres: a b c d e f g h i j k l m n ñ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 o p q r s t u v w x y z Ç 0 1 2 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3 4 5 6 7 8 9 @ ( ) { } < > = + 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 - * / % &, ;. :?! 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
Ingeniería en Informática Criptografía 7 de Septiembre de 2007 APELLIDOS: En el siguiente test cada respuesta correcta aporta 2 3 resta 1 6 puntos. NOMBRE: puntos, mientras que cada respuesta fallida 1. La función resumen MD5 ha quedado en entredicho y se considera no resistente a colisiones fuertes. Por otro lado, SHA1 todavía se considera una función resumen segura. Consideremos las siguientes composiciones: SHA1 MD5(X) y MD5 SHA1(X) son funciones resúmenes resistentes a colisiones fuertes. X SHA1 MD5(X) no es resistente a colisiones fuertes. MD5 SHA1(X) no es unidireccional. SHA1 MD5(X) no es una función resumen. Solución Al no ser MD5 resistente a colisiones fuertes, significa que podemos encontrar parejas (X, X ) donde MD5(X) = MD5(X ). Y por tanto, SHA1 MD5(X) = SHA1 MD5(X ). 2. Sea α un elemento primitivo de Z p. Elegir la respuesta correcta. α i mod p es un elemento primitivo para cualquier 0 < i < p 1. α i mod p sólo es un elemento primitivo para i = 1. α i mod p es un elemento primitivo para 0 < i < p 1 con mcd(i, p 1) 1. X α i mod p es un elemento primitivo para 0 < i < p 1 con mcd(i, p 1) = 1. Solución. Por ser α un elemento primitivo se tiene que Z p = {α i : 0 i p 2} donde α p 1 = 1. Apliquemos el test para detectar los elementos primitivos. Se tiene que p 1 = q s1 1... qsj j. (α i ) (p 1)/q l = (α i(p 1)/q l ) Si mcd(i, p 1) = 1 se tiene que el exponente i(p 1)/q l no es divisible por p 1 para cualquier 1 l j, entonces existe 0 < r < p 1 tal que (este r es el resto de dividir el exponente por p 1) (α i(p 1)/q l ) = α r α c (p 1) = α r 1 mod p q l. 3. Sea X = x 1... x n una secuencia de bits donde cada x i es un bloque de 64-bits (1 i n). X se va a cifrar usando DES del siguiente modo: z 0 = IV, z i = DES(z i 1, k), y i = x i z i donde k es una clave para DES y IV un bloque inicial de 64 bits. Y = y 0 y 1... y n denota la secuencia obtenida mediante el cifrado. Supongamos que en la transmisión del bloque j-ésimo, y j, (0 < j < n) se ha producido algunos errores (algunos 1 s se han cambiado por 0 s y/o viceversa) entonces en el descifrado de Y por parte del receptor se obtiene la secuencia X = x 1... x n: X Hay un sólo bloque que no se descifra correctamente (x j x j ), el resto de los bloques se descifran correctamente (x i = x i, i j). Hay exactamente dos bloques que no se descifran correctamente (x j x j y x j+1 x j+1 ). Todos los bloques a partir del j-ésimo no se descifran correctamente (x i x i, j i n). Solución.
Es fácil ver que el descifrado viene dado por z 0 = IV, z i = DES(z i 1, k), x i = y i z i Teniendo en cuenta esta fórmula que y j interviene sólo en x j. 4. De las siguientes posibilidades para n, señalar cuál es la más apropiada de entre todas para formar una buena clave pública RSA (n, 35): X 133307 375733 109 127 251 389 Solución. La opción segunda no es válida, pues se puede factorizar por el método de Fermat. La tercera opción no es buena, porque el mínimo común múltiplo de p 1 y q 1 es muy pequeño, lo que provoca que haya muchos exponentes que descifran. La cuarta no es compatible con e = 35, toda vez que 35 no es primo con φ(n). 5. En un criptosistema de ElGamal de clave pública (p, α, α a ) un intruso intercepta el mensaje cifrado (n, k), e identifica n como α 3. En estas circunstancias: X El intruso puede descifrar el mensaje, aun cuando no puede saber el valor de a, con sólo calcular el inverso i de (α a ) 3 en Z p y realizar k i (mod p). El intruso puede descifrar cualquier mensaje enviado con este criptosistema, toda vez que puede calcular el valor a de la clave privada. El intruso no puede descifrar ningún mensaje (ni siquiera el que ha interceptado), toda vez que no puede resolver el problema del logaritmo discreto. Solución. Efectivamente, si la máscara utilizada ha sido n = α 3, para descifrar el mensaje enviado basta proceder haciendo k ((α a ) 3 ) 1, operaciones todas que puede hacer el intruso sin necesidad de conocer a (recuérdese que α a es público). 6. Trabajando en Z 27 (x i Z 27 ) se cifra un texto x = x 1 x l del siguiente modo : x se divide en n bloques de 6 elementos, efectuando un relleno del último bloque si fuera necesario, x = X 1... X n. 0 0 1 0 0 0 0 0 0 0 0 1 Y i = X i K + b con K = 1 0 0 0 0 0 0 0 0 0 1 0 y b = (4, 4, 4, 4, 4, 4) 0 1 0 0 0 0 0 0 0 1 0 0 Retorna y = Y 1... Y n (y es el cifrado de x). Se trata de un cifrado por sustitución monoalfabética. Se trata de un cifrado por sustitución polialfabética. Se trata de un cifrado por transposición. X Se trata de un cifrado por una composición de sustitución y transposición. Solución. Es claro que el producto X i K lo que hace es permutar los bits de X i y al sumar 4 módulo 27 a todos los caracteres se trata de un desplazamiento (sustitución). 7. En una empresa todos los usuarios usan el número 3 como su exponente de cifrado en RSA. Indique cuál es el riesgo cuando alguien envía el mismo mensaje a varios miembros de la empresa:
Ninguno, porque cada uno usa un módulo diferente. Usando el Teorema de Euler se podrían obtener las claves privadas ya que 3 es muy pequeño. X Interceptando el cifrado de un mensaje enviado a 3 destinatarios y usando el Teorema Chino del Resto, es muy probable que un atacante pueda encontrar el mensaje en claro. Solución. Si las claves públicas de los 3 destinatarios son respectivamente; (n 1, 3), (n 2, 3) y (n 3, 3) y los tres mensajes cifrados son y 1, y 2 e y 3 entonces el atacante resolvería el sistema α y 1 mod n 1 α y 2 mod n 2 α y 3 mod n 3 como es muy probable que los n i sean primos entre si dos a dos, entonces por el Teorema Chino del Resto, el sistema tiene una única solución 0 < α < n 1 n 2 n 3. Entonces el mensaje en claro x sería la raíz cúbica entera de α. 8. Benito tiene como clave pública RSA n = 187709 y e = 1439. Óscar ha descubierto que la clave privada de Benito es d = 2207 y la usa para factorizar n: X Usando que d y e son inversos en φ(n) y de ahí calcular φ(n). Utilizando un ataque de fuerza bruta para calcular φ(n). No está bien planteado ya que no es un primo fuerte. Solución. Óscar sabe que d e 1 mod φ(n) con lo que d e 1 = k φ(n) lo que puede proporcionar el valor de φ(n) y con él factorizar n. 9. Para aumentar la seguridad de un cifrado AES un usuario divide su mensaje en bloques de 8 bits y cifra cada uno de ellos. Indique la respuesta correcta: Es igual de seguro que si se utilizan bloques más grandes, su seguridad es la de AES. X Es muy inseguro ya que bastaría un análisis de frecuencias sobre los 2 8 posibles mensajes cifrados. Es más seguro ya que aumenta la confusión. solución El resultado equivale a un criptosistema de sustitución con un alfabeto de 2 8 = 256 caracteres que puede ser roto con el ataque basado en el de análisis de frecuencias. 10. Benito tiene como clave pública RSA n = 33, e = 3 y clave privada d. Supongamos que es computacionalmente imposible el cálculo de la clave privada d a partir de la pública (n, d). Entonces la firma del mensaje se realizará como: 10 3 mod 33 = 10. 10 d mod 33 = 10. X Sería 10 d mod 33 = 10, pero no es una firma fiable ya que cualquiera podría realizarla si observa que x no se cifra. Solución. El cálculo de la firma se hace con la clave privada y sería 10 d mod 33. Como 10 3 mod 33 = 10 entonces 10 d mod 33 = 10 (10 es un mensaje que no se cifra). Un atacante que lo observara podría suplantar a Benito firmando este mensaje por él.
11. Usando un alfabeto de 64 caracteres, el cifrado afín x 8x + 1 no es adecuado, principalmente por el siguiente motivo: X Hay mensajes en claro que dan lugar al mismo mensaje cifrado. Hay mensajes que no se pueden cifrar. La función de descifrado está bien definida. Solución. Al ser 8 no invertible en Z 64, no se podrá definir la función de descifrado y habrá varios mensajes que se cifren en el mismo. Por ejemplo, 1 9, 9 9. 12. Alicia y Benito desean acordar una clave común usando el sistema de Diffie-Hellman usando como primo p = 72 y generador g = 7. Si Alicia elige el exponente 12 y Benito el 5, cuál es la clave que intercambian? X 30. 51. 4. Solución. esquema: Hemos seguido la misma notación que en los apuntes, el protocolo sigue el siguiente Alicia envía a Benito: g xa mod p = 7 5 mod 71 = 51. Benito envía a Alicia: g x b mod p = 7 12 mod 71 = 4. Benito calcula: 51 x b mod p = 51 12 mod 71 = 30. Alicia calcula: 4 5 mod p = 4 5 mod 71 = 30. 13. Alicia (A) y Benito (B) usan el siguiente protocolo con el cual ambos verifican que conocen una clave secreta común k, usando una función resumen h: A envía a B el valor h(h(k)). B calcula h(h(k)) y comprueba que coincide con lo recibido. B envía h(k) a A. A calcula h(k) y comprueba que coincide con lo recibido. Si las dos comprobaciones han sido correctas, entonces ambos conocen el valor de k. Indique cuál es la afirmación correcta: X Es un método válido y tan seguro como lo sea la función resumen utilizada. Es innecesario que A envíe h(h(k)), bastaría con enviar h(k). No es seguro porque cualquiera de los dos puede ser suplantado. Solución Ninguno que no conozca k puede calcular h(k) ni h(h(k)). Más aún h(h(k)) no da información sobre h(k). El sistema es tan seguro como h. 14. En un intento por aumentar la seguridad, un usuario que usa el alfabeto de 64 caracteres utiliza un doble cifrado XOR. Usando consecutivamente dos claves que él cree haber obtenido de forma aleatoria: la clave (A, B, C, D, E, F ) y la clave (,,, A D, B E, C F ). (Ayuda: X = X para todo carácter X del alfabeto). Indicar cuál es la respuesta más correcta: La seguridad ha aumentado, aunque el resultado sigue siendo un XOR de la misma longitud. El resultado no es un,criptosistema XOR. X La seguridad ha disminuido; el resultado equivale a un XOR de longitud 3.
Solución. El efecto del doble cifrado es: (A, B, C, D, E, F ) (,,, A D, B E, C F ) = (A, B, C, D A D, E B E, F C F ) = (A, B, C, A, B, C) que resulta equivalente a un cifrado de sustitución con una clave de longitud 3. 15. Un usuario de RSA ha elegido como clave pública n = 15 y e = 2 quiere cifrar los mensajes 15, 31. Al hacerlo e intentar descifrar encuentra problemas. Indique cuál es el motivo: Ha elegido un módulo demasiado pequeño y además el exponente no es primo. X Ha elegido un módulo demasiado pequeño y además el exponente no tiene inverso en φ(n). Con otro exponente, por ejemplo e = 3 no hubiera tenido problemas, ya que tiene inverso en φ(n). Solución. El mensaje 15 es 0 en Z 15 con lo que su cifrado es 0. Por otro lado, el mensaje 31 es 1 en Z 15 con lo que su cifrado sería 1. Por tanto, el descifrado daría siempre 0 y 1, respectivamente, no 15 y 31. Esto ocurre independiente del exponente e. Además, hay otro problema ya que e = 2 no es primo con φ(15) = 8 con lo que no existe el exponente, d, de descifrado (d = e 1 mod φ(15)). Observaciones Alfabeto de 64 caracteres: a b c d e f g h i j k l m n ñ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 o p q r s t u v w x y z Ç 0 1 2 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3 4 5 6 7 8 9 @ ( ) { } < > = + 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 - * / % &, ;. :?! 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63