@node KSP Attending @section Посещение встречи @menu * Задачи участника: KSP Participant. * Что нужно принести с собой на встречу: KSP To bring. * Что не нужно приносить с собой: KSP Not to bring. * Почему не нужно брать с собой компьютер: KSP No PC. * Создание собственной пары ключей: KSP Genkey. * Пересылка открытого ключа на сервер ключей: KSP Keyserver. * Создание отзывающего сертификата: KSP Revocation cert. * Подпись других ключей: KSP Keysigning. * Отзыв собственной пары ключей: KSP Revocation. @end menu @node KSP Participant @subsection Задачи участника @itemize @item Создать пару ключей @item Послать открытый ключ на сервер ключей (или координатору) @item Послать координатору информацию для внесения в список @item Лично прийти на встречу @item Проверить информацию в списке @item Проверить информацию о ключах других участников @item Проверить личность участников, чьи ключи вы хотите подписать @item Подписать ключи других участников @item Послать подписанные ключи на сервер ключей (или владельцу ключа) @end itemize @node KSP To bring @subsection Что нужно принести с собой на встречу @itemize @item Необходимо явиться лично @item Два удостоверения личности с фото (паспорт, водительские права, студенческий билет, воинское удостоверение и т.д.) @item ID ключа, тип ключа, отпечаток ключа и его размер или копию списка участников @item Ручку или карандаш @end itemize @node KSP Not to bring @subsection Что не нужно приносить с собой @itemize @item Компьютер @end itemize @node KSP No PC @subsection Почему не нужно брать с собой компьютер На встрече нельзя пользоваться компьютером, поскольку подмена программы или модификация операционной системы позволяют легко нарушить надёжность PGP. Если кто-то приносит с собой портативный компьютер и все используют его для цифровой подписи ключей других участников, никто не может гарантировать, что на компьютере не установлена программа записи нажатых клавиш, изменённая версия GnuPG, изменённая версия ядра Linux или модифицированная клавиатура, что позволит раскрыть закрытые ключи тех, кто пользовался этим компьютером. Если вы используете компьютер на встрече, ваш пароль также могут просто подсмотреть через плечо, GnuPG может быть модифицирована для создания более слабых ключей или даже может быть создан компьютерный вирус, заражающий GnuPG, для дальнейшего раскрытия закрытых ключей. @node KSP Genkey @subsection Создание собственной пары ключей Создать собственную пару ключей очень просто. Нужно всего лишь запустить @code{gpg --gen-key}. Однако я советую также создать отзывающий сертификат для созданного ключа на случай, если доступ к закрытому ключу будет невозможен (например, вы забыли парольную фразу или потеряли закрытый ключ). Процедура создания отзывающего сертификата описана в @ref{KSP Revocation cert, соответствующем разделе} этого документа. Не всем могут быть необходимы описанные здесь действия по повышению безопасности. Скажем, если вы читаете всю почту на домашнем или портативном компьютере, вы можете сохранить ключи на жёстком диске. Возможно, вы также захотите создать ключ без истечения срока действия и использовать его для обычных коммуникаций, а для особо секретных (если у вас есть такие) использовать другой ключ. Повторюсь, что пошаговая инструкция, приведённая здесь, нацелена на обеспечение максимального уровня безопасности. Вам не обязательно полностью следовать ей, можно просто создать пару ключей. С другой стороны, если вы (так же, как и я) очень щепетильно относитесь к вопросам безопасности, следование этим инструкциям ненадолго успокоит вас (и вашу паранойю). Эти пошаговые инструкции написаны с (довольно параноидальной) точки зрения обеспечения максимальной безопасности, что включает в себя: @itemize @item создание ключей максимально возможной длины для усложнения атак перебора @item создание ключей с ограниченным сроком действия в расчёте на возможность радикальных изменений в компьютерных технологиях @item ключи сохраняются на USB устройстве для защиты от похищения в случае кражи компьютера или его взлома через сеть @item создание отзывающего сертификата для возможности отзыва ключа в случае, если он будет утрачен или скомпрометирован @end itemize @enumerate @item Загрузите последнюю версию @url{https://www.gnupg.org/download/index.html, GnuPG с сайта}: @code{gnupg-x.x.x.tar.bz2} Внимание! Убедитесь, что вы используете GnuPG как минимум версии 1.0.6. Все более старые версии GnuPG содержат как минимум одну весьма серьёзную с точки зрения безопасности недоработку. @item Проверьте криптографическую подпись или как минимум контрольную сумму SHA1. @verbatim $ gpg --verify gnupg-x.x.x.tar.bz2.sig gnupg-x.x.x.tar.bz2 $ sha1sum gnupg-x.x.x.tar.bz2 @end verbatim @item Распакуйте архив, настройте параметры сборки, выполните сборку и установите программу. @verbatim $ tar xvzf gnupg-x.x.x.tar.bz2 $ cd gnupg-x.x.x $ ./configure $ make $ su # make install # exit @end verbatim Если компьютером, где вы устанавливаете GnuPG, пользуются и другие люди, имеет смысл установить GnuPG как SUID root -- это позволит GnuPG установить защиту сегментов памяти, где хранится секретная информация, от записи на диск в область подкачки. Если вы решите так поступить, обязательно проверьте подлинность архива с помощью SHA1 или электронной подписи, чтобы быть уверенным, что вы не установите троянскую программу. @item Возьмите USB диск, на котором вы будете хранить ключи, и отформатируйте его. @verbatim # /sbin/mkfs.ext2 /dev/sda1 @end verbatim @item Смонтируйте USB диск и создайте на нём каталог для вашей ключницы: @verbatim # mount /mnt/usbfs # mkdir /mnt/usbfs/.gnupg @end verbatim и (если необходимо, в зависимости от параметров монтирования) @verbatim # chown : /mnt/usbfs/.gnupg @end verbatim @item Создайте символьную ссылку каталога на USB диске в домашний каталог: @verbatim $ ln -s /mnt/floppy/.gnupg .gnupg @end verbatim @item Создайте ключи GnuPG @verbatim $ gpg --gen-key @end verbatim @item Выберите тип создаваемых ключей -- если вы не знаете, что это, выберите ответ по умолчанию. @verbatim Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? @end verbatim @item Установите длину ключа равной 4096 бит. @verbatim RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Requested keysize is 4096 bits @end verbatim @item Выберите срок действия ключа. Разумный срок -- 5 лет. @verbatim Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) 1y Key expires at Fri Nov 5 00:19:43 EST 2014 Is this correct (y/n)? y @end verbatim @item Введите ваше имя и адрес электронной почты. @verbatim Real name: Demo User Email address: demo@@nonexistent.nowhere Comment: You selected this USER-ID: "Demo User " Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O @end verbatim @item Выберите парольную фразу. Парольная фраза является гарантом сохранности ключей, поэтому она должна быть нетривиальной, достаточно длинной. Не забудьте её. Если вы забыли парольную фразу, вы не сможете дешифровать свой закрытый ключ. @item Пошевелите мышкой, нажмите несколько случайных клавиш, запустите перестройку базы locate или find по большому дереву каталогов. Для создания ключей GnuPG требуется некоторое количество случайных данных. Для сбора данных GnuPG читает из @code{/dev/random}; энтропия данных в @code{/dev/random} увеличивается, среди прочего, за счёт прерываний. @item Если это необходимо, измените дополнительные параметры ключа. Например, если вы пользуетесь несколькими адресами электронной почты, вы можете присоединить их к своему ключу. @verbatim $ gpg --list-secret-keys /home/demo/.gnupg/secring.gpg ---------------------------- sec 4096R/C01BAFC3 2000-09-21 Demo User ssb 4096R/7A4087F3 2000-09-21 $ gpg --edit-key C01BAFC3 Command> help [...] Command> adduid [...] Command> save @end verbatim @item Пошлите ваш открытый ключ на сервер ключей: @verbatim $ gpg --keyserver --send-key @end verbatim Вы должны увидеть подобное сообщение: @verbatim gpg: success sending to '' (status=200) @end verbatim @end enumerate @node KSP Keyserver @subsection Пересылка открытого ключа на сервер ключей Необходимо отметить, что некоторые полагают, что сохранение их открытого ключа в секрете повышает безопасность коммуникаций. Это в определённом смысле верно, поскольку сервер ключей может работать неправильно или быть взломан и возвращать по запросу неверные открытые ключи. Также может оказаться, что ключ, хранящийся на сервере, неактуален. Например, ключ владельца мог быть подписан новыми людьми, и эти подписи ещё не отправлены на сервер. Это также верно, поскольку для реализации ряда атак на асимметричную систему шифрования атакующему необходим доступ к открытому ключу. Хотя большинство специалистов полагает, что при достаточно большой длине ключа такого рода атаки скорее всего обречены на провал, поэтому распространение открытого ключа безопасно, факт остаётся фактом -- хранение открытого ключа в секрете усиливает надёжность пары. Наконец, публикация открытого ключа и его подписей позволяет атакующим создать граф коммуникаций и, хотя это не является атакой на PGP, вы вправе желать сохранить свой социальный граф в тайне. Тем не менее я не рекомендую хранить ваш открытый ключ в секрете, поскольку это не даёт возможности другим людям пользоваться PGP при отправлении вам электронной почты. Для того чтобы обезопасить себя от проблем с неправильно работающим сервером ключей, возвращающим неверные открытые ключи, вы можете, например, внести отпечаток ключа в файл .signature или разместить его на своей домашней странице. Для решения проблемы атаки на открытый ключ, если он известен, я бы порекомендовал для очень важных сообщений создавать дополнительные ключи (со сроком действия в несколько часов или дней) и обмениваться ими по защищённому каналу. Итак, если вы не хотите размещать свой открытый ключ на сервере ключей, можете вместо этого послать его координатору встречи, отметив при этом, что вы не хотите, что бы ваш ключ был размещён на сервере. В этом случае координатор может извлечь необходимую информацию и передать ваш ключ другим участникам встречи по защищённому каналу, отметив, что подписанный ключ должен быть передан его владельцу, а не отправлен на сервер ключей. @node KSP Revocation cert @subsection Создание отзывающего сертификата Это необязательный шаг. Создание и хранение отзывающего сертификата позволит вам отозвать свой открытый ключ в любой момент, если вы потеряете доступ к закрытому ключу из-за взлома, кражи, забытой парольной фразы или поломки носителя. Если вы хотите иметь возможность отозвать свой открытый ключ, даже если ваш закрытый ключ станет недоступен, вы должны заранее создать отзывающий сертификат и хранить его в безопасном месте. Сертификат можно также распечатать на бумаге на случай, если носитель данных с электронной копией не будет работать. Если ваш отзывающий сертификат будет похищен, тот, кто его похитил, сможет обеспечить его распространение, тем самым лишая ваш ключ легитимности. Однако похититель не получит доступа к вашему закрытому ключу, даже если он завладел отзывающим сертификатом. Таким образом, он не будет в состоянии подписывать электронные документы от вашего имени, читать зашифрованные для вас сообщения или выдавать себя за вас другим способом. Таким образом, поскольку единственной опасностью, сопряжённой с хранением отзывающего сертификата, может быть потенциальное нарушение действительности пары ключей, имеет смысл создать его заранее. @ref{KSP Revocation, Раздел содержит} дополнительную информацию об отзыве ключей. Команда GnuPG для создания отзывающего сертификата: @verbatim $ gpg --output revcert.asc --gen-revoke @end verbatim @enumerate 16 @item Напишите электронное письмо координатору, уведомите его о том, что вы желаете принять участие во встрече. Пошлите также вывод следующей команды -- он содержит всю необходимую информацию, если ваш ключ уже хранится на сервере ключей. Разумеется, ваше письмо координатору может быть зашифровано. @verbatim $ gpg --fingerprint @end verbatim @item Размонтируйте USB диск и выньте его: @verbatim # umount /mnt/usbfs @end verbatim Вы можете всегда носить USB диск с собой или запирать в сейф, ящик стола и т.п. Крайне не рекомендуется хранить ключи в системе, к которой есть доступ через Интернет. @item Придите на встречу. @end enumerate @node KSP Keysigning @subsection Подпись других ключей @enumerate @item Получите копию ключа. Обычно вы можете получить ключ с сервера ключей. Однако если вы подписываете ключ, который не доступен с сервера, вы можете включить его в вашу ключницу командой @code{gpg --import}. Если вы работаете с сервером, добавьте ключ в вашу ключницу командой @verbatim $ gpg --keyserver --recv-keys @end verbatim Ошибка чтения, скорее всего, означает, что сервер перегружен. Попробуйте ещё раз через несколько минут. @item Проверьте отпечаток ключа. @verbatim $ gpg --fingerprint @end verbatim Вывод команды будет содержать отпечаток только что полученного ключа. Сравните выведенный отпечаток с отпечатком на списке участников. Внимание! Не полагайтесь на отпечаток, который показывает сервер ключей -- возможно, для загрузки вам будет предложен один ключ, а отпечаток показан от другого. @item Подпишите ключ. @verbatim $ gpg --sign-key @end verbatim Если у вас несколько закрытых ключей, вы можете указать, каким из них вы хотите подписать чужой ключ. Это делается так: @verbatim $ gpg --default-key --sign-key @end verbatim Если у вас возникли проблемы с ключами RSA, вероятнее всего, у вас слишком старая версия GnuPG. Версии GnuPG до 1.0.3 не поддерживали RSA. Возможно, вам будет необходимо удалить версию GnuPG, поставляющуюся с дистрибутивом, если вы собираете более новую версию из исходных текстов. Версию GnuPG можно проверить такой командой: @verbatim $ gpg --version @end verbatim @item Пошлите подписанный ключ владельцу или отправьте его на сервер ключей. Если ваш партнёр не хочет, чтобы его ключ находился на сервере ключей, просто перешлите им их ключи назад -- например, по электронной почте с шифрованием. Не следует посылать ключ на сервер без разрешения владельца. Как мы отмечали, распространение открытого ключа незначительно снижает общую безопасность пары, поэтому распространение открытых ключей без разрешения их владельца считается дурным тоном. Однако обычно вы отсылаете ключи на сервер. Это делается так: @verbatim $ gpg --keyserver --send-key @end verbatim Если публикация прошла успешно, вы получите подобное сообщение: @verbatim gpg: success sending to '' (status=200) @end verbatim @end enumerate Поздравьте себя, процедура подписи завершена, ваша подпись включена в ключ вашего партнёра и отношения доверия установлены. @node KSP Revocation @subsection Отзыв собственной пары ключей Если вы подозреваете, что ваш закрытый ключ скомпрометирован, вы должны немедленно отозвать свой открытый ключ. Отзыв ключа состоит в присоединении т.н. подписи отзыва к открытому ключу. Отзыв ключа означает, что ключ больше не действителен и не должен применяться. Отзыв ключа не может быть отменен. Поскольку ваш ключ передан многим людям, а не помещён в одном центральном хранилище, вы должны позаботиться о распространении отзывающего сертификата таким же образом, как и вашего открытого ключа. Это обычно означает, что отзывающий сертификат должен быть послан на сервер ключей. Даже если вы не посылали свой открытый ключ на сервер ключей из соображений секретности, посылка отзывающего сертификата может, тем не менее, иметь смысл. В этом случае опасность атаки на открытый ключ может быть менее значимой, чем преимущества быстрого оповещения об отзыве ключа. Для создания отзывающего сертификата используйте следующую команду: @verbatim $ gpg --output revcert.asc --gen-revoke @end verbatim Если вы знаете, как и когда произошло нарушение безопасности вашего закрытого ключа, вы можете создать отзывающий сертификат с указанием причины отзыва, что допускается стандартом OpenPGP. В целом более точное указание причины отзыва ключа может оказаться полезнее, чем отзывающий сертификат без указания причины, который создаётся во время создания ключа.