В этой статье мы расскажем, как шифровать файлы с помощью GPG в Linux, создавать пары ключей, безопасно обмениваться зашифрованными файлами и расшифровывать их.
В вычислительной технике шифрование — популярный и наиболее часто рекомендуемый метод сокрытия информации в секретном формате. GnuPG — один из полезных инструментов для шифрования информации (файлов) в системах Linux.
GnuPG (также известный как GNU Privacy Guard или просто GPG) — это инструмент GNU, используемый для шифрования данных и создания цифровых подписей, которые способствуют повышению общей информационной безопасности. Это полноценная и бесплатная реализация интернет-стандарта OpenPGP, предоставляющая расширенное решение для управления ключами.
Доступно две версии GPG:
- gpg — автономная версия, которая больше подходит для серверов и встроенных платформ.
- gpg2 — версия для настольных компьютеров, для работы которой требуется установка нескольких других модулей.
В некоторых популярных дистрибутивах Linux, таких как Debian и Ubuntu, пакет gnupg2 является фиктивным переходным пакетом, который содержит символические ссылки с gpg2 на gpg. То есть, устанавливая gnupg2, вы фактически получаете современную унифицированную версию GPG.
Понимание сценария
Это демонстрирует обмен информацией между двумя сторонами:
- Alex (
alex@gmail.com) в командной строкеalex@andreyex. - Тестовый администратор (
testadmin@andreyex.com) в командной строкеroot@server.
Файл, которым обмениваются две стороны, называется secret.txt. В нем содержится очень важный пароль, которым тестовый администратор хочет поделиться с пользователем Alex.
Вы можете просмотреть содержимое файла secret.txt, содержащего пароль и другие данные для удаленного доступа, с помощью следующей команды cat, как показано на рисунке. Файл находится на сервере Test Admin:
cat secret.txt
Установите GnuPG (GNU Privacy Guard) в Linux
Чтобы установить пакет GnuPG, выполните соответствующую команду для вашего дистрибутива Linux, как показано ниже. Обратите внимание, что пакет gnupg должен быть установлен в обеих системах, обменивающихся данными.
Однако в большинстве современных дистрибутивов Linux GPG предустановлен, поэтому вы можете проверить, установлен ли он, выполнив команду gpg --version перед установкой.
sudo apt install gnupg [в Debian, Ubuntu и Mint] sudo yum install gnupg [в RHEL/CentOS/Fedora и Rocky/AlmaLinux] sudo emerge -a app-crypt/gnupg [в Gentoo Linux] sudo apk add gnupg [в Alpine Linux] sudo pacman -S gnupg [в Arch Linux] sudo zypper install gnupg [в OpenSUSE]
Создание новых пар ключей GPG в Linux
Чтобы создать новые пары ключей (открытый и закрытый), выполните команду gpg с флагом --full-generate-key в обеих системах и следуйте инструкциям, чтобы указать тип ключа, его размер, срок действия ключа, идентификатор пользователя для ключа и надежную парольную фразу для ключа, как показано на скриншоте ниже.
gpg --full-generate-key
В процессе создания ключа вам будет предложено:
- Выберите тип ключа (RSA и RSA рекомендуются).
- Выберите размер ключа (4096 бит рекомендуется для максимальной безопасности).
- Установите срок действия (можно сделать так, чтобы ключ не устаревал, или выбрать конкретный срок).
- Введите свое имя и адрес электронной почты.
- Придумайте надежную парольную фразу (она должна быть сложной и легко запоминающейся).
Список пар ключей GPG в Linux
Чтобы вывести список только что созданного открытого ключа GPG вместе с другими существующими ключами, выполните команду gpg с флагом --list-public-keys. Для вывода длинного списка добавьте флаг --keyid-format=long.
gpg --list-public-keys
или
gpg --list-public-keys --keyid-format=long
Чтобы вывести список только что созданного секретного ключа GPG вместе с другими существующими ключами, выполните команду gpg с флагом --list-secret-keys. Для вывода длинного списка добавьте флаг --keyid-format=long.
gpg --list-secret-keys
или
gpg --list-secret-keys --keyid-format=long
Экспорт ключей с помощью GPG в Linux
После того как обе стороны сгенерируют пары ключей GPG, они могут экспортировать свои открытые ключи в файл и отправить их друг другу по электронной почте или другим способом.
--------- На сервере Alex --------- gpg --list-public-keys gpg --export -o aaronsec.key 15B4814FB0F21208FB5076E7A937C15009BAC996 --------- На тестовом сервере администратора --------- gpg --list-public-keys gpg --export -o tadminsec.key BC39679E5FF48D4A6AEF6F3437211F0B4D6D8A61
Идентификатор ключа (длинная буквенно-цифровая строка) можно найти в выводе команды --list-public-keys . Вы можете использовать либо полный отпечаток, либо последние 8–16 символов идентификатора ключа.
Импортируйте ключи с помощью GPG в Linux
Затем обменяйтесь открытыми ключами по электронной почте или с помощью других безопасных способов, например с помощью команды scp, как показано ниже:
scp aaronsec.key root@192.168.0.189:/root/ scp root@192.168.0.189:/root/tadminsec.key ./
Затем импортируйте открытый ключ с другого устройства в локальную систему, добавив флаг --import как показано на рисунке.
gpg --import aaronsec.key gpg --import tadminsec.key
Чтобы проверить, есть ли импортированный открытый ключ в локальной связке ключей системы, выведите список доступных открытых ключей, как показано на рисунке.
gpg --list-public-keys
Шифрование файлов с помощью GPG в Linux
Теперь давайте посмотрим, как зашифровать секретный файл с помощью ключей gpg. В этом разделе мы будем выполнять команды на сервере тестируемого администратора.
Чтобы зашифровать текстовый файл с помощью только что созданной пары ключей GPG, выполните следующую команду. Флаг -e или --encrypt включает шифрование, флаг -r или --recipient используется для указания идентификатора получателя, а secret.txt — это текстовый файл, который нужно зашифровать.
Следующая команда шифрует файл secret.txt с помощью открытого ключа получателя alex@gmail.com:
gpg -e -r alex@gmail.com secret.txt
или
gpg --encrypt --recipient alex@gmail.com secret.txt
Если предыдущая команда выполнится успешно, в текущем каталоге будет создан новый файл (исходное имя файла с расширением .gpg):
ls secret.txt.gpg
Чтобы сохранить зашифрованную информацию в другом файле, используйте параметр -o или --output с указанием имени файла. В этом примере предпочтительным является имя node_configs:
gpg -e -r alex@gmail.com -o node_configs secret.txt
или
gpg --encrypt --recipient alex@gmail.com --output node_configs secret.txt
Теперь отправьте зашифрованный файл своему партнеру по электронной почте или другим безопасным способом.
-r флагов с разными адресами электронной почты. Таким образом, несколько человек смогут расшифровать один и тот же файл с помощью своих закрытых ключей.
Расшифровка файлов с помощью GPG в Linux
Чтобы расшифровать файл, зашифрованный с помощью gpg, добавьте флаг -d или --decrypt и укажите зашифрованное имя файла. По умолчанию расшифрованная информация будет выводиться в стандартный поток вывода. Вы можете сохранить ее в файл, используя флаг -o, как показано на рисунке.
gpg -d -o secrets.txt secrets.txt.gpg ls secrets.txt
При выполнении команды расшифровки GPG предложит вам ввести парольную фразу, которую вы указали при создании ключа. Убедитесь, что вы ввели ее правильно, чтобы успешно расшифровать файл.
Дополнительные рекомендации по обеспечению безопасности с помощью GPG
Несмотря на то, что GPG невероятно безопасен, соблюдение этих рекомендаций повысит эффективность вашего процесса шифрования:
- Используйте надежные парольные фразы: безопасность вашего закрытого ключа зависит от надежности парольной фразы, поэтому используйте комбинацию прописных и строчных букв, цифр и специальных символов.
- Делайте резервные копии ключей: храните резервную копию закрытого ключа в надежном месте. Если вы его потеряете, то не сможете расшифровать файлы.
- Установите срок действия ключа: подумайте о том, чтобы установить срок действия ключей, чтобы минимизировать ущерб в случае их компрометации.
- Проверка цифровых отпечатков ключей: прежде чем импортировать чей-либо открытый ключ, проверьте его цифровой отпечаток по защищенному каналу, чтобы предотвратить атаки типа «злоумышленник в середине».
- Отзыв скомпрометированных ключей: Если вы подозреваете, что ваш закрытый ключ был скомпрометирован, сгенерируйте сертификат отзыва и немедленно распространите его.
Дополнительную информацию можно найти на странице руководства gpg/gpg2, как показано на рисунке.
man gpg
или
man gpg2
Заключение
На этом мы заканчиваем наше руководство. GPG — это широко используемый инструмент для шифрования и дешифрования информации или файлов в Linux. Он обеспечивает шифрование военного уровня, которому доверяют специалисты по безопасности по всему миру.
Если у вас есть замечания по поводу этой статьи, воспользуйтесь формой обратной связи ниже.