Как заархивировать каталог с шифрованием для имен файлов?


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.
— Pierz

Что такое стандартное шифрование zip и каков ваш источник того, что шифрование zip по умолчанию небезопасно?
— Лео Гальегильос

1
Большинство zip-инструментов (есть некоторые более новые zip-инструменты, использующие более качественную криптографию) по-прежнему используют потоковый шифр PKZIP, который впервые был признан слабым в 1994 году: rd.springer.com/content/pdf/10.1007%2F3-540-60590-8_12 .pdf На странице Википедии представлен общий обзор: en.wikipedia.org/wiki/Zip_(file_format)#Encryption
— Pierz

Ответы:


26

В zip-файле шифруется только содержимое файла. Метаданные файла, включая имена файлов, не зашифрованы. Это ограничение формата файла: каждая запись сжимается отдельно и, если она зашифрована, шифруется отдельно.

Вы можете использовать 7-Zip вместо этого. Он поддерживает шифрование метаданных ( -mhe=onс реализацией командной строки Linux).

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

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

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

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

2

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

А) Чтобы создать зашифрованный файл:

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

Это даст вам зашифрованный файл Blowfish Directory.tgz

Б) Чтобы полностью изменить этот процесс:

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

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