Prácticas SAD – Tema 5: Criptografía con GPG
Para la realización de estas prácticas usaremos la herramienta GnuPG que viene de serie con la
mayoría de las distribuciones de Linux (también existe una versión para Windows que podéis
encontrar en: http://www.gpg4win.org/).
La entrega de las prácticas consistirá en un tutorial de cómo habéis hecho cada uno de los
ejercicios. Incluid en el tutorial los archivos que habéis enviado y habéis recibido.
Cifrado simétrico
Usaremos el software GPG para encriptar documentos mediante un algoritmo de cifrado
simétrico. Para este ejercicio podéis usar la siguiente guía:
http://www.tutonics.com/2012/11/gpg-encryption-guide-part-4-symmetric.html
1. Codificar un texto con el algoritmo Triple DES y enviarlo por correo electrónico a un
compañero. Pasos a seguir:
- Crea un documento de texto cualquiera.
- Codifica el texto mediante el algoritmo Triple DES usando como clave “1234”.
- Envía el archivo a tu compañero y recibe el archivo que te enviará él.
- Desencripta el archivo con la contraseña “1234” y comprueba que el resultado es
correcto.
2. 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 (20KB-
30KB ya está bastante bien).
- Codifica el archivo de imagen mediante el algoritmo AES, pero además usa la opción
“armor” para que te cree un fichero binario codificado como texto (con el algoritmo
Base64).
- Envía el archivo de texto codificado en el cuerpo del mensaje (no como archivo
adjunto).
- Descodifica los datos que has recibido de tu compañero.
Cifrado Asimétrico
3. 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.tutonics.com/2012/11/gpg-encryption-guide-part-1.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. Y de tamaño el que viene por
defecto, 2048. Como clave poned “1234”.
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 tu compañero
(expórtala en formato de texto usando “armor” 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.
4. Vamos a encriptar ahora mediante algoritmo asimétrico. Aquí tienes una guía:
http://www.tutonics.com/2012/11/gpg-encryption-guide-part-2-asymmetric.html
Crea un fichero de texto, encríptalo 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).
5. Por último, vamos a probar el tema de la firma electrónica. Aquí tienes una guía:
http://www.tutonics.com/2012/11/gpg-encryption-guide-part-3-digital.html
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.
Me tenéis que enviar un fichero comprimido .zip que contenga el PDF con la guía y los
ficheros que habéis encriptado y desencriptado.