Скачиваний:
38
Добавлен:
01.04.2014
Размер:
539.65 Кб
Скачать

15.6. Шифрование данных

Замечание. Большая часть изложенного в этом разделе материала впервые была опубликована в несколько иной форме в [15.4].

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

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

Пример. Пусть в качестве открытого текста дана следующая строка:

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. Теперь значения для каждого символа в каждом блоке открытого текста (зашифрован­ного в пункте 2) просуммируйте с соответствующими значениями каждого символа . ключа шифрования (зашифрованного в пункте 3), причем для каждой суммы таких двух значений посчитайте и запишите остаток от деления на 27:

0119001109 1407060919 0805181900 0301200308 0006091805 0512091520 0512091520 0512091520 0512091520 0512091520

0604092602 1919152412 1317000720 0813021801 0518180625

5. Замените каждое число в нижней строке пункта 4 соответствующим текстовым символом:

FDIZB SSOXL MQ+GT HMBRA ERRFY

Если ключ известен, то процедура расшифровки в этом примере может быть вы­полнена достаточно просто. (Упражнение. Расшифруйте зашифрованный текст в рас­смотренном выше примере.) Вопрос заключается в том, насколько сложно нелегаль­ному пользователю определить ключ шифрования, обладая открытым и зашифрован­ным текстом. В данном простом примере это "не очень" сложно выполнить, но так же просто это может быть сделано и в более сложных схемах шифрования. В идеале схема шифрования должна быть такой, чтобы усилия, затраченные на ее расшифров­ку, во много раз превышали полученные при этом выгоды. (Фактически это замеча­ние применимо ко всем аспектам проблемы обеспечения безопасности: т.е. стоимость осуществления попыток взлома системы безопасности должна быть значительно вы­ше потенциальной выгоды от этого.) Предельной целью поиска таких схем следует считать схему, для которой сам ее разработчик, обладая открытым и зашифрованным вариантами одной и той же части текста, не в состоянии определить ключ и, следова­тельно, расшифровать другую часть зашифрованного текста.

Соседние файлы в папке Дейтл Введ в БД