Использование gpg в Linux
Базовая настройка, использование и отзыв сертификатов GnuPG
Как и в случае с SSH, в основе GPG лежит асимметричная криптография или криптография с открытым ключом.
Ключи математически связаны таким образом, что зашифрованное одним ключом сообщение может быть расшифровано только с помощью другого.
Для успешной коммуникации пользователь должен отправить свой открытый ключ адресату.
gpg --gen-key
...
gpg: создан каталог '/home/chich/.gnupg/openpgp-revocs.d'
gpg: сертификат отзыва записан в '/home/chich/.gnupg/openpgp-revocs.d/9672B92FB101BD677C07D4416C8AA31A59B5C1CB.rev'.
открытый и секретный ключи созданы и подписаны.
...
#Содержимое каталога
ls -la .gnupg
итого 28
drwx------ 4 chich chich 4096 мая 10 16:16 .
drwxr-x--- 35 chich chich 4096 мая 10 16:12 ..
drwx------ 2 chich chich 4096 мая 10 16:16 openpgp-revocs.d
drwx------ 2 chich chich 4096 мая 10 16:16 private-keys-v1.d
-rw-rw-r-- 1 chich chich 645 мая 10 16:16 pubring.kbx
-rw------- 1 chich chich 32 апр 10 16:06 pubring.kbx~
-rw------- 1 chich chich 1240 мая 10 16:16 trustdb.gpg
openpgp-revocs.d - Здесь хранится сертификат отзыва, созданный вместе с парой ключей
private-keys-v1.d - В этом каталоге хранятся ваши закрытые ключи, поэтому доступ к нему ограничен
pubring.kbx - Это ваш публичный ключ. В нем хранятся ваш собственный и все импортированные открытые ключи.
trustdb.gpg - База данных о доверии. Это связано с концепцией сети доверия
С выходом GnuPG 2.1 появилось несколько существенных изменений, таких как замена файлов secring.gpg и pubring.gpg на private-keys-v1.d и pubring.kbx соответственно.
#просмотреть свои открытые ключи
#Шестнадцатеричная строка в выводе, это отпечаток открытого ключа
gpg --list-keys
#проверить отпечаток своего ключа
gpg --fingerprint Chich
Распространение и отзыв ключей
Теперь, когда у вас есть открытый ключ, вам следует сохранить его (то есть экспортировать) в файл, чтобы он был доступен вашим будущим получателям
С его помощью они смогут шифровать файлы или сообщения, предназначенные для вас (поскольку только у вас есть закрытый ключ, только вы сможете их расшифровать и прочитать).
Точно так же ваши получатели смогут использовать его для расшифровки и проверки ваших зашифрованных или подписанных сообщений/файлов.
Используйте команду gpg --export с последующим USER-ID и перенаправлением на выходной файл с выбранным вами именем:
gpg --export Chich > chich.pub.key
Если передать параметр -a или --armor в gpg --export (например, gpg --export --armor Chich > chich.pub.key), будет создан защищенный вывод в формате ASCII (вместо стандартного двоичного формата OpenPGP), который можно безопасно отправить по электронной почте.
Теперь вам нужно отправить файл с открытым ключом (chich.pub.key) получателю, с которым вы хотите обменяться информацией.
Получатель может использовать открытый ключ для шифрования файла для обмена с отправителем
Другой способ распространения открытых ключей — использование серверов ключей: вы загружаете свой открытый ключ на сервер с помощью команды gpg --keyserver keyserver-name --send-keys KEY-ID, а другие пользователи получают (то есть импортируют) их с помощью gpg --keyserver keyserver-name --recv-keys KEY-ID.
Отзыв ключей
Отзыв ключей следует использовать в случае, если ваши закрытые ключи были скомпрометированы или выведены из эксплуатации.
Сначала нужно создать сертификат отзыва, передав gpg опцию --gen-revoke с последующим указанием USER-ID
Перед --gen-revoke можно указать опцию --output с последующим указанием имени файла назначения, чтобы сохранить полученный сертификат в файл (вместо того, чтобы выводить его на экран терминала)
#Создать сертификат отзыва
gpg --gen-revoke Chich
#Вывод в файл
gpg --output revocation_file.asc --gen-revoke sonya
Чтобы эффективно отозвать закрытый ключ, вам нужно объединить сертификат с ключом. Для этого импортируйте файл сертификата отзыва в свою связку ключей:
gpg --import revocation_file.asc
Использование GPG для шифрования, дешифрования, подписания и проверки файлов
Получатель должен импортировать открытый ключ Chich (chich.pub.key) в свою связку ключей, чтобы начать с ним работать:
#Импорт ключа
gpg --import chich.pub.key
gpg --list-keys
#Создать файл с содержимым
echo "This is the message ..." > unencrypted-message
#Зашифровать файл
gpg --output encrypted-message --recipient Chich --armor --encrypt unencrypted-message
#Зашифрованный файл будет отправлен пользователю Chich например с помощью scp или rsync
Поскольку у вас есть закрытый ключ, вы можете легко расшифровать сообщение, передав gpg параметр --decrypt и указав путь к зашифрованному файлу (потребуется парольная фраза закрытого ключа):
gpg --decrypt ../crypt-message
Подписание и проверка файлов
Помимо шифрования, GPG можно использовать для подписи файлов. Здесь актуальна опция --sign . Давайте начнем с создания нового сообщения (message) и подпишем его с помощью опции --sign (потребуется парольная фраза вашего закрытого ключа):
echo "Это сообщение для подписи ..." > message
gpg --output message.sig --sign message
--output message - Имя файла с подписанной версией исходного файла (message.sig в нашем примере).
--sign message - Путь к исходному файлу.
С помощью --sign документ сжимается, а затем подписывается. Результат сохраняется в двоичном формате.
Далее мы отправим файл получателю, а получатель сможет проверить файл на наличие подписи
gpg --verify message.sig
#Чтобы прочитать файл, его нужно расшифровать и сохранить в новый файл
gpg --output message --decrypt message.sig
GPG-Агент
gpg-agent — это демон, который управляет закрытыми ключами для GPG (он запускается по запросу gpg). Чтобы просмотреть список наиболее полезных опций, запустите gpg-agent --help или gpg-agent -h:
gpg-agent --help
Источник: https://learning.lpi.org/en/learning-materials/102-500/110/110.3/110.3_02/
keyrings
Каталог /etc/apt/keyrings в системе APT используется для хранения ключей, которые управляются администратором системы.
В этом каталоге хранятся индивидуальные ключи репозиториев. Каждый ключ привязан к конкретному репозиторию, что повышает безопасность, так как APT доверяет только ключам, явно указанным для конкретного источника.
Ключи должны быть в формате OpenPGP с расширением .gpg. Если ключ распространяется в формате ASCII (.asc), его необходимо конвертировать с помощью утилиты gpg (например, с параметром --dearmor)
Рекомендуется давать осмысленные имена файлам ключей, чтобы было понятно, к какому репозиторию они относятся.
Чтобы использовать ключ из /etc/apt/keyrings, в конфигурации репозитория (в файле /etc/apt/sources.list или в файлах каталога /etc/apt/sources.list.d/) с помощью параметра signed-by указывается путь к файлу с ключом. Например:
deb [signed-by=/etc/apt/keyrings/debian-keyring.gpg] http://deb.debian.org/debian buster main contrib non-free
В отличие от /etc/apt/keyrings, в каталоге /etc/apt/trusted.gpg.d/ хранятся общие для всех репозиториев ключи. При обращении к репозиторию подходящий ключ в этом каталоге ищется автоматически. Однако использование общего хранилища ключей может представлять угрозу безопасности, так как все ключи применяются ко всем репозиториям.
#Добавление ключа для docker
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <
Источники
Связанные темы
Использование hydra для тестирования
Поиск уязвимостей и следов взлома в Linux
Базовые понятие о настройках и безопасности в сети
Саздание сертификатов SSL (TLS) для сайта






