Если Вы при генерации ключа выбрали вариант 2 (DSA) или 5 (RSA), то имеющийся у Вас ключ может использоваться только для подписи. Для того, чтобы Ваши корреспонденты могли зашифровывать направляемые Вам сообщения, необходимо создать дополнительный ключ, который может использоваться для шифрования. Генерация дополнительного ключа осуществляется в режиме редактирования.
alice$
gpg --edit-key alice@wonderland.uk
Secret key is available. pub 2048R/8A9ED75D created: 2005-10-21 expires: never usage: CS trust: ultimate validity: ultimate [ultimate] (1). Alice (test key) <alice@wonderland.uk> Command>addkey
Key is protected. 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 Please select what kind of key you want: (2) DSA (sign only) (4) ElGamal (encrypt only) (5) RSA (sign only) (6) RSA (encrypt only) Your selection?
Если Вы намерены использовать подключ для шифрования, то следует выбрать вариант 4 или 6.
Your selection?6
RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) Requested keysize is 2048 bits 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)2y
Key expires at Fri Oct 26 01:46:40 2007 MSD Is this correct (y/n)?y
Really create?y
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. ..+++++ +++++ pub 2048R/8A9ED75D created: 2005-10-21 expires: never usage: CS trust: ultimate validity: ultimate sub 2048R/C2EC09D0 created: 2005-10-25 expires: 2007-10-25 usage: E [ultimate] (1). Alice (test key) <alice@wonderland.uk> Command>save
Нетрудно заметить, что в списке ключей появился второй ключ. Для того, чтобы выйти из режима редактирования сохранив изменения, воспользуйтесь командой save.
Открытый и секретный ключи, играют каждый свою роль при зашифровке и расшифровке документов. Открытый ключ можно представить как открытый сейф. Когда корреспондент зашифровывает сообщение при помощи открытого ключа, это сообщение помещается в сейф и сейф закрывается. Соответствующий закрытый ключ - комбинация, необходимая для того, чтобы открыть сейф и получить документ. Другими словами, только обладатель закрытого ключа может восстановить документ, зашифрованный соответствующим открытым ключом.
Если Вы хотите послать сообщение другу, то зашифровываете его при помощи открытого ключа друга, а тот расшифровывает его при помощи своего секретного ключа. Если друг захочет Вам ответить, то он зашифрует ответ при помощи Вашего открытого ключа, а Вы расшифруете его своим секретным.
Для зашифрования документа используется команда
--encrypt
. Вы должны иметь открытые ключи
предполагаемых получателей. Программа ожидает в качестве параметра имя
шифруемого файла или, в случае его отсутствия, считывает данные для
зашифрования со стандартного ввода. Зашифрованный результат
сохраняется в файле с тем же именем, что и у исходного файла, но
добавляется расширение gpg или, если указана опция
--output
, то данные сохраняются в файле с указанным
именем.
alice$
gpg --encrypt --recipient bob@example.com message.txt
Параметр --recipient
используется для каждого получателя и имеет аргумент,
идентифицирующий открытый ключ, которым должен быть зашифрован документ.
Зашифрованный документ может быть расшифрован только тем, чей секретный
ключ соответствует одному из указанных открытых ключей. В частности, Вы
не можете расшифровать зашифрованный Вами документ, если не включили
свой открытый ключ в список получателей. Можно добавить в файл
конфигурации параметр encrypt-to
с идентификатором
собственного ключа, чтобы при зашифровании Вами файла он всегда
зашифровывался и Вашим открытым ключом.
Для расшифрования сообщения используется команда
--decrypt
. Необходимо, чтобы у Вас имелся секретный
ключ, для которого это сообщение было зашифровано. Расшифрованные данные
выводятся на стандартный вывод или в файл определённый параметром
--output
.
bob$
gpg --output message.txt --decrypt message.txt.gpg
gpg --decrypt message.txt.gpg You need a passphrase to unlock the secret key for user: "Bob Bobson <bob@example.com>" 2048-bit RSA key, ID 6D8F0E99, created 2005-10-25 (main key ID E4E68186) Enter passphrase:
Можно зашифровать файл и без открытого ключа. Вместо этого можно
использовать для зашифрования данных симметричный шифр. Ключ,
используемый при зашифровании, образуется из ключевой фразы. Для большей
безопасности эта ключевая фраза не должна совпадать с той, которую Вы
используете для защиты секретного ключа. Симметричный шифр применим
тогда, когда нет необходимости обмениваться ключевой фразой. Для
использования симметричного шифра применяется команда
--symmetric
.
alice$
gpg --symmetric message.txt
Enter passphrase:
При расшифровании необходимо будет указать ту же самую ключевую фразу.