Come proteggere con password i file gzip dalla riga di comando?


130

Voglio creare alcuni file tar.gz (e possibilmente tar.bz2), usando il comando tar su Ubuntu 10.04.

Voglio proteggere con password il file.

Qual è il comando per farlo (ho cercato su Google, ma non ho trovato nulla che mostri come creare ed estrarre file compressi usando una password).

Qualcuno sa come farlo?

Risposte:


159

devi applicare la filosofia unix a questo compito: uno strumento per ogni compito.

tarring e compressione è un lavoro per tare gzipo bzip2, crypto è un lavoro per uno gpgo openssl:

Encrypt

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

decrypt

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

O usando gpg

 % gpg --encrypt out.tar.gz

la variante openssl usa la crittografia simmetrica, dovresti dire alla parte ricevente la 'password' usata (aka 'la chiave'). la variante gpg utilizza una combinazione di crittografia simmetrica e asimmetrica, si utilizza la chiave della parte ricevente (il che significa che non è necessario comunicare alcuna password a nessuno) per creare una chiave di sessione e crittografare il contenuto con quella chiave.

se segui il percorso zip (o 7z): essenzialmente è lo stesso della variante openssl, devi informare la parte ricevente della password.


26
Per chiunque si chieda come decifrare il file con openssl:openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz
ndbroadbent,

1
@ nathan.f77 quel comando mostra anche come fare le cose senza collegarle a openssl. openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
Keith Smiley

3
@KeithSmiley se hai grandi archivi e non molto spazio (come potrebbe essere su un VPS) è più efficiente dal punto di vista del pipe.
Andrew Savinykh,

Non riesco a eseguirlo su un Mac. È diverso in ogni caso?
Eleijonmarck,

3
@eleijonmarck fornisce la parte "non funziona perché <inserire-error-message-here>"…
akira il

29

Se il tuo intento è solo quello di proteggere con password i file, utilizza l'utilità zip manuale attraverso la riga di comando

zip -e <file_name>.zip <list_of_files>

-e chiede all'utilità zip di crittografare i file menzionati in

Esempio funzionante:

$ 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*

11
La crittografia dei file zip non è sicura in alcun modo.
Kristopher Ives,

4
@KristopherIves puoi approfondire l'insicurezza?
salta il


4
@KristopherIves Richiede "un altro archivio ZIP, contenente almeno uno dei file dall'archivio crittografato in forma non crittografata " per funzionare.
Franklin Yu,

4
"Devi conoscere solo una parte del testo in chiaro (almeno 13 byte)". Questo lo rende molto più vulnerabile rispetto alla necessità di un intero file non crittografato (che è già piuttosto male). Inoltre, la crittografia zip non è resistente agli attacchi di forza bruta (ad esempio con Jack lo Squartatore). Nessuno dovrebbe usarlo per qualcosa di serio.
EM0

21

Ecco alcuni modi per farlo. Una cosa da notare è che se si utilizzano strumenti di compressione e crittografia separati, è necessario comprimere sempre prima della crittografia, poiché i dati crittografati sono essenzialmente non comprimibili.

Questi esempi comprimono e crittografano un file chiamato clear_text.

utilizzando gpg

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

gpg comprime il file di input prima della crittografia per impostazione predefinita, -csignifica utilizzare la crittografia simmetrica con una password. Il file di output sarà clear_text.gpg. Uno dei vantaggi dell'utilizzo gpgè l'utilizzo dei formati OpenPGP standard, quindi qualsiasi software di crittografia che supporta OpenPGP sarà in grado di decrittografarlo.

utilizzando mcrypt

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

L' -zopzione si comprime. Per impostazione predefinita, questo genera un file chiamato clear_text.gz.nc.

utilizzando bcrypt

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

bcrypt comprime prima della crittografia per impostazione predefinita, l' -ropzione è in modo che il file di input non venga eliminato nel processo. Il file di output viene chiamato clear_text.bfeper impostazione predefinita.

Utilizzando gzipeaespipe

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

aespipe è come suona, un programma che accetta input su stdin e genera dati crittografati su stdout. Non supporta la compressione, quindi è possibile reindirizzare l'input tramite gzip. Poiché l'output va su stdout, dovrai reindirizzarlo su un file con un nome di tua scelta. Probabilmente non è il modo più efficace per fare ciò che stai chiedendo, ma aespipe è uno strumento versatile, quindi ho pensato che valesse la pena menzionarlo.


15

Puoi usare 7zip per creare il tuo archivio protetto da password. È possibile specificare la password dalla riga di comando (o in uno script) nel modo seguente:

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

7zip può anche leggere da STDIN come segue:

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

Se è obbligatorio utilizzare i file zip, potresti voler giocare con il -t<type>parametro (ad es -tzip.).


5
Ho scelto questa come risposta perché è l'unica a rispondere alla domanda. La domanda non è come crittografare un messaggio, è come proteggere con password un archivio. Questo è tutto ciò che dovevo fare. (Gmail stava bloccando i backup del mio server perché aveva deciso che c'era qualcosa di pericoloso nell'allegato e avevo solo bisogno di aggiungere una password. Non deve essere sicuro.)
felwithe

7

Né tar, gzip, né bzip2 supportano la protezione con password. Utilizzare un formato di compressione che lo comprenda, ad esempio zip, o crittografarlo con un altro strumento come GnuPG.


Ah, questo spiega perché non sono riuscito a trovare nulla online. Penso che andrò per zip.
morphheous,

Gah !, Sto provando a comprimere ricorsivamente una directory con passwors, e crea solo un file zip con il nome foobar come una directory (vuota) al suo interno. Ecco il comando che sto usando: zip -e foobar.zip foobar. foobar è una cartella non vuota nella directory corrente
morphheous

4
Proprio come l'uomo dice, -r.
Ignacio Vazquez-Abrams,

5

Crea con:

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

Ti chiederà una password.

Decifrare con:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.