Examen de Septiembre 2010
Transcripción
Examen de Septiembre 2010
Examen de Criptografía y Seguridad en Comunicaciones (2ª convocatoria) 13-IX-2010 Ejercicio 1 En un escenario clásico de votación electrónica en un referéndum, los dos únicos votos posibles son el “SI” y el “NO” codificados en base64. En el escenario particularizado para un votante V, contaremos con la autoridad electoral cuyas funciones serán: verificar la identidad del votante, que no haya votado ya y dar al votante una “firma ciega” del voto. Dicho voto estará cifrado para la autoridad de recuento. Y para evitar que los mismos votos produzcan los mismos cifrados, mientras que el votante y la autoridad electoral utilizarán claves RSA, la autoridad de recuento usará Elgamal. Claves de V: p = 251; q =107; n = 26857; e = 4077 Claves de la autoridad electoral: p = 211; q = 223; n = 47053; e = 11 Claves de la autoridad de recuento: p = 43759; g = 3; la clave secreta x = 10 y la correspondiente pública y = gx = 310 (mod 43759)= 15290 El protocolo de votación será el siguiente: 1. V envía a la autoridad electoral una propuesta de firma ciega B del sentido del voto y una firma de la misma. 2. La autoridad electoral le devuelve al votante la firma ciega, después de comprobar su identidad y que no ha votado antes, mediante la verificación de la firma anterior. 3. El votante reconstruye la firma válida de la autoridad electoral y le envía a la autoridad de recuento, el voto cifrado y la firma de la autoridad electoral. En el caso de un voto concreto los mensajes intercambiados fueron: 1. (26826, 4864) 2. (9426) 3. ((22468, 102), 24312) Calcula: 1. Las claves secretas de V y de la autoridad electoral (1 punto) 2. El factor de ceguera, c (1 punto) 3. Comprobar que el cifrado de Vernam del entero aleatorio, k, (empleado en el cifrado Elgamal del voto) utilizando como clave el factor de ceguera anterior, es 27 (1 punto) 4. Si el descifrado del voto fuera “SI” (que sí resulta serlo), ¿sería válido el voto? (2 puntos) PROTOCOLO DE FIRMA CIEGA Y VERFICACIÓN. Alicia pretende que Blanca, con sus claves RSA, le firme el mensaje M, sin que sepa lo que firma. Para ello Alicia le envía B=Mce (mod N) donde c es un entero aleatorio elegido por Alicia. Blanca le devuelve F=Bd (mod N) y Alicia puede calcular la firma correcta como S=(F⁄c) (mod N) y comprobar que es correcta si M=S e (mod N). CIFRADO Y DESCIFRADO ELGAMAL Establecidos los parámetros correspondientes a un criptosistema Elgamal, el cifrado del mensaje M es C = (a, b), donde: a ≅ g k (mod p ) , b ≅ My k (mod p ) , siendo y la clave pública del criptosistema. Para el descifrado, simplemente consistiría en calcular b M ≅ x (mod p ) , siendo x la clave secreta del criptosistema. a ( ) FIRMA ELGAMAL Con los mismos parámetros anteriores, la firma del mensaje M es F = (r, s), donde: ( ) r ≅ g k (mod p ) M − xr (mod p − 1) s≅ k Valor Carácter 6 bits codificado 0 000000 A 1 000001 B 2 000010 C 3 000011 D 4 000100 E 5 000101 F 6 000110 G 7 000111 H 8 001000 I 9 001001 J 10 001010 K 11 001011 L 12 001100 M 13 001101 N 14 001110 O 15 001111 P Valor 6 bits 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Carácter codificado 010000 Q 010001 R 010010 S 010011 T 010100 U 010101 V 010110 W 010111 X 011000 Y 011001 Z 011010 a 011011 b 011100 c 011101 d 011110 e 011111 f Tabla de codificación en Base 64 Valor 6 bits 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 Carácter codificado 100000 g 100001 h 100010 i 100011 j 100100 k 100101 l 100110 m 100111 n 101000 o 101001 p 101010 q 101011 r 101100 s 101101 t 101110 u 101111 v Valor Carácter 6 bits codificado 48 110000 w 49 110001 x 50 110010 y 51 110011 z 52 110100 0 53 110101 1 54 110110 2 55 110111 3 56 111000 4 57 111001 5 58 111010 6 59 111011 7 60 111100 8 61 111101 9 62 111110 + 63 111111 / (Relleno) =