Загрузка
IT Management Company
г. Одесса

ул. Гранитная 1, офис 42

GPG на практике

Yuriy O.

Теоретические ведомости про GPG.

1. Быстрый старт

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

Обмен ключами

Зашифрование и расшифрование документов

Подписи и их проверка

GnuPG - инструмент для защиты коммуникаций. Эта глава коротко описывает основы работы с GnuPG, включая создание пар ключей, обмен ключами и их проверку, зашифровку и расшифровку документов, заверение документов цифровой подписью. Она не описывает в деталях принципы криптографии с открытым ключом, шифрования и цифровых подписей. Эти вопросы рассматриваются в главе 2. Здесь, также, не рассматриваются тонкости использования GnuPG. Эти вопросы рассматриваются в главах 3 и 4.

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

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

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

alice% gpg --gen-key

gpg (GnuPG) 0.9.4; Copyright (C) 1999 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)

(4) ElGamal (sign and encrypt)

Your selection?

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

Также Вы должны выбрать размер ключа. Размер ключа DSA должен быть между 512 и 1024 бит. Ключ ElGamal может быть любого размера. Обычно, GnuPG требует ключи не короче 768 бит. Таким образом, если Вы выбрали вариант 1 и размер ключа больше 1024 бит, то ключ ElGamal будет иметь указанный размер, а ключ DSA - 1024 бита.

About to generate a new ELG-E keypair.

minimum keysize is  768 bits

default keysize is 1024 bits

highest suggested keysize is 2048 bits

What keysize do you want? (1024)

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

Наконец, Вы должны указать срок действия ключа. В случае варианта 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 Real Name, Comment and Email Address in this form:

"Heinrich Heine (Der Dichter) <[email protected]>"

 

Real name:

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

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

You need a Passphrase to protect your private key.

 

Enter passphrase:

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

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

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

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

[...]

Аргумент mykey - идентификатор Вашей первичной пары ключей или любая часть идентификатора пользователя Вашей пары ключей. Сгенерированный сертификат будет сохранен в файле revoke.asc. Если опция --output опущена, результат помещается в стандартный вывод. Вы можете вывести сертификат на принтер и хранить его где-нибудь в надежном месте (банковский сейф подойдет). Если сертификат попадет в чужие руки и будет опубликован, то открытый ключ утратит свое действие.

Обмен ключами

Для общения с кем-либо, вы должны обменяться ключами. Просмотреть список имеющихся открытых ключей, можно используя команду --list-keys.

alice% gpg --list-keys

/users/alice/.gnupg/pubring.gpg

---------------------------------------

pub  1024D/BB7576AC 1999-06-04 Alice (Judge) <[email protected]>

sub  1024g/78E9A8FA 1999-06-04

Экспорт открытого ключа

Перед тем как послать открытый ключ кому-либо, Вы должны его экспортировать. Для этого используйте команду --export. Ей требуется, дополнительно, аргумент, идентифицирующий экспортируемый открытый ключ, как и --gen-revoke.

alice% gpg --output alice.gpg --export [email protected]

Ключ экспортируется в двоичном формате, что бывает неудобно. GnuPG имеет опцию командной строки --armor, которая указывает на необходимость вывода в формате ASCII. Практически любой вывод GnuPG, т.е. ключи, зашифрованные документы, подписи, может происходить в формате ASCII.[2]

alice% gpg --armor --export [email protected]

-----BEGIN PGP PUBLIC KEY BLOCK-----

Version: GnuPG v0.9.7 (GNU/Linux)

Comment: For info see http://www.gnupg.org

 

[...]

-----END PGP PUBLIC KEY BLOCK-----

Импорт открытого ключа

Открытый ключ может быть добавлен к множеству Ваших открытых ключей при помощи команды --import.

alice% gpg --import blake.gpg

gpg: key 9E98BC16: public key imported

gpg: Total number processed: 1

gpg:               imported: 1

alice% gpg --list-keys

/users/alice/.gnupg/pubring.gpg

---------------------------------------

pub  1024D/BB7576AC 1999-06-04 Alice (Judge) <[email protected]>

sub  1024g/78E9A8FA 1999-06-04

 

pub  1024D/9E98BC16 1999-06-04 Blake (Executioner) <[email protected]>

sub  1024g/5C8CBD41 1999-06-04

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

alice% gpg --edit-key [email protected]

 

pub  1024D/9E98BC16  created: 1999-06-04 expires: never      trust: -/q

sub  1024g/5C8CBD41  created: 1999-06-04 expires: never

(1)  Blake (Executioner) <[email protected]>

 

Command> fpr

pub  1024D/9E98BC16 1999-06-04 Blake (Executioner) <[email protected]>

Fingerprint: 268F 448F CCD7 AF34 183E  52D8 9BDE 1A08 9E98 BC16

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

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

Command> sign

 

pub  1024D/9E98BC16  created: 1999-06-04 expires: never      trust: -/q

Fingerprint: 268F 448F CCD7 AF34 183E  52D8 9BDE 1A08 9E98 BC16

 

Blake (Executioner) <[email protected]>

 

Are you really sure that you want to sign this key

with your key: "Alice (Judge) <[email protected]>"

 

Really sign?

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

Command> check

uid  Blake (Executioner) <[email protected]>

sig!       9E98BC16 1999-06-04   [self-signature]

sig!       BB7576AC 1999-06-04   Alice (Judge) <[email protected]>

Зашифрование и расшифрование документов

Открытый и секретный ключи, играют каждый свою роль при зашифровке и расшифровке документов. Открытый ключ можно представить как открытый сейф. Когда корреспондент зашифровывает сообщение при помощи открытого ключа, это сообщение помещается в сейф и сейф закрывается. Соответствующий закрытый ключ - комбинация, необходимая для того, чтобы открыть сейф и получить документ. Другими словами, только обладатель закрытого ключа может восстановить документ, зашифрованный соответствующим открытым ключом.

Если Вы хотите послать сообщение другу, то зашифровываете его при помощи открытого ключа друга, а тот расшифровывает его при помощи своего секретного ключа. Если друг захочет Вам ответить, то он зашифрует ответ при помощи Вашего открытого ключа, а Вы расшифруете его своим секретным.

Для зашифрования документа используется команда --encrypt. Вы должны иметь открытые ключи предполагаемых получателей. Программа ожидает в качестве параметра имя шифруемого документа или, в случае его отсутствия, шифрует стандартный ввод. Зашифрованный результат помещается в стандартный вывод, если не указана опция --output. Для повышения защиты документ дополнительно сжимается.

alice% gpg --output doc.gpg --encrypt --recipient [email protected] doc

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

Для расшифрования сообщения используется команда --decrypt. Вам нужен секретный ключ, для которого это сообщение было зашифровано. Документ для расшифровки на входе программы, расшифрованный документ на выходе.

blake% gpg --output doc --decrypt doc.gpg

 

You need a passphrase to unlock the secret key for

user: "Blake (Executioner) <[email protected]>"

1024-bit ELG-E key, ID 5C8CBD41, created 1999-06-04 (main key ID 9E98BC16)

 

Enter passphrase:

Документы, также, можно зашифровывать без открытого ключа. Вместо этого используется симметричный шифр для зашифровки документа. Ключ, используемый при зашифровании, образуется из ключевой фразы, запрашиваемой перед зашифрованием. Для большей безопасности этот пароль не должен совпадать с тем, который Вы используете для защиты секретного ключа. Симметричный шифр применим, когда нет необходимости обмениваться ключевой фразой. Для использования симметричного шифра применяется команда --symmetric.

alice% gpg --output doc.gpg --symmetric doc

Enter passphrase:

Подписи и их проверка

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

Создание и проверка подписей отличается от зашифрования/расшифрования. При подписи документа используется закрытый ключ подписывающего, а проверяется подпись с использованием его открытого ключа. Например, Alice использует свой секретный ключ, чтобы подписать свою новую статью в журнал. Редактор, получив письмо, использует открытый ключ Alice, чтобы проверить, что письмо действительно от Alice и не было изменено за время пересылки.

Для подписи документов используется команда --sign. Документ для подписи на входе и подписанный на выходе.

alice% gpg --output doc.sig --sign doc

 

You need a passphrase to unlock the private key for

user: "Alice (Judge) <[email protected]>"

1024-bit DSA key, ID BB7576AC, created 1999-06-04

 

Enter passphrase:

Документ сжимается перед подписью и выводится в двоичном формате.

Имея подписанный документ, Вы можете либо проверить подпись, либо проверить подпись и восстановить исходный документ. Для проверки подписи используется команда --verify. Для проверки подписи и извлечения документа используется команда --decrypt. Подписанный документ на входе и проверенный и восстановленный на выходе.

blake% gpg --output doc --decrypt doc.sig

gpg: Signature made Fri Jun  4 12:02:38 1999 CDT using DSA key ID BB7576AC

gpg: Good signature from "Alice (Judge) <[email protected]>"

Прозрачно подписанные(Clearsigned) документы

Обычно цифровые подписи применяются при подписи сообщений usenet и e-mail. При этом нежелательно сжимать подписываемые документы. Команда --clearsign добавляет к документу цифровую подпись в формате ASCII, но не изменяет сам документ.

alice% gpg --clearsign doc

 

You need a passphrase to unlock the secret key for

user: "Alice (Judge) <[email protected]>"

1024-bit DSA key, ID BB7576AC, created 1999-06-04

 

-----BEGIN PGP SIGNED MESSAGE-----

Hash: SHA1

 

[...]

-----BEGIN PGP SIGNATURE-----

Version: GnuPG v0.9.7 (GNU/Linux)

Comment: For info see http://www.gnupg.org

 

iEYEARECAAYFAjdYCQoACgkQJ9S6ULt1dqz6IwCfQ7wP6i/i8HhbcOSKF4ELyQB1

oCoAoOuqpRqEzr4kOkQqHRLE/b8/Rw2k

=y6kj

-----END PGP SIGNATURE-----

Отделенная подпись

Применение подписанных документов ограниченно. Получатель должен восстанавливать документ из подписанной версии, и даже в случае прозрачной подписи, подписанный документ должен быть отредактирован для получения оригинала. Поэтому имеется третий метод подписи документов, который создает отделенную подпись (detached signature). Отделенная подпись создается при использовании команды --detach-sign.

alice% gpg --output doc.sig --detach-sign doc

 

You need a passphrase to unlock the secret key for

user: "Alice (Judge) <[email protected]>"

1024-bit DSA key, ID BB7576AC, created 1999-06-04

 

Enter passphrase:

Для проверки подписи необходимы и отделенная подпись, и документ. Для проверки используется команда --verify.

blake% gpg --verify doc.sig doc

gpg: Signature made Fri Jun  4 12:38:46 1999 CDT using DSA key ID BB7576AC

gpg: Good signature from "Alice (Judge) <[email protected]>"

[1] Вариант 3 генерирует пару ElGamal, которая не пригодна для подписи.
[2] Многие, часто используемые, опции командной строки могут быть установлены в файле конфигурации.

 

 

2. Общие понятия

Симметричные шифры

Шифры с открытым ключом

Смешанные шифры

Цифровые подписи

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

Эта глава - введение в основные криптографические методы, используемые в GnuPG. Более подробно эти вопросы рассматриваются в других источниках. Хорошая книга, для дальнейшего изучения: Bruce Schneier ``Applied Cryptography''. (Имеется перевод на русский язык)

Симметричные шифры

Симметричный шифр это шифр использующий один ключ для зашифрования и расшифрования. Стороны, общающиеся при помощи симметричного шифра, должны договориться о ключе до начала обмена сообщениями. После того как они договорились, отправитель зашифровывает сообщение, используя ключ, отправляет получателю, и получатель расшифровываетет сообщение, используя тот же самый ключ. Например, немецкая Enigma - симметричный шифр, ежедневные ключи распространялись как книги кодов. Каждый день посылающий или принимающий радист должен был найти в своей копии книги кодов ключ на текущий день. Радиограммы в этот день зашифровывались и расшифровывались этим ключом. Современные примеры симметричных шифров: 3DES, Blowfish, IDEA и ГОСТ.

Хороший шифр заключает всю защиту в ключе, но не в алгоритме. Другими словами, знание используемого алгоритма не должно помочь взломщику. Знание алгоритма понадобится ему, только когда он получит ключ. Шифры, используемые в GnuPG, обладают этим свойством.

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

Британия использовала машины для подбора ключей, во время Второй Мировой войны. Немецкая Enigma имела очень большое пространство ключей, но Англичане построили специальные вычислительные механизмы, "Bombes", которые перебирали ключи пока на находили нужный. Иногда они находили ключ на текущий день через несколько часов после начала его использования, а иногда не находили совсем. "Bombes" не являлись компьютерами, но были их предшественниками.

Современные компьютеры могут перебирать ключи с огромной скоростью, поэтому размер ключа так важен в современных криптосистемах. Шифр DES использует ключ длиной 56 бит, т.е. существует 256 возможных ключей. 256 это 72,057,594,037,927,936 ключей. Много, но обычный компьютер может перебрать их за считаные дни, а специализированный за часы. С другой стороны, более поздние алгоритмы - 3DES, Blowfish и IDEA используют ключи длиной 128 бит, что означает 2128 возможных ключей. Это намного больше, и, даже, если все компьютеры на нашей планете объединить, им потребуется времени больше, чем возраст вселенной, для нахождения ключа.

Шифры с открытым ключом

Основная проблема симметричных шифров - обмен ключами. Отправитель и получатель должны обменяться ключами, которые будут использоваться для защищенного обмена информацией, но каким защищенным каналом они могут воспользоваться для обмена самими ключами? В частности, взломщику может быть легче перехватить ключ, нежели его подбирать. Другая проблема - количество необходимых ключей. Если n человек хотят обмениваться между собой сообщениями, то необходимо n(n-1)/2 ключей, по одному для каждой пары, учавствующей в переписке. Это может быть приемлемо для небольшой группы людей, но станет неудобным при ее увеличении.

Шифры с открытым ключом были придуманы, чтобы решить проблему с обменом ключами. Шифр с открытым ключом использует пару ключей для отправки сообщений. Два ключа относятся к лицу принимающему сообщение. Один ключ открытый (public key) и может быть передан любому. Другой ключ секретный (private key) и хранится только у владельца. Отправитель зашифровывает сообщение открытым ключом получателя, и ,будучи зашифровано, сообщение может быть расшифровано только закрытым ключом получателя.

Этот метод решает проблему обмена ключами, присущую симметричным шифрам. Отпадает необходимость договоренности о ключе между отправителем и получателем. Все что требуется, это чтобы отправитель до начала секретного обмена информацией взял копию открытого ключа получателя. Кроме того, один открытый ключ может использоваться всеми корреспондентами получателя. Таким образом, только n пар ключей необходимо для n человек, переписывающихся друг с другом.

Шифры с открытым ключом основаны на односторонних функциях "c лазейкой". Односторонняя функция это функция, которую легко вычислить, но трудно вычислить ее обратную функцию, т.е. по значению функции найти значение аргумента. Например, легко вычислить произведение двух простых чисел, но трудно разложить это произведение на множители. Односторонние функции "с лазейкой" похожи, но имеют лазейку. Она состоит в том, что если некоторая часть информации известна, то вычисление обратной функции становится легким. Например, если Вам известно одно из простых чисел, в примере выше, то, зная произведение, Вы легко найдете второе число. Данный шифр с открытым ключом основан на простых множителях, открытый ключ содержит произведение двух больших простых чисел, алгоритм шифрования использует это число для зашифровки сообщения. Алгоритм расшифровки требует знания простых множителей, так, расшифровка становится легкой, если у Вас есть секретный ключ, содержащий один из множителей, но чрезвычайно затруднена если его у Вас нет.

Как и в случае симметричных шифров, вся защита хорошего шифра с открытым ключом заключена в ключе. Также, надежность зависит от размера ключа, но нельзя сравнивать длины ключей симметричных шифров и шифров с открытым ключом как меру их относительной надежности. При грубом взломе симметричного шифра с ключом длиной 80 бит, взломщик должен перебрать до 281-1 ключей для нахождения правильного. При взломе шифра с открытым ключом с длиной ключа 512 бит, взломщик должен разложить на множители число закодированное в 512 битах (до 155 десятичных знаков). Действия взломщика сильно различаются в зависимости от шифра. Пока для симметричных шифров достаточна длина ключа 128 бит, для сегодняшних технологий открытых ключей рекомендуется длина 1024 бита.

Смешанные шифры

Шифры с открытым ключом не панацея. Многие симметричные шифры более устойчивы против взлома, и, кроме того зашифрование/расшифрование открытым ключом требует больших затрат, чем аналогичные операции в симметричных системах. Шифры с открытым ключом, тем не менее, эффективны при распространении ключей симметричных шифров и именно так они используются в системах со смешанным шифром.

Смешанный шифр использует симметричный шифр и шифр с открытым ключом. Он работает используя шифр с открытым ключом для передачи ключа симметричного шифра. Сообщение, затем, зашифровывается этим ключом и посылается адресату. Так как передача симметричного ключа защищена, то для каждого сообщения используется свой симметричный ключ, называемый иногда сеансовым ключом.

И PGP и GnuPG используют гибридные шифры. Сеансовый ключ, зашифрованный шифром с открытым ключом, и сообщение, зашифрованное симметричным шифром, автоматически объединяются вместе. Получатель использует свой секретный ключ для расшифровки сеансового ключа и, затем, использует полученный сеансовый ключ для расшифровки сообщения.

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

Цифровые подписи

Хеширующая функция это функция "многие-к-одному", отображающая свои аргументы на ограниченное множество значений. Обычно это множество - диапазон натуральных чисел. Простая хеширующая функция - f(x) = 0 для всех целых x. Более интересна функция f(x) = x mod 37, которая отображает x в остаток от деления x на 37.

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

Некоторые шифры с открытым ключом [1] могут быть использованы для подписи документов. Подписывающий зашифровывает документ своим секретным ключом. Желающий проверить подпись и увидеть документ, просто использует открытый ключ подписавшего для расшифровки документа. Этот алгоритм удовлетворяет двум условиям, налагаемым на хорошую хеширующую функцию, но на практике он слишком медленен.

В качестве альтернативы используются хеширующие функции, удовлетворяющие этим двум условиям. SHA и MD5 примеры таких алгоритмов. При использовании данного алгоритма, для подписи документа вычисляется значение хеширующей функции, и затем это значение используется для проверки подлинности документа. Получатель может проверить подпись, вычислив значение функции для документа и сравнив его со значением, вычисленным отправителем для настоящего документа. Если они совпадут, то почти наверняка документы идентичны.

Теперь проблема состоит в том, чтобы предотвратить изменение подписи злоумышленником. Если документ и подпись посылаются незашифрованными, взломщик может изменить документ и вычислить соответствующее значение хеширующей функции, без ведома получателя. Если зашифрован только документ, взломщик может изменить значение подписи и провалить ее проверку. Третий путь - использовать смешанный метод шифрования с открытым ключом для зашифровки подписи и документа. Отправитель использует свой закрытый ключ, и любой может воспользоваться его открытым ключом для проверки подписи и документа. Звучит неплохо, но на деле ерунда. Если этот алгоритм действительно защищает документ, он, также, защищает его от подделки, и нет необходимости его подписывать. В действительности, этот метод не защищает документ от подделки. Закрытым ключом отправителя шифруется только сеансовый ключ симметричного алгоритма. Любой, используя открытый ключ отправителя, может восстановить сеансовый ключ. Нетрудно, затем, изменить документ, зашифровать его обратно, используя полученный сеансовый ключ, и переслать дальше от имени отправителя.

Алгоритм, который действительно работает, использует метод с открытым ключом для шифрования только значения хеширующей функции. Подписанный документ может быть отправлен с использованием любого другого алгоритма шифрования, либо в чистом виде, если документ не содержит конфиденциальных сведений. Если документ изменен проверка подписи потерпит неудачу. Стандарт цифровой подписи DSA работает так, как было описано. DSA - основной алгоритм цифровой подписи, используемый в GnuPG.

[1] Шифр должен обладать тем свойством, что и настоящий открытый ключ, и секретный ключ могут быть использованы алгоритмом шифрования как открытый ключ. RSA - является таким алгоритмом, а ElGamal нет.

 

3. Управление ключами

Управление Вашей парой ключей

Проверка достоверности ключей в Вашей связке

Распространение ключей

Подделка ключа - наиболее слабое место в криптографии с открытым ключом. Злоумышленник может изменить пользовательскую связку ключей или подделать открытый ключ пользователя и посылать его другим для загрузки и использования. Например, предположим, что Хлой хочет отслеживать сообщения, которые Элис посылает Блэйку. Она могла бы использовать атаку, называемую человек в середине (man in the middle). Для этого Хлой создает новую пару ключей. Она заменяет копию открытого ключа Блэйка, принадлежащую Элис, новым открытым ключом. Затем она перехватывает сообщения, которые Элис посылает Блэйку. Каждое перехваченное сообщение она расшифровывает, используя новый секретный ключ, зашифровывает настоящим открытым ключом Блэйка и направляет их ему. Все сообщения, направленные Элис Блэйку, теперь могут быть прочитаны Хлой.

Правильное управление ключами является решающим фактором для обеспечения целостности не только Ваших связок ключей, но и связок ключей других пользователей. Основой управления ключами в GnuPG является подписание ключей. Подписание ключей имеет два основных применения: это позволяет Вам обнаруживать вмешательство в Вашу связку ключей, а также позволяет удостоверять, что ключ действительно принадлежит человеку, чьим идентификатором пользователя он помечен. Подписи на ключах также используются в схеме известной как сеть доверия (web of trust), которая расширяет допустимые ключи не только подписанными лично Вами, но и подписанными людьми, которым Вы доверяете. Аккуратные пользователи, правильно реализовавшие управление ключами, могут исключить подмену ключей как вид атаки на конфиденциальность связи при помощи GnuPG.

Управление Вашей парой ключей

Пара ключей состоит из открытого и секретного ключей. Открытый ключ состоит из открытой части главного подписывающего ключа, открытых частей подчиненных подписывающих и шифрующих ключей, набора идентификаторов пользователя, ассоциирующих открытый ключ с реальным человеком. Каждая часть содержит данные о себе. Для ключа это его идентификатор, дата создания, срок действия и т.д. Для идентификатора пользователя это имя человека, дополнительный комментарий и адрес email. Структура секретного ключа аналогична, но содержит секретные части ключей и не содержит информацию об идентификаторе пользователя.

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

chloe% gpg --edit-key [email protected]
Secret key is available.

pub  1024D/26B6AAE1  created: 1999-06-15 expires: never      trust: -/u
sub  2048g/0CF8CB7A  created: 1999-06-15 expires: never    
sub  1792G/08224617  created: 1999-06-15 expires: 2002-06-14
sub   960D/B1F423E7  created: 1999-06-15 expires: 2002-06-14
(1)  Chloe (Jester) <[email protected]>
(2)  Chloe (Plebian) <[email protected]>
Command>

При отображении открытого ключа выводится информация о том, доступен секретный ключ или нет. Затем выводится информация о каждом компоненте открытого ключа. Первая колонка показывает тип ключа. Символы pub указывают открытую часть главного подписывающего ключа, а символы sub открытую часть подчиненных ключей. Вторая колонка показывает длину ключа в битах, тип и идентификатор. Тип D это ключ DSA, g - ключ ElGamal, пригодный только для шифрования, и G - ключ ElGamal, который может использоваться и для подписи и для шифрования. Дата создания и окончания срока действия показана в колонках три и четыре. Идентификаторы пользователя перечислены после ключей.

Дополнительная информация о ключе может быть получена различными командами. Команда toggle переключает между открытой и закрытой компонентами пары ключей, если обе из них доступны.

Command> toggle

sec  1024D/26B6AAE1  created: 1999-06-15 expires: never    
sbb  2048g/0CF8CB7A  created: 1999-06-15 expires: never    
sbb  1792G/08224617  created: 1999-06-15 expires: 2002-06-14
sbb   960D/B1F423E7  created: 1999-06-15 expires: 2002-06-14
(1)  Chloe (Jester) <[email protected]>
(2)  Chloe (Plebian) <[email protected]>

Представленная информация подобна выводимой для открытого ключа. Символы sec указывают секретный главный подписывающий ключ, символы sbb указывают секретные подчиненные ключи. Также выводятся идентификаторы пользователя из открытого ключа.

Целостность ключа.

При распространении открытого ключа Вы распространяете открытые компоненты Вашего главного и подчиненных ключей и идентификаторы пользователя. Распространение этого материала, обычно, рискованно с точки зрения безопасности, т.к. делает возможной подмену ключа. Открытый ключ может быть изменен добавлением или заменой ключей, или добавлением или заменой идентификаторов пользователя. Подменой идентификатора пользователя, взломщик может изменить email адрес пользователя, чтобы получать перенаправленную ему почту. При изменении одного из ключей шифрования, взломщик сможет, также, расшифровывать перенаправленные ему сообщения.

Использование цифровых подписей решает эту проблему. Когда данные подписаны секретным ключом, соответствующий открытый ключ ограничен подписанными данными. Другими словами, только соответствующий открытый ключ может быть использован для проверки подписи и гарантирует, что данные не были изменены. Открытый ключ может быть защищен от изменения использованием соответствующего главного секретного ключа для подписи компонентов открытого ключа и идентификаторов пользователя, привязывая, таким образом, компоненты главного открытого ключа. Подпись компонентов открытого ключа соответствующим главным секретным подписывающим ключом называется самоподписью (self-signing), и открытый ключ, имеющий самоподписанные идентификаторы пользователя, привязанные к нему, называется сертификатом (certificate).

Например, у Хлой есть два идентификатора пользователя и три подключа. Подписи на идентификаторах пользователя могут быть проверены командой check из меню редактирования ключа.

chloe% gpg --edit-key chloe
Secret key is available.

pub  1024D/26B6AAE1  created: 1999-06-15 expires: never      trust: -/u
sub  2048g/0CF8CB7A  created: 1999-06-15 expires: never    
sub  1792G/08224617  created: 1999-06-15 expires: 2002-06-14
sub   960D/B1F423E7  created: 1999-06-15 expires: 2002-06-14
(1)  Chloe (Jester) <[email protected]>
(2)  Chloe (Plebian) <[email protected]>

Command> check
uid  Chloe (Jester) <[email protected]>
sig!       26B6AAE1 1999-06-15   [self-signature]
uid  Chloe (Plebian) <[email protected]>
sig!       26B6AAE1 1999-06-15   [self-signature]

Как и ожидалось, все подписи сделаны главным подписывающим ключом с идентификатором ключа 0x26B6AAE1. Самоподписи на подключах также представлены в открытом ключе, но они не показываются в GnuPG.

Добавление и удаление компонент ключа

Как новые подключи, так и идентификаторы пользователя могут быть добавлены к Вашей паре ключей после ее создания. Идентификатор пользователя добавляется командой adduid. Вы будете запрошены относительно Ваших имени, адреса email и комментария, также как при создании пары ключей. Подключ добавляется командой addkey. Процедура аналогична используемой при первичном создании пары ключей. Подключ может быть подписывающим DSA ключом, ElGamal ключом пригодным только для шифрования, или ключом ElGamal пригодным и для подписи и для шифрования. Когда создаются подключ или идентификатор пользователя, они подписываются главным подписывающим ключом, для чего Вы должны ввести ключевую фразу при генерации ключа.

Дополнительные идентификаторы применимы, когда Вы выступаете в нескольких качествах. Например, Вы можете быть работником какой-либо фирмы и, в то же время, политическим деятелем. Коллеги по соответствующему виду деятельности будут знать Вас по соответствующему идентификатору. Так как эти группы людей не пересекаются, то каждая группа может не доверять другому идентификатору. Следовательно, оба идентификатора нужны.

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

Подключи и идентификаторы пользователя могут быть удалены. Для удаления подключа или идентификатора пользователя, Вы должны сначала выбрать его, используя команду key или uid. Это команды переключатели. Например, команда key 2 выберет второй подключ, повторная команда key 2 отменит выбор. Если не заданы дополнительные аргументы, выбор всех подключей или идентификаторов пользователя будет отменен. Если идентификатор пользователя, который надо удалить, выбран, то команда deluid удалит его из ключа. Аналогично, команда delkey удаляет все выбранные подключи из обоих, открытого и секретного, ключей.

Для управления локальными связками ключей, удаление компонентов ключа хороший способ очистить открытые ключи других людей от ненужного материала. Удаление идентификаторов пользователя и подключей из Вашего собственного ключа, однако, не всегда разумно, т.к. усложняет распространение ключа. По умолчанию, когда пользователь импортирует Ваш обновленный открытый ключ, тот объединяется со старой копией Вашего открытого ключа, если она есть в связке. Компоненты обоих ключей объединяются, и это - эффективный способ восстановить удаленные Вами компоненты. Чтобы правильно обновить ключ, пользователь должен сначала удалить старую версию Вашего ключа и только затем импортировать новую. Это добавляет мороки людям, с которыми Вы общаетесь. Кроме того, если Вы отправляете ключ на сервер ключей, объединение произойдет неминуемо, и никто из получивших Ваш ключ с сервера ключей никогда не узнает о том, что Вы что-то там удалили. Следовательно, для обновления Вашего собственного ключа лучше отозвать соответствующие компоненты ключа, нежели удалять их.

Отзыв компонент ключа

Для отзыва подключа он должен быть выбран. Будучи выбран, он может быть отозван командой revkey. Ключ отзывается добавлением отзывающей самоподписи к ключу. В отличие от опции командной строки --gen-revoke, эффект наступает немедленно.

Command> revkey
Do you really want to revoke this key? y

You need a passphrase to unlock the secret key for
user: "Chloe (Jester) <[email protected]>"
1024-bit DSA key, ID B87DBA93, created 1999-06-28

pub  1024D/B87DBA93  created: 1999-06-28 expires: never      trust: -/u
sub  2048g/B7934539  created: 1999-06-28 expires: never    
sub  1792G/4E3160AD  created: 1999-06-29 expires: 2000-06-28
rev! subkey has been revoked: 1999-06-29
sub   960D/E1F56448  created: 1999-06-29 expires: 2000-06-28
(1)  Chloe (Jester) <[email protected]>
(2)  Chloe (Plebian) <[email protected]>

Идентификатор пользователя отменяется иначе. Как правило, на идентификатор пользователя ставятся подписи, удостоверяющие личность обладателя ключа. Теоретически, идентификатор вечен, т.к. человек всегда остается собой. На практике, однако, элементы идентификатора пользователя, такие, как адрес email и комментарий могут изменяться, делая идентификатор пользователя недействительным.

Спецификация OpenPGP не поддерживает отзыв идентификатора пользователя, но идентификатор может быть эффективно отозван отзывом самоподписи на нем. По причинам безопасности описаным ранее, корреспонденты не будут доверять идентификатору пользователя не имеющему самоподписи.

Подпись отзывается командой revsig. Т.к. Вы можете иметь любое число подписанных идентификаторов пользователя, программа запросит Вас о каждой подписи.

Command> revsig
You have signed these user IDs:
     Chloe (Jester) <[email protected]>
   signed by B87DBA93 at 1999-06-28
     Chloe (Plebian) <[email protected]>
   signed by B87DBA93 at 1999-06-28
user ID: "Chloe (Jester) <[email protected]>"
signed with your key B87DBA93 at 1999-06-28
Create a revocation certificate for this signature? (y/N)n
user ID: "Chloe (Plebian) <[email protected]>"               
signed with your key B87DBA93 at 1999-06-28
Create a revocation certificate for this signature? (y/N)y
You are about to revoke these signatures:                
     Chloe (Plebian) <[email protected]>
   signed by B87DBA93 at 1999-06-28
Really create the revocation certificates? (y/N)y

You need a passphrase to unlock the secret key for
user: "Chloe (Jester) <[email protected]>"
1024-bit DSA key, ID B87DBA93, created 1999-06-28

pub  1024D/B87DBA93  created: 1999-06-28 expires: never      trust: -/u
sub  2048g/B7934539  created: 1999-06-28 expires: never    
sub  1792G/4E3160AD  created: 1999-06-29 expires: 2000-06-28
rev! subkey has been revoked: 1999-06-29
sub   960D/E1F56448  created: 1999-06-29 expires: 2000-06-28
(1)  Chloe (Jester) <[email protected]>
(2)  Chloe (Plebian) <[email protected]>

Отозванный идентификатор пользователя указан отзывающей подписью при перечислении подписей на идентификаторах пользователя.

Command> check
uid  Chloe (Jester) <[email protected]>
sig!       B87DBA93 1999-06-28   [self-signature]
uid  Chloe (Plebian) <[email protected]>
rev!       B87DBA93 1999-06-29   [revocation]
sig!       B87DBA93 1999-06-28   [self-signature]

Отзыв и подключей, и самоподписей на идентификаторе пользователя добавляет отзывающие самоподписи к ключу. Т.к. подписи были добавлены, и ничего не удалялось, то отзыв всегда будет виден другим при распространении Вашего обновленного открытого ключа и объединении его с ранними копиями. Отзыв, таким образом, гарантирует, что у всех будет непротиворечивая копия Вашего открытого ключа.

Изменение срока действия ключа

Срок действия ключа может быть изменен командой expire из меню редактирования ключа. Если нет выбранных ключей, то будет изменен срок действия первичного ключа. Иначе изменяется срок действия выбранного подчиненного ключа.

Время окончания срока действия ключа связано с самоподписью на ключе. Окончание срока действия изменяется удалением старой подписи и добавлением новой. Так как Ваши корреспонденты не будут удалять старую копию ключа, они будут видеть дополнительную самоподпись на ключе после его обновления. Позднейшая самоподпись имеет приоритет, поэтому все корреспонденты будут однозначно осведомлены о времени действия Вашего ключа.

Проверка достоверности ключей в Вашей связке

В Главе 1 была описана процедура проверки достоверности открытого ключа Вашего корреспондента: корреспондент лично проверяет отпечатки на Вашей копии ключа, и затем Вы подписываете его открытый ключ своим секретным. При личной проверке отпечатков владельцем, Вы можете быть уверены, что ключ действительно принадлежит ему, и, подписав его, Вы сможете обнаружить любое изменение ключа в будущем. К сожалению, эта процедура практически невозможна если Вы либо контактируете с большим числом людей, либо не знакомы со всеми из них лично.

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

  • Элис подписала ключ Блэйка, а
  • Блэйк подписал ключи Хлой и Дхармы.

Если Элис уверена, что Блэйк проверяет достоверность ключей, которые он подписывает, то Элис может быть уверена, что ключи Хлой и Дхармы достоверны не проверяя их лично. Она просто использует свою достоверную копию открытого ключа Блэйка для проверки его подписи на ключах Хлой и Дхармы. Вообще, предполагая, что Элис совершенно уверена, что все правильно проверяют ключи, перед тем как их подписать, то любой ключ, подписанный достоверным ключом, будет достоверным.

Доверие владельцу ключа

На практике доверие субъективно. Например, ключ Блэйка достоверен, т.к. Элис подписала его, но она может не быть уверена, что Блэйк правильно проверяет ключи, которые он подписывает. В этом случае, она не будет считать ключи Хлой и Дхармы достоверными, основываясь на подписи Блэйка. Модель сети доверия решает эту задачу связывая с каждым открытым ключом в Вашей связке значение указывающее уровень Вашего доверия владельцу ключа. Имеется четыре уровня доверия.

unknown (неизвестное)

Ничего не известно о политике подписания ключей данным владельцем. Ключам в Вашей связке, кроме Вашего собственного, первоначально присваивается этот уровень доверия.

none (нет)

Известна недобросовестность этого лица при подписи чужих ключей.

marginal (граничное)

Понимает смысл подписания ключей и проверяет их достоверность перед тем, как подписывать.

full (полное)

Владелец очень разборчив в подписи ключей и его подписи на ключе можно верить как своей собственной.

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

Для присвоения уровня доверия владельцу ключа используется редактор ключей GnuPG. Команда trust. В этом примере Элис редактирует уровень своего доверия Блэйку и затем обновляет базу данных доверия, чтобы пересчитать достоверность ключей основываясь на новом значении доверия Блэйку.

alice% gpg --edit-key blake

pub  1024D/8B927C8A  created: 1999-07-02 expires: never      trust: q/f
sub  1024g/C19EA233  created: 1999-07-02 expires: never    
(1)  Blake (Executioner) <[email protected]>

Command> trust
pub  1024D/8B927C8A  created: 1999-07-02 expires: never      trust: q/f
sub  1024g/C19EA233  created: 1999-07-02 expires: never    
(1)  Blake (Executioner) <[email protected]>

Please decide how far you trust this user to correctly
verify other users' keys (by looking at passports,
checking fingerprints from different sources...)?

 1 = Don't know
 2 = I do NOT trust
 3 = I trust marginally
 4 = I trust fully
 s = please show me more information
 m = back to the main menu

Your decision? 3

pub  1024D/8B927C8A  created: 1999-07-02 expires: never      trust: m/f
sub  1024g/C19EA233  created: 1999-07-02 expires: never    
(1)  Blake (Executioner) <[email protected]>

Command> quit
[...]

Доверие владельцу ключа и достоверность ключа выводятся справа от ключа, когда выводится ключ. Доверие владельцу выводится первым, достоверность ключа второй[1]. Четыре уровня доверия/достоверности обозначаются символами: неизвестный (q), нет (n), граничный (m), и полный (f). В этом случае, ключ Блэйка полностью достоверен, т.к. Элис сама подписала его. Изначально установлено неизвестное доверие относительно правильности подписи Блэйком ключей, но Элис решает установить граничный уровень доверия.

Использование доверия для проверки достоверности ключей

Сеть доверия позволяет использовать более гибкий алгоритм для проверки достоверности ключа. Если прежде достоверными считались только те ключи, которые Вы подписали лично, то теперь используется следующий алгоритм. Ключ K считается достоверным, если он удовлетворяет следующим двум условиям:

1.      он подписан достаточным количеством достоверных ключей, т.е.

o    Вы подписали его лично,

o    он был подписан ключом владельцу которого Вы полностью доверяете, или

o    он был подписан тремя ключами с граничным уровнем доверия владельцу; и

2.      цепочка подписанных ключей начинающаяся с K и заканчивающаяся Вашим ключом не длиннее пяти ключей.

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

. 3-1 рассмотрим сеть доверия начинающуюся с Элис. Граф иллюстрирует кто подписал чей ключ. Таблица показывает ключи, которые Элис признает достоверными основываясь на доверии другим членам сети. Этот пример предполагает, что для признания другого ключа достоверным требуется два ключа с граничным доверием или один с полным. Максимальная длина цепочки равна трем.

При вычислении достоверности ключей, в этом примере, ключи Блэйка и Дхармы всегда считаются полностью достоверными, т.к. они подписаны Элис. Достоверность других ключей зависит от доверия. В первом случае, доверие Дхарме полное, что делает ключи Хлой и Фрэнсиса полностью достоверными. Во втором случае, доверие Блэйку и Дхарме граничное. Т.к. два ключа с граничным доверием требуется для подтверждения достоверности ключа, ключ Хлой будет признан полностью достоверным, но достоверность ключа Фрэнсиса будет только частично подтверждена. В случае граничного доверия Хлой и Дхарме, ключ Хлой будет частично достоверен, а ключ Дхармы полностью достоверен. Ключ Фрэнсиса будет частично достоверен, т.к. только полностью достоверный ключ может быть использован для подтверждения достоверности других ключей, а единственный полностью достоверный ключ, которым подписан ключ Фрэнка, это ключ Дхармы. После добавления граничного доверия Блэйку ключ Хлой становится полностью достоверным и может быть использован для полного подтверждения достоверности ключа Фрэнсиса и частичного подтверждения достоверности ключа Елены. Наконец, если доверие Блэйку, Хлой и Елене полное, этого все еще не достаточно для подтверждения достоверности ключа Джефа, т.к. максимальная длина цепочки подтверждения равна трем, но путь от Джефа к Элис равен четырем.

Модель сети доверия реализует гибкий подход к проблеме безопасного обмена ключами. Она позволяет настраивать GnuPG в соответствии с Вашими потребностями. Вы можете требовать много коротких цепочек от Вашего ключа до ключа K для признания его достоверным. С другой стороны, Вы можете быть удовлетворены одной длинной цепочкой. Требование многочисленных коротких цепочек - сильная гарантия того, что ключ K принадлежит тому, на кого указывает его идентификатор пользователя. Цена за такую надежность, конечно, выше, т.к. Вы лично должны проверить и подписать большее количество ключей, чем в случае когда Вас устраивает небольшое число длинных цепочек.

3-1. Пример сети доверия

 

доверие достоверность
граничное полное граничная полная
  Дхарма   Блэйк, Хлой, Дхарма, Фрэнсис
Блэйк, Дхарма   Фрэнсис Блэйк, Хлой, Дхарма
Хлой, Дхарма   Хлой, Фрэнсис Блэйк, Дхарма
Блэйк, Хлой, Дхарма   Елена Блэйк, Хлой, Дхарма, Фрэнсис
  Блэйк, Хлой, Елена   Блэйк, Хлой, Елена, Фрэнсис

Распространение ключей

В идеале, Вы распространяете Ваши ключи персонально передавая его Вашим корреспондентам. На практике, однако, ключи часто распространяются по электронной почте или другими способами электронной связи. Распространение по электронной почте хорошо когда Вы имеете только нескольких корреспондентов, если корреспондентов много, Вы можете разместить свой ключ на персональной веб-странице. Это не применимо, однако, если люди, которым нужен Ваш открытый ключ, не знают где найти его в сети.

Для решения этой проблемы используются серверы открытых ключей, которые собирают и распространяют открытые ключи. Открытый ключ либо добавляется к базе данных сервера, либо объединяется с существующим ключом, если такой существует. Когда на сервер приходит запрос ключа, сервер просматривает базу данных и, если находит, возвращает запрошенный ключ.

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

Использование серверов ключей облегчает этот процесс. Когда Блэйк подписывает ключ Элис он посылает подписанный ключ на сервер ключей. Сервер ключей добавляет подпись Блэйка к своей копии ключа Элис. Те кто интересуется обновлением копии ключей Элис, по своей инициативе связываются с сервером ключей и получают оттуда обновленный ключ Элис. Элис не принимает участия в распространении ключа и может получить подписи на своем ключе просто запросив сервер.

Один или более ключей могут быть отправлены на сервер ключей командой --send-keys. В качестве аргумента указываются один или более спецификаторов ключей. Сервер ключей, которому будут переданы ключи задается опцией --keyserver. Аналогично, команда --recv-keys используется для получения ключей с сервера, но команде --recv-keys требуется идентификатор ключа. В следующем примере Элис обновляет свой открытый ключ с новыми подписями с сервера ключей certserver.pgp.com и затем посылает свою копию открытого ключа Блэйка на тот же сервер ключей для передачи своей подписи на нем.

alice% gpg --keyserver certserver.pgp.com --recv-key 0xBB7576AC
gpg: requesting key BB7576AC from certserver.pgp.com ...
gpg: key BB7576AC: 1 new signature

gpg: Total number processed: 1
gpg:         new signatures: 1
alice% gpg --keyserver certserver.pgp.com --send-key [email protected]
gpg: success sending to 'certserver.pgp.com' (status=200)

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

[1] GnuPG перегружает слово ``доверие'' используя его в смысле доверия владельцу и в смысле доверия ключу. Это может вызвать путаницу. Иногда доверие владельцу указывается прямо. В основном, в этом руководстве, термин ``доверие'' используется в смысле доверие владельцу ключа и термин ``достоверность'' для обозначения уверенности в том, что ключ принадлежит человеку указанному идентификатором пользователя.

 

4. Ежедневное использование GnuPG

Определение Ваших требований к защите

Построение Вашей сети доверия

Законность использования GnuPG

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

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

Определение Ваших требований к защите

GnuPG инструмент для защиты Ваших секретов. Ваши секреты защищены если Ваши сообщения не доступны постороннему глазу.

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

Настройка GnuPG включает решение четырех задач:

  • выбор размера Вашей пары ключей,
  • защита Вашего секретного ключа,
  • выбор сроков действия ключей, и
  • управление Вашей сетью доверия.

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

Выбор размера ключа

Выбор размера ключа зависит от типа ключа. В OpenPGP, пара открытого/закрытого ключей обычно состоит из нескольких ключей. Как минимум в нее входит главный ключ для подписи, кроме того, обычно она содержит один или несколько дополнительных ключей для шифрования. При использовании при генерации ключа параметров по умолчанию, главный ключ будет DSA ключом, а подключи будут ElGamal ключами.

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

ElGamal ключи могут быть любого размера. Т.к. GnuPG смешанная система, открытый ключ используется для зашифрования 128-битного сеансового ключа, а закрытый ключ используется для его расшифрования. Размер ключа влияет на скорость зашифрования и расшифрования, т.к. стоимость этих алгоритмов экспоненциальна относительно размера ключа. Большие ключи также требуют больше времени для генерации и больше места для хранения. Наконец, если ключ слишком велик для атаки в лоб, похититель просто прибегнет к другим методам, чтобы получить интересующие его данные. Примерами других методов являются ограбление Вашего дома или офиса, либо нападение лично на Вас. 1024 бит - рекомендуемый размер ключа. Если Вы действительно нуждаетесь в ключе большего размера, то скорее всего уже знаете об этом и должны проконсультироваться с экспертом по защите данных.

Защита Вашего секретого ключа

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

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

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

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

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

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

Мотивацией для подбора ключевой фразы является то, что большинство людей выбирают ключевую фразу, которую проще подобрать, чем произвольный 128 битный ключ. Если в качестве ключевой фразы используется слово, то гораздо проще перепробовать все слова в словарях мировых языков. Даже если слово искажено, например, k3wldood, гораздо проще попробовать слова из словаря с каталогом перестановок. Таже проблема с цитированием. В общем случае, ключевые фразы основанные на естественном языке недостаточны, т.к. в естественных языках не хватает случайности и избыточности. Вы должны избегать использования естественных языков в ключевых фразах, если можете.

Хорошая ключевая фраза такова, что Вы можете ее запомнить, но ее трудно подобрать. Она должна включать символы из всего диапазона печатных символов на вашей клавиатуре. Сюда входят алфавитные символы, в разных регистрах, цифры и специальные символы, такие как } и |. Проявите творческий подход и затратьте немного времени обдумывая ключевую фразу, хороший выбор важен для обеспечения Вашей секретности.

Выбор срока действия и использование дополнительных ключей

По умолчанию, когда Вы создаете новую пару ключей, генерируется главный ключ DSA для подписи и подчиненный ключ ElGamal для шифрования. Это удобно, т.к. роли двух ключей различны, и Вы можете пожелать, чтобы они имели различные сроки действия. Главный ключ для подписи используется для создания цифровых подписей, на нем, также, собираются подписи тех, кто подтверждает принадлежность ключа Вам. Ключ шифрования используется для расшифровки зашифрованных документов, отправленных Вам. Обычно, цифровая подпись имеет продолжительный срок действия, например, неограниченный, и Вы, также, не хотите утратить подписи на Вашем ключе, собранные с большим трудом. С другой стороны, подключ шифрования может периодически изменяться, что повысит безопасность, т.к. взломанный ключ шифрования позволит взломщику прочесть все документы зашифрованные для этого ключа, как в будущем, так и в прошлом.

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

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

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

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

Управление Вашей сетью доверия.

Как и защита Вашего секретного ключа, управление сетью доверия является тем аспектом использования GnuPG, который требует соблюдения баланса между защитой и легкостью использования. Если Вы используете GnuPG для защиты от случайного подслушивания и подделок, то можете позволить себе относительную легкость в доверии чужим подписям на ключах. С другой стороны, если Вы считаете, что кто-либо заинтересован в получении доступа к Вашим секретам, то Вам следует проявлять меньшее доверие в отношении чужих подписей и тратить больше времени на проверку ключей.

Независимо от Ваших личных потребностей в защите, Вы всегда должны быть внимательны подписывая чужие ключи. Подписывать ключ опираясь на собственные потребности в защите эгоистично. На Вашу подпись могут полагаться другие, чьи требования, возможно, более высоки. Если они не смогут полагаться на Вас, это ослабит сеть доверия и затруднит общение всего сообщества пользователей GnuPG. Используйте те же меры предосторожности, подписывая ключи, какие Вы хотели бы, чтобы принимали те, на чьи подписи полагаетесь Вы.

На практике, управление Вашей сетью доверия сведено к присвоению значения доверия некоторому минимальному числу других лиц и настройке параметров --marginals-needed и --completes-needed. Любой ключ, подписанный Вами лично, считается подтвержденным, но, кроме как для маленьких групп, не является практичным подписывать ключ каждого, с кем Вы переписываетесь. Вы будете, следовательно, должны полагаться на других.

Наиболее разумно, проявить аккуратность присваивая значения доверия и затем настроить опции, указывающие GnuPG строгость проверки ключей. Например, Вы можете полностью доверять узкому кругу друзей, которые, как Вы знаете, осторожны при подписи ключей, и незначительно доверять всем остальным, чьи ключи имеются в Вашей связке. Тогда, Вы можете установить значения --completes-needed равным 1 и --marginals-needed равным 2. Если Вы более осторожны, то можете выбрать значения 1 и 3 или 2 и 3 соответственно. Если Вы меньше озабочены секретностью и просто заинтересованы в некотором приемлемом подтверждении достоверности, установите значения 1 и 1. В целом, более высокие значения этих параметров означают, что большее число людей должны сговориться против Вас, чтобы получить подтвержденный ключ, не принадлежащий тому, кому Вы думаете.

Построение Вашей сети доверия

Одного желающего использовать GnuPG недостаточно. Для того, чтобы сообщаться защищенно с другими, Вы должны иметь сеть доверия. Построение сети доверия похоже на укрощение. Люди, с которыми Вы общаетесь, должны использовать GnuPG[1], и должно иметься достаточное количество подписанных ключей, чтобы ключи могли подтверждаться. Это не столько технические, сколько социальные проблемы. Однако, Вы должны преодолеть эти проблемы, если хотите использовать GnuPG.

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

В дополнение к этой начальной сети доверия, Вы можете захотеть конфиденциально переписываться с другими людьми, также использующими GnuPG. Реализация этого желания, однако, может оказаться неуклюжей по двум причинам: (1) Вы не всегда знаете, что человек использует или желает использовать GnuPG, и (2) если Вы и знаете, что человек использует его, могут возникнуть сложности с подтверждением ключей. Первая причина является следствием того, что люди не всегда объявляют о том, что используют GnuPG. Возможный вариант решения этой проблемы, подать пример и объявить, что Вы используете GnuPG. Есть как минимум три способа сделать это: Вы можете подписывать свои сообщения, Вы можете положить свой открытый ключ на своей веб-странице, Вы можете указать идентификатор Вашего ключа в подписи почтового сообщения. Если Вы сообщаете о своем ключе, то делаете более уместным для других сообщить об их ключах. Более того, Вашим корреспондентам будет проще начать с Вами переписываться конфиденциально, если Вы проявите инициативу и сделаете ясным использование Вами GnuPG.

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

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

Законность использования GnuPG

Законодательный статус криптографических программ различен в разных странах, кроме того, законы, регулирующие использование криптографических средств, быстро меняются. Bert-Japp Koops сделал неплохую страничку Crypto Law Survey, к которой Вы можете обратиться, чтобы узнать законодательный статус криптографических программ в Вашей стране.

[1] В этом разделе, GnuPG относится к GnuPG реализации OpenPGP также, как к другим реализациям, типа PGP произодимому NAI.

5. Различные вопросы

Эта глава рассматривает различные вопросы которым не нашлось места в другом месте руководства. Добавленные вопросы могут собираться и распределяться по главам. Если Вы хотели бы увидеть освещенным некоторый вопрос, пожалуйста сообщите об этом. А еще лучше, напишите черновую версию, описывающую интересующий Вас вопрос!

Написание пользовательского интерфейса

Alma Whitten и Doug Tygar провели анализ пользовательского интерфейса PGP 5.0 и пришли к заключению, что начинающие пользователи находят PGP сложным и непонятным. По результатам их тестов, только четверо из двенадцати тестируемых правильно отправили зашифрованные сообщения членам их команды, и трое из двенадцати отправили секрет незашифрованным. При этом половина тестируемых прошли техническую подготовку.

Эти результаты не удивляют. PGP 5.0 имеет хороший пользовательский интерфейс, который превосходен если Вы уже понимаете как работает шифрование открытым ключом и дружите с моделью подтверждения ключей специфицированной OpenPGP. К сожалению, начинающие пользователи, не понимают ни шифрования с открытым ключом, ни правил управления ключами, и пользовательский интерфейс мало помогает им.

Вам следует внимательно ознакомиться с выводами Whitten'а и Tygar'а если Вы пишете пользовательский интерфейс. Они дают комментарии по каждому из тестируемых. Например, оказалось, что многие верят, что сообщение посылаемое другим людям надо зашифровывать своим собственным открытым ключом. Задумайтесь над этим, и Вы поймете, что легко допустить такую ошибку. Как правило, начинающие пользователи испытывают трудности в понимании различий между открытым и закрытым ключами когда используют GnuPG. Как дизайнер пользовательского интерфейса, Вы должны постараться сделать выбор того или ключа прозрачным. Вы можете, также, использовать мастера и другие общепринятые приемы GUI для проведения пользователя сквозь основные задачи, такие как генерация ключа, дополненная генерацией сертификата отзыва ключа, и т.п. Из документа следуют, также, следующие выводы.

  • Безопасность, обычно является второстепенной задачей; люди хотят отправлять почту, просматривать и т.д. Не думайте что пользователи станут читать толстые руководства или разбираться в настройках шифрования.
  • Защита сетевого компьютера не сильнее самого слабого из ее компонентов. Пользователи должны быть осведомлены обо всех аспектах своей безопасности, не ограничиваясь частичными сведениями, как это может быть с текстовыми процессорами или электронными таблицами.
  • Всегда используйте одинаковые термины для одинаковых действий. Избегайте употребления синонимов, типа ``encrypt'' и ``encipher''.
  • Для неискушеных пользователей упростите вывод информации. Слишком большое количество информации скрывает ту, которая важна. Начальная конфигурация интерфейса должна обеспечить пользователя правильной моделью отношений между открытым и закрытым ключами и прозрачным пониманием функций получения и распространения ключей.

Разработка эффективного пользовательского интерфейса для управления ключами еще более сложна. Модель сети доверия OpenPGP, к сожалению, довольно трудна для понимания. Например, спецификация определяет три степени доверия пользователю: нет (none), относительное (marginal), и полное (сomplete). Все грани доверия, испытываемого пользователем, должны уместиться в эти три ячейки. Алгоритм подтверждения ключей также сложен для понимания не специалистов, особенно параметры ``marginals needed'' и ``completes needed''. Так как модель сети доверия четко определена и не может быть изменена, Вам прийдется постараться и разработать интерфейс, который поможет понять ее пользователю. Определенная функция, к примеру, могла бы отображать диаграмму того, как был подтвержден ключ, по запросу пользователя. Основные выводы следующие.

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

I. Список команд

Спецификаторы ключей

Многие команды и опции требуют спецификатор ключа (key specifier). Спецификатор ключа это идентификатор ключа или любая часть идентификатора пользователя ключа. Рассмотрим следующий пример:

alice% gpg --list-keys chloe
pub  1024D/B87DBA93 1999-06-28 Chloe (Jester) <[email protected]>
uid                            Chloe (Plebian) <[email protected]>
sub  2048g/B7934539 1999-06-28

Для этого ключа, 0xB87DBA93, Chloe, Plebian, и oe@tel примеры спецификаторов ключа.

sign — подписать документ

detach-sign — создать отделенную подпись

encrypt — зашифровать документ

symmetric — зашифровать докумет используя только алгоритм симметричного шифрования

decrypt — расшифровать документ

clearsign — создать прозрачную подпись

verify — проверить подписанный документ

verify-files — проверить подписанные документы

gen-key — генерировать новую пару ключей

gen-revoke — генерировать сертификат отзыва для пары ключей

send-keys — послать ключи на сервер ключей

recv-keys — запросить ключ с сервера ключей

list-keys — вывести информацию о ключах

list-public-keys — перечислить ключи из открытых связок

list-secret-keys — перечислить ключи в закрытых связках

list-sigs — вывести информацию о ключах, включая подписи

check-sigs — вывести информацию о ключах, включая заверенные подписи

fingerprint — вывести отпечатки ключей

list-packets — показать пакеты

import — импортировать/объединить ключи

fast-import — импорт/объединение ключей

export — экспортировать ключи из локальной связки

export-all — экспортировать все открытые ключи

export-secret-keys — экспортировать закрытый ключ

export-secret-subkeys — экспортировать закрытый ключ

edit-key — выдает меню для работы с ключами

sign-key — Подписать открытый ключ секретным

lsign-key — подписать открытый ключ локально

trusted-key — считать ключ достоверным

delete-key — удалить открытый ключ

delete-secret-key — удалить открытый и закрытый ключи

store — создавать пакеты rfc1991

export-ownertrust — экспортировать присвоенные значения доверия

import-ownertrust — импортировать значения доверия

update-trustdb — обновить базу данных доверия

print-md — вывести дайджест сообщения

gen-random — генерировать случайные данные

gen-prime — ?

version — вывести информацию о версии

warranty — вывести информацию о гарантиях

help — вывести справку об использовании

sign

sign -- подписать документ

sign filename

Описание

Эта команда подписывает документ filename. Если параметр filename опущен, то документ для подписи берется из стандартного ввода. Если используется опция output, gpg поместит подписанный документ в указанный файл. Эта команда может совмещаться с encrypt.

detach-sign

detach-sign -- создать отделенную подпись

detach-sign filename

Описание

Команда создает файл содержащий подпись. Этот файл может быть использован для проверки того, что исходный файл filename не был изменен. Проверка файла с использованием отделенной подписи выполняется командой verify.

encrypt

encrypt -- зашифровать документ

encrypt filename

Описание

Эта команда зашифровывает документ filename для получателей указанных опцией recipient. Если параметр filename опущен, шифруемый документ берется со стандартного ввода. Если опция recipient опущена, gpg запросит получателя. Если используется опция output, gpg поместит зашифрованную информацию в указаный файл. Эта команда может совмещаться с sign.

symmetric

symmetric -- зашифровать докумет используя только алгоритм симметричного шифрования

symmetric filename

Описание

Эта команда зашифровывает документ используя симметричный алгоритм с ключом образованным из ключевой фразы, полученной при выполнении. Ключ следует выбирать так, чтобы его нельзя было угадать. Для расшифровки полученного в результате документа используется команда decrypt.

decrypt

decrypt -- расшифровать документ

decrypt filename

Описание

Эта команда расшифровывает filename и помещает результат в стандартный вывод. Если параметр filename опущен, то документ для расшифровки берется из стандартного ввода. Используйте опцию output для вывода расшифрованного документа в файл.

clearsign

clearsign -- создать прозрачную подпись

clearsign filename

Описание

Эта команда подписывает сообщение. При этом она оставляет сообщение в читаемом виде. Проверка сообщения производится командой verify.

verify

verify -- проверить подписанный документ

verify sigfile 
signed-files

Описание

Предполагает, что sigfile -- подпись и проверяет его без генерации вывода. При отсутствии параметров, считывает пакет подписи из стандартного ввода (это может быть отделенная подпись, если не используется batch режим). Если указан только sigfile, то он может быть либо полной подписью, либо отделенной. В последнем случае подписанный документ ищется в файле без расширения ".sig" или ".asc" (если такого файла не существует, то он считывается со стандартного ввода; используйте "-", чтобы форсировать чтение со стандартого ввода). При задании более одного аргумента, первый должен определять отделенную подпись, а последующие подписанный документ.

verify-files

verify-files -- проверить подписанные документы

verify-files files

Описание

Специальная версия команды verify, которая не работает с отделенными подписями. Команда считывает имена файлов, которые следует проверить, из командной строки или со стандартного ввода; в последнем случае каждое имя файла должно быть в отдельной строке. Команда предназначена для быстрой проверки большого количества файлов.

gen-key

gen-key -- генерировать новую пару ключей

gen-key

Описание

Команда генерирует пару открытый/закрытый ключ для зашифровки, расшифровки и подписи сообщений. Вы будете запрошены о типе ключа, его размере и сроке действия.

gen-revoke

gen-revoke -- генерировать сертификат отзыва для пары ключей

gen-revoke

Описание

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

send-keys

send-keys -- послать ключи на сервер ключей

send-keys keys

Описание

Команда отправляет открытый ключ на сервер ключей. Параметр keys задает отправляемые ключи. Должна быть определена опция keyserver для указания сервера ключей, на который gpg отправит ключи. Не отправляйте на сервер всю связку ключей --- выберите только новые ключи, и ключи которые Вы изменили. См. также export

recv-keys

recv-keys -- запросить ключ с сервера ключей

recv-keys key-IDs

Описание

Команда загружает один или несколько открытых ключей с сервера ключей. Каждый key-ID - идентификатор ключа. Должна быть определена опция keyserver для указания сервера ключей, с которого gpg будет загружать ключи.

list-keys

list-keys -- вывести информацию о ключах

list-keys names

Описание

Команда выводит список открытых ключей заданых идентификаторами указанными в командной строке. Если идентификаторы пользователей не заданы, gpg перечислит все открытые ключи.

list-public-keys

list-public-keys -- перечислить ключи из открытых связок

list-public-keys names

Описание

Список всех ключей из открытых связок или только ключи заданные параметром names.

list-secret-keys

list-secret-keys -- перечислить ключи в закрытых связках

list-secret-keys names

Описание

Список всех ключей из закрытых связок или только ключи заданные параметром names.

list-sigs

list-sigs -- вывести информацию о ключах, включая подписи

list-sigs names

Описание

То же, что и list-keys, но дополнительно выводит информацию о подписях на ключах.

check-sigs

check-sigs -- вывести информацию о ключах, включая заверенные подписи

check-sigs names

Описание

То же, что и list-sigs, но дополнительно проверяет подписи на ключах.

fingerprint

fingerprint -- вывести отпечатки ключей

fingerprint names

Описание

Выводит список ключей и их отпечатки. Дает тот же вывод, что и list-keys, но добавляется строка с указанием отпечатка ключа. Может совмещаться с командами list-sigs или check-sigs. Если команда задана дважды, то выводятся также отпечатки вторичных ключей.

list-packets

list-packets -- показать пакеты

list-packets

Описание

Перечислить последовательность пакетов. Применимо, в основном, для отладочных целей.

import

import -- импортировать/объединить ключи

import files

Описание

Команда добавляет заданные ключи к связке пользователя. Имеется несколько опций контролирующих работу команды. Наиболее примечательна из них merge-only, которая запрещает добавление новых ключей, но разрешает присоединение новых подписей, идентификаторов пользователя и подключей.

fast-import

fast-import -- импорт/объединение ключей

fast-import files

Описание

То же, что и import, но не перестраивается база данных доверия. Перестроить базу можно позже командой update-trustdb.

export

export -- экспортировать ключи из локальной связки

export names

Описание

Команда экспортирует ключи заданные параметром names, либо, если параметр опущен, все ключи из всех связок. Результат по умолчанию направляется на стандартный вывод. Используйте совместно с armor, если хотите отправить ключи по почте. Ключи, в дальнейшем, могут быть импортированы в другую связку командой import.

export-all

export-all -- экспортировать все открытые ключи

export-all names

Описание

То же, что и команда export, но позволяет экспортировать ключи не являющиеся OpenPGP-совместимыми.

export-secret-keys

export-secret-keys -- экспортировать закрытый ключ

export-secret-keys names

Описание

Подобна команде export, но экспортирует закрытые ключи. Обычно не используется и является рискованой, т.к. закрытый ключ становится незащищенным.

export-secret-subkeys

export-secret-subkeys -- экспортировать закрытый ключ

export-secret-subkeys names

Описание

Подобна предыдущей команде, но обладает некоторыми особенностями. Это GNU расширение OpenPGP и нельзя ожидать, что другие реализации смогут импортировать полученный таким образом ключ.

edit-key

edit-key -- выдает меню для работы с ключами

edit-key key

Описание

Команда позволяет осуществлять работу с ключами. Спецификатор ключа key определяет редактируемую пару ключей. Если спецификатор определяет более одной пары ключей, gpg выдаст сообщение об ошибке и завершится.

Листинг ключа выводимый во время редактирования показывает ключ с его вторичными ключами и всеми идентификаторами пользователя. Выбранные ключи и идентификаторы пользователя помечены звездочкой. Доверие владельцу ключа и его достоверность выводятся с первичным ключом: первое - присвоенное доверие и второе вычисленная достоверность. Значения обозначены символами:

Символ Значение
- Не присвоено значение доверия / Достоверность не вычислена.
e Вычисление достоверности потерпело неудачу.
q Нет достаточной информации для вычисления.
n Не доверять ключу.
m Граничное доверие.
f Полное доверие.
u Безусловно достоверен.

Далее приводится список всех команд редактирования ключа и их описание.

sign

Подписать текущий ключ. Если ключ не был еще подписан локальным пользователем или пользователем, заданным опцией local-user, программа выводит информацию о ключе, включая отпечатки, и запрашивает подтверждение подписи ключа. Этот вопрос повторяется для всех пользователей заданных опцией local-user.

lsign

Подобна sign, но подпись помечается как не экспортируемая и никогда не будет использована другими. Используется чтобы сделать ключи достоверными только локально.

revsig

Отозвать подпись. Запрашивает должен ли быть сгенерирован сертификат отзыва, для каждой подписи сделаной одним из секретных ключей.

trust

Изменить значение доверия владельцу. Немедленно обновляет базу данных доверия и не требует сохранения.

disable

Заблокировать ключ. Заблокированный ключ не может быть использован для шифования.

enable

Разблокировать ключ который был раннее заблокирован командой disabled.

adduid

Добавить новый идентификатор пользователя к ключу.

deluid

Удалить идентификатор пользователя из ключа.

addkey

Добавить новый подключ к текущему ключу.

delkey

Удалить подключ из текущего ключа.

revkey

Отозвать подключ из текущего ключа.

expire

Изменить срок действия ключа. Если выбран подключ, то будет изменен срок его действия. Если нет выбраных ключей, будет изменен срок действия текущего первичного ключа.

key n

Выбрать подключ с индексом n. Используйте 0, чтобы отменить выбор всех.

uid n

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

passwd

Изменить ключевую фразу секретного ключа.

toggle

Переключение между списком открытых и секретных ключей.

check

Проверить все выбранные идентификаторы пользователя.

pref

Вывести список предпочтений.

save

Сохранить изменения и выйти.

quit

Выйти без сохранения изменений.

sign-key

sign-key -- Подписать открытый ключ секретным

sign-key name

Описание

Аналогична подкоманде sign команды edit-key.

lsign-key

lsign-key -- подписать открытый ключ локально

lsign-key name

Описание

Аналогична подкоманде lsign команды edit-key.

trusted-key

trusted-key -- считать ключ достоверным

trusted-key long key ID

Описание

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

delete-key

delete-key -- удалить открытый ключ

delete-key name

Описание

Удалить открытый ключ определенный параметром name из открытой связки.

delete-secret-key

delete-secret-key -- удалить открытый и закрытый ключи

delete-secret-key name

Описание

Удалить пару ключей (оба, открытый и закрытый, ключи) заданную параметром name.

store

store -- создавать пакеты rfc1991

help

Описание

Создает простой пакет в соответствии с rfc1991.

export-ownertrust

export-ownertrust -- экспортировать присвоенные значения доверия

export-ownertrust

Описание

Значения доверия экспортируются в формате ASCII. Применимо для создания резервных копий значений доверия, присвоенных владельцам ключей.

import-ownertrust

import-ownertrust -- импортировать значения доверия

import-ownertrust files

Описание

База данных доверия обновляется значениями доверия из файлов files. Существующие значения будут переписаны. Если файлы не указаны, значения берутся из стандартного ввода.

update-trustdb

update-trustdb -- обновить базу данных доверия

update-trustdb

Описание

Перестраивает базу данных доверия.

print-md

print-md -- вывести дайджест сообщения

print-md algo files

Описание

Выводит дайджест сообщения используя алгоритм algo для каждого из файлов files. Если файлы не указаны, используется стандартный ввод. Если алгоритм задан как ``*'', то выводится дайджест выдаваемый каждым из доступных алгоритмов.

gen-random

gen-random -- генерировать случайные данные

gen-random 0|1|2 count

Описание

Эта команда генерирует count байт случайных данных заданного уровня качества. Если параметр count опущен или равен нулю, то будет сгенерирована бесконечная последовательность случайных данных. Не используйте эту команду если не уверены, что Вам это нужно; она уменьшает драгоценную энтропию системы.

gen-prime

gen-prime -- ?

gen-prime mode bits qbits

Описание

Команда генерирует случайное число. Ищите подробности в исходном тексте, если интересуетесь.

version

version -- вывести информацию о версии

version

Описание

Печатает информацию о версии и список поддерживаемых алгоритмов.

warranty

warranty -- вывести информацию о гарантиях

warranty

Описание.

Выводит информацию о лицензии и гарантиях.

help

help -- вывести справку об использовании

help

Описание

Выводит список команд и опций. Список опций может быть не полным.

II. Список опций

Установка опций

Опции могут быть указаны в командной строке или в конфигурационном файле. Обычное расположение конфигурационного файла ~/.gnupg/options. При указании опции в файле опускаются два предшествующих опции знака "минус" и используется просто название опции с последующими аргументами. Строки первый не пробельный символ в которых "#" игнорируются.

keyserver — указывает сервер ключей

output — Определяет файл, в который будет помещен результат

recipient — указывает получателя шифруемого документа

default-recipient — указывает получателя шифруемого документа по умолчанию

default-recipient-self — использовать ID пользователя ключа по умолчанию, как получателя зашифрованного документа по умолчанию

no-default-recipient — игнорировать значения опций default-recipient и default-recipient-self

encrypt-to — указать дополнительного получателя шифруемого документа

no-encrypt-to — игнорировать опцию encrypt-to

armor — ASCII-форматированный вывод

no-armor — предполагать входящие данные не ASCII форматированными

no-greeting — подавить вывод лицензионной информации, но не входить в пакетный режим

no-secmem-warning — подавить предупреждение об использовании незащищенной памяти

batch — работа в пакетном режиме

no-batch — отключить пакетный режим

local-user — специфицирует идентификатор пользователя используемый для подписи

default-key — задает идентификатор пользователя, как идентификатор по умолчанию для подписей

completes-needed — задает число полностью доверенных лиц, необходимое для подтверждения достоверности нового ключа

marginals-needed — задает число относительно надежных лиц, необходимое для подтверждения достоверности нового ключа

load-extension — указывает расширение для загрузки.

rfc1991 — быть более совместимым с RFC1991 (PGP 2.x)

allow-non-selfsigned-uid — позволяет импорт ключей с идентификаторами пользователя не подписанными этим ключом

cipher-algo — использовать указанный алгоритм для симметричного шифра

compress-algo — использовать указанный алгоритм сжатия

z — установить степень сжатия

verbose — выдавать дополнительную информацию во время работы

no-verbose — отключает вывод дополнительной информации

quiet — подавляет вывод информации

textmode — использовать текстовый режим

dry-run — ничего не менять

interactive — запрос перед перезаписью файлов

yes — отвечать ``yes'' на большинство вопросов

no — отвечать ``no'' на большинство вопросов

always-trust — пропустить проверку достоверности ключа

skip-verify — пропустить проверку подписи

keyring — добавить связку ключей к списку связок ключей

secret-keyring — добавить секретную связку

no-default-keyring — не добавлять связки по умолчанию к списку связок

homedir — установить домашний каталог

charset — установить имя родного набора символов.

no-literal — ?

set-filesize — ?

with-fingerprint — модифицирует вывод списка ключей

with-colons — модифицирует вывод списка ключей

with-key-data — модифицирует вывод списка ключей

lock-once — блокировать базу один раз

lock-multiple — блокировать базы при каждом запросе

passphrase-fd — считывать ключевую фразу не из стандартного входа

force-mdc — форсирует использование шифрования с дополнительным кодом манипуляций

force-v3-sigs — форсирует использование подписей v3 на данных

openpgp — приводит все опции в соответствие спецификации OpenPGP

utf8-strings — предполагать аргументы строками UTF8

no-utf8-strings — не предполагать аргументы строками UTF8

no-options — не использовать файл конфигурации

debug — установить флаги отладки

debug-all — установить все отладочные флаги

status-fd — выводить сообщения о состоянии в альтернативный поток

logger-fd — вывод сообщений об ошибках в альтернативный файл

merge-only — не добавлять новые ключи при импорте

no-comment — do not write comment packets

comment — установить строку комментария для использования в текстовых подписях

default-comment — использовать стандартную строку комментария в текстовых подписях

no-version — опустить строку версии в текстовых подписях

emit-version — включать строку версии в текстовые подписи

notation-data — добавить к подписи примечание

set-policy-url — set the policy URL for signatures

set-filename — установить имя файла в зашифрованном или подписанном сообщении

use-embedded-filename — использовать имя файла содержащееся в сообщении для сохранения его текстовой или проверенной версии

max-cert-depth — установить максимальную длину сертификационной цепочки

digest-algo — установить алгоритм дайджеста сообщения

s2k-cipher-algo — использовать указанный алгоритм для симметричного шифрования секретных ключей

s2k-digest-algo — установить алгоритм дайджеста сообщения для манипуляций с ключевой фразой защищающей секретный ключ

s2k-mode — устанавливает метод обработки ключевой фразы

disable-cipher-algo — предотвратить использование симметричного шифра

disable-pubkey-algo — предотвратить использование шифра с открытым ключом

throw-keyid — не помещать идентификаторы ключа в зашифрованные пакеты

not-dash-escaped — изменяет формат прозрачных подписей

escape-from-lines — изменяет сообщения начинающиеся с ``From'' при прозрачной подписи

keyserver

keyserver -- указывает сервер ключей

keyserver server-name

Описание

Эта опция используется в сочетании либо с recv-keys, либо с send-keys для указания сервера ключей, управляющего набором открытых ключей.

output

output -- Определяет файл, в который будет помещен результат

output file-name

Описание

Эта опция перенаправляет вывод команды в файл указанный параметром.

recipient

recipient  -- указывает получателя шифруемого документа

recipient name

Описание

Опция используется совместно с командой encrypt. Она должна находиться перед encrypt в командной строке. Параметр name либо имя индивидуума, которому отправляется сообщение, либо его e-mail.

default-recipient

default-recipient  -- указывает получателя шифруемого документа по умолчанию

default-recipient name

Описание

ID пользователя name используется в качестве значения recipient по умолчанию, если значение recipient не указано другим образом.

default-recipient-self

default-recipient-self -- использовать ID пользователя ключа по умолчанию, как получателя зашифрованного документа по умолчанию

default-recipient-self

Описание

ID пользователя ключа по умолчанию использовать как получателя по умолчанию. gpg не требует ввода получателя если эта опция идентифицирует действительный ключ. Ключ по умолчанию это первый ключ в наборе секретных ключей или ключ указанный опцией default-key.

no-default-recipient

no-default-recipient -- игнорировать значения опций default-recipient и default-recipient-self

no-default-recipient

Описание

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

encrypt-to

encrypt-to -- указать дополнительного получателя шифруемого документа

encrypt-to name

Описание

Эта опция схожа с опцией recipient, но предназначена для использования в конфигурационном файле. Можно ее использовать с одним из своих ID пользователя для реализации опции ``encrypt-to-self''. Ключ, указанный name, используется только тогда, когда заданы другие получатели, пользователем, либо опцией recipient. При этом не проверяется цепочка доверия ключа name, и даже бездействующие ключи могут быть использованы.

no-encrypt-to

no-encrypt-to -- игнорировать опцию encrypt-to

no-encrypt-to

Описание

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

armor

armor -- ASCII-форматированный вывод

armor

Описание

Эта опция преобразует вывод команды в ASCII формат, который может быть без проблем передан по e-mail.

no-armor

no-armor -- предполагать входящие данные не ASCII форматированными

no-armor

Описание

Нечего добавить.

no-greeting

no-greeting -- подавить вывод лицензионной информации, но не входить в пакетный режим

no-greeting

Описание

Нечего добавить.

no-secmem-warning

no-secmem-warning -- подавить предупреждение об использовании незащищенной памяти

no-secmem-warning

Описание

Нечего добавить.

batch

batch -- работа в пакетном режиме

batch

Описание

gpg не будет задавать вопросов и не допустит интерактивных команд.

no-batch

no-batch -- отключить пакетный режим

no-batch

Описание

Применима если в файле конфигурации установлена опция batch.

local-user

local-user -- специфицирует идентификатор пользователя используемый для подписи

local-user name

Описание

Использовать name как идентификатор пользователя при подписи. Может использоваться в файле конфигурации.

default-key

default-key -- задает идентификатор пользователя, как идентификатор по умолчанию для подписей

default-user name

Описание

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

completes-needed

completes-needed -- задает число полностью доверенных лиц, необходимое для подтверждения достоверности нового ключа

completes-needed n

Описание

Достоверность открытого ключа в Вашей связке подтверждается на основе подписей на этом ключе, сделанных другими ключами из Вашей связки, достоверность которых уже проверена. Опция указывает число необходимых подписей, сделанных владельцами ключей которым Вы полностью доверяете. Ваше доверие владельцу ключа устанавливается при помощи команды edit-key.

marginals-needed

marginals-needed -- задает число относительно надежных лиц, необходимое для подтверждения достоверности нового ключа

marginals-needed n

Описание

Достовернось открытого ключа в Вашей связке подтверждается на основе подписей на этом ключе, сделанных другими ключами из Вашей связки, достоверность которых уже проверена. Опция указывает число необходимых подписей, сделанных владельцами ключей которым Вы не до конца доверяете. Ваше доверие владельцу ключа устанавливается при помощи команды edit-key.

load-extension

load-extension -- указывает расширение для загрузки.

load-extension object-file

Описание

Без коментариев.

rfc1991

rfc1991 -- быть более совместимым с RFC1991 (PGP 2.x)

rfc1991

Описание

Без коментариев.

allow-non-selfsigned-uid

allow-non-selfsigned-uid -- позволяет импорт ключей с идентификаторами пользователя не подписанными этим ключом

allow-non-selfsigned-uid

Описание

Опция позволяет только импорт - подтверждение ключа не пройдет. Эта опция нужна для некоторых немецких ключей сгенерированных pgp 2.6.3in. Вам следует избегать использования этой опции.

cipher-algo

cipher-algo -- использовать указанный алгоритм для симметричного шифра

cipher-algo name

Описание

Использовать алгоритм name для симметричного шифра. Запуск gpg с опцией version выдает список поддерживаемых алгоритмов. Если опция не указана, алгоритм шифрования выбирается из свойств ключевой пары по умолчанию. Для симметричного шифра, это Blowfish.

compress-algo

compress-algo -- использовать указанный алгоритм сжатия

compress-algo n

Описание

По умолчанию 2, который определен в RFC1950. Вы можете использовать 1 для старой версии zlib, которую использует PGP. Алгоритм по умолчанию может давать лучшие результаты, т.к. размер окна не ограничен 8K. Если опция не указана, используются настройки принятые в OpenPGP, т.е., выбирается предпочтительный алгоритм сжатия.

z

z -- установить степень сжатия

z n

Описание

Установка n в 0 отключает сжатие. По умолчанию используется обычный уровень сжатия для zlib (6). В отличие от всех остальных опций, эта может быть использована только в командной строке, и ей предшествует только один знак минус а не два.

verbose

verbose -- выдавать дополнительную информацию во время работы

verbose

Описание

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

no-verbose

no-verbose -- отключает вывод дополнительной информации

no-verbose

Описание

Используется для отключения предыдущей опции verbose.

quiet

quiet -- подавляет вывод информации

quiet

Описание

Выводится минимум информации.

textmode

textmode -- использовать текстовый режим

textmode

Описание

What good is this option?

dry-run

dry-run -- ничего не менять

dry-run

Описание

Эта опция не реализована полностью. Используйте с осторожностью.

interactive

interactive -- запрос перед перезаписью файлов

interactive

Описание

Все сказано.

yes

yes -- отвечать ``yes'' на большинство вопросов

yes

Описание

Все сказано.

no

no -- отвечать ``no'' на большинство вопросов

no

Описание

Нечего добавить.

always-trust

always-trust -- пропустить проверку достоверности ключа

always-trust

Описание

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

skip-verify

skip-verify -- пропустить проверку подписи

skip-verify

Описание

Пропустить проверку подписи. Это ускоряет расшифровку сообщения.

keyring

keyring -- добавить связку ключей к списку связок ключей

keyring file

Описание

Добавляет файл file к списку связок ключей используемых во время работы. Если file начинается с тильды и слэша, они заменяются на домашний каталог. Если имя файла не содержит слэша, предполагается, что файл находится в домашнем каталоге. Домашний катаог - ``~/.gnupg'' если не использована опция homedir.

Имени файла file может предшествовать префикс. Префикс ``gnupg-ring:'' делает указанный файл связкой по умолчанию. Префикс ``gnupg-gdbm:'' делает указанный файл GDBM базой ключей. Может быть полезно использовать эти схемы совместно с опцией no-default-keyring.

secret-keyring

secret-keyring -- добавить секретную связку

secret-keyring file

Описание

То же, что и keyring но для секретных связок.

no-default-keyring

no-default-keyring -- не добавлять связки по умолчанию к списку связок

no-default-keyring

Описание

Связки ключей по умолчанию, находящиеся в домашнем каталоге, не используются при выполнении программы.

homedir

homedir -- установить домашний каталог

homedir directory

Описание

Если опция не указана, по умолчанию используется каталог ``~/.gnupg''. Опция заменяет переменную окружения GNUPGHOME. Нет смысла использовать ее в файле конфигурации.

charset

charset -- установить имя родного набора символов.

charset name

Описание

Используется для преобразования некоторых строк в кодировку UTF-8. Допустимые значения name:

Name Character set
iso-8859-1 Набор Latin 1 (по умолчанию)
iso-8859-2 Набор Latin 2
koi8-r KOI8-R (rfc1489)

no-literal

no-literal -- ?

no-literal

Описание

Опция не для нормального использования. См. подробности в исходном коде.

set-filesize

set-filesize -- ?

set-filesize size

Описание

Опция не для нормального использования. См. подробности в исходном коде.

with-fingerprint

with-fingerprint -- модифицирует вывод списка ключей

with-fingerprint

Описание

Схожа с командой fingerprint но это опция. Используется вместе с командой list-keys.

with-colons

with-colons -- модифицирует вывод списка ключей

with-colons

Описание

Ключи выводимые командой list-keys разграничиваются двоеточиями.

with-key-data

with-key-data -- модифицирует вывод списка ключей

with-key-data

Описание

Указывает команде list-keys печатать ключи и данные открытых ключей.

lock-once

lock-once -- блокировать базу один раз

lock-once

Описание

При использовании опции база данных блокируется при первом запросе и не освобождается до завершения процесса.

lock-multiple

lock-multiple -- блокировать базы при каждом запросе

lock-multiple

Описание

При использовании опции база блокируется при каждом запросе и освобождается сразу после его выполнения. Опция может быть использована для перекрытия опции lock-once в файле конфигурации.

passphrase-fd

passphrase-fd -- считывать ключевую фразу не из стандартного входа

passphrase-fd n

Описание

Если n равен 0, ключевая фраза будет считана со стандартного ввода. Может использоваться если требуется ввод только одной ключевой фразы. Не используйте эту опцию без необходимости.

force-mdc

force-mdc -- форсирует использование шифрования с дополнительным кодом манипуляций

force-mdc

Описание

Эта опция всегда используется с новыми шифрами с размером блока более 64 бит. Опция пока не реализована.

force-v3-sigs

force-v3-sigs -- форсирует использование подписей v3 на данных

force-v3-sigs

Описание

OpenPGP устанавливает, что реализация должна генерировать подписи v4, но PGP 5.x признает подписи v4 только на ключах. Эта опция форсирует использование подписей v3 на данных.

openpgp

openpgp -- приводит все опции в соответствие спецификации OpenPGP

openpgp

Описание

Опция сбрасывает значения всех предыдущих опций, таких как lock-once, lock-once, cipher-algo, digest-algo, compress-algo, s2k-cipher-algo, s2k-digest-algo, и s2k-mode, к значениям совместимым с OpenPGP.

utf8-strings

utf8-strings -- предполагать аргументы строками UTF8

utf8-strings

Описание

Аргументы опций следующих за этой опцией предполагаются строками в формате UTF8.

no-utf8-strings

no-utf8-strings -- не предполагать аргументы строками UTF8

no-utf8-strings

Описание

Аргументы опций следующих за этой опцией предполагаются строками в кодировке charset. Это предполагается и по умолчанию в gpg.

no-options

no-options -- не использовать файл конфигурации

no-options

Описание

Эта опция обрабатывается до того, как будет открыт файл конфигурации.

debug

debug -- установить флаги отладки

debug flags

Описание

Параметр flags получается применением оператора OR к отдельным флагам. Параметр может быть задан в формате C, например, 0x0042. Флаги:

Флаг Значение
1 Детали чтения и записи пакета
2 детали MPI
4 Детали шифра и простых чисел (может открыть чувствительные данные)
8 Функции фильтра iobuf
16 Детали iobuf
32 Детали выделения памяти
64 Кэширование
128 Показать статистику памяти при выходе
256 Детали проверки доверия

debug-all

debug-all -- установить все отладочные флаги

debug-all

Описание

Смотри опцию debug.

status-fd

status-fd -- выводить сообщения о состоянии в альтернативный поток

status-fd n

Описание

Опция перенаправляет сообщения о состоянии в поток с дескриптором n. Список сообщений смотри в файле DETAILS из пакета.

logger-fd

logger-fd -- вывод сообщений об ошибках в альтернативный файл

logger-fd n

Описание

Опция перенаправляет сообщения об ошибках в файл с дескриптором n вместо стандартного потока ошибок.

merge-only

merge-only -- не добавлять новые ключи при импорте

merge-only

Описание

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

no-comment

no-comment -- do not write comment packets

no-comment

Описание

This option affects only the generation of secret keys Output of option (comment?) packets is disabled since version 0.4.2 of GnuPG.

comment

comment -- установить строку комментария для использования в текстовых подписях

comment string

Описание

Все сказано.

default-comment

default-comment -- использовать стандартную строку комментария в текстовых подписях

default-comment

Описание

Эта опция перекрывает ранее использованную опцию comment.

no-version

no-version -- опустить строку версии в текстовых подписях

no-version

Описание

Все сказано.

emit-version

emit-version -- включать строку версии в текстовые подписи

emit-version

Описание

Опция перекрывает ранее использованную опцию no-version.

notation-data

notation-data -- добавить к подписи примечание

notation-data name=value

Описание

Опция добавляет к подписи пару name/value. Параметр name должен начинаться с алфавитного символа, последующие символы могут быть также цифрами и знаками подчеркивания. Параметр value может быть любой печатной строкой. Она будет перекодирована в UTF8, поэтому важно, чтобы опция charset устанавливала правильную кодировку. Если параметр name начинается восклицательным знаком, примечание будет помечено как критическое (см. rfc2440:5.2.3.15).

set-policy-url

set-policy-url -- set the policy URL for signatures

set-policy-url string

Описание

The parameter string is used as the policy URL for signatures (см. rfc2440:5.2.3.19). If the string is prefixed with an exclamation mark, the policy URL packet will be flagged as critical.

set-filename

set-filename -- установить имя файла в зашифрованном или подписанном сообщении

set-filename string

Описание

Параметр string используется как имя файла, сохраняемое в сообщении. Указывает ли это имя файла при расшифровке или проверке сообщения?

use-embedded-filename

use-embedded-filename -- использовать имя файла содержащееся в сообщении для сохранения его текстовой или проверенной версии

use-embedded-filename

Описание

Эту опцию следует использовать с осторожностью, т.к. она может перезаписать существующие файлы.

max-cert-depth

max-cert-depth -- установить максимальную длину сертификационной цепочки

max-cert-depth n

Описание

Параметр n устанавливает максимальную длину цепи проверенных ключей, начиная с безусловно достоверного ключа, до ключа, достоверность которого надо проверить. По умолчанию 5.

digest-algo

digest-algo -- установить алгоритм дайджеста сообщения

digest-algo name

Описание

Параметр name указывает алгоритм дайджеста сообщения, который будет использоваться. Запуск gpg с командой version выводит список поддерживаемых алгоритмов. Заметим, что эта опция может противоречить требованию OpenPGP об использовании 160-битного алгоритма дайджеста для DSA. Для симметричного шифрования по умолчанию используется RIPEMD-160

s2k-cipher-algo

s2k-cipher-algo -- использовать указанный алгоритм для симметричного шифрования секретных ключей

s2k-cipher-algo name

Описание

Использовать name как алгоритм симметричного шифрования для защиты секретных ключей. Запуск gpg с командой version выводит список поддерживаемых алгоритмов. По умолчанию Blowfish.

s2k-digest-algo

s2k-digest-algo -- установить алгоритм дайджеста сообщения для манипуляций с ключевой фразой защищающей секретный ключ

s2k-digest-algo name

Описание

Параметр name задает алгоритм дайджеста применяемый для манипуляций с ключевой фразой. По умолчанию RIPEMD-160.

s2k-mode

s2k-mode -- устанавливает метод обработки ключевой фразы

s2k-mode n

Описание

Параметр n задает число обработок ключевой фразы. Если n равно 0, используется чистая ключевая фраза. По умолчанию равен одному. Если не использована опция rfc1991, этот режим используется также для симметричного шифрования.

disable-cipher-algo

disable-cipher-algo -- предотвратить использование симметричного шифра

disable-cipher-algo name

Описание

Параметр name указывает имя симметричного алгоритма, который будет отключен. Если указанный алгоритм шифрования загружается после этой опции, он не будет отключен.

disable-pubkey-algo

disable-pubkey-algo -- предотвратить использование шифра с открытым ключом

disable-pubkey-algo name

Описание

Параметр name задает алгоритм шифрования с открытым ключом который будет отключен. Если указанный шифр загружается после указания данной опции, он не будет отключен.

throw-keyid

throw-keyid -- не помещать идентификаторы ключа в зашифрованные пакеты

throw-keyid

Описание

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

not-dash-escaped

not-dash-escaped -- изменяет формат прозрачных подписей

not-dash-escaped

Описание

Опция полезна для прозрачных подписей на патч файлах. Сообщения подписанные этим способом не могут быть отправлены электронной почтой, т.к. обрабатываются все пробелы и концы строк. Опция не может быть использована для данных которые содержат пять минусов в начале строки. Используется специальная строка заголовка, чтобы сообщить GnuPG, что была использована эта опция.

escape-from-lines

escape-from-lines -- изменяет сообщения начинающиеся с ``From'' при прозрачной подписи

escape-from-lines

Описание

Так как некоторые почтовые программы заменяют ``From'' в начале строки на ``<From'', применяется эта опция для указания gpg обрабатывать такие строки отдельно при создании прозрачных подписей. Все другие версии PGP делают это таким же образом. Эта опция не включена по умолчанию, поскольку противоречит rfc2440.

A. GNU Free Documentation License

0. PREAMBLE

1. APPLICABILITY AND DEFINITIONS

2. VERBATIM COPYING

3. COPYING IN QUANTITY

4. MODIFICATIONS

5. COMBINING DOCUMENTS

6. COLLECTIONS OF DOCUMENTS

7. AGGREGATION WITH INDEPENDENT WORKS

8. TRANSLATION

9. TERMINATION

10. FUTURE REVISIONS OF THIS LICENSE

How to use this License for your documents

Version 1.1, March 2000

Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

  1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
  2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).
  3. State on the Title page the name of the publisher of the Modified Version, as the publisher.
  4. Preserve all the copyright notices of the Document.
  5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
  6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
  7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
  8. Include an unaltered copy of this License.
  9. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
  10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
  11. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
  12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
  13. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.
  14. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License".

If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

 

 

 

 

 

 

 

 

Практическая часть

Далее я Вам хочу рассказать о задачах, которые мы можем выполнить с помощью GPG.

Итак, пропишем gpg --help

И мы видим список команд:

Команды:

-s, --sign [file]             создать подпись к файлу
--clearsign [file]        создать прозрачную подпись к файлу
-b, --detach-sign             создать отделенную подпись
-e, --encrypt                 зашифровать данные
-c, --symmetric               зашифровать только симметричным шифром
-d, --decrypt                 расшифровать данные (по умолчанию)
--verify                  проверить подпись
--list-keys               вывести список ключей
--list-sigs               вывести список ключей и подписей
--check-sigs              вывести и проверить подписи ключей
--fingerprint             вывести список ключей и их отпечатков
-K, --list-secret-keys        вывести список секретных ключей
--gen-key                 создать новую пару ключей
--delete-keys             удалить ключи из таблицы открытых ключей
--delete-secret-keys      удалить ключи из таблицы закрытых ключей
--sign-key                подписать ключ
--lsign-key               подписать ключ локально
--edit-key                подписать или редактировать ключ
--gen-revoke              создать сертификат отзыва
--export                  экспортировать ключи
--send-keys               экспортировать ключи на сервер ключей
--recv-keys               импортировать ключи с сервера ключей
--search-keys             искать ключи на сервере ключей
--refresh-keys            обновить все ключи с сервера ключей
--import                  импортировать/объединить ключи
--card-status             показать состояние карты
--card-edit               изменить данные на карте
--change-pin              сменить PIN карты
--update-trustdb          обновить таблицу доверий
--print-md algo [files]   вывести хэши файлов

Параметры:

-a, --armor                   вывод в ASCII формате
-r, --recipient NAME          зашифровать для получателя NAME
-u, --local-user              использовать данный User ID для подписывания и ра
сшифрования
-z N                          установить уровень сжатия N (по умолчанию - 0)
--textmode                использовать канонический текстовый режим
-o, --output                  вывод в указанный файл
-v, --verbose                 подробно
-n, --dry-run                 не делать никаких изменений
-i, --interactive             спросить перед перезаписью
--openpgp                 строго следовать стандарту OpenPGP
--pgp2                    создает сообщение совместимым с PGP 2.x

(См. документацию для более полного ознакомления с командами и параметрами)

Примеры:

-se -r Bob [файл]          подписать и зашифровать для получателя Bob
--clearsign [файл]         создать прозрачную подпись
--detach-sign [файл]       создать отделенную подпись
--list-keys [имена]        показать ключи
--fingerprint [имена]      показать отпечатки

О найденных ошибка сообщайте [email protected].

 

итак, начнем…

1) Установим GNU Privacy Guard.

2) Создаем пару ключей (секретный и открытый). Для этого в консоли вводят команду 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.

Выберите тип ключа:
(1) DSA и ElGamal (по умолчанию)
(2) DSA (только для подписи)
(5) RSA (только для подписи)
Ваш выбор (?-подробнее)? ?
Выберите алгоритм.

DSA (aka DSS) - Digital Signature Algorithm может использоваться
только для подписей.

Elgamal - алгоритм используемый только для шифрования.

RSA может использоваться и для подписи, и для шифрования.

Первый (главный) ключ всегда должен быть подписывающим.
Ваш выбор (?-подробнее)?
Пара ключей DSA будет иметь длину 1024 бит.
ключи ELG-E могут иметь длину от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048)
Запрашиваемый размер ключа 2048 бит
Выберите срок действия ключа.
0 = без ограничения срока действительности
<n>  = срок действительности n дней
<n>w = срок действительности n недель
<n>m = срок действительности n месяцев
<n>y = срок действительности n лет
Ключ действителен до? (0)
Ключ не имеет ограничения срока действительности
Все верно? (y/N) Y

Для идентификации Вашего ключа необходим User ID
Программа создаст его из Вашего имени, комментария и адреса e-mail в виде:
"Baba Yaga (pensioner) <[email protected]>"

Ваше настоящее имя: dukeinvisible
Email-адрес: [email protected]
Комментарий: testkey
Вы выбрали следующий User ID:
"dukeinvisible (testkey) <[email protected]>"

Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход? O
Для защиты секретного ключа необходим пароль.

Необходимо сгенерировать много случайных чисел. Желательно, что бы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
+++++.+++++++++++++++++++++++++.++++++++++.++++++++++.++++++++++..++++++++++++++
+.++++++++++.++++++++++++++++++++.+++++++++++++++++++++++++>++++++++++..>+++++..
.............................................................................+++
++
Необходимо сгенерировать много случайных чисел. Желательно, что бы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
++++++++++++++++++++++++++++++.++++++++++++++++++++...++++++++++++++++++++....++
++++++++.+++++++++++++++.+++++++++++++++.++++++++++.+++++++++++++++++++++++++>++
++++++++>.+++++.............................................<+++++..............
.............>+++++....+++++^^^
gpg: ключ BB8B51F6 помечен как абсолютно доверяемый.
открытый и закрытый ключи созданы и подписаны.

gpg: проверка таблицы доверий
gpg: 3 ограниченных необходимо, 1 выполненных необходимо, PGP модель доверия
gpg: глубина: 0  корректных:   1  подписанных:   0  доверия: 0-, 0q, 0n, 0m, 0f,
1u
pub   1024D/BB8B51F6 2010-03-15
Отпечаток ключа = 0498 6E05 1C1F 27FC 7E63  4B6B 4661 CAE1 BB8B 51F6
uid                  dukeinvisible (testkey) <[email protected]>
sub   2048g/13C2CCCE 2010-03-15

3) Можно и позднее при необходимости просмотреть hash всех известных ключей: c:pgp>gpg --fingerprint

C:/Users/▐Ёшщ/AppData/Roaming/gnupgpubring.gpg
-----------------------------------------------
pub   1024D/BB8B51F6 2010-03-15
Отпечаток ключа = 0498 6E05 1C1F 27FC 7E63  4B6B 4661 CAE1 BB8B 51F6
uid                  dukeinvisible (testkey) <[email protected]>
sub   2048g/13C2CCCE 2010-03-15

4) Рассмотрим варианты цифровой подписи в GnuPG.

Сначала произведем шифрование без ЦП. Используем текстовый файл 11.txt, содержимое которого:

Появление шифров

Ряд систем шифрования дошел до нас из глубокой древности. Скорее всего они появились одновременно с письменностью в 4 тысячелетии до нашей эры. Методы секретной переписки были изобретены независимо во многих древних обществах, таких как Египет, Шумер и Китай, но детальное состояние криптологии в них неизвестно. Криптограммы выискиваются даже в древние времена, хотя из-за применяемого в древнем мире идеографического письма в виде стилизованных картинок были примитивны. Шумеры, по-видимому, пользовались тайнописью. Археологами найдены глиняные клинописные таблички, где первая запись замазывалась слоем глины, на котором делалась вторая запись. Происхождение таких странных таблиц могло быть вызвано и тайнописью, и утилизацией. Оттого что число знаков идеографического письма было более тысячи, то запоминание их представляло собой трудную задачу - тут не до шифрования.

 

Применим команду:

c:pgp>gpg -s c:g11.txt

В результате выполнения команды будет создан файл 11.gpg, содержимле которого:

ЈeTї‹$E^пБЃ


ѓK^b63Ьy‚€Ѓ‰Ѓ(‚Ў`&№Ѓ‘€j&|к?`Ё‘Бq‡pЉzЮ‰‡‘ФФф»~УХх¦ЄzзfЦ^·эЄgv]4˜йккчг{ЯыЮыјёёwбТ»7>xрннѓЈЗѕЮїюцWЇNЮ?xееЗ‹»Ъ[З^˜6rФЈbфk_R”˜ёЩ]/=•єa‡т&’T4wнLk]PШzЌI¦DчjМЕИFћ+©Z"Ѓ8‰З¤ҐWёaп•"-q7њc:>!KПҐ.цkvњDЉ2!Х†D‡±в¤eG№њ<2У’


#N-D4л~HҐ3|fЯ#П•±ҐQІJЌЧ№¬pсФЩЗdНjLЙФёЁMMЯПeЙiLґ[1]Љ­%™Е˜Ђ˜JNЖ{e@ hн3kTY&uЌмђ‰<KeЭл!‹y0MУ‘н2kNR


Ґж!N[Lщ<рcЖD+M}®fR™bґ‚лћ«gи5а&%з


‡ІжX6


»f°µшZЊР­nРKЯamBЇх)o9ѓ$±>3=TЯДR'рM;uЗ9ВРMРв5g9™ТН°вLЃi


-[” ­тЯыЋ©Ж!вЊ’™9YЧ2¦yЙ№}ЦфT™ЏЖTВјD§(/ЏBjMґЃ.ШmM,.Ој§t7ЁД•>,5o[SШЦ;д} ѕыsпЛWџєьЧеЯ?|нгg>»уЮП'/^7п<Шывщ+Я¬цЯьaя“ЮєсЖэЏћькхЫOя


Создание файла, содержимое которого не изменяется, а ЦП дописывается в конце в виде дополнительной строки.

c:pgp>gpg -s --clearsign c:g11.txt

Создается файл с расширением *.asc. Его содержимое:

-----BEGIN PGP SIGNED MESSAGE-----

Hash: SHA1

Появление шифров

Ряд систем шифрования дошел до нас из глубокой древности. Скорее всего они появились одновременно с письменностью в 4 тысячелетии до нашей эры. Методы секретной переписки были изобретены независимо во многих древних обществах, таких как Египет, Шумер и Китай, но детальное состояние криптологии в них неизвестно. Криптограммы выискиваются даже в древние времена, хотя из-за применяемого в древнем мире идеографического письма в виде стилизованных картинок были примитивны. Шумеры, по-видимому, пользовались тайнописью. Археологами найдены глиняные клинописные таблички, где первая запись замазывалась слоем глины, на котором делалась вторая запись. Происхождение таких странных таблиц могло быть вызвано и тайнописью, и утилизацией. Оттого что число знаков идеографического письма было более тысячи, то запоминание их представляло собой трудную задачу - тут не до шифрования.

-----BEGIN PGP SIGNATURE-----

Version: GnuPG v1.2.2 (MingW32)

iD8DBQFIRARpbZ1+1rbDdPkRAjiCAJ9vgHTmBCnA++XyEuThte6bdGxl1ACggLbz

9Bpe5jGCBBZkpKIMKOpBVzQ=

=shGW

-----END PGP SIGNATURE-----

Создадим файл с обычной ЦП, но сжатый относительно исходного txt-файла. Кроме того, применяемое преобразование Radix-64 позволит представить любое содержимое создаваемого файла в виде букв. Такой файл имеет расширение *.asc. Команда

c:pgp>gpg -sa c:g11.txt

Содержимое файла:

-----BEGIN PGP MESSAGE-----

Version: GnuPG v1.2.2 (MingW32)

owFlVD2PHEUQPe4woJUmsCySSyiJdHeFMTkJgSHjH1gEJEB2EiQgMjsBITnFARkJ

KSmWLSwLIQ6DhAh7e6c8ddPTtd09t949zfmG17N7xwmC3enpqY9Xr17VN8Xezu7V

T+598dePDw9OXvjhyt0PXrp+fXrw2cHNd1787lB769gL01qOg9piVIx+70uKEhM3

20vjpadS1+zwT95Ekormrp1prUdUBrZeY5Ip0ZNaA3MxspHnSuqFFkggTuIpaenV

Bm7Ye6VIC9wN55hOz8jSW0Spi/2KHSeRYoRMSLXmI6LnoUPsXzlp2RFFrgMnj8y0

4MCIUwsRzTqXH1LpDJ/Zd8XIc2WsRGmUrFLjdS7LDVw8dXbCMVmzHFMyNS5qU9PP

c1lwGtPfbcOBgOIXSeZoTEBMJSfjTr0yIAC09pk1qoMskjqERnYLyIhEnqWyiO51

ihCDxTyYpunIdhmuNWcpglLzlAenDaZ8HvgxY6Klpj5XM6lMMVoEwXXPjYLVCwf0

hxoJcJOSc4JjWXGsB5uBXTPYWnwtRuiPAzfope+AsDYhidf6nLecQZJYn5kequ8A

YqETeIO/ph0DhbrTHGHoJmjxmrOcTel+WHKmwDSClh2VIB/yEN/7jqnGIRviXIyS

jAIavEHbnYEJvYyVnhAFU1mIK6M+Rpb0X5mCi0vLgAJXtVK7CHmp5FZP6cGF4iND

p/BGLOOOgTvlsUFT35w0lxfIZlPl9YHtsW3LZisRtlZ+u/EGbdsJlI8bDDt6gIvV

RuARWjFZtVTZth4IgagwsJ4HLeLDuQHmJ+YNgGH/E6hPBgVuBYESmtZJ5gNJz5nY

ro1BQdntztt7V3byPj7f01d3H5ude6/tXXv5809f/fruo9vv7b/y1eu7H+3f2vm2

uPnwzvvP/bUv353d/vDjw+/3f7r16B8=

=cAvw

-----END PGP MESSAGE-----

Создадим отдельный файл с ЦП.

c:pgp>gpg -b c:g11.txt

Будет создан файл 11.sig. Его содержимое –отдельная ЦП:

€?


HD8mќ~Ц¶Гtщ[1]-  •д<•я~V2–ЩТ«ЌЕ'·ЗсС{ џћ!;ж­сДЧ|/wc+–чяЭ

5) Можно подсчитать hash передаваемого сообщения

c:pgp>gpg --print-md sha1 c:g11.txt

c:g11.txt: 4F7D 16A8 2062 F7F2 4A51 7AD5 F41F 8EA8 3DB4 CB06

6) Зашифровка файла для пользователя

c:pgp>gpg -r dukeinvisible -f c:g11.txt

Расшифровка файла для пользователя и перенаправление в файл:

c:pgp>gpg -r dukeinvisible -d c:g11.gpg > c:g111.gpg

В полученном файле будет содержаться открытый текст сообщения

7) Просмотрим все существующие секретные ключи

c:pgp>gpg --list-secret-keys

C:/GnuPGsecring.gpg

--------------------

sec 1024D/B6C374F9 2008-06-02 dukeinvisible (imaginary) [email protected]

ssb 1024g/4468FD32 2008-06-02

 

8) Необходимо обменяться открытыми ключами с другими пользователями. Для этого сохраним (экспортируем) открытый ключ в файл .gpg и передадим по сети.

c:pgp>gpg --export dukeinvisible >C:gKeyN.gpg

Содержимое файла KeyN.gpg

™ў


HCюф


У°8~©—Ў(Ч&іЛjКUWМЩЙ.ЩP№Ёџ'3`єsћ<}3щDкЎ07$5 yaы„µ8h Њ


·cћi8ИЗ.HлЅ®ѕ±Ѕ7wdЧФ


‘ЉяGЮc4>‚ "ё}ЊVџ].iЌ5ьЅ}{џЯ?FбL=aХ!"ЙW˜Сd·ч


ҐЗE°®C^ц†!TЁБr˜•


ю8џеXЂ


I&ІPд‹—˜Ф}Ѓ+ј}(‰г


“?4ЊгхЩЬ` 0’о9±п:NУOєиў+PБ©И µЬїf яgЁВІвr!hEПЬ¶цЅ*


RБюcіђ–Пщ¬Q»d‑а2ґЩ€ 9НЌZФіГSВ‹2ёЕ‰`е№:


њ~›маЧКЯоiTeјK…C


g(а–;$oЙSЉэжјoв.]ѕ@X8Ч‘b_ёО¬”д 'ЈФ’ҐБIџ#:[1]Гcoя‡"џeг<є]ч«F¦<“вЫ;bwpЛ±ыІa —€&КЛ"Б±}Џ~оJZџ*ЕtJ‚SZ …ґ,Natalka (imaginary) <[email protected]>€[


[1] [1]HCюф


[1]


[1]



[1][1]‑[1]Ђ mќ~Ц¶ГtщДd ћ"?*шa—{ѓJяЭ'k_Ѕtl џPТЂидMэИg%f¤еЌ±E#№


HCюх


ПЖФбПвRфB4ШГkј!јn}uЙ5„ЏNЁј!™Y~КA–ЉчkHЖа"Бм;ї$На№нDґ~"ЫOЮe›_н.­бґ;я–=6»2(Фэч©а­‡eхжСёl¶QuH+€—ЋOn*aRtіЛ&‑‰6яхoю5Zќaї#



ю!ЦO8[1]>Т?рзЦыµЙ“#Юоо$smЧ 8!TEC*IЙ¤<*Е†¶WОылhРrIT&Б­!=b+@¤?ЪЩ$р©Ж¶јQэV…§3ТVЛ˜>ICЋ[щiв#7®ді8тJ‹ОS}лmьа'Є0иu’,QеK·Ца€F


[1] [1]HCюх mќ~Ц¶Гtщ•Р Ј^Вы™Лщч<3±Ё‰{<Ы" ™К3ДхюBТЧ$-·!фвн

Полученный ключ другого пользователя необходимо импортировать для дальнейшего использования

c:pgp>gpg --import C:gDoker

key A9A36E06: public key "Doker(white) <[email protected]>" imported

Total number processed: 1

imported: 1

Ключ добавлен в общий список открытых ключей

c:pgp>gpg --list-keys

C:/GnuPGpubring.gpg

----------------

1024D/B6C374F9 2008-06-02 dukeinvisible(imaginary) [email protected]

1024g/1DC1D965 2008-06-02

1024D/A9A36E06 2008-06-02 Doker(white) <[email protected]>

1024g/A76FB94D 2008-06-02

Теперь возможно шифрования и подписывания файла для пользователя Doker. Для этого будет использоваться открытый ключ пользователя. Для расшифровки же пользователь применит свой секретный ключ.

Осуществим подписывание и шифрование для пользователя Anna:

c:pgp>gpg -se -r Anna c:g11.txt

Для расшифровки пользователь должен применить команду

c:pgp>gpg -d c:g11.gpg > c:gfile.txt

 

…ну вот и все!

 

 

Конечно больше упирался на теоретические ведомости, наполовину лично переведенные с инглиша. Следующий пост будет о PKI

Написать комментарий