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

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

ЛИТЕРАТУРА

1. Кузнецов Н. А., КульбаВ.В., Микрин Е. А. Информационная безопасность систем организационного управления. Теоретические основы. М.: Наука, 2006. 430 с.

УДК 004.056

РЕАЛИЗАЦИЯ МЕТОДА ЗАЩИТЫ АУТЕНТИФИКАЦИОННЫХ ДАННЫХ В МНОГОУРОВНЕВЫХ ПРИЛОЖЕНИЯХ

П. А. Паутов

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

1) уровень представления — браузер;

2) уровень приложения — программа, исполняемая на веб-сервере;

3) уровень данных — СУБД.

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

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

1) реализацию рассмотренных в [1] алгоритмов управления пользователями;

2) управление сеансами работы пользователей и подключениями к СУБД.

Первая задача была решена с использованием библиотеки OpenSSL и базы данных SQLite. OpenSSL предоставляет необходимые криптографические функции, а модуль SQLite позволяет работать с локальным файлом как с SQL-совместимой базой данных. Так было организовано описанное в работе [1] хранилище учетных данных.

Рассмотрим вторую задачу подробнее. Для этого опишем работу типичного вебприложения, разработанного с использованием языка программирования PHP.

Браузер посылает веб-серверу HTTP-запрос. Веб-сервер запускает соответствующую PHP-программу. Программа устанавливает соединение с СУБД, получает необ-

ходимые данные, закрывает соединение, оформляет полученные данные в виде HTML-страницы и передает последнюю веб-серверу. Веб-сервер отправляет страницу браузеру, как ответ на HTTP-запрос.

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

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

2. С помощью ключа K шифруются учетные данные СУБД.

3. Зашифрованные учетные данные СУБД отправляются браузеру в теле HTTP-ответа.

Далее с каждым запросом браузер посылает веб-серверу зашифрованные учетные данные для доступа к СУБД. Таким образом, пароль пользователя требуется только в начале сеанса работы.

Другой подход к решению рассматриваемой задачи заключается в использовании механизма постоянных соединений с СУБД. Такие соединения остаются открытыми после окончания обработки запроса PHP программой. Но в стандартном программном интерфейсе PHP для работы с постоянными соединениями имя пользователя и пароль необходимы как для установления нового соединения, так и для получения доступа к уже установленному [2]. Но фактически для работы с уже установленным соединением имя и пароль для СУБД не нужны.

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

При использовании парольной аутентификации прикладному уровню необходимы имя и пароль пользователя СУБД в открытом виде для установления соединения с СУБД. В большинстве веб-приложений эти данные хранятся в открытом виде постоянно. Рассматриваемая схема позволяет хранить учетные данные для доступа к СУБД в закрытом виде и получать их в открытом только при необходимости.

Реализация схемы с помощью только стандартных средств языка PHP не требует специального модуля для работы с СУБД и легче переносима на разные платформы. Но при использовании такой реализации учетные данные для доступа к СУБД «открываются» на прикладном уровне при обработке каждого запроса пользователя. Подход с применением специального модуля для работы с СУБД предоставляет более высокий уровень защиты, так как учетные данные для доступа к СУБД «открываются» только в начале сеанса работы пользователя. На данный момент такой модуль реализован только для СУБД MySQL.

ЛИТЕРАТУРА

1. Паутов П. А. Проблема аутентификации в многоуровневых приложениях // Прикладная

дискретная математика. 2008. №2. С. 87-90.

2. Olson P. PHP Manual. 2009.