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
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):
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:
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:
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:
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.
Pingback: Cifrado asimétrico con GPG en Linux - Tutorial con ejemplos - Parzibyte's blog