Настройка и использование GnuPG
- Автор:
- Вадим Цесько
Это небольшое HOWTO по настройке и использованию GnuPG. Будут рассмотрены:
- генерация ключей;
- отзыв ключей;
- подписывание и шифрование файлов.
GnuPG реализует алгоритм асимметричного шифрования, соответственно существует открытый и закрытый ключ.
Закрытый ключ отправителя сообщения используется для подписи сообщения. Подпись должна быть расшифрована получателем при помощи открытого ключа отправителя, что подтверждает факт отправки сообщения нужным отправителем.
Открытый ключ получателя используется для шифрования содержимого сообщения, таким образом лишь получатель может расшифровать сообщение при помощи своего закрытого ключа.
Существует два наиболее распространённых примера использования GnuPG при работе с почтой (оба эти примера использования поддерживает расширение Enigmail к Mozilla Thunderbird):
- отправитель лишь подписывает сообщение при помощи своего закрытого ключа, соответственно, каждый получатель может проверить, что сообщение отправлено именно персоной-отправителем;
- отправитель подписывает сообщение и шифрует его при помощи открытого ключа получателя сообщения.
Требуемый софт
Понадобятся следующие пакеты:
gnupg
Возможно, кому-то покажутся удобными графические утилиты:
seahorse(утилита Gnome для управления ключами)enigmail(расширение для Mozilla Thunderbird)
Генерация ключа
Выполните под своим пользователем команду:
$gpg --gen-key
В принципе можно пользоваться настройками по умолчанию. Важные моменты:
- считается плохим тоном генерировать ключи без ограничения срока действия, поэтому рекомендуется ограничить срок действия хотя бы одним годом;
- в качестве User ID указывайте реальные данные, которые могут быть проверены, в противном случае никто не подпишет Ваш ключ, поскольку его будет трудно идентифицировать;
- для шифрования и хранения в файловой системе секретной части ключа используется пароль -- рекомендуется выбирать хороший пароль.
Вывести список ключей и их идентификаторы можно при помощи команды:
$gpg --list-keys
Сертификат отзыва ключа
Сразу же после генерации ключа рекомендуется сгенерировать сертификат для его отзыва и поместить сгенерированный сертификат в надёжное недоступное для посторонних место. Загрузка сертификата отзыва на сервер ключей приводит к отключению ключа.
Сгенерировать сертификат отзыва можно при помощи команды:
$gpg --output revoke.asc --gen-revoke <KEY-ID>
Экспорт публичного ключа
Создать защищённое ASCII представление публичного ключа можно при помощи команды:
$gpg --armor --export <KEY-ID> > mykey.asc
Многие сервера ключей принимают именно такое представление открытого ключа.
Отправка открытого ключа на сервер ключей
Сервера ключей хранят открытые ключи и синхронизируются между собой. Загрузка
ключей осуществляется либо путём отправки ASCII представления при помощи Web-формы,
либо при помощи отправки открытого ключа самой утилитой gpg. Например:
$gpg --send-keys --key-server pgp.mit.edu <KEY-ID>
Подписывание ключей
Подписывание ключей обязательно выполняется после проверки документов персоны, владеющей ключём. В результате подписывания ключей различными людьми строится сеть доверия. Процедура подписывания ключей имеет свои хитрости -- см. руководство.
При подписывании ключей обычно используются последние восемь цифр отпечатка ключа, который можно получить при помощи команды:
$gpg --fingerprint <KEY-ID>
Рассмотрим кратко основные шаги процедуры подписи ключей.
Получить подписываемый ключ:
$gpg --recv-keys <KEY-ID>
Подписать ключ:
$gpg --sign-key <KEY-ID>
Проэкспортировать подписанный ключ:
$gpg --armor --export <KEY-ID> --output <KEY-ID>.signed-by.<KEY-ID>.asc
Отправить подписанный ключ по почте владельцу или на сервер ключей:
$gpg --send-keys --keyserver pgp.mit.edu <KEY-ID>
После получения своего подписанного ключа импортировать его:
$gpg --import <KEY-ID>.signed-by.<KEY-ID>.asc
Просмотреть свои ключи:
$gpg --list-keys
Отправить свои подписанные ключи на сервер ключей:
$gpg --send-keys
Ура! Вы вошли в сеть доверия или увеличили существующую сеть.
Создание резервной копии ключей
Зачем нужно создавать резервные копии ключей:
- любые файлы, зашифрованные потерянной парой ключей, невозможно расшифровать;
- процесс расшифрования требует закрытого ключа, который не хранится на серверах ключей.
Важно! Если Вы потеряли Вашу пару ключей, необходимо отозвать ключ при помощи сертификата отзыва.
Рассмотрим сначала создание копии открытого ключа. Выведите список ключей при помощи команды:
$gpg --list-keys
Часть строки после pub 1024D/ является идентификатором открытого ключа.
Экспорт открытого ключа можно выполнить при помощи команды:
$gpg --armor --output <KEY-ID>-public.key --export <KEY-ID>
Рассмотрим создание копии секретного ключа. Выведите список секретных ключей при помощи команды:
$gpg --list-secret-keys
Часть строки после sec 1024D/ является идентификатором закрытого ключа.
Экспорт закрытого ключа можно выполнить при помощи команды:
$gpg --armor --output <KEY-ID>-private.key --export-secret-keys <KEY-ID>
Важно! Позаботьтесь о том, чтобы защитить эти файлы, поскольку проэкспортированные ключи хранятся в открытом виде.
Восстановление ключей
Восстановление ключей осуществляется путём их импорта при помощи команд:
$gpg --import <KEY-ID>-public.key $gpg --import <KEY-ID>-private.key
Отзыв ключа
Рассмотрим процесс отзыва пары ключей. Это может потребоваться во многих, ситуациях, описание которых выходит за рамки данного руководства. Рассмотрим сам процесс.
Вы не забыли сгенерировать сертификат отзыва? Вот команда для его генерации:
$gpg --gen-revoke
Чтобы отозвать ключ, импортируйте сертификат отзыва:
$gpg --import revoke.asc
И отправьте сертификат отзыва на сервер ключей:
$gpg --keyserver pgp.mit.edu --send-key <KEY-ID>
Что интересно, существует процедура отмены отзыва ключа, если Вы ещё не успели отправить сертификат отзыва на сервер ключей -- см. руководство.
Шифрование/расшифрование файлов
Чтобы зашифровать файл для отправки его получателю, используйте следующую команду:
$gpg -e -u "Sender User Name" -r "Receiver User Name" <filename>
Чтобы расшифровать полученный файл, используйте команду:
$gpg -d <filename>
Внешние ссылки
- Руководство по GnuPG из Ubuntu
- Небольшая шпаргалка по основным понятиям и операциям с GnuPG
- Список публичных серверов ключей
TODO
- Описать концепцию сети доверия
