Введение
Технологии баз данных (БД) используются в широком спектре приложений. Это может быть как БД для единичного пользователя, которая отличается небольшим размером и круглосуточным доступом к ней, так и крупные распределенные БД, которые используют международные компании и организации. В таких сферах часто содержится большой объём данных, к которому необходим одновременный доступ десятку тысяч пользователей.
В общем случае, можно сказать, что БД – это самодокументированное собрание интегрированных записей. БД прошли долгий путь развития, начиная с использования списков и заканчивая реляционными моделями. С более высокими масштабами компьютеризации и проникновением компьютерной техники во все сферы человеческой деятельности, все больше нарастала необходимость в хранении больших объёмов данных в структурированном виде. При этом наиболее простым способом организации небольших по размерам баз данных остается списочная модель, которая не менее эффективна для хранения больших объёмов разнородных данных, чем любая другая модель.
БД часто применяются для хранения каких-то ключевых данных, которые позволяют получить доступ к каким-то секретным или зашифрованным данным. В качестве примера может выступать пароль пользователя для доступа к банковской карте или в интернет-магазине. Таким образом, обеспечение защищенности и надежности базы является непростой и актуальной задачей, так как правильно выбранная модель БД и алгоритмы работы с ней позволяют повысить производительность, эффективность, а так же надёжность и защищённость всей системы.
1. Общее описание базы данных
В разработанном программном комплексе защиты и ограничения доступа к файлам, прикладная БД играет ключевую роль, так как в ней хранится вся информация для доступа к зашифрованным файлам.
При разработке прикладной БД были рассмотрены различные модели, обладающие своими достоинствами и недостатками. В качестве модели для разработанного программного комплекса была выбрана списочная модель, как самая простая и имеющая достаточный уровень эффективности взаимодействия с базой. При этом учитывался и тот факт, что объём хранимых данных достаточно невелик.
В БД хранится информацию о любом зашифрованном файле и ключи доступа к нему, поэтому необходимо обеспечить достаточный уровень её защищённости. Для этого база данных шифруется алгоритмом шифрования TripleDES. В качестве ключа доступа к базе выступает пользовательский пароль. Для повышения надёжности и простоты построения структуры БД в качестве информации о зашифрованном файле используются хеш-суммы, позволяющие получить доступ к зашифрованному файлу, даже если он был перемещён с места, где он был зашифрован. Таким способом реализуется отвязка от первоначального места хранения файла.
2. Структура базы данных
Разработанная БД хранит в себе данные двух типов – это информация о флеш-накопителе, к которому осуществляется привязка системе защиты файлов, и информация о зашифрованных файлах с ключами доступа к ним.
В качестве информации об устройстве хранения данных служат следующие поля:
- idVendor (VID) – идентификатор производителя;
- idProduct (PID) – идентификатор устройства;
- SerialNumber – серийный номер устройства.
Данные поля обеспечивают достаточно точное определение подключаемого устройства хранения данных. Указанные поля хранятся в начале БД, последующие же поля содержат информацию о зашифрованных файлах и ключах доступа к ним. В качестве таких данных выступают следующие поля:
- хеш-сумма исходного файла;
- хеш-сумма зашифрованного файла;
- ключ доступа к файлу;
- вектор инициализации.
Далее подробно рассмотрим эти поля.
Хеш-сумма исходного файла
Поле хеш-суммы исходного файла используется при шифровании новых файлов. Данное поле позволяет системе проводить проверку на дубликаты. Если при шифровании нового файла в базе данных будет обнаружена такая же хеш-сумма, как и хеш-сумма подданного на шифрование файла, то шифрование производиться не будет.
Хеш-сумма зашифрованного файла
Поле хеш-суммы используется при расшифровке файлов. Данное поле позволяет определить, подаётся ли на вход системы зашифрованный файл или какой-либо другой. В качестве алгоритма формирования хеш-суммы файлов был выбран алгоритм MD5, длина хеша для которого составляет 128 бит (16 байт).
Ключ доступа к файлу
Поле ключа доступа к файлу используются при шифровании (расшифровке) файлов. В качестве значений для этого поля используются псевдослучайные числа, генерируемые программой автоматически.
Вектор инициализации
За полем вектора инициализации закреплены те же обязанности, что и за полем ключа доступа. Эти поля работают в паре, и если одного из них не будет, то доступ к зашифрованному файлу будет невозможен.
Исходя из вышесказанного, структуру БД можно изобразить в виде структурированной таблицы (табл. 1).
Таблица 1 – Структура базы данных
Объем (в байтах) | 2 | 2 | 60 | Смещение | |
Информация о флеш-накопителе | VID | PID | SerialNumber |
0 … 63 |
|
Объем (в байтах) | 16 | 16 | 16 | 16 | |
Информация о зашифрованных файлах | Хеш-сумма исходного файла 1 | Хеш-сумма зашифрованного файла 1 | Ключ доступа к файлу 1 | Вектор инициализации к файлу 1 |
64 … 127 |
Хеш-сумма исходного файла 2 | Хеш-сумма зашифрованного файла 2 |
Ключ доступа к файлу 2 |
Вектор инициализации к файлу 2 |
128 … 191 |
|
… | … | … | … | … | |
Хеш-сумма исходного файла N | Хеш-сумма зашифрованного файла N | Ключ доступак файлу N | Вектор инициализации к файлу N |
N*64 … N*64 + 63 |
Исходя из табл. 1 выводится формула для оценочного расчёта размеров БД: $$ Size = N \times 64 + 64\ (байт) , \tag{1} $$
где N – количество зашифрованных файлов.
Пример расчёта размеров для базы с 1 000 000 записей в ней: $$ Size = 1000000 \times 64 + 64 ≈ 61\ (МБайт) $$.
3. Алгоритмы взаимодействия с базой данных
Для взаимодействия с прикладной БД были разработаны следующие алгоритмы:
- Добавление информации о зашифрованном файле;
- Удаление информации о зашифрованном файле;
- Выдача информации о флеш-накопителе.
. Далее рассмотрим алгоритмы взаимодействия подробнее.
Добавление информации о файлах
Данный алгоритм отрабатывает при запросе пользователя на зашифровку нового файла. Однако прежде чем добавить информацию о новом файле в БД необходимо проверить наличие этого файла. Наличие двух идентичных копий файлов в БД является нарушением ее целостности. После этой проверки осуществляется шифрование файла и получения хеш-суммы зашифрованного файла. Затем это значение вместе с хеш-суммой исходного файла, ключом доступа и вектором инициализации вносятся в соответствующие поля БД. Схема данного алгоритма приведена на рис. 1.
Рис. 1 – Схема алгоритма добавления записей в базу данных
Удаление информации о файле
Данный алгоритм активизируется при расшифровке файлов. Прежде чем начать дешифрование файла необходимо получить ключ доступа к нему и определить вектор инициализации. Для этого осуществляется поиск в БД по полю «Хеш зашифрованного файла». Если соответствия найдены, то данный файл расшифровывается, и запись о нём удаляется из базы. Данный алгоритм представлен на рис. 2.
Рис. 2 – Схема алгоритма удаления записей из базы данных
Выдача информации о флеш-накопителе
Для проверки подлинности подключенного флеш-накопителя необходимо иметь возможность сравнить информацию о нём с имеющимися данными в базе. Таким образом, данный алгоритм отрабатывает при запросе подсистемы контроля доступа, то есть когда пользователь начинает работать с разработанной системой защиты файлов.
4. Особенности базы данных
Контроль целостности базы данных не осуществляется, так как отсутствует подсистема, которая позволяла бы определять наличие зашифрованных файлов на рабочей станции. Отсутствие такой подсистемы не является критичным, так как объём хранимых данных о каждом файле является небольшим, поэтому разрастание незначащих объёмов данных будет небольшим, и не будет оказывать существенного влияния на работу всей системы.
Способ взаимодействия с базой данных таков, что на диске хранится всегда только зашифрованная копия базы, а открытая (расшифрованная) – лишь временно в памяти, что повышает не только безопасность хранимых данных, но и скорость их обработки. Так же допускается хранение полного объёма расшифрованной базы в оперативной памяти рабочей станции в случае, если БД имеет небольшой объем (пример расчета размера приведен в п.3).
Выводы
В данной работе был рассмотрена одна из моделей реализации прикладной БД –списочная модель, позволяющая хранить записи в виде обычных структур (полей), доступ к которым осуществляется по тому же принципу, что и в любом файле на рабочей станции пользователя. Данная модель позволила сделать достаточно простые и прозрачные алгоритмы взаимодействия с БД.
Реализованная прикладная БД хранится в зашифрованном виде, что позволяет повысить сохранность хранимых в ней данных от несанкционированного доступа.
В данной работе рассмотрены лишь несколько базовых способов взаимодействия с БД. Это обуславливается простотой требований к БД в реализованной системе защиты файлов. Неописанные особенности работы с БД, например, такие как чистка мусора (удаление незначимых записей), оптимизация хранимых полей (сортировка по определенным критериям) и так далее, не являются критичными для разработанной системы, и могут быть реализованы в дальнейшем.
Литература
1. Bruce Schneier Applied Cryptography Second Editio. – John Wiley & Sons, 1996 Paperback – 784 p.
2. Michael Welschenbach Cryptography in C and C++ translated by David Kramer. – 2nd American ed., rev. and enl, 2005 – 422 p.
3. Документация по криптографической библиотеке Crypro++ [электронный ресурс]. – Режим доступа: http://www.cryptopp.com/.