id: Гость   вход   регистрация
текущее время 17:00 19/03/2024
создать
просмотр
редакции
ссылки

Сеть доверия


Оглавление документа:


Каждый пользователь PGP может самостоятельно сгенерировать свой ключ. Каждый пользователь может присвоить ключу любое имя и любой email-адрес. Всё это открывает широкий простор для жульничества и атак по методу "человек в середине". Дабы убедиться, что конкретный ключ действительно принадлежит предполагаемому владельцу, нужно как-то это проверить. Это нетрудно, если вы лично знакомы с человеком, в противном же случае может быть весьма затруднительно.


Здесь я объясню, какие механизмы предлагает PGP для решения этой проблемы. Основные из них – это цифровые сертификаты ключей и модель отношений доверия Web of Trust. Здесь не будут затронуты общие принципы доверия и подлинности – о них вы можете прочитать в руководстве "Введение в криптографию".

О сертификатах ключей


Терминология сети доверия Web of Trust:

Большая связка – все OpenPGP-ключи, циркулирующие на общественных серверах мира.


Прочный набор (strong set) – группа открытых ключей, надёжно скреплённых друг с другом множеством несовмещённых перекрёстных удостоверяющих подписей и коротких цепочек сертификации. Центр галактики Сети доверия.


Связный набор (reachable set) – группа открытых ключей, имеющих хотя бы одну цепочку сертификации от прочного набора. Прочный набор входит в связный набор и является его сердцевиной. Границы связного набора обозначают границы Сети доверия. Ключи из связного набора, не входящие в прочный набор, также называют периферийным набором.


Изолированный набор (isolated set) – группа (группы) открытых ключей, не имеющих связи с прочным набором. Ключи, расположенные за пределами Большой Сети доверия, и не имеющие от неё цепочек сертификации.


Цепочка, или путь, сертификации – небольшой граф Сети доверия, определяемый удостоверяющими подписями: ключ А подписывает ключ Б, ключ Б подписывает ключ В, который, в свою очередь, заверяет ключ Г. Подобный путь от ключа А к ключу Г посредством последовательности удостоверяющих подписей и есть цепь сертификации.


Несовмещённые цепочки сертификации – несколько параллельных цепочек от ключа А к ключу Г, не имеющие общих вершин. Чем больше несовмещённых цепочек связывают ваш ключ с чужим, тем больше вероятность, что он достоверен (маловероятно, чтобы несколько человек заверили один липовый ключ).


MSD (mean strong set distance) – средняя удалённость данного ключа от прочного набора. Средневзвешенный индекс, обозначающий количество степеней (звеньев цепи сертификации), отделяющих данных ключ от всех ключей, входящих в прочный набор.

Сертификат открытого ключа PGP – это форма удостоверения, несущая идентификацию пользователя (т.е. объективный способ его опознавания), и связанная с определённым открытым ключом с помощью подтверждающей подписи третьей стороны – подписи поручителя. Согласно стандарту OpenPGP, подтверждающая подпись бывает четырёх типов, каждый из которых предполагает определённую глубину проверки соответствия между открытым ключом и его вероятным владельцем:


  • Generic certification – общее заверение сертификата и открытого ключа. Издатель такой подписи (поручитель) никак не оговаривает, что провёл какую-то проверку ключа и его связь с лицом, чьё имя указано в сертификате.
  • Persona certification – личное заверение сертификата и открытого ключа. Издатель такой подписи явно указывает, что не проводил проверку, является ли фактический владелец ключа лицом, чьё имя указано в сертификате. Такая подпись только подтверждает связь между сертификатом и пакетом открытого ключа.
  • Casual certification – небрежное заверение сертификата и открытого ключа. Издатель подписи указывает, что провёл некоторую беглую проверку личности фактического владельца ключа, которая с некоторой долей вероятности соответствует имени, указанному в сертификате.
  • Positive certification – позитивное заверение сертификата и открытого ключа. Издатель подписи провёл тщательную идентификацию личности фактического владельца ключа и гарантирует, что в сертификате ключа указано именно его имя.

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


Так или иначе, PGP не позволяет задавать тип подверждающей подписи, такой функциональность обладает GnuPG, а все сертифицирующие подписи PGP имеют тип Generic certification. Устоявшегося определения подписи подобного типа не существует (по большому счёту, она может значить всё, что угодно). Такая подпись на сертификате ключа может иметь примерно следующее значение: "Я поручаюсь в том, что подписанный мною ключ действительно принадлежит лицу, указанному в сведениях (идентификации) сертификата". Такое значение, к сожалению, нельзя считать достаточным и полным: например, кому из всех живущих на Западе людей с именем Joe Smith принадлежит конкретный ключ с таким именем в сертификате, каков источник уверенности поручителя, что ключ принадлежит данному Джо Смиту, подтверждает ли поручитель, что Джо Смит является истинным владельцем указанного в сертификате почтового ящика smith@matrix.com?


Поэтому более точное значение подтверждающей подписи звучит так: "Я поручаюсь, основываясь на своей личной непосредственной убеждённости и объективных подтверждающих свидетельствах, в том, что подписанный мною открытый ключ и связанный с ним закрытый ключ действительно принадлежат лицу, чьё имя, email и другие идентификационные сведения указаны в сертификате ключа". Чтобы дать такую подтверждающую подпись, поручитель обязан удостовериться в следующем (в приведённой последовательности):


  1. Ключ индивидуален и уникален. Для этого владелец ключа должен сообщить его цифровой отпечаток.
  2. Указанный в сертификате ключа человек (имя, фото) является тем, за кого себя выдаёт. Обычно с этой целью проверяют персональные документы государственного образца или иное надёжное удостоверение личности с фотографией.
  3. Владелец открытого ключа обладает соответствующим закрытым ключом. Если он может расшифровать зашифрованный данным открытым ключом текст и сгенерировать цифровую подпись, сверяемую данным открытым ключом, значит он владеет и соответствующим закрытым ключом.
  4. В сертификате указаны принадлежащие владельцу ключа контактные координаты. Он должен доказать, что имеет полный доступ к этим координатам для получения и отправки сообщений.

Но даже если поручитель заверил своей подписью сертификат и ключ, подразумевая именно такое значение своей подтверждающей подписи, всё равно ряд вопросов остаются открытыми: каким документом владелец ключа удостоверил свою личность, надёжен ли этот документ, было ли удостоверение личности подлинным, не был ли закрытый ключ скомпрометирован и похищен? Эти вопросы вплотную подводят нас к критерию доверия в среде асимметричных криптосистем и к распределённой модели доверия PGP Web of Trust.

Распределённость против централизованности


Модели доверия в криптосистемах с открытым ключом делятся на два крупных вида: централизованные и распределённые. В централизованных, или иерархических, моделях все пользователи системы полагаются на доверие к одному корневому источнику, подтверждающему достоверность всех открытых ключей. Такая модель обычно применяется в корпоративной среде (где единый источник доверия обязателен) и в системах удостоверяющих центров на базе стандарта X.509.


В распределённой системе нет единого источника сертификации, напротив, каждый пользователь самостоятельно решает, кому он доверяет, а кому не доверяет в удостоверении других открытых ключей, создавая тем самым личную сеть поручителей. Такой подход обеспечивает гибкость и устойчивость системы к любому злонамеренному воздействию: можно повлиять на один узел распределённой системы, но тысячи других узлов сохранят полную надёжность. В качестве наглядного примера стоит привести выдержку из статьи Брюса Шнайера, опубликованной в его журнале-рассылке CRYPTO-GRAM:


"... Предположим, у меня есть несколько пачек денег, каждая из которых помещена в индивидуальный сейф. Сейфы характеризуются стоимостью их взлома. 100-долларовая пачка денег, защищённая 200-долларовым сейфом, хранится надёжно, поскольку пытаться её украсть экономически невыгодно. 100-долларовая пачка, находящаяся в 50-долларовом сейфе, недостаточно защищена, ибо взломщик получит выгоду в 50 долларов от кражи, что делает попытку взлома оправданной.

Вот мой пример. Есть десять 100-долларовых пачек, каждая хранится в индивидуальном 200-долларовом сейфе. Все они в безопасности. И есть ещё десять 100-долларовых пачек, которые хранятся в 50-долларовых сейфах. Они защищены ненадёжно.


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


К сожалению, новое дорогое хранилище не обеспечит лучшей сохранности денег. При старых сейфах можно было похитить десять пачек с издержками в 50 долларов на пачку (вы помните, другие десять пачек похищать экономически нецелесообразно); суммарный доход взломщика составит 500 долларов. С новой системой мы имеем двадцать 100-долларовых пачек, защищённых единым 500-долларовым механизмом. Взломщик теперь имеет куда больший стимул взломать эту более надёжную систему, ведь он сможет украсть 2000 долларов, затратив всего 500 долларов на взлом, в итоге извлекая из операции 1500 долларов прибыли.


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

Зачем плести сеть?


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


Рассмотрим простой пример. Ко мне приходит подписанное письмо от Олафа Колкмана из европейской организации RIPE (Reseaux IP Europeenne). Чтобы сверить цифровую подпись мне нужен его открытый ключ. Для его получения удобнее воспользоваться интерфейсом депозитария, введя в строку запроса email-адрес отправителя письма. Но откуда уверенность, что в результатах поиска я получу открытый ключ именно этого человека, а не качественную фальшивку, которой также заверено и письмо (тем более, что один из ключей в результатах был аннулирован)? Злоумышленник мог создать собственный ключ, указав в сертификате идентификацию реального человека, а потом загрузить этот поддельный ключ на сервер.


Значит, мне придётся каким-то образом удостовериться в подлинности ключа. Есть несколько способов сделать это:


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

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


Примерный граф Сети доверия PGP (3 Кб)
Рис. 1

Для этой цели существует специальный инструмент, называемый визуализатором цепочек сертификации. В него я ввожу ID своего ключа, от которого желаю проследить путь поручительств (0x4D8BB49E), и ID подозрительного ключа, достоверность которого нужно оценить (0x76092287). Система обрабатывает запрос и выдаёт следующую схему: рис. 1.


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


У меня есть подлинная копия служебного ключа PGP Corporation (0x358D5777), которым компания подписывает открытые ключи своих сотрудников. По этой схеме я могу определить, что названным ключом был заверен ключ Уилла Прайса (0xCF73EC4C), вице-президента по разработкам PGP Corporation, следовательно, у меня есть все основания доверять его подлинности. Уилл Прайс, в свою очередь, является поручителем за достоверность ключа шифрпанка Лаки Грина (0xFD3428B4), а тот подтверждает подлинность ключа Нилса Баккера (0x0DCB98C5). Нилс Баккер подписал ключ Олафа Колкмана, по-видимому, имея достаточные основания быть уверенным в подлинности его ключа. Даже если я не доверяю подтверждающей подписи Нилса Баккера, есть ещё по меньшей мере три несовмещённых цепочки сертификации, поручительствующие за подлинность ключа Колкмана. В качестве промежуточных звеньев цепочек много людей, которым я в полной мере доверяю, считая их абсолютно компетентными в проверке надёжности ключей; кроме того, ключ Колкмана от моего ключа отделяет всего четыре степени разделения, иными словами, четыре звена поручителей, что совсем немного в сравнении со среднестатистическими шестью. Поэтому (по моему личному убеждению) вероятность того, чтобы полученный мною ключ Олафа Колкмана оказался поддельным, крайне мала.


Всё же в ходе анализа схемы может возникнуть вопрос, насколько я могу быть уверен в надёжности того или иного звена цепочки сертификации, особенно, если приходится полагаться на небольшое количество несовмещённых цепочек. Для сбора дополнительных сведений о любом ключе можно использовать другой инструмент – запрос в статистику Сети доверия, что позволяет по индексу MSD (mean strong set distance, средняя удалённость от прочного набора; см. ниже) составить представление о положении ключа в системе Сети доверия, по количеству и составу поручителей примерно оценить компетентность его владельца и "вес" издаваемых им подписей.


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


Чтобы иметь возможность находить такие комплексные цепочки, очень важно, чтобы пользователи проверяли подлинность ключей своих корреспондентов, заверяли их подписями и обновляли на сервере. В конечном итоге это будет благом для всех. Такие взаимные поручительства образуют своего рода сеть, именно поэтому модель доверия PGP называется Web of Trust – Сеть доверия.

Понятие доверия


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


Чтобы наделить чужой ключ той или иной степенью доверия (ключ уже должен быть расценен программой как подлинный), подумайте, какого доверия заслуживает его владелец, порядочный и честный ли это человек, насколько он компетентен в работе с PGP, достаточное ли имеет понимание механизмов и уязвимостей асимметричной криптографии. Помочь в этом деле может анализ ключа в Сети доверия: сколько и какие ключи заверил этот человек, раздаёт ли он подписи направо и налево, кто сертифицировал его ключ, много ли перекрёстных подписей и какого их качество. Интегральным показателем этих критериев становится ранг ключа в Сети доверия, основанный на индексе MSD. Всем этим процедура наделения доверием существенно отличается от сертификации ключа, когда вы должны оценить только его взаимосвязь с предполагаемым владельцем, но не личностные качества владельца ключа.


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

Анатомия Сети доверия


Чем больше взаимных перекрёстных сертифицирующих подписей будет аккумулировано в Сети доверия, тем короче начнут становиться цепочки сертификации, и тем выше станет общая убеждённость в подлинности всякого ключа. Ключи, надёжно связанные множеством коротких удостоверяющих цепочек, называются прочным набором. Количество этих ключей в настоящее время составляет примерно 25 тысяч, и именно они образуют стержень и ядро всей Сети доверия, или связного набора – ключей, имеющих хотя бы одну цепочку сертификации от прочного набора. Связный набор исчерпывается примерно 70 тысячами ключей, при этом в названные 70 тысяч входят 25 тысяч ключей прочного набора. Ключи из связного набора, не входящие в прочный набор, называют периферийным набором (порядка 45 тысяч).


Галактика Сети доверия PGP (8 Кб)
Рис. 2

Всё это интересным образом напоминает устройство нашей галактики (рис. 2), где есть довольно плотное ядро (прочный набор) из близко расположенных звёзд, и диск (периферия), в середине которого расположена наша планета. Разумеется, как и в физическом мире, вселенная ключей PGP не исчерпывается связным набором, границы которого обозначают границы Большой Сети доверия. На общественных серверах Интернета хранится около двух миллионов открытых ключей, которые образуют "Большую связку". Большинство из них не имеет сертифицирующих подписей; некоторые имеют подписи, но не от ключей, входящих в Большую Сеть доверия. Такие небольшие группы взаимоподписанных ключей и ключи, не имеющие подтверждающих подписей, называются изолированным набором. Они не учитываются в статистике Сети доверия, и определить их подлинность по приведённому выше методу анализа цепочек сертификации невозможно. Если же любой владелец ключа из связного набора проверит надёжность одного из изолированных ключей и подпишет его, подтверждающая подпись окажется связующим звеном, ведущим к сердцу прочного набора, и эта группа изолированных ключей тут же вольётся в Большую Сеть доверия.


© 2003-2005 SATtva

 
Несколько комментариев (5) [показать комментарии/форму]
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3