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
```16