Атрибутивный контроль доступа в сервисной сети

УДК 004.728.8

АТРИБУТИВНЫЙ КОНТРОЛЬ ДОСТУПА В СЕРВИСНОЙ СЕТИ ATTRIBUTE BASED ACCESS CONTROL IN SERVICE MESH

К. Ю. Пономарёв

Тюменский государственный университет, г. Тюмень, Россия

K. Y. Ponomarev

University of Tyumen, Tyumen, Russia

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

Ключевые слова: контроль доступа, архитектура приложений, сервисная сеть.

DOI: 10.25206/2310-9793-7-4-85-89

I. Введение

Современные облачные и микросервисные приложения состоят из сотен сервисов, каждый из которых может иметь тысячи экземпляров. Поддержка механизмов взаимодействия в такой динамичной среде становится очень сложным процессом. Для решения этой проблемы было предложено ввести дополнительный программный слой, обеспечивающий безопасную, быструю и надежную коммуникацию между сервисами. Такая модель носит название сервисной сети (service mesh) и представляет собой сеть посредников (прокси), к которым могут подключаться сервисы для полного абстрагирования сети. В задачи сервисной сети входит: предоставить единую унифицированную точку входа для каждого сервиса и взять на себя решение всех проблем, связанных с надежной и безопасной доставкой запросов по сети. На практике данная модель реализуется по шаблону расширения (sidecar pattern) - каждый элемент сервисной сети реализуется отдельным контейнером, выступающим в роли прокси для сервиса. Сервисная сеть функционирует выше уровня транспортного и сетевого уровней модели OSI и предполагает, что нижележащие уровни способны доставить информацию между узлами, но тем не менее не являются надёжным средством передачи данных. Примерами сервисной сети являются следующие решения: Linkerd, Istio, Consul, Netramesh.

Перечислим основные функции сервисной сети:

• надежный механизм передачи запросов между сервисами;

• балансировка нагрузки и масштабируемость;

• маршрутизация трафика между приложениями;

• механизмы обнаружения сервисов;

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

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

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

контроля доступа к информации на основании атрибутов субъекта доступа. В данной работе будут рассмотрены механизмы разграничения доступа на основе атрибутивного шифрования при взаимодействии элементов сервисной сети.

II. Теория

1. Атрибутивное шифрование

Шифрование на основе атрибутов (ABE, Attribute-based encryption) относится к криптосистемам с открытым ключом. Его происхождение можно проследить до шифрования на основе идентификационных данных (Identity-based encryption), предложенного Шамиром в 1984 г. [4]. Идея таких схем заключается в попытке использования любой общей открытой строки в качестве открытого ключа, например, адреса в системах электронной почты [5]. Для решений этой задачи вводится выделенный центр генерации ключей, ответственный за распространение секретных ключей, связанных с идентификаторами пользователей (адресов электронной почты, например). В 2001 году Боне и Франклин предложили реализацию и доказали безопасность при атаке по выбранному шифртексту [6]. Указанная работа основывалась на особом виде билинейных отображении - спариваниях Вейля. Они позволяют отображать любую строку (идентификатор пользователя) в открытый криптографический ключ и сформировать соответствующий закрытый ключ, используемый для расшифрования сообщений, зашифрованных этим открытым ключом. В 2004 году Амит Сахаи и Брент Вотерс предложили схему нечеткого шифрования на основе идентификационных данных (Fuzzy IBE) [7], которая и стала прообразом атрибутивного шифрования. В нечетких схемах личностного шифрования пользователь с закрытым ключом и набором открытых параметров может расшифровать шифртекст, сформированный с помощью другого набора открытых параметров, тогда и только тогда, когда оба набора открытых параметров неким образом соответствуют друг другу: например, мощность их пересечения больше некоего порогового значения.

В качестве центра генерации ключей в атрибутивном шифровании используется отдельная сущность -атрибутивный центр (Attribute Authority, AA), ответственная за формирование открытых и секретных ключей, их распространение и верификацию атрибутов у субъектов, запрашивающих секретный ключ. Самыми распространенными являются CP-ABE (Ciphertext-Policy ABE) схемы, реализующие следующий набор функции:

• Setup () -> (pars, msk): AA формирует набор открытых параметров и секретный мастер ключ;

• KeyGeneration (pars, msk, A) -> SKA: на основании открытых параметров мастер ключа и множества атрибутов AA генерирует секретный ключ;

• Encrypt (pars, P, M) -> CT: используя открытые параметры, структуру доступа и само сообщение, отправитель формирует шифртекст;

• Decrypt (pars, CT, P, SKA) -> M: используя открытые параметры, шифртекст, структуру доступа и секретный ключ, алгоритм позволяет получить исходный текст в том случае, если атрибуты ключа удовлетворяет структуре доступа.

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

2. Межсервисные коммуникации

В публикации [1] рассматривается эволюция микросервисных архитектур - подхода к построению приложений, в котором вместо одного монолита функционирует множество изолированных сервисов, каждый из которых ответственен за свой ограниченный контекст бизнес-логики. Именно для решения проблем взаимодействия в таких системах, и была придумана модель сервисной сети. В книге [9] описаны основные средства обеспечения безопасности для микросервисной архитектуры: токены JWT (Json Web Token) и TLS для аутентификации сервисов и пользователей, протокол OAuth2 и шаблон проектирования Gateway (шлюз) для доступа к сервисам извне, протокол XACML (eXtensible Access Control Markup Language) для описания политик доступа. Принципиально важно отметить, что механизмы на основе сертификатов требуют сложных процессов их распространения и проверки, а XACML - децентрализованной архитектуры проверки и распространения политик доступа; к тому же проверка прав доступа происходит на каждый поступающий к сервису запрос.

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

ного объекта для всех вышележащих уровней, и устройства различных производителей предоставляет унифицированный интерфейс для взаимодействия. Таким образом, авторы переносят микросервисый подход в сети Интернета вещей, стараясь по максимуму использовать существующие методы и протоколы. Для контроля доступа между сервисами ими было предложено использовать атрибутивную модель доступа, основанную на методах атрибутивного шифрования [3]. Такое решение обеспечивает: гранулированный контроль доступа, конфиденциальность данных, гибкие политики доступа.

III. ЦЕЛЬ

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

IV. КОНТРОЛЬ ДОСТУПА В СЕРВИСНОЙ СЕТИ

3. Модель сервисной сети

Модель сервисной сети состоит из двух логических уровней: уровень управления (Control Plane) и уровень данных (Data Plane). На первом из них располагаются сервисы, ответственные за административные действия: обновление библиотек посредников, распространение конфигурационных сведений, поддержка механизмов обнаружения сервисов, управление криптографическими ключами. Каждый прокси-посредник взаимодействуют с элементами уровня управления для обновления служебной информации. Отметим, что чем больше функциональность прокси-посредников, тем больше им приходится коммуницировать с элементами управления, соответственно увеличиваются нагрузка на сеть и вычислительные затраты на каждого посредника. Уровень данных состоит из самих сервисов и соответствующих им прокси-посредников. Каждому сервису предоставляется легковесная единая точка взаимодействия с другими компонентами - собственно посредник, который несет ответственность за надежную передачу запросов и взаимодействие с сетью. Такой подход значительно упрощает разработку новых сервисов, процессы их внедрения и масштабирования. Предполагается, что сервис и его прокси-посредник функционируют в изолированном сегменте сети, например в поде кластера Kubernetes, поэтому защита канала связи между ними либо отсутствует, либо основана на знании общего ключа и поэтому далее не рассматривается.

Рис. 1. Сервисная сеть

Атрибутивный центр (он же центр верификации атрибутов и генерации ключей) располагается на уровне управления и несет ответственность за передачу секретного и открытого ключей каждому сервису. Рассмотрим описание политик доступа на примере взаимодействия двух сервисов: сервиса сбора данных с температурных датчиков здания и сервиса анализа этой информации, далее A и B. Пусть A получил секретный ключ на набор атрибутов: «датчик», «температура», «корпус1», «корпус_2». А сервис Б - «температура», «аналитика», «управление отоплением». Тогда А может зашифровать сообщение для Б под следующей структурой доступа: «температура», «управление отоплением». Из медицинской сферы можно привести такой пример политика доступа: «кардиология», «ЭКГ», «корпусЗ», «высшая квалификация». Отметим, что правила доступа на основе атрибутов могут быть не просто последовательным перечислением требуемых атрибутов, но и пороговой структурой доступа, и булевским выражением. Например: «датчик» И «температура» И «корпус 1» ИЛИ «корпус_2». В описываемой в этой работе модели механизм атрибутивного шифрования также может использоваться для защиты сообщений, передаваемых между сервисами.

4. Атрибутивное рукопожатие

В нашей модели распространение политик доступа не будет централизованным: каждый сервис самостоятельно определяет политики доступа к своему программному интерфейсу (они могут быть заранее сконфигу-

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

Описываемый протокол функционирует на уровне приложений модели OSI. Он необходим для: взаимной аутентификации между сервисами, выдаче идентификатора или токена (например в формате JWT), чтобы абоненты могли идентифицировать сеанс связи. Предполагается, что на уровне ниже есть защищенный канал связи с поддержкой общего секретного ключа и проверкой целостности сообщений (например, TLS).

Введем обозначения:

• attrA, attrB, attrAS - наборы атрибутов идентифицирующих сервисы и структура доступа к запрашиваемому ресурсу;

• Ri, IDsession - случайное число, идентификатор сессии;

• CT, Eabe, H - шифртекст, алгоритм атрибутивного шифрования, хэш-функция.

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

А^В: data,attrA, CT1 = EAAtBtEB

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

В^А: IDsession,Ri,CT2 = EAjBEA

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

А ^ В: IDsession,НШШ

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

Представленный вариант протокола рукопожатия можно дополнить методом выработки общего секретного ключа с помощью алгоритма Диффи-Хеллмана. Пусть P - большое простое число, а - образующий элемент мультипликативной группы Zp ={1, ..., p-1}, Xи Y - случайные числа из Zp , SK - общий секретный ключ.

А^В: data, attrA, CT1 = EABtEB(ßi) В^А: IDsession, Ri, CT = EAtBtErA(R2,ax),CT3 = EA^^^^R^R) А ^ В: IDsession,H(R2\\Rs), EAtBE,(aY) SK = (ax)Ymod P = (aY)xmod P

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

Работа протокола атрибутивного рукопожатия была проанализирована с помощью программного средства автоматической верификации криптографических протоколов A VISPA в целях проверки взаимной аутентификации сторон и защиты секретного ключа. Исходный текст в формате HLPSL находится в открытом доступе на github (github.com/drmckay-kirill/attribute_based_protocols).

V. Выводы и заключение

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

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

Список литературы

1. Jamshidi P. [et al.]. Microservices: The journey so far and challenges ahead // IEEE Software. 2018. Т. 35, no. 3. С. 24-35.

2. Lu D. [et al.]. A secure microservice framework for iot // 2017 IEEE Symposium on Service-Oriented System Engineering (SOSE). 2017. С. 9-18.

3. Wang Z. [et al.]. Efficient attribute-based comparable data access control // IEEE Transactions on computers. 2015. Т. 64, no. 12. С. 3430-3443.

4. Shamir A. Identity-based cryptosystems and signature schemes // Workshop on the theory and application of cryptographic techniques. Springer, Berlin, Heidelberg, 1984. С. 47-53.

5. Boneh D., Franklin M. Identity-based encryption from the Weil pairing // Annual international cryptology conference. Springer, Berlin, Heidelberg, 2001. С. 213-229.

6. Sahai A., Waters B. Fuzzy identity-based encryption // Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, Berlin, Heidelberg, 2005. С. 457-473.

7. Guo F. [et al.]. CP-ABE with constant-size keys for lightweight devices // IEEE transactions on information forensics and security. 2014. Т. 9, no. 5. С. 763-771.

8. Li X. [et al.]. Efficient ciphertext-policy attribute based encryption with hidden policy // International Conference on Internet and Distributed Computing Systems. Springer, Berlin, Heidelberg, 2012. С. 146-159.

9. Indrasiri K., Siriwardena P. Microservices for the enterprise // Apress, Berkeley. 2018.

УДК 004.

РАЗРАБОТКА И АНАЛИЗ ПРОГРАММНО-АППАРАТНОГО КОМПЛЕКСА РЕГИСТРАЦИИ ЧЕЛОВЕКА НА ОБЪЕКТЕ С ПОМОЩЬЮ ТЕХНОЛОГИИ WI-FI

DESIGN AND ANALYSIS OF A SOFTWARE AND HARDWARE APPLIANCE TO REGISTER A PERSON'S PRESENCE AT THE SITE USING WI-FI TECHNOLOGY

И. Л. Рева, А. А. Богданов, Е. А. Малахова

Новосибирский государственный технический университет, г. Новосибирск, Россия

I. L. Reva, A. A. Bogdanov, E. A. Malakhova

Novosibirsk State Technical University, Novosibirsk, Russia

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

Ключевые слова: локальное позиционирование, система контроля и управления доступом, охрана объекта, триангуляция, Wi-Fi сети, интерференция, точка доступа, безопасность объекта.

DOI: 10.25206/2310-9793-7-4-89-98