2 @section Посещение встречи
5 * Задачи участника: KSP Participant.
6 * Что нужно принести с собой на встречу: KSP To bring.
7 * Что не нужно приносить с собой: KSP Not to bring.
8 * Почему не нужно брать с собой компьютер: KSP No PC.
9 * Создание собственной пары ключей: KSP Genkey.
10 * Пересылка открытого ключа на сервер ключей: KSP Keyserver.
11 * Создание отзывающего сертификата: KSP Revocation cert.
12 * Подпись других ключей: KSP Keysigning.
13 * Отзыв собственной пары ключей: KSP Revocation.
17 @subsection Задачи участника
20 @item Создать пару ключей
21 @item Послать открытый ключ на сервер ключей (или координатору)
22 @item Послать координатору информацию для внесения в список
23 @item Лично прийти на встречу
24 @item Проверить информацию в списке
25 @item Проверить информацию о ключах других участников
26 @item Проверить личность участников, чьи ключи вы хотите подписать
27 @item Подписать ключи других участников
28 @item Послать подписанные ключи на сервер ключей (или владельцу ключа)
32 @subsection Что нужно принести с собой на встречу
35 @item Необходимо явиться лично
36 @item Два удостоверения личности с фото (паспорт, водительские права,
37 студенческий билет, воинское удостоверение и т.д.)
38 @item ID ключа, тип ключа, отпечаток ключа и его размер или копию списка
40 @item Ручку или карандаш
43 @node KSP Not to bring
44 @subsection Что не нужно приносить с собой
51 @subsection Почему не нужно брать с собой компьютер
53 На встрече нельзя пользоваться компьютером, поскольку подмена программы
54 или модификация операционной системы позволяют легко нарушить надёжность
57 Если кто-то приносит с собой портативный компьютер и все используют его
58 для цифровой подписи ключей других участников, никто не может
59 гарантировать, что на компьютере не установлена программа записи нажатых
60 клавиш, изменённая версия GnuPG, изменённая версия ядра Linux или
61 модифицированная клавиатура, что позволит раскрыть закрытые ключи тех,
62 кто пользовался этим компьютером.
64 Если вы используете компьютер на встрече, ваш пароль также могут просто
65 подсмотреть через плечо, GnuPG может быть модифицирована для создания
66 более слабых ключей или даже может быть создан компьютерный вирус,
67 заражающий GnuPG, для дальнейшего раскрытия закрытых ключей.
70 @subsection Создание собственной пары ключей
72 Создать собственную пару ключей очень просто. Нужно всего лишь запустить
73 @code{gpg --gen-key}. Однако я советую также создать отзывающий
74 сертификат для созданного ключа на случай, если доступ к закрытому ключу
75 будет невозможен (например, вы забыли парольную фразу или потеряли
76 закрытый ключ). Процедура создания отзывающего сертификата описана в
77 @ref{KSP Revocation cert, соответствующем разделе}
80 Не всем могут быть необходимы описанные здесь действия по повышению
81 безопасности. Скажем, если вы читаете всю почту на домашнем или
82 портативном компьютере, вы можете сохранить ключи на жёстком диске.
83 Возможно, вы также захотите создать ключ без истечения срока действия и
84 использовать его для обычных коммуникаций, а для особо секретных (если у
85 вас есть такие) использовать другой ключ. Повторюсь, что пошаговая
86 инструкция, приведённая здесь, нацелена на обеспечение максимального
87 уровня безопасности. Вам не обязательно полностью следовать ей, можно
88 просто создать пару ключей. С другой стороны, если вы (так же, как и я)
89 очень щепетильно относитесь к вопросам безопасности, следование этим
90 инструкциям ненадолго успокоит вас (и вашу паранойю).
92 Эти пошаговые инструкции написаны с (довольно параноидальной) точки
93 зрения обеспечения максимальной безопасности, что включает в себя:
96 @item создание ключей максимально возможной длины для усложнения атак
98 @item создание ключей с ограниченным сроком действия в расчёте на
99 возможность радикальных изменений в компьютерных технологиях
100 @item ключи сохраняются на USB устройстве для защиты от похищения в случае
101 кражи компьютера или его взлома через сеть
102 @item создание отзывающего сертификата для возможности отзыва ключа
103 в случае, если он будет утрачен или скомпрометирован
109 Загрузите последнюю версию
110 @url{https://www.gnupg.org/download/index.html, GnuPG с сайта}:
111 @code{gnupg-x.x.x.tar.bz2}
113 Внимание! Убедитесь, что вы используете GnuPG как минимум версии 1.0.6.
114 Все более старые версии GnuPG содержат как минимум одну весьма
115 серьёзную с точки зрения безопасности недоработку.
118 Проверьте криптографическую подпись или как минимум контрольную сумму SHA1.
121 $ gpg --verify gnupg-x.x.x.tar.bz2.sig gnupg-x.x.x.tar.bz2
122 $ sha1sum gnupg-x.x.x.tar.bz2
126 Распакуйте архив, настройте параметры сборки, выполните сборку и
127 установите программу.
130 $ tar xvzf gnupg-x.x.x.tar.bz2
139 Если компьютером, где вы устанавливаете GnuPG, пользуются и другие люди,
140 имеет смысл установить GnuPG как SUID root -- это позволит GnuPG
141 установить защиту сегментов памяти, где хранится секретная информация,
142 от записи на диск в область подкачки. Если вы решите так поступить,
143 обязательно проверьте подлинность архива с помощью SHA1 или электронной
144 подписи, чтобы быть уверенным, что вы не установите троянскую программу.
147 Возьмите USB диск, на котором вы будете хранить ключи, и отформатируйте
151 # /sbin/mkfs.ext2 /dev/sda1
155 Смонтируйте USB диск и создайте на нём каталог для вашей ключницы:
159 # mkdir /mnt/usbfs/.gnupg
162 и (если необходимо, в зависимости от параметров монтирования)
165 # chown <your_uid>:<your_gid> /mnt/usbfs/.gnupg
169 Создайте символьную ссылку каталога на USB диске в домашний каталог:
172 $ ln -s /mnt/floppy/.gnupg .gnupg
175 @item Создайте ключи GnuPG
182 Выберите тип создаваемых ключей -- если вы не знаете, что это, выберите
186 Please select what kind of key you want:
188 (1) RSA and RSA (default)
192 Your selection? <return>
196 Установите длину ключа равной 4096 бит.
199 RSA keys may be between 1024 and 4096 bits long.
200 What keysize do you want? (2048) 4096<return>
201 Requested keysize is 4096 bits
205 Выберите срок действия ключа. Разумный срок -- 5 лет.
208 Requested keysize is 4096 bits
209 Please specify how long the key should be valid.
210 0 = key does not expire
211 <n> = key expires in n days
212 <n>w = key expires in n weeks
213 <n>m = key expires in n months
214 <n>y = key expires in n years
215 Key is valid for? (0) 1y<return>
216 Key expires at Fri Nov 5 00:19:43 EST 2014
217 Is this correct (y/n)? y<return>
221 Введите ваше имя и адрес электронной почты.
224 Real name: Demo User<return>
225 Email address: demo@@nonexistent.nowhere<return>
227 You selected this USER-ID:
228 "Demo User <demo@@nonexistent.nowhere>"
230 Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O<return>
234 Выберите парольную фразу. Парольная фраза является гарантом сохранности
235 ключей, поэтому она должна быть нетривиальной, достаточно длинной. Не
236 забудьте её. Если вы забыли парольную фразу, вы не сможете дешифровать
240 Пошевелите мышкой, нажмите несколько случайных клавиш, запустите
241 перестройку базы locate или find по большому дереву каталогов. Для
242 создания ключей GnuPG требуется некоторое количество случайных данных.
243 Для сбора данных GnuPG читает из @code{/dev/random}; энтропия данных в
244 @code{/dev/random} увеличивается, среди прочего, за счёт прерываний.
247 Если это необходимо, измените дополнительные параметры ключа. Например,
248 если вы пользуетесь несколькими адресами электронной почты, вы можете
249 присоединить их к своему ключу.
252 $ gpg --list-secret-keys
254 /home/demo/.gnupg/secring.gpg
255 ----------------------------
256 sec 4096R/C01BAFC3 2000-09-21 Demo User <demo@@nonexistent.nowhere>
257 ssb 4096R/7A4087F3 2000-09-21
258 $ gpg --edit-key C01BAFC3
266 @item Пошлите ваш открытый ключ на сервер ключей:
269 $ gpg --keyserver <keyserver> --send-key <Your_Key_ID>
272 Вы должны увидеть подобное сообщение:
275 gpg: success sending to '<keyserver>' (status=200)
281 @subsection Пересылка открытого ключа на сервер ключей
283 Необходимо отметить, что некоторые полагают, что сохранение их открытого
284 ключа в секрете повышает безопасность коммуникаций. Это в определённом
285 смысле верно, поскольку сервер ключей может работать неправильно или
286 быть взломан и возвращать по запросу неверные открытые ключи. Также
287 может оказаться, что ключ, хранящийся на сервере, неактуален. Например,
288 ключ владельца мог быть подписан новыми людьми, и эти подписи ещё не
289 отправлены на сервер. Это также верно, поскольку для реализации ряда
290 атак на асимметричную систему шифрования атакующему необходим доступ к
291 открытому ключу. Хотя большинство специалистов полагает, что при
292 достаточно большой длине ключа такого рода атаки скорее всего обречены
293 на провал, поэтому распространение открытого ключа безопасно, факт
294 остаётся фактом -- хранение открытого ключа в секрете усиливает
295 надёжность пары. Наконец, публикация открытого ключа и его подписей
296 позволяет атакующим создать граф коммуникаций и, хотя это не является
297 атакой на PGP, вы вправе желать сохранить свой социальный граф в тайне.
299 Тем не менее я не рекомендую хранить ваш открытый ключ в секрете,
300 поскольку это не даёт возможности другим людям пользоваться PGP при
301 отправлении вам электронной почты. Для того чтобы обезопасить себя от
302 проблем с неправильно работающим сервером ключей, возвращающим неверные
303 открытые ключи, вы можете, например, внести отпечаток ключа в файл
304 .signature или разместить его на своей домашней странице. Для решения
305 проблемы атаки на открытый ключ, если он известен, я бы порекомендовал
306 для очень важных сообщений создавать дополнительные ключи (со сроком
307 действия в несколько часов или дней) и обмениваться ими по защищённому
310 Итак, если вы не хотите размещать свой открытый ключ на сервере ключей,
311 можете вместо этого послать его координатору встречи,
312 отметив при этом, что вы не хотите, что бы ваш ключ был размещён на
313 сервере. В этом случае координатор может извлечь необходимую информацию
314 и передать ваш ключ другим участникам встречи по защищённому каналу,
315 отметив, что подписанный ключ должен быть передан его владельцу, а не
316 отправлен на сервер ключей.
318 @node KSP Revocation cert
319 @subsection Создание отзывающего сертификата
321 Это необязательный шаг.
323 Создание и хранение отзывающего сертификата позволит вам отозвать свой
324 открытый ключ в любой момент, если вы потеряете доступ к закрытому ключу
325 из-за взлома, кражи, забытой парольной фразы или поломки носителя. Если
326 вы хотите иметь возможность отозвать свой открытый ключ, даже если ваш
327 закрытый ключ станет недоступен, вы должны заранее создать отзывающий
328 сертификат и хранить его в безопасном месте. Сертификат можно также
329 распечатать на бумаге на случай, если носитель данных с электронной
330 копией не будет работать.
332 Если ваш отзывающий сертификат будет похищен, тот, кто его похитил, сможет
333 обеспечить его распространение, тем самым лишая ваш ключ легитимности.
334 Однако похититель не получит доступа к вашему закрытому ключу, даже если
335 он завладел отзывающим сертификатом. Таким образом, он не будет в
336 состоянии подписывать электронные документы от вашего имени, читать
337 зашифрованные для вас сообщения или выдавать себя за вас другим
338 способом. Таким образом, поскольку единственной опасностью,
339 сопряжённой с хранением отзывающего сертификата, может быть
340 потенциальное нарушение действительности пары ключей, имеет смысл
343 @ref{KSP Revocation, Раздел содержит} дополнительную информацию об
346 Команда GnuPG для создания отзывающего сертификата:
349 $ gpg --output revcert.asc --gen-revoke <key_id>
355 Напишите электронное письмо координатору, уведомите его о том, что вы
356 желаете принять участие во встрече. Пошлите также вывод следующей
357 команды -- он содержит всю необходимую информацию, если ваш ключ уже
358 хранится на сервере ключей. Разумеется, ваше письмо координатору может
362 $ gpg --fingerprint <Your_Key_ID>
366 Размонтируйте USB диск и выньте его:
372 Вы можете всегда носить USB диск с собой или запирать в сейф, ящик
373 стола и т.п. Крайне не рекомендуется хранить ключи в системе, к которой
374 есть доступ через Интернет.
376 @item Придите на встречу.
381 @subsection Подпись других ключей
385 @item Получите копию ключа.
387 Обычно вы можете получить ключ с сервера ключей. Однако если вы
388 подписываете ключ, который не доступен с сервера, вы можете включить его
389 в вашу ключницу командой @code{gpg --import}. Если вы работаете с
390 сервером, добавьте ключ в вашу ключницу командой
393 $ gpg --keyserver <keyserver> --recv-keys <Key_ID>
396 Ошибка чтения, скорее всего, означает, что сервер перегружен. Попробуйте
397 ещё раз через несколько минут.
399 @item Проверьте отпечаток ключа.
402 $ gpg --fingerprint <Key_ID>
405 Вывод команды будет содержать отпечаток только что полученного ключа.
406 Сравните выведенный отпечаток с отпечатком на списке участников.
408 Внимание! Не полагайтесь на отпечаток, который показывает сервер ключей
409 -- возможно, для загрузки вам будет предложен один ключ, а отпечаток
412 @item Подпишите ключ.
415 $ gpg --sign-key <Key_ID>
418 Если у вас несколько закрытых ключей, вы можете указать, каким из них вы
419 хотите подписать чужой ключ. Это делается так:
422 $ gpg --default-key <Key_to_use> --sign-key <Key_ID>
425 Если у вас возникли проблемы с ключами RSA, вероятнее всего, у вас
426 слишком старая версия GnuPG. Версии GnuPG до 1.0.3 не поддерживали RSA.
427 Возможно, вам будет необходимо удалить версию GnuPG, поставляющуюся с
428 дистрибутивом, если вы собираете более новую версию из исходных текстов.
430 Версию GnuPG можно проверить такой командой:
436 @item Пошлите подписанный ключ владельцу или отправьте его на сервер ключей.
438 Если ваш партнёр не хочет, чтобы его ключ находился на сервере ключей,
439 просто перешлите им их ключи назад -- например, по электронной почте с
440 шифрованием. Не следует посылать ключ на сервер без разрешения
441 владельца. Как мы отмечали, распространение открытого ключа
442 незначительно снижает общую безопасность пары, поэтому распространение
443 открытых ключей без разрешения их владельца считается дурным тоном.
445 Однако обычно вы отсылаете ключи на сервер. Это делается так:
448 $ gpg --keyserver <keyserver> --send-key <Key_ID>
451 Если публикация прошла успешно, вы получите подобное сообщение:
454 gpg: success sending to '<keyserver>' (status=200)
459 Поздравьте себя, процедура подписи завершена, ваша подпись включена в
460 ключ вашего партнёра и отношения доверия установлены.
463 @subsection Отзыв собственной пары ключей
465 Если вы подозреваете, что ваш закрытый ключ скомпрометирован,
466 вы должны немедленно отозвать свой открытый ключ. Отзыв ключа
467 состоит в присоединении т.н. подписи отзыва к открытому ключу. Отзыв
468 ключа означает, что ключ больше не действителен и не должен
469 применяться. Отзыв ключа не может быть отменен.
471 Поскольку ваш ключ передан многим людям, а не помещён в одном центральном
472 хранилище, вы должны позаботиться о распространении отзывающего
473 сертификата таким же образом, как и вашего открытого ключа. Это обычно
474 означает, что отзывающий сертификат должен быть послан на сервер
475 ключей. Даже если вы не посылали свой открытый ключ на сервер ключей из
476 соображений секретности, посылка отзывающего сертификата может, тем не
477 менее, иметь смысл. В этом случае опасность атаки на открытый ключ может
478 быть менее значимой, чем преимущества быстрого оповещения об отзыве
481 Для создания отзывающего сертификата используйте следующую команду:
484 $ gpg --output revcert.asc --gen-revoke <key_id>
487 Если вы знаете, как и когда произошло нарушение безопасности вашего
488 закрытого ключа, вы можете создать отзывающий сертификат с указанием
489 причины отзыва, что допускается стандартом OpenPGP. В целом более
490 точное указание причины отзыва ключа может оказаться полезнее, чем
491 отзывающий сертификат без указания причины, который создаётся во время