Научная статья на тему 'СХЕМА ГРУППОВОЙ АУТЕНТИФИКАЦИИ НА ОСНОВЕ ДОКАЗАТЕЛЬСТВА С НУЛЕВЫМ РАЗГЛАШЕНИЕМ'

СХЕМА ГРУППОВОЙ АУТЕНТИФИКАЦИИ НА ОСНОВЕ ДОКАЗАТЕЛЬСТВА С НУЛЕВЫМ РАЗГЛАШЕНИЕМ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
129
26
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АУТЕНТИФИКАЦИЯ / ДОКАЗАТЕЛЬСТВО С НУЛЕВЫМ РАЗГЛАШЕНИЕМ / ДЕЦЕНТРАЛИЗОВАННЫЕ КОММУНИКАЦИИ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Шляхтина Елена Анатольевна, Гамаюнов Денис Юрьевич

Рассматривается проблема взаимной аутентификации пользователей в децентрализованных системах обмена сообщениями в отсутствие доверенной третьей стороны. Предложен алгоритм взаимной аутентификации пользователей групп на основе доказательства с нулевым разглашением. Алгоритм позволяет аутентифицировать пользователей децентрализованной сети без установки общего секрета по стороннему каналу, опираясь на существующие в сети цепочки доверия. В основе метода лежит протокол демократичной групповой подписи DGS и алгоритм выработки общего ключа для больших и динамических групп CCEGK. Проведены анализ безопасности, устойчивости схемы аутентификации, в том числе к атаке Сивиллы, и оценка сложности предлагаемого алгоритма. Алгоритм реализован на модельном децентрализованном приложении на основе P2P топологии Chord, с помощью модельной реализации сделаны оценки накладных расходов схемы аутентификации и времени сходимости для некоторых частных случаев конфигураций групп пользователей и начальных цепочек доверия.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Шляхтина Елена Анатольевна, Гамаюнов Денис Юрьевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

GROUP AUTHENTICATION SCHEME BASED ON ZEROKNOWLEDGE PROOF

In this paper, we address the problem of mutual authentication in user groups in decentralized messaging systems without trusted third party. We propose a mutual authentication algorithm for groups using zero-knowledge proof. Using the algorithm, which is based on trust chains existing in decentralized network, users are able to authenticate each other without establishing a shared secret over side channel. The proposed algorithm is based on Democratic Group Signature protocol (DGS) and Communication-Computation Efficient Group Key algorithm for large and dynamic groups (CCEGK). We have performed security analysis of the proposed mutual authentication scheme against several attacks including Sybil attack and have made complexity estimation for the algorithm. The algorithm is implemented in an experimental P2P group messaging application, and using this implementation we estimate overhead of the authentication scheme and convergence time for several initial configurations of user groups and trust chains.

Текст научной работы на тему «СХЕМА ГРУППОВОЙ АУТЕНТИФИКАЦИИ НА ОСНОВЕ ДОКАЗАТЕЛЬСТВА С НУЛЕВЫМ РАЗГЛАШЕНИЕМ»

2021 Математические основы компьютерной безопасности №51

МАТЕМАТИЧЕСКИЕ ОСНОВЫ КОМПЬЮТЕРНОЙ БЕЗОПАСНОСТИ

УДК 004.021

СХЕМА ГРУППОВОЙ АУТЕНТИФИКАЦИИ НА ОСНОВЕ ДОКАЗАТЕЛЬСТВА С НУЛЕВЫМ РАЗГЛАШЕНИЕМ

Е. А. Шляхтина, Д. Ю. Гамаюнов Московский государственный университет имени М. В. Ломоносова, г. Москва, Россия

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

Ключевые слова: аутентификация, доказательство с нулевым разглашением, децентрализованные коммуникации.

DOI 10.17223/20710410/51/3

GROUP AUTHENTICATION SCHEME BASED ON ZERO-KNOWLEDGE PROOF

E. A. Shliakhtina, D. Y. Gamayunov Lomonosov Moscow State University, Moscow, Russia E-mail: ea.shlyakhtina@gmail.com, gamajun@seclab.cs.msu.su

In this paper, we address the problem of mutual authentication in user groups in decentralized messaging systems without trusted third party. We propose a mutual authentication algorithm for groups using zero-knowledge proof. Using the algorithm, which is based on trust chains existing in decentralized network, users are able to authenticate each other without establishing a shared secret over side channel. The proposed algorithm is based on Democratic Group Signature protocol (DGS) and Communication-Computation Efficient Group Key algorithm for large and dynamic groups (CCEGK). We have performed security analysis of the proposed mutual authentication scheme against several attacks including Sybil attack and have made

complexity estimation for the algorithm. The algorithm is implemented in an experimental P2P group messaging application, and using this implementation we estimate overhead of the authentication scheme and convergence time for several initial configurations of user groups and trust chains.

Keywords: authentication, zero-knowledge proof, decentralized communications.

Введение

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

В работе [1] предложена схема многопользовательских защищённых коммуникаций на основе протокола multi-party Off-The-Record (mpOTR) [2] со свойствами секретности будущих сообщений, отказуемости и согласованности текста переписки. Протокол основан на криптосистеме с открытым ключом. Данная схема была использована при разработке криптографического группового чата [3, 4]. При реализации чата был также использован алгоритм аутентификации долговременных открытых ключей пользователей [5] на основе протокола Социалистов-Миллионеров [6], являющегося протоколом с нулевым разглашением. Аутентификация открытых ключей служит защитой от атаки «человек в середине». Протокол Социалистов-Миллионеров позволяет сравнивать общий секрет двух пользователей, содержащий отпечатки1 их открытых ключей и секретную фразу, о которой участники договариваются по стороннему каналу связи. Однако не всегда есть возможность безопасной установки общего секрета или задания вопроса, на который собеседник, и только он, точно знает ответ.

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

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

1. Модель

Сетевая модель: децентрализованная топология сети, каждый участник сети обладает уникальным идентификатором id, парой открытый/секретный ключ (pk,sk).

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

Модельное приложение: децентрализованное приложение для защищённого обмена сообщениями в групповых конференциях, реализованное с помощью браузерной технологии WebRTC [8] (Web Real Time Communication), позволяющей пользователям установить P2P (Peer-to-Peer)-соединение. Пиринговая сеть основана на распределённой хэш-таблице Chord [9], размещённой в узлах сети. На основе этого протокола строится одноранговая сеть с топологией «кольцо», которая используется в качестве P2P-транспорта для чата. Chord служит для организации эффективного доступа к узлам распределённой системы и хранения информации. Безопасность групповых коммуникаций обеспечивается протоколом mpOTR [2], в основе которого лежит криптосистема с открытым ключом. В реализации используется система защищённых групповых коммуникаций, предложенная в [1] и обладающая свойствами конфиденциальности, секретности будущих сообщений, аутентичности, отказуемости, целостности передачи данных и согласованности текста переписки.

2. Краткое описание используемых протоколов

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

В 2006 г. опубликована работа [7] Марка Манулиса, в которой представлена схема демократичной групповой подписи DGS, где роль доверенного менеджера группы отсутствует. DGS позволяет инициализировать группу, принимать решение о принятии нового члена в группу и об исключении старых коллективно всеми участниками, а возможность выявить личность подписавшего появляется у всех членов группы. Вариант групповой подписи без такого элемента централизации, как доверенный менеджер, является наиболее естественным для реализации в условиях одноранговой сети.

Предполагается выполнение следующих условий:

1) члены группы не разглашают данные, которые могут быть использованы посторонними для раскрытия издателя подписи;

2) в группе есть хотя бы один честный пользователь;

3) пользователи аутентифицируют свои сообщения в процессе коммуникации.

Рассматривается пассивный противник, не являющийся членом группы, так как

в результате работы протокола все участники будут обладать групповым секретом.

В основе протокола лежат следующие блоки:

— протокол выработки общего секрета группы CGKA (Contributory Group Key Agreement protocol);

— подпись знания SK (Signature of Knowledge).

Прежде чем перейти к схеме групповой подписи, приведём описание этих блоков. 2.1. Протокол выработки общего секрета

CGKA = {Setup, (Join^, Joinu), Leave}

Setup — интерактивный алгоритм, исполняющийся каждым из n пользователей, желающих выработать общий секрет; инициализирует группу.

Вход: индивидуальный секрет2 i-го пользователя ki, соответствующий вклад Выход: групповой секрет ko.

В результате взаимодействия участников у каждого формируется множество вкладов остальных пользователей Z = {zj : j £ {1,... ,n},j = i}.

(Join,, Joinu) —пара интерактивных алгоритмов, выполняющихся группой и новым членом группы соответственно для добавления нового участника в группу.

Вход Join,: индивидуальный секрет i-го пользователя ki, вклад нового пользователя zu, структура группы.

Вход Joinu: индивидуальный секрет нового пользователя ku, множество вкладов участников Z, структура группы.

Выход (Joinj, Joinu): обновлённое множество вкладов пользователей Z, новый групповой секрет kG.

Leave — интерактивный алгоритм, выполняющийся между (n — 1) остающимися участниками для исключения j-го участника из группы. В результате изменяются индивидуальные секреты некоторых пользователей, обновляется список вкладов пользователей, структура группы и групповой секрет ko.

Вход: индивидуальный секрет участника ki, вклад покидающего группу Zj, структура группы.

Выход: обновлённые список вкладов пользователей Z, структура группы и групповой секрет ko.

В работе [7] не фиксируется определённый протокол выработки общего секрета, но требуется наличие следующих ключевых свойств у протокола:

— для пассивного противника вычислительно сложно найти групповой секрет;

— для пассивного противника вычислительно сложно отличить случайные биты от битов группового секрета;

— секретность будущих сообщений (forward secrecy) — обладая некоторым множеством старых групповых секретов, пассивный противник не сможет вычислить новые;

— секретность прошлых сообщений (backward secrecy) — обладая некоторым множеством текущих групповых секретов, пассивный противник не сможет вычислить старые;

— независимость групповых секретов.

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

Кроме того, определён вид вкладов участников: zi = gki. Здесь g — образующий элемент мультипликативной группы Z*, где p — большое простое число.

В качестве протокола выработки общего секрета в [7] рекомендуется протокол TGDH (Tree-based Group Diffe — Hellman), представляющий собой процедуру генерации общего секрета на основе протокола Диффи — Хеллмана и древовидной структуры группы. Древовидная структура позволяет эффективно пересчитывать общий секрет при динамических событиях, что важно в случае больших групп. Протоколами, основанными на этом принципе и удовлетворяющими требованиям, являются EGK [10], STR [11, 12], CCEGK [13]. Последний является улучшенной версией TGDH с точки зрения вычислительной и коммуникационной сложности, что показано в работе [13]. Поэтому именно этот протокол выбран для построения схемы аутентификации.

2.2. Подпись знания Подпись знания [14] представляет собой неинтерактивное доказательство знания некоторого секрета с нулевым разглашением, зависящее от сообщения. Неинтерактивным оно становится благодаря эвристическому методу Фиата — Шамира [15].

SK = {SKSig, SKVer}

SKSig — вероятностный алгоритм генерации подписи; SKVer — детерминированный алгоритм ее проверки.

Определение 1. Предположение DL (Discrete Logarithm assumption) о сложности дискретного логарифмирования. Пусть G — циклическая группа с образующим элементом д. Не существует вероятностного полиномиального алгоритма A, который с непренебрежимо малой вероятностью вычисляет logg(ga), получая на вход (G,g,ga), где a е Zord(G).

Предположение DL выполняется в G, если Pr[A(G,g,ga) = a] ^ negl(n), где n = ||ord(G)||. Здесь ||x|| —длина записи двоичного представления числа x; negl — пренебрежимо малая функция.

Определение 2. Пусть G — циклическая группа и выполняется предположение DL. Тогда

(c, s) е {0,1}k х Zord(G), (c, s) = SK [(a) : y = ga](m)

есть подпись знания дискретного логарифма элемента y е G по основанию g для сообщения m, если c = H(m||y||g||gsyc), где H : {0,1}* ^ {0,1}k — криптографическая хэш-функция.

Алгоритм её вычисления при знании x = logg (y):

1) Г eR Z*rd(G);

2) c = H(m||y||g||gr);

3) s = r — cx.

Этот подход позволяет конструировать подписи знания более сложных отношений. В [7] для генерации групповой подписи используются такие подписи знания:

1) SK[(ai, в) : y = gega Л (zi = g^1 V... V zn = g^")](m) — подпись знания дискретного логарифма по основанию g2 одного значения множества {z1,... , zn} и равенства этой величины экспоненте g2-составляющей y;

2) SK [(a, в) : y1 = g2 Л y2 = gf g^](m) — подпись знания представления y2 по основаниям g1 и g2 и равенства дискретного логарифма y1 по основанию g2 и экспоненты g1-составляющей величины y2.

2.3. Схема групповой подписи

DGS = {Setup, Join, Leave, Sign, Verify, Trace, TraceVerify}

Введём следующие обозначения:

— t — счётчик, инициализированный нулём; нужен для отслеживания конфигурации группы и увеличивается при любом динамическом изменении. Все параметры групповой подписи связаны со счётчиком;

— Y[t] —открытый ключ группы, Y[t] = (gx[t],ZM) = (yM,Z[t]), где Z[t] = {гщ,... , zn[t]} — множество вкладов всех участников;

— Xi[t] — индивидуальный секрет i-го члена группы;

— X[t] —общий секрет группы.

Алгоритм Setup выполняется всеми участниками для формирования группы. Счётчик t инициализируется нулём. Пользователи устанавливают индивидуальные секреты ж^о] ErZp-1 и вычисляют свои вклады ¿¿[0]. Далее выполняется алгоритм CGKA.Setup(xj[o], Zj[o]) для формирования структуры группы и выработки группового секрета ж [о] Е Zp-1. Из полученной информации создаётся открытый ключ группы Y[t].

Алгоритм Join позволяет новому участнику U присоединиться к группе. U устанавливает свой секрет xu[t+i] Er Zp-1 и вычисляет соответствующий вклад zu[t+1], где t — текущий счётчик конфигурации группы. Затем новый участник и группа выполняют алгоритмы протокола выработки группового секрета CGKA.Join„(xu[t+1]), CGKA.Joinj(zu[t+i]) соответственно. В результате обновляется структура группы и формируется новый групповой секрет.

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

Алгоритм Sign генерирует групповую подпись a = (g,y, S) сообщения m Е {0,1}*,

где

S = SK[(«¿, в) : g = 9в Л У = Ув]9a A (zi[t] = gai v ... V Zn[t] = )](m).

Данная подпись является комбинацией подписей знания, описанных в п. 2.2. Тем самым предъявляющий подпись доказывает, что пара (g, g) шифрует вклад ¿¿[t] в множестве вкладов Z[t], не раскрывая его, а знание дискретного логарифма, используемого для вычисления ¿¿[t], показывает, что подписавшийся действительно владелец вклада ¿¿[t].

Алгоритм Verify реализует проверку подписи a. Для его работы необходим открытый ключ группы Y[t].

Для раскрытия личности подписавшего используется алгоритм Trace. На первом этапе осуществляется проверка подписи сообщения с помощью алгоритма Verify. Далее с помощью группового секрета X[t] выделяется вклад подписавшего сообщение пользователя ¿¿[t], который идентифицирует внутри группы личность подписавшегося. Также на этом шаге формируется доказательство того, что идентификация личности была проведена корректно, т. е. с использованием группового секрета.

Алгоритм VerifyTrace реализует проверку корректности результатов работы функции Trace; эта процедура может быть проведена не членом группы.

В схеме DGS размер групповой подписи и открытого ключа группы линейно зависят от количества членов группы. В настоящее время существуют групповые подписи (например, [14, 16]), где оба эти параметра являются константами, однако это достигается при помощи доверенного менеджера, который обрабатывает все изменения в составе группы и обновляет базу данных, содержащую информацию об участниках, размер которой также линейно зависит от числа участников.

Безопасность DGS основана на предположениях о дискретном логарифмировании DL и о сложности задачи отличия DDH (Decisional Diffie — Hellman assumption). Основными свойствами протокола DGS являются корректность, отслеживаемость, анонимность, несвязываемость, невозможность фальсификации.

3. Описание схемы аутентификации

Приведём описание схемы взаимной аутентификации пользователей. Предполагается существование в сети групп аутентифицированных между собой пользователей, т. е. каждый член группы имеет достоверную информацию об открытых ключах пользователей в этой группе. Протокол, с помощью которого происходила эта аутентификация, не фиксируется. Это может быть метод [5], именно такой вариант использован для реализации в данной работе. Аутентифицированная группа использует протокол групповой подписи DGS для выработки открытого ключа группы. Таким образом, сеть разбивается на множество групп, члены которых могут доказать свою принадлежность к группе третьим лицам, подписывая сообщения от имени группы.

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

groupID : (Y, idList, SigG(groupID, Y, idList)),

где groupID — идентификатор группы; Y — открытый ключ, idList = {idi,... , idn} — список идентификаторов членов группы; Sig^ —групповая подпись.

В данной реализации этот участник определяется своим положением в текущей структуре группы. В протоколе CCEGK им является участник, соответствующий самому правому листу в дереве группы.

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

3.1. Поиск цепочек групп

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

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

Получая на вход список групп в сети groups и идентификаторы пользователей id^, idB, алгоритм 1 (findChains) находит цепочки групп, ведущие от A к B: groupsA — список групп, в которых состоит A; groupsB — список групп, в которых состоит B. Если данные списки не пусты, находится список sharedGroups, являющийся пересечением списков groupsA и groupsB. Если он не пуст, то эти группы являются маршрутом от A к B и вносятся в список output найденных цепочек. Если список sharedGroups пуст, то поочередно перебираются все группы group из списка groupsA и для каждой из них выполняется процедура findPath поиска маршрута от группы group к списку групп groupsB.

Алгоритм 1. findChains: поиск цепочек групп от A к B Вход: groups — список групп; idA; idB.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Выход: output — список, содержащий все найденные цепочки. 1: groupsA := {group Е groups : idA Е group}; 2: groupsB := {group E groups : idB E group}; 3: viewedGroups := []; 4: output := [ ];

5: Если groupsA = 0 A groupsB = 0, то 6: sharedGroups := groupsA П groupsB. 7: Если sharedGroups = 0, то 8: output := output U sharedGroups, 9: иначе

10: Для всех group E groupsA: 11: currentPath := [];

12: findPath(viewedGroups, group, groupsB, currentPath, groups, output).

13: Вернуть output.

Алгоритм 2 (findPath)—рекурсивная процедура поиска маршрута от заданной группы group к списку групп groupsB. Входные параметры:

— viewedGroups — список уже рассмотренных групп (не рассматриваются в последующих шагах);

— group — исходная группа маршрута;

— groupsB — конечный список групп маршрута;

— currentPath — список групп, а именно маршрут, пройденный от пользователя A на текущий момент времени;

— groups — опубликованные данные обо всех существующих в сети группах;

— output — список найденных маршрутов.

Вычисляем список neighbors — это окружение группы group, т. е. те группы, с которыми она пересекается, за исключением уже рассмотренных viewedGroups. Обновляем список рассмотренных групп newViewedGroups и пройденный маршрут path от A на текущий момент времени. Перебираем все группы из списка neighbors: если группа содержит пользователя B, то она является завершением маршрута от A к B и данный маршрут вносится в список output; в противном случае если число звеньев в текущей цепочке не превосходит maxNum, то выполняем процедуру findPath поиска маршрута к groupsB.

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

Определим subgroups как список множеств пользователей, где в одно множество входят пользователи, если алгоритмом 1 найдены цепочки, объединяющие их. Сначала в соответствии с расположением пользователей в списке для Ui subgroups имеет вид

subgroups = ({Ui+i},..., {Un}, {Ui},..., {Ui-i}, {Ui}).

Затем с помощью алгоритма 3 (search) каждый участник находит первого пользователя в списке, до которого есть путь из пересекающихся групп, либо определяет

Алгоритм 2. findPath: поиск маршрута от группы group к списку групп groupsB

Вход: viewedGroups, group, groupsB, currentPath, groups, output. 1: path := currentPath U {group};

2: neighbors := {g е groups | g П group = 0 Л g = group Л g е viewedGroups};

3: newViewedGroups := viewedGroups U neighbors.

4: Для всех g е neighbors:

5: Если g е groupsB, то

6: output := output U {path U {g}},

7: иначе

8: Если |path| < maxNum, то

9: findPath(newViewedGroups, g, groupsB,path, groups, output).

отсутствие связи с остальными участниками. Для хранения идентификаторов пользователей, до которых участнику не удалось найти путь, существует список недостижимых пользователей ипгеасЛлЬ/еРг^. Это позволяет избегать в будущем проверки существования связи с этими пользователями.

Алгоритм 3. search: поиск доступного пользователя для U 1: Для всех subgroup е subgroups:

2: Если U G subgroup, то

3: Для всех user G subgroup:

4: Если user G unreachab/eList, то

5: chains := /mdChams(Uj,user,groups).

6: Если chains = 0, то

7: unreachab/eList := unreachab/eList U {user},

8: иначе

9: Вернуть (user,chains).

Далее U1,... , Un обмениваются сообщениями с результатами. Получив сообщение, пользователь U осуществляет проверку корректности полученной цепочки:

1) все группы из цепочки должны существовать в списке groups;

2) если Ui состоит в данной группе, то происходит проверка данных группы, указанных в groups;

3) если Ui не состоит в данной группе, то его индентификатор не должен находиться в списке idList группы;

4) полученный список должен быть цепочкой пересекающихся групп.

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

Иначе список subgroups сортируется и циклически сдвигается так, что множество, содержащее Ui, становится последним в списке. Процесс повторяется, пока число подгрупп в subgroups не перестанет изменяться — это даст участникам полную информа-

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

3.2. А у т е н т и ф и к а ц и я п о л ь з о в а т е л я

Пусть A и B связаны цепочкой групп chain = {Gi,..., Gn}. Чтобы подтвердить пользователю B данные о своём открытом ключе, A формирует сообщение

m = (idA,pkA,target, chain),

где id a — идентификатор A; pkA — отпечаток его открытого ключа; target = idB — идентификатор получателя сообщения. Затем A отправляет в Gi сообщение с групповой подписью (m, SigGl (m)).

Получив такое сообщение, члены группы Gi действуют по следующему алгоритму:

1) Если i = 1 :

те члены группы, которые состоят в G2, проверяют подпись группы Gi и отпечаток открытого ключа пользователя с idА. Если все проверки прошли успешно, то каждый из них отправляет в G2 сообщение с цепочкой подписей (m,SigG2 (Sigoi(m))).

2) Если i E{2,...,n - 1}:

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

3) Если i = n:

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

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

3.3. Г р у п п о в о й в а р и а н т а у т е н т и ф и к а ц и и

Чтобы использовать предложенный метод для аутентификации группы пользователей, воспользуемся методом Круговой аутентификации [5]. Приведём его краткое описание.

Создавая ориентированное кольцо, пользователи проходят процесс парной аутентификации. Каждый участник аутентифицирует своего соседа по часовой стрелке; если он не прошел проверку, то выбирается следующий за ним участник. В случае успешной аутентификации пара формирует группу доверенных пользователей. Процесс повторяется до первого успешного результата. При этом составляются списки успешно и неуспешно прошедших проверку. Под статусом участника понимается степень доверия к нему. Статус может принимать значения GOOD, BAD, UNKNOWN. Далее пользователи обмениваются полученными результатами. Алгоритм обработки сообщений: — если статус отправителя UNKNOWN: сообщение хранится до момента уточнения

статуса;

— если статус отправителя GOOD: пользователи со статусом UNKNOWN, состоящие в полученном списке доверенных или нарушителей, приобретают статусы GOOD и BAD соответственно и добавляются в соответствующие списки получателя;

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

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

3.4. Исследование безопасности Рассмотрим парную аутентификацию пользователей A и B через цепочку групп Gi,..., Gn, где за пересылку сообщений отвечают пересечения Gi П G2, ..., Gi П Gi+1, ... , Gn-1 П Gn. При этом B примет доказательство A, если до него дойдут сообщения с данными пользователя A, подписанные участниками всех этих групп, и проверки всех групповых подписей пройдут успешно.

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

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

1) Злоумышленник контролирует все узлы, находящиеся в пересечении Gi и Gi+1. Тогда ему необходимо состоять во всех группах цепочки, чтобы уметь переподписывать подменённое сообщение от A к B и от B к A.

2) Злоумышленник контролирует все узлы, находящиеся в пересечении G1 и G2. Тогда данные пользователя A могут быть подменены. Аналогично: нужно контролировать все узлы пересечения групп Gn-1 и Gn для изменения отпечатка открытого ключа B.

3) Подконтрольные злоумышленнику узлы существуют в каждом пересечении цепочки G1,... , Gn, но полностью не контролируется ни одно из них. Тогда неискажённые данные достигнут честных пользователей цепочки и, получив противоречивые данные, пользователи этого пересечения не станут отправлять их дальше, будет превышено время ожидания и процесс аутентификации завершится неуспешно.

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

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

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

В случае атаки Сивиллы, в ходе которой жертва — пользователь Л — окружён только узлами, контролируемыми злоумышленником, как описано в п. 2, В получит подменённый отпечаток ключа Л. Для того чтобы убедить Л принять искажённое доказательство от В, злоумышленнику необходимо состоять во всех группах всех найденных цепочек либо полностью окружать пользователя В.

Пусть злоумышленник имеет подконтрольные ему узлы в каждой аутентифициро-ванной группе сети. Для контроля передачи данных по цепочке он должен полностью контролировать некоторое пересечение групп в ней. Поэтому рассмотрим случай, когда были созданы аутентифицированные группы из честного пользователя сети и контролируемого узла. В этом случае можно полагать, что для любых двух пользователей существует цепочка 0\, 02, С3, объединяющая их (рис. 1).

Рис. 1. Цепочка групп С\, О2, Оз, где красным обозначены подконтрольные злоумышленнику объекты

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

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

3.5. Оценка сложности Пусть п — число участников в группе. В табл. 1 приведены оценки сложности используемых процедур.

Таблица 1

Алгоритм Число раундов Количество возведений в степень Число сообщений

CCEGK.Setup log n 2 log n - 2 2n - 1

CCEGK.Join 1 1 2

CCEGK.Leave 1 3 log n — 3 1

DGS.Sign - 7n - 2 -

DGS.Verify - 7n -

Каждый пользователь в пересечении групп некоторой цепочки, число звеньев которой ограничено числом maxNum, выполняет maxNum запусков процедуры DGS.Verify и два запуска процедуры DGS.Sign. Таким образом, число операций возведения в степень при условии, что N — среднее число участников в группах цепочки, равно

maxNum ■ 7N + 2(7N - 2).

Участники, запустившие процесс аутентификации, находятся в концах цепочки и выполняют

maxNum ■ 7N + (7N - 2) операций возведения в степень.

4. Реализация алгоритма аутентификации

Алгоритм аутентификации методом цепочек групп реализован [17] и протестирован авторами данной работы. Реализация выполнена на языке JavaScript в существующем прототипе децентрализованного криптографического чата, построенного на основе Р2Р-топологии Chord поверх WebRTC.

Параметр maxNum, ограничивающий число звеньев в цепочке при её поиске, в данной реализации равен 6. В 2008 г. опубликована работа [18], в которой исследователями Microsoft проведён анализ, подтверждающий теорию о шести рукопожатиях. Основываясь на данных, полученных за месяц общения 180 миллионов пользователей мес-сенджера Microsoft Instant Messenger, исследователи пришли к выводу, что наиболее короткий путь, связывающий любых двух пользователей этой сети, составляет 6,6 человек. Аналогичные исследования проводились на базе социальной сети Facebook: в 2011г. сеть состояла из 721 миллиона пользователей и размер минимальной цепочки был 4,7 [19], а в 2016 г. этот параметр стал равен 3,5, когда число пользователей достигло 1,59 миллиарда [20].

4.1. Тестирование

Тестирование проведено в браузере Chromium 81.0.4044.138. Были созданы конфигурации цепочек, описанные в табл. 2. В браузере запускались несколько экземпляров приложения — по числу пользователей, изображённых в этой таблице. Приведено время работы алгоритма аутентификации с помощью цепочек групп по уже установленной цепочке.

На рис. 2 приведён график зависимости времени работы алгоритма аутентификации от числа пользователей в пересечении групп, построенный по данным табл. 2 (конфигурации № 1-4), а на рис. 3 — график зависимости времени работы алгоритма аутентификации от числа звеньев в цепочке. График 1 соответствует конфигурациям № 1, 5, 7 и 9, где в пересечениях по одному пользователю, график 2 — конфигурациям №3, 6, 8 и 10, где в пересечениях по три пользователя. Из рис. 2 и 3 видно, что время аутентификации возрастает практически линейно как с увеличением числа пользователей в пересечении групп, так и с увеличением числа звеньев в цепочке из групп.

Таблица 2 Время процесса парной аутентификации А и В по установленной цепочке

№ п/п Конфигурация Время, мс

1 2899

2 СЕЙ) 7006

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3 СЕК) 14706

4 СЕН) 17330

5 СНЩ) 12074

6 40841

7 ШЕ 25022

8 90752

9 СЕЙПОл) 30717

10 (ЗШЗ) 130314

12 3 4

Число пользователей

Рис. 2. Зависимость времени аутентификации Ь от числа пользователей в пересечении групп

1

с м

ю I

О

^ 0,5

0

Рис. 3. Зависимость времени аутентификации Ь от числа звеньев в цепочке из групп пользователей

Заключение

В работе предложен алгоритм взаимной аутентификации пользователей без установления общего секрета по сторонним каналам и проведено исследование его устойчивости к атаке «человек в середине» и атаке Сивиллы.

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

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

1

3

4

Число звеньев

2

5

которых может быть инструментирована или модифицирована потенциальным злоумышленником. Для повышения эффективности предложенного алгоритма возможно использование механизма балансировки дерева группы, описанного в работе [13].

ЛИТЕРАТУРА

1. Коростелева М. В., Гамаюнов Д. Ю. Обеспечение криптографически защищенных групповых коммуникаций с функцией отказуемости // Проблемы информационной безопасности. Компьютерные системы. 2014. №3. С. 74-79.

2. Goldberg I. et al. Multi-party off-the-record messaging // Proc. 16th Conf. Computer Commun. Security. ACM, 2009. P. 358-368.

3. Шейдаев В. Ф., Гамаюнов Д. Ю. Отказуемые групповые коммуникации в модели глобального неограниченного злоумышленника // Прикладная дискретная математика. 2018. №40. С. 72-86.

4. https://bitbucket.org/Enr1g/p2p_mpotr.js — Moscow State University Seclab mpOTR.

5. Нгуен К. К. Доказательство с нулевым разглашением для взаимной аутентификации пользователей группового чата. Выпускная квалификационная работа. М.: МГУ, ВМК, 2018.

6. Boudot F., Schoenmakers B., and Traore J. A fair and efficient solution to the socialist millionaires' problem // Discr. Appl. Math. 2001. V. 111. No. 1. P. 23-36.

7. Manulis M. Democratic group signatures: on an example of joint ventures // Proc. 2006 ACM Symp. Inform. Comput. Commun. Security. 2006. P. 365.

8. https://webrtc.org/ — Real-time communication for the web.

9. Stoica I. et al. Chord: A scalable peer-to-peer lookup service for internet applications // ACM SIGCOMM Comput. Commun. Rev. 2001. V.31. No. 4. P. 149-160.

10. Alves-Foss J. An efficient secure authenticated group key exchange algorithm for large and dynamic groups // Proc. 23rd National Inform. Systems Security Conf. 2000. P. 254-266.

11. KimY., Perrig A., and Tsudik G. Communication-efficient group key agreement // IFIP Intern. Inform. Security Conf. Boston, MA: Springer, 2001. P. 229-244.

12. Kim Y., Perrig A., and Tsudik G. Group key agreement efficient in communication // IEEE Trans. Computers. 2004. V. 53. No. 7. P. 905-921.

13. Zheng S., Manz D., and Alves-Foss J. A communication-computation efficient group key algorithm for large and dynamic groups // Computer Networks. 2007. V. 51. No. 1. P. 69-93.

14. Camenisch J. and Stadler M. Efficient group signature schemes for large groups // Ann. Intern. Cryptology Conf. Berlin; Heidelberg: Springer, 1997. P. 410-424.

15. Fiat A. and Shamir A. How to prove yourself: Practical solutions to identification and signature problems // Conf. Theory Appl. Cryptogr. Techniques. Berlin; Heidelberg: Springer, 1986. P. 186-194.

16. BonehD., BoyenX., and Shacham H. Short group signatures // Ann. Intern. Cryptology Conf. Berlin; Heidelberg: Springer, 2004. P. 41-55.

17. https://github.com/naruneph/Chord_chat — Реализация метода цепочек групп в децентрализованном чате.

18. Leskovec J. and Horvitz E. Planetary-scale views on an instant-messaging network // Proc. 17th Intern. Conf. World Wide Web. 2008. P. 915-924.

19. Ugander J. et al. The anatomy of the facebook social graph. arXiv preprint arXiv:1111.4503. 2011.

20. https://research.fb.com/blog/2016/02/three-and-a-half-degrees-of-separation/ —

Three and a half degrees of separation — Facebook Research. 2016.

REFERENCES

1. Korosteleva M. V. and Gamayunov D. Y. Obespecheniye kriptograficheski zashchishchennykh gruppovykh kommunikatsiy s funktsiyey otkazuyemosti [Protocol for secure group communications with deniability features]. Problemy Informatsionnoy Bezopasnosti. Komp'yuternyye Sistemy, 2014, no. 3, pp. 74-79. (in Russian)

2. Goldberg I. et al. Multi-party off-the-record messaging. Proc. 16th Conf. Comput. Commun. Security, ACM, 2009, pp. 358-368.

3. Sheidaev V. F. and Gamayunov D. Y. Otkazuemye gruppovye kommunikacii v modeli global'nogo neogranichennogo zloumyshlennika [Deniable group communications in the presence of global unlimited advisory]. Prikladnaya Diskretnaya Matematika, 2018, no. 40, pp. 72-86. (in Russian)

4. https://bitbucket.org/Enr1g/p2p_mpotr.js — Moscow State University Seclab mpOTR.

5. Nguen K. K. Dokazatel'stvo s nulevym razglasheniem dlya vzaimnoj autentifikacii pol'zovatelej gruppovogo chata [Zero-knowledge proof based authentication for group chat users]. Graduation Project, Moscow, MSU, 2018. (in Russian)

6. Boudot F., Schoenmakers B., and Traore J. A fair and efficient solution to the socialist millionaires' problem. Discr. Appl. Math., 2001, vol.111, no. 1, pp. 23-36.

7. Manulis M. Democratic group signatures: on an example of joint ventures. Proc. 2006 ACM Symp. Inform. Comput. Commun. Security, 2006, p. 365.

8. https://webrtc.org/ — Real-time communication for the web.

9. Stoica I. et al. Chord: A scalable peer-to-peer lookup service for internet applications. ACM SIGCOMM Comput. Commun. Rev., 2001, vol.31, no.4, pp. 149-160.

10. Alves-Foss J. An efficient secure authenticated group key exchange algorithm for large and dynamic groups. Proc. 23rd National Inform. Systems Security Conf., 2000, pp. 254-266.

11. Kim Y., Perrig A., and Tsudik G. Communicationefficient group key agreement. IFIP Intern. Inform. Security Conf., Boston, MA, Springer, 2001, pp. 229-244.

12. Kim Y., Perrig A, and Tsudik G. Group key agreement efficient in communication. IEEE Trans. Computers, 2004, vol. 53, no. 7, pp. 905-921.

13. Zheng S., Manz D., and Alves-Foss J. A communication-computation efficient group key algorithm for large and dynamic groups. Computer Networks, 2007, vol. 51, no. 1, pp. 69-93.

14. Camenisch J. and Stadler M. Efficient group signature schemes for large groups. Ann. Intern. Cryptology Conf., Berlin, Heidelberg, Springer, 1997, pp. 410-424.

15. Fiat A. and Shamir A. How to prove yourself: Practical solutions to identification and signature problems. Conf. Theory Appl. Cryptogr. Techniques, Berlin, Heidelberg, Springer, 1986, pp. 186-194.

16. Boneh D., Boyen X., and Shacham H. Short group signatures. Ann. Intern. Cryptology Conf., Berlin, Heidelberg, Springer, 2004, pp. 41-55.

17. https://github.com/naruneph/Chord_chat — Chain of groups method realisation for decentralized chat.

18. Leskovec J. and Horvitz E. Planetary-scale views on an instant-messaging network. Proc. 17th Intern. Conf. World Wide Web, 2008, pp. 915-924.

19. Ugander J. et al. The anatomy of the facebook social graph. arXiv preprint arXiv:1111.4503, 2011.

20. https://research.fb.com/blog/2016/02/three-and-a-half-degrees-of-separation/ —

Three and a half degrees of separation — Facebook Research, 2016.

i Надоели баннеры? Вы всегда можете отключить рекламу.