Como utilizar PGP/GPG en Thunderbird/Icedove

Hoy vamos a cambiar un poco la monotemática de los writeups y vamos a introducir un pequeño tutorial sobre como utilizar PGP/GPG en los clientes de correo Thunderbird y Icedove.

Para empezar quizás ni siquiera conozcáis que significan las siglas PGP o GPG, aquí tenéis una pequeña explicación:

  • PGP: Viene de Pretty Good Privay, actualmente es propiedad de Symatec, el formato de sus llaves, mensajes cifrados, etc; conforman el conocido OpenPGP estándar.
  • GPG: O GNU Privacy Guard es una implementación independiente del estándar OpenGPG que te permite intercambiar mensajes cifrados con otras implementaciones de dicho estándar.

Muchas veces la gente habla erróneamente el termino GPG cuando se refiere a implementaciones del estándar OpenGPG como, por ejemplo, refiriéndose a llaves GPG. Esto se debe, sobre todo, a la gran popularidad que GPG tiene dentro de la comunidad Linux.

Vale, pero, seguís sin tener ni idea de que estoy hablando ¿verdad?

En lugar de darle mil vueltas a una explicación técnica creo que es mejor que si estáis interesados en como funciona os leáis este artículo de la wikipedia el cual lo explica muy bien: https://es.wikipedia.org/wiki/Pretty_Good_Privacy

En su lugar yo os voy a explicar algunos usos básicos que se le dan a este sistema criptográfico, pero antes vamos a dejar claros un par de términos para asegurarnos de que podéis seguir mi explicación:

  • Pares de llaves: Cuando hablo de pares de llaves me refiero al conjunto de la llave pública y la llave privada generadas siguiendo el estándar OpenGPG.
  • Llave pública: Aquella llave que se comparte con nuestros contactos para que estos puedan realizar diversas acciones como verificar que un mensaje enviado por nosotros es nuestro.
  • Llave privada: La llave que solo nosotros debemos poseer y que suele estar protegida con contraseña, esta llave la utilizaremos para firmar/cifrar nuestra información.

Usualmente PGP se suele utilizar para dos cosas: firmar y cifrar información.

  • Firmar: Cuando firmamos información utilizando nuestra llave PGP, bien sea un archivo, bien sea un email; lo que estamos consiguiendo es que el receptor sepa que la información que hemos enviado proviene de nosotros y que no ha sido alterada.
  • Cifrar: Al cifrar un mensaje nos aseguramos que solo la gente que tenga, nuestra llave pública y que nosotros hayamos utilizado la suya, pueda acceder a la información cifrada.

Seguramente os hayáis encontrado con el aspecto referente a la firma muchas veces aunque quizás no os hayáis dado cuenta, por ejemplo, los repositorios que apt utiliza están firmados con esta tecnología para asegurarnos que los paquetes que nos descargamos no son modificados por un intermediario. Por esto mismo, cuando añadimos un nuevo repositorio, debemos importar la clave pública del repositorio para evitar que apt nos envíe alertas sobre que no puede verificar la integridad de dichos paquetes. La firma de archivos también se utiliza muchas veces a la hora de enviar documentos y que, tanto el destinatario como el receptor, puedan asegurar que el documento enviado es tal cual se envión y no se ha modificado a posteriori.

En el caso del cifrado de información quizás ya no os suene tanto, pero existen múltiples utilidades para esta función, dos implementaciones de ejemplo serían: retroshare, que utiliza este sistema para cifrar la comunicación entre sus nodos; y los correos electrónicos, donde tanto el contenido del correo como sus adjuntos son cifrados de tal manera que solo su verdadero destinatario sea capaz de verlos.

Este último uso es el que ha dado origen a esta entrada. Normalmente no nos preocupamos demasiado de la información que se envía a través de correo electrónico, bien sea porque apenas lo usamos (parece que está quedando al nivel de enviar una carta escrita a mano) o bien porque no enviamos información que creamos sensible.Pero os voy a poner un ejemplo, ¿sabiais que google lee nuestros correos? Y no lo digo en plan NSA, sino que utilizan un sistema que en base al contenido de nuestros correos puede aplicar acciones tales como crear eventos en nuestro calendario. A alguno quizás ya os ha pasado que al recibir vuestro billete de avión en vuestra cuenta de google este os ha generado un evento en el calendario para recordaros dicho vuelo, pues a eso me refiero.

La solución ideal sería que todos estos correos que pueden contener datos nuestros fueran cifrados con nuestra llave pública de tal manera que solo nosotros pudiésemos verlos, el problema viene con que para ello el emisor debería tener nuestra llave pública, lo cual, para sistemas automatizados, no siempre es viable sin una implementación específica que las obtenga de un servidor o nos permita copiarlas.

Pero aunque no podamos hacerlo con todos esto no significa que no debamos hacerlo con los que si podemos. ¡Así que vamos a ello!

Deciros que me centro en Thunderbird/Icedove (T/I de ahora en adelante para abreviar) porque en ambos casos las instrucciones son las mismas y la implementación actual de WinGPG (GPG para windows) para outlook me ha dado muchísimos errores.

Doy por hecho que tenéis ya configurado T/I con la cuenta de correo que queráis utilizar e instalados WinGPG, para los que uséis windows, o GPG, para los linuxeros. No entro en detalles sobre como instalar estas aplicaciones ya que ambos se instalan de forma estándar en sus correspondientes OS, siguiente, siguiente, siguiente para windows y apt, yum, pacman para linux.

Nos instalamos el addon Enigmail en T/I, para ello podemos utilizar el propio cliente de correo o irnos al siguiente enlace: https://addons.mozilla.org/es/thunderbird/addon/enigmail/

Una vez reiniciemos el cliente veremos que ahora tenemos un nuevo menú arriba del todo llamado enigmail. Puede ser que Enigmail inicie un asistente de configuración, esto suele ocurrir sobre todo en Windows si no detecta bien nuestra instalación de los binarios de GPG. Si hacemos click en el veremos las diferentes opciones que nos proporciona, para empezar, haremos click en “Administración de claves”.

Esto nos abrirá una nueva ventana donde podremos ver un listado de todas las llaves que tenemos, sin formato para las públicas y en negrita para aquellas de las cuales también tengamos las privadas.

Para generar nuestro nuevo par de llaves haremos click en “Generar” -> “Nuevo par de claves”.

En la parte superior veremos que nos permite seleccionar una de las cuentas que tengamos configuradas en nuestro T/I, seleccionar aquella para la que queráis crear la llave. Aquí podemos seleccionar las características de nuestra llave: introducir una contraseña o generar las llaves sin ella, el tiempo por el cual la llave es valida; y en la pestaña de avanzado el tamaño y el tipo de clave. Estas últimas no se suelen modificar.

Como bien nos advierte el mensaje en la parte inferior de la ventana generar las llaves puede llevar un buen rato debido a la eurística necesaria para el proceso. Así que en cuanto le demos a generar nos pondremos a hacer otras cosas con el ordenador para ayudar en el proceso de generación de la misma.

Una vez termine el proceso ya tendremos nuestro flamante par de llaves, pero de nada sirven si solo las tenemos nosotros. Lo primero será guardar a buen recaudo nuestra llave privada, para ello haremos click derecho en nuestra llave en la misma ventana y le daremos a “Exportar claves a un archivo”; nos preguntará si queremos guardar también la privada y lo confirmamos, si hemos configurado una contraseña para la llave nos la pedirá para confirmar nuestra identidad.

El segundo paso es distribuir nuestra clave pública para que la gente pueda verificar nuestros correos y enviarnos correos cifrados. Para ello existen dos métodos, o bien distribuir nuestra clave pública a individuales pos distintos métodos: impresa en papel, un qr, un email, etc; o bien utilizando un servidor de claves para que cualquier se la pueda descargar. Para ello haremos click derecho en la llave que deseamos subir y hacemos click en “Subir claves públicas al servidor de claves”. Esto subirá nuestra llave pública a distintos servidores de claves, existe una anillo de servidores de llaves que se sincronizan entre si y que son de acceso público para este propósito; esta sincronización puede tardar algún tiempo, así que si acabas de subir tus llaves quizás tus contactos aun no puedan encontrarlas si utilizan un servidor distinto del anillo.

Para buscar las llaves de nuestros amigos haremos click en el menú “Servidor de claves”-> “Buscar claves”. El método habitual para buscar una llave es utilizando el fingerprint de la misma para asegurarnos de que es la que corresponde, o bien utilizando la dirección de email; este último método es el menos recomendable ya que pueden existir duplicados de llaves o llaves de las cuales el receptor a perdido la llave pública y no la ha podido revocar.

Una vez le demos a buscar se nos abrirá una nueva ventana con los resultados de la búsqueda, seleccionamos las claves que queramos importar y le damos a “Ok”, esto importara dichas claves a nuestros anillo de llaves local.

En el caso de que nos hayan pasado la clave pública por cualquier otro método deberemos meterla en un archivo y utilizaremos la opción del menú “File” -> “Importar claves desde fichero” para importarla a nuestro anillo.

Ya deberíamos tener todo listo para enviar nuestro primer correo cifrado. Ahora al abrir el editor para enviar un mensaje nuevo se nos presentaran nuevas opciones:

El mensaje en rojo de que este correo no se firmara ni cifrará aparece debido a las opciones por defecto, esto se puede editar en las preferencias de Enigmail. Una vez seleccionemos un destinatario Enigmail automáticamente detectará sin tenemos una clave pública que podamos utilizar y, según su configuración, se ajustará:

Como ves ahora enigmail nos indica que el mensaje de cifrará ya que en mi anillo tengo tanto la llave privada para la dirección emisora como la llave pública para la dirección receptora. Para también firmar el mensaje simplemente tendría que hacer click en el icono que sale a la derecha del candado en la barra de Enigmail.

Una vez enviado el correo esto será lo que verá el destinatario si todo ha ido bien:

Como podéis ver, enigmail nos informa de que el mensaje ha sido descifrado con éxito y nos muestra la información de la llave con la que el mensaje fue cifrado.

Espero os haya gustado esta introducción al uso de PGP en nuestros correos, en próximos post explicaré como utilizar este mismo sistema en nuestro smarthphone Android utilizando K9 y OpenKeyChain.

Saludos y, como siempre, gracias por vuestra visita!

Esta entrada fue publicada en cripto, tools, tutorial. Guarda el enlace permanente.

Deja un comentario