РЕФЕРАТ
Выпускная квалификационная
АРХИТЕКТУРА БЕЗОПАСНОСТИ, БАЗА ДАННЫХ, ЗАЩИЩЕННОЕ СОЕДИНЕНИЕ, ШИФРОВАНИЕ, ХЭШИРОВАНИЕ ДАННЫХ, ВЕДЕНИЕ ТОРГОВОГО УЧЕТА.
Целью работы является создание защищенного приложения для ведения учета продаж и закупок, ориентированное на малый бизнес.
Объектом исследования является механизм ведения торгового учета, а также архитектура безопасности приложения.
В процессе выполнения ВКР была спроектирована модель базы данных в соответствии с предметной областью «Торговля», разработана архитектура системы безопасности, создана диаграмма классов приложения, проанализировано взаимодействие методов защиты с работой приложения, разработано приложение по ведению базы данных, внедрены методы защиты приложения.
Созданная программа позволяет осуществлять работу для выбранных
пользователей с учетом их спецификации - товаровед задает наименование товаров,
поставщиков, складов, производителей и так далее, а также ведает закупками.
Продавец формирует продажи по имеющейся номенклатуре. Директор просматривает
отчеты с информацией о доходах и расходах предприятия. Администратор может
корректировать все таблицы, а также исполнять административные функции,
например, создавать новых пользователей.
СОДЕРЖАНИЕ
Определения, обозначения и сокращения
Введение
. Моделирование предметной области
1.1 Анализ предметной области
.2 Проектирование базы данных
2. Проектирование архитектуры системы безопасности приложения базы данных
2.1 Архитектура системы безопасности
.2 Система контроля доступа с использованием ролевой политики
безопасности
.3 Защищенное соединение
.4 Защита от Sql-инъекций
.5 Хэширование паролей
.6 Обеспечение целостности данных
.7 Шифрование содержимого базы данных
.7.1 Многочлены с коэффициентами, принадлежащими полюGF(28)
.8 Защита от дизассемблирования
.9 Резервное копирование
3. Программная реализация и тестирование приложения
Заключение
Список использованных источников
Приложения
|
БД |
база данных |
|
СУБД |
система управления базами данных |
|
РРД |
ролевое разграничение доступа |
|
ИНН |
идентификационный номер налогоплательщика |
|
ИП |
индивидуальный предприниматель |
|
КПП |
код причины постановки |
|
MD5 |
message digest 5-алгоритм хэширования |
|
SHA-1 |
secure hash algorithm 1-алгоритмхэширования |
|
MAC |
message authentication code- кодпроверкисообщения |
|
HMAC |
hashed message authentication code - хэшированныйкодпроверкисообщения |
|
SSL |
secure sockets layer-криптографический протокол <https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB>для защищенного обмена данными |
|
TLC |
transportlayersecurity-криптографические протокол <https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB>, обеспечивающие защищённую передачу данных |
|
DES |
dataencryptionstandard -алгоритм для симметричного шифрования |
|
3DES |
triple dataencryptionstandard-симметричный блочный шифр <https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D1%88%D0%B8%D1%84%D1%80>, на основе алгоритмаDES <https://ru.wikipedia.org/wiki/DES> |
|
RC2 |
rivest'scipher2 -алгоритм блочного шифр <https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D1%88%D0%B8%D1%84%D1%80>ования |
|
AES |
advancedencryptionstandard-симметричный алгоритм <https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B>блочного шифрования <https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D1%88%D0%B8%D1%84%D1%80> |
На сегодняшний день предпринимательство может считать одной из самых распространённых профессий. Современные условия, в том числе Интернет, делают процесс предпринимательства доступным для широчайшей аудитории, в том числе для тех категорий людей, которые ещё 10 лет назад едва ли смогли бы начать своё дело: школьники, студенты, пенсионеры.
Важным аспектом в ведении предпринимательской деятельности является торговый учет. Именно благодаря ему мы можем оценить рентабельность предприятия, на основании продаж спрогнозировать дальнейшие заказы, на основании выручки и чистой прибыли сформировать ценовую политику. На основании средств, затраченных на рекламу и клиентов, пришедших с этой рекламы, строить свои выводы об эффективности маркетинговой компании и так далее. Таким образом, «цифры»- важнейший показатель в предпринимательской деятельности[2,5].
Возникает вопрос: «Каким образом лучше всего вести торговый учет?».
Логичным ответом на него является использование специализированных программ, например 1С. И действительно, данное решение подойдет очень многим предпринимателям, однако не всем. Дело в том, что система 1С является универсальной и многофункциональной - она ориентирована на любые виды бизнеса и торговый учет у нее может вестись в разрезе сотен измерений, что делает её достаточно неудобной для маленьких компаний, которым требуется малая часть от функционала, который предоставляет 1С. Другим достаточно важным недостатком является стоимость программы и постоянная плата за услуги мастера, который будет обновлять её.
Все это в совокупности делает подобную систему неподходящей для начинающего предпринимателя, не имеющего большого количества продаж и не работающего с большим количество видов документов. Другим ответом на поставленный вопрос является электронные таблицы, например, MSExcel. Данное приложение позволяет нам записывать суммы продаж и закупок и на основании их формировать представление о рентабельности малого предприятия. Однако на этом функционал Excel можно считать завершенным. Поэтому проведение анализа затруднено. В приложении MSExcel нет специальных функций для ведения учета по товарам, поставщикам, производителям, складам и датам. Таким образом, MSExcel также можно считать малопригодным для ведения торгового учета [6].
Остается третий вариант- использование бесплатной специализированной программы, не имеющей громоздкого функционала, но в то же время обладающей минимальным набором нужных опций. Разработка именно такой программы является целью ВКР.
Цель работы-создание защищенного приложения «Система ведения учета продаж и закупок» для малого бизнеса.
Поставленная цель ВКР определяет следующие задачи:
. Проектирование модели базы данных в соответствии с предметной областью «Торговля».
. Разработка архитектуры системы безопасности приложения по ведению базы данных.
. Реализация приложения, обеспечивающего учет продаж и закупок предприятия, и реализация способов его защиты.
. Тестирование приложения.
В результате выполняемой работы предполагается получение готового
программного продукта.
.1 Анализ предметной области
Ведение бизнеса может осуществляться несколькими способами: продажей товара, предоставлением разовых услуг, предоставлением сервиса с постоянными платежами, а также комбинациями данных способов.
Поскольку наше приложение ориентированно на учет продаж и закупок, будем рассматривать сферу бизнеса, связанную исключительно с продажей товара. Продажа товара может быть оптовой, розничной и оптово-розничной. Ведение оптовой и оптово-розничной торговли в большинстве случаев относится к средним и крупным компаниям, так как для осуществления подобной деятельности необходимы развитая логистика, большие денежные средства для закупок, наличие крупных складов, взаимодействие с другими компаниями и так далее. Помимо продаж и закупок существует масса других факторов, которые необходимо учитывать: расхождения в заказе поставщику и присланной продукцией, порча товара в пути, контроль брака товара, возвраты от других оптовых покупателей, сроки доставки, проведение ревизий и так далее. Таким образом, очевидно, что в данной деятельности требуется сложная и многофункциональная программа ведения торгового учета, поэтому мы сосредоточимся исключительно на розничной торговли.
Ведение розничной торговли может рассматриваться как осуществление двух основных торговых операций -закупок и продаж товара. Каждая закупка и продажа должна характеризоваться товаром, участвующим в операции, а также его количеством.
В свою очередь товар также должен содержать в себе некую дополнительную информацию, характеризующую его: является товар весовым или штучным, в каких формах он продается (упаковки, штуки, коробки и так далее), какова цена данного товара, кто является его поставщиком и производителем, какова ставка НДС для данного товара, какой штрих-код у товара и так далее.
При этом отметим, что каждый товар имеет как минимум две цены: цену поставщика, по которой мы его закупаем и цену продажи. Именно разница этих двух показателей будет формировать нам выручку, что является основой любой предпринимательской деятельности.
Некоторые характеристики товара также могут содержать в себе дополнительную информацию, например, поставщик товара обязательно имеет телефон и юридический адрес, тоже самое можно сказать и о производителе. Подобная информация будет храниться в столбцах соответствующих таблиц.
Продажа товара может осуществляться как с розничной точки, таки через интернет. Соответственно во втором случае требуется наличие некого склада, на котором будет храниться товар. В первом случае в качестве склада может выступать как сама розничная точка, так и отдельное помещение, которое имеет свой собственный адрес.
Информация о закупках и продажах будут отображаться в базе данных в виде табличных строк (в отдельных таблицах для закупок и продаж) с соответствующими характеристиками каждой торговой операции (дата, количество проданной или купленной номенклатуры, цена номенклатуры и так далее).
Выделим предварительный набор сведений, которые должны храниться в базе данных для корректного ведения управления торговлей:
) наименование номенклатуры;
) единица измерения номенклатуры;
) поставщик номенклатуры;
) адрес поставщика (город, улица, номер дома, телефон);
) ИНН и КПП производителя;
) ставка НДС;
) страна происхождения номенклатуры;
) производитель номенклатуры;
) адрес производителя (город, улица, номер дома, телефон);
)штрих-код;
) закупочная цена;
) розничная цена;
)операция продажи;
)дата продажи;
)количество проданной продукции;
) сумма продажи;
)операция закупки;
) дата операции закупки;
) количество закупленной продукции;
)сумма закупки;
) склад номенклатуры;
) подразделения (магазины).
Дополнительно будем выделять такие сведения, как «Цена с учетом НДС» (для закупок и продаж).
В качестве модели представления данных будет использована модель «Сущность-Связь». Любая предметная область может быть представлена как множество сущностей, между которыми существуют связи.
Под предметной областью подразумевается абстрагированная часть реального мира в виде понятий, описанная словами.
Абстрагирование - это мыслительная операция выделения существенных свойств объекта путем отвлечения в процессе познания от несущественных свойств. Абстрагирование, иначе, - это упрощенное описание части реального мира в форме понятий.
Метод «Сущность-Связь» использует следующие понятия:
) сущность- это понятие, данное объекту реального мира;
)свойство сущности- это понятие, данное свойству объекта реального мира;
) атрибут сущности - это имя свойства сущности;
) ключ сущности- это один или несколько атрибутов сущности, значения которых не могут встречаться в двух различных экземплярах сущности;
) экземпляр сущности- это понятие, поставленное в соответствии объекту из набора объектов реального мира, в котором у каждого объекта имеется набор одинаковых свойств, и значения наборов свойств не повторяются.
. Связь- это понятие, данное взаимодействию объектов реального мира [4].
То число сущностей, между которыми установлена связь, называют степенью связи. Рассмотрение степеней особенно полезно для бинарных связей. Рассмотри те виды связи, которые мы будем использовать:
один к одному (обозначается 1:1).Это означает, что в такой связи сущности с одной ролью всегда соответствует не более одной сущности с другой ролью;
один ко многим (обозначается1: n).В данном случае сущности с одной ролью может соответствовать любое число сущностей с другой ролью[7].
Из анализа предметной области мы можем выделить 7 основных сущностей:
) номенклатура;
) поставщики;
) производители;
) продажи;
) склады;
) подразделения;
) закупки.
Также выделим 3 дополнительные сущности, относящихся к пользователям и их ролям:
) пользователь;
) роль;
) связи роли и пользователя.
Представим сущности с их атрибутами и связями между ними в виде модели
предметной области (рисунки 1-2). Поскольку мы будем разделять хранение данных,
связанных с торговлей и данных, связанных с пользователями, ролями и паролями,
будет создано две модели БД.
Рисунок 1 - Модель предметной области «Пользователи и роли»
Рисунок2 - Модель предметной области «Главная база данных»
Благодаря средствам программы WorkBench данные модели были преобразованы в базы данных в СУБД MySql[8].
.2 Проектирование базы данных
Проектирование базы данных будем осуществлять в соответствии с реляционной моделью данных. Для этого, исходя из предварительной информации раздела 1.1, сформируем следующие отношения:
) номенклатура;
) поставщики;
) производители;
) продажи;
) склады;
) подразделения;
) закупки.
Поскольку для торговой отчетности нам может понадобиться история по таким данным, как изменение цены товара со временем, мы выделим отношения «Цена товара». Аналогично в отдельное отношение мы выделим данные по товарам на складе.
Также мы имеем некоторые наборы фиксированных данных, такие, как ставки НДС и, для сохранения целостности БД, будет разумно создать отдельное отношение, которое будет хранить ставки.
Без использования отношения «ставки НДС» возможны ошибки при вводе с клавиатуры, что не позволит создавать корректную отчетность по продажам, поскольку ставка НДС непосредственно влияет на итоговую цену товара.
Общий список отношений следующий: номенклатура; ставки НДС; поставщики; производители; продажи; склады; цены; подразделения; закупки.
Для каждого отношения мы должны определить атрибуты, которые определять каждый кортеж в отношении. Атрибуты мы можем выделить из проведенного ранее анализа предметной области.
Полученные отношения запишем в виде таблиц (таблица 1-12).
Таблица 1 -Номенклатура
|
Имя поля в схеме данных |
Имя поля в компьютерной БД |
Тип поля |
|
Наименование |
Name |
Текстовый (varchar) |
|
Единица измерения |
EdinitsaIzmereniya |
Текстовый (varchar) |
|
Поставщик |
PostavshikiName |
Текстовый (varchar) |
|
Страна происхождения |
Country |
Текстовый (varchar) |
|
Производитель |
ProizvoditeliName |
Текстовый(varchar) |
|
Ставка НДС |
StavkaNDSRazmerStavki |
Числовой (int) |
|
Штрихкод |
Shtrihkod |
Текстовый (varchar) |