Файл: Описание функционирования приложения.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 04.04.2023

Просмотров: 192

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1) все передаваемые данные не покидают пределов предприятия;

2) приложение будет работать даже при отсутствии подключения к сети Интернет;

3) «прозрачность» - можно быть уверенным, что удаляемые данные действительно удалены, чего нельзя ожидать в случае, если разработчик предоставляет только клиентскую часть, а серверная остается подведомственной разработчику и/или другим сторонним лицам.

Обмен сообщениями производится с использованием протокола SSL (Secure Sockets Layer – уровень защищенных сокетов), кроме того, каждое сообщение дополнительно шифруется на основе криптосистемы с открытым ключом RSA. Такое двойное шифрование обезопасит данные в случае успешной атаки злоумышленника на протокол SSL, или взлома сервера (на сервере история сообщений хранится в зашифрованном виде).

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

2.2 Описание инструментов разработки и базы данных

Приложение было разработано на языке C++ с использованием библиотеки Qt в среде разработки MS Visual Studio 2013 for Windows Desktop Express Edition.

Для реализации криптографических алгоритмов и TLS использовалась библиотека OpenSS. OpenSSL не использует функции, специфичные для конкретной ОС, поэтому не нарушает кроссплатформенность. Функции для работы с TLS, основанные на OpenSSL, реализованы в библиотеке Qt в классе QSslSocket.

ER-модель базы приведена на рисунке 6.

Рисунок 6 – ER-модель

Сущность “Clients” – основная в базе. В ней хранятся данные пользователей:

- ID – уникальный идентификатор пользователя;

- login – имя пользователя, указанное при реистрации;

- hash – хэш-образ пароля;

- statofreg – статус регистрации пользователя:

«1» – пользователь одобрен,

«0» - одобрение не пройдено;

- status – статус присутствия пользователя в сети:

«1» - пользователь в сети,

«0» - пользователь не в сети.

Сущность «ClientList» - таблица для хранения списка контактов для каждого пользователя. Содержит поля:

- ownerID – ID пользователя, для которого задается список контактов. Повторяется в таблице столько раз, сколько пользователей содержится в списке контактов для него;


- clientID – ID пользователя, который содержится в списке контактов для пользователя ownerID.

Сущность «Message» содержит все пересылаемы сообщения. Для нее заданы следующие поля:

- ID – уникальный идентификатор сообщения;

- message – сообщение в зашифрованном виде;

- fromID – ID отправителя сообщения;

- toID – ID получателя сообщения;

- status – статус доставки сообщения.

«1» - сообщение было доставлено получателю,

«0» - сообщение не было доставлено получателю.

2.3 Описание функционирования приложения

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

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

Кроме доступа к СУБД сервер должен обладать SSL-сертификатом и ключом стандарта X.509. Требуется указать путь к сертификату и ключу для загрузки их в программу.

При запуске сервера осуществляется соединение с базой данных и запуск режима прослушивания порта. Сервер находится в состоянии ожидания входящих соединений. Описание функции запуска сервера startServer() приведено в следующем пункте.

При первом запуске клиентской части приложения требуется указать адрес сервера.

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

Таблица 2 – Таблица соответствия сообщений сервера их предназначению

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

Рисунок 7 – Алгоритм регистрации нового пользователя

Рассмотрим подробнее приведенную схему.

Для регистрации требуется ввести уникальное имя нового пользователя и дважды пароль во избежание случайной ошибки при вводе пароля. После ввода данных и нажатия на кнопку «Зарегистрироваться» вычисляется хэш пароля по алгоритму SHA256, генерируется сообщение в XML-формате, содержащее имя пользователя и хэш. Открывается временное SSL-соединение с сервером, на который направляется сгенерированное сообщение.


Далее клиент переходит в режим ожидания ответа от сервера. Если в указанный интервал времени ответ от сервера не был получен, выводится сообщение об ошибке соединения, временное SSL-соединение закрывается. Сервер, получив сообщение, по тегу <registrate> определяет, что это сообщение является запросом на регистрацию, вычленяет из него значения имени пользователя и хэша пароля. Производит поиск по базе пользователей на предмет существования пользователя с таким именем. Если пользователь с таким именем найден в базе, генерируется и отправляется XML-сообщение с оповещением. В случае получения такого сообщения, клиент определяет, что пользователь с таким именем существует и выводит сообщение об этом в окне регистрации, временное SSL-соединение закрывается.

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

Далее рассмотрим процесс аутентификации пользователя.

Рисунок 8 – Алгоритм аутентификации пользователя

При нажатии на кнопку «Log In» открывается окно ввода логина и пароля. После нажатия кнопки «ОК» считываются введенные данные, вычисляется хэш пароля, генерируется сообщение XML-формата, содержащее логин и хэш пароля, открывается временное SSL-соединение, после чего, сообщение отправляется серверу.

Сервер получает сообщение, по тегу <loginquery> определяет, что сообщение является запросом аутентификации, вычленяет имя пользователя и хэш пароля. Затем, выполняется поиск по таблице пользователей. Если пользователь с заданным именем не найден, или значения хэшей не совпадают, генерируется XML-сообщение с отклонением запроса аутентификации. Клиент, получив сообщение, и определив, что запрос аутентификации отклонен, выводит сообщение о том, что имя пользователя или пароль введены неверно, временное SSL-соединение закрывается. Если пользователь найден и хэши пароля совпадают, но проставлен статус «неодобрен», генерируется XML-сообщение о необходимости дождаться одобрения. В случае получения клиентом сообщения о необходимости дождаться одобрения, выводится сообщение «Дождитесь одобрения», временное SSL-соединение закрывается.


Если пользователь найден, пароль введен верно, и пользователь «одобрен», генерируется сообщение об удовлетворении запроса аутентификации, содержащее также ID пользователя. Если клиентом получено сообщение об удачной аутентификации, временное SSL-соединение переходит в статус постоянного, сохраняется значение собственного ID пользователя.

Рассмотрим процесс выхода пользователя из сети.

Рисунок 9 – Алгоритм выхода пользователя из сети

По нажатию на кнопку “Выйти из сети” клиентом генерируется XMLсообщение, информирующее сервер о выходе клиента из сети, содержащее ID. SSL-соединение закрывается. Сервер, получив сообщение с тегом <logoff>, обновляет статус пользователя в таблице на «0».

Заключение

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

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

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

  1. Агальцов В. П. Базы данных. В 2-х т., т. 2. Распределенные и удаленные базы данных. 1-e изд. – Форум Инфра-М, 2009. – 272 с.
  2. Васильев А. А., Избачков Ю. С., Петров В. Н., Телина И. С. Информационные системы. – Питер, 2011. – 544 с.
  3. Волкова В. Н., Кузин Б. И., Барабанова И. М. Информационные системы: Учебное пособие для вузов (под ред. Волковой В. Н., Кузина Б. И.) Изд. 2-е, перераб., доп. – СПбГПУ, 2005 г. – 224 с.
  4. Голицына О. Л., Партыка Т. Л., Попов И. И. Системы управления базами данных. М., Форум, Инфра-М, 2011 г. – 432 с.
  5. Дейт К. Дж. Введение в системы баз данных. 8-е издание. – М.: Издательский дом «Вильяме», 2006. – 1328 с.
  6. Диго С. М. Базы данных: проектирование и использование: учебник. – М.: Финансы и статистика, 2005. – 592 с.
  7. Душин В. К. Теоретические основы информационных процессов и систем. Учебник. 4-е изд. – Дашков и К, 2011 г. – 348 с.
  8. Карпова, Т. С. Базы данных: Модели, разработка, реализация. – СПб.: Питер, 2002. – 303 c.
  9. Кириллов В. В., Громов Г. Ю. Введение в реляционные базы данных (+CD). – СПб.: БХВ-Петербург, 2009. – С. 464.
  10. Коржов В.В. Многоуровневые системы клиент-сервер. – М.: Издательство Открытые системы, 2007.
  11. Кузин А. В., Левонисова С. В. Базы данных: учеб. пособие для студ. вузов. 2-е изд., стер. – М. Издательский цент «Академия», 2008. – 320 с.
  12. Кузнецов С. Д. Основы баз данных: учебное пособие. 2-е изд., испр. – М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2007. – 484 с.
  13. Кузовкин А. В., Цыганов А. А., Щукин Б. А. Управление данными. – М.: Академия, 2010 г. – 256 с.
  14. Малыхина М. П. Базы данных: основы, проектирование, использование: учеб. пособие для студ. Вузов. 2-е изд. – СПб.: БХВПетербург, 2007. – 528 с. Марков А. С., Лисовский К. Ю. Базы данных. Введение в теорию и методологию: учебник. – М.: Финансы и статистика, 2006. – 512 с.
  15. Мельников В. Защита информации в компьютерных системах. – М.: Финансы и статистика, Электронинформ, 2007
  16. Пирогов В. Ю. Информационные системы и базы данных. Организация и проектирование. – БХВ-Петербург, 2009 г. – 528 с.
  17. Попов И., Максимов Н., Голицына О. Информационные системы. – М.: Форум, Инфра-М, 2007 г. – 496 с.
  18. Титоренко Г.А. Информационные технологии управления. – М.: Юнити: 2012.
  19. Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. Базы данных: учебник для высших учебных заведений. 6-е издание. – М.: КОРОНА-Век, 2010. –736 c.