logo
Работа с базами данных

1.3 Достоверность и безопасность информации

Поскольку первичное заполнение таблиц и ввод их в машину ведет человек, ошибки в данных являются не исключением, а правилом, и любая ИС должна иметь средство для диагностики и исправления ошибок.

Нарушение логической взаимосвязи - это логические (семантические) ошибки, ошибки смысла, которые могут быть обнаружены аппаратом формального логического контроля, построенным для ИС. Кроме того, конкретная ИС может иметь собственные средства дополнительного ("нестандартного") контроля, так как стандартные средства не могут охватить все возможные случаи. В современных СУБД имеются средства поддержания целостности данных. Кроме того, в современных ИС можно указать условия, которым должны удовлетворять значения некоторых полей (условия верификации данных).

Гораздо сложнее дело обстоит с ошибками в допустимых значениях данных. Такие ошибки условно называются арифметическими, хотя это не совсем точно, так как ошибочно может быть записано значение текстового данного: например, Иванов И.П. вместо Иванов А.П. Существует ряд средств для выявления арифметических ошибок, однако на пользовательском уровне ограничиваются простым визуальным контролем.

Термин "безопасность" относится к защите базы данных от несанкционированного доступа. Под безопасностью БД подразумевается, что пользователям разрешается выполнять некоторые действия. Под целостностью подразумевается, что это действие выполняется корректно.

Существуют различные аспекты безопасности:

правовой;

физический;

аппаратное обеспечение;

безопасность БД.

СУБД поддерживает два подхода доступа к данным: избирательный и обязательный. В случае избирательного управления пользователь обладает различными правами при работе с разными объектами. В случае обязательного управления каждому объекту данных присваивается некоторый уровень доступа, а каждый пользователь обладает определенным уровнем. Доступом к определенному объекту обладает только пользователь с соответствующим уровнем доступа.

Избирательное управление доступом.

Для определения правил безопасности нужно использовать некоторый язык:

CREATE SECURITY RULE <правило>

GRANT <список привилегий>

ON <выражение>

TO <список пользователей>

[ON ATTENTED VIOLATION <действие>]

<правило> -- имя нового правила безопасности;

<список привилегий> может быть представлен:

RETRIEVE [<список атрибутов>]

INSERT

UPDATE [<список атрибутов>]

DELETE

ALL

<выражение> -- подразумевает выражение реляционного исчисления, в котором задано диапазоном действие данного правила. Диапазоном является некоторое подмножество кортежей единственного отношения.

<действие> -- процедура произвольной сложности, например, заблокировать клавиатуру, записать нарушение правил безопасности. Т.е. выполнить отслеживание угроз.

Пример:

CREATE SECURITY RULE ПС3 // создание правил секретности

GRANT RETRIEVE (У#, ЛФУ, Разр), DELETE

ON Узел WHERE ЛФУ<>"Сумматор"

TO Иванов, Петров, Сидоров // для пользователей

ON ATTENTED VIOLATION REJECT // не выполнять при нарушении этого правила

В системе должен быть предусмотрен способ устранения существующих правил безопасности.

DESTROY SECURITY RULE

Обязательное управление доступом

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

Можно сформулировать два простых правила:

Пользователь А имеет доступ к объекту В, если его уровень доступа больше или равен уровню классификации объекта;

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

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

Исходные (незакодированные) данные называются открытым текстом. Открытый текст шифруется с помощью специального алгоритма шифрования. В качестве входных данных поступает открытый текст и ключ шифрования, на выводе -- зашифрованный текст. Если алгоритм может не утаиваться, то ключ хранится в секрете.

Обычно выделяются следующие методы шифрования: процедуры подстановки, перестановки, комбинация указанных методов.

Рассмотрим алгоритм шифрования на примере использования процедуры подстановки.

Разбейте открытый текст на блоки, длина которых равна длине ключа шифрования. пусть в качестве открытого текста дана строка:

AS KINGFISHERS CATCH FIRE

ключ: ELIOT

разбиение: "AS_KI", "NGFIS", "HERS_", "CATCH", "_FIRE"

Замените каждый символ открытого текста целым числом в диапазоне от 0 до 26, используя для пробелов число 00. В результате получится строка чисел

0119001109 1407060919 0805181900 0301200308 0006091805,

ключ: 0512091520.

Значение для каждого символа в каждом блоке открытого текста просуммируйте с соответствующими значениями каждого символа ключа шифрования по модулю 27.

Для нашего примера получим

0604092602 1919152412 1317100620 0813021801 0518180625

Замените каждое число в строке соответствующим текстом символов:

"FDIZB", "SSOXL", "MQJFT", "HMBRA", "ERRGY"

зашифрованный текст: FDIZBSSOXLMQJFTHMBRAERRGY

Если ключ известен, расшифровка может быть выполнена достаточно быстро.