23.06.2025

Как работать с gpg keyring?

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

Одним из таких решений является GPG или GNU Privacy Guard, которая представляет собой открытую реализацию криптосистемы. Совокупности модулей позволяющих производить криптографические преобразования: шифрование, подпись, хранение публичных и закрытых ключей. Именно последние два модуля являются неотъемлемой частью любого средства. В GPG это называется key ring!

Что такое GPG key ring?

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

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

Поэтому важно обеспечить корректное разграничение доступа!

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

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

gpg -K && gpg -k

Скриншот №1 — Список ключей

На изображении можно увидеть, что информация о связках была получена из pubring.kbx, ведь там хранятся публичные ключи и информация связанная с ними, которая позволяет определить принадлежность ключа. В том числе и о секретных, их хеш-значения и UID пользователей, которые ими владеют.

Как импортировать ключ в GPG keyring?

Для этого можно использовать команду:

gpg --import <file>

Но предварительно необходимо скачать сам ключ, в этом возникает новая сложность. Как это сделать безопасно? Ведь подменив соединение с сервером Mitm атакой, нарушитель отправит зловред и иной ключ, под видом подлинного. Для этого существует два способа распространения:

В данных видах передачи существуют доверенные и не доверенные объекты, в способе Web of Trust мы доверяем официальному сайту компании или же его посредникам. Рассмотрим безопасный импорт ключей на примере базы данных MySql. Для этого перейдем на сайт компании и удостоверимся, в том что используемый протокол https и сертификат принадлежит организации:

Скриншот №2 — Сертификат

Отлично, компания Oracle владеет MySQL, соответственно, если мы доверяем удостоверяющему центру, где произведена проверка, то можем продолжить. Перейдем на вкладку, где предлагается несколько способов по использованию публичного ключа. Обычно есть три варианта:

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

Скриншот №3 — Публичный ключ

Обычно, формируют один уникальный ключ и подписывают им все необходимые файлы и пакеты. В данном случае это так, скопируем ключ и перейдем на наше устройство, где необходимо его добавить. Для наглядности будем выполнять все действия на примере облачного сервера от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать.

Скриншот №4 — Создание сервера

Потребуется некоторое время для развертывания серверных мощностей. После чего вы можете подключиться любым из удобных способов. И перейдем к терминалу с нашей ОС!

Создадим файл с названием key.gpg, выбор как именовать файл остается за вами, а вот формат  нужно выбрать .gpg. Именно он используется, при импорте:

nano key.pgp

Скриншот №5 — Запишем ключ

Откроется текстовый редактор, вставьте публичный ключ и импортируйте командой:

gpg --import <file>
Обратите внимание, что ключи формата pgp, asc и подобные необходимо деармировать!

Деармирование, как процесс конвертирования из исходного формата в целевой:

gpg --dearmor <filename.pgp> -o /usr/share/key.gpg && gpg --import\

/usr/share/key.gpg

После чего произойдет импорт ключа:

Скриншот №6 — Импорт ключа

После этого мы можем им пользоваться!

Как удалить ключ GPG из связки?

Для того чтобы удалить ключ из связки необходимо указать владельца или идентификатор ключа в команде:

gpg --delete-secrete-key <key-id>

И для публичных ключей:

gpg --delete-key <key-id>

Все сведения о ключах можно просмотреть командой представленной выше в инструкции!

Как экспортировать ключ GPG?

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

gpg  -a --export <key-id> > pub_key.asc

Опция -a позволяет армировать ключ в ASCII и передавать в почте, мессенджере или выложить на своем сайте.

gpg -a --export-secret-keys <key-id> > secret_key.asc

Обратите внимание, что в большинстве случаев секретный ключ почти всегда остается на машине, кроме тех, когда вам необходимо делегировать вашу подпись или расшифровку шифр сообщений доверенному объекту.