УДК 004

Обзор алгоритмов аутентификации в распределенных программных системах

Грищенко О.С., Чернышова А.В.

Донецкий национальный технический университет, г. Донецк Кафедра программной инженерии alla@donntu.ru, olleg1996@mail.ru


Постановка задачи

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


Цель работы

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

Источник: Грищенко, О. С. Обзор алгоритмов аутентификации в распределенных программных системах / О. С. Грищенко, А. В. Чернышова // Современные информационные технологии в образовании и научных исследованиях (СИТОНИ-2017) : Материалы V Международной научно-технической конференции, Донецк, 20 ноября 2017 года. – Донецк: Донецкий национальный технический университет, 2018. – С. 158-162. – EDN METJUF.


Основные способы аутентификации

Наиболее простым способом аутентификации является аутентификация по паролю. При регистрации на ресурсе пользователь задает свой логин (имя, телефон, email) и пароль. При аутентификации необходимо проверить соответствие логина и пароля. Такой способ аутентификации дает достаточно слабый уровень защиты. Прежде всего, пользователь сам задает и хранит пароль. При этом пароль может быть коротким (так что его можно будет легко подобрать простым перебором) или предсказуемым. Например, по состоянию на 2016 год в результате исследования 10000000 пользовательских паролей было выяснено, что самыми популярными являются такие пароли как "123456", "123456789", "qwerty", "12345678". Причем пароль "123456" использовали 17% пользователей [1]. Взлом таких паролей с помощью современных инструментов подбора паролей займет не более нескольких секунд.

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

Второй и третий способы представлены на рисунке 1.Эти способы простой аутентификации обеспечивают защиту передаваемых данных.


ГОСТ Р ИСО/МЭК 9594-8-98 Информационная технология (ИТ). Взаимосвязь открытых систем. Справочник. Часть 8. Основы аутентификации

Рисунок 1 – Простая защищенная аутентификация


Здесь А - имя пользователя, t - отметка времени, q^ - случайные числа, f1 и f2 однонаправленные функции.

Незащищенные пароли предполагают минимальную степень безопасности и не могут рассматриваться как основа услуг аутентификации.

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

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

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

В двунаправленной аутентификации используется дополнительный ответ от В к А. Двунаправленная аутентификация дополнительно устанавливает, что маркер аутентификации ответа был сгенерирован В и предназначен для А, целостность и новизну маркера аутентификации пользователя В.

При трехнаправленной аутентификации добавляется дополнительная передача от А к В. Трехнаправленная аутентификация устанавливает те же свойства, что двухнаправленная, но не нуждается в проверке меток времени.

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

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

  1. А создает rA (неповторяющийся номер), который используется для обнаружения повторных угроз и предотвращения подделок;

  2. А посылает к В сообщение, содержащее следующие данные:

Предпочтительным считается согласование ключа по алгоритму Диффи-Хеллмана, так как в этом случае ключ не передается между клиентом и сервером.

Протокол Kerberos использует описанный ниже алгоритм. Для получения доступа к какому-либо сервису клиент направляет запрос в службу KDC, которая хранит информацию об учетных записях всех клиентов сети и общие с этими клиентами долговременные ключи шифрования. Запрос содержит следующую информацию: идентификатор клиента, метку времени и идентификатор сервера. Служба KDC генерирует сеансовый ключ, действительный на протяжении некоторого времени. KDC отправляет клиенту ответ, зашифрованный с помощью долговременного ключа общего с клиентом. Ответ содержит сеансовый ключ, идентификатор сервиса, время жизни ключа и мандат. Мандат содержит данные о клиенте, метку времени и сеансовый ключ. Мандат шифруется долговременным ключом, общим с сервером. Получив ответ KDC, клиент извлекает из него мандат и свою копию сеансового ключа. После этого клиент посылает серверу сообщение, состоящее из мандата (который зашифрован долговременным ключом сервера), и своего аутентификатора, зашифрованного с помощью сеансового ключа. Сервер с

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

Также для Kerberos существует расширение PKI NIT, позволяющее проводить описанную процедуру с использованием ассиметричного шифрования. В этом случае появляются такие отличия:

  1. При создании запроса к KDC указывается, что будет использоваться асимметричное шифрование. Сам запрос подписывается и кроме стандартной информации содержит сертификат пользователя.

  2. Получив запрос, KDC проверяет достоверность сертификата и электронную подпись. После этого KDC проверяет локальное время, присланное в запросе (для защиты от повторов).

  3. После проверки подлинности клиента, KDC формирует ответ, зашифрованный открытым ключом пользователя. Кроме того ответ подписывается и содержит сертификат KDC.

  4. Получив ответ, пользователь проверяет подпись KDC и расшифровывает свой сеансовый ключ.


    Выводы

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


    Список источников

    1. Mostcommonpasswords [Электронныйресурс]. – Режим доступа: https://keepersecurity.com/public/Most-Common-Passwords-of-2016-Keeper-Security-Study.pdf

    2. Hypertext Transfer Protocol (HTTP/1.1): Authenticationpasswords [Электронныйресурс]. – Режим доступа: https://tools.ietf.org/html/rfc7235

    3. Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile[Электронныйресурс]. – Режимдоступа: https://www.ietf.org/rfc/rfc5280.txt

    4. Using the GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms with the Internet X.509 Public Key Infrastructure [Электронныйресурс]. – Режимдоступа: https://tools.ietf.org/html/rfc4491

    5. ГОСТ Р ИСО/МЭК 9594-8-98 Информационная технология [Электронный ресурс]. –Режим доступа: http://docs.cntd.ru/document/1200028710

    6. HMAC: Keyed-Hashing for Message Authentication [Электронный ресурс]. – Режимдоступа:https://tools.ietf.org/html/rfc2104.html

    7. The Transport Layer Security (TLS) Protocol [Электронный ресурс]. – Режимдоступа: https://tools.ietf.org/html/rfc5246

    8. The Kerberos Network Authentication Service [Электронныйресурс]. – Режим доступа: https://tools.ietf.org/html/rfc1510


Грищенко О.С., Чернышова А.В. Обзор алгоритмов аутентификации в распределенных программных системах. Представлен обзор существующих алгоритмов аутентификации, используемых в современных распределенных системах. Описаны стандарты в данной области. Рассмотрен принцип работы распространенных протоколов аутентификации.


Ключевые слова: распределенная система, аутентификация, TLS, сертификат, однонаправленная аутентификаци, RSA, Kerberos


Grichenco O.S., Chernyshova A.V. Overview of authentication algorithms in distributed software systems. An overview of the existing authentication algorithms used in modern distributed systems is presented. The standards of authentication are described. The principle of operation of authentication protocols is considered.


Keywords: distributed system, authentication, TLS, certificate, unidirectional authentication, RSA, Kerberos