Назад в библиотеку

Методы безопасной аутентификации в клиент-серверных приложениях

Авторы: Чернышова А.В., Афанасьева А.А.
Источник: Программная инженерия: методы и технологии разработки информационно вычислительных систем (ПИИВС2022): Сборник материалов IV Международной научно-практической конференции, г. Донецк, 29-30 ноября 2022 г. – Донецк: Донецкий национальный технический университет, 2022 – С. 74-80.

Аннотация

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

Введение

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

Безопасная аутентификация пользователя происходит в операционной системе, при работе компьютеров в доменных структурах, при работе пользователей в сети при использовании протоколов стека TCP/IP. Не являются исключением и клиент-серверные приложения. Разработчики современных клиент-серверных приложений обязательно должны решить вопрос безопасной аутентификации пользователей в своём приложении.

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

Каждый пользователь современных компьютерных систем сталкивается с процедурами аутентификации неоднократно, работая в системе каждый день [1]. Работа в операционной системе, использование сервисов социальных сетей, работа в корпоративной сети организации, использование электронной почты, интернет-банкинга – вот малый перечень, где используется безопасная аутентификация. Отдельно следует упомянуть биометрические средства аутентификации пользователей по отпечатку пальцев, ладони, радужки глаза, а также аутентификация по голосу.

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

Почему же так происходит? При, казалось бы, отличных средствах аутентификации, до сих пор актуальны вопросы несанкционированного доступа к программным системам, реализуюшим в том числе и модель клиент-сервер.

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

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

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

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

Клиент-серверная архитектура

Архитектура Клиент-Сервер (также используются термины сеть Клиент-Сервер или модель Клиент-Сервер) предусматривает разделение процессов предоставления услуг и отправки запросов на них на разных компьютерах в сети, каждый из которых выполняют свои задачи независимо от других [2].

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

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

Множество клиентов могут одновременно иметь доступ к услугам сервера и каким-либо общим ресурсам. Целостность данных в клиент-серверной архитектуре обусловлена их централизованным управлением. При этом предусмотрена независимость индивидуальных данных каждого клиента.

При рассмотрении процесса предоставления доступа в клиент-серверных приложениях можно встретить такие термины, как идентификация, аутентификация и авторизация. Данные понятия не являются тождественными, но все они относятся к элементам защиты информации в приложениях типа клиент-сервер.

Под идентификацией пользователя или аппаратно-программного компонента понимают процедуру его распознавания, как легального субъекта системы, на основе некоторого уникального идентификатора. Обычно данный идентификатор хранится в базе данных системы и присваивается субъекту при его регистрации. Часто на этапе идентификации распознавание информации о пользователе происходит на основе логина. Некоторому пользователю соответствует некоторый идентификатор и логин, который присваивается при регистрации в системе.

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

Документы, определяющие стандарты аутентификации

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

В стандарте ГОСТ Р ИСО/МЭК 9594-8-98 основ аутентификации определён формат информации аутентификации, хранимой справочником. Стандарт описывает способ получения из справочника информации аутентификации, устанавливает предпосылки о способах формирования и размещения в справочнике информации аутентификации, определяет способы, с помощью которых прикладные программы могут использовать информацию аутентификации для выполнения аутентификации. Также стандарт описывает, каким образом с помощью аутентификации могут быть обеспечены другие услуги защиты.

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

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

Задача стандартов, определяющих прикладные программы, которые используют основы аутен-тификации, состоит в том, чтобы установить правила протокольных обменов, которые необходимо осуществить для обеспечения аутентификации, основываясь на информации аутентификации, полученной из справочника. Протоколом, используемым прикладными программами для получения удостоверения личности из справочника, является протокол доступа к справочнику, определенный в ИСО/МЭК 9594-5 [4].

FIPS 113 — Computer Data Authentication. Настоящий стандарт устанавливает Data Authentication Algorithm (DAA), который может быть использован для обнаружения несанкционированных изменений данных, как преднамеренных, так и случайных. Стандарт основан на алгоритме, указанном в Data Encryption Standard (DES) Federal Information Processing Standards Publication (FIPS PUB) 46, и совместим как с Department of the Treasury’s Electronic Funds and Security Transfer Policy and the American National Standards Institute (ANSI) так и с Standard for Financial Institution Message Authentication. Данный стандарт используется для контроля над целостностью передаваемой информации средствами криптографической аутентификации [5].

Методы и подходы к аутентификации

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

Выделяют такие подходы к аутентификации, как субъект знает, субъект обладает и субъект существует.

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

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

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

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

Рисунок 1 – Схема простой аутентификации с использованием отображения пароля

Рисунок 1 – Схема простой аутентификации с использованием отображения пароля

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

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

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

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

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

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

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

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

Одноразовые пароли могут быть получены различными методами. К наиболее популярным на данный момент относят программные (RSA SecurID) или аппаратные реализации токенов (Google Authenticator), генерирующих одноразовые пароли с помощью некоторого секретного ключа и временной метки. При этом, принимающая сторона также должна обладать секретным ключом. Аппаратные токены более применимы в системах с разграничением доступа для предоставления функции аутентификации субъекта одного приложения другому. Данный токен генерируется на основе достоверных сведений о пользователе, может быть использован другими приложениями для аутентификации или даже авторизации субъекта.

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

Рисунок 2 – Схема строгой аутентификации на основе алгоритма шифрования

Рисунок 2 – Схема строгой аутентификации на основе алгоритма шифрования

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

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

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

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

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

Анализ протоколов аутентификации

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

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

Аутентификация по двухточечному протоколу PPP (Point-to-Point) используется для установления связи между несколькими узлами сети. Данный протокол считается одним из ранних протоколов, обеспечивающих аутентификацию соединения. В данном механизме аутентификации используются такие специально разработанные протоколы, как PAP, CHAP и EAP.

PАP (Password Authentication Protocol) протокол подразумевает, что аутентификация производится по заранее известному взаимодействующим объектам паролю. При этом клиент многократно отправляет принимающей стороне запрос аутентификации, а именно пакеты с именем и паролем, до тех пор, пока не получит его подтверждение. Сами по себе данные пересылаются в открытом виде, что уже не является безопасным способом, даже при учете мгновенного отклика на посылаемый запрос.

Процесс аутентификации в CHАP (Challenge Handshake Protocol) протоколе инициируется хостом в любое время сеанса и может быть многократно повторён с каким-либо промежутком времени. СHAP не предполагает повторную передачу пароля субъекта. В данном случае, для подтверждения текущего состояния аутентификации, клиент получает от сервера случайную строку, выполняет криптографические преобразования (хеш-функцию MD5) на основе собственного пароля и полученной строки, и отправляет результат вместе с собственным именем серверу. Сервер производит подобные преобразования. По результат сравнения хэш-значений можно судить об успешности аутентификации.

Протокол Extensible Authentication Protocol (EAP) изначально был создан специально для PPP.

На данный момент он используется в различных версиях IEEE 802.1x и продолжает дорабатываться для поддержания все более новых механизмов аутентификации. Более 40 методов данного протокола реализуют особые расширенные способы проверки подлинности на основе общей стандартизированной структуры EAP.

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

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

Еще один протокол RADIUS (Remote Authentication Dial-in User Service) предоставляет механизм аутентификации субъектов распределенной сети. Протокол сам по себе основан на клиент-серверной архитектуре, где в качестве клиента обычно выступает сервер для хранения данных. В дополнение к этому пользовательские пароли между клиентами и серверами RADIUS передаются в зашифрованном виде во избежание перехвата паролей при их передаче через незащищенные сети [8].

Созданный на базе протокола RADIUS протокол DIAMETER является улучшенной версией своего предшественника. DIAMETER изначально подразумевался как базовый протокол с возможностью его расширения. Протокол обладает более высоким уровнем надежности (использует транспортный протокол TCP) и безопасности благодаря защиты данных на сетевом и транспортном уровнях.

Kerberos – ещё один специально разработанный для аутентификации субъектов системы протокол. Чаще всего он используется для реализации механизма одноразовой аутентификации в нескольких приложениях.

Процесс аутентификации по протоколу Kerberos отличается своей сложностью по сравнению с предыдущими протоколами. В протоколе используется понятие Ticket (билет). Билет Kerberos — это сертификат, выданный сервером аутентификации (доверенной стороной) и зашифрованный с помощью его ключа [9]. Одним из преимуществ протокола Kerberos, обеспечивающих очень высокий уровень сетевой безопасности, является то, что во всех сетевых взаимодействиях в открытом виде не передаются ни пароли, ни хэши паролей.

Таблица 1 – Анализ протоколов аутентификации

Выводы

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

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

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

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

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

Литература

1. Афанасьев, А. А. Аутентификация. Теория и практика обеспечения безопасного доступа к информационным ресурсам. Учебное пособие / А. А. Афанасьев, Л. Т. Веденьев, А. А. Воронцов. – Москва : Горячая линия - Телеком, 2012. – 550 с. – ISBN 978-5-9912-0257-2. – EDN RBAWOP.
2. Архитектура Клиент-сервер [Электронный ресурс] – Режим доступа: [Ссылка]
3. Что такое Аутентификация: Методы и Элементы [Электронный ресурс] – Режим доступа: [Ссылка]
4. Государственный стандарт Российской Федерации ГОСТ Р ИСО/МЭК 9594-8-98 — Основы аутентификации [Электронный ресурс] – Режим доступа: [Ссылка]
5. FEDERAL INFORMATION PROCESSING STANDARD PUBLICATION The Keyed-Hash Message Authentication Code (HMAC)
6. Шапиро, Л. Аутентификация и одноразовые пароли. Теоретические основы. Часть 1 / Л. Шапиро // Системный администратор. – 2012. – № 9(118). – С. 88-91. – EDN RFVKTR.
7. Протокол аутентификации гост [Электронный ресурс] – Режим доступа: [Ссылка]
8. Протокол RADIUS. Перевод RFC 2865 [Электронный ресурс] – Режим доступа: [Ссылка]
9. Kerberos: служба аутентификации для компьютерных сетей [Электронный ресурс] – Режим доступа: [Ссылка]