Я использую команду для шифрования и дешифрования файлов на основе пароля:

openssl aes-256-cbc -a -salt -in secrets.txt -out secrets.txt.enc --pass pass:mypassword

а также

openssl aes-256-cbc -d -a -in secrets.txt.enc -out secrets.txt.new -pass pass:mypassword

Кто-то упомянул, что это может быть подвержено атакам методом перебора (чтобы попытаться расшифровать файл с помощью пароля).

Есть ли более безопасный / лучший способ зашифровать файл с помощью пароля, чем этот? Был также упомянут параметр -pbkdf2, но я не могу найти много на нем.

У меня сложилось впечатление, что AES-256 с солью - действительно хороший выбор для шифрования файла паролем.

Если пароль длинный и очень сложный, это также поможет ситуации?

1 ответ1

0

Лучший вариант? Не используйте openssl, вместо этого используйте gpg

Видимо, ваша команда использует команду enc (хотя на man-странице openssl вообще не упоминается aes-256-cbc , а openssl help выводит справку в stderr, так что просто передать ее в меньший объем - это рутинная работа, также, к вашему сведению, у нее есть недокументированный -v функция) и оставляет желать много лучшего, увидеть другой мой ответ для получения более подробной информации, но они в основном:

  • Нестандартный формат шифрования.
  • Нет указаний на алгоритм шифрования; Вы должны следить за этим самостоятельно.
  • Процесс, посредством которого пароль и соль превращаются в ключ, а IV не документируется, но анализ исходного кода показывает, что он вызывает специфичную для OpenSSL функцию EVP_BytesToKey(), которая использует специальную функцию вывода ключа с некоторым повторным хэшированием , Это нестандартная и не очень проверенная конструкция (!) которая опирается на хеш-функцию MD5 сомнительной репутации (!!); эта функция может быть изменена в командной строке с недокументированным флагом -md (!!!); "счетчик итераций" устанавливается командой enc в 1 и не может быть изменен (!!!!). Это означает, что первые 16 байтов ключа будут равны MD5 (пароль || соль), и все.

    Это довольно слабый! Любой, кто знает, как писать код на ПК, может попытаться взломать такую схему и сможет "пробовать" несколько десятков миллионов потенциальных паролей в секунду (сотни миллионов могут быть получены с помощью графического процессора). Если вы используете "openssl enc", убедитесь, что ваш пароль имеет очень высокую энтропию! (т.е. выше, чем обычно рекомендуется; стремитесь к 80 битам, как минимум). Или, желательно, не используйте его вообще; вместо этого перейдите к чему-то более надежному (GnuPG при симметричном шифровании пароля использует более сильный KDF со многими итерациями базовой хэш-функции).

У GPG десятилетия безопасного и проверенного использования, все простые ошибки были исключены / исправлены, и при правильном использовании могли бы поставить под удар крупную мировую сверхдержаву.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .