Seguridad

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.