El cifrado OpenPGP solo se define en archivos individuales, no hay una forma oficial de definir algo como una estructura de carpetas, por no hablar de permisos, propietarios de archivos y otras cosas que uno quiera mantener al cifrar carpetas.
La "forma Unix" para solucionar esto es crear un archivo, que posteriormente se encripta, que se explica en el capítulo del manual de GnuPG "8.11 Cifrar o firmar archivos en un archivo" al que hace referencia.
gpg-zip
toma una carpeta como entrada, la coloca en un archivo tar que finalmente se encripta, manteniendo una interfaz de línea de comandos similar a la que GnuPG hace. Ejecutar gpg --list-packets
en la salida de gpg-zip
revela lo que GnuPG está haciendo aquí (usé el cifrado simétrico aquí, pero funciona de la misma manera que con el cifrado de clave pública / privada), cifrando /tmp/foo
mientras estoy en /tmp
:
$ gpg-zip --symmetric foo | gpg --list-packets
:symkey enc packet: version 4, cipher 3, s2k 3, hash 10
salt 640c284b119eb28c, count 102400 (105)
gpg: CAST5 encrypted data
:encrypted data packet:
length: 183
gpg: encrypted with 1 passphrase
:compressed packet: algo=1
:literal data packet:
mode b (62), created 1445875407, name="x.tar",
raw data: unknown length
gpg: WARNING: message was not integrity protected
x.tar
es el archivo que también obtendrías como resultado al descifrar el archivo manualmente.