Перейти к содержанию

Как защитить паролем TAR-файл

В Linux есть несколько инструментов шифрования, которые позволяют нам защитить наши файлы. В этом руководстве мы узнаем, как защитить паролем файл tar в Linux, используя некоторые из этих инструментов шифрования.

Использование gpg

NU Privacy Guard, также известный как GPG, - это инструмент командной строки для шифрования и цифровой подписи. Он основан на стандарте OpenPGP.

Мы можем использовать команду gpg с различными опциями, чтобы указать тип операций. Например, --encrypt указывает на шифрование файлов. symmetric эта опция используется для шифрования данных симметричным шифром.

По умолчанию в gpg используется симметричный шифр CAST5. Однако мы можем выбрать другой алгоритм шифрования с помощью опции --cipher-algo.

Чтобы узнать о поддерживаемых алгоритмах шифрования, мы можем использовать опцию --version.

gpg --version

В качестве примера возьмем один tar-файл и зашифруем его с помощью gpg:

gpg --symmetric --cipher-algo aes256 archive_file.tar
gpg

При выполнении приведенной выше команды нам предлагается ввести кодовую фразу (в данном случае через всплывающее окно графического интерфейса). После ввода снова появляется запрос на подтверждение. При успешном выполнении команды будет создан архивный файл с расширением '.gpg'. Этот выходной файл будет зашифрован и защищен вашей парольной фразой.

Для того чтобы получить tar-файл из зашифрованного файла, мы можем использовать опцию --decrypt:

gpg --output archive_file.tar --decrypt archive_file.tar.gpg

Здесь мы можем использовать опцию --output, чтобы указать конкретное имя выходного файла. Та же парольная фраза должна быть введена при запросе на расшифровку файла.

Если нам необходимо зашифровать файлы или директории, без запроса пароля, в bash скрипте, то необходимо использовать следующую конструкцию.

tar zcfP - [путь] | gpg --batch --passphrase "[Пароль]" -c > [путь до архива]

где

  • [путь] - директория которую мы хотим упаковать, к примеру /home/user/secret_dir
  • [Пароль] - пароль на архив
  • [путь до архива] - путь до файла архива, к примеру /tmp/archive_file.tar.gz

Использование ccrypt

ccrypt - это инструмент командной строки для шифрования и расшифровки файлов и потоков. Он основан на блочном шифре Rijndael или Advanced Encryption Standard (AES).

Encrypt (--encrypt или -e) - это режим по умолчанию. Этот режим шифрует заданный файл и добавляет к нему расширение '.cpt'. В качестве альтернативы мы можем напрямую использовать команду ccencrypt с именем файла для его шифрования. Это эквивалентно команде 'ccrypt -e'.

для установки, используем команду

apt install ccrypt

Например, когда мы выполняем команду ccrypt, она запрашивает ключ шифрования для шифрования нашего tar-файла:

ccrypt archive_file.tar
ccrypt

В процессе расшифровки файла .cpt для получения исходного файла нам необходимо выполнить команду ccrypt с опцией --decrypt. При выполнении этой комбинации запрашивается ключ расшифровки. Для расшифровки нам нужно ввести тот же ключ, который мы использовали для шифрования.

ccrypt --decrypt archive_file.tar

Использование zip/unzip

Если задача стоит, только защитить содержимое паролем, то можно воспользоваться парой утилит zip/unzip.

zip -e <file_name.zip> <list_of_files>

С опцией -e утилита запросит задать пароль.

Для справки по другим опциям, смотреть man zip и man unzip .

Рабочий пример:

Запаковать файлы в архив с паролем

$ touch file{1,2,3}.txt
$ zip -e file.zip file*
Enter password:
Verify password:
  adding: file1.txt (stored 0%)
  adding: file2.txt (stored 0%)
  adding: file3.txt (stored 0%)

Распаковать файлы из архива

$ rm file[123].txt
$ unzip file.zip
Archive:  file.zip
[file.zip] file1.txt password:
 extracting: file1.txt
 extracting: file2.txt
 extracting: file3.txt