En anteriores ocasiones he hablado sobre las bondades de GPG, al igual que también he hablado sobre la importancia de las comunicaciones seguras, ya sea en comunicaciones con SSL, o en comunicaciones SSH. Hoy quiero traeros un articulo orientado a la seguridad en los correos electrónicos. Seguridad que debe de ser tomada en cuenta pues nunca se sabe si un correo puede ser leído por personas ajenas, y dependiendo de la relevancia del correo puede llegar a ser fatal para nosotros. Es por eso que quiero hablaros sobre el cifrado de los correos electrónicos; cifrado que realizaremos mediante GPG y Enigmail.
Para ello lo primero que tenemos que entender es cómo funciona el envío de correos cifrados: Es importante saber que, hoy en día, lo más común es que al cifrar un elemento (mediante el cifrado que sea) se suele realizar mediante un sistema de cifrado asimétrico. ¿Qué significa eso? Que la clave de cifrado y la clave de descifrado son diferentes, haciendo que la seguridad del elemento cifrado sea mucho más robusta. Dicho cifrado asimétrico es traducido en dos claves: Una pública, usada para cifrar el elemento, y una privada, usada para descifrarlo. La clave pública, tal y como su propio nombre indica, puede ser compartida con cualquiera sin ningún temor, ya que se usa única y exclusivamente para cifrar archivos, mientras que la clave privada debe de ser guardada con gran recelo, pues se trata de la llave que descifraría nuestro elemento seguro. Esto traducido a nuestra situación en particular daría la siguiente situación: Supongamos que tenemos dos personas con cuenta de correo electrónico; cada una con su propia clave pública y privada. Si una de ellas, quisiese enviar un correo cifrado a la otra persona, tendría que tener su clave pública. Esto tal vez quede mejor explicado en la siguiente imagen:
Teniendo claro que SIEMPRE será necesario tener la clave pública de la otra persona para poder cifrar el mensaje y que, obviamente, la otra persona lo pueda descifrar; pasaremos a preparar dicha situación.
Para ello lo primero de todo será instalar las dependencias necesarias; que serán tanto GnuPG (GPG), Enigmail y un cliente de correo que puede ser Thunderbird o Icedove que será donde enviaremos y leeremos los correos; ya que dichos clientes están integrados con Enigmail y nos permiten cifrar y descifrar los correos de forma intuitiva; su instalación es tan sencilla como realizar lo siguiente (en mi caso he usado Icedove al haber hecho la prueba en Debian):
apt-get install gnupg icedove enigmail
Con estos paquetes instalados, tendríamos que pasar a abrir nuestro cliente de correo, que en mi caso sería icedove. Allí vincularíamos la cuenta de correo a nuestro cliente de correo.
Tras configurar nuestra cuenta de correo, abriríamos el complemento (que se integra automáticamente en el cliente de correo) Enigmail.
Abriendo dicho complemento, el primer e indispensable paso sería la generación de claves; pues son éstas las que se encargarán de cifrar o descifrar mensajes, con lo que tendríamos que seleccionar "Administración de claves".
En dicha administración de claves, necesitaríamos generar un nuevo par de claves; nuevo par de claves; par de claves que iría vinculada a la cuenta de correo que acabamos de vincular... Para ello, seleccionaríamos: Seleccionar --> Nuevo para de claves.
Ahora tocaría generar nuestro par de claves; par de claves cuyas claves estarían protegidas por una contraseña; es decir que no solo tendremos una clave pública y una privada; sino que éstas tendrían una contraseña a modo de protección para que aún cuando se tuviese la clave privada para descifrar el correo, se necesitase conocer la contraseña para leerlo.
Tras poner una contraseña y dar al botón "Generar clave", tendremos que esperar unos minutos para poder tener nuestra clave generada, si bien lo recomendable es hacer que el sistema "trabaje" para acelerar dicho proceso; ya sea navegando en Internet o generando bucles infinitos en la consola tales como:
i=1; while[$i>0]; doecho$i; i=$(($i+1)); done
El proceso puede durar desde minutos a horas, todo dependiendo de la potencia del equipo y el uso que se esté haciendo de éste. Al terminar tendremos nuestras claves generadas. Supongamos que tanto A como B, han realizado exactamente el mismo proceso; cada uno obviamente con su correspondiente cuenta de correo. ¿Cómo podemos hacer que la otra persona nos pueda enviar un correo cifrado que nosotros tengamos la capacidad de descifrar? Tenemos dos opciones; o bien enviar la clave pública por correo a la persona que queremos que en el futuro nos envíe correos cifrados o, exportar dicha clave a un fichero para luego entregarle el susodicho en mano. Ambas tareas se pueden realizar en el administrador de claves de Enigmail, tal y como podéis ver en la captura de a continuación:
En caso de seleccionar la opción de "Enviar clave pública por correo", la clave iría adjunta a un mail que enviaríamos a nuestro destinatario como si de un mail normal se tratase. Si en cambio deseásemos exportar la clave a un fichero, hay que ser cuidadosos, ya que únicamente nos interesaría exportar la clave pública, pues en caso contrario nos expondríamos que otras personas pudiesen descifrar nuestros mails.
Sin importar el método que escojamos, lo importante es tener la clave pública de la persona a la que queremos enviar el correo, si bien obviamente tiene que estar integrada en nuestro cliente de correo. Para ello tendremos que ir, de nuevo al administrador de claves e ir a File --> Importar claves desde un fichero.
Con tan solo seleccionar la clave pública en cuestión ya tendríamos todo preparado para enviar un correo cifrado a la otra persona. Simplemente habría que preparar un correo cifrado y enviarlo al destinatario:
Tan pronto como el receptor reciba el mensaje, al tener la clave privada en su poder; con tan solo con tan solo introducir la contraseña de descifrado (en caso de haberla) podría leer el correo íntegramente; cosa que nadie más podría hacer.
Espero que os haya resultado útil.
Saludos.