Linux

Linux: ¿cómo cifrar y descifrar archivos con GPG?

Proteja su privacidad con el comando gpg de Linux. Utilice un cifrado de primera clase para mantener sus secretos a salvo. Le mostraremos cómo usar gpg para trabajar con claves, cifrar archivos y descifrarlos.

GnuPrivacy Guard (GPG) le permite cifrar archivos de forma segura para que sólo el destinatario previsto pueda descifrarlos. Específicamente, GPG cumple con el estándar OpenPGP. Está basado en un programa llamado Pretty Good Privacy (PGP). PGP fue escrito en 1991 por Phil Zimmerman.

GPG se basa en la idea de dos claves de encriptación por persona. Cada persona tiene una clave privada y una clave pública. La clave pública puede descifrar algo que fue encriptado usando la clave privada.

Remitir archivos blindados

Para enviar un archivo de forma segura, debe cifrarlo con su clave privada y la clave pública del destinatario. Para descifrar el archivo, necesitan su clave privada y su clave pública.

Verá que las claves públicas deben ser compartidas. Necesita tener la clave pública del destinatario para poder cifrar el archivo, y el destinatario necesita su clave pública para descifrarlo. No hay peligro en hacer que sus claves públicas sean tan públicas.

De hecho, existen Servidores de Clave Pública para ese mismo propósito, como veremos. Las claves privadas deben mantenerse privadas. Si su clave pública es de dominio público, entonces su clave privada debe mantenerse en secreto y segura.

Hay más pasos para configurar GPG que para utilizarlo. Afortunadamente, por lo general sólo es necesario configurarlo una vez.

Generación de claves

El comando gpg se instaló en todas las distribuciones de Linux que se comprobaron, incluyendo Ubuntu, Fedora y Manjaro.

Usted no tiene que usar GPG con el correo electrónico. Puede cifrar los archivos y hacer que estén disponibles para su descarga o transmitirlos físicamente al destinatario. Sin embargo, es necesario que asocie una dirección de correo electrónico con las claves que genere, así que elija la dirección de correo electrónico que va a utilizar.

Aquí está el comando para generar tus claves. La opción –full-generate-key genera sus claves en una sesión interactiva dentro de la ventana de su terminal. También se le pedirá una frase de contraseña. Asegúrate de recordar cuál es la frase de contraseña. Tres o cuatro palabras sencillas unidas a la puntuación son un modelo bueno y robusto para contraseñas y frases de contraseña.

gpg –full-generate-key

Se le pedirá que elija un tipo de cifrado de un menú. A menos que tenga una buena razón para no hacerlo, escriba 1 y pulse Intro.

Debe elegir una longitud de bits para las claves de encriptación. Pulse Intro para aceptar el valor predeterminado.

Debe especificar cuánto tiempo debe durar la clave. Si está probando el sistema, introduzca una duración corta como 5 durante cinco días. Si va a mantener esta clave, introduzca una duración mayor, como 1 año, para un año. La clave tendrá una duración de 12 meses, por lo que será necesario renovarla al cabo de un año. Confirme su elección con una Y.

Debe introducir su nombre y su dirección de correo electrónico. Puede añadir un comentario si lo desea.

Se le pedirá su contraseña. Necesitarás la frase de contraseña cada vez que trabajes con tus llaves, así que asegúrate de saber qué es.

Haga clic en el botón Aceptar cuando haya introducido su frase de contraseña. Verás esta ventana mientras trabajas con gpg, así que asegúrate de recordar tu frase de contraseña.

La generación de claves tendrá lugar y se le devolverá a la línea de comandos.

Generación de un certificado de revocación en Linux

Si su clave privada es conocida por otros, tendrá que disociar las claves antiguas de su identidad, para poder generar nuevas claves. Para ello, necesitará un certificado de revocación. Haremos esto ahora y lo guardaremos en un lugar seguro.

La opción –output en Linux debe ir seguida del nombre de archivo del certificado que desea crear. La opción –gen-revoke hace que gpg genere un certificado de revocación. Debe proporcionar la dirección de correo electrónico que utilizó cuando se generaron las claves.

gpg –output ~/revocation.crt –gen-revoke dave-geek@protonmail.com

Se le pedirá que confirme que desea generar un certificado. Pulse Y y pulse Intro. Se le preguntará por la razón por la que está generando el certificado. Como estamos haciendo esto con anticipación, no lo sabemos con seguridad. Presione 1 como una suposición plausible y presione Enter.

Puede introducir una descripción si lo desea. Pulse Intro dos veces para finalizar la descripción.

Se le pedirá que confirme su configuración, pulse Y y pulse Intro en el comando de Linux.

Se generará el certificado. Verá un mensaje que refuerza la necesidad de mantener seguro este certificado.

Menciona a alguien llamado Mallory. Las discusiones de criptografía han utilizado desde hace mucho tiempo a Bob y Alice como las dos personas que se comunican. Hay otros personajes de apoyo. Eve es una fisgona, Mallory es un atacante malicioso. Todo lo que necesitamos saber es que debemos mantener el certificado a salvo y seguro.

Como mínimo, eliminemos del certificado todos los permisos que no sean los nuestros.

chmod 600 ~/revocation.crt

Verifiquemos con ls para ver cuál es el permiso ahora:

ls -l

Eso es perfecto. Nadie más que el propietario del archivo -nosotros- puede hacer nada con el certificado.

Importar la clave pública de otra persona

Para encriptar un mensaje que otra persona puede desencriptar, debemos tener su clave pública.

Si se le ha proporcionado su clave en un archivo, puede importarla con el siguiente comando. En este ejemplo, el archivo de claves se llama «mary-geek.key».

La clave se importa y se le muestra el nombre y la dirección de correo electrónico asociados a esa clave. Obviamente, eso debería coincidir con la persona de la que lo recibió.

También existe la posibilidad de que la persona de la que necesita una clave haya subido su clave a un servidor de clave pública. Estos servidores almacenan las claves públicas de personas de todo el mundo. Los servidores de claves se sincronizan entre sí periódicamente para que las claves estén disponibles universalmente.

El servidor de clave pública del MIT es un servidor de clave popular y que se sincroniza regularmente, por lo que la búsqueda allí debería tener éxito. Si alguien ha subido una clave recientemente, puede tardar unos días en aparecer.

La opción –keyserver de Linux debe ir seguida del nombre del servidor de claves que desea buscar. La opción –search-keys debe ir seguida del nombre de la persona que está buscando o de su dirección de correo electrónico. Usaremos la dirección de correo electrónico:

gpg –keyserver pgp.mit.edu –search-keys mary-geek@protonmail.com

Los partidos están listados para usted y numerados. Para importar uno, escriba el número y pulse Intro. En este caso, hay una sola coincidencia, así que escribimos 1 y pulsamos Intro.

La clave se importa y se nos muestra el nombre y la dirección de correo electrónico asociados a esa clave.

Verificación y firma de una clave en Linux

Si alguien que usted conoce le ha entregado un archivo de clave pública, puede decir con seguridad que pertenece a esa persona. Si lo ha descargado de un servidor de clave pública, es posible que sienta la necesidad de verificar que la clave pertenece a la persona a la que está destinada.

La opción –fingerprint hace que gpg cree una secuencia corta de diez conjuntos de cuatro caracteres hexadecimales. Puede pedirle a la persona que le envíe la huella dactilar de su llave.

A continuación, puede utilizar la opción –fingerprint para generar la misma secuencia de huellas dactilares de caracteres hexadecimales y compararlos. Si coinciden, sabes que la llave pertenece a esa persona.

gpg –fingerprint mary-geek@protonmail.com

Se genera la huella dactilar.

Cuando esté satisfecho de que la clave es auténtica y pertenece a la persona con la que se supone que está asociada, puede firmar su clave.

Si no lo haces, puedes seguir usándolo para encriptar y descifrar los mensajes desde y hacia esa persona. Pero gpg le preguntará cada vez si desea continuar porque la clave no está firmada. Usaremos la opción –sign-key y proporcionaremos la dirección de correo electrónico de la persona, para que gpg sepa qué clave firmar.

gpg –sign-key mary-geek@protonmail.com

Verás información sobre la llave y la persona, y se te pedirá que verifiques que realmente quieres firmar la llave. Pulse Y y pulse Enter para firmar la tecla.

Cómo compartir su clave pública

Para compartir su clave como un archivo, necesitamos exportarla desde el almacén local de claves de gpg. Para ello, utilizaremos la opción -exportar, que debe ir seguida de la dirección de correo electrónico que utilizó para generar la clave. La opción –output debe ir seguida del nombre del archivo al que se desea exportar la clave. La opción –armor le dice a gpg que genere una salida de armadura ASCII en lugar de un archivo binario.

gpg –output ~/dave-geek.key –armor -export dave-geek@protonmail.com

Podemos echar un vistazo dentro del archivo clave con menos.

menos dave-geek.key

La llave se muestra en toda su gloria:

También puede compartir su clave pública en un servidor de clave pública. La opción –send-keys envía la clave al servidor de claves. La opción –keyserver debe ir seguida de la dirección web del servidor de claves públicas. Para identificar qué clave enviar, la huella dactilar de la clave se debe proporcionar en la línea de comandos. Tenga en cuenta que no hay espacios entre los conjuntos de cuatro caracteres.

(Puede ver la huella dactilar de su llave utilizando la opción –fingerprint.)

gpg –send-keys –keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4

Recibirá una confirmación de que la llave ha sido enviada.

Encriptación de Files

Finalmente estamos listos para encriptar un archivo y enviárselo a Mary. El archivo se llama Raven.txt.

La opción –encrypt le dice a gpg que encripte el archivo, y la opción –sign le dice que firme el archivo con sus datos. La opción –armor le dice a gpg que cree un archivo ASCII. La sección -r (destinatario) debe ir seguida de la dirección de correo electrónico de la persona a la que le está enviando el archivo.

gpg –encrypt –sign –armor -r mary-geek@protonmail.com

El archivo se crea con el mismo nombre que el original, pero con «.asc» añadido al nombre del archivo. Echemos un vistazo dentro.

menos Raven.txt.asc

El archivo es completamente ilegible, y sólo puede ser descifrado por alguien que tenga tu clave pública y la clave privada de Mary. La única persona que debería tener ambas cosas debería ser Mary.

Ahora podemos enviar el archivo a Mary con la seguridad de que nadie más puede descifrarlo.

Descifrar archivos

María ha enviado una respuesta. Está en un archivo cifrado llamado coded.asc. Podemos descifrarlo muy fácilmente usando la opción –decrypt. Vamos a redirigir la salida a otro archivo llamado plain.txt.

Tenga en cuenta que no tenemos que decirle a gpg de quién es el archivo. Puede solucionarlo a partir del contenido cifrado del archivo.

gpg –descifrar coded.asc > plain.txt

Veamos el archivo plain.txt:

menos simple.txt

El archivo ha sido desencriptado con éxito para nosotros.

Refrescando tus llaves

Periódicamente, puede pedir a gpg que compruebe las claves que tiene frente a un servidor de claves públicas y que refresque las que hayan cambiado. Puede hacerlo cada pocos meses o cuando reciba una llave de un nuevo contacto.

La opción –refresh-keys hace que gpg realice la comprobación. La opción –keyserver debe ser seguida por el servidor de claves de su elección. Una vez que las claves se han sincronizado entre los servidores de claves públicas, no debería importar cuál es la que elija.

gpg –keyserver pgp.mit.edu –refresh-keys

gpg responde listando las claves que comprueba y le avisa si alguna ha cambiado y ha sido actualizada.

La privacidad es un tema clave en Linux

La privacidad de Linux nunca está lejos de las noticias en estos días. Cualquiera que sean sus razones para querer mantener su información segura y privada, gpg proporciona un medio simple para aplicar un cifrado increíblemente fuerte a sus archivos y comunicaciones.

Hay otras formas de usar gpg. Puedes obtener un plugin para Thunderbird llamado Enigmail. Se conecta directamente a tu configuración de gpg para permitirte encriptar los mensajes de correo electrónico desde Thunderbird.


2 comentarios en “Linux: ¿cómo cifrar y descifrar archivos con GPG?”

¿Tienes alguna pregunta o problema relacionado con el tema del artículo? Queremos ayudarte.

Deja un comentario con tu problema o pregunta. Leemos y respondemos todos los comentarios, aunque a veces podamos tardar un poco debido al volumen que recibimos. Además, si tu consulta inspira la escritura de un artículo, te notificaremos por email cuando lo publiquemos.
*Moderamos los comentarios para evitar spam.

¡Gracias por enriquecer nuestra comunidad con tu participación!

Deja un comentario