Введение в системы БД (542480), страница 158
Текст из файла (страница 158)
619 Глава 1б. Защита данньп Этап 6. Найдем размер зарплаты сотрудника по имени 'А11' плюс размер зарплаты всех сотрудников, используя выражения ВЕ ОК Т и ВЕ ОК НОТ Т. И1ТН ( ЯТАТЯ ИНЕКЕ ( ЯЕХ = 'Н' АНО ОССОРАТ10Н = 'Рго9гапвег' ОК А001ТЯ = О ) АЯ Х : ЯОМ ( Х, ЯАЬАКТ ) Результат: 488 000.
ИТТН ( БТАТЯ ИНЕКЕ ( БЕХ = 'Н' АНО ОССОРАТ10Н = 'Ргодгавнвг' ОК НОТ ( А001ТБ = О ) ) АБ Х БОН ( Х, БАВАКТ ) Результат: 290 000; 488 000 + 290 000 = 778 000. Этап 7. Найдем размер зарплаты сотрудника по имени 'А1Т', вычитая из общей суммы (полученной на этапе 5) результат, полученный на этапе 6. Результат: 50 000. ° Принцип действия общего трекера схематически представлен на рис. 16.4. вес ( ВЕ ) = ( вес ( ВЕ ОК Т ) + вес ( ВЕ ОК НОТ Т ) ) - вес ( Т ОК НОТ Т ) Рис. !блА Принцип функционирования оби(его тренера Т Если исходное предположение оказалось неверным (т.е.
Т не является общим трекером), тогда одно или оба выражения ( ВЕ ОК Т ) и ( ВЕ ОК НОТ Т ) могут оказаться недопустимым. Например, если кардииальности для результирующих наборов лля выражений ВЕ и Т равны р и и соответственно, где р < а и Ь < г( < 2Ь, то кардинальность результирующего множества для [ ВЕ ОК Т ), которая не может превышать значение р т с(, может оказаться меньше Ь. В такой ситуации необходимо выбрать другой вариант выражения для общего трекера и повторить попытку. В [16.6) предполагается, что на практике не так уж сложно найти подхоляшее выражение для общего трекера. В приведенном здесь частном примере исходный вариант сразу оказался общим трекером (кардинальность его результирующего набора данных равна 5) н оба запроса на этапе 3 также оказались допустимыми. Обобщим полученные результаты.
"Практически всегда" существует выражение, являющееся общим трекером, найти которое так же легко, как и использовать. Действительно, выражение для общего трекера достаточно быстро можно просто угадать путем перебора нескольких вариантов (16.6). Даже в тех случаях, когда выражение для общего трекера не существует, могут быть найдены, как показано в (16.6), специфические трекеры, предназначенные для конкретных запросов. Трудно избежать общего заключения, что безопасность статистических баз данных остается насущной проблемой.
62О Часть г'. Дополнительные аспекты Что в таком случае можно сделать? Некоторые варианты решения этой проблемы уже предлагались в литературе, но все же пока нельзя сказать определенно, является ли какой-либо нз них удовлетворительным во всех отношениях. Например, а одном из вариантов предлагается организовать "обмен данными" ("оа1а зиарршЕ"), т.е. обмен значениями атрибутов между кортежами, осуществляемый таким образом, чтобы поддерживалась лишь статистическая точность. При этом даже если злоумышленнику удастся идентифицировать отдельное значение (например, некоторое значение зарплаты), то у него не будет способа узнать, какому именно кортежу (а нашем примере — сотруднику) оно принадлежит. Сложность этого подхода заключается в необходимости отыскать множество тех записей, между которыми можно будет организовать обмен значениями соответствующим образом.
Подобные затруднения имеют место и при использовании большинства других методов. В данный момент, видимо, придется согласиться с выводами Деннинга (!6.6( о том, что "методы нарушения зашиты данных просты и не связаны с большими расходами. Поэтому требование обеспечения полной секретности конфиденциальной информации несовместимо с требованием возможности вычисления точных статистических показателей для произвольных подмножеств данных в базе.
По крайней мере одно из этих требований должно быть снято прежде, чем можно будет поверить в гарантии обеспечения секретности". 16.5. Шифрование данных До сих пор в этой главе подразумевалось, что предполагаемый нелегальный пользователь пытается незаконно проникнуть в базу данных с помощью обычных средств доступа, имеющихся в системе.
Теперь следует рассмотреть случай, когда он пытается проникнуть в базу данных, минуя систему, т.е. физически перемещая часть базы данных или подключаясь к коммуникационному каналу. Наиболее эффективным методом борьбы с такими угрозами авляется шифрование данных, т,е. хранение и передача особо важных данных в зашифрованном виде. Для обсуждения основных концепций шифрования данных следует ввести некоторые новые понятия. Исходные (незашифрованные) данные называются открытым текстом. Открытый текст шифруется с помощью специального алгоритма шифрования. В качестве входных данных лля такого алгоритма выступают открытый текст и ключ шифрования, а в качестве выходных — зашифрованная форма открытого текста, которая называется шифрованным текстом.
Детали алгоритма шифрования могут быть опубликованы или, по крайней мере, могут не утаиваться, но ключ шифрования обязательно хранится в секрете. Именно зашифрованный текст, непонятный всем, кто не обладает ключом шифрования, хранится в базе данных и передается по коммуникационным каналам.
Припер. Пусть в качестве открытого текста дана следующая строка. АБ К1НСЕ1ЯНЕНЯ САТСН Е1НЕ (Здесь для простоты изложения предполагается, что данные состоят только из пробелов и прописных символов.) Кроме того, допустим, что ключом шифрования является следующая строка. ЕЫИ 621 Глава 1б. Защита данных Ниже описывается используемый алгоритм шифрования. 1. Разбейте открытый текст на блоки, длина которых равна длине ключа шифрования. лЯ+К1 НЯР18 НЕЕЯ+ СйТСН +Р1НЕ (Здесь пробелы обозначены знаком "+".) 2.
Замените каждый символ открытого текста целым числом в диапазоне 00-26, используя для пробела число 00, для А — число 01,..., для Š— число 26. В результате получится такая строка цифр. 0119001109 !407060919 0805181900 0301200308 0006091805 3. Повторите п. 2 для ключа шифрования, в результате чего получится следующая строка цифр.
0512091520 4. Теперь значения, помещенные вместо каждого символа в каждом блоке открытого текста, просуммируйте с соответствующими значениями, подставленными вместо символов ключа шифрования, и для каждой суммы из указанных двух значений определите и запишите остаток от деления на 27. 01!9001109 1407060919 0805181900 0301200308 0006091805 0512091520 05!2091520 0512091520 0512091520 0512091520 0604092602 1919!52412 1317000720 0813021801 0518180625 5. Замените каждое число в нижней строке п. 4 соответствующим текстовым символом. Р0188 ЯЯОХЬ НО+01 НИВЕл ЕННРХ Если ключ шифрования известен, то процедура расшифровки в этом примере может быть выполнена достаточно просто. (Упражнение. Расшифруйте зашифрованный текст в рассмотренном выше примере.) Вопрос заключается в том, насколько сложно нелегальному пользователю определить ключ шифрования, обладая открытым и зашифрованным текстами.
В данном простом примере это не очень сложно выполнить, однако вполне очевидно, что можно разработать и более сложные схемы шифрования. В идеале, схема шифрования должна быть такой, чтобы усилия, затраченные на ее расшифровку, во много раз превышали полученные прн этом выгоды. (Фактически это замечание применимо ко всем аспектам проблемы обеспечения безопасности, т.е. стоимость осуществления попыток взлома системы зашиты должна быть значительно выше потенциальной выгоды от этого.) Прелельной целью поиска таких схем следует считать схему, для которой сам ее разработчик, обладая открытым и зашифрованным вариантами одной и той же части текста, не в состоянии опрелелить ключ и, следовательно, расшифровать другую часть зашифрованного текста.
Стандарт шифрования данных Приведенный выше пример основан на использовании процедуры подстановки: ключ шифрования применялся для того, чтобы определить, какой символ зашифрованного текста следует подсглавить вместо данного символа открытого текста. Под'становка — один из двух основных традиционно используемых методов шифрования, причем в качестве второго выступает процедура перестановки, когда символы открытого текста просто переставляются в некоторой последовательности. Ни один из этих способов не является безопасным сам по себе, но алгоритмы, построенные на основе 622 Часпзь г'. Дополнительные аспекты их комбинации, способны обеспечи~ь достаточно высокую степень безопасности.