Доказательство неизменности данных, как таковое, получить достаточно просто. Применяем алгоритм SHA256 (или его аналог) к базе данных и получаем т.н. хеш. Его еще называют хеш-суммой или контрольной суммой. В случае применения SHA256, контрольная сумма представляет собой последовательность из 256 бит. Если задаться целью записать ее ручкой на бумаге, тогда можно будет уложится в 64 знака. Задача, требующая некоторого внимания, но доступная практически всем.
Проблема здесь в том, что если мы вычислим этот самый хэш для какой-нибудь рабочей базы, а потом, спустя некоторое время решим проверить неизменность данных, то в 100 случаях из 100 мы увидим, что данные изменились. Для того чтобы предсказать это нам вообще-то не требовалось прибегать к каким-либо техническим ухищрениям. Рабочие базы данных, действительно, постоянно изменяются. Но это не значит, что контрольные суммы в этой ситуации бесполезны.
В момент очередной проверки разделим базу на две части. В одной будут данные, для которых мы вычислили хеш-сумму в прошлый раз. В другой, новые данные, которые были внесены в базу с момента прошлой проверки. Теперь мы можем убедиться, что "старые данные" остались неизменными, проверить новые данные и вычислить новую хеш-сумму.
Этот процесс может повторяться на регулярной основе. Но мы не можем принять эту схему для практического использования. Дело в том, что почти все реальные базы данных допускают изменения в той части, что мы обозначили как "старые данные". Более того, такие изменения встречаются достаточно часто.
Изменим схему. Будем считать хеш-сумму для каждого объекта (что бы это ни значило) в нашей базе. Если окажется, что какой-то объект изменили с прошлого раза, тогда мы перенесем этот объект из категории проверенных в категорию подлежащих проверке. Туда же, где находятся новые объекты.
Это будет работать, но раньше у нас была всего лишь одна хеш-сумма на всю базу. И мы могли легко контролировать ее, в том числе, с помощью ручки и бумаги. Контролировать таким образом сотни тысяч или даже миллионы хеш-сумм нереально.
Чтобы решить эту проблему, организуем хранение множества хеш-сумм особым образом. Будем вычислять хеш-сумму на основе данных объекта и хеш-суммы предыдущего объекта.
При таком хранении каждая хеш-сумма будет содержать в себе все предыдущие. Поэтому нам не потребуется запоминать все хеш-суммы. Достаточно будет запомнить одну последнюю.
Эту технологию можно применить к любой базе.
На ее основе строится журнал регистрации изменений. Этот журнал может относиться ко всем объектам базы или только к объектам определенных типов. Также можно создать несколько журналов. Например, один для товарных документов, а другой для денежных. Каждый журнал мог бы контролировать специально назначенный сотрудник. Этот журнал (или журналы) предоставляет абсолютное решение в области защиты баз данных. В том смысле, что не существует способов скрыть изменение в базе от контролера. Не важно, при этом, какими правами обладает пользователь, вносящий изменения, к чему он имеет доступ, и какая у него квалификация.
Если вас заинтересовала данная технология, то мы готовы предложить вам:
Разработку проекта защиты вашей базы данных. На этом этапе определяем количество и состав журналов регистрации, количество контролеров, порядок работы со ссылками. Также определяемся с вариантами реализации рабочих мест контролеров.
Создание защищенных журналов регистрации. Создаем журналы регистрации. Разрабатываем рабочие места контролеров или используем уже готовые.
Подробные инструкции и обучение персонала. Предоставляем подробные инструкции контролерам и системным администраторам. В инструкциях описаны рабочие ситуации и порядок действий в каждой ситуации. Проводим тренинги сотрудников. На тренингах воспроизводим типичные ситуации.
Индивидуальный подход. В любых вопросах, связанных с реализацией проекта защиты базы данных, ориентируемся на потребности заказчика.
Всем, у кого есть база данных
Решение гарантирует абсолютную защиту от несанкционированных изменений в базе данных