Cifrar y descifrar archivos en Linux con gpg

GnuPG (o gpg) es un software que permite cifrar y firmar datos y comunicaciones, así como archivos.

Viene incluido en Linux por defecto y hoy vamos a ver una introducción a su uso para cifrar y descifrar archivos con una contraseña dada por nosotros.

También vamos a ver cómo eliminar los archivos originales con srm o secure remove.

La página oficial de GNU Privacy Guard es gnupg.org.

Cifrar un archivo con gpg

Comencemos cifrando un archivo de texto, aunque gpg puede hacer más cosas y cifrar otro tipo de archivos como imágenes, vídeos, etcétera (pues al final todos son ficheros, sin importar el tipo o extensión).

Para cifrar un archivo llamamos al binario gpg pasándole la opción -c e indicando adelante el nombre del archivo.

La sintaxis es:

gpg -c nombre_de_archivo

Para probar este ejemplo vamos a crear un archivo de ejemplo

1 – Crear archivo para probar

Creamos el archivo escribiendo con echo, después miramos su contenido con cat y finalmente lo ciframos con:

gpg -c mensaje.txt

Dependiendo de nuestro sistema, se pedirá la frase de paso o passphrase, que es la contraseña para descrifrarlo.

En mi caso aparece una ventana  (en otros casos podría pedírtelo directamente en la terminal):

2 – Encriptar archivo con GPG

Diferencia entre archivo cifrado y original

Al invocar a gpg se habrá creado otro archivo que tiene el mismo nombre que el original pero con la extensión gpg.

Podemos ver la diferencia listando el contenido de ambos:

3 – Diferencia entre archivo cifrado y archivo original

Aunque parecen datos “raros” en realidad es el archivo encriptado.

Nota: no porque sean caracteres raros significa que un archivo esté encriptado. Por ejemplo, si abres un documento PDF como texto, verás algo similar, pues no es que los datos estén encriptados, sino que no se pueden reconocer como texto.

Eliminar archivo original con srm

¿De qué sirve cifrar el archivo si no lo eliminamos? y otra cosa, ¿de qué sirve eliminarlo si se puede recuperar, probablemente?

Después de cifrar el archivo vamos a eliminarlo de manera segura con srm cuyo manual puedes ver aquí.

Su uso es:

srm archivo

También elimina carpetas y tiene otras opciones, la que me gusta es la -v para que sea verboso. No veremos esas opciones por el momento, pero ahí dejo el enlace al manual.

Nota: srm sirve para eliminar cualquier archivo, no importa si lo cifras o no.

Vamos a eliminar el archivo de forma segura:

4 – Eliminar archivo original con srm

Ahora solo queda el archivo cifrado. Ese archivo lo podemos dejar ahí y enviarlo por medios inseguros.

Descifrar archivo con gpg

Ahora veamos el proceso inverso, y es obtener el archivo original que anteriormente ciframos con gpg. Para ello, la sintaxis es:

gpg -d archivo

Nota: si al descrifrar no te pide la clave, no te preocupes, es porque la está “recordando” por un período de tiempo; si reinicias la PC esto cambiará. Es como cuando usas sudo y se guardan los privilegios por unos minutos.

Cuando lo invoquemos se nos pedirá la passphrase, y en caso de que sí, se imprimirá el resultado.

Si no queremos que se imprima, simplemente redirigimos la salida como en la imagen a continuación:

5 – Descifrar archivo con gpg

Cuando invocamos a:

gpg -d mensaje.txt.gpg

La salida se muestra en la terminal. Y si queremos redirigirlo entonces invocamos:

gpg -d mensaje.txt.gpg > mensaje.txt

Lo mismo es para otros archivos.

Conclusión

No olvides elegir contraseñas seguras siempre, en cualquier momento, incluso al cifrar archivos.

Recuerda que se pueden cifrar otros tipos de archivos como vídeos, imágenes, código fuente, binarios, etcétera.

Para terminar, aquí dejo el archivo cifrado para que pruebes descifrándolo, la contraseña es hunter2.

Cifrar y descifrar archivos en Linux con gpg

Por parzibyte Tiempo de lectura: 3 min
1