GnuPG/ru

Это руководство научит Gentoo Linux пользователя основам использования GnuPG; утилита для безопасной взаимосвязи.

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

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

Другое программное обеспечение
Как минимум GnuPG должен быть установлен. Сегодня многие приложения поддерживают PGP, поэтому включение USE-флага  является хорошей идеей. Если требуется почтовый клиент, поддерживающий GnuPG, подойдет любой из следующих вариантов:
 * PinePGP.
 * Mutt — Небольшой, но мощный текстовый почтовый клиент.
 * Thunderbird — E-mail решение от Mozilla.
 * Evolution — Почтовый клиент GNOME, похожий на Microsoft Outlook.
 * KMail — Почтовый клиент KDE.
 * При использовании окружения рабочего стола KDE, возможно, имеет смысл установить KGPG . Среди прочих возможностей, эта небольшая программа позволяет создавать пары ключей, импортировать ключи из файлов ASCII, подписывать импортированные ключи и экспортировать ключи.

Создание ключа
Чтобы создать ключ, используйте команду. При первом запуске, она создаст несколько каталогов необходимые для правильной работы GnuPG. Запустите её снова чтобы создать ключи:

Можно выбрать тип ключа, но большинство пользователей предпочтут вариант по умолчанию, RSA и RSA. Далее следует размер ключа — помните, что чем он больше, тем лучше, но не используйте размер более 2048 с ключами DSA/ElGamal. 2048 более чем достаточно для обычной коммуникации по электронной почте.

Gentoo developers (especially those working on ebuilds) are encouraged to use 4096-bit keys.

За размером следует дата истечения срока. Здесь чем меньше, тем лучше, однако пользователи могут выбрать ключ, срок которого никогда не истекает, или истекает через 2 или 3 года. Помните, что вы можете до бесконечности продлить срок действия ключа, даже после того, как он истек.

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

Теперь введите парольную фразу дважды. Имеет смысл использовать сильную парольную фразу. Если кому-либо удастся заполучить соответствующий закрытый ключ и взломать пароль, то он получит возможность выдавать себя за пользователя, отправляя подписанные сообщения от его имени. Злоумышленник сможет заставить абонентов жертвы поверить, что почта или сообщения отправляются жертвой. Примечание: смотрите раздел о pinentry ниже, если появляются какие-либо проблемы.

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

Генерация сертификата отзыва
После создания ключей нужно создать сертификат отзыва. Это позволит пользователю отозвать ключ в случае, если произойдет какая-либо неприятность (например, злоумышленник получит доступ к ключу/парольной фразе).

выводит список ключей в открытой связке. Это команду можно использовать, чтобы посмотреть идентификатор ключа, чтобы можно было создать сертификат отзыва. Неплохой идеей будет скопировать весь каталог и сертификат отзыва (ASCII armored - ) на безопасный носитель (CD-R или USB-накопитель, находящийся в безопасном месте). Помните, что файл можно использовать для того, чтобы отозвать ключи и сделать их непригодными в будущем.

Экспорт ключей
Чтобы экспортировать ключ, запустите команду. Почти всегда можно использовать идентификатор ключа или что-либо, что его идентифицирует (в этом примере используется адрес электронной почты). Теперь у Larry есть файл, который он может отправить своим друзьям или разместить на своей веб-странице, чтобы другие могли вступить с ним в безопасную коммуникацию.

Импорт ключей
Чтобы добавить ключи в связку открытых ключей необходимо сделать следующее:
 * 1) импортировать ключ
 * 2) проверить отпечаток ключа
 * 3) после проверки отпечатка ключа нужно проверить его.

Теперь, мы будем добавлять открытый ключ Луиса Пинто (моего друга) в нашу связку открытых ключей. После звонка по телефону и запрашивания отпечатка его ключа, я сравню отпечаток с результатом команды. В случае если ключ подлинный, я добавлю его в связку открытых ключей. В этом частном случае, ключ Луиса истечет на 2003-12-01, поэтому у меня будет спрошено желаю ли я, чтобы моя подпись этого ключа истекла в то же время.

Отправка ключей на сервер
Теперь, когда ключ сгенерирован, неплохой идеей будет отправить его на публичный сервер ключей. В мире существует множество серверов ключей и большинство из них обмениваются ключами. В следующем примере ключ Larry the cow будет отправлен на сервер keys.gnupg.net. Отправка ключей использует HTTP, поэтому, если для трафика HTTP используется прокси-сервер, не забудьте настроить его соответствующим образом. Ключ отправляется с помощью следующей команды:, где  — идентификатор ключа. Если HTTP прокси не используется, то можно убрать параметр.

Также хорошей идеей будет отправить на сервер ключей ключи других людей, подписанные Larry. Мы могли бы отправить ключ Luis Pinto на сервер ключей. Тогда те, кто доверяет ключу Larry, могут использовать подпись, размещенную им на сервере для доверия ключу Luis.

Получение ключей с сервера
Теперь мы осуществим поиск ключа Gustavo Felisberto (автора данного руководства :&#41;) и добавим его в связку Larry the cow.

Как видно из ответа сервера, отправлено несколько ключей на сервер, но используется только. Теперь Larry the cow может получить ключ и подписать его, если он ему доверяет.

Что такое GPG agent?
Иногда, при работе с определенными приложениями, возникает необходимость часто использовать ключ GPG, что означает, что необходимо часто вводить парольную фразу. В прошлом многие приложения поддерживали механизм кэширования парольных фраз. Это облегчало жизнь пользователям, поскольку парольные фразы вводились автоматически. Однако нельзя было разделять этот кэш между несколькими программами (это довольно небезопасно) и это вынуждало приложения снова и снова изобретать велосипед.

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

Gentoo предоставляет несколько приложений GPG agent. Пакет содержит то, что можно рассматривать как эталон, и будет основным, что будет использоваться в этой статье.

Конфигурация gpg-agent и pinentry
GnuPG включает в себя. Pinentry — это приложение, которое  использует для запроса парольной фразы в графическом окне. Оно существует во множестве вариантах, включая gtk2 и 3, qt4 и 5, tty и curses. Рекомендуется всегда компилировать с поддержкой ncurses. Установите соответствующие USE-флаги.

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

Теперь создайте файл и добавьте следующие строки, чтобы задать таймаут парольной фразы по умолчанию (например, 30 минут) и приложение, которое будет запускаться, когда возникнет необходимость извлечь парольную фразу (например, GTK+ вариант Pinentry).

Затем, настройте GnuPG на использование agent, когда это уместно. Отредактируйте и добавьте следующую строчку:

Теперь система (почти) готова для использования GPG agent.

Автоматический запуск GPG agent
Если в качестве окружения рабочего стола используется KDE, отредактируйте (для общесистемных настроек; в KDE4 это ) или  (для локального пользователя; в KDE4 это ). Добавьте следующую команду в соответствующий файл, чтобы KDE автоматически запускал GPG Agent:

Также раскомментируйте следующие строки в (для общесистемных настроек; в KDE4 это ) или  (для локального пользователя; в KDE4 это ):

При использовании окружения рабочего стола, отличного от KDE, поместите вышеприведенные строки в, если для запуска X используется , или в , если используется XDM, GDM, KDM и так далее.

Шифрование и подпись
Давайте предположим, что у Larry есть файл, который он хотел бы отправить Луису. Larry может его зашифровать, подписать, или зашифровать и подписать одновременно. Шифрование означает что только Луис сможет его открыть. Подпись говорит Луису о том что Larry действительно тот кто создал этот файл.

Чтобы зашифровать:

Чтобы подписать:

Чтобы зашифровать и подписать:

Это создаст двоичные файлы. Чтобы создать ASCII файлы, добавьте параметр  в начале команды.

Расшифровка и проверка подписей
Предположим, что Larry получил зашифрованный файл. Расшифровать его можно с помощью команды. Эта команда расшифрует документ и проверит подпись, если она есть.

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

GnuPG запросит парольную фразу и ее подтверждение.

Расширенные функции
В GnuPG есть несколько приятных расширенных функций. Чтобы их найти, откройте файл.

Раскомментируйте две вышеприведенные строки. С помощью этой модификации, каждый раз, когда GnuPG требуется проверить подпись и он не может найти открытый ключ в локальной связке, он свяжется с сервером ключей keys.gnupg.net и попытается загрузить с него открытый ключ.

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

О подписях электронной почты
95% времени, GnuPG будет использоваться в электронной почте для подписывая/шифрования исходящих сообщений или чтения подписанных/зашифрованных сообщений.

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

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

Для того, чтобы решить эту проблему, к стандарту MIME (Multipurpose Internet Mail Extensions) было создано дополнение. Оно добавило поле в email сообщение, которое сообщает программе чтения почты, что все содержимое этого сообщения подписано и/или зашифровано. Проблема заключается в том, что не все программы чтения почты поддерживают такие функции. Некоторые даже портят содержимое (Microsoft Outlook знаменит своими отказами с этим работать).

Kgpg
Kgpg является замечательным интерфейсом для GnuPG. Основной экран содержит область для вставки текста, который можно подписать и зашифровать. Обратное также верно: ASCII armored текст можно ввести и расшифровать.

Seahorse
Целью Seahorse является создание графического интерфейса GnuPG для рабочего стола GNOME. Эта программа быстро развивается, но в ней по-прежнему отсутствуют многие важные возможности, которые можно найти в Kgpg и в версии для командной строки.

KMail
Если установлен USE-флаг, KMail будет собран с поддержкой gpg, и он сможет зашифровывать и расшифровывать почту PGP автоматически, а также зашифровывать почту OpenPGP/MIME. Чтобы расшифровать почту OpenPGP/MIME (это нужно большинству пользователей), GPG agent должен быть запущен.

Чтобы проверить, правильно ли сконфигурирован KMail, перейдите в. GpgME backend должен отобразиться в списке и установлен флажок рядом с OpenPGP. Если он находится в списке, но затенен, нажмите на. Если backend, основанный на GpgME, остается затененным, KMail не будет работать как надо.

Если не получается заставить KMail работать должным образом, посмотрите страницу официальная страница KMail PGP, чтобы получить больше информации.

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

Чтобы использовать GPG ключ с Claws-Mail, перейдите к пункту. Как только это сделано, выберите какой ключ нужно использовать, возможно, большинству пользователей подойдет ключ по умолчанию.

Некоторые из проблем
У меня были проблемы с фотографиями в ключах. Проверьте используемую версию. Если используется GnuPG 1.2.1-r1, скорее всего, все в порядке; с более старыми версиями могут быть проблемы. Кроме того, большинству серверов ключей не нравятся ключи с фотографиями, поэтому лучше их не использовать.

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

О чем здесь не написано
— очень сложная утилита. Она позволяет делать гораздо больше, чем то, о чем здесь было написано. Этот документ предназначен для тех пользователей, которые еще не знакомы с GnuPG. За более подробной информацией, обратитесь к официальному веб-сайту GnuPG.

В этой статье не описаны такие утилиты, как, , и утилиты Windows GPG.

Благодарности
GnuPG Handbook от John Michaeil Ashley. Это очень хорошая книга для новичков.

Swift (Sven Vermeulen) за подталкивание меня к переписыванию этого руководства.

Каждого из команды. Парни, вы рулите.

Tiago Serra, за мое возвращение обратно на путь конфиденциальности.

External resources

 * https://www.void.gr/kargig/blog/2013/12/02/creating-a-new-gpg-key-with-subkeys/ - An article explaining the creation of subkeys.