Введение
Использование глобальных сетей для передачи частной или корпоративной информации ставит задачу надежной защиты данных от различного рода атак. Современная криптография предоставляет большой спектр решений по обеспечению безопасности, которые реализованы в виде, удобном для использования в конечном программном продукте: алгоритмы, протоколы, готовые программные модули. Однако, зачастую для их использования необходимо решить ряд вспомогательных задач, предотвращающих потенциальные угрозы. Так, в частности, для асимметричной криптографии необходимо решить проблему доверия к публичным ключам пользователей криптосистемы.
Постановка проблемы
Стандартным решением проблемы взаимного доверия пользователей асимметричной криптосистемы является использование сертификатов открытых ключей [1]. Под доверием понимается уверенность в том, что публичный ключ действительно принадлежит тому пользователю, от имени которого он распространяется. Сертификаты обеспечивают аутентичность и аппелируемость при передаче публичных ключей, используя как инструмент защиты от подделки электронную цифровую подпись.
Чаще всего используется централизованная модель сертификации. Централизованная сертификация имеет следующие принципы:
- сертифицирующий центр создаёт сертификат открытого ключа, этим подтверждая его подлинность;
- Все пользователи доверяют только центру сертификации;
- Центр сертификации подтверждает права на принадлежность открытого ключа пользователю.
Противоположно централизованной модели существует децентрализованная модель сертификации. При децентрализованной сертификации:
- Сертификаты создаются пользователями системы;
- Пользователи сами выбирают, кому доверять, и в какой степени;
- Принадлежность открытого ключа пользователю подтверждает сам пользователь.
Децентрализованная модель сертификации, реализуемая на основе так называемых «Сетей доверия», имеет ряд преимуществ, которые сыграли важную роль при выборе принципа сертификации в реализуемой системе. К таким преимуществам относятся:
- работа системы в офлайн режиме, т. е., если система направлена на работу в пределах одной организации, то ей не нужен доступ в глобальную сеть, достаточно организованной локальной сети;
- данный способ сертификации обеспечивает высокую гибкость и устойчивость всей системы ко всем атакам и воздействиям злоумышленников: один узел может быть подвержен «нападению», но десятки, сотни, тысячи других узлов останутся по-прежнему надёжно защищёнными.
Для реализации надёжной системы распределённой сертификации требуется провести ряд исследований в области асимметричной криптографии и распределённой сертификации.
Цель исследования — изучение методов сертификации и создание децентрализованной системы доверительных отношений пользователей асимметричных алгоритмов шифрования, для обеспечения взаимного доверия участников одной сети по принципу «Point-to-Point».
Для достижения поставленной цели были изучены различные методы и алгоритмы асимметричного шифрования информации, а также способы создания сертификатов и принципы сертификации.
Реализуемая система позволит обмениваться информацией пользователям по принципу «Point-to-Point» на основе степеней доверия друг другу, которые они сами будут устанавливать для каждого пользователя, с которым вступают в контакт.
Система предоставит пользователям возможности:
- построение графа связей между всеми пользователями системы децентрализованной сертификации;
- определение степени доверия пользователю на основе информации, которую знают пользователи друг о друге;
- определение степени доверия пользователю на основе интегрированных параметров: длины пути в построенном графе от одного пользователя к другому; подписях под сертификатом пользователя тех лиц, с которыми у него уже установлено доверие; число связей у узла графа (число пользователей, доверяющих этому лицу);
- в зависимости от длины пути в графе — выставление пользователю различных степеней доверия;
- сохранение информации о доверии тому или иному пользователю в базе данных системы для более быстрой повторной проверки.
В результате проведённых исследований и реализации децентрализованной системы сертификации, пользователям будет предоставлена возможность взаимного доверия при обмене информацией по принципу «Point-to-Point» внутри сети определённого предприятия. Обмен информацией будет подтверждаться сертификатами пользователей. Эта система должна будет предоставить пользователям ту же надёжность в защите информации, что и централизованная система сертификации [2].
Сравнительный анализ систем сертификации
Сравним известные системы сертификации по разным характеристикам и сделаем вывод об актуальности реализации своей системы сертификации пользователей.
Система сертификации | Построение графа доверия пользователей | Соединение с центром сертификации | Ручная установка доверия сертификату | Автоматическая установка доверия без центра сертификации |
«PGP» | нет | нет | да | нет |
«Certified for Windows» | нет | да | нет | нет |
«Apple Certified» | нет | да | нет | нет |
Из приведённой таблицы сравнения систем видно, что ни одна из них не имеет функционала автоматического определения доверия сертификату без участия в этом центра сертификации. Также ни одна из систем не строит граф доверия пользователей системы друг другу.
Из выше описанного можно сделать вывод, что разрабатываема система предоставит своим пользователя тот функционал, которого не хватает в известных системах сертификации.
Математическая модель разрабатываемой системы сертификации
Каждый пользователь системы сам определяет, с какими пользователями он будет общаться, будет доверять им, а какими нет. Но доверие пользователю может быть различным.
Обозначим степень доверия как переменную S. В системе степень доверия варьируется в промежутке от 0 до 1. 0 — абсолютное недоверие пользователю, 1 — абсолютное доверие пользователю. Также этот параметр может принимать и промежуточное значение, в зависимости от которого, пользователи буду предоставлять друг другу информацию различной степени конфиденциальности:
- s = 0 — нет доверия пользователю;
- 0 < S ≤ 0.3 — низкое доверие пользователю;
- 3 < S ≤ 0.7 — хорошее доверие пользователю;
- 7 < S < 1 — высокое доверие пользователю;
- S = 1 — абсолютное доверие пользователю.
Для определения степени доверия пользователю система будет выполнять строго определённый алгоритм. Изначально система со стороны пользователя A берёт сертификат пользователя B и проверяет список тех, кто подписался под этим сертификатом и доверяет ему. Среди этого списка система будет пытаться найти тех, кому доверяет пользователь A («друзей» пользователя A). Если таких пользователей не найдено, то система будет просматривать «друзей» «друзей» пользователя A и т. д., пока не переберёт все возможные варианты. Если в конечном итоге, таких пользователей найдено не будет, то степень доверия между пользователями A и B устанавливается в значение 0 и автоматически установлена быть не может.
Степень доверия пользователю будет состоять из нескольких составляющих, которые будут влиять на коэффициент доверия в определённом процентном соотношении. Это отношение пользователь будет выбирать для себя сам. Составляющими будут являться:
- Длина самого короткого пути во взвешенном графе, между пользователями A и B (по умолчанию 30% от всего коэффициента степени доверия) — D (находится по алгоритму Дейкстры);
- общее доверие пользователей, которые доверяют пользователю B (по умолчанию 30% от всего коэффициента степени доверия) — O;
- число пройденных узлов на всём пути от пользователя A до пользователя B (по умолчанию 40% от всего коэффициента степени доверия) — K.
Процентные значения для каждой составляющие обозначим как pD, pO и pK соответственно.
Теперь рассмотрим алгоритмы расчёта каждой составляющей степени доверия пользователей более подробно.
Длина пути во взвешенном графе от пользователя A до пользователя B на графе будет рассчитываться на основе «Алгоритма Дейкстры». Далее происходит вычисление значения переменной . Из вышеописанного алгоритма нахождения пути система получает длину самого кратчайшего пути из начальной вершины в конечную. Обозначим это значение переменной k.
Максимальная длина пути в таком случае может быть равна k. Далее проверяем — сколько знаков в целой части имеет число k, если 0, то t = k, если 1, то , если 2, то и так далее, где t — промежуточная переменная. После чего получаем конечное значение: D = t⋅pD.
Вычисление значения O происходит немного проще, чем D и не требует для себя нахождения пути от пользователя A до пользователя B. Данные для вычисления этого коэффициента система будет получать из базы данных.
В рассмотрение берётся пользователь B (узел, с которым система пытается установить связь). Система перебирает все рёбра графа, которые входят в эту вершину. В переменную t записывается сумма весов всех таких рёбер. Максимальное значение t в таком случае будет равно числу рёбер, входящих в рассматриваемую вершину. Далее проверяем — сколько знаков в целой части имеет число t, если 0, то t не изменяется, если 1, то , если 2, то и так далее, где t — промежуточная переменная. После чего, получаем конечное значение: O = t⋅pO.
Вычисление значения K также требует нахождения пути от пользователя A до пользователя B. Из алгоритма нахождения пути система получает количество вершин, через которые проходит путь от A до B, обозначим их как g = U.Length. Также, система знает общее число пользователей в системе (количество вершин графа), обозначим их как f = V.Length. Тогда, , где t — промежуточная переменная. После чего, получаем конечное значение: K = t⋅pK.
После того, как система вычислит все три составляющие степени доверия пользователю, происходит их сложение: S = D + O + K.
Значение степени доверия S гарантированно будет варьироваться в промежутке от 0 до 1, так как значения переменных D, O и K будут принимать значений в диапазонах: , , .
Программная реализация системы сертификации
Разработанная система сертификации является многопользовательской сетевой системой взаимной сертификации зарегистрированных в ней пользователей. При регистрации формируется сертификат и ключи пользователя, которые хранятся в базе данных системы. На основе этих ключей и сертификатов система в дальнейшем определяет степень доверия пользователей друг другу. Также доступна возможность автоматического определения доверия между пользователями.
На рис. 1 представлена схема базы данных системы сертификации пользователей, состоящая из таких сущностей как:
- Таблица «Пользователи» — это пользователи, работающие в системе;
- Таблица «Авторизация» — это сущность, хранящая авторизационные данные пользователей;
- Таблица «Должности» — содержит должности определённого предприятия;
- Таблица «Организации» — сущность, хранящая список организаций определённого города;
- Таблица «Города» — сущность, содержащая список городов;
- Таблица «Ключи» — сущность, которая содержит ключи пользователей;
- Таблица «Сертификаты» — таблица, хранящая информацию сертификатах каждого пользователя;
- Таблица «Доверие» — таблица, в которой содержится информация о доверии пользователей системы друг другу.

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

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