Cifrar y descifrar un directorio en Linux
🔐 Cifrar y descifrar un directorio en Linux: métodos seguros y ejemplos prácticos
En Linux se realiza el cifrado de un directorio de varias maneras, según el objetivo: cifrar una copia para transportar/respaldar, o cifrar un directorio “en uso” para que los archivos se protejan automáticamente al guardarse.
Este artículo explica los métodos más habituales (GPG/gpgtar, tar+gpg, eCryptfs, EncFS y dm-crypt), con comandos y criterios de elección.
El contenido se redacta con fines educativos y se basa en documentación técnica y manuales oficiales.
1. Elegir el método correcto
- Quiero un “paquete” cifrado (para copiar o subir a la nube): se utiliza gpgtar o tar + gpg.
- Quiero un directorio que se cifre “en caliente” al escribir y se descifre al leer: se utiliza un sistema de ficheros cifrado como EncFS (FUSE) o eCryptfs.
- Quiero cifrar un disco/partición completa: se utiliza dm-crypt/LUKS (cryptsetup).
2. Método 1: gpgtar (GnuPG) para cifrar directorios como un archivo único
gpgtar permite crear y extraer archivos cifrados, combinando el empaquetado tipo tar con el cifrado de GnuPG.
Se orienta a cifrar muchos archivos/directorios de una sola vez de forma cómoda. 0
2.1. Crear un archivo cifrado
gpgtar -c -f mi_directorio.tar.gpg /ruta/al/directorio
2.2. Descifrar y extraer
gpgtar -x -f mi_directorio.tar.gpg
Este enfoque se recomienda cuando se necesita un único fichero cifrado para copias de seguridad o transferencia. 1
3. Método 2: tar + gpg con clave simétrica (AES256)
Este método crea primero un archivo tar del directorio y después lo cifra con gpg usando una frase de contraseña (clave simétrica).
Se utiliza habitualmente cuando se quiere un flujo simple y portable. 2
3.1. Crear el tar del directorio
tar -cvf directorio.tar /ruta/al/directorio
3.2. Cifrar con AES256 (se solicita passphrase)
gpg --symmetric --cipher-algo AES256 directorio.tar
3.3. Descifrar (se solicita passphrase) y recuperar el tar
gpg --decrypt directorio.tar.gpg > directorio.tar
3.4. Extraer el contenido
tar -xvf directorio.tar
Como verificación segura, se recomienda comprobar que el archivo final es un tar válido antes de extraerlo (por ejemplo, usando tar -tf). 3
4. Método 3: eCryptfs (cifrado a nivel de sistema de ficheros apilado)
eCryptfs se describe como un sistema de ficheros criptográfico “apilado” en Linux, útil para cifrado a nivel de archivos. En ciertos escenarios se monta un directorio cifrado sobre otro punto de montaje para acceder al contenido descifrado. 4
4.1. Montar para acceder al contenido (ejemplo conceptual)
sudo mount -t ecryptfs [directorio_origen] [directorio_destino]
4.2. Listar el contenido montado
ls [directorio_destino]
4.3. Desmontar para “cerrar” el acceso descifrado
sudo umount [directorio_destino]
Este método se orienta a escenarios donde se requiere cifrado integrado con el sistema, aunque su adopción práctica depende de la distribución y del caso de uso. 5
5. Método 4: EncFS (FUSE) para directorios cifrados “en uso”
EncFS crea un sistema de ficheros cifrado en espacio de usuario mediante FUSE: los datos se almacenan cifrados en un directorio y se exponen descifrados en un punto de montaje. 6
5.1. Crear un directorio cifrado y montarlo
encfs /ruta/directorio_cifrado /ruta/punto_montaje_descifrado
Durante la inicialización, EncFS solicita una contraseña que se utiliza para cifrar y descifrar. 7
5.2. Desmontar cuando se termina
umount /ruta/punto_montaje_descifrado
EncFS se recomienda cuando se busca cifrado por carpeta con un flujo sencillo y reversible (montar/usar/desmontar). 8
6. Método 5: dm-crypt (LUKS/cryptsetup) para cifrar volúmenes completos
dm-crypt proporciona cifrado transparente de dispositivos de bloque en Linux, y cryptsetup se utiliza como herramienta para gestionar volúmenes cifrados (incluyendo LUKS). 9
Este método se utiliza cuando el objetivo es cifrar una partición, un disco o un contenedor de bloque (por ejemplo, un SSD externo). No se orienta a cifrar “solo un directorio” directamente, pero se considera la opción más robusta para cifrado de almacenamiento a nivel de dispositivo. 10
7. Recomendaciones de seguridad (buenas prácticas)
- Se utiliza una passphrase robusta (larga y única) y se guarda en un gestor de contraseñas.
- Se realiza copia de seguridad antes de cifrar o migrar datos.
- Se evita ejecutar comandos como root si no es imprescindible.
- Se verifica el archivo descifrado antes de extraer (por ejemplo, listar contenidos con
tar -tf). - Se desmonta el punto descifrado al terminar (especialmente en EncFS/eCryptfs).
💡 Conclusión
Para cifrar un directorio en Linux se selecciona el método según el propósito: gpgtar o tar+gpg se utiliza para generar un archivo cifrado transportable; EncFS o eCryptfs se utiliza para cifrado por carpeta con montaje; y dm-crypt/cryptsetup se utiliza para cifrado de volúmenes completos. La decisión se basa en el equilibrio entre facilidad de uso, nivel de aislamiento y necesidades de almacenamiento.
📚 Referencias (APA 7)
- Kernel.org. (s. f.). eCryptfs: A stacked cryptographic filesystem for Linux. Linux Kernel Documentation. https://docs.kernel.org/filesystems/ecryptfs.html 11
- Kernel.org. (s. f.). dm-crypt. Linux Kernel Documentation. https://docs.kernel.org/admin-guide/device-mapper/dm-crypt.html 12
- Project GnuPG. (s. f.). gpgtar (Using the GNU Privacy Guard). https://www.gnupg.org/documentation/manuals/gnupg/gpgtar.html 13
- TutorialsPoint. (2023, 25 de enero). Encrypting and Decrypting Directory in Linux. https://www.tutorialspoint.com/encrypting-and-decrypting-directory-in-linux 14
- V. Gough. (s. f.). EncFS: An encrypted filesystem for FUSE [Repositorio de GitHub]. https://github.com/vgough/encfs 15
