OpenPGP para todos con Enigmail y Thunderbird

Hoy vamos a hablar sobre el cifrado de emails con el protocolo OpenPGP y vamos a repasar el manejo de varias tecnologías implicadas en este proceso. En mi humilde opinión, si me permites, creo que este post te vendrá bien porque nunca está de más repasar este tema dado que la gestión de los correos cifrados sigue siendo engorrosa, desafortunadamente, en la actualidad es algo casi imposible de abordar por un usuario medio sin conocimientos de ordenadores.

Por cierto, en la actualidad existen algunas iniciativas que tienen como objetivo facilitar la gestión PGP, por ejemplo Keybase, aunque en mi opinión todavía queda bastante para que todo el mundo pueda beneficiarse de esta tecnología.

Para seguir este tutorial deberías tener unos conocimientos básicos de criptografía de clave pública.

Top secret

Todo esto me parece muy complicado…

Gestionar el correo electrónico seguro requiere algo de esfuerzo, no te desanimes, ten un poco de paciencia e investiga otros recursos por tu cuenta. Es como todo en esta vida, ¡ánimo!, cuando por fin conozcas los conceptos implicados en PGP, gestionar el email encriptado será sencillo, ya lo verás. Al final solo tendrás que tener preparada tu clave pública PGP, configurar tu programa cliente (Thunderbird, Outlook, Apple Mail, etc.) y almacenar las claves públicas de las personas a quienes vayas a enviar correos cifrados.

¿Qué es PGP?

PGP es un método para proteger los emails en la capa de aplicación de la pila TCP/IP. Para entendernos rápido, esto significa que la seguridad se delega en las mismas aplicaciones que gestionan los emails. Pero esto no es solo característico de PGP; en general, los sistemas de correo electrónico seguro se basan en la idea de incorporar la seguridad dentro de los mismos mensajes, sin modificar el protocolo de transferencia.

Esto es así por la misma naturaleza del correo electrónico: es asíncrono, se almacena en otros ordenadores, puede enviarse a varios destinatarios, viaja en claro si las comunicaciones que lo transportan no se encriptan con SSL, TLS, etc.

¿Sabías que hay varios sistemas de correo electrónico seguro? Los más populares son:

  • PGP (Pretty Good Privacy)
  • S/MIME (Secure MIME)

GnuPG es el software libre que proporciona funciones criptográficas y otras utilidades para gestionar el correo electrónico seguro con el método PGP.

Te recomiendo que eches un vistazo a este recurso de la Wikipedia para saber cómo funciona exactamente PGP. Allí encontrarás este diagrama realizado por xaedes & jfreax & Acdx.

Diagrama PGP

Figura 1. Así funciona PGP (clica en la imagen para verla más grande)

Al final la idea es sencilla. Los emails se encriptan con la clave pública del destinatario. Luego, por otro lado, cuando el destinatario recibe mensajes de correo encriptados, los tiene que desencriptar con su clave privada que solo él o ella conoce. Cualquier persona que consiga interceptar la comunicación verá caracteres extraños ininteligibles sin sentido, porque el contenido estará encriptado.

Datos encriptados

Este sistema de email seguro requiere que el emisor de un mensaje conozca la clave pública del receptor. Por esto salen al rescate los servidores de claves públicas. Estos servidores son como directorios o repositorios donde puedes buscar claves por nombre, apellido, etc.

Si yo, Bob, quiero recibir mensajes encriptados con PGP, tengo que preocuparme de generar una clave pública y subirla a un servidor de claves, o comunicarlo a las personas que vayan a enviarme información sensible para que puedan encriptar sus mensajes con mi clave. Por otra parte, si yo, Bob, voy a enviar información sensible a Alice (mi información bancaria, DNI, nóminas, etc.), tendré que saber su clave pública PGP para enviarle mi mensaje encriptado.

Finalmente, con PGP también puedes firmar tu email con tu clave privada, así demuestras al receptor que eres tú y solo tú quién ha escrito ese correo electrónico, puesto que la firma se verifica con la clave pública correspondiente.

¿Qué vamos a hacer en este tutorial?

Primero crearemos un par de claves pública/privada desde una consola Cygwin, con GnuPG, y luego aprenderemos a gestionar el cifrado de mensajes desde Thunderbird por medio del plugin Enigmail. El objetivo es familiarizarnos con algunas de las tecnologías implicadas en la creación de emails seguros, al mismo tiempo que exponemos algunas ideas importantes que deberíamos repasar de vez en cuando.

El entorno que yo he utilizado para correr las pruebas que explico en este post es este.

  • Sistema operativo Windows 8
  • Cygwin, una interfaz de línea de comandos tipo Unix para Windows
  • GnuPG, implementación libre del estándar OpenPGP
  • Enigmail, plugin de seguridad para Thunderbird

Idealmente estaría bien que tu software fuera el mismo que el mío, pero si conoces GNU/Linux será muy fácil para ti adaptar lo que explico en Cygwin a tu distro GNU/Linux. De hecho es casi lo mismo, Cygwin es como una consola GNU/Linux en Windows.

Creación del par de claves pública/privada

Instalamos GnuPG.

Generamos las claves con este comando:

Esto producirá una salida parecida a la siguiente, donde tenemos que ir respondiendo las preguntas que nos hace la utilidad gpg.

gpg nos pregunta por el tipo de clave que queremos, nosotros seleccionaremos la primera opción (RSA and RSA).

A continuación nos pide un tamaño. De forma predeterminada el tamaño es 2048, seleccionaremos esta opción pulsando la tecla intro.

Ahora la utilidad nos pregunta cuándo queremos que caduque la clave. Aquí seleccionaremos 6 meses (6m).

Como ves, gpg --gen-key es una utilidad interactiva que nos va pidiendo datos para crear la clave, así todo el rato hasta llegar al dato final, la passphrase:

Después de introducir la passphrase 2 veces, obtendremos esta salida por pantalla:

Ya lo tenemos, con lo anterior ya podemos consultar el contenido del directorio .gnupg:

También puedes utilizar este comando para listar las claves:

Lo que genera una salida parecida a:

El identificador de mi clave es 8CF8A9BB, de modo que para subirla al servidor de claves pgp.mit.edu puedo ejecutar este comando gpg:

Instalación de Enigmail en Thunderbird

¿Cómo fue? ¿Conseguiste crear tus claves? En el apartado anterior hemos aprendido a crear un par de claves pública/privada con la utilidad gpg. Para un usuario técnico esto será más o menos sencillo, pero para una persona sin conocimientos técnicos es algo que no se puede abordar; tiene que gestionar su correo seguro OpenPGP desde una GUI amigable.

Ahora vamos a facilitar las cosas a las personas que no son técnicas con Enigmail, una extensión de seguridad para Mozilla Thunderbird y Seamonkey que permite gestionar mensajes de correo electrónico firmados o cifrados con el estándar OpenPGP.

Para instalar Enigmail, en Thunderbird nos vamos a Herramientas > Complementos y en la caja de búsqueda que dice Buscar complementos escribiremos la palabra enigmail. Entonces nos saldrá este cuadro y le daremos al botón Instalar.

Instalando complemento

Figura 2. Instalando Enigmail (clica en la imagen para hacerla más grande)

Tras instalar el plugin, Thunderbird nos pedirá que reiniciemos la aplicación. Y cuando reiniciemos, Thunderbird iniciará automáticamente el asistente de instalación de Enigmail. En este tutorial no detallaremos todos los pasos del asistente porque seguro que los podéis seguir sin problemas.

Ya verás que Thunderbird preguntará cosas tales como si quieres firmar tus mensajes de forma predeterminada, dónde tienes el ejecutable pgp.exe en tu máquina (en mi caso está en C:\cygwin64\bin), y también intentará buscar las claves OpenPGP que tengas instaladas en tu PC para preguntarte cúal quieres utilizar para firmar, cifrar y descifrar tus correos.

Con Enigmail instalado en nuestro Thunderbird, tendremos a golpe de clic en un nuevo menú todas las opciones PGP que de otro modo tendríamos que ejecutar en la consola. Enigmail también habilita un menú para trabajar con S/MIME, pero en este artículo no veremos cómo utilizar este sistema de correo seguro.

Te cuento que yo le dije al asistente de instalación de mi Enigmail que yo prefería no cifrar de forma predeterminada, de modo que si quiero encriptar mis mensajes tengo que hacerlo explícitamente como muestra esta figura.

Opciones en Thunderbird

Figura 3. Ya podemos gestionar cómodamente nuestros correos seguros en Thunderbird (puedes clicar en esta imagen para verla más grande)

O también así como explicaré ahora. Fíjate que las opciones más importantes (cifrado y firma) están muy a mano en la pantalla de Redacción de mensajes, disponibles en forma de icono en la parte inferior derecha.

figura-x-llave-lapiz-grandes

Figura 4. Enigmail pone 2 iconos para cifrar y firmar mensajes con el estándar OpenPGP

Acabamos de ver cómo podemos firmar y cifrar fácilmente nuestros mensajes, pero Enigmail también permite buscar e importar claves de servidores de claves, generar nuevos pares, etc., todo esto con la opción Administración de claves.

Administrar claves con Enigmail

Figura 5. Administrar claves con Enigmail es sencillo

¡Y esto es todo por hoy! Espero haber aportado un poco de luz a la gestión de correos seguros con PGP, GnuPG, y Thunderbird. Te invito a implantar esta solución en las máquinas de usuarios no técnicos para que puedan beneficiarse de esta tecnología. Con las claves ya en mano, y bien configurado Thunderbird, es sencillo cifrar y firmar los mensajes, solo hay que explicar a los usuarios cómo tienen que utilizar Thunderbird y Enigmail.