Программы и утилиты для шифрования данных: практическое сравнение и выбор инструмента | AdminWiki

Программы и утилиты для шифрования данных: практическое сравнение и выбор инструмента

17 сентября 2026 13 мин. чтения

Зачем DevOps-инженеру и сисадмину разбираться в инструментах шифрования

Пять утилит закрывают основные задачи администратора при работе с чувствительными данными: GnuPG, VeraCrypt, OpenSSL, age и 7-Zip. Все они умеют AES-256 или ChaCha20-Poly1305, но решают разные задачи, и путаница между ними обходится дорого.

Дамп PostgreSQL, снятый через pg_dump и оставленный на внешнем USB-диске, содержит хеши паролей и персональные данные. Лог приложения с токенами доступа, отправленный коллеге в мессенджере, ничем не отличается от публикации в открытом канале. Конфиг с ключами к API, попавший в git, придётся отзывать и перевыпускать. Это рядовые рабочие ситуации, где шифрование нужно не для галочки в отчёте, а для нормальной эксплуатации.

Ошибка в выборе инструмента даёт три разных исхода. Первый: файл зашифрован не так, как вы думали, а внешне это незаметно. Второй: доступ потерян безвозвратно, потому что ключ или парольную фразу негде восстановить. Третий, самый неприятный: защита существует только на бумаге. Архив с AES-256 и паролем из шести символов вскрывается перебором за минуты, а пароль, переданный в openssl прямо в командной строке, остаётся в history и в выводе ps.

Дальше пять инструментов разобраны по одной схеме: назначение, алгоритмы, интерфейс, команды, ограничения. Затем сводная таблица, матрица «задача - инструмент» и перечень ошибок, которые обесценивают шифрование. Общий контекст по схемам защиты собран в статье Шифрование данных при хранении и передаче: практические схемы 2026.

Критерии выбора: на что смотреть при сравнении утилит шифрования

Сравнивать утилиты имеет смысл по восьми параметрам. Ниже каждый из них с пояснением, что проверять в поведении программы и в документации.

  • Алгоритмы и режимы. Симметрика: AES-256 в режимах CBC, CTR, GCM, XTS, плюс ChaCha20-Poly1305. Асимметрика: RSA от 3072 бит, ECC (Ed25519, Curve25519, X25519). Режим XTS применяют для контейнеров, разделов и дисков, GCM и Poly1305 дают аутентификацию данных.
  • Аутентификация. AEAD-режим или отдельный HMAC. Без проверки целостности файл можно изменить, и вы об этом не узнаете.
  • Назначение. Одиночные файлы, потоки stdin/stdout, контейнеры, разделы и диски, архивы. Инструмент для контейнеров плохо подходит для шифрования потока бэкапа на 200 ГБ, и наоборот.
  • KDF и работа с паролем. PBKDF2 с числом итераций, scrypt, Argon2, соль. Механика превращения пароля в ключ разобрана в материале Пароль не применяется как ключ напрямую: от неё напрямую зависит, сколько времени займёт перебор.
  • Интерфейс. CLI, GUI, библиотека. Для cron и CI нужен неинтерактивный режим командной строки, для разовых операций на рабочей станции удобнее графический интерфейс.
  • Кроссплатформенность. Поддержка Linux, Windows и macOS, а также совместимость форматов между этими системами.
  • Автоматизация. Передача пароля или ключа из файла, коды возврата, отсутствие интерактивных запросов, работа с потоками.
  • Поддержка и лицензия. Частота релизов, открытый код, наличие аудитов, сроки закрытия уязвимостей.

Краткое соответствие критериев инструментам приведено в таблице, детали - в разделах ниже.

ПараметрGnuPGVeraCryptOpenSSLage7-Zip
Аутентификация данныхда (MDC в OpenPGP)нет (режим XTS)нет в enc (нет AEAD)да (ChaCha20-Poly1305)нет (только CRC32)
Управление ключамиполное: подидентификаторы, отзыв, срокпароль, keyfiles, PIMнетминимальноенет
KDFiterated+salted S2KPBKDF2PBKDF2 при флаге -pbkdf2scrypt для пароля, HKDF для ключейSHA-256, 2^19 итераций
Потоки stdin/stdoutданетдаданет
Графический интерфейсKleopatra, GPA, GPG Suiteсвой кроссплатформенный GUIнетнет7-Zip, Keka
Контейнеры и дискинетданетнетнет

GnuPG: универсальный инструмент для шифрования и подписи

GnuPG (gpg) - свободная реализация стандарта OpenPGP. Ветка 2.4 работает и с симметричным шифрованием по паролю, и с асимметричным по ключам получателей, умеет подписи и ведёт полноценную связку ключей с подидентификаторами, сроками действия и сертификатами отзыва.

Поддерживаемые алгоритмы: RSA 2048/3072/4096, Ed25519 для подписи, Curve25519 (ECDH) для шифрования, AES-128/192/256, SHA-256 и SHA-512. Пароль превращается в ключ через iterated+salted S2K, число итераций задаётся параметром --s2k-count. В ветке 2.4 добавлена поддержка AEAD-пакетов OpenPGP на базе OCB.

Сильные стороны: стандарт, который читают почти все почтовые и сборочные системы, интеграция с Git через подпись коммитов и тегов, gpg-agent для кэширования парольной фразы, поддержка аппаратных токенов с OpenPGP-апплетом. Слабые: управление ключами требует понимания модели доверия, флагов много, а разбор вывода неудобен - для скриптов используют --status-fd и --with-colons.

gpg --symmetric --cipher-algo AES256 secret.txt
gpg --output secret.txt.gpg --encrypt --recipient admin@example.com secret.txt
gpg --decrypt secret.txt.gpg
gpg --detach-sign --armor release.tar.gz

Сценарии использования GnuPG в DevOps

Типовых задач четыре. Подпись артефактов сборки, чтобы потребитель мог проверить происхождение бинарника командой gpg --verify. Подпись коммитов и тегов в Git при включённых commit.gpgsign и user.signingkey. Шифрование файлов перед публикацией во внешнем хранилище: файл шифруется получателю-владельцу ключа, загружается в S3 или на удалённый сервер, а приватный ключ остаётся в локальном хранилище секретов. Хранение секретов в репозитории: sops с GPG-ключом шифрует только значения в YAML, тогда как ansible-vault обходится собственным AES-256 с PBKDF2 и в GPG не нуждается.

Работа в CI строится на неинтерактивном режиме. Парольную фразу подают из файла или переменной окружения, gpg-agent в контейнере обычно не запускают вовсе.

gpg --batch --yes --pinentry-mode loopback --passphrase-file /run/secrets/gpg_pass --output backup.tar.gz.gpg --symmetric --cipher-algo AES256 backup.tar.gz

Приватный ключ не хранится в репозитории и в образах. Права на файл ключа - 0600, резервная копия ключа и сертификат отзыва лежат офлайн, иначе восстановиться после компрометации не получится.

VeraCrypt: создание зашифрованных контейнеров и защита дисков

VeraCrypt - форк TrueCrypt, который создаёт зашифрованные контейнеры-файлы, шифрует разделы, внешние диски и системный раздел с предзагрузочной аутентификацией. Актуальная ветка 1.26.x выходит для Windows, Linux и macOS.

Алгоритмы: AES, Serpent, Twofish и их каскады, например AES-Twofish-Serpent. Тома работают в режиме XTS, хеш-функции - SHA-512, BLAKE2s, Whirlpool, пароль проходит через PBKDF2 с большим числом итераций. Есть скрытые тома с томом-приманкой, keyfiles и настройка PIM, увеличивающая число итераций.

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

Ограничения стоит учитывать заранее. Монтирование требует прав root на Linux или администратора на Windows, потокового режима нет - шифровать stdin не получится. Размер контейнера выделяется целиком при создании, динамическое расширение работает, но по мере заполнения скорость записи падает. Криптографической проверки целостности тома нет, поэтому бэкап содержимого делают отдельно. Для сценариев cron интерактивный запрос пароля неудобен, и его приходится обходить файлом с правами 0600.

Как создать зашифрованный контейнер в VeraCrypt

Через графический интерфейс последовательность такая: Volumes, затем Create Volume, вариант Create an encrypted file container, обычный том или скрытый, путь и имя файла, алгоритм AES и хеш SHA-512, размер в гигабайтах, парольная фраза от 20 символов или keyfile, файловая система ext4 для Linux и NTFS для Windows, форматирование и завершение.

Те же шаги через командную строку выглядят короче.

veracrypt --text --create --volume-type=normal --size=10G --encryption=AES --hash=SHA-512 --filesystem=ext4 --password=PassphraseFromFile /mnt/backup/vault.hc
veracrypt --text --mount /mnt/backup/vault.hc /mnt/secret --password=PassphraseFromFile --pim=0 --keyfiles= --protect-hidden=no
veracrypt --text --dismount /mnt/secret

Пароль в параметре --password остаётся в истории shell и виден в списке процессов, поэтому в скриптах его читают из файла, доступного только root, а сам файл держат вне каталога с контейнером. Потеря пароля или keyfile означает потерю данных: механизма восстановления в формате нет.

OpenSSL: шифрование файлов и работа с сертификатами

OpenSSL - криптобиблиотека с CLI, которая присутствует почти на каждой Linux-системе и в базовых образах Docker. Через неё решают три группы задач: разовое шифрование файлов, выпуск и проверка ключей и сертификатов, диагностика TLS-соединений.

Алгоритмы: AES-128/192/256 в режимах CBC, CTR, CFB, OFB, XTS, ChaCha20, RSA, ECDSA, Ed25519, хеши SHA-2 и SHA-3. Устаревшие схемы вроде DES, RC4 и MD5 вынесены в legacy-провайдер и в актуальных ветках линейки 3.x по умолчанию недоступны.

openssl enc -aes-256-cbc -pbkdf2 -iter 600000 -salt -in secret.txt -out secret.enc
openssl enc -d -aes-256-cbc -pbkdf2 -iter 600000 -in secret.enc -out secret.txt
openssl rand -base64 32
openssl s_client -connect example.internal:443 -servername example.internal

Графического интерфейса нет, есть сторонние обёртки. Главное ограничение: команда enc не поддерживает AEAD-режимы (GCM, Poly1305), поэтому целостность данных не подтверждается. Параметры шифрования в файл не записываются, формат хранит только восьмибайтовую соль и заголовок Salted__. Если реквизиты забыты, восстановить файл нельзя.

Типичные ошибки при шифровании через OpenSSL

  • Шифрование без -pbkdf2. Тогда пароль обрабатывается функцией EVP_BytesToKey с одной итерацией хеша, и перебор идёт со скоростью миллионов вариантов в секунду.
  • Стандартные 10000 итераций PBKDF2. Флаг -pbkdf2 без -iter даёт именно это значение, для 2026 года его мало: применяют 600000 и выше.
  • Устаревший дайджест -md sha1 или md5 вместо принятого по умолчанию SHA-256.
  • Пароль в командной строке через -pass pass:secret. Его видно в ps, в history и в логах CI. Правильно: -pass file:/run/secrets/pass.
  • Режим ECB (-aes-256-ecb). Он детерминированный, одинаковые блоки дают одинаковый шифротекст и выдают структуру данных.
  • Флаг -nosalt и повторное использование одного пароля для сотен файлов.
  • Отсутствие проверки целостности: изменённый CBC-файл расшифруется в мусор без предупреждения.

Практический вывод простой: openssl enc годится для быстрых операций, где параметры зафиксированы в скрипте, а не для долговременного хранения. Для архивов и бэкапов берут инструменты, которые сами хранят метаданные и проверяют аутентичность.

age: современная утилита для простого шифрования файлов

age создан как ответ на сложность OpenPGP: один бинарник, понятный формат, безопасные значения по умолчанию и почти полное отсутствие настроек. Спецификация открыта, реализации существуют на Go, Rust и Python, форматы совместимы.

Криптография: X25519 для обмена ключами, ChaCha20-Poly1305 для полезной нагрузки, HKDF-SHA-256 для вывода ключа, scrypt для режима с паролем. Начиная с версии 1.2.0 поддерживается гибридная постквантовая схема ML-KEM-768 вместе с X25519, что защищает данные от сценария «записали сейчас, расшифруем на квантовом компьютере позже».

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

age-keygen -o key.txt
age -r age1examplepublickey000000000000000000000000000000000 -o backup.tar.gz.age backup.tar.gz
age -d -i key.txt -o backup.tar.gz backup.tar.gz.age
age -p -o secret.txt.age secret.txt

Плюсы: минимализм, всегда включённая аутентификация данных, работа с потоками, простой вызов из CI, отсутствие интерактивных запросов. Минусы: нет подписей, нет управления ключами и отзыва, метаданные о получателях лежат в заголовке открытым текстом, экосистема заметно меньше, чем у GnuPG. Для домашних и внутренних сервисов этих ограничений хватает, для юридически значимого обмена документами - нет.

7-Zip: шифрование архивов паролем

7-Zip - архиватор с открытым кодом и поддержкой AES-256 в формате 7z. Ветки 24.x и 25.x выходят для Windows, Linux и macOS; в Linux обычно ставят пакет 7zip или p7zip, в macOS - Keka или p7zip.

Ключ выводится из пароля через SHA-256 с числом итераций 2^19 (524 288), полезная нагрузка шифруется AES-256 в режиме CBC. Параметр -mhe=on включает шифрование заголовка, и тогда не видны даже имена файлов внутри архива. Флаг -p запрашивает пароль интерактивно, вариант -pPASSWORD подставляет его сразу и оставляет в истории команд.

7z a -p -mhe=on -mx=5 backup.7z /var/log/app
7z x backup.7z -o/restore

Сильные стороны: простота, знакомый интерфейс, кроссплатформенность, шифрование имён файлов, дешёвый способ передать набор файлов по почте. Слабые: управление ключами отсутствует, пароль остаётся единственным фактором, частичная расшифровка невозможна - для доступа к одному файлу нужен весь архив, потокового режима нет, а сжатие уже сжатых данных только тратит CPU. Для больших объёмов и автоматизации логичнее специализированные инструменты, а 7-Zip оставить для ручных архивов и передачи по email.

Сравнительная таблица инструментов шифрования

ИнструментНазначениеАлгоритмыCLIGUIОСЛучше всего подходит для
GnuPGфайлы и потоки, подписи, управление ключамиAES-256, RSA, ECC (Ed25519, Curve25519)дадаLinux, Windows, macOSподписи артефактов и коммитов, шифрование файлов конкретному получателю
VeraCryptконтейнеры, разделы, диски, скрытые томаAES, Serpent, Twofish, каскады, XTSдадаLinux, Windows, macOSзашифрованные контейнеры для бэкапов и внешних дисков
OpenSSLфайлы, ключи и сертификаты, диагностика TLSAES-256-CBC/CTR, ChaCha20, RSA, ECCданетLinux, Windows, macOSбыстрые операции в скриптах, сертификаты, проверка соединений
ageотдельные файлы и потокиX25519, ChaCha20-Poly1305, scrypt, ML-KEM-768 с 1.2.0данетLinux, macOS, Windowsшифрование бэкапов и секретов в CI
7-ZipархивыAES-256 (7z и zip)дадаLinux, Windows, macOSручные архивы с паролем и передача наборов файлов

Рекомендации по выбору инструмента под задачу и ОС

Матрица решений получается короткой. Одиночный файл или поток в Linux и macOS - age, при необходимости подписи или работы с чужими публичными ключами - GnuPG. Зашифрованный контейнер, раздел или внешний диск - VeraCrypt. Быстрая операция внутри скрипта с фиксированными параметрами - OpenSSL. Архив для передачи по почте - 7-Zip с флагом -mhe=on.

Привязка к операционной системе тоже влияет. В Windows удобнее VeraCrypt и 7-Zip: у обоих есть графический интерфейс и контекстное меню проводника. В Linux основной инструментарий - age, GnuPG и OpenSSL, а VeraCrypt требует установки и прав root для монтирования. В macOS работают все пять, при этом GnuPG обычно ставят вместе с GPG Suite, а контейнеры монтируют через тот же VeraCrypt.

Для автоматизации приоритет другой. В пайплайнах выигрывают age и GnuPG: оба читают ключ из файла, не задают вопросов и возвращают внятные коды ошибок. OpenSSL остаётся для TLS и выпуска сертификатов, а VeraCrypt и 7-Zip в CI применяют редко из-за интерактивности и отсутствия потокового режима. Перед запуском в промышленной среде проверьте версию утилиты и синтаксис флагов на тестовом наборе файлов: параметры age, openssl и 7z между версиями меняются, а часть дистрибутивов поставляет разные сборки p7zip.

Шифрование резервных копий: практические советы

Резервные копии содержат самые чувствительные данные: дампы баз, архивы почты, файлы конфигурации с паролями. Шифровать нужно до отправки в хранилище, а не после, иначе копия успевает полежать открытой на промежуточном сервере или в облачном бакете.

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

tar czf - /data | age -r age1examplepublickey -o backup.tar.gz.age
pg_dump -Fc appdb | age -r age1examplepublickey -o appdb.dump.age

Готовые зашифрованные дампы и архивы логично складывать в облачное объектное хранилище, например в Timeweb Cloud, где доступ по API и разграничение прав закрывают второй контур защиты. Ключи храните отдельно от копий, в другом аккаунте или в офлайн-носителе, и раз в квартал проверяйте восстановление на отдельной машине. Схемы с разделением зон ответственности между клиентом и сервером подробно разобраны в статье Шифрование данных при передаче и хранении: клиентское, серверное и гибридные модели. Бэкап без проверенного восстановления - это не бэкап, а надежда.

Типичные ошибки и меры предосторожности

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

  • Слабый пароль. AES-256 не спасает, если парольная фраза состоит из шести символов. Минимум - длинная фраза от 20 символов или keyfile, хранимый отдельно.
  • Ключи рядом с данными. Приватный ключ age или GnuPG, лежащий в том же бакете или на том же диске, что и зашифрованный архив, обесценивает шифрование целиком.
  • Пароль в открытом виде. Передача через -pass pass:, -pPASSWORD, переменную окружения в логах CI или сообщением в чате. Используйте файлы секретов и менеджеры паролей.
  • Устаревшие алгоритмы. MD5, SHA-1, DES, RC4, режим ECB. В OpenSSL 3.x legacy-схемы отключены по умолчанию, и включать их обратно незачем.
  • Отсутствие проверки целостности. Файл, зашифрованный через openssl enc, не имеет аутентификации. Для критичных данных выбирайте AEAD или добавляйте подпись.
  • Один пароль на всё. Одна и та же фраза для контейнера, архива и бэкапа означает, что одна утечка открывает все данные.
  • Забытые параметры. Файл, зашифрованный через enc, без сохранённых cipher, md и iter не восстановить. Параметры фиксируют в скрипте или в README рядом с файлом.
  • Отсутствие резервных копий ключей. Потеря ключа GnuPG или пароля VeraCrypt не лечится ничем.
  • Игнорирование обновлений. Уязвимости в криптобиблиотеках закрывают выпуском новых версий, и старый бинарник остаётся дырой.

Для критичных данных полезна комбинация: шифрование потока через age и отдельная подпись артефакта ключом GnuPG. Тогда проверяется и конфиденциальность, и целостность, и авторство. Расширенный чек-лист по защите документов, аудиту доступа и работе с требованиями регуляторов приведён в статье Защита документов при хранении: шифрование, аудит доступа и предотвращение утечек.

Заключение

Выбор инструмента определяется задачей, а не привычкой. Отдельные файлы и потоки - age или GnuPG. Контейнеры, разделы и диски - VeraCrypt. Скрипты с фиксированными параметрами и работа с сертификатами - OpenSSL. Архивы для передачи - 7-Zip с шифрованием заголовка.

Начните с одного сценария, который болит сильнее всего, скорее всего это бэкапы. Сгенерируйте ключ age, зашифруйте тестовый дамп, восстановите его на другой машине и убедитесь, что результат совпадает с исходником. Затем вынесите ключ в отдельное хранилище и добавьте в пайплайн проверку кода возврата. Такой цикл занимает меньше часа и закрывает основной риск: зашифрованные данные, к которым однажды не найдётся ключ.

Поделиться:
Сохранить гайд? В закладки браузера