Як створити zip-каталог із шифруванням імен файлів?


17

Використовуючи командний рядок, я знаю, що можу зашифрувати каталог за допомогою наступної команди:

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

Однак це не шифрує самі імена файлів. Якщо хтось біжить:

unzip Directory.zip

і неодноразово вводить неправильний пароль, команда unzip прокручуватиме всі містяться імена файлів, поки не буде введено правильний пароль. Вибірка зразка:

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

і так далі.

Використовуючи командний рядок, чи існує спосіб зашифрування каталогу із шифруванням, а також шифрування або приховування самих імен файлів?

Дякую.


Напевно, ви не хочете використовувати шифрування за замовчуванням zip, оскільки воно слабке, тому використовуйте, 7zipоскільки воно використовує шифрування на основі AES.
П’єрз

Що таке шифрування за замовчуванням у zip, і що є вашим джерелом для твердження, що шифрування за замовчуванням zip є небезпечним?
Лев Галлегільос

1
Більшість інструментів zip (є кілька новіших інструментів zip, які використовують кращу криптографію) все ще використовують шифр PKZIP Stream, який уперше виявився слабким у 1994 році: rd.springer.com/content/pdf/10.1007%2F3-540-60590-8_12 .pdf Сторінка Вікіпедії дає основний огляд: en.wikipedia.org/wiki/Zip_(file_format)#Encryption
П'єрз

Відповіді:


26

У zip-файлі шифрується лише вміст файлу. Метадані файлів, включаючи назви файлів, не шифруються. Це обмеження формату файлу: кожен запис стискається окремо, а якщо він зашифрований, шифрується окремо.

Ви можете використовувати 7-zip замість цього. Він підтримує шифрування метаданих ( -mhe=onз реалізацією командного рядка Linux).

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

Існує реалізація 7zip для всіх основних операційних систем і більшості другорядних, але це може зажадати встановлення додаткового програмного забезпечення (IIRC Windows може розпакувати зашифровані поштові файли з коробки в наші дні). Якщо вимагає 7z для розшифровки, це проблема, ви можете розраховувати на zip, лише спочатку використовуючи його для упаковки каталогу в один файл, а потім зашифрувавши цей файл. Якщо ви це зробите, вимкніть стиснення окремих файлів і доручіть зовнішній блискавці стискати zip-файл, ви отримаєте кращий коефіцієнт стиснення в цілому.

zip -0 -r Directory.zip /path/to/directory
zip -e -n : encrypted.zip Directory.zip

1
Напевно, краще уникати використання zip для шифрування - можна використовувати 7zip для створення більш надійно зашифрованого (AES) zipfile у другому рядку:7z a -p -tzip encrypted.zip Directory.zip
Pierz

2

Ви можете створити архів за допомогою улюбленого інструменту, а потім використовувати bcryptдля виконання шифрування / дешифрування.

A) Щоб створити зашифрований файл:

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

Це дасть вам файл, зашифрований Blowfish Directory.tgz

B) Щоб скасувати цей процес:

bcrypt Directory.tgz.bfe
tar -xf Directory.tgz

2
Підхід хороший, але ви повинні використовувати інший інструмент для шифрування - bcryptвикористовує EBC, який розкриває структуру в зашифрованих даних. Детальну інформацію див. У програмі Debian bug # 700758 (в результаті bcryptлише Debian підтримує розшифровку).
Стівен Кітт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.