Практическое руководство по GPG. Часть 2: Организация работы с открытыми ключами

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

Убедитесь в наличии вашего личного открытого ключа.

Выполните следующую команду, чтобы увидеть свой собственный открытый ключ GPG. Подставьте вместо user-id свой адрес электронной почты, связанный с GPG.

gpg --list-sigs user-id

Вот мой идентификатор ключа: 752E173A3F8B04F5, а также отпечаток ключа: 378CB32D8AC7D656F38961B1752E173A3F8B04F5.

Разместите свой открытый ключ на общедоступном сервере ключей.

Не забывайте, что делиться закрытым ключом категорически нельзя; открытым ключом можно делиться. В мире существует множество публичных серверов ключей, в том числе у Ubuntu и MIT. Чтобы загрузить свой открытый ключ на сервер ключей, используйте следующую команду.

gpg --send-key key-id

На Ubuntu GPG по умолчанию загружает ваш открытый ключ на ключевой сервер по адресу hkps://keys. openpgp. org. Вы можете указать другой публичный сервер ключей, воспользовавшись параметром —keyserver, однако я предпочитаю оставаться с сервером openPGP по умолчанию.

gpg --keyserver hkps://keyserver.ubuntu.com --send-key key-id

Если вы отправите свой открытый ключ на сервер openPGP, вам придет уведомление на вашу электронную почту.

уведомление о сервере ключей openpgp

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

Проверка электронной почты через сервер ключей OpenPGP.

После подтверждения вашего адреса электронной почты вы сможете искать свой ключ на сервере ключей.

gpg --search user-id

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

Читайте также:  Как установить графическую оболочку для удобного управления в Ubuntu Server 18 04

Добавьте открытый ключ других пользователей в ваше хранилище ключей.

Для того чтобы отправить зашифрованное сообщение с помощью GPG, вам необходимо сначала импортировать открытый ключ получателя в ваше ключевое хранилище. Это хранилище включает ваш собственный открытый ключ, а также все открытые ключи, которые вы импортировали. Файл ключевого хранилища располагается по следующему адресу:~/.gnupg/pubring. kbx.

Загрузка из файла:

Попросите адресата выслать вам файл открытого ключа, а затем импортируйте его, используя следующую команду:

gpg --import public-key-file

Загрузка ключей с сервера.

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

gpg --search user-id

Если вам известен идентификатор ключа заранее, примените параметры —recv-keys для загрузки ключа с сервера.

gpg --recv-keys key-id

Для указания определенного сервера ключей воспользуйтесь параметром —keyserver, как показано ниже.

gpg --keyserver hkps://keyserver.ubuntu.com --search user-id

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

Проверка публичных ключей

Когда кто-то делится с вами своим открытым ключом, как вы можете убедиться, что он действительно принадлежит этому человеку? После того как вы импортируете открытый ключ другого человека, необходимо удостовериться в его подлинности.

Вот как осуществляется процесс проверки:

  1. Вы можете просмотреть отпечаток открытого ключа, используя команду: gpg —fingerprint user-id.
  2. Вы контактируете с обладателем ключа по телефону, в личной встрече или иным способом, пока не убедитесь, что общаетесь именно с ним. После этого вы можете спросить у владельца о его отпечатке ключа.
  3. Сравните два отпечатка. Если они совпадают, можно с уверенностью утверждать, что это верный открытый ключ.
  4. Затем вы подписываете ключ, чтобы подтвердить его действительность. Для этого воспользуйтесь командой gpg —sign-key key-id.

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

Когда вы подпишете открытый ключ другого человека, у вас есть возможность загрузить его на сервер ключей. Это действие сигнализирует серверу о вашем доверии к открытому ключу данного человека, что, в свою очередь, увеличивает доверие других пользователей к этому ключу.

gpg --send-key key-id

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

Читайте также:  Как безопасно загрузить и выгрузить файлы с помощью SFTP

Контроль вашего хранилища ключей

Перечень всех ключей в вашем хранилище открытых ключей.

gpg --list-keys

pub ed25519 2022-05-10 [SC] [expires: 2024-05-09] 378CB32D8AC7D656F38961B1752E173A3F8B04F5 uid [ultimate] Xiao Guoan [email protected]> sub cv25519 2022-05-10 [E] [expires: 2024-05-09]

Полный перечень всех ключей с их подписями.

gpg --list-sigs

pub ed25519 2022-05-10 [SC] [истекает: 2024-05-09] 378CB32D8AC7D656F38961B1752E173A3F8B04F5 uid [ultimate] Сяо Гуоань [email protected]> sig 3 752E173A3F8B04F5 2022-05-10 Сяо Гуоань [email protected]> sub cv25519 2022-05-10 [E] [истекает: 2024-05-09] sig 752E173A3F8B04F5 2022-05-10 Сяо Гуоань [email protected]>

Для того чтобы убрать ключ

gpg --delete-key идентификатор-ключа

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

Перечень ключей в вашем личном сейфе ключей.

gpg --list-secret-key

/home/linuxbabe/.gnupg/pubring. kbx ---------------------------------- sec ed25519 2022-05-10 [SC] [истекает: 2024-05-09] 378CB32D8AC7D656F38961B1752E173A3F8B04F5 uid [ultimate] Сяо Гуоань [email protected]> ssb cv25519 2022-05-10 [E] [истекает: 2024-05-09]

Управление GPG-ключами в программе Seahorse.

Если вы работаете в среде рабочего стола GNOME на Linux, вы можете управлять GPG-ключами с помощью Seahorse. Этот графический инструмент предназначен для управления ключами шифрования, паролями и сертификатами. Если вы используете KDE, аналогичную функцию выполняет программа KGPG.

Запустите Seahorse через приложение в меню.

управление ключами GPG для морских коньков

Перед тем как приступить к его использованию, необходимо настроить сервер PGP-ключей. Откройте выпадающее меню и перейдите в раздел Настройки; вы заметите, что доступны два стандартных сервера ключей.

  • hkp://keyserver.ubuntu.com:11371
  • ldap://keyserver. pgp.com

Я заметил, что сервер ключей Ubuntu не функционирует, поэтому переключаюсь на сервер ключей openPGP (hkps://keys. openpgp. org).

сервер ключей OpenPGP для морского конька

Для того чтобы загрузить открытый ключ с сервера ключей, нажмите на выпадающее меню и выберите опцию «Найти удаленные ключи». После этого введите адрес электронной почты.

морские коньки находят удалённые открытые ключи

Как вы можете заметить, он обнаружил мой открытый ключ на сервере ключей. Так как это мой личный ключ, мне не требуется его импортировать.

импортировать публичный ключ с использованием seahorse

Если это ключ, принадлежащий другому человеку, вы можете нажать кнопку импорта, чтобы добавить его в ваше хранилище ключей. После выполнения команды gpg —list-keys вы сможете увидеть, что ключ был успешно добавлен в ваше хранилище.

Seahorse по умолчанию отображает только ваш личный ключ. Чтобы увидеть другие ключи, выберите опцию «Показать любые».

морской конек показывает любые ключи

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

Читайте также:  Настройка и активация Postscreen в Postfix для предотвращения спама от ботов

Если отпечаток верен, вам необходимо подписать открытый ключ, нажав на кнопку для его подписи.

Как увеличить срок действия ключа

Создание ключа с установленным сроком действия — это всегда разумное решение. Почему так? Если вы утратите свой закрытый ключ, доступ к расшифровке сообщений будет утерян, поэтому важно сообщить людям, что после истечения срока действия открытого ключа его использование недопустимо.

Для того чтобы увеличить срок действия вашего ключа, введите следующую команду, заменив user-id на ваш адрес электронной почты GPG.

gpg --pinentry-mode=loopback --edit-key user-id

Выберите главный ключ.

gpg> key 0

Скорректируйте дату окончания:

gpg> expire

Изменение срока действия основного ключа. Пожалуйста, укажите, как долго ключ должен быть действителен. 0 = ключ не истекает = ключ истекает через n дней w = ключ истекает через n недель m = ключ истекает через n месяцев y = ключ истекает через n лет Ключ действителен в течение? (0) 2yКлюч истекает в субботу, 18 мая 2024 года, в 10:01:47 утра по времени UTC+8. Это верно? (y/N)y

После этого необходимо ввести пароль вашего секретного ключа для подтверждения вашей идентичности как владельца.

Затем выберите активный ключ.

gpg> key 1

Скорректируйте дату окончания:

gpg> expire

Изменение срока действия подключенного ключа. Пожалуйста, укажите, как долго ключ должен быть действителен. 0 = ключ не истекает = ключ истекает через n дней w = ключ истекает через n недель m = ключ истекает через n месяцев y = ключ истекает через n лет Ключ действителен в течение? (0) 2y Ключ истекает в субботу 18 мая 2024 года в 10:01:47 AM +08 Это правильно? (y/N) y

Сохраните внесённые изменения.

gpg> save

Отобразите идентификатор вашего ключа.

gpg --list-sigs user-id

Загрузите свежий ключ на сервер для управления ключами.

gpg --send-key key-id

Сервер OpenPGP автоматически обновит ваш старый ключ на новый.

Как применить сертификат об аннулировании

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

На Linux сертификат аннулирования по умолчанию располагается в папке.~/.gnupg/openpgp-revocs. d/. Новый можно создать, используя следующую команду:

gpg --output revocation. rev --gen-revoke key-id

После этого добавьте его в ваше хранилище ключей.

gpg --import revocation. rev

Загрузите недействительный ключ на сервер для ключей.

gpg --send-key key-id

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

Следующий этап

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

  • Практическое руководство по GPG, часть 3: Процесс шифрования и дешифрования файлов.