Описание GNU Privacy Guard
. | 3. Управление ключами | След.

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

В Главе 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) <blake@cyb.org>

    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) <blake@cyb.org>

    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) <blake@cyb.org>

    Command> quit
    [...]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

###

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

. |  | След.
Управление ключами |  | Распространение ключей