Comment protéger par mot de passe les fichiers gzip sur la ligne de commande?

130

Je veux créer des fichiers tar.gz (et éventuellement tar.bz2) à l’aide de la commande tar sur Ubuntu 10.04.

Je veux protéger le fichier avec un mot de passe.

Quelle est la commande pour faire cela (j'ai googlé, mais rien trouvé qui montre comment créer et extraire des fichiers compressés en utilisant un mot de passe).

Est-ce que quelqu'un sait comment faire cela?

morphe
la source

Réponses:

159

vous devez appliquer la philosophie unix à cette tâche: un outil pour chaque tâche.

tarring and compression est un travail pour taret gzipou bzip2, crypto est un travail pour gpgou openssl:

Crypter

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

Déchiffrer

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

Ou en utilisant gpg

 % gpg --encrypt out.tar.gz

la variante openssl utilise le chiffrement symétrique, vous devez indiquer à la partie destinataire le «mot de passe» utilisé (ou «la clé»). la variante gpg utilise une combinaison de cryptage symétrique et asymétrique, vous utilisez la clé de la partie destinataire (ce qui signifie que vous n'avez pas à indiquer de mot de passe à qui que ce soit) pour créer une clé de session et crypter le contenu avec cette clé.

si vous choisissez la route zip (ou 7z): c'est en gros la même chose que la variante openssl, vous devez informer le destinataire du mot de passe.

Akira
la source
26
Pour ceux qui se demandent comment décrypter le fichier avec openssl:openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz
ndbroadbent le
1
@ nathan.f77 cette commande montre également comment faire des choses sans les transférer dans openssl. openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
Keith Smiley
3
@ KeithSmiley Si vous avez des archives volumineuses et peu d'espace (comme sur un VPS), il est plus efficace d'utiliser un canal.
Andrew Savinykh
Je ne peux pas sembler courir ceci sur un mac. Est-ce différent de toute façon?
eleijonmarck
3
@eleijonmarck fournit la partie "ne fonctionne pas parce que <insert-error-message-here>"…
akira
29

Si vous souhaitez uniquement protéger les fichiers par un mot de passe, utilisez l'utilitaire hand-zip via la ligne de commande.

zip -e <file_name>.zip <list_of_files>

-e demande à l’utilitaire zip de chiffrer les fichiers mentionnés dans

Exemple de travail:

$ 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
la source
11
Le cryptage de fichier zip n'est en aucun cas sécurisé.
Kristopher Ives
4
@ KristopherIves pouvez-vous élaborer sur le manque de sécurité?
jeudi
4
@KristopherIves Cela nécessite "une autre archive ZIP, contenant au moins l'un des fichiers de l'archive cryptée sous forme non cryptée " pour fonctionner.
Franklin Yu
4
"Vous devez connaître seulement une partie du texte en clair (au moins 13 octets)". Cela le rend beaucoup plus vulnérable que si un fichier entier non chiffré était requis (ce qui est déjà très mauvais). En outre, le cryptage zip ne résiste pas aux attaques par force brute (par exemple avec Jack the Ripper). Personne ne devrait l'utiliser pour quelque chose de grave.
EM0
21

Voici quelques façons de le faire. Une chose à noter est que si vous utilisez des outils de compression et de cryptage distincts, vous devez toujours compresser avant le cryptage, car les données cryptées sont essentiellement non compressibles.

Ces exemples compressent et chiffrent un fichier appelé clear_text.

En utilisant gpg

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

gpg compressera le fichier d'entrée avant le cryptage par défaut, ce qui -csignifie utiliser le cryptage symétrique avec un mot de passe. Le fichier de sortie sera clear_text.gpg. L’un des avantages de l’utilisation gpgest le fait qu’il utilise les formats OpenPGP standard. Ainsi, tout logiciel de chiffrement prenant en charge OpenPGP pourra le déchiffrer.

En utilisant mcrypt

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

L' -zoption compresse. Par défaut, cela génère un fichier appelé clear_text.gz.nc.

En utilisant bcrypt

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

bcrypt se compresse avant le cryptage par défaut, l' -roption est que le fichier d'entrée ne soit pas supprimé du processus. Le fichier de sortie est appelé clear_text.bfepar défaut.

Utiliser gzipetaespipe

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

Cela ressemble à un programme, un programme qui prend une entrée sur stdin et génère des données cryptées sur une sortie standard. Il ne supporte pas la compression, vous pouvez donc diriger d'abord l'entrée via gzip. Comme la sortie va sur stdout, vous devrez le rediriger vers un fichier avec le nom de votre choix. Ce n’est probablement pas le moyen le plus efficace de faire ce que vous demandez, mais aespipe est un outil polyvalent, j’ai donc pensé que cela valait la peine d’être mentionné.

Graphisme Noob
la source
15

Vous pouvez utiliser 7zip pour créer votre archive protégée par mot de passe. Vous pouvez spécifier le mot de passe sur la ligne de commande (ou dans un script) de la manière suivante:

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

7zip peut également lire STDIN comme suit:

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

S'il est obligatoire d'utiliser des fichiers zip, vous pouvez jouer avec le -t<type>paramètre (par exemple -tzip).

SaeX
la source
5
J'ai choisi ceci comme réponse car c'est le seul qui réponde à la question. La question n'est pas de savoir comment chiffrer un message, mais comment protéger par mot de passe une archive. C'est tout ce que j'avais à faire. (Gmail bloquait les sauvegardes de mon serveur car il avait été décidé qu'il y avait un problème dans la pièce jointe et que je devais simplement ajouter un mot de passe. Il n'était pas nécessaire qu'il soit sécurisé.)
félicitations
7

Ni tar, ni gzip, ni bzip2 ne prennent en charge la protection par mot de passe. Soit vous utilisez un format de compression tel que zip, soit vous le chiffrez avec un autre outil tel que GnuPG.

Ignacio Vazquez-Abrams
la source
Ah, ça explique pourquoi je n'ai rien trouvé en ligne. Je pense que je vais aller pour zip.
morpheous
Gah !, J'essaie de compresser récursivement un répertoire avec des mots de passe, et il ne crée qu'un fichier zip portant le nom foobar dans un répertoire (vide). Voici la commande que j'utilise: zip -e foobar.zip foobar. foobar est un dossier non vide dans le répertoire courant
morpheous
4
Tout comme l'homme dit -r.
Ignacio Vazquez-Abrams
5

Créer avec:

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

Il vous demandera un mot de passe.

Décrypter avec:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
LHolleman
la source