Вопрос или проблема
Я хотел бы зашифровать много файлов с помощью симметричного шифрования, такого как AES256, используя один запомненный пароль.
Я планировал использовать gpg, но симметричное шифрование gpg не работает с флагом –multifile. gpg может кэшировать пароль во время расшифровки, но я не нашел этой опции для шифрования.
Какой лучший способ сделать это?
Условия:
- Предпочтительно использовать популярные инструменты, которые прошли проверку временем в общественном доступе. Идеально, если я буду использовать только инструменты, уже поставляемые с linux.
- Для меня неприемлемо создавать огромный тарболл и шифровать его. Мне нужно, чтобы каждый файл был зашифрован отдельно.
- Я хочу ввести пароль только один раз, а не один раз для каждого файла.
Некоторые решения, которые, по-видимому, имеют недостатки:
- использовать openssl cli, а не pgp – могут быть уязвимости в реализации криптографии, как утверждают пользователи здесь
- использовать флаг пароля в gpg и хранить пароль в файле – не рекомендуется, так как другие приложения могут получить к нему доступ, а безопасное удаление диска не является тривиальной задачей.
- использовать этот скрипт – я не знаю, есть ли в этом коде ошибки или его можно случайно неправильно использовать.
- использовать ассиметричное шифрование pgp и экспортировать зашифрованный приватный ключ. Все, у кого есть доступ к зашифрованным файлам, также будут иметь доступ к зашифрованному приватному ключу. – Это может быть немного медленнее, но это не проблема. Это кажется неправильным, но это решение будет работать для меня. Я буду рассматривать это как вариант наихудшего случая.
- использовать 7zip (или аналогичный инструмент) – поддерживается только одной компанией и может быть менее безопасным или менее универсальным по сравнению с pgp или openssl. Я буду рассматривать это как вариант наихудшего случая.
Ответ или решение
Для симметричного шифрования множества файлов с использованием одного пароля в Linux существует несколько стабильных и безопасных методов. На основании ваших условий, рекомендую следующий подход, основанный на использовании утилиты GPG с некоторыми дополнительными шагами для достижения нужного результата.
Шаги для шифрования файлов с помощью GPG:
-
Создание sekrете ключа: Используйте GPG для создания симметричного ключа, который будет использоваться для шифрования. Это необходимо для того, чтобы при шифровании также использовался алгоритм AES256.
-
Шифрование файлов: Для шифрования нескольких файлов, необходимо использовать небольшую обертку (скрипт), чтобы избежать повторного ввода пароля для каждого файла.
-
Дешифрование файлов: Для расшифровки файлов также подготовьте скрипт, который позволит вводить пароль только один раз.
Вот пример скрипта на Bash для шифрования и дешифрования файлов:
Скрипт для шифрования:
#!/bin/bash
# Проверка на наличие необходимых утилит
command -v gpg > /dev/null 2>&1 || { echo "GPG не установлен. Пожалуйста, установите GPG."; exit 1; }
# Ввод пароля один раз
echo -n "Введите пароль для шифрования: "
read -s password
echo
# Шифрование файлов
for file in "$@"; do
gpg --symmetric --cipher-algo AES256 --passphrase "$password" --batch --yes "$file"
done
echo "Файлы успешно зашифрованы."
Скрипт для дешифрования:
#!/bin/bash
# Проверка на наличие необходимых утилит
command -v gpg > /dev/null 2>&1 || { echo "GPG не установлен. Пожалуйста, установите GPG."; exit 1; }
# Ввод пароля один раз
echo -n "Введите пароль для расшифровки: "
read -s password
echo
# Дешифрование файлов
for file in "$@"; do
gpg --decrypt --passphrase "$password" --batch --yes "$file" > "${file%.gpg}"
done
echo "Файлы успешно расшифрованы."
Использование:
- Сохраните оба скрипта в отдельные файлы, например,
encrypt.sh
иdecrypt.sh
. - Сделайте их исполняемыми:
chmod +x encrypt.sh decrypt.sh
- Для шифрования файлов:
./encrypt.sh файл1.txt файл2.txt файл3.txt
- Для расшифровки файлов:
./decrypt.sh файл1.txt.gpg файл2.txt.gpg файл3.txt.gpg
Обратите внимание:
- Данные пароли не хранятся в файле, что повышает безопасность.
- Также рекомендуется проверить наличие обновлений для GPG, чтобы обеспечить использование самой актуальной версии с исправленными уязвимостями.
- При работе с паролями всегда старайтесь использовать надежные и сложные пароли для защиты ваших данных.
Данный метод сочетает в себе удобство и безопасность, отвечая всем вашим требованиям для шифрования и дешифрования множества файлов.