Unidad 1 Tarea 3

Practica de Criptografía

Esta práctica consiste en enviar un mensaje de texto cifrado con el sistema OpenPGP a un compañero del curso y que él lo descifre. Después repetimos el proceso al revés, el lo cifra y nosotros lo desciframos.

En primer lugar vamos a ver (a grandes rasgos) como funciona el sistema de cifrado OpenPGP ya que (al menos para mí) es un poco enrevesado…

Partimos de que tenemos 2 personas que quieren intercambiar una información a través de un mensaje cifrado, son el EMISOR y el RECEPTOR.

Estas dos personas utilizaran un sistema de cifrado OpenPGP, así que ambos, EMISOR y RECEPTOR deberán utilizar alguna aplicación basada en este sistema, por ejemplo Gpg4win.

Lo primero que tienen que hacer es crear su CLAVE. Esta clave en realidad son 2 claves, la CLAVE PRIVADA y la CLAVE PÚBLICA. La Clave Privada se guarda en nuestro ordenador y queda protegida por contraseña (es importante que nadie tenga acceso a ella) y la Clave Publica es la que compartiremos con otras personas (no hay peligro en que cualquiera tenga acceso a esta clave) por el medio que queramos (e-mail, pendrive, servidor de claves…).

Ahora el EMISOR tiene que ENCRIPTAR el mensaje para un RECEPTOR especifico y para ello necesita importar la Clave Publica del RECPTOR y con ella CIFRAR el mensaje y enviárselo.

Cuando el RECPTOR recibe el mensaje (que recordemos ha sido cifrado expresamente para él) tendrá que descifrarlo y para ello se utiliza su propia CLAVE PRIVADA.

Resumiendo, la CLAVE PUBLICA sirve para que otros puedan encriptar mensajes para nosotros y la CLAVE PRIVADA para que podamos desencriptar los mensajes que han encriptado para nosotros. Por supuesto, las claves pública y privada están relacionadas entre sí (la pública se genera aleatoriamente en función de los movimientos de ratón y/o teclas pulsadas) pero en la práctica resulta imposible obtener la Privada a través de la Publica.

Para esta práctica de Criptografía vamos a trabajar con el estándar OpenPGP (Versión libre de “Pretty Good Privacy”). Vamos a hacer la práctica con un sistema Windows 7, así que me descargo e instalo el programa Gpg4win en su versión 2.2.6.

Creando nuestro Certificado

Lo primero que tenemos que hacer es crear un Clave de Cifrado propia, para ello ejecutaremos la interface grafica Kleopatra.

Cripto01

Seleccionaremos un tipo de Certificado OpenPGP por no requerir de la validación por parte de un tercero y ser más rápido y cómodo, pero teniendo en cuenta que si queremos enviar un e-mail que cumpla con el estándar S/MIME tendremos que elegir un Certificado de tipo X.509 que requerirá de la validación por parte de alguna entidad certificadora.

Vamos a File, New Certificate e introducimos nuestros datos:

Cripto02

Y en Advanced Settings seleccionamos la longitud de la Clave, que por seguridad no debe ser inferior a 2048 bits, pero teniendo en cuenta que cuanto más grande sea ese valor más tiempo de computación se requerirá para desencriptar. Además especificaremos que el certificado se usará tanto para Firmar como para Encriptar e indicaremos la fecha de caducidad del Certificado. Podemos darle 2 años de plazo y cuando se cumplan valoraremos si los avances en criptografía y en computación hacen necesario crear una nueva clave adaptada a los nuevos avances o si por el contrario sigue siendo segura y podemos prolongar su uso.

Cripto03

Con estos datos ya se puede crear nuestro certificado que nos aparecerá dentro del apartado My Certificates. 

Cripto04

Ahora que ya tenemos nuestro certificado seremos capaces de encriptar un archivo y desencriptarlo. Sin embargo lo habitual es que necesitemos encriptar un archivo para otra persona y para ello necesitamos importar su certificado (en este caso nos referimos únicamente a su Clave Publica). Para esto, la otra persona nos puede facilitar su certificado por e-mail o con un pendrive por ejemplo, pero también podemos utilizar servidores dedicados a tal fin (intercambio de certificados). Para esto debemos configurar Kleopatra (Settings, Configure Kleopatra) ahora pulsamos el botón New y aparecera el servidor por defecto. Pulsamos Apply y Ok. 

Cripto05

Ahora ya podemos tanto importar como exportar certificados desde/a este servidor.

En primer lugar voy a exportar mi certificado para que mi compañero de práctica pueda importarlo. Para ello vamos a la pestaña de My Certificates y con el botón derecho del ratón sobre nuestro certificado seleccionamos la opción Export Certificates To Server y después Continue.

Podemos comprobar que nuestro certificado esta ahora disponible haciendo: File, Lookup Certificates on Server y buscando ahí nuestro nombre.

Por otro lado me descargo (Importo) el certificado de mi compañera de práctica. Para ello voy a File, Lookup Cerificates on Server y busco por su nombre y cuando lo encontremos lo seleccionamos y pulsamos Importar.

Cripto14

Ahora su certificado debería aparecernos bajo la pestaña Imported Certificates.

Cripto15

En primer lugar voy a hacer el papel de EMISOR del mensaje.

Creo un archivo de texto, por ejemplo con el Word y lo guardo.

Ahora vamos a proceder a firmar digitalmente y encriptar el archivo Word que hemos creado. Para ello vamos a File, Sign/Encrypt Files y seleccionamos el archivo. Ahora nos aparecerá una pantalla con distintas opciones. En este caso seleccionamos la opción de Sign and Encrypt y la de Text Output (ASCII Armor) para que vaya en texto plano y el receptor no tenga problemas para abrirlo aunque no tenga el mismo software que yo he utilizado para crearlo. Pulsamos Next.

Cripto06

Ahora nos toca seleccionar el certificado de la persona (o personas) a la que vamos a enviar el archivo. Seleccionamos su certificado y pulsamos el botón Add para añadirlo a la lista de destinatarios y pulsamos Next. 

Cripto16

Ahora seleccionamos con cual de nuestros certificados queremos firmar el archivo y pulsamos Sign & Encrypt.

Cripto09

Por supuesto se nos pedirá la clave con la que protegemos nuestro certificado para evitar que alguien desde nuestro ordenador pueda firmar sin nuestro permiso. 

Cripto10

Si todo ha ido bien nos aparecerá una ventana informativa como esta.

Cripto11

Podremos comprobar que en la carpeta en la que se ubica el archivo original ahora hay un nuevo archivo con el mismo nombre más la extensión .asc. Se trata de nuestro archivo encriptado.

Cripto07

Ahora no tenemos más que hacer llegar el archivo .asc a nuestro compañero de prácticas (por ejemplo por e-mail) y esperar a que nos indique que ha podido desencriptar y confirmar nuestra autoría en el archivo recibido. 

Ahora voy a hacer el papel de RECEPTOR del mensaje. 

En primer lugar recibiré un archivo encriptado por parte de mi compañero de práctica y lo guardaré en mi disco duro.

Para desencriptarlo y confirmar su autoría vamos a File, Decrypt/Verify Files y selecciono el archivo a desencriptar. Ahora aparecerá una pantalla con varias opciones, de aquí lo que nos interesa es la opción Output Folder, aquí indicaremos la carpeta en la queremos que se guarde el archivo ya desencriptado. Pulsamos el botón Decrypt/Verify y nos pedirá la clave que protege nuestro certificado.

Cripto18

Si todo ha ido bien nos saldrá una pantalla informando que se ha desencriptado el archivo y quien es su autor.

En el caso de mi practica el archivo que me envió mi compañera venía sin firmar por eso el mensaje final únicamente decía que el archivo había sido desencriptado.

Cripto19

Si el archivo hubiera estado firmado el mensaje hubiera sido algo así:

Cripto13

Y si vamos a la carpeta que hemos seleccionado veremos que hay un archivo con el mismo nombre que el que nos han enviado pero sin la extensión .asc y que podemos abrir sin problema.

Este era el archivo:

Cripto20

Con estoy doy la práctica por finalizada.

Gracias a mi compañera de practica Inmaculada Rodriguez.

Unidad 1 Tarea 3

Leave a comment