Глава 1. Быстрый старт

$Id: c1.xml 8 2005-10-25 22:48:05Z zwon $

Содержание

Генерация новой пары ключей
Создание отзывающего сертификата
Обмен ключами
Экспорт открытого ключа
Импорт открытого ключа
Шифрование
Генерация подключа.
Зашифрование и расшифрование документов
Цифровые подписи и их проверка
Прозрачно подписанные(clearsigned) документы
Отделённая подпись

GnuPG - инструмент для защиты коммуникаций. В этой главе кратко описываются основы работы с GnuPG, включая создание пары ключей, обмен ключами и их проверку, зашифрование и расшифрование документов, заверение документов цифровой подписью. Здесь не описываются в деталях принципы криптографии с открытым ключом, шифрования и цифровых подписей, эти вопросы более подробно рассмотрены в главе "Основы криптографии" (желательно прочитать её до того, как Вы начнёте использовать GnuPG для практических целей). Здесь, также, не рассматриваются тонкости использования GnuPG, эти вопросы рассматриваются в главах "Управление ключами" и "Повседневное использование".

GnuPG использует криптографию с открытым ключом. Каждый пользователь имеет пару ключей (keypair), состоящую из секретного (private) и открытого (public) ключей. Секретный ключ является секретом пользователя и не может быть передан другому лицу, ни при каких обстоятельствах. Открытый ключ передается всем людям, с которыми пользователь будет обмениваться сообщениями. На самом деле GnuPG использует несколько более хитроумную схему, при которой пользователь имеет первичную пару ключей и, возможно, дополнительно несколько подчиненных. Первичный и подчиненные ключи объединены, для упрощения их использования, и эта связка, зачастую, может рассматриваться просто, как одна пара ключей.

Генерация новой пары ключей

Для создания первичной пары ключей используется команда --gen-key.

alice$ gpg --gen-key
gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Please select what kind of key you want:
   (1) DSA and Elgamal (default)
   (2) DSA (sign only)
   (5) RSA (sign only)
Your selection? 

GnuPG может создавать несколько разных типов ключей, но первичный ключ должен быть пригоден для создания подписи (signature). Поэтому в данном меню предлагается только три варианта. Вариант 1 создает две пары ключей. DSA - первичная, используемая только для подписи. ElGamal - подчиненная, используемая для шифрования. Вариант 2 похож, но создает только первичную пару ключей DSA, которая может использоваться только для подписи. Вариант 5 создаёт пару RSA, которая может использоваться только для подписи. В любом случае, позже можно создать дополнительные подчинённые пары ключей для подписи и шифрования.

Также Вы должны выбрать размер ключа. Размер ключа DSA, согласно стандарту, должен быть между 512 и 1024 бит, но GnuPG не позволяет генерировать ключи короче 1024 бит. Ключи ElGamal и RSA могут иметь размер до 4096 бит. Если Вы выбрали вариант 1, то размер DSA ключа полагается равным 1024 битам и запрашивается только размер ключа ElGamal.

Your selection? 5
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)

Больший размер ключа дает большую защиту от взлома, но размер по умолчанию достаточен практически для любых целей. Большая длина ключа замедляет зашифровку и расшифровку и может отразиться на длине подписей. Размер ключа нельзя будет впоследствии изменить.

Наконец, Вы должны указать срок действия ключа. В случае варианта 1, указанный срок используется для обоих ключей.

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)  

Большинству пользователей подойдет бессрочный ключ. Срок действия следует выбирать с осторожностью; хотя можно изменить срок действия после создания ключа, не исключены проблемы с передачей изменений тем пользователям, у которых уже имеется Ваш открытый ключ.

В дополнение к параметрам ключа, Вы должны указать идентификатор пользователя. Идентификатор нужен, чтобы связать созданный ключ с конкретным лицом.

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Alice
Email address: alice@wonderland.uk
Comment: test key                 
You selected this USER-ID:
    "Alice (test key) <alice@wonderland.uk>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

Для того, чтобы принять данный идентификатор введите 'O'. Если Вы хотите изменить имя, коментарий или адрес e-mail введите, соответственно, 'N', 'C' или 'E'. Ввод символа 'Q' приведёт к выходу из программы. При генерации ключа создается только один идентификатор пользователя, но возможно создание дополнительных идентификаторов, если Вы хотите использовать ключ в нескольких контекстах; например, как инженер на работе и как политический деятель после нее. Идентификатор пользователя не может быть отредактирован после создания.

GnuPG запросит ключевую фразу (пароль) для защиты первичного и подчиненного секретных ключей, которые Вы будете держать в недоступном для других месте.

You need a Passphrase to protect your private key.    

Enter passphrase: 

На длину пароля нет ограничений, и его следует выбирать тщательно. С точки зрения безопасности, пароль для защиты ключа очень важен в GnuPG (и других системах с открытым ключом), т.к. это Ваша единственная защита в случае, если Ваш секретный ключ попадет в чужие руки. Не следует брать слова из БСЭ, чередуйте регистр букв и используйте неалфавитные символы. Хороший пароль критичен для надежности GnuPG. При вводе пароля GnuPG не отображает вводимые символы.

Далее GnuPG генерирует ключ. В случае если в Вашей системе не очень хороший генератор случайных чисел, процедура генерации ключа может занять довольно много времени. В некоторых случаях помогает шевеление мышкой, в некоторых настройка системы.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
+++++
......+++++
gpg: /home/alice/.gnupg/trustdb.gpg: trustdb created
gpg: key 8A9ED75D marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/8A9ED75D 2005-10-21
      Key fingerprint = 8198 6D5B F869 AB12 8180  F515 C27F 3261 8A9E D75D
uid                  Alice (test key) <alice@wonderland.uk>

Note that this key cannot be used for encryption.  You may want to use
the command "--edit-key" to generate a subkey for this purpose.

Создание отзывающего сертификата

После создания пары ключей, Вам следует создать отзывающий сертификат (revokation certificate) для первичного открытого ключа, используя команду --gen-revoke. Если Вы забудете пароль, либо Ваш секретный ключ будет похищен или утерян, этот сертификат может быть разослан для уведомления о том, что открытый ключ нельзя больше использовать. Отозванный открытый ключ может использоваться для проверки сделанных Вами подписей и дальше, но он не может быть использован для зашифрования сообщений для Вас. При этом, Вы сохраняете возможность расшифровывать отправленные Вам сообщения, при наличии секретного ключа.

alice$ gpg --output revoke.asc --gen-revoke mykey

Аргумент mykey - идентификатор Вашей первичной пары ключей или любая часть идентификатора пользователя Вашей пары ключей. В нашем случае в качестве аргумента можно указать, например: 'alice', 'alice@wonderland.uk', '8A9ED75D'. '8A9ED75D' -- это идентификатор ключа, он был выведен при выполнении команды --gen-key после генерации ключа (см. предыдущий раздел). Сгенерированный сертификат будет сохранен в файле revoke.asc. Если опция --output опущена, результат помещается в стандартный вывод (т.е. выводится на экран). Кроме того, GnuPG запрашивает причину генерации отзывающего сертификата. Если Вы создаёте отзывающий сертификат сразу после генерации ключа, то причину отзыва ключа указывать, вероятно, не имеет смысла (т.е. можно выбрать 0 - без указания причины). Можно, также, добавить краткое описание причины отзыва ключа.

alice$ gpg --output revoke.asc --gen-revoke alice@wonderland.uk

sec  2048R/8A9ED75D 2005-10-21 Alice (test key) <alice@wonderland.uk>

Create a revocation certificate for this key? (y/N) y
Please select the reason for the revocation:
  0 = No reason specified
  1 = Key has been compromised
  2 = Key is superseded
  3 = Key is no longer used
  Q = Cancel
(Probably you want to select 1 here)
Your decision? 0
Enter an optional description; end it with an empty line:
> 
Reason for revocation: No reason specified
(No description given)
Is this okay? (y/N) y

You need a passphrase to unlock the secret key for
user: "Alice (test key) <alice@wonderland.uk>"
2048-bit RSA key, ID 8A9ED75D, created 2005-10-21

ASCII armored output forced.
Revocation certificate created.

Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable.  But have some caution:  The print system of
your machine might store the data and make it available to others!

Сертификат следует использовать только в случае утраты контроля над секретным ключом. До тех пор сертификат должен храниться в надёжном месте. Например, Вы можете вывести сертификат на принтер и хранить распечатанную копию в банковском сейфе. Сертификат ни в коем случае не должен попасть к посторонним лицам. Если сертификат попадет в чужие руки и будет опубликован, то Ваш открытый ключ станет недействительным.