GnuPG/ru

Это небольшое руководство научит Вас основам использования GnuPG, инструмента для защищенной передачи сообщений.

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

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

Other software
At a very basic level GnuPG must be emerged. Many applications today have some sort of support for PGP, so having  as a USE variable is a good idea. When desiring an email client capable of using GnuPG any of the following options are well suited:
 * PinePGP ;
 * Mutt — A small but very powerful text-based mail client;
 * Thunderbird — Mozilla's e-mail solution;
 * Evolution — A GNOME Microsoft Outlook work alike;
 * KMail — KDE's mail client.

Installing Kgpg might be of interest if using the KDE desktop enviroment. This small program allows for the generation key pairs, importing of keys from ASCII files, signing imported keys, exporting keys, among a few other features.

Создание ключа
Чтобы создать Ваш ключ, просто запустите gpg --gen-key. При первом запуске, он создаст несколько каталогов; запустите его снова чтобы создать ключи:

Здесь Вы можете выбрать тип ключа, который Вы хотите использовать. Большинство пользователей предпочтут алгоритмы по умолчанию: RSA и RSA. Далее идет размер ключа. Запомните, что чем больше, тем лучше, но не используйте размер больший чем 2048 с ключами DSA/ElGamal. В основном, 2048 более чем достаточно для обычной почты.

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

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

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

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

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

Команда gpg --list-keys перечисляет ключи в Вашей связке открытых ключей. Вы можете ее использовать для просмотра ID Вашего ключа, чтобы Вы могли создать сертификат отзыва. А сейчас, хорошей идеей будет скопировать весь каталог .gnupg и сертификат отзыва (в защищенном ASCII тексте - ) на какой-нибудь защищенный носитель (два гибких диска или CD-R, хранимые в безопасном месте). Запомните, что может быть использован для того, чтобы отозвать Ваши ключи и сделать их непригодными в дальнейшем.

Экспорт ключей
Для экспорта ключа, введите gpg --armor --output john.asc --export john@nowhere.someplace.flick. Вы можете почти всегда использовать ID ключа или что-нибудь, что идентифицирует ключ (здесь мы использовали email адрес). Теперь John имеет файл, который он может отправить своим друзьям, или разместить на своей веб-странице, чтобы люди могли с ним безопасно связаться.

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

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

Отправка ключей на сервер
Теперь, когда у нас есть ключ, возможно, хорошей идеей будет отправить его на сервер ключей. В мире существует много серверов ключей и большинство из них обмениваются ключами друг с другом. Здесь, мы собираемся отправить ключ, принадлежащий John Doe, на сервер keys.pgp.net. Он использует HTTP, поэтому если Вам потребуется использование прокси для HTTP трафика, не забудьте его установить ( export http_proxy= http://proxy_host:port/ ). Команда для отправки ключа: gpg --keyserver keys.gnupg.net --keyserver-options honor-http-proxy --send-key 75447B14, где 75447B14 - это идентификатор ключа (key ID). Если Вам не нужен HTTP прокси, Вы можете убрать --keyserver-options honor-http-proxy.

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

Получение ключей с сервера
Теперь мы собираемся найти ключ Gustavo Felisberto и добавить его в связку ключей John Doe (на случай, если Вы не заметили, Gustavo Felisberto - автор этого руководства :&#41;).

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

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

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

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

Конфигурация gpg-agent и pinentry
GnuPG включает. Pinetry — это вспомогательное приложение, которое gpg-agent использует для запроса парольной фразы в графическом окне. Оно бывает трех видов: отображение окна с использованием gtk+, Qt или библиотек curses (в зависимости от установленных USE-флагов в ).

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

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

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

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

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

Дополнительно, раскомментируйте следующее в (глобально) или добавьте в  (для локального пользователя):

Если Вы используете другую графическую среду, поместите эту строку (ту же, что и упомянутую выше) в (если Вы используете  ) или  (если Вы используете XDM/GDM/KDM/...).

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

Следующие три команды как раз это и сделают: зашифруют, подпишут и зашифруют/подпишут.

Это создаст двоичные файлы. Если Вы хотите создать ASCII-файлы, просто добавьте опцию --clearsign в начало команды.

Расшифровка и проверка подписей
Предположим, Вы получили файл, который зашифрован Вашим открытым ключом. Командой для расшифровки является gpg --output document --decrypt encrypted_doc.gpg. Это расшифрует документ и проверит подпись (если таковая имеется).

Шифрование и расшифровка без ключей
Также возможно шифрование файлов с использованием паролей вместо ключей. Пароль, сам по себе, будет функционировать как ключ - он будет использован в качестве симметричного шифра. Вы можете зашифровать файл, используя gpg --symmetric ; расшифровка использует ту же команду, которую мы обсуждали ранее.

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

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

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

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

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

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

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

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

Kgpg
Kgpg - это отличный графический интерфейс пользователя для GnuPG. На главном экране вы можете вставить текст, который Вы хотите подписать или зашифровать, кроме того, вы можете вставить защищенный текст ASCII, который Вы хотите расшифровать.

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

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, по-видимому, не работают с командой gpg --send-keys, которая была использована для отправки всех ключей в Вашем кольце на сервер.

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

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

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

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

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

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