Лучший способ симметричного шифрования нескольких файлов с использованием пароля

Вопрос или проблема

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

Я планировал использовать gpg, но симметричное шифрование gpg не работает с флагом –multifile. gpg может кэшировать пароль во время расшифровки, но я не нашел этой опции для шифрования.

Какой лучший способ сделать это?

Условия:

  • Предпочтительно использовать популярные инструменты, которые прошли проверку временем в общественном доступе. Идеально, если я буду использовать только инструменты, уже поставляемые с linux.
  • Для меня неприемлемо создавать огромный тарболл и шифровать его. Мне нужно, чтобы каждый файл был зашифрован отдельно.
  • Я хочу ввести пароль только один раз, а не один раз для каждого файла.

Некоторые решения, которые, по-видимому, имеют недостатки:

  • использовать openssl cli, а не pgp – могут быть уязвимости в реализации криптографии, как утверждают пользователи здесь
  • использовать флаг пароля в gpg и хранить пароль в файле – не рекомендуется, так как другие приложения могут получить к нему доступ, а безопасное удаление диска не является тривиальной задачей.
  • использовать этот скрипт – я не знаю, есть ли в этом коде ошибки или его можно случайно неправильно использовать.
  • использовать ассиметричное шифрование pgp и экспортировать зашифрованный приватный ключ. Все, у кого есть доступ к зашифрованным файлам, также будут иметь доступ к зашифрованному приватному ключу. – Это может быть немного медленнее, но это не проблема. Это кажется неправильным, но это решение будет работать для меня. Я буду рассматривать это как вариант наихудшего случая.
  • использовать 7zip (или аналогичный инструмент) – поддерживается только одной компанией и может быть менее безопасным или менее универсальным по сравнению с pgp или openssl. Я буду рассматривать это как вариант наихудшего случая.

Ответ или решение

Для симметричного шифрования множества файлов с использованием одного пароля в Linux существует несколько стабильных и безопасных методов. На основании ваших условий, рекомендую следующий подход, основанный на использовании утилиты GPG с некоторыми дополнительными шагами для достижения нужного результата.

Шаги для шифрования файлов с помощью GPG:

  1. Создание sekrете ключа: Используйте GPG для создания симметричного ключа, который будет использоваться для шифрования. Это необходимо для того, чтобы при шифровании также использовался алгоритм AES256.

  2. Шифрование файлов: Для шифрования нескольких файлов, необходимо использовать небольшую обертку (скрипт), чтобы избежать повторного ввода пароля для каждого файла.

  3. Дешифрование файлов: Для расшифровки файлов также подготовьте скрипт, который позволит вводить пароль только один раз.

Вот пример скрипта на 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 "Файлы успешно расшифрованы."

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

  1. Сохраните оба скрипта в отдельные файлы, например, encrypt.sh и decrypt.sh.
  2. Сделайте их исполняемыми:
    chmod +x encrypt.sh decrypt.sh
  3. Для шифрования файлов:
    ./encrypt.sh файл1.txt файл2.txt файл3.txt
  4. Для расшифровки файлов:
    ./decrypt.sh файл1.txt.gpg файл2.txt.gpg файл3.txt.gpg

Обратите внимание:

  • Данные пароли не хранятся в файле, что повышает безопасность.
  • Также рекомендуется проверить наличие обновлений для GPG, чтобы обеспечить использование самой актуальной версии с исправленными уязвимостями.
  • При работе с паролями всегда старайтесь использовать надежные и сложные пароли для защиты ваших данных.

Данный метод сочетает в себе удобство и безопасность, отвечая всем вашим требованиям для шифрования и дешифрования множества файлов.

Оцените материал
Добавить комментарий

Капча загружается...