¿Cómo proteger con contraseña los archivos gzip en la línea de comando?

130

Quiero crear algunos archivos tar.gz (y posiblemente tar.bz2), usando el comando tar en Ubuntu 10.04.

Quiero proteger con contraseña el archivo.

¿Cuál es el comando para hacer esto? (Busqué en Google, pero no encontré nada que muestre cómo crear y extraer archivos comprimidos con una contraseña).

Alguien sabe como hacer esto?

morfeo
fuente

Respuestas:

159

Tienes que aplicar la filosofía de Unix a esta tarea: una herramienta para cada tarea.

la compresión y la compresión son un trabajo para tary , gzipo bzip2crypto es un trabajo para gpgo openssl:

Encriptar

 % tar cz folder_to_encrypt | \
      openssl enc -aes-256-cbc -e > out.tar.gz.enc

Descifrar

 % openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz

O usando gpg

 % gpg --encrypt out.tar.gz

La variante openssl utiliza encriptación simétrica, tendría que informar a la parte receptora sobre la 'contraseña' utilizada (también conocida como 'la clave'). la variante gpg usa una combinación de cifrado simétrico y asimétrico, usted usa la clave de la parte receptora (lo que significa que no tiene que decir ninguna contraseña involucrada a nadie) para crear una clave de sesión y encriptar el contenido con esa clave.

si va por la ruta zip (o 7z): esencialmente es lo mismo que la variante openssl, debe informarle a la parte receptora sobre la contraseña.

akira
fuente
26
Para cualquiera que se pregunte cómo descifrar el archivo con openssl:openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz
ndbroadbent
1
@ nathan.f77 ese comando también muestra cómo hacer cosas sin canalizarlas en openssl. openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
Keith Smiley
3
@KeithSmiley si tiene archivos grandes y no hay mucho espacio (como podría estar en un VPS), es más eficiente en el espacio de tuberías.
Andrew Savinykh
Parece que no puedo ejecutar esto en una Mac. ¿Es esto diferente de todos modos?
eleijonmarck
3
@eleijonmarck proporciona la parte "no funciona porque <inserción-error-mensaje-aquí>" ...
akira
29

Si su intención es solo proteger con contraseña los archivos, entonces use la utilidad zip manual a través de la línea de comando

zip -e <file_name>.zip <list_of_files>

-e pide a la utilidad zip que cifre los archivos mencionados en

Ejemplo de trabajo:

$ touch file_{0,1}.txt # creates blank files file_0 & file_1    
$ zip -e file.zip file_* # ask zip to encrypt
$ ENTER PASSWORD:
$ VERIFY PASSWORD:
$ ls file*
Antony Thomas
fuente
11
El cifrado de archivos Zip no es seguro de ninguna manera.
Kristopher Ives
44
@KristopherIves, ¿puedes explicar la inseguridad?
tscizzle
44
@KristopherIves Requiere "otro archivo ZIP, que contenga al menos uno de los archivos del archivo cifrado en forma no cifrada " para funcionar.
Franklin Yu
44
"Solo necesita conocer una parte del texto sin formato (al menos 13 bytes)". Esto lo hace mucho más vulnerable que si se requiriera un archivo completo sin cifrar (que ya es bastante malo). Además, el cifrado zip no es resistente a los ataques de fuerza bruta (por ejemplo, con Jack the Ripper). Nadie debería usarlo para nada serio.
EM0
21

Aquí hay algunas maneras de hacer esto. Una cosa a tener en cuenta es que si va a utilizar herramientas de compresión y cifrado separadas, siempre debe comprimir antes del cifrado, ya que los datos cifrados son esencialmente no comprimibles.

Estos ejemplos comprimen y encriptan un archivo llamado clear_text.

Utilizando gpg

$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress

gpg comprimirá el archivo de entrada antes del cifrado de forma predeterminada, -csignifica usar cifrado simétrico con una contraseña. El archivo de salida será clear_text.gpg. Una ventaja de usar gpges que utiliza formatos estándar de OpenPGP, por lo que cualquier software de cifrado que admita OpenPGP podrá descifrarlo.

Utilizando mcrypt

$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress

La -zopción comprime. Por defecto, esto genera un archivo llamado clear_text.gz.nc.

Utilizando bcrypt

$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress

bcrypt comprime antes del cifrado de forma predeterminada, la -ropción es que el archivo de entrada no se elimine en el proceso. El archivo de salida se llama clear_text.bfepor defecto.

Usando gzipyaespipe

$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress

aespipe es lo que parece, un programa que toma datos en stdin y genera datos cifrados aes en stdout. No admite compresión, por lo que puede canalizar la entrada a través de gzip primero. Como el resultado va a stdout, deberá redirigirlo a un archivo con el nombre que elija. Probablemente no sea la forma más efectiva de hacer lo que está pidiendo, pero aespipe es una herramienta versátil, así que pensé que valía la pena mencionarlo.

Noob de gráficos
fuente
15

Puede usar 7zip para crear su archivo protegido con contraseña. Puede especificar la contraseña en la línea de comando (o en un script) de la siguiente manera:

7z a -p<password> <someprotectedfile>.7z file1.txt file2.txt

7zip también puede leer de STDIN de la siguiente manera:

cat <somefile> | 7z a -si -p<password> <someprotectedfile>.7z

Si es obligatorio usar archivos zip, es posible que desee jugar con el -t<type>parámetro (por ejemplo -tzip).

SaeX
fuente
55
Elegí esto como la respuesta porque es la única que responde la pregunta. La pregunta no es cómo cifrar un mensaje, es cómo proteger con contraseña un archivo comprimido. Eso es todo lo que necesitaba hacer. (Gmail estaba bloqueando mis copias de seguridad del servidor, ya que decidió que había algo inseguro en el archivo adjunto, y yo sólo tenía que añadir una contraseña No tiene que ser seguro..)
felwithe
7

Ni tar, gzip ni bzip2 admiten la protección con contraseña. Utilice un formato de compresión que lo haga, como zip, o encripte con otra herramienta como GnuPG.

Ignacio Vazquez-Abrams
fuente
Ah, eso explica por qué no pude encontrar nada en línea. Creo que iré por zip.
morpheous
¡Gah !, estoy tratando de comprimir recursivamente un directorio con passwors, y solo crea un archivo zip con el nombre foobar como un directorio (vacío) en él. Aquí está el comando que estoy usando: zip -e foobar.zip foobar. foobar es una carpeta no vacía en el directorio actual
morpheous
44
Al igual que el hombre dice -r.
Ignacio Vazquez-Abrams
5

Crea con:

tar czvf - directory | gpg --symmetric --cipher-algo aes256 -o passwordprotectedarchive.tar.gz.gpg

Le pedirá una contraseña.

Descifrar con:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
LHolleman
fuente