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