Базовое шифрование в Linux: gpg, openssl и их практическое применение

8 минут чтения
Средний рейтинг статьи — 4.9

В современном мире защита данных становится критически важной. В Linux есть несколько инструментов для шифрования и подписи файлов, среди которых наиболее популярны GPG (GNU Privacy Guard) и OpenSSL. Они позволяют не только шифровать данные, но и проверять их целостность, аутентифицировать отправителя и безопасно обмениваться файлами по сети.

В этой статье разберёмся, как настроить базовое шифрование, когда использовать GPG, а когда OpenSSL, и приведём практические примеры их применения.

Зачем нужно шифрование

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

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

GPG (GNU Privacy Guard)

GPG — это реализация стандарта OpenPGP для Linux. Он использует асимметричное шифрование, основанное на публичных и приватных ключах. Публичный ключ можно безопасно передавать, а приватный ключ хранится только у владельца.

Создание ключей

Для начала работы необходимо создать пару ключей:

gpg --full-generate-key

В процессе вы укажете тип ключа (обычно RSA), длину (2048–4096 бит), срок действия и email. После генерации появятся публичный и приватный ключи, которые хранятся в ~/.gnupg.

Шифрование и расшифровка

Шифруем файл для конкретного получателя:

gpg -e -r recipient@example.com file.txt

Файл file.txt.gpg теперь можно безопасно передать получателю, который сможет расшифровать его своим приватным ключом:

gpg -d file.txt.gpg > file.txt

Цифровая подпись

Создание подписи подтверждает авторство и целостность файла:

gpg --sign file.txt

Для проверки подписи другой пользователь выполняет:

gpg --verify file.txt.sig file.txt

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

Интеграция с Git

Подпись коммитов:

git commit -S -m "Добавлен новый функционал"

Подпись тегов:

git tag -s v1.0 -m "Релиз версии 1.0"

OpenSSL

OpenSSL — это мощная криптографическая библиотека с утилитой для шифрования и работы с сертификатами. Она поддерживает как симметричное, так и асимметричное шифрование.

Симметричное шифрование

Симметричное шифрование использует один пароль для шифрования и расшифровки.

openssl enc -aes-256-cbc -salt -in file.txt -out file.enc

Чтобы расшифровать:

openssl enc -d -aes-256-cbc -in file.enc -out file.txt

Асимметричное шифрование (RSA)

Создаём пару ключей:

openssl genpkey -algorithm RSA -out private.key
openssl rsa -pubout -in private.key -out public.key

Шифруем файлы с помощью публичного ключа:

openssl rsautl -encrypt -inkey public.key -pubin -in file.txt -out file.enc

И расшифровываем приватным ключом:

openssl rsautl -decrypt -inkey private.key -in file.enc -out file.txt

Создание сертификатов

OpenSSL также используется для генерации самоподписанных сертификатов и создания CSR (Certificate Signing Request) для получения официальных сертификатов:

openssl req -new -x509 -key private.key -out certificate.crt -days 365

Сравнение GPG и OpenSSL

ХарактеристикаGPG (GNU Privacy Guard)OpenSSL
Тип шифрованияАсимметричное (публичный/приватный ключ)Симметричное и асимметричное
Основное применениеШифрование файлов для конкретного получателя, цифровая подпись, проверка целостностиШифрование данных, генерация сертификатов, создание CSR, шифрование паролей и токенов
Создание ключейgpg --full-generate-key (RSA, 3072–4096 бит)openssl genpkey -algorithm RSA
Шифрование файлаgpg -e -r recipient file.txtopenssl enc -aes-256-cbc -in file.txt -out file.enc
Расшифровка файлаgpg -d file.txt.gpg --output file.txtopenssl enc -d -aes-256-cbc -in file.enc -out file.txt
Цифровая подписьgpg --detach-sign -o file.sig file.txtМожно подписывать сертификаты и данные через PKI (команда openssl dgst -sign)
Интеграция с GitПодпись коммитов и тегов: git commit -S, git tag -sОбычно не используется напрямую, разве что для генерации сертификатов
Практический кейсПередача зашифрованных конфигураций, файлов, подпись скриптовБыстрое шифрование секретов, логов, создание самоподписанных сертификатов, генерация токенов
Хранение ключейПриватный ключ локально, поддержка смарт-карт/YubiKeyПриватный ключ в файле, возможна защита паролем
ДополнительноВозможность создания доверительных цепочек, распределение ключейУниверсальная криптографическая библиотека, поддержка многих алгоритмов и протоколов
Рекомендуемая длина ключаRSA 3072–4096 битRSA 2048–4096 бит, AES-256 для симметричного шифрования

Советы по безопасности

  • Храните приватные ключи в безопасном месте и с резервной копией.
  • Используйте сложные пароли для симметричного шифрования.
  • Не передавайте приватный ключ по сети.
  • Для командной работы используйте GPG ключи с возможностью доверия и управления доступом.
  • Регулярно обновляйте OpenSSL и GPG до актуальных версий.
8 минут чтения
Средний рейтинг статьи — 4.9

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний