Prácticás SAD – Temá 5: Criptográfíá Para la realización de estas prácticas, usaremos el programa CrypTool, que podéis descargar desde: http://www.cryptool.org/ Cifrado del César Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto. Ejemplo: Texto original: ABCDEFGHIJKLMNÑOPQRSTUVWXYZ Texto codificado: GHIJKLMNÑOPQRSTUVWXYZABCDEF 1. Dado el siguiente texto codificado mediante el Cifrado del César (no se sabe cuánto es el desplazamiento), descífralo manualmente explicando cómo lo has hecho (sin usar CrypTool). Indica cuál es el desplazamiento que hemos utilizado para cifrar. Ho sulphu hmhuflflr hv pxb idflo 2. Usa CrypTool para comprobar si lo has hecho correctamente. Para ello, crea un nuevo documento (Archivo -> Nuevo). Escribe el texto codificado en el nuevo documento. Después, vete a Análisis -> Cifrado Simétrico (clásico) -> Sólo Texto Cifrado -> César. Y sigue las instrucciones. 3. Dado el siguiente texto codificado mediante el Cifrado del César, descífralo usando la herramienta CrypTool. Para ello, usar la opción Cifrar/Descifrar -> Simétrico (clásico) -> César, y ve probando a descifrar con diferentes claves (A, B, C, etc.) hasta que una de ellas nos dé un texto legible (a lo sumo, serán 26 claves). Indica cuál es el desplazamiento que hemos utilizado para cifrar. Nu bnpdwmx nsnalrlrx nb dw yxlx vjb ujapx yjaj zdn wx bnj cjw ojlru mn qjlna j vjwx Cifrado por sustitución En el cifrado por sustitución, sustituimos cada letra del alfabeto por otro carácter (en el ejemplo, estamos sustituyéndolos por otras letras), pero sin seguir un orden concreto, como en el Cifrado del César. 4. Usando las herramientas que nos proporciona CrypTool, descifra el siguiente texto: Dpi bfrnpi tr oehabayap reoc tr Noctodb; cp ipdp dpi loxao heoatp, iacp wfr dpi loxao qerqoeotp v boxeayotp. Rd jaijp taiqoep dpi joi rmheoñpi, doi qaruoi v dpi yplrhri zpdotperi. Lfxp hojxarc fco nrcrepio taiheaxfyapc tr xfiyoqari, qrhoetpi, xrcnodoi, yplrhri, ochpeyloi, riherddahoi, zrdoi tr rcocp, bfrchri rdbayoi, tfrctri doteotperi v hefrcpi; hptpi ipxrexapi. Rd oehr tr Noctodb qepnerioxo ypc dpi oñpi. Para ello, usaremos las siguientes herramientas: - Análisis -> Herramientas para el Análisis -> Histograma. Nos proporcionará la frecuencia con la que se repiten los caracteres en nuestro texto codificado, que junto con la frecuencia de aparición de letras en nuestro idioma podremos usar para localizar al menos las letras que más aparecen (no es tan directo como debería ser debido a que es un texto pequeño, pero ya os comento que los cuatro primeros en orden de frecuencia son los mismo en el texto y en el idioma español, aunque en distinto orden). http://es.wikipedia.org/wiki/Frecuencia_de_aparición_de_letras - Análisis -> Cifrado Simétrico (clásico) -> Análisis Manual -> Sustitución. Aquí podremos ir substituyendo los caracteres y nos irá mostrando el resultado de la sustitución. El mensaje de error que nos sale es debido a los signos de puntuación y a la letra “ñ” (que no aparecen en el texto descifrado). - A partir de aquí, ya tendremos que ir buscando relaciones entre las letras en palabras pequeñas, etc. Escribe el texto descifrado y la clave que se ha usado para codificar (como en el ejemplo del Cifrado del César). 5. Elige un texto (por ejemplo, de Wikiquotes o de cualquier libro que podéis encontrar en internet). Debe tener un buen tamaño, al menos 300 caracteres. Quítale las tildes para facilitar el cifrado. Ahora, aplícale un Cifrado del César y luego un Cifrado por Sustitución. Intercambia el texto con un compañero y descifra el texto que te han pasado (pregúntale la primera palabra para que sea un poco más fácil). Indica: el texto original, la clave de Cifrado del César y la clave del Cifrado por Sustitución, el texto cifrado, el compañero con el que has intercambiado el texto, el texto que te han pasado y el texto que has descifrado. Cifrado por bloques Ahora, usaremos algoritmos de cifrado modernos, como DES. 6. Codificar un texto con el algoritmo DES y enviarlo por correo electrónico a un compañero. Pasos a seguir: - Crea un nuevo documento en CrypTool y escribe un texto (no obsceno, a ser posible). - Codifica el texto mediante el algoritmo DES (CBC) usando como clave 0123456789ABCDEF. - Como el resultado que nos da es binario y no texto, vamos a convertirlo a texto mediante la codificación Base64 para poder enviarlo por email (se encuentra en Procedimientos Individuales -> Herramientas -> Códigos). - Enviar el texto en Base64 por email a un compañero (enviarme a mí una copia). - Copiar el texto en Base64 que hemos recibido de otro compañero en un nuevo documento. - Decodificar de Base64 y luego decodificar con DES. Indica el texto que has elegido, su versión codificada en Base64, el compañero con el que has intercambiado el texto, el texto que has recibido en Base64 y el texto descifrado. 7. Ahora que ya somos unos maestros de la encriptación, vamos a hacer algo más complicado. - Bájate de internet una foto (que no sea NSFW) de un tamaño no muy grande (2030KB ya está bastante bien). - Ábrela con CrypTool (sí, deja abrir archivos binarios). - Codifica los datos mediante DES (CBC) con la clave que tú elijas. - Codifica el resultado mediante Base64. - Envía los datos codificados por correo electrónico a un compañero (no te olvides de enviar también la clave) (y envíame a mí una copia). - Descodifica los datos que has recibido de tu compañero. Como resultado del ejercicio, copia y pega las dos imágenes (la tuya que has enviado y la que has recibido). Cifrado Asimétrico Para la realización de esta parte de las prácticas usaremos la herramienta GnuPG que viene de serie con la mayoría de las distribuciones de Linux o usando la versión para Windows que podéis encontrar en: http://www.gpg4win.org/ Como se hará todo en línea de comandos, ve copiando todas las órdenes que vayas usando en un fichero de texto que luego me tendrás que subir. 8. Genera una pareja de llaves (privada y pública) con GnuPG que nos servirá para codificar y firmar en el resto de ejercicios. Para ello, usa las instrucciones que se encuentran en: http://www.gnupg.org/gph/es/manual.html De las opciones de generación de claves, elige la que pone “RSA” y “RSA”, que nos generará claves para firmar y también para encriptar. Una vez generadas, comprueba que estén guardadas correctamente (usando --list-keys y --list-secret-keys) y exporta la llave pública e intercambiala con al menos un compañero (expórtala en formato ASCII para que su contenido sea más fácil de ver). Importa la llave pública que hayas recibido de tu compañero. Comprueba que se ha importado correctamente. 9. Encripta un fichero de texto e intercámbialo con tu compañero. Necesitarás su clave pública para poder hacerlo (para que él lo pueda desencriptar con su llave privada). Intercámbialo y desencripta el que él te mande (necesitarás escribir la contraseña que protege tu llave privada). Comprueba que haya llegado bien. Para comprobar que funciona igual de bien con ficheros binarios, encripta e intercambia también una imagen (pequeña). Guarda los ficheros originales, los encriptados, los que has recibido y los que has desencriptado para entregármelos luego. 10. Firma un fichero de texto e intercámbialo con tu compañero. Vamos a utilizar primero la opción --clearsign que nos da un fichero ASCII que contiene el documento y también la firma. Comprueba el fichero que te ha mandado tu compañero con --verify. Firma el mismo fichero de texto con la opción --sign e intercámbialo. Esto nos dará un fichero binario que contiene el fichero original y la firma. Firma el mismo fichero de texto con la opción --detach-sign. Esto nos dará un fichero que sólo tiene la firma. Tendrás que intercambiar tanto el fichero original como el que contiene la firma. Por último, encripta y firma el fichero de texto (usando tanto --sign como --encrypt en la misma orden). Esto nos permitirá que nadie pueda interceptar el mensaje (va encriptado con la llave pública del destinatario y sólo él tiene la llave privada para desencriptarlo) y que el receptor sepa que el mensaje ha llegado bien (porque va firmado) y quién lo ha enviado (porque va firmado con la llave privada que sólo tiene el emisor). Intercámbialo y comprueba que todo va bien. Coge el fichero de texto con las órdenes que has usado en las prácticas 8, 9 y 10, los ficheros de la práctica 9 (en una carpeta) y los de la 10 (en otra), comprímelos en .zip o .rar y súbelos.