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