PGP o Pretty Good Privacy es posiblemente el software de cifrado de datos más extendido del mundo para las comunicaciones de datos a través de Internet. Entre otros muchos usos, se suele emplear para cifrar y descifrar las comunicaciones por email, aunque también se puede usar para garantizar la seguridad de ficheros, directorios y hasta particiones enteras de disco.
Phil Zimmermann / Beao editada con licencia CC 3.0Para los que tengáis mínimas nociones de inglés, sabréis que el nombre del programa significa privacidad bastante buena. Eso es porque su creador, Phil Zimmermann, pecó de humilde al ponerle ese nombre, ya que podría haber sido perfectamente VGP Very Good Privacy, ya que en el fondo se trata de uno de los métodos más seguros para enviar información de manera segura, valga la redundancia, sin que posibles espías, véase NSA o cualquier otra agencia gubernamental, puedan enterarse de los mensajes que estamos mandando o recibiendo.
Porque es precisamente ahora, con las revelaciones de Snowden y el caso de WikiLeaks, cuando todos estamos más concienciados que nunca con los posibles espionajes de la NSA, que el PGP vuelve a estar en boca de todos. Hasta Facebook anunció hace escasas semanas que ahora esta red social ya era compatible con este tipo de cifrado.
Lamentablemente, a pesar de vivir su segunda juventud y de llevar por bandera la bastante buena privacidad, su funcionamiento también es bastante complejo de entender para el usuario de a pie, al que poco le importa la criptografía y al que eso de las claves públicas y privadas le suena a chino, así que vamos a intentar explicar su funcionamiento de la manera más sencilla posible.
¿Qué es cifrar un mensaje?
En primer lugar, entendamos bien lo que significa encrip… cifrar un mensaje (tranquilos expertos en seguridad, intentaremos no usar los términos encriptar o encriptación, sabemos cuánto os molesta). Básicamente consiste en coger un texto perfectamente legible y entendible por todo el mundo y convertirlo en algo incomprensible para cualquier persona que intercepta ese mensaje indebidamente. De esta manera, el mensaje cifrado se envía a través de Internet, donde todo el mundo lo puede leer, pero nadie es capaz de descifrarlo, hasta llegar a su destino, donde el receptor es capaz de volver a obtener el mensaje original.
¿Y cómo lo logra el receptor? Empleando una clave de descifrado que sólo él conoce. El problema reside en cómo transmitirle a este receptor la clave a usar. Obviamente, no se lo puede decir la clave en el mismo mensaje, ya que perdería todo el sentido enviar un mensaje cifrado, así que de alguna manera debe conocer la clave de antemano. Y lógicamente si tuviéramos alguna manera ultrasecreta de hacerle llegar la clave, ¿por qué no enviar el mensaje directamente a través de ese canal y dejarnos de cifrados?
Aquí es donde entra en juego lo que se conoce como criptografía asimétrica, de clave pública o de dos claves, que es el método en el que se basa PGP. Cada una de las partes de una conversación tiene la posibilidad de crear dos claves, una privada que sólo es conocida por la persona a la que pertenece y otra pública que se proporciona a cualquier persona con la que uno quiera comunicarse de manera segura. No pasa absolutamente nada si la clave pública está a la vista de todos.
Si quiero escribir un mensaje cifrado a Pepito, busco su clave pública que seguramente muestre en la firma de su correo electrónico, en su web personal o incluso en su perfil de Facebook, la descargo y cifro mi mensaje usando esa clave con cualquiera de los muchos clientes disponibles. El mensaje se envía a Pepito a través de Internet. Puede que alguien espíe la conversación, pero como resultado sólo obtendrá una ristra de números incomprensibles e imposibles de descifrar.
Cuando el mensaje le llega a Pepito, se lo descargará y mediante su clave privada, que sólo él y nadie más que él conoce, podrá descifrar el mensaje que le he enviado. Es importante recalcar la importancia de proteger muy bien nuestra clave privada, ya que es el núcleo en el que se basa la seguridad de este método.
¿Cómo se hace el cifrado con PGP?
Todos hemos cifrado algún mensaje en algún momento de nuestras vidas, desde hablar medio en clave para que sólo nos entendiera la persona que nos interesaba, hasta enviar mensajes cambiando letras por números, por ejemplo, como si fuésemos espías.
Obviamente, el algoritmo que usa PGP para cifrar textos es bastante más complejo que simplemente cambiar letras por números. Cuando un usuario emplea PGP para cifrar un texto, éste se comprime para ahorrar espacio, tiempo de transmisión y fortalecer la seguridad, ya que será más difícil de encontrar patrones en el texto para romper el cifrado.
Posteriormente, se crea una clave de sesión secreta que solo se empleará una vez. Esta clave es un número aleatorio generado a partir de los movimientos del ratón y las teclas que se pulsen durante unos segundos con el propósito específico de generar esta, también puede combinarlo con la clave anteriormente generada.
Una vez que los datos se encuentran cifrados, la clave de sesión se cifra con la clave pública del receptor, como ya hemos explicado anteriormente, resultando en un mensaje completamente ilegible como el siguiente:
hQEMA8yG//Vk86KdAQf/cISYhN2KuyyOYWiX66JFSesTXFWjB9G5LLqS3bG2JWtl
chZImgm0v41widgDWEXoYkm89CrH1jYoEzH337yLmLmL+q6WMt8EA6Fjzcvqa9GC
ZkxLi5JqMK8s2H4mutn/RzstFDSCMByqwWaxvqHVu0ZuHc+XrW3BEeb1Z9w9zXjs
PvRR4pBHbu1pCS2+lgFMzF9rZ9b830sm9icShn1MhuRWx/pFATwXL2ax2EAkMZ3F
iE3hm1Rq2QgG1lz0ovf/N8PrshHim/p1NdAb2+A6RbNtMqLNeBv7B8699lJfgDEN
PsE0HeDHbxZDFOJAjaU9mRS4YSAFarUEJdD/EdTn3ck5johyRjs2ClRoAAgC9cd/
qyQl6hLjR4NpY/IDfCMQVmaCVU5KQFWtxYf+lD44IjW7ZLb+eyRqnpBw=6IFJ
Éste sería el mensaje que enviaremos a nuestro contacto, quién al recibirlo lo descifraría utilizando su clave privada, recorriendo el camino inverso al explicado anteriormente. Y si todo ha salido como toca, leería un escueto mensaje del tipo Hola, esto es una prueba PGP.
¿Cómo puedo crear mis claves y usar PGP?
Hay un sinfín de posibilidades para crear claves PGP, la mayoría de ellas basadas en el estándar OpenPGP derivado del PGP original creado por Phil Zimmermann en su momento. Las hay más intuitivas o menos, y por supuesto su facilidad de uso ha evolucionado muchísimo desde la aparición del PGP.
Hay varias herramientas online con el que puede generar tu clave pública y privada de manera muy sencilla, además de una utilidad para cifrar y descifrar cualquier mensaje. Con estas herramientas, crear una pareja de claves es muy fácil. Uno sólo tiene que introducir su dirección de correo electrónico al que irán asociadas las claves y una contraseña maestra para ellas. El programa genera las claves automáticamente, ofreciendo tanto la pública como la privada.
La contraseña pública la podremos mostrar donde queramos (firma de correo electrónico, páginas personales, etc.), pero lo más recomendable es subirla a un servidor de claves públicas, en palabras llanas, un especie de páginas amarillas de claves PGP públicas donde cualquier podrá encontrar nuestra clave si lo desea.
De la misma manera, también existen complementos para navegadores con los que realizar el proceso, siendo uno de los más populares la extensión de Chrome, Mailvelope, o programas descargables para las plataformas más usadas. En Windows podemos usar Gpg4win, por ejemplo, y en Mac, GPG Suite, por sólo citar algunos ejemplos.
Pero uno de los programas por excelencia para la generación de claves PGP en Linux es el GnuPG, un programa que viene instalado por defecto en Ubuntu y que resulta bastante sencillo instalar, si no lo tuviéramos, y de utilizar.
Los comandos necesarios para generar claves con GnuPGSi abrimos el terminal de nuestra distro e introducimos el comando ~$ gpg --gen-key comenzaremos a generar nuestras claves. Tan sólo tendremos que elegir el tipo de clave deseado, su longitud en bits, el tiempo de validez e introducir nuestro nombre y correo electrónico.
Posteriormente, podremos crear una clave de revocación por si en algún momento nuestra clave PGP estuviese comprometida. Ya sólo queda hacer llegar nuestra clave pública a nuestros contactos y poner la privada a buen recaudo.
Pero, ¡ojo! También funciona a la inversa
Hasta ahora hemos explicado el concepto de PGP para enviar mensajes cifrados mediante claves públicas que sólo puede leer el receptor adecuado. Pero este programa también puede usarse al revés: un mensaje cifrado con la clave privada puede ser descifrado por cualquiera que tenga la clave pública.
Algunos os preguntaréis que dónde está la gracia cifrar un mensaje que puede descifrar cualquier persona que tenga acceso a mi clave pública. Obviamente no es demasiado indicado para enviar un mensaje ‘secreto’ ni evitar la vigilancia de la NSA, pero sí tiene un propósito: autenticar el origen del mensaje y decir esto sólo lo he podido escribir yo y nadie más que yo.
De esta manera, es como si firmara mi mensaje, y nadie podrá modificarlo, porque si alguien lo descifra con mi clave pública y lo modifica, ya no podrá volver a cifrarlo con mi clave privada, pues sólo tengo acceso yo.
¿Dónde puedo usar PGP?
PGP se puede usar en cualquier servicio de correo electrónico, aplicación de mensajería instantánea o cualquier otro método para comunicarse por Internet. Al fin y al cabo, como habréis visto más arriba, es simplemente un troncho de caracteres alfanuméricos que copiaremos y pegaremos en nuestros emails o mensajes.
De esta manera, puedes enviar un mensaje cifrado con PGP por Gmail, Yahoo! Mail, Hotmail, Outlook o cualquier otro cliente de correo que suelas usar. Incluso clientes de mensajería tipo Facebook Messenger, WhatsApp o Telegram. No hay ningún tipo de restricción. Ya será el destinatario del mensaje el que se encargue de buscarse las castañas para copiar el mensaje cifrado y acometer su descifrado.
Email a enviar con mensaje cifrado con PGPObviamente el PGP no es infalible. Como muy bien explica la Electronic Frontier Foundation, utilizando un símil comprensible para todos, usar PGP es como instalar en la puerta de casa una cerradura completamente imposible de forzar, pero eso no quita que andando por la calle alguien pueda robarte tu llave y acceder a tu hogar. Lo mismo pasa con PGP, nadie podrá romper el cifrado de tus claves PGP, pero eso no significa que algún ente malintencionado no pueda acceder directamente a tu ordenador, malware mediante, robarte esas claves y descifrar tus comunicaciones.