GnuPG: cómo cifrar y descifrar archivos

Candado cibernético

En los tiempos que corren con tantas vulnerabilidades tanto de software como de hardware donde se puede explotar estos problemas para tener accesos remotos a ciertas máquinas e incluso hacer una escalada de privilegios remota o local en la máquina víctima, es importante realizar todos los procedimientos y protocolos de seguridad que conozcamos o que tengamos a nuestro alcance para tener nuestros datos a buen recaudo. Y si trabajas con datos sensibles o tienes una empresa cuyos clientes te ceden información, con mucho más motivo.

Ya hemos repetido por activa y por pasiva que debes mantener el sistema actualizado, evitar estar online cuando sea posible, los datos más sensibles los deberías almacenar en un dispositivo de almacenamiento local extraible, para así evitar que la información esté siempre disponible en la máquina que puede ser vulnerable, y por supuesto siempre hacer copias de seguridad periódicas. Además de eso, te recomiendo cifrar el contenido de tus archivos o hacer cifrado completo de tus particiones para que los datos no sean accesibles sin la contraseña para descifrarlo, aunque se tenga acceso a la máquina…

¿Qué es el cifrado?

Ejemplo de cifrado

Fuente: Wikipedia

En muchos sitios web y tutoriales te encontrarás la palabra encriptar y desencriptar para referirse al cifrado y descifrado de datos informáticos. Pero, si no lo sabías te lo comento, esos términos tienen algo de controversia, aunque parece que están bastante aceptados y extendidos debido a lo frecuentes que son, incluso entre los profesionales del sector. La confusión proviene de la criptografía o ciencia de la ocultación, y más concretamente al término inglés «encrypt» que proviene de un neologísmo directamente cogido del griego krypto, y que se ha traducido dirrectamente al español como encriptar.

En cambio, en español parece que estés diciendo «meter en una cripta» algo «sacar de una cripta» algo. Sin embargo, si analizamos el griego de donde viene todo esto, que es «krypto» significa ocultar. No obstante tú puedes usar el término que más te guste… de hecho la RAE ha terminado por aceptarla como sinónimo de cifrar. Personalmente prefiero no prestar demasiada atención a estas correcciones y prefiero usar ambas como sinónimos y dejar «la ciencia o arte de ocultar» a la esteganografía como un término más amplio.

Conclusión, cuando hablamos de cifrado o encriptado de datos o mensajes nos estamos refiriendo a un procedimiento para transformar la información para protegerla de algún modo. Lo más normal es usar algún tipo de intercambio de carácteres o algoritmo para que la información sensible se transforme en una cadena de letras, números y símbolos sin sentido. Mientras que el procedimiento de descifrado o desencriptado es el procedimiento inverso, en el que esa información sin sentido se trasnforma en algo entendible para la máquina o humano.

Un poco de historia

Enigma maquina de cifrado nazi

Este arte de ponerselo difícil a terceros transformando la información no es algo nuevo, se hace desde hace milénios, concretamente hace más de 2500 años. Desde los egípcios que utilizaban jeroglíficos hasta los tiempos de la Roma Imperial con el código César llamado así porque lo usaba Julio César (100 aC – 44 aC) para cifrar los mensajes que enviaba a sus tropas para que si estos mensajes caían en manos enemigas no los pudiesen entender y no obtuviesen ventaja militar de ellos.

En tiempos más modernos tenemos también el ejemplo de la máquina nazi Enigma, que empleaba una serie de cilindros para codificar o cifrar la información que pasaban los mandos alemanes a las tropas y evitar así que los enemigos pudiesen saber los movidimeintos que iban a hacer los soldados de Hitler. De hecho, estos mensajes cifrados fue lo que impulsó la computación en Estados Unidos e Inglaterra, ya que se crearon las primeras máquinas de computación para intentar descifrar estos mensajes complejos.

Como sabes, existen varios tipos de cifrado, como el simétrico y asimétrico, y ya verás como GnuGP O GPG puede trabajar en ambos modos:

  • Cifrado simétrico: cuando se usa una sola clave para cifrar y descifrar los mensajes, archivos, etc. Dentro de este tipo de cifrado podemos encontrar y utilizar diversos algoritmos de cifrado como AES, DES, 3DES, etc.
  • Cifrado asimétrico: en este caso se emplean dos claves, una pública y otra privada. La pública se usa para cifrar y la privada para descifrar. Dentro de este tipo de cifrado también tenemos diversos algoritmos de cifrado, como RSA, ElGramal, etc.

La clave lo que consigue es que mediante ese algoritmo, la información se transforme y sea imposible conseguir sin disponer de dicha clave para descifrarlo…

Antecedentes: PGP

Muchos confunden PGP con GPG y no es lo mismo. PGP son las siglas de Pretty Good Privacy y que describe a un programa desarrollado por Phil Zimmermann para cifrar, descifrar y firmar datos para protegerlos. Apareció en 1991 y fue unprograma bastante popular que combinaba técnicas de cifrado simétrico y asimétrico para asegurar información.

Pero PGP era un software algo problemático por las licencias de algunos algoritmos, no eran abierto y en PGP Inc.  estaban bastante preocupados por las patentes que les hizo tomar otro rumbo. Zimmermann entendió que un estándar libre para PGP era impresncidible deibdo la importancia que había tomado PGP en la época, por eso propusieron un estándar llamado OpenPGP, algo que se transformaría en el germen de GPG.

¿Qué es GPG?

GnuPG o GPG (GNU Privacy Guard) es un software desarrollado por la FSF (Free Software Foundation) para implementar un programa de compatibilidad con OpenPGP. Con el se pueden cifrar y descifrar mensajes en texto plano, ficheros, y hacer firmas digitales para asegurar el contenido que transferimos por correo electrónico o por cualquier otro servicio de red. Además, GPG es libre y gratuito bajo licencia GPL.

Puede trabajar desde la consola o terminal mediante el uso de comandos o también existen algunas GUIs que pueden instalarse o programas que ayudan a trabajar con GPG pero desde una interfaz algo más amigable e intuitiva para los que no les guste tanto el shell y prefieran hacerlo desde el entorno de escritorio. Algunos de estos programas seguramente te suenen, ya que son bastante populares en las distros Linux, como es el caso de Seahorse.

Tutorial de GnuPG:

Como digo no es la única alternativa que tenemos en nuestra distro para cifrar y descifrar, ya que existen muchas otras posibilidades más allá de GPG, como es el propio OpenPGP. De hecho hemos dedicado ya algunos atrítulos a otras alternativas como ecryptfs para cifrar directorios y particiones, cryptmount, ash, etc. Además, si te decides a utilizar GPG mediante alguna de las GUIs diponibles, también eres libre de ello, pero yo aquí voy a describir el procedimiento de cifrar y descifrar archivos de forma rápida mediante comandos desde el terminal.

Cifrar archivos con GPG:

Pureba de cifrado en el terminal

Para cifrar archivos con GPG desde la consola de tu distro GNU/Linux, lo primero que debes hacer es tener instalado GPG en tu distro, para ello puedes usar caulquier herramienta de gestión de paquetes ya que la pupularidad de esta herramienta hace que esté disponible en todos los respositorios. Por ejemplo, en Debian y derivados puedes probar con:


sudo apt-get install gnupg2

Una vez instalado ya podrás comenzar a utilizarlo. Por ejemplo, imagina que tienes un fichero de texto que quieres cifrar. Este archivo lo vamos a llamar privado.txt en el que voy a introducir el texto LinuxAdictos.com y para encriptarlo:


gpg -c privado.txt

Y ahora ya lo tendríamos cifrado tras introducir el passphrase que nos pedirá, es decir, la clave de cifrado (nos la vuelve a pedir para confirmar y ver que no hemos cometido error al teclearla, ya que si pones otra clave y no la recuerdas o te confundes, luego no podrás descifrarlo). ¡Ojo! Cuidado porque no se llamará privado.txt el fichero cifrado, sino que se añade una extensión .gpg para diferenciarlo del otro, así que no te confundas al enviar el fichero inicial, puesto que no estará protegido…

Descifrar archivos con GPG:

Ejemplo de descifrado con gpg

Ahora, puedes eliminar el original si quieres y solo dejar el fichero privado.txt.gpg que aparece cifrado y no se puede entender en absoluto el mensaje que hemos incluido dentro de él, que recuerda que es el nombre de este blog. Pues bien, si quieremos descifrar el mensaje y recuperar nuestro fichero legible y entendible para el humano, nos bastará con recordar la clave que pusimos anteriormente cuando nos la pida tras ejecutar el siguiente comando:


gpg privado.txt.gpg

Y ahora, tras introducir la clave tendremos de nuevo el fichero como antes de cifrarlo. Por cierto, como ves en la captura de pantalla que hice se ve que el programa GPG ha usado por defecto el algoritmo de cifrado AES128, ya que no hemos especificado ninguna otra alternativa cuando ciframos el archivo. Pero si quieres modificar el tipo de algoritmo puedes mediante la opción –cypher-algo seguida del tipo de algoritmo que quieres de entre los que soporta GPG (puedes ver más información en man gpg). Y si quieres saber los algoritmos soportados, puedes verlos con:


gpg --version

Y se mostrará la lista de algoritmos además de información sobre la versión de GPG, etc.

No olvides dejar tus comentarios, dudas y sugerencias… Espero que este tutorial te sirva de gran ayuda.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: AB Internet Networks 2008 SL
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Joscat dijo

    La única pega que veo es que con este sistema, el archivo NO cifrado permanece «disponible». En mi caso necesito que el archivo inicial sea eliminado de forma segura y/o convertido a otro cifrado, sin que deje restos en el equipo cliente.

    Existe una aplicación basada en CCRYPT con interfaz gráfica (qt5) o con terminal, se llama Qccrypt para debian/ubuntu.

    Un saludo!

  2.   xiib dijo

    Hice una prueba y con el comando para cifrar no tube problema pero al usar el comando para descifrar resulta que no me pidió la contrasela y el archivo original apareció nuevamente. ¿qué pasó?

    1.    Mar dijo

      Troszkę późno, ale odszyfrowanie prawidłowo, powinno wyglądać tak: gpg -o (nazwa pliku jaki chcemy otrzymać po odszyfrowaniu) -d (nazwa zaszyfrowanego pliku.gpg)

      En español: «Un poco tarde, pero descifrando correctamente, debería verse así: gpg-o (nombre de archivo que queremos recibir después del descifrado) -d (nombre del archivo cifrado.gpg)».