
3.4. Ограничение доступа к данным
Шифрация данных. Для ограничения доступа к данным используется их защита с помощью криптографии. Криптография - это преобразование открытого текста к виду, понятному только тому, кто имеет законное право доступа к тексту, с помощью обращения преобразования и восстановления исходного текста.
В криптографии используются два типа преобразований открытого текста: перестановки и подстановки.
Для применения перестановок текст делится на части (блоки) заданной длины, и символы внутри блока переставляются.
При подстановке символы открытого текста заменяют символами из другого или из того же самого алфавитов.
Пусть А и В алфавиты открытого и закрытого текстов, соответственно. Если f() - взаимно однозначное отображение из А в В, то текст a(i1)a(i2)...a(in) переходит в текст f(a(i1)a(i2)...a(in)). Например, пусть А = {а, b, с}, В = {0,1,2}, а функция f(a) = 0, f(b) = 1, f(c) = 2. Тогда текст abbac будет зашифрован как 01102.
Это самый простой способ шифрации и он ненадёжен. Полученный таким методом текст может быть расшифрован без знания функции f() с помощью частотного анализа текста (см. ниже).
Более надёжно использование для шифрации не одной единственной функции, а последовательности функций: f1(), f2(),…, fn(). Этот способ шифрации рассмотрен далее.
Заметим, что любая взаимно однозначная функция f(), определённая на конечном множестве и принимающая свои значения в нём же, называется перестановкой этого множества. Поэтому имеет смысл познакомиться с перестановками.
Перестановки. Свойства перестановок. Способы задания перестановок.
Перестановкой называют взаимно однозначное отображение некоторого конечного множества М в себя. Примером такого множества может служить любой конечный алфавит.
Перестановку,
соответствующую суперпозиции f(g())
двух отображений f()
и g(),
называют произведением соответствующих
перестановок. Операция умножения
перестановок не обладает свойством
коммутативности (перестановочности),
т.е. fg
gf.
Умножение перестановок ассоциативно, т.е. f(gh) = (fg)h = fgh. Есть единица, роль которой играет перестановка е, любой элемент множества в себя самого, ef=fe=f.
Множество М, для которого определена операция умножения, удовлетворяющая условиям, указанным выше, называется группой. Перестановки образуют группу, которая называется симметрической группой.
Пусть х элемент из множества М, a f - некоторая перестановка. Множество O(x, f) = {х0 = х, x1 = f(x0), ..., xn = f(xn-1),...}, являющееся подмножеством множества М, назовём орбитой элемента х для перестановки f. Другими словами, орбита образуется при последовательном действии на фиксированный элемент х множества М некоторой перестановки f.
Перестановку можно представить графически, если элементам М сопоставить точки на плоскости и соединить дугой пары точек (x,f(x)). В силу требования взаимно однозначности каждая точка будет иметь ровно одну выходящую и одну входящую дуги. Следовательно, множество М будет представлено как сумма непересекающихся орбит O1, О2,...Оm, и каждая орбита может быть порождена любым своим элементом, т.е. O(x,f)=O(y,f), если х и у принадлежат одной и той же орбите.
Перестановка f будет представлена в этом случае, как произведение перестановок f1, f2,...,fm, где перестановка f, есть сужение перестановки f на орбиту Оi. Каждая перестановка f, циклически переставляет элементы орбиты Оi, причём в том же порядке, что и перестановка f, оставляя остальные элементы множества М на месте. Перестановки fi называют циклическими.
Пример. Пусть перестановка f действует на множестве М={е0, e1, е2, е3, е4}, так, что отображает М в множество {е2, е4, е3, е0, e1}. Множество М может быть разложено в сумму двух орбит М = O1 + О2, где O1 = {е0, е2, е3}, О1 = {e0, e2, e3} - орбиты перестановки f. Перестановка f = f1f2, где циклическая перестановка f1 отображает М в {e2, e1, е3, е0, e4}, a f2 - в {е0, e4, e2, е3, e1}. Отображение f1 действует на множестве O1 аналогично f, а элементы множества О2 оставляет на месте. Циклическая перестановка f2 оставляет на месте элементы из O1, а на О2 действует одинаково с f.
Заметим, что циклические перестановки fi являются коммутативными.
Представление f=f1f2…fm, называется циклическим и напоминает разложение натурального числа в произведение простых чисел.
Множество перестановок, обладающее тем свойством, что любая перестановка, представима как произведение перестановок из этого множества, называется системой образующих симметрической группы.
Из сказанного выше следует, что циклические перестановки составляют систему образующих симметрической группы.
Минимальная система образующих, т.е. система образующих, которая перестаёт быть таковой после удаления любого из её элементов, называется неприводимой системой образующих.
Циклические перестановка, определяемая орбитой длины 2, называется транспозицией. Транспозиция - простейшая перестановка - меняет местами только два элемента, а остальные оставляет на месте. Транспозиции составляют систему образующих симметрической группы. Это следует из того, что любой цикл можно представить как произведение транспозиций: (е0, e1, e2,…,es) = (е0, e1)(e1, e2)...(es, e0).
Если неприводимая система образующих указана, то можно легко генерировать нужные нам перестановки из имеющихся.
Если число элементов в множестве М есть простое число, то на М можно ввести структуру конечного поля, т.е. определить обратимые операции сложения и умножения элементов М. Любой фиксированный элемент множества М - е, может порождать перестановки f(x)=х+е и g(x)= x*e, заданные аналитически.
Практические методы криптографии. Для шифрации текстов методом перестановок, перестановки определяются на алфавите, в котором записан этот текст. Особенно выгоден тот случай, когда порядок множества есть простое число, поскольку в этом случае перестановки легко определить.
Простейший способ
шифрации с помощью перестановок
заключается в выборе одной простой
перестановки: fe(a)=а+е,
для элементов алфавита аА,
где любой фиксированный символ алфавита.
Для шифрации заданного текста применяем
функцию fe()
ко всем символам текста.
Пример. Пусть А = {а, b, с}, в качестве е выбираем b. Тогда fe(a)=а+b=b, fe(b)=b+b=с, fe(b)=с+b=а. Текст «аbbас» превратится при шифрации в «bccba».
Такой шифр ненадёжен. Шифр тем надёжнее, тем менее поддаётся взлому, чем больше перестановок одновременно используют для его шифрации. При этом первая перестановка применяется к первому символу, вторая - ко второму и т.д. до исчерпания списка всех перестановок. Затем перестановки начинают использоваться с начала списка: к очередному символу применяется первая в списке перестановка, к следующему вторая и т.д.
Очень часто перестановки порождаются операцией суммирования с некоторыми фиксированными элементами множества М. Подобная последовательности элементов называется ключом шифра.
Пример. В условиях предыдущего примера выберем три функции fa, fb, fc. При кодировании текста «abbac» получим «fa(a)fb(b)fc(b)fa(a)fb(c)» или «асааа», что мало напоминает исходный текст; Символы abc образуют ключ шифра.
В идеале число перестановок должно быть бесконечным. Можно использовать для генерации перестановок аддитивного типа заранее составленный текст, известный только заинтересованным сторонам. Этот метод называется системой одноразового блокнота; шифр признаётся абсолютно надёжным. Пользоваться им затруднительно из-за необходимости иметь в запасе некоторые тексты.
Альтернативой является использование различных алгоритмов генерации нерегулярных Последовательностей: датчики псевдослучайных чисел, нелинейные дискретные динамические системы (фракталы), операции с блоками и т.п.
Если порядок алфавита простое число, то можно пользоваться аналогичным образом операцией умножения.
Применение порознь операций сложения и умножения может быть заменено их совместным использованием. Для этого введём последовательность обратимых матриц A1,A2,...,Am, элементами которых являются символы алфавита, и последовательность векторов d1, d2,...dm, элементы которых тоже символы алфавита.
Разобьём шифруемый текст на блоки x1, x2,…,xN и получим зашифрованную последовательность А1x1 + d1А2x2 + d2...ArxN + dr, где r = N mod m.
Заметим, что блоки могут пересекаться, что затруднит их взлом. В комбинации с подстановками используют также перестановки. Для этого разбивают текст на блоки и к каждому применяют определённую перестановку. Наконец, стоит упомянуть о способе шифрации, применяемом для хранимых в ЭВМ файлов. Текст разбивают на блоки и шифруют их независимо, используя для каждого блока датчик псевдослучайных чисел со своими особыми параметрами.
Криптоанализ - совокупность методов взлома шифра, т.е. дешифрации текста без знания способа шифрации.
Эта наука важна не только для злоумышленников и шпионов. Если предлагается новый метод шифрации, важно оценить его устойчивость к взлому. Здесь существенную пользу оказывает криптоанализ.
Самый простой формальный метод криптоанализа - частотный анализ текста. Составляется таблица относительных частот встречаемости символов алфавита в анализируемом тексте. Получим вектор относительных частот ni/n, i=0,l,...,m, где m - число символов в алфавите, n - число повторений в тексте символа с номером i + 1, n - длина текста. Имеет место эмпирический факт, в силу которого относительная частота встречаемости символов в осмысленном достаточно длинном тексте обладает свойством устойчивости. Это свойство означает: если взять два разных текста на одном и том же языке, удовлетворяющих вышеуказанным условиям, то их относительные частоты встречаемости будут близки. Степень близости определяется практически только длиной текстов, повышаясь при увеличении длины.
Частотные таблицы для большинства языков построены. Если знать, на каком языке написан зашифрованный текст, достаточно сравнить частоту встречаемости символов в тексте с эталонной таблицей частот данного языка. Отождествляя символы с одинаковой или близкой частотой встречаемости, можно дешифровать текст или продвинуться в его дешифровке.
Права доступа и процедуры определения прав доступа. Права доступа устанавливаются, когда необходимо ограничить круг лиц, имеющих возможность знакомится с документами, хранимыми в памяти компьютера, или изменять их.
Методы ограничения доступа включают:
установление подлинности;
установление полномочий.
Установление подлинности - это фиксация того, что лицо, работающее с данными, именно то лицо, за которое оно себя выдаёт. Простейший способ установления подлинности: ввод пароля и идентификатора пользователя. Если можно вводить пароль программно, то, генерируя последовательно всевозможные комбинации, можно подобрать пароль. Всё определяется быстродействием генератора. Для исключения подобного взлома после ввода очередного пароля устанавливается запрет на ввод в течение некоторого времени. Устанавливается ограничение на число попыток ввода паролей в одном сеансе работы с машиной.
Предлагались и более сложные способы установления подлинности, включающие диалог пользователя с машиной, в процессе которого пользователь сообщает некоторые данные сугубо личного плана, неизвестные другим.
Следующий шаг - установление полномочий. Задача установления полномочий ставится следующим образом. Имеется группа лиц, заданных своими идентификаторами. Дан набор файлов, доступом к которым необходимо управлять.
Для решения этой задачи создаётся таблица следующего типа:
|
Файл 1 |
Файл 2 |
Файл 3 |
Файл 4 |
Пользователь 1 |
0 |
1 |
4 |
2 |
Пользователь 2 |
0 |
2 |
4 |
3 |
Пользователь 3 |
1 |
3 |
4 |
4 |
Из этой таблицы легко увидеть, что файл 1 доступен только для третьего пользователя, а файл 3 полностью доступен для всех. Специальная программа использует подобную таблицу для контроля доступа к данным.