GnuPG: Создание и работа с ключами шифрования
#GnuPG (#GPG) это программа для шифрования информации и создания электронных цифровых подписей. Она создавалась в качестве свободной альтернативе несвободному PGP.
Создание ключа
#GPG предоставляет различные алгоритмы шифрования. Я предпочитаю алгоритм ECC, основанный на эллиптических кривых (Elliptic Curve Cryptography).
Для создания ключей шифрования, нужно чтобы в системе была установлена утилита #GPG. Для систем #Debian и CentOS / #Fedora этим занимается пакет gnupg
, устанавливается командами:
- CentOS 8 / Fedora:
- Debian:
После того, как пакет установлен, можно начать создание ключа командой:
Команда вернёт следующий результат:
|
|
Здесь спрашивается, какой конкретно ключ мы хотим получить. Вводим 9
. Получаем:
А здесь уже предстоит выбрать алгоритм шифрования. Вводим 1
. Получаем:
На последнем шаге настройки ключа спрашивается время действия ключа. Обычно, личные ключи генерируются с безлимитным временем действия. Вводим 0
(этот пункт идёт по умолчанию).
Дальше будет пара-тройка вопросов по поводу имени владельца ключа, его адреса email и с просьбой указать комментарий. Таким образом, создаётся пара ключей: закрытый и открытый. Открытый ключ можно публиковать на различных ресурсах с целью идентификации владельца и подтверждения его личности. Например, так работает верификация коммитов на #GitLab’е и #GitHub’е. Закрытый ключ должен всегда оставаться внутри системы.
Список ключей в системе
Посмотреть установленные в системе ключи можно командой:
Где:
--list-keys
- показать список ключей.--keyid-format LONG
- формат отображения каждого ключа в расширенном (LONG
) формате.--with-fingerprint
- вывести отпечаток. Для себя всегда добавляю эту опцию на всякий случай.
Команда вернёт следующий результат:
Где:
JTM4BAVLPI8F0XHR
- идентификатор ключа. Он потребуется для каких-либо действий с ключом (редактирование / удаление / и т.п.).[ultimate]
- уровень доверия к ключу.John Doe
- имя хозяина ключа.<john.doe@example.com>
- почта хозяина ключа.ed25519
&cv25519
- алгоритмы шифрования.
Экспорт ключа
При создании открытого и закрытого ключей, необходимо экспортировать их для того, чтобы они хранились где-то независимо от системы, например, на какой-нибудь карте памяти или #USB-флешке. Следующие две команды выполняют необходимые действия.
- Экспорт публичного ключа:
- Экспорт приватного ключа:
Где:
--armor
- экспорт ключа в формате ASCII (текстовый формат).--output
- имя файлы, в который будет экспортирован ключ.--export 'JTM4BAVLPI8F0XHR'
- экспорт открытого ключа с идентификаторомJTM4BAVLPI8F0XHR
.--export-secret-keys 'JTM4BAVLPI8F0XHR'
- экспорт закрытого ключа с идентификаторомJTM4BAVLPI8F0XHR
.
Импорт ключа
С экспортом разобрались. Теперь по поводу импорта… Импортировать также необходимо открытый и закрытый ключи. Следующие две команды выполняют необходимые действия.
- Импорт публичного ключа:
- Импорт приватного ключа:
После импорта ключ приобретает стандартный уровень доверия. Для повышения или понижения уровня доверия, ключ необходимо отредактировать.
Редактирование ключа
Следующая команда позволяет отредактировать ключ:
Где:
--edit-key 'JTM4BAVLPI8F0XHR'
- редактирование ключа с идентификаторомJTM4BAVLPI8F0XHR
.
Режим редактирования ключа представляет собой текстовый интерфейс, в который вручную вбиваются команды. Например, повысим уровень доверия к ключу до максимального (ultimate).
- Вводим
trust
. - Выбираем
5 (I trust ultimately)
. - Вводим
quit
(выход).
Удаление ключа
Если какой-либо ключ стал нам не нужен, его можно удалить следующими командами.
- Удаление приватного ключа:
Где:
--delete-secret-key 'JTM4BAVLPI8F0XHR'
- удаление приватного ключа с идентификаторомJTM4BAVLPI8F0XHR
.
- Удаление публичного ключа:
Где:
--delete-key 'JTM4BAVLPI8F0XHR'
- удаление публичного ключа с идентификаторомJTM4BAVLPI8F0XHR
.
Эти две команды можно объединить в одну при помощи параметра --delete-secret-and-public-key
:
Где:
--delete-secret-and-public-key 'JTM4BAVLPI8F0XHR'
- удаление приватного и публичного ключа с идентификаторомJTM4BAVLPI8F0XHR
.
Скрипт автоматической генерации ключей
Собрал “на коленке” небольшой скрипт, позволяющий генерировать ключи без вступительных вопросов. Скрипт генерирует ключи и экспортирует их в свою директорию.
|
|
Скрипт ожидает на входе три параметра:
- Email пользователя.
- Имя пользователя.
- Пароль шифрования ключа.
Эти параметры указываются друг за другом в строгом порядке:
После отработки скрипта, в директории где он запускался появятся два файла с публичным и приватным ключами.
2023-11-26
- Добавлена инструкция по удалению ключей.
- Добавлен скрипт автоматической генерации ключей.
Категории
Смотрите также
Похожие записи не найдены.