Comment compresser le répertoire avec le cryptage pour les noms de fichiers?

17

En utilisant la ligne de commande, je sais que je peux chiffrer un répertoire avec la commande suivante:

zip -er Directory.zip /path/to/directory

Cependant, cela ne chiffre pas les noms de fichiers eux-mêmes. Si quelqu'un court:

unzip Directory.zip

et saisit à plusieurs reprises un mauvais mot de passe, la commande de décompression parcourra tous les noms de fichiers contenus jusqu'à ce que le mot de passe correct soit entré. Exemple de sortie:

unzip Directory.zip 
Archive:  Directory.zip
   creating: Directory/
[Directory.zip] Directory/sensitive-file-name-1 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-1  incorrect password
[Directory.zip] Directory/sensitive-file-name-2 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-2  incorrect password
[Directory.zip] Directory/sensitive-file-name-3 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-3  incorrect password

etc.

À l'aide de la ligne de commande, existe-t-il un moyen de compresser un répertoire avec un chiffrement tout en chiffrant ou en masquant les noms de fichiers eux-mêmes?

Je vous remercie.

Leo Galleguillos
la source
Vous ne voulez probablement pas utiliser le cryptage par défaut de zip car il est faible, utilisez-le 7zipcar il utilise le cryptage basé sur AES.
Pierz
Quel est le chiffrement par défaut de zip et quelle est votre source pour affirmer que le chiffrement par défaut de zip n'est pas sûr?
Leo Galleguillos
1
La plupart des outils zip (il existe des outils zip plus récents qui utilisent une meilleure cryptographie) utilisent toujours le chiffrement de flux PKZIP qui a été montré pour la première fois faible en 1994: rd.springer.com/content/pdf/10.1007%2F3-540-60590-8_12 .pdf La page Wikipedia donne un aperçu de base: en.wikipedia.org/wiki/Zip_(file_format)#Encryption
Pierz

Réponses:

26

Dans un fichier zip, seul le contenu du fichier est crypté. Les métadonnées de fichier, y compris les noms de fichier, ne sont pas chiffrées. C'est une limitation du format de fichier: chaque entrée est compressée séparément, et si elle est cryptée, cryptée séparément.

Vous pouvez utiliser 7-zip à la place. Il prend en charge le chiffrement des métadonnées ( -mhe=onavec l'implémentation de la ligne de commande Linux).

7z a -p -mhe=on Directory.7z /path/to/directory

Il existe des implémentations 7zip pour tous les principaux systèmes d'exploitation et les plus mineurs, mais cela peut nécessiter l'installation de logiciels supplémentaires (IIRC Windows peut décompresser les fichiers zip cryptés hors de la boîte ces jours-ci). Si le besoin de 7z pour le décryptage est un problème, vous pouvez compter sur zip uniquement en l'utilisant d'abord pour regrouper le répertoire dans un seul fichier, puis en cryptant ce fichier. Si vous faites cela, désactivez la compression des fichiers individuels et demandez au zip externe de compresser le fichier zip, vous obtiendrez un meilleur taux de compression global.

zip -0 -r Directory.zip /path/to/directory
zip -e -n : encrypted.zip Directory.zip
Gilles 'SO- arrête d'être méchant'
la source
1
Il vaut probablement mieux éviter d'utiliser zip pour chiffrer - on peut utiliser 7zip pour générer un fichier zip (AES) chiffré de manière plus sécurisée sur la 2e ligne:7z a -p -tzip encrypted.zip Directory.zip
Pierz
2

Vous pouvez créer une archive à l'aide de votre outil préféré, puis l'utiliser bcryptpour effectuer le chiffrement / déchiffrement.

A) Pour créer un fichier crypté:

tar -czf Directory.tgz /path/to/directory
bcrypt Directory.tgz

Cela vous donnera un fichier crypté Blowfish Directory.tgz

B) Pour inverser ce processus:

bcrypt Directory.tgz.bfe
tar -xf Directory.tgz
Jedi
la source
2
L'approche est bonne, mais vous devez utiliser un autre outil de chiffrement - bcryptutilise EBC qui révèle la structure des données chiffrées. Voir le bogue Debian # 700758 pour plus de détails (Debian bcryptne supporte que le déchiffrement en conséquence).
Stephen Kitt