]> Cypherpunks.ru repositories - cypherpunks-www.git/blob - ksp/attending.texi
Перенести русскоязычный документ о PGP keysigning party
[cypherpunks-www.git] / ksp / attending.texi
1 @node KSP attending
2 @section Посещение встречи
3
4 @strong{Задачи участника}
5
6 @itemize
7 @item Создать пару ключей
8 @item Послать открытый ключ на сервер ключей (или координатору)
9 @item Послать координатору информацию для внесения в список
10 @item Лично прийти на встречу
11 @item Проверить информацию в списке
12 @item Проверить информацию о ключах других участников
13 @item Проверить личность участников, чьи ключи вы хотите подписать
14 @item Подписать ключи других участников
15 @item Послать подписанные ключи на сервер ключей (или владельцу ключа)
16 @end itemize
17
18 @strong{Что нужно принести с собой на встречу}
19
20 @itemize
21 @item Необходимо явиться лично
22 @item Два удостоверения личности с фото (паспорт, водительские права,
23 студенческий билет, воинское удостоверение и т.д.)
24 @item ID ключа, тип ключа, отпечаток ключа и его размер или копию списка
25 участников
26 @item Ручку или карандаш
27 @end itemize
28
29 @strong{Что не нужно приносить с собой}
30
31 @itemize
32 @item Компьютер
33 @end itemize
34
35 @strong{Почему не нужно брать с собой компьютер}
36
37 На встрече нельзя пользоваться компьютером, поскольку подмена программы
38 или модификация операционной системы позволяют легко нарушить надёжность
39 PGP.
40
41 Если кто-то приносит с собой портативный компьютер и все используют его
42 для цифровой подписи ключей других участников, никто не может
43 гарантировать, что на компьютере не установлена программа записи нажатых
44 клавиш, изменённая версия GnuPG, изменённая версия ядра Linux или
45 модифицированная клавиатура, что позволит раскрыть закрытые ключи тех,
46 кто пользовался этим компьютером.
47
48 Если вы используете компьютер на встрече, ваш пароль также могут просто
49 подсмотреть через плечо, GnuPG может быть модифицирована для создания
50 более слабых ключей или даже может быть создан компьютерный вирус,
51 заражающий GnuPG, для дальнейшего раскрытия закрытых ключей.
52
53 @strong{Создание собственной пары ключей}
54
55 Создать собственную пару ключей очень просто. Нужно всего лишь запустить
56 @code{gpg --gen-key}. Однако я советую также создать отзывающий сертификат для
57 созданного ключа на случай, если доступ к закрытому ключу будет
58 невозможен (например, вы забыли парольную фразу или потеряли закрытый
59 ключ). Процедура создания отзывающего сертификата описана в
60 @ref{KSP revcert, соответствующем разделе} этого документа.
61
62 Не всем могут быть необходимы описанные здесь действия по повышению
63 безопасности. Скажем, если вы читаете всю почту на домашнем или
64 портативном компьютере, вы можете сохранить ключи на жёстком диске.
65 Возможно, вы также захотите создать ключ без истечения срока действия и
66 использовать его для обычных коммуникаций, а для особо секретных (если у
67 вас есть такие) использовать другой ключ. Повторюсь, что пошаговая
68 инструкция, приведённая здесь, нацелена на обеспечение максимального
69 уровня безопасности. Вам не обязательно полностью следовать ей, можно
70 просто создать пару ключей. С другой стороны, если вы (так же, как и я)
71 очень щепетильно относитесь к вопросам безопасности, следование этим
72 инструкциям ненадолго успокоит вас (и вашу паранойю).
73
74 Эти пошаговые инструкции написаны с (довольно параноидальной) точки
75 зрения обеспечения максимальной безопасности, что включает в себя:
76
77 @itemize
78 @item создание ключей максимально возможной длины для усложнения атак
79     перебора
80 @item создание ключей с ограниченным сроком действия в расчёте на
81   возможность радикальных изменений в компьютерных технологиях
82 @item ключи сохраняются на USB устройстве для защиты от похищения в случае
83   кражи компьютера или его взлома через сеть
84 @item создание отзывающего сертификата для возможности отзыва ключа
85   в случае, если он будет утрачен или скомпрометирован
86 @end itemize
87
88 @enumerate
89
90 @item
91 Загрузите последнюю версию
92 @url{https://www.gnupg.org/download/index.html, GnuPG с сайта}:
93 @code{gnupg-x.x.x.tar.bz2}
94
95 Внимание! Убедитесь, что вы используете GnuPG как минимум версии 1.0.6.
96 Все более старые версии GnuPG содержат как минимум одну весьма
97 серьёзную с точки зрения безопасности недоработку.
98
99 @item
100 Проверьте криптографическую подпись или как минимум контрольную сумму SHA1.
101
102 @verbatim
103 $ gpg --verify gnupg-x.x.x.tar.bz2.sig gnupg-x.x.x.tar.bz2
104 $ sha1sum gnupg-x.x.x.tar.bz2
105 @end verbatim
106
107 @item
108 Распакуйте архив, настройте параметры сборки, выполните сборку и
109 установите программу.
110
111 @verbatim
112 $ tar xvzf gnupg-x.x.x.tar.bz2
113 $ cd gnupg-x.x.x
114 $ ./configure
115 $ make
116 $ su
117 # make install
118 # exit
119 @end verbatim
120
121 Если компьютером, где вы устанавливаете GnuPG, пользуются и другие люди,
122 имеет смысл установить GnuPG как SUID root -- это позволит GnuPG
123 установить защиту сегментов памяти, где хранится секретная информация,
124 от записи на диск в область подкачки. Если вы решите так поступить,
125 обязательно проверьте подлинность архива с помощью SHA1 или электронной
126 подписи, чтобы быть уверенным, что вы не установите троянскую программу.
127
128 @item
129 Возьмите USB диск, на котором вы будете хранить ключи, и отформатируйте
130 его.
131
132 @verbatim
133 # /sbin/mkfs.ext2 /dev/sda1
134 @end verbatim
135
136 @item
137 Смонтируйте USB диск и создайте на нём каталог для вашей ключницы:
138
139 @verbatim
140 # mount /mnt/usbfs
141 # mkdir /mnt/usbfs/.gnupg
142 @end verbatim
143
144 и (если необходимо, в зависимости от параметров монтирования)
145
146 @verbatim
147 # chown <your_uid>:<your_gid> /mnt/usbfs/.gnupg
148 @end verbatim
149
150 @item
151 Создайте символьную ссылку каталога на USB диске в домашний каталог:
152
153 @verbatim
154 $ ln -s /mnt/floppy/.gnupg .gnupg
155 @end verbatim
156
157 @item Создайте ключи GnuPG
158
159 @verbatim
160 $ gpg --gen-key
161 @end verbatim
162
163 @item
164 Выберите тип создаваемых ключей -- если вы не знаете, что это, выберите
165 ответ по умолчанию.
166
167 @verbatim
168 Please select what kind of key you want:
169
170    (1) RSA and RSA (default)
171    (2) DSA and Elgamal
172    (3) DSA (sign only)
173    (4) RSA (sign only)
174 Your selection? <return>
175 @end verbatim
176
177 @item
178 Установите длину ключа равной 4096 бит.
179
180 @verbatim
181 RSA keys may be between 1024 and 4096 bits long.
182 What keysize do you want? (2048) 4096<return>
183 Requested keysize is 4096 bits
184 @end verbatim
185
186 @item
187 Выберите срок действия ключа. Разумный срок -- 5 лет.
188
189 @verbatim
190 Requested keysize is 4096 bits
191 Please specify how long the key should be valid.
192          0 = key does not expire
193       <n>  = key expires in n days
194       <n>w = key expires in n weeks
195       <n>m = key expires in n months
196       <n>y = key expires in n years
197 Key is valid for? (0) 1y<return>
198 Key expires at Fri Nov  5 00:19:43 EST 2014
199 Is this correct (y/n)? y<return>
200 @end verbatim
201
202 @item
203 Введите ваше имя и адрес электронной почты.
204
205 @verbatim
206 Real name: Demo User<return>
207 Email address: demo@@nonexistent.nowhere<return>
208 Comment:
209 You selected this USER-ID:
210 "Demo User <demo@@nonexistent.nowhere>"
211
212 Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O<return>
213 @end verbatim
214
215 @item
216 Выберите парольную фразу. Парольная фраза является гарантом сохранности
217 ключей, поэтому она должна быть нетривиальной, достаточно длинной. Не
218 забудьте её. Если вы забыли парольную фразу, вы не сможете дешифровать
219 свой закрытый ключ.
220
221 @item
222 Пошевелите мышкой, нажмите несколько случайных клавиш, запустите
223 перестройку базы locate или find по большому дереву каталогов. Для
224 создания ключей GnuPG требуется некоторое количество случайных данных.
225 Для сбора данных GnuPG читает из @code{/dev/random}; энтропия данных в
226 @code{/dev/random} увеличивается, среди прочего, за счёт прерываний.
227
228 @item
229 Если это необходимо, измените дополнительные параметры ключа. Например,
230 если вы пользуетесь несколькими адресами электронной почты, вы можете
231 присоединить их к своему ключу.
232
233 @verbatim
234 $ gpg --list-secret-keys
235
236 /home/demo/.gnupg/secring.gpg
237 ----------------------------
238 sec 4096R/C01BAFC3 2000-09-21 Demo User <demo@@nonexistent.nowhere>
239 ssb 4096R/7A4087F3 2000-09-21
240 $ gpg --edit-key C01BAFC3
241 Command> help
242 [...]
243 Command> adduid
244 [...]
245 Command> save
246 @end verbatim
247
248 @item Пошлите ваш открытый ключ на сервер ключей:
249
250 @verbatim
251 $ gpg --keyserver <keyserver> --send-key <Your_Key_ID>
252 @end verbatim
253
254 Вы должны увидеть подобное сообщение:
255
256 @verbatim
257     gpg: success sending to '<keyserver>' (status=200)
258 @end verbatim
259
260 @end enumerate
261
262 @strong{Пересылка открытого ключа на сервер ключей}
263
264 Необходимо отметить, что некоторые полагают, что сохранение их открытого
265 ключа в секрете повышает безопасность коммуникаций. Это в определённом
266 смысле верно, поскольку сервер ключей может работать неправильно или
267 быть взломан и возвращать по запросу неверные открытые ключи. Также
268 может оказаться, что ключ, хранящийся на сервере, неактуален. Например,
269 ключ владельца мог быть подписан новыми людьми, и эти подписи ещё не
270 отправлены на сервер. Это также верно, поскольку для реализации ряда
271 атак на асимметричную систему шифрования атакующему необходим доступ к
272 открытому ключу. Хотя большинство специалистов полагает, что при
273 достаточно большой длине ключа такого рода атаки скорее всего обречены
274 на провал, поэтому распространение открытого ключа безопасно, факт
275 остаётся фактом -- хранение открытого ключа в секрете усиливает
276 надёжность пары. Наконец, публикация открытого ключа и его подписей
277 позволяет атакующим создать граф коммуникаций и, хотя это не является
278 атакой на PGP, вы вправе желать сохранить свой социальный граф в тайне.
279
280 Тем не менее я не рекомендую хранить ваш открытый ключ в секрете,
281 поскольку это не даёт возможности другим людям пользоваться PGP при
282 отправлении вам электронной почты. Для того чтобы обезопасить себя от
283 проблем с неправильно работающим сервером ключей, возвращающим неверные
284 открытые ключи, вы можете, например, внести отпечаток ключа в файл
285 .signature или разместить его на своей домашней странице. Для решения
286 проблемы атаки на открытый ключ, если он известен, я бы порекомендовал
287 для очень важных сообщений создавать дополнительные ключи (со сроком
288 действия в несколько часов или дней) и обмениваться ими по защищённому
289 каналу.
290
291 Итак, если вы не хотите размещать свой открытый ключ на сервере ключей,
292 можете вместо этого послать его координатору встречи,
293 отметив при этом, что вы не хотите, что бы ваш ключ был размещён на
294 сервере. В этом случае координатор может извлечь необходимую информацию
295 и передать ваш ключ другим участникам встречи по защищённому каналу,
296 отметив, что подписанный ключ должен быть передан его владельцу, а не
297 отправлен на сервер ключей.
298
299 @anchor{KSP revcert}
300 @strong{Создание отзывающего сертификата}
301
302 Это необязательный шаг.
303
304 Создание и хранение отзывающего сертификата позволит вам отозвать свой
305 открытый ключ в любой момент, если вы потеряете доступ к закрытому ключу
306 из-за взлома, кражи, забытой парольной фразы или поломки носителя. Если
307 вы хотите иметь возможность отозвать свой открытый ключ, даже если ваш
308 закрытый ключ станет недоступен, вы должны заранее создать отзывающий
309 сертификат и хранить его в безопасном месте. Сертификат можно также
310 распечатать на бумаге на случай, если носитель данных с электронной
311 копией не будет работать.
312
313 Если ваш отзывающий сертификат будет похищен, тот, кто его похитил, сможет
314 обеспечить его распространение, тем самым лишая ваш ключ легитимности.
315 Однако похититель не получит доступа к вашему закрытому ключу, даже если
316 он завладел отзывающим сертификатом. Таким образом, он не будет в
317 состоянии подписывать электронные документы от вашего имени, читать
318 зашифрованные для вас сообщения или выдавать себя за вас другим
319 способом. Таким образом, поскольку единственной опасностью,
320 сопряжённой с хранением отзывающего сертификата, может быть
321 потенциальное нарушение действительности пары ключей, имеет смысл
322 создать его заранее.
323
324 @ref{KSP own keypair revocation, Раздел содержит} дополнительную
325 информацию об отзыве ключей.
326
327 Команда GnuPG для создания отзывающего сертификата:
328
329 @verbatim
330 $ gpg --output revcert.asc --gen-revoke <key_id>
331 @end verbatim
332
333 @enumerate 16
334
335 @item
336 Напишите электронное письмо координатору, уведомите его о том, что вы
337 желаете принять участие во встрече. Пошлите также вывод следующей
338 команды -- он содержит всю необходимую информацию, если ваш ключ уже
339 хранится на сервере ключей. Разумеется, ваше письмо координатору может
340 быть зашифровано.
341
342 @verbatim
343 $ gpg --fingerprint <Your_Key_ID>
344 @end verbatim
345
346 @item
347 Размонтируйте USB диск и выньте его:
348
349 @verbatim
350 # umount /mnt/usbfs
351 @end verbatim
352
353 Вы можете всегда носить USB диск с собой или запирать в сейф, ящик
354 стола и т.п. Крайне не рекомендуется хранить ключи в системе, к которой
355 есть доступ через Интернет.
356
357 @item Придите на встречу.
358
359 @end enumerate
360
361 @strong{Подпись других ключей}
362
363 @enumerate
364
365 @item Получите копию ключа.
366
367 Обычно вы можете получить ключ с сервера ключей. Однако если вы
368 подписываете ключ, который не доступен с сервера, вы можете включить его
369 в вашу ключницу командой @code{gpg --import}. Если вы работаете с
370 сервером, добавьте ключ в вашу ключницу командой
371
372 @verbatim
373 $ gpg --keyserver <keyserver> --recv-keys <Key_ID>
374 @end verbatim
375
376 Ошибка чтения, скорее всего, означает, что сервер перегружен. Попробуйте
377 ещё раз через несколько минут.
378
379 @item Проверьте отпечаток ключа.
380
381 @verbatim
382 $ gpg --fingerprint <Key_ID>
383 @end verbatim
384
385 Вывод команды будет содержать отпечаток только что полученного ключа.
386 Сравните выведенный отпечаток с отпечатком на списке участников.
387
388 Внимание! Не полагайтесь на отпечаток, который показывает сервер ключей
389 -- возможно, для загрузки вам будет предложен один ключ, а отпечаток
390 показан от другого.
391
392 @item Подпишите ключ.
393
394 @verbatim
395 $ gpg --sign-key <Key_ID>
396 @end verbatim
397
398 Если у вас несколько закрытых ключей, вы можете указать, каким из них вы
399 хотите подписать чужой ключ. Это делается так:
400
401 @verbatim
402 $ gpg --default-key <Key_to_use> --sign-key <Key_ID>
403 @end verbatim
404
405 Если у вас возникли проблемы с ключами RSA, вероятнее всего, у вас
406 слишком старая версия GnuPG. Версии GnuPG до 1.0.3 не поддерживали RSA.
407 Возможно, вам будет необходимо удалить версию GnuPG, поставляющуюся с
408 дистрибутивом, если вы собираете более новую версию из исходных текстов.
409
410 Версию GnuPG можно проверить такой командой:
411
412 @verbatim
413 $ gpg --version
414 @end verbatim
415
416 @item Пошлите подписанный ключ владельцу или отправьте его на сервер ключей.
417
418 Если ваш партнёр не хочет, чтобы его ключ находился на сервере ключей,
419 просто перешлите им их ключи назад -- например, по электронной почте с
420 шифрованием. Не следует посылать ключ на сервер без разрешения
421 владельца. Как мы отмечали, распространение открытого ключа
422 незначительно снижает общую безопасность пары, поэтому распространение
423 открытых ключей без разрешения их владельца считается дурным тоном.
424
425 Однако обычно вы отсылаете ключи на сервер. Это делается так:
426
427 @verbatim
428 $ gpg --keyserver <keyserver> --send-key <Key_ID>
429 @end verbatim
430
431 Если публикация прошла успешно, вы получите подобное сообщение:
432
433 @verbatim
434 gpg: success sending to '<keyserver>' (status=200)
435 @end verbatim
436
437 @end enumerate
438
439 Поздравьте себя, процедура подписи завершена, ваша подпись включена в
440 ключ вашего партнёра и отношения доверия установлены.
441
442 @anchor{KSP own keypair revocation}
443 @strong{Отзыв собственной пары ключей}
444
445 Если вы подозреваете, что ваш закрытый ключ скомпрометирован,
446 вы должны немедленно отозвать свой открытый ключ. Отзыв ключа
447 состоит в присоединении т.н. подписи отзыва к открытому ключу. Отзыв
448 ключа означает, что ключ больше не действителен и не должен
449 применяться. Отзыв ключа не может быть отменен.
450
451 Поскольку ваш ключ передан многим людям, а не помещён в одном центральном
452 хранилище, вы должны позаботиться о распространении отзывающего
453 сертификата таким же образом, как и вашего открытого ключа. Это обычно
454 означает, что отзывающий сертификат должен быть послан на сервер
455 ключей. Даже если вы не посылали свой открытый ключ на сервер ключей из
456 соображений секретности, посылка отзывающего сертификата может, тем не
457 менее, иметь смысл. В этом случае опасность атаки на открытый ключ может
458 быть менее значимой, чем преимущества быстрого оповещения об отзыве
459 ключа.
460
461 Для создания отзывающего сертификата используйте следующую команду:
462
463 @verbatim
464 $ gpg --output revcert.asc --gen-revoke <key_id>
465 @end verbatim
466
467 Если вы знаете, как и когда произошло нарушение безопасности вашего
468 закрытого ключа, вы можете создать отзывающий сертификат с указанием
469 причины отзыва, что допускается стандартом OpenPGP. В целом более
470 точное указание причины отзыва ключа может оказаться полезнее, чем
471 отзывающий сертификат без указания причины, который создаётся во время
472 создания ключа.