Безопасность Баз Данных.ppt
- Количество слайдов: 22
Безопасность Баз Данных РАЗРЕШЕНИЕ ПОЛЬЗОВАТЕЛЯМ ВЫПОЛНЯТЬ НЕКОТОРЫЕ ДЕЙСТВИЯ • • НЕКОТОРЫЕ АСПЕКТЫ ПРОБЛЕМЫ БЕЗОПАСНОСТИ ПРАВИЛО БЕЗОПАСНОСТИ КОНТРОЛЬНЫЙ СЛЕД ВЫПОЛНЯЕМЫХ ОПЕРАЦИЙ МОДИФИКАЦИЯ ЗАПРОСА ОБЯЗАТЕЛЬНОЕ УПРАВЛЕНИЕ ДОСТУПОМ ШИФРОВАНИЕ ДАННЫХ МЕРЫ БЕЗОПАСНОСТИ В ЯЗЫКЕ SQL
НЕКОТОРЫЕ АСПЕКТЫ ПРОБЛЕМЫ БЕЗОПАСНОСТИ: • Правовые, общественные и этические (Имеет ли право некоторое лицо получить запрашиваемую информацию) • • Физические условия (Закрыт ли данный компьютер или защищен каким то другим образом) Организационные вопросы (Каким образом организован доступ к данным) • Вопросы реализации управления (Как реализована реализация управления, например, как часто меняются пароли) • Аппаратное обеспечение (Обеспечиваются ли меры безопасности на аппаратном уровне) • Безопасность операционной системы (Например, затирает ли базовая операционная система содержание структуры хранения и файлов с данными прекращении работы компьютера)
ПРАВИЛО БЕЗОПАСНОСТИ Полная синтаксическая запись правила безопасности: CREATE SECURITY RULE правило GRANT список привелегий через запятую ON выражение TO список пользователей через запятую [ ON ATTEMPTED VIOLATION действие ] ; Устранение существующих правил безопасности: DESTROY SECURITY RULE правило;
• Правило обозначает имя нового правила безопасности • В качестве привилегий можно использовать одну из перечисленных ниже: RETRIEVE [ (список_атрибутов_через_запятую) ] INSERT UPDATE [ (список_атрибутов_через_запятую) ] DELETE ALL Привилегия извлечения RETRIEVE необходима для упоминания соответствующего объекта. Если вместе с привилегией RETRIEVE задан список атрибутов, то она применяется только к заданным атрибутам. Привилегия UPDATE со списком атрибутов определяется аналогично. Спецификация ALL является сокращенной записью использования всех привилегий со всеми атрибутами.
• Обозначение выражение подразумевает выражение реляционного исчисления, в котором задан диапазон этого правила. Один из объектов списка должен точно идентифицировать одну переменную диапазона, соответствующую точно одному отношению. Таким образом, диапазон правила безопасности всегда является некоторым подмножеством картежей единственного отношения. • Обозначение пользователь служит идентификатором некоторого пользователя, известного системе. Для него также может быть задана директива ALL (обозначающая всех известных системе пользователей). • Обозначение действие подразумевает процедуру произвольной сложности. По умолчанию принимается отказ в выполнении запрашиваемого действия.
КОНТРОЛЬНЫЙ СЛЕД ВЫПОЛНЯЕМЫХ ОПЕРАЦИЙ НЕ БЫВАЕТ НЕУЯЗВИМЫХ СИСТЕМ БЕЗОПАСНОСТИ!!! НАСТОЙЧИВЫЙ НАРУШИТЕЛЬ ВСЕГДА МОЖЕТ НАЙТИ СПОСОБ ПРЕОДОЛЕНИЯ ВСЕХ СИСТЕМ КОНТРОЛЯ! НЕОБХОДИМА РЕГИСТРАЦИЯ КОНТРОЛЬНОГО СЛЕДА ВЫПОЛНЯЕМЫХ ОПЕРАЦИЙ При подозрении, что совершено несанкционированное вмешательство в БД, контрольный след должен быть использован для прояснения ситуации и подтвержде ния того, что все процессы находятся под контролем. Если это не так, то контрольный след поможет обнаружить нарушителя. Для сохранения контрольного следа обычно используется особый файл, в котором система автоматически записывает все выполне нные пользователем операции. ДАЖЕ КОНСТАТАЦИЯ ФАКТА, ЧТО В ДАННОЙ СИТЕМЕ ПОДДЕРЖИВАЕТСЯ КОНТРОЛЬНОЕ СЛЕЖЕНИЕ, ИНОГДА ВЕСЬМА СУЩЕСТВЕННА ДЛЯ ПРЕДОТВРАЩЕНИЯ НЕСАНКЦИОНИРОВАННОГО ПРОНИКНОВЕНИЯ В СИСТЕМУ! Типичная запись в файле контрольного следа
Типичная запись в файле контрольного следа: запрос (исходный текст запроса); терминал, с которого была вызвана операция; пользователь, задавший операцию; дата и время запуска операции; вовлеченные в процесс исполнения операции базовые отношения, картежи и атрибуты; старые значения новые значения.
МОДИФИКАЦИЯ ЗАПРОСА Реализуется при помощи подхода в системе INGRES на основе языка QUEL В общем виде правила безопасности на языке QUEL формулируются на основе директивы DEFINE PERMIT: DEFINE PERMIT список операторов через запятую ON отношение [(список атрибутов через запятую)] TO пользователь [ AT терминалы] пример правила [ FROM время TO время] [ ON день ТО день] [ WHERE условие] Преимущества: • Необходимый код уже присутствует в системе • Сравнительно высокая эффективность • Не возникает неудобств, присущих подходу на основе языка SQL, когда для данного пользователя следует задать разные привилегии при обращении к разным частям данных одного отношения Недостаток: не всем правилам безопасности можно придать простую форму! пример
В качестве примера предположим, что пользователю U разрешено извлекать данные только о товарах, размещенных в Москве, с помощью следующего правила: DEFINE PERMIT RETRIEVE ON P TO U WHERE P. CITY = “Москва” Теперь предположим, что пользователь U задает следующий запрос на языке QUEL: RETRIEVE (P. P#, P. WEIGHT) WHERE P. COLOR = “Red” Используя «разрешение» (директива PERMIT) на извлечение комбинации отношения P и пользователя U в том виде, в каком они сохраняются в каталоге, в системе INGRES приведенный выше запрос автоматически модифицируется следующим образом: RETRIEVE (P. P#, P. WEIGHT) WHERE P. COLOR = “Red” AND P. CITY = “Москва” !Пользователь U не был проинформирован о том, что система модифицировала его запрос. Сокрытие такой информации может быть намеренным, если, допустим, пользователю U не следует знать о том, что существуют некоторые товары. Не хранящиеся в Москве.
В качестве простейшего обратного примера предположим, что пользователю U не разрешен допуск к отношению Р. Тогда никакая простая «модифицированная» форма приведенного выше правила извлечения не будет избавлена от иллюзии, что отношения Р не существует. Наоборот, обязательно появится сообщение об ошибке приблизительно следующего содержания: «Вам не разрешен доступ к данному отношению!» . В этом заключается главный недостаток методики.
ОБЯЗАТЕЛЬНОЕ УПРАВЛЕНИЕ ДОСТУПОМ Методы обязательного управления доступом применяются к БД, в которых данные имеют достаточно статичную или жесткую структуру, свойственную, например, правительственным или военным организациям Основная идея: • каждый объект данных имеет некоторый уровень классификации, например: секретно, совершенно секретно, для служебного пользования и т. д. ; • каждый пользователь имеет уровень допуска с такими же градациями, что и в уровне классификации. Предполагается, что эти уровни образуют строгий иерархический порядок, например: совершенно секретно > для служебного пользования. Тогда на основе этих сведений можно сформулировать два очень простых правила безопасности: 1. Пользователь i имеет доступ к объекту j, только если его уровень допуска больше или равен уровню классификации объекта j; 2. Пользователь i может модифицировать объект j, только если его уровень допуска равен 3. уровню классификации объекта j. 4. связи с обязательным управлением доступом определяется четыре класса безопасности В (security classes) — D, С, В и А. Среди них класс D наименее безопасный, класс С — более безопасный, чем класс D, и т. д. Говорят, что класс D обеспечивает минимальную защиту, класс С— избирательную, класс В обязательную, а класс А проверенную защиту.
ИЗБИРАТЕЛЬНАЯ ЗАЩИТА Класс С делится на два подкласса — С 1 и С 2 (где подкласс CI менее безопасен, чем подкласс С 2), которые поддерживают избирательное управление доступом в том смысле, что управление доступом осуществляется по усмотрению владельца данных. • Согласно требованиям класса C 1 необходимо разделение данных и пользователя, т. е. наряду с поддержкой концепции взаимного доступа к данным здесь возможно также организовать раздельное использование данных пользователями. • Согласно требованиям класса С 2 необходимо дополнительно организовать учет на основе процедур входа в систему, аудита и изоляции ресурсов.
ОБЯЗАТЕЛЬНАЯ ЗАЩИТА Класс В содержит требования к методам обязательного управления доступом и делится на три подкласса — В 1, В 2 и ВЗ (где В 1 является наименее, а ВЗ — наиболее безопасным подклассом). • Согласно требованиям класса B 1 необходимо обеспечить "отмеченную защиту" (это значит, что каждый объект данных должен содержать отметку о его уровне классификации, например: секретно, для служебного пользования и т. д. ), а также неформальное сообщение о действующей стратегии безопасности. • Согласно требованиям класса В 2 необходимо дополнительно обеспечить формальное утверждение о действующей стратегии безопасности, а также обнаружить и исключить плохо защищенные каналы передачи информации. • Согласно требованиям класса ВЗ необходимо дополнительно обеспечить поддержку аудита и восстановления данных, а также назначение администратора режима безопасности.
ПРОВЕРЕННАЯ ЗАЩИТА Класс А является наиболее безопасным и согласно его требованиям необходимо математическое доказательство того, что данный метод обеспечения безопасности совместимый и адекватен заданной стратегии безопасности (!). Хотя некоторые коммерческие СУБД обеспечивают обязательную защиту на уровне класса B 1, обычно они обеспечивают избирательное управление на уровне класса С 2.
ШИФРОВАНИЕ ДАННЫХ Пользователь пытается проникнуть в базу данных, минуя систему, т. е. физически перемещая часть базы данных или подключаясь к коммуникационному каналу… ЭФФЕКТИВНЫЙ СПОСОБ ШИФРОВАНИЕ ДАННЫХ т. е. хранение и передача особо важных данных в зашифрованном виде Ø ОСНОВНЫЕ ПОНЯТИЯ Ø ПРИМЕРНЫЙ АЛГОРИТМ ШИФРОВАНИЯ Ø СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ Ø ШИФРОВАНИЕ НА ОСНОВЕ ОТКРЫТОГО КЛЮЧА
ОСНОВНЫЕ ПОНЯТИЯ К ШИФРОВАНИЮ ДАННЫХ Исходные (незакодированные) данные называются открытым текстом. Открытый текст шифруется с помощью специального алгоритма шифрования. В качестве входных данных для такого алгоритма выступают открытый текст и ключ шифрования, а в качестве выходных зашифрованная форма открытого текста, которая называется зашифрованным текстом. Если детали алгоритма шифрования могут быть опубликованы или, по крайней мере, могут не утаиваться, то ключ шифрования обяза тельно хранится в секрете. Именно зашифрованный текст, который непонятен тем, кто не обладает ключом шифрования, хранится в базе данных и передается по коммуникационному каналу.
ПРИМЕРНЫЙ АЛГОРИТМ ШИФРОВАНИЯ Пусть в качестве открытого текста дана следующая строка: AS KINGFISHERS CATCH FIRE (Здесь для простоты изложения предполагается, что данные состоят только из пробелов и прописных символов. ) Кроме того, допустим, что ключом шифрования является строка ELIOT с приведенным ниже алгоритмом шифрования: 1. Разбиваем открытый текст на блоки, длина которых равна длине ключа шифрования: AS+KI NGFIS HERS+ CATCH +FIRE (здесь пробелы обозначены знаком “+"). 2. Заменяем каждый символ открытого текста целым числом в диапазоне 00 26, используя для пробела число 00. для А – число 01, . . . , для Z — число 26. В результате получится строка цифр: 0119001109 1407060919 0805181900 0301200308 0006091805 3. Повторяем этап 2 для ключа шифрования 0512091520
4. Теперь значения для каждого символа в каждом блоке открытого текста просуммируем с соответствующими значениями каждого символа ключа шифрования, причем для каждой суммы таких двух значений посчитаем и запишем остаток от деления на 27: 0119001109 1407060919 0805181900 0301200308 0006091805 0512091520 0512051520 0512091520 0604092602 1919152412 1317000720 0813021801 0518180625 5. Заменим каждое число в нижней строке пункта 4 соответствующим текстовым символом: FDIZB SSOXL MQ+GT HMBRA ERRFY Если ключ известен, то процедура расшифровки в этом примере может быть выполнена достаточно просто. Вопрос заключается в том, насколько сложно нелегальному пользователю определить ключ шифрования, обладая открытым и зашифрованным текстом. В данном простом примере это "не очень" сложно выполнить, но так же просто это может быть сделано и в более сложных схемах шифрования. В идеале схема шифрова ния должна быть такой, чтобы усилия, затраченные на ее расшифровку, во много раз превышали полученные при этом выгоды. Предельной целью поиска таких схем следует считать схему, для которой сам ее разработчик, обладая открытым и зашифрованным вариантами одной и той же части текста, не в состоянии определить ключ и, следовательно, расшифровать другую часть зашифрованного текста.
СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ Приведенный выше пример основан на использовании процедуры подстановки: ключ шифрования применялся для того, чтобы определить, какой символ зашифрованного текста следует подставить вместо каждого символа открытого текста. Подстановка — один из двух основных традиционно используемых способов шифрования, в качестве второго выступает процедура перестановки, когда символы открытого текста просто переставляются в несколько иной последовательности. Ни один из этих способов не является безопасным сам по себе, но алгоритмы на основе их комбинации могут обеспечить достаточно высокую степень безопасности. Одним из таких алгоритмов является довольно общеизвестный стандарт шифрования данных (Data Encryption Standard —DES). Согласно этому стандарту открытый текст делится на блоки по 64 бита и каждый блок шифруется с помощью 64 битового ключа (в действительности этот ключ состоит из 56 бит данных плюс 8 бит четности, так что при этом существует не 2 м, а только 2 возможных ключей. ) Сначала блок шифруется с помощью перестановки, затем уже перемешанный таким образом блок подвергается последовательности из 16 сложных шагов подстановки, и наконец, к нему еще раз применяется процедура перестановки, обратная начальной, которая и приводит к получению заключительного результата.
ШИФРОВАНИЕ НА ОСНОВЕ ОТКРЫТОГО КЛЮЧА В методике с ис пользованием открытого ключа доступны как алгоритм шифрования, так и ключ шифрования, поэтому любой желающий может преобразовать открытый текст в зашифрован ный. Однако в секрете хранится ключ расшифровки (в методике открытого ключа ис пользуется два ключа: один для шифрования, другой для расшифровки). Более того, ключ расшифровки не может быть просто выведен из ключа шифрования, поэтому лицо, выполнившее шифрование исходного текста, не сможет расшифровать его без специального разрешения. Первоначальная идея использования такой методики принадлежит Диффи и Хельману (Diffie and Hellman), однако здесь для демонстрации этой методики будет описан подход, развитый Райвестом, Шамиром и Адлеманом (Rivest, Shamir, Adleman). В основе этого подхода, названного по первым буквам их фамилий RSA-схемой, лежит два приведенных ниже факта. 1. Существует быстрый алгоритм определения, является ли данное число простым. 2. Не существует быстрого алгоритма разложения данного составного числа (т. е. числа, которое не является простым) на простые множители.
МЕРЫ БЕЗОПАСНОСТИ В ЯЗЫКЕ SQL В действующем стандарте языка SQL предусматривается поддержка только избирательного управления доступом. Она основана на двух более или менее независимых частях SQL. Одна из них называется механизмом представлений, который (как говорилось выше) может быть использован для скрытия очень важных данных от несанкционированных пользователей. Другая называется подсистемой полномочий и наделяет одних пользователей правом избирательно и динамично задавать различные полномочия другим пользователям, а также отбирать такие полномочия в случае необходимости.
ПРЕДСТАВЛЕНИЯ И БЕЗОПАСНОСТЬ Продемонстрируем использование представлений для обеспечения безопасности с помощью описанных на языке SQL: 1. CREATE VIEW EX 1 AS SELECT S. S#, FROM S ; S. SNAME, S. CITY В этом представлении задаются данные, которым будут предоставлены некоторые привилегии. А само предоставление привилегий задается с помощью директивы GRANT: GRANT SELECT ON EX 1 Jacques, Anne, Charley ; Поскольку правила безопасности заданы на основе директивы GRANT, а не с помощью CREATE RULE, этим правилам в SQL не при сваиваются имена. (Хотя в стандарте языка SQL правилам целостности, наоборот, предусмотрено присвоение имен. ) 2. CREATE VIEW EX 2 AS SELECT S. S#, S. SNAME, S. STATUS, S. CITY FROM S WHERE S. CITY = 'Paris' ; Соответствующее предоставление привилегий задается с помощью следующей директивы GRANT: GRANT SELECT, INSERT, UPDATE (SNAME, STATUS), DELETE ON EX 2 TO Dan, Misha;
Безопасность Баз Данных.ppt