СПОСОБ ЗАЩИТЫ ДЕСКРИПТОРОВ РЕЛЯЦИОННОЙ БАЗЫ ДАННЫХ
METHOD OF PROTECTING RELATIONAL DATABASE DESCRIPTORS

Область техники, к которой относится изобретение
Заявленное изобретение относится к методам защиты информации в реляционных базах данных с использованием технологий криптографической защиты информации.
Уровень техники
а) Описание аналогов
Известен способ восстановления информации в ячейке памяти по патенту SU 1501801 (класс G11C 11/40, заявл. 03.09.1987). В известном способе осуществляют восстановление данных, хранящихся в ячейке памяти, на аппаратном уровне путем изменения номинального напряжения.
Недостатком данного способа является:
данный способ подходит для решения задачи восстановления информации, изменяемой естественным образом вследствие износа физических ячеек памяти, но не обладает механизмами, обеспечивающими защищенность хранимой информации от несанкционированных изменений.
Известен способ обнаружения несанкционированного изменения в отношении хранилища сертификатов по патенту РФ 2715027 (класс G06F 21/64, G06F 21/552, заявл. 29.06.2018). В известном способе осуществляют обнаружение и восстановление данных о хранящихся в системе сертификатах электронной подписи.
Недостатком данного способа является:
данный способ подходит для решения задачи восстановления сертификатов электронной подписи, но не обладает механизмами взаимодействия с реляционными базами данных, содержащих дескрипторы защиты.
б) Описание ближайшего аналога (прототипа)
разр
1
2
n
разр
1
2
n
разр
1
2
m
Наиболее близким по своей технической сущности к заявленному является способ защищенного доступа к БД по патенту РФ №2709288 (класс G06F 21/62, заявл. 26.07.2004, опубл. 17.12.2019 бюл. №35). Способ-прототип включает следующую последовательность действий. Технический результат достигается за счет того, что предварительно задают разрешенные IP-адреса, HWID-номера и роли пользователей структурных элементов автоматизированной системы в виде множеств IP={IP, IP,…, IP}, H={H, Н,…, H} и R={R, R,…, R} для повышенной проверки прав доступа к БД, а после приема информации, включающей в себя запрос и пользовательский контекст, сравнивают значения IP-адресов, HWID-номеров и ролей пользователей из пользовательского контекста с множеством дескрипторов защиты: разрешенных IP-адресов, HWID-номеров и ролей пользователей в запоминающем устройстве. В случае если хотя бы одно из условий не удовлетворяется, то формируют сигнал тревоги и выводят информацию в соответствии с правом доступа, а при удовлетворении всех условий переходят к выбору строки, подлежащей рассмотрению при построении результата запроса, а при отсутствии строк в таблице БД выполняют преобразование результата запроса в соответствии с заданной функцией преобразования F(x) по ключу X и выводят результат запроса в соответствии с правом доступа в закодированном виде.
Недостатками прототипа являются:
1. Отсутствие механизма автоматического обнаружения и локализации несанкционированных нарушений целостности данных таблиц, содержащих значения дескрипторов защиты;
2. Отсутствие механизма автоматического восстановления несанкционированно измененного блока данных, содержащего дескрипторы защиты;
3. Отсутствие механизма оповещения о несанкционированных изменениях значений дескрипторов защиты.
В настоящем изобретении предложен способ, позволяющий устранить выявленные недостатки.
Раскрытие изобретения (его сущность)
а) технический результат, на достижение которого направлено изобретение
Техническим результатом заявленного решения является разработка способа, повышающего уровень защищенности данных, хранящихся в реляционных базах данных и содержащих дескрипторы защиты. Поставленная цель достигается посредством введения функции хэширования, предназначенной для формирования криптографических контрольных сумм, и операции побитового сложения, благодаря которым появляется возможность обнаружения и локализации несанкционированно измененного блока данных некоторой таблицы и восстановления исходных данных несанкционированно измененного блока без обращения к резервному сетевому хранилищу данных, а также добавления блока формирования сигнала тревоги.
б) совокупность существенных признаков
Способ защиты дескрипторов реляционной базы данных заключается в том, что принимают информацию, включающую в себя запрос и пользовательский контекст, выбирают строку, подлежащую рассмотрению при построении результата запроса, сравнивают дескриптор защиты строк с дополнительно заданными списками разрешенных IP-адресов, HWID-номеров и ролей пользователей структурных элементов автоматизированной системы с информацией из пользовательского контекста и в случае их несовпадения проверяют наличие оставшихся строк в таблице базы данных, а при их совпадении проверяют вклад строки базы данных в результат запроса и при его отсутствии переходят к выбору строки, подлежащей рассмотрению при построении результата запроса, а в случае его наличия используют упомянутую строку при построении результата запроса и проверяют наличие оставшихся строк в таблице базы данных, в случае их наличия переходят к выбору строки, подлежащей рассмотрению при построении результата запроса, а при их отсутствии выводят результат запроса в соответствии с правом доступам выполнением преобразования результата запроса методом кодирования в соответствии с заданной функцией преобразования F(x) по ключу X, получаемому от Удостоверяющего Центра.
T
h
h
D
h
T
acc
acc
acc
acc
D
асс
i
acc
i
T
h
acc
acc
T
h
h
T
acc
D
acc
acc
T
h
acc
h
D
acc
acc
k
acc
T
h
acc
D
acc
acc
i
acc
T
h
h
D
acc
T
h
D
k
acc
acc
Tk
h
D
acc
D
acc
k
acc
T
h
acc
D
acc
acc
i
acc
T
h
Дополнительно, способ защиты дескрипторов реляционной базы данных основан на выполнении следующих действий: интеграции столбца кортежей C в таблицу контрольных значений T, хранящуюся в реляционной базе данных, заключается в том, что изначально имеются таблица контрольных значений T и таблица T, состоящая из N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты M, в таблицу контрольных значений T добавляют столбец C, элементы которого являются кортежами<0, 0>, состоящими из двух элементов, инициализируют маркеры итерации i и j изначально равные 0, а также буферы HH, SUM и z, изначально равные 0, затем переходят к шагу инкрементации значения маркера итераций i на 1, устанавливают значения маркера итерации j и буферов HH, SUM равными 0, проверяют выполнение условия превышения значением маркера итераций i значения N, в том случае, если условие выполняется, происходит завершение процесса, а в случае, если условие не выполняется происходит переход к шагу инкрементации значения маркера итераций j на 1 и присвоения буферу z значения j-го элемента кортежа M, затем проверяют выполнение условия не превышения значением маркера итераций j значения М, в том случае, если условие выполняется, к текущему значению буфера НН прибавляют значение ячейки в строке i столбца z таблицы Т (далее T(z)), а к текущему значению буфера SUM побитово прибавляют значение ячейки T(z) и возвращаются к шагу инкрементации значения маркера итераций j на 1, а в случае, если условие не выполняется, заменяют значение ячейки i-ой строки столбца C таблицы T кортежем, состоящим из двух элементов, а именно: значение хэш-функции от значения буфера HH в качестве первого элемента и значение буфера SUM в качестве второго, затем возвращаются к шагу инкрементации значения маркера итераций i на 1, алгоритм интеграции столбца хэш-сумм HV в таблицу контрольных значений, хранящуюся в реляционной базе данных, заключается в том, что изначально имеются таблица контрольных значений T и таблица Т, состоящая из N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты MD, в таблицу контрольных значений T добавляют столбец HV, изначально заполненную пустыми значениями, инициализируют маркеры итераций i и j изначально равные 0, а также буферы HV и z, изначально равные 0, затем переходят к шагу инкрементации значения маркера итераций j на 1 и присвоения буферу z значения j-го элемента кортежа M, устанавливают значения маркера итерации i и буфера HV равным 0, проверяют выполнение условия превышения значением маркера итераций у значения М, в том случае, если условие выполняется, происходит завершение процесса, а в случае, если условие не выполняется происходит переход к шагу инкрементации значения маркера итераций i на 1, затем проверяют выполнение условия не превышения значением маркера итераций i значения N, в том случае, если условие выполняется, к текущему значению буфера HV прибавляют значение ячейки Ti(z) и возвращаются к шагу инкрементации значения маркера итераций i на 1, а в случае, если условие не выполняется, заменяют значение j-го элемента столбца HV таблицы T значением хэш-функции от значения буфера HV, затем возвращаются к шагу инкрементации значения маркера итераций j на 1, алгоритм обнаружения и локализации несанкционированно измененного значения дескриптора защиты в строке таблицы реляционной базы данных заключается в том, что изначально имеются таблица контрольных значений T и таблица Т, состоящая из N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты M, а также получен индекс строки k таблицы Т, проверку которой необходимо осуществить, далее инициализируют маркер итераций у и буфер HH, изначально равные 0, затем переходят к шагу инкрементации значения маркера итераций у на 1 и присвоения буферу q значения у-го элемента кортежа MD, после чего проверяют выполнение условия не превышения значением маркера итераций у значения М, в том случае, если условие выполняется, к текущему значению буфера HH прибавляют значение ячейки T(q) и возвращаются к шагу инкрементации значения маркера итераций у на 1, а в случае, если условие не выполняется, проверяют выполнение условия равенства значения хэш-функции от значения буфера HH со значением первого элемента кортежа в столбце C строке к таблицы T, в том случае, если условие выполняется, происходит подтверждение легитимности дескрипторов защиты k-ой строки таблицы Т, а затем завершается процесса, а в случае, если условие не выполняется, инициализируют маркеры итерации i и j изначально равные 0, а также буфер HV, изначально равный 0, затем переходят к шагу инкрементации значения маркера итераций j на 1 и присвоения буферу z значения j-го элемента кортежа M, после чего присваивают значение 0 маркеру итераций i и буферу HV, затем переходят к шагу инкрементации значения маркера итераций i на 1, после чего проверяют выполнение условия не превышения значением маркера итераций i значения N, в том случае, если условие выполняется, к текущему значению буфера HV прибавляют значение ячейки T(z), после чего возвращаются к шагу инкрементации значения маркера итераций i на 1, а в случае, если условие не выполняется, проверяют выполнение условия равенства значения хэш-функции от значения буфера HV со значением ячейки j-ой строки столбца HV в таблице T, в том случае, если условие выполняется, возвращаются к шагу инкрементации значения маркера итераций j на 1, а в случае, если условие не выполняется, формируют выходные данные, состоящие из текущих значений индекса строки к и имени столбца z, определяющих измененную ячейку таблицы Т, после чего происходит завершение процесса, алгоритм восстановления несанкционированно измененного дескриптора защиты в таблице реляционной базы данных заключается в том, что изначально имеются таблица контрольных значений T и таблица Т, состоящая из N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты M, а также получены индекс строки к и имя столбца z, определяющие ячейку таблицы Т, значение которой необходимо восстановить, далее инициализируют маркер итераций у, изначально равный 0, а также буферы q, изначально равный 0, и SUM, равный значению второго элемента кортежа строки к столбца C таблицы T, затем переходят к шагу инкрементации значения маркера итераций j на 1 и присвоения буферу q значения j-го элемента кортежа M, после чего проверяют выполнение условия превышения значением маркера итераций у значения М, в том случае, если условие выполняется, заменяют значение ячейки T(z) текущим значением буфера SUM, после чего происходит завершение процесса, а в случае, если условие не выполняется, проверяют выполнение условия равенства текущего значения буфера наименования столбца q с наименованием столбца z, в том случае, если условие выполняется, возвращаются к шагу инкрементации маркера итераций j на 1, а в случае, если условие не выполняется, к текущему значению буфера SUM побитово прибавляют значение ячейки (q), после чего возвращаются к шагу инкрементации значения маркера итераций j на 1, алгоритм обнаружения и локализации несанкционированно измененного значения дескриптора защиты в таблице реляционной базы данных заключается в том, что изначально имеются таблица контрольных значений T и таблица Т, состоящая из N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты M, далее инициализируют маркер итераций k, изначально равный 0, после чего переходят к шагу инкрементации значения маркера итераций k на 1, затем проверяют выполнение условия не превышения значением маркера итераций k значения N, в том случае, если условие не выполняется, происходит подтверждение легитимности дескрипторов защиты, хранящихся в таблице Т, после чего происходит завершение процесса, а в случае, если условие выполняется, инициализируют маркер итераций у и буфер HH, изначально равные 0, затем переходят к шагу инкрементации значения маркера итераций у на 7 и присвоения буферу q значения у-го элемента кортежа M, после чего проверяют выполнение условия не превышения значением маркера итераций у значения М, в том случае, если условие выполняется, к текущему значению буфера HH прибавляют значение ячейки T(q) и возвращаются к шагу инкрементации значения маркера итераций у на 1, а в случае, если условие не выполняется, проверяют выполнение условия равенства значения хэш-функции от значения буфера HH со значением первого элемента кортежа строки к столбца C таблицы T, в том случае, если условие выполняется, возвращаются к шагу инкрементации значения маркера итераций k на 1, а в случае, если условие не выполняется, инициализируют маркеры итерации j и i, изначально равные 0, а также буферы z и HV, изначально равные 0, затем переходят к шагу инкрементации значения маркера итераций j на 1 и присвоения буферу z значения j-го элемента кортежа M, после чего устанавливают значения маркера итераций i и буфера HV равными 0, затем переходят к шагу инкрементации значения маркера итераций i на 1, после чего проверяют выполнение условия не превышения значением маркера итераций i значения N, в том случае, если условие выполняется, к текущему значению буфера HV прибавляют значение ячейки T(z), после чего возвращаются к шагу инкрементации значения маркера итераций i на 1, а в случае, если условие не выполняется, проверяют выполнение условия равенства значения хэш-функции от значения буфера HV со значением ячейки j-ой строки столбца HV в таблице T, в том случае, если условие выполняется, возвращаются к шагу инкрементации значения маркера итераций j на 1, а в случае, если условие не выполняется, формируют выходные данные, состоящие из текущих значений индекса строки к и имени столбца z, определяющих измененную ячейку таблицы Т, после чего происходит завершение процесса.
Сопоставительный анализ заявляемого решения с прототипом показывает, что предлагаемый способ отличается от известного:
1. Наличием механизма автоматического обнаружения и локализации несанкционированного изменения значения дескриптора защиты таблицы реляционной базы данных;
2. Наличием механизма автоматического восстановления исходного значения дескриптора защиты таблицы;
3. Созданием таблицы контрольных значений, путем добавления в нее пары столбцов на каждую защищаемую таблицу базы данных (пример такой таблицы изображен на фигуре 2). В первых из пары столбцах хранятся хэш-суммы значений столбцов защищаемых таблиц, а во вторых из пары столбцах хранятся кортежи, из двух элементов: хэш-суммы значений строк таблиц и побитовые суммы значений строк таблиц;
4. Наличием механизма проверки целостности и подлинности дескрипторов защиты в процессе аутентификации пользовательского контекста при обработке запроса, и, при необходимости, автоматического восстановления исходного значения дескриптора защиты;
5. Наличием механизма формирования сигнала тревоги, оповещающего о несанкционированном изменении дескрипторов защиты.
в) причинно-следственная связь между признаками и техническим результатом
Благодаря новой совокупности существенных признаков в заявленном способе появляется функционал обнаружения факта нарушения целостности данных, представляющих собой дескрипторы защиты информации, хранящейся в реляционной базе данных, который достигается с помощью криптографических средств защиты информации, а именно способа вычисления хэш-сумм, а также функционал восстановления целостности данных посредством вычисления побитовой суммы значений строк защищенных таблиц путем предварительного создания таблицы контрольных значений и добавления в нее пары столбцов на каждую защищаемую таблицу базы данных.
Проведенный анализ уровня техники позволил установить, что аналоги, характеризующиеся совокупностью признаков, тождественных всем признакам заявленного технического решения, отсутствуют, что указывает на соответствие заявленного способа условию патентоспособности «новизна».
Результаты поиска известных решений в данной и смежных областях техники с целью выявления признаков, совпадающих с отличительными от прототипа признаками заявленного объекта, показали, что они не следуют явным образом из уровня техники. Из уровня техники также не выявлена известность отличительных существенных признаков, обусловливающих тот же технический результат, который достигнут в заявляемом способе. Следовательно, заявленное изобретение соответствует условию патентоспособности «изобретательский уровень».
Краткое описание чертежей
Заявленный способ поясняется чертежами, на которых показаны:
фиг. 1 - таблица Т базы данных с защищаемой информацией, содержащая дескрипторы защиты (TP-адреса, HWID-номера и роли пользователей);
фиг. 2 - демонстрационная таблица контрольных значений Th с тремя интегрированными таблицами (Tab1, Tab2, Tab3).
фиг. 3 - алгоритм автоматического обнаружения и локализации несанкционированного изменения дескрипторов защиты реляционной базы данных и восстановления их исходных значений;
фиг. 4 - алгоритм интеграции столбца кортежей С в таблицу контрольных значений;
фиг. 5 - алгоритм интеграции столбца хэш-сумм HV в таблицу контрольных значений;
фиг. 6 - алгоритм обнаружения и локализации несанкционированно измененного значения дескриптора защиты в строке таблицы реляционной базы данных;
фиг. 7 - алгоритм восстановления несанкционированно измененного дескриптора защиты в таблице реляционной базы данных;
фиг. 8 - алгоритм обнаружения и локализации несанкционированно измененного значения дескриптора защиты в таблице реляционной базы данных.
Осуществление изобретения
Реализация заявленного способа осуществляется следующим образом.
При обращении к базе данных пользователем в систему управления базами данных передаются текстовый запрос и пользовательский контекст. Текстовый запрос представляет собой SQL-запрос, а контекст пользователя набор данных, необходимых для осуществления идентификации пользовательского запроса, а именно: IP-адрес пользователя, HWID-номер пользователя и роль пользователя.
В процессе аутентификации пользовательского запроса сравнивают значения IP-адресов, HWID-номеров и ролей пользователей из полученного пользовательского контекста с множеством разрешенных IP-адресов, HWID-номеров и ролей пользователей, хранящихся в базе данных.
Так как хранящиеся в базе данных дескрипторы защиты подчиняются общей политике безопасности, пользователи, не обладающие необходимыми правами доступа к защищаемой ячейке памяти, но допущенными до других разделов базы данных, могут повысить свои права доступа к некоторой закрытой информации.
Для повышения уровня безопасности дескрипторов защиты, представленных на фигуре 1, необходимо создание таблицы контрольных значений, представленных на фигуре 2, хранящей контрольные и побитовые суммы, и интеграция в нее двух столбцов, связанных со строками и столбцами защищаемой таблицы, хранящими дескрипторы защиты, а также использование механизма расчета и обработки контрольных значений, хранящихся в данной таблице, позволяющего решать следующие задачи:
1. Обнаружение факта несанкционированного изменения дескрипторов защиты;
2. Локализация несанкционированно измененного дескриптора защиты;
3. Восстановление подлинного значения несанкционированно измененного дескриптора защиты.
Таблица контрольных значений, изображенная на фигуре 2, имеет следующую структуру:
1. Пары столбцов, связанные с защищаемыми дескрипторами некоторых таблиц их содержащих, имеют такие названия, как «ИмяТаблщы»_С (от англ. «Cortege» - кортеж) и «ИмяТаблицы»_HV (от англ. «Hash Vertical» - хэш вертикали);
2. Количество пар столбцов Р определяется количеством защищаемых таблиц базы данных, содержащих дескрипторы защиты, с размерами N строк и М столбцов;
3. Количество строк L таблицы контрольных значений определяется наибольшим из двух показателей: либо количеством строк N таблицы Т, содержащих дескрипторы защиты, либо размером кортежа MD (к примеру, в описываемом нами способе кортеж дескрипторов защиты MD = <IP, HWID, Role>, а размер кортежа |MD| = М = 3), содержащего дескрипторы защиты, некоторой защищенной таблицы;
j
D
j
4. Столбец «ИмяТаблицы»_ HV содержит значения HV хэш-функции для каждого j-го дескриптора (из кортежа M) защищаемой таблицы. Значение HV рассчитывается от эталонных (неизмененных) значений дескрипторов защищаемой таблицы, путем конкатенации всех элементов столбца, содержащего значения j-го дескриптора защищаемой таблицы, и вычисления хэш-функции от полученной суммы;
i
i
i
i
5. Столбец «ИмяТаблицы»_С представляет собой кортежи, состоящие из двух элементов: значения HH хэш-функции (от англ. «Hash Horizontal» - хэш горизонтали) и значения SUM побитовой суммы для каждой i-ой строки (из N строк) защищаемой таблицы, содержащей дескрипторы защиты. Значения HH и SUM рассчитываются следующим образом:
i
5.1. Значение HH рассчитывается от исходных (неизмененных) значений дескрипторов защиты, путем сложения всех значений дескрипторов i-ой строки (из N строк) защищаемой таблицы и вычисления хэш-функции от полученной суммы;
i
5.2. Значение SUM рассчитывается от исходных (неизмененных) значений дескрипторов защиты, путем побитового сложения всех значений дескрипторов i-ой строки (из N строк) защищаемой таблицы.
Интеграция в таблицу контрольных значений вышеописанных пар столбцов позволит в дальнейшем производить дополнительную проверку подлинности дескрипторов защиты, предшествующую аутентификации пользовательского запроса, которая исключит вероятность несанкционированного доступа к закрытой информации путем подмены хранимых значений дескрипторов защиты.
Обнаружение факта изменения значений дескрипторов защиты реализуется путем сравнения исходных значений хэш-сумм НН первых из пары столбцов таблицы контрольных значений со значениями хэш-сумм соответствующих строк, перерассчитанных в момент обращения пользователя к защищаемой таблице. В том случае, если все сравниваемые пары хэш-сумм равны, подтверждается легитимность дескрипторов защиты, хранящихся в защищаемой таблице, а в ином случае, запоминается индекс строки, для которой перерассчитанное значение хэш-суммы отлично от исходного, для дальнейшего восстановления исходного значения несанкционированно измененного блока данных. Также, после обнаружения факта несанкционированного изменения значений дескрипторов защиты, формируется сигнал тревоги, оповещающий о нарушении целостности дескрипторов защиты таблицы.
Локализация несанкционированно измененного дескриптора защиты реализуется путем сравнения исходных значений хэш-сумм со значениями хэш-сумм соответствующих столбцов, перерассчитанных после обнаружения факта несанкционированного изменения значения дескриптора защиты. Затем запоминается имя столбца, для которого перерассчитанное значение хэш-суммы отлично от исходного, для дальнейшего восстановления исходного значения несанкционированно измененного блока данных.
i
Восстановление несанкционированно измененного дескриптора защиты в строке i реализуется путем побитового прибавления к исходной побитовой сумме SUM, хранящейся в таблице контрольных значений, всех элементов i-ой строки из количества М, за исключением несанкционированно измененного элемента. Полученное в результате значение будет являться исходным значением несанкционированно измененного элемента i-ой строки защищаемой таблицы.
В настоящем изобретении предусматривается как проверка целостности запрашиваемых в процессе аутентификации дескрипторов защиты, так и полная проверка целостности дескрипторов защиты таблиц базы данных в рамках регламентных работ.
Чтобы достичь вышеуказанных и связанных целей, концепция настоящего изобретения представлена в нижеследующем описании и прилагаемыми чертежами. Эта концепция характеризует различные пути, которыми можно воплотить принципы изобретения, а настоящее изобретение следует считать включающим в себя все такие аспекты и их эквиваленты.
В силу все более широкого распространения персональных компьютеров важность организации информации в виде баз данных (БД) непрерывно возрастает.
Часто возникающей проблемой в корпоративных информационных системах является отказ в обслуживании БД и нарушение целостности хранящейся в них информации, вследствие воздействия различных внешних факторов, таких как: воздействие стихийных природных явлений, преднамеренные действия злоумышленников, непреднамеренные действия сотрудников, отказ в работе оборудования и др.
Таким образом, проблема восстановления целостности данных, в случае ее нарушения, является актуальной по сей день.
Вследствие природы данных, хранящихся в БД, санкционирование избирательного доступа (например, запрета доступа, доступа для считывания и/или доступа для считывания и записи) к этим данным приобретает существенное значение.
Так как аутентификация пользовательского контекста происходит посредством использования хранящихся в БД дескрипторов защиты, важным условие корректного функционирования системы является их подлинность.
Для отслеживания несанкционированных изменений данных, в том числе и дескрипторов защиты, применяются контрольные суммы, рассчитываемые при помощи использования хэш-функций.
Хэш-функция - это функция, применяемая к входящему сообщению произвольной длины и возвращающая выходное значение фиксированной длины. Главной особенностью хэш-функции является однонаправленность, что обуславливает невозможность восстановить исходное сообщение по выходному значению. Стоит отметить, что выходное значение хэш-функции для одного и того же набора входных данных всегда будет одинаковым. Это позволяет фиксировать факт изменения входных данных (значения строки/столбца таблицы) путем сравнения полученного значения хэш-функции с эталонным.
Благодаря описанным преимуществам хэш-функций в данном изобретении реализованы обнаружение и локализация несанкционированно измененных значений дескрипторов защиты.
Блок-схема 300 процесса автоматического обнаружения и локализации несанкционированного изменения дескриптора защиты таблицы реляционной базы данных и восстановления его исходного значения, отображенная на фигуре 3, объединяет блок-схемы 400, 500, 600, 700, 800, отображенные на фигурах 4-8 соответственно. Блок 301 устанавливает соединение с БД, блок 302 формирует запрос на подключение к БД, после чего происходит проверка подключения. В случае отсутствия подключения, блок 308 выводит сообщение об ошибке подключения к БД, а блок 309 подтверждает отправку повторного запроса на подключение. В случае отсутствия подтверждения (блок 310) процесс завершается, а в случае наличия подтверждения переходят к блоку 302. В целом, блоки 301-303 и 308-310 организуют установку соединения с базой данных и подключение к ней для дальнейшей работы.
h
h
Блок 304 проверяет факт создания таблицы контрольных значений T, необходимой для функционирования описываемого способа, структура которой была описана выше. Если таблица T не создана, то блок 311 создает ее.
T
T
h
T
T
Блок 305 проверяет факт проведения интеграции пары столбцов С и HV в таблицу контрольных значений Th для повышения защищенности некоторой таблицы Т, содержащей N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты MD. Если пара столбцов для защищаемой таблицы Т не была интегрирована в таблицу контрольных значений T, то блоки 306 и 307 интегрируют эту пару столбцов с именами C и HV (где Т - название некоторой защищаемой таблицы Т) соответственно.
Блок 312 проверяет условие необходимости проверки на несанкционированное изменение запрашиваемой пользователем строки таблицы Т, а точнее дескрипторов защиты, хранящихся в данной строке, для дальнейшей аутентификации пользовательского контекста и обработки информации из данной строки некоторой таблицы. Если условие выполняется, то блок 314 принимает номер запрашиваемой строки n таблицы Т, а блок 315 обнаруживает и локализует несанкционированно измененный дескриптор запрашиваемой строки n таблицы, либо подтверждает легитимность дескрипторов защиты данной строки (подробнее в блок-схеме 400 на фигуре 6).
Блок 313 проверяет условие необходимости проверки на несанкционированное изменение дескрипторов некоторую таблицу Т целиком. Данный блок исполняется в случае необходимости выполнения регламентных работ различных объемов. При необходимости проверить таблицу T целиком блок 316 обнаруживает и локализует несанкционированно измененный дескриптор некоторой таблицы Т, либо подтверждает легитимность дескрипторов защиты данной таблицы (подробнее в блок-схеме 600 на фигуре 8).
После обнаружения и локализации несанкционированно измененного дескриптора защиты блок 317 формирует сигнал тревоги, а блок 318 (подробнее в блок-схеме 500 на фигуре 7) восстанавливает значение данного дескриптора.
Блок-схема 400 на фигуре 4 отображает процесс интеграции первого из пары столбца кортежей CT, необходимого для обнаружения, локализации и восстановления несанкционированно измененного дескриптора защиты информации некоторой таблицы.
h
D
Блок 401 входных данных передает блоку 402 ссылку на подключение к базе данных, хранящей таблицу контрольных значений T и некоторую защищаемую таблицу Т, состоящую из N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты M.
h
T
h
i
i
Блок 402 добавляет в таблицу T столбец C из пары интегрируемых столбцов, и увеличивает количество строк таблицы контрольных значений до N, если N не меньше текущего количества строк таблицы T. Данный столбец будет содержать кортежи С = <0, 0>, элементами которого будут значения HH хэш-функции и значения SUM побитовой суммы для каждой i-ой строки (из N строк) защищаемой таблицы T, содержащей дескрипторы защиты.
acc
acc
Блок 403 инициализирует начальные значения маркеров итераций i = 0 и j = 0, а также буферов HH = 0, SUM = 0 (от англ. «Accumulated» - аккумулируемое (накапливаемое)) и буфера z наименований столбцов дескрипторов защиты.
Блок 404 увеличивает значение маркера итераций i на 1, что в дальнейшем способствует последовательному перебору всех N строк таблицы Т.
acc
acc
Блок 405 устанавливает значения маркера итераций j и буферов HH = 0 и SUM = 0 внутри работы цикла.
T
Блок 406 проверяет выполнение условия превышения значением маркера итераций i значения количества строк N таблицы Т, что обеспечивает перебор всех строк данной таблицы и завершение процесса интеграции первого из пары столбцов C.
D
Блок 407 увеличивает значение маркера итераций у на 1, что обеспечивает перебор всех дескрипторов защиты в строке i, а также присваивает буферу z значение j-го элемента кортежа M, что позволяет в дальнейшем обращаться к столбцу таблицы Т по наименованию дескриптора защиты.
acc
acc
acc
acc
T
h
acc
acc
Далее блок 408 проверяет выполнение условия непревышения значением маркера итераций у значения М. В случае выполнения условия блока 408 переходят к блоку 409, который прибавляет к накапливаемому значению HH значение ячейки i-ой строки столбца z таблицы Т, а также побитово прибавляет к накапливаемому двоичному значению SUM значение ячейки i-ой строки столбца z таблицы Т, которая хранит значение некоторого j-го дескриптора защиты. Данная операция в цикле способствует накоплению буферов HH и SUM. В том случае, если значение маркера итераций у превысило значение М, то блок 410 изменяет значение ячейки столбца C строки i таблицы T на значение равное кортежу <hash(HH), SUM>. Далее происходит переход на следующую строку и перерасчет новых значений контрольных и побитовых сумм дескрипторов защиты.
T
Блок-схема 500 на фигуре 5 отображает процесс интеграции второго из пары столбца HV, необходимого для обнаружения, локализации и восстановления несанкционированно измененного дескриптора защиты информации некоторой таблицы.
h
D
Блок 501 входных данных передает блоку 502 ссылку на подключение к базе данных, хранящей таблицу контрольных значений T и некоторую защищаемую таблицу Т, состоящую из N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты M.
h
T
h
j
Блок 502 добавляет в таблицу T столбец HV из пары интегрируемых столбцов, и увеличивает количество строк таблицы контрольных значений T до значения М, если значение М не меньше текущего количества строк таблицы контрольных значений. Данный столбец будет содержать значения HV, элементами которого будут значения хэш-функции для каждого j-го столбца (из кортежа MD) защищаемой таблицы Т, содержащего дескрипторы защиты.
acc
Блок 503 инициализирует начальные значения маркеров итераций i=0 и j=0, а также буферов HV = 0 и z наименований столбцов дескрипторов защиты.
D
Блок 504 увеличивает значение маркера итераций j на 1, что в дальнейшем способствует последовательному перебору всех М столбцов таблицы Т, содержащих дескрипторы защиты, а так же присваивает буферу z значение j-го элемента кортежа M, что позволяет в дальнейшем обращаться к столбцу таблицы Т по наименованию дескриптора защиты.
acc
Блок 505 обнуляет значения маркера итераций у и буфера HV = 0 внутри работы цикла.
T
Блок 506 проверяет выполнение условия превышения значением маркера итераций у значения количества дескрипторов защиты М таблицы Т, что обеспечивает перебор столбцов, содержащих дескрипторы защиты, данной таблицы и завершение процесса интеграции второго из пары столбцов HV.
Блок 507 увеличивает значение маркера итераций i на 1, что обеспечивает перебор всех дескрипторов защиты в столбце z.
acc
acc
T
h
acc
Далее, блок 508 проверяет выполнение условия непревышения значением маркера итераций i значения N количества строк таблицы Т. В случае выполнения условия блока 508 переходят к блоку 509, который прибавляет к накапливаемому значению HV значение ячейки i-ой строки столбца z таблицы Т. Данная операция в цикле способствует накоплению буфера HV. В том случае, если значение маркера итераций i превысило значение N количества строк таблицы Т, то блок 510 изменяет значение ячейки столбца HV строки j таблицы T на значение равное значению хэш-функции от буфера HV. Далее происходит переход к следующему столбцу и перерасчет новых значений контрольных сумм дескрипторов защиты.
Блок-схема 600 на фигуре 6 отображает процесс обнаружения и локализации несанкционированно измененного значения дескриптора защиты в определенной строке некоторой таблицы реляционной базы данных. На данной блок-схеме также так же демонстрируется процесс подтверждения легитимности значений дескрипторов запрашиваемой строки в случае отсутствия несанкционированных изменений.
h
D
Блок 601 входных данных передает блоку 602 ссылку на подключение к базе данных, хранящей таблицу контрольных значений T и некоторую защищаемую таблицу Т, состоящую из N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты M, а также индекс k-ой строки, подлежащей проверке на изменения.
асс
Блок 602 инициализирует начальные значения маркера итераций у = 0, предназначенного для перебора значений дескрипторов строки k, и буфера НН = 0 накопления значений дескрипторов в строке.
D
Блок 603 увеличивает значение маркера итераций y на 1, что в дальнейшем способствует последовательному перебору всех М столбцов таблицы Т, содержащих дескрипторы защиты, а так же присваивает буферу q значение y-го элемента кортежа M, что позволяет в дальнейшем обращаться к столбцу таблицы Т по наименованию дескриптора защиты.
Блок 604 проверяет выполнение условия непревышения значением маркера итераций у значения количества дескрипторов защиты М таблицы Т, что обеспечивает перебор столбцов, содержащих дескрипторы защиты, данной таблицы.
acc
acc
В случае выполнения условия блока 604, переходят к блоку 605, который вычисляет накапливаемую сумму значений HH равную текущему значению HH прибавленному к значению дескриптора защиты строки к столбца q таблицы Т. После чего происходит переход к блоку 603.
acc
T
h
В случае невыполнения условия блока 604 (произойдет перебор всех значений дескрипторов строки k) переходят к блоку 606, который проверяет выполнение условия неравенства значения хэш-функции от накопленного HH со значением первого элемента кортежа столбца C строки k таблицы T.
В случае невыполнения условия блока 606 (сравниваемые значения равны), переходят к блоку 607, который подтверждает легитимность данных k-ой строки таблицы Т. Далее происходит завершение процесса.
Выполнение условия блока 606 свидетельствует об обнаружении несанкционированного изменения дескриптора защиты строки k. Далее переходят к стадии его локализации.
acc
Блок 608 инициализирует начальные значения маркеров итераций j=0 по столбцам таблицы Т и i=0 по столбцу j, а также буфера HV = 0 накопления значений дескрипторов в столбце.
D
Блок 609 увеличивает значение маркера итераций j на 1, что в дальнейшем способствует последовательному перебору всех М столбцов таблицы Т, содержащих дескрипторы защиты, а так же присваивает буферу z значение j-го элемента кортежа M, что позволяет в дальнейшем обращаться к столбцу таблицы Т по наименованию дескриптора защиты.
acc
Блок 610 обнуляет значения маркера итераций i и буфера HV.
Блок 611 увеличивает значение маркера итераций i по столбцу z.
acc
acc
Блок 612 проверяет выполнение условия непревышения значением маркера итераций i значения количества строк N таблицы Т. В случае выполнения условия блока 612 переходят к блоку 613, который вычисляет накапливаемую сумму значений HV столбца равную текущему значению HV прибавленному к значению дескриптора защиты строки i столбца z таблицы Т. После чего происходит переход к блоку 611.
acc
T
h
В случае невыполнения условия блока 612 (перебора всех значений дескрипторов столбца j), переходят к блоку 614, который проверяет выполнение условия неравенства значения хэш-функции от накопленного HV со значением столбца HV строки j таблицы T.
Невыполнение условия блока 614 свидетельствует о том, что значения j-го столбца легитимны, и далее осуществляется переход к блоку 609 (к проверке следующего столбца на равенство сравниваемых хэш-сумм).
Выполнение условия блока 614 свидетельствует о том, что завершилась стадия локализации несанкционированно измененного блока данных, и блок 615 возвращает индекс строки к и имя столбца z, определяющие несанкционированно измененное значение дескриптора защиты таблицы Т.
Блок-схема 700 на фигуре 7 отображает процесс восстановления несанкционированно измененного дескриптора защиты информации некоторой таблицы.
Блок 701 входных данных передает блоку 702 ссылку на подключение к
h
D
базе данных, хранящей таблицу контрольных значений T и некоторую защищаемую таблицу Т, состоящую из N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты M. Также блок передает индекс строки к и имя столбца z, определяющие несанкционированно измененную ячейку таблицы Т.
acc
h
Блок 702 инициализирует начальные значения маркера итераций у = 0 и буферов: начального значения восстанавливаемой ячейки строки к таблицы Т в битах SUM равного значению второго элемента кортежа для строки к таблицы Т в таблице T и наименований столбцов дескрипторов защиты q.
D
Блок 703 увеличивает значение маркера итераций j на 1, что в дальнейшем способствует последовательному перебору всех М столбцов таблицы Т, содержащих дескрипторы защиты, а так же присваивает буферу q значение j-го элемента кортежа M, что позволяет в дальнейшем обращаться к столбцу таблицы Т по наименованию дескриптора защиты.
acc
acc
Блок 704 проверяет выполнение условия превышения значением маркера итераций у значения количества дескрипторов защиты М таблицы Т, что обеспечивает перебор столбцов, содержащих дескрипторы защиты, данной таблицы. В случае невыполнения условия блока 704 (не осуществлен перебор всех столбцов с дескрипторами защиты) переходят к блоку 706, который проверяет выполнение условия равенства значения буфера q со значением имени столбца измененной ячейки z. В случае выполнения условия блока 706 переходят к блоку 703, так как при восстановлении исходного значения ячейки методом побитового сложения от изначальной побитовой суммы, само побитовое значение ячейки учитывать нельзя в связи с его несанкционированным изменением. В случае невыполнения условия блока 706, переходят к блоку 707, который вычисляет целевое аккумулируемое значение в битах SUM, равное побитовому прибавлению к текущему значению побитовой суммы SUM значения строки k столбца q таблицы Т.
Таким образом, когда проверяемое условие блока 704 выполнится (произойдет перебор всех столбцов, содержащих дескрипторы защиты), происходит переход к блоку 705.
acc
Блок 705 изменяет текущее несанкционированно измененное значение дескриптора защиты информации в строке k и столбце z таблицы Т на значение буфера SUM (то есть восстанавливает исходное значение ячейки) той же кодировки, что и текущее значение.
Блок-схема 800 на фигуре 8 описывает процесс обнаружения и локализации несанкционированно измененного значения дескриптора защиты некоторой таблицы реляционной базы данных. На данной блок-схеме также демонстрируется процесс проверки легитимности значений дескрипторов защиты некоторой таблицы в случае отсутствия несанкционированных изменений. Данный алгоритм необходим для проверки на легитимность некоторой таблицы в целом.
h
D
Блок 801 входных данных передает блоку 802 ссылку на подключение к базе данных, хранящей таблицу контрольных значений T и некоторую защищаемую таблицу Т, состоящую из N строк и М столбцов, где М равно размеру кортежа дескрипторов защиты M.
Блок 802 инициализирует начальное значение маркера итераций k = 0, предназначенного для перебора всех строк таблицы Т.
Блок 803 увеличивает значение маркера итераций k на 1, что способствует переходу к следующей строке таблицы Т.
Блок 804 проверяет выполнение условия непревышения маркером итераций к количества строк N таблицы Т, что обеспечивает перебор всех строк таблицы Т.
В случае невыполнения условия блока 804 переходят к блоку 816, который подтверждает легитимность дескрипторов защиты таблицы Т, и процесс завершается.
А в случае, если не был произведен перебор всех строк таблицы Т, происходит переход к блоку 805.
acc
Блок 805 инициализирует начальные значения маркера итераций у = 0, предназначенного для перебора значений дескрипторов строки k, и буфера HH = 0 накопления значений дескрипторов в строке.
D
Блок 806 увеличивает значение маркера итераций у на 1, что в дальнейшем способствует последовательному перебору всех М столбцов таблицы Т, содержащих дескрипторы защиты, а так же присваивает буферу q значение y-го элемента кортежа M, что позволяет в дальнейшем обращаться к столбцу таблицы Т по наименованию дескриптора защиты.
Блок 807 проверяет выполнение условия непревышения значением маркера итераций у значения количества дескрипторов защиты М таблицы Т, что обеспечивает перебор столбцов, содержащих дескрипторы защиты, данной таблицы.
acc
acc
В случае выполнения условия блока 807, переходят к блоку 808, который вычисляет накапливаемую сумму значений HH равную текущему значению HH прибавленному к значению дескриптора защиты строки к столбца q таблицы Т. После чего происходит переход к блоку 806.
acc
T
h
В случае невыполнения условия блока 807 (произойдет перебор всех значений дескрипторов строки к) переходят к блоку 809, который проверяет условие равенства значения хэш-функции от накопленного HH со значением первого элемента кортежа столбца C строки k таблицы T.
В случае невыполнения условия блока 809 (сравниваемые значения равны) переходят к блоку 803 (переход на следующую строку таблицы 7).
Выполнение условия блока 809 свидетельствует об обнаружении факта несанкционированного изменения дескриптора защиты строки k. Далее происходит переход к стадии его локализации.
acc
Блок 810 инициализирует начальные значения маркеров итераций j = 0 (по столбцам таблицы Т) и i = 0 (по столбцу j), а также буферов z = 0 и HV = 0 накопления значений дескрипторов в столбце.
D
Блок 811 увеличивает значение маркера итераций j на 1, что в дальнейшем способствует последовательному перебору всех М столбцов таблицы Т, содержащих дескрипторы защиты, а так же присваивает буферу z значение j-го элемента кортежа M, что позволяет в дальнейшем обращаться к столбцу таблицы Т по наименованию дескриптора защиты.
acc
Блок 812 обнуляет значения маркера итераций i и буфера HV.
Блок 813 увеличивает значение маркера итераций i по столбцу z.
acc
acc
Блок 814 проверяет выполнение условия непревышения значением маркера итераций i значения количества строк N таблицы Т. В случае выполнения условия блока 814 переходят к блоку 815, который вычисляет накапливаемую сумму значений HV столбца равную текущему значению HV прибавленному к значению дескриптора защиты строки i столбца z таблицы Т. После чего происходит переход к блоку 813.
acc
T
h
В случае невыполнения условия блока 814 (произойдет перебор всех значений дескрипторов столбца j) переходят к блоку 817, который проверяет выполнение условия неравенства значения хэш-функции от накопленного HV со значением столбца HV строки j таблицы T.
В случае невыполнения условия блока 817 считают, что значения j-го столбца легитимны, и переходят к блоку 811 (к проверке следующего столбца на равенство сравниваемых хэш-сумм).
В случае выполнения условия блока 817 считают, что завершилась стадия локализации несанкционированно измененного блока данных, и переходят к блоку 818, который возвращает индекс строки к и имя столбца z, определяющие несанкционированно измененное значение дескриптора защиты таблицы 7.