Ahora entiendo por qué casi nadie cifra su correo



El cifrado de correo electrónico es un procedimiento difícil y doloroso. Recientemente, me di cuenta de cuánto. Una amiga mía, muy avanzada en el campo de la seguridad de la información, me envió su clave pública PGP y me pidió que cambiara al cifrado. No, ella no es de la NSA o la CIA, es solo una persona común que se preocupa por su privacidad. Nunca antes había enviado cartas cifradas, pero pensé: "¿Por qué no?" Durante muchos años quise aprender esto, pero no había nadie con quien intercambiar cartas cifradas.

Comencé instalando GnuPG en mi máquina Linux.

GnuPG es similar a PGP en que utiliza claves públicas y privadas para el cifrado y descifrado, pero viene con código fuente abierto y viene con muchas distribuciones de Linux. Otra versión de código abierto de PGP es OpenPGP.

GnuPG para Windows llamado Gpg4win se puede descargar desde el sitio web oficial . Elegí un método general para cifrar y descifrar mensajes, que no está vinculado a ningún proveedor de correo electrónico, porque no quería limitarme a la posibilidad de cifrar con un solo proveedor. Además, la única forma de asegurarse de que incluso el proveedor de correo no tenga acceso a sus cartas es encriptarlas usted mismo. Encontré la guía de GnuPG más completa sobre How-To Geek .

Importé la clave pública de mi amigo usando este comando:

gpg --import her_public_key_file.key

Este comando her_public_key_file.keyse reemplaza con el archivo de clave pública real. Luego verifiqué que su clave se importó con éxito:

gpg --list-keys

Un mensaje como este apareció:

pub 2048R/FFE7947D 2019-10-11 [expires: 2021-10-10]
uid her_email@her_email_provider.com
sub 2048R/AB48FEC2 2019-10-11

Esto significa que GnuPG reconoce su clave pública como válida y la guarda para uso futuro.

Luego firmó su clave pública:

gpg --sign-key her_email_address@email_provider.com

Firmar la clave pública le dice a GnuPG que confía en esta clave, es decir, realmente vino de esta persona. Cada clave pública debe estar firmada antes de que se puedan descifrar los mensajes del propietario de esta clave pública. En mi opinión, este paso no tiene ningún sentido. ¿Por qué importarías una clave si no crees que proviene de la persona adecuada?

Luego intenté generar mis claves:

gpg --output ~/temp.key --armor --export My Name 

Bueno, después de tal comando, apareció un mensaje de error que indica que se encontró el final de una nueva línea. Pensé que esto podría deberse a espacios en mi nombre y entre el nombre y la dirección de correo electrónico, así que probé varios formatos. Después de aproximadamente una hora y muchos intentos fallidos, algunos de los cuales parecían exitosos, pero no lo fueron, finalmente encontré el comando correcto:

gpg --gen-key

El comando anterior te hace una serie de preguntas. Al principio elegí la opción "1", luego elegí la opción de longitud de clave de 2048 bits. Establecer un período de validez de clave ilimitado. No indiqué el apellido en el campo de nombre, pero los espacios también son compatibles allí: puede especificar tanto el nombre como el apellido. Luego ingresó su dirección de correo electrónico. El campo de comentario se deja en blanco. Y finalmente, introdujo una frase de contraseña larga. Una frase de contraseña es simplemente un sinónimo de una contraseña. Lo escribí donde no se perderá. De hecho, lo puse en un archivo encriptado usando Truecrypt. Se necesitará una frase de contraseña más adelante para cifrar mensajes en caso de reinstalar GnuPG en el disco duro y volver a importar las claves. ¡Y no te olvides de hacer una copia de seguridad de las llaves!

Después de crear las claves, verificamos el resultado:

gpg --list-keys

Este comando produce algo como esto:

pub 2048R/FFE7947D 2019-10-11 [expires: 2021-10-10]
uid her_email@her_email_provider.com
sub 2048R/AB48FEC2 2019-10-11


pub 2048R/3A785D3F 2020-02-22
uid My Name
sub 2048R/A7B384FE 2020-02-22

Ejecuté la generación de claves dos veces porque no estaba seguro de si este resultado significa que hay un par de claves públicas / privadas o solo una clave. De alguna manera, finalmente me di cuenta de que había creado dos pares de claves, así que eliminé el segundo par.

Luego intenté exportar mi clave pública a un archivo. La clave pública debe enviarse a todas las personas a las que envíe una carta cifrada para que pueda descifrarla. No estoy seguro de qué comando usé, pero produjo un archivo de texto que comienza con -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1. Envié esta carta a mi amiga, y ella me respondió con un mensaje cifrado.

Traté de descifrar el archivo message.asccon su carta:

gpg --decrypt message.asc > plain.txt

Pero GnuPG dio un mensaje de error de que no podía encontrar la clave secreta:

gpg: encrypted with RSA key, ID XXXXXXXX
gpg: decryption failed: secret key not available

Pero vi mi llave secreta. Incluso podría exportarlo. ¡Sabía que lo era! Qué puedo decir, a veces los programadores escriben mensajes de error realmente terribles. En este punto, ya había comenzado a experimentar algo de irritación.

No sabía lo que hice mal. Lo único que podía asumir era que, de alguna manera, no podía crear las claves correctamente. O eso, o exporté la clave pública incorrecta. Así que decidí comenzar de nuevo. Eliminé mi par de claves, generé un nuevo par de claves y exporté mi clave pública a un archivo con este comando:

gpg --output ~/my_public_gpg_key.key --armor --export My Name my-email@my-email-povider.com

Luego le envió a un amigo una nueva clave pública. El parámetro --armorle dice a GnuPG que cree el archivo de clave pública en forma de texto. Nombre de archivo - my_public_gpg_key.key.

Ella volvió a cifrar su mensaje y me lo envió. Cuando intenté descifrarlo, nuevamente vi el mismo mensaje de error:

gpg: encrypted with RSA key, ID XXXXXXXX
gpg: decryption failed: secret key not available

Esta vez, noté que el identificador de clave coincide con mi antigua clave pública, no con la nueva. Decidí que estaba equivocada y le pedí que volviera a intentarlo con una nueva clave. Luego, para asegurarme de que no me había equivocado, decidí verificar que la clave que usaba era realmente mi nueva clave. ¡La nueva clave que envié ni siquiera era una de mis claves públicas! ¡Fue su clave pública la que comenzó con -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1! ¡De alguna manera exporté su llave con la adición Version: GnuPG v1! Sé esto porque todavía tenía un archivo con su clave que ella me envió, y comienza con -----BEGIN PGP PUBLIC KEY BLOCK-----. No hay Version: GnuPG v1! Y su clave pública coincide con la que le envié.

Reexporté mi clave pública con el mismo comando anterior. Esta vez verifiqué que era realmente mi clave antes de enviársela por correo electrónico. De los materiales de referencia de Internet GnuPG, aprendí que puede aparecer un mensaje sobre la ausencia de una clave secreta si las personas usan versiones diferentes de GnuPG. Le mencioné esto cuando le envié una nueva clave por correo electrónico.

Unas semanas después recibí una carta de respuesta. Para entonces, ya había decidido que se había rendido. Durante las siguientes semanas, tuve algunos problemas con la computadora, lo que hizo necesario reformatear el disco duro. Así que tuve que reinstalar GnuPG, volver a importar mis claves y volver a importar su clave pública. Afortunadamente, hice copias de seguridad! Luego respondí a su última carta con otra carta que cifré con este comando:

gpg --encrypt --sign --armor -r her-email@her-email-provider.com --passphrase my-pass-phrase my-msg.txt

Por supuesto, esta no es mi contraseña real, la reemplacé my-pass-phrasey el mensaje no cifrado con my-msg.txt. Se generó un texto cifrado y se nombró su archivo my-msg.tx.gpg. No pude encontrar ninguna información sobre cómo descifrar mi propio texto cifrado, así que tuve que enviárselo, sin saber si lo había cifrado correctamente. Solo sabía que parecía ser del tamaño correcto. Después de un par de semanas, recibí de ella una nueva carta encriptada sobre un tema diferente. Solo entonces apareció la confianza de que finalmente había llegado al punto en el que podemos comunicarnos con éxito por correo electrónico cifrado. ¡Todo el proceso de principio a fin tomó más de un mes! Todavía estoy tratando de automatizar los comandos GnuPG para poder usarlos sin pensar demasiado en lo que estoy haciendo.

De esta experiencia, me di cuenta de que el correo electrónico cifrado, aunque es un ejercicio interesante, no es muy práctico. A menos que usted sea el Edward Snowden monitoreado por la NSA, es poco probable que pueda justificar el esfuerzo de crear y usar correo cifrado. Y si no eres Edward Snowden con secretos importantes, es poco probable que alguien quiera gastar energía en cifrar correspondencia contigo.

Cifrar y descifrar correos electrónicos, como lo hice con GnuPG, es demasiado tedioso. Como ya he dedicado demasiado esfuerzo a esto, continuaré usándolo para comunicarme con mi amigo en línea. Pero no recomendaría que una persona común use GnuPG para cifrar el correo electrónico, si esto se puede evitar. Entiendo que existen soluciones más simples en el mercado de proveedores de correo específicos, como Protonmail, pero la mayoría de las personas no querrán cambiar el proveedor para usarlas. Todos necesitamos una forma más fácil de enviar y recibir correo cifrado sin cambiar el proveedor de correo. GnuPG no es una solución. Si conoce una forma más sencilla de cifrar el correo, considere dejar un comentario.


All Articles