Як створити 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.