Материал: Криптография и симметричное шифрование

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

) Функция единичного скачка или пороговая функция - это функция, которая может принимать значения 0 или 1, в зависимости от поступившей переменной. Записать ее можно так:


) Кусочно-линейная функция - эту функцию чаще всего рассматривают, как аппроксимацию нелинейного усилителя. Она так же принимает значения в зависимости от входной переменной, но кроме 0 и 1 она может принимать значение самой переменной, взятой по модулю.


) Сигмоидальная функция - это монотонновозрастающая функция, график которой напоминает букву S. Чаще всего именно эту функцию используют в нейронных сетях. Она имеет множество видов, например логистическая функция:

где а - параметр наклона кривой

Описанная выше модель нейрона является детерминистской моделью. Однако чаще полезно использовать стохастическую модель, которая отличается тем, что нейрон может переключаться между двумя состояниями: -1 и 1.

3. Постановка задачи

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

Как известно, алгоритм шифрования состоит из ключа зашифрования и расшифровки, и алгоритмов зашифрования и расшифровки. Рассмотрим, как это соотносится с использованием нейронных сетей. Чтобы использовать сеть, надо задать ее структурные характеристики - количество слоев, количество нейронов в слое, функции активации, коэффициенты. Значения этих характеристик становятся еще одним ключом для шифрования и задают алгоритмы зашифровки и расшифровки. Эти значения зависят не только от специфики выбранной нейронной сети, но и от особенностей кода: его длины, количества кодируемых символов и т.д. Алгоритм расшифровки заключается в распознавании информации: на вход нейронной сети подается зашифрованный текст, и на выходе получается расшифрованное сообщение. Алгоритм зашифрования более сложен и основан на поиске искаженного кода, который может быть восстановлен нейронной сетью.

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

4. Математическая модель нейронной сети на базе базисно-радиальных функций

В данной работе предлагается использовать нейронную сеть на основе базисно-радиальных функций [1][5]. В этом типе нейронной сети нейроны скрытого слоя используют функции, радиально меняющие свои значения в окрестностях некоторого центра, и имеющие значения больше нуля только в некоторой окрестности этого центра. Нейроны радиально-базисной нейронной сети представляются в виде гиперсферы в многомерном пространстве (рис. 5), разделяющей это пространство на два класса, для одного из которых выполняется условие , а для другого .

Рис. 5 - Схема гиперсферы, и накладываемые ограничения

Благодаря этому можно существенно уменьшить количество нейронов скрытого слоя, необходимых для разделения пространства на классы. Соответственно эти нейроны можно расположить в виде одного скрытого слоя, чем весьма облегчается задача конструирования нейронной сети благодаря тому, что разработчику не требуется решать вопрос о количестве слоев скрытого слоя.

4.1 Структура базисной радиальной нейронной сети

Рассмотрим структуру нейронной сети на основе радиально-базисных функций. Радиально-базисная нейронная сеть содержит три слоя: входной слой, выполняющий обработку входных данных; скрытый слой, состоящий из нейронов с радиально-базисной функцией, в которых происходит вычисление значений на основе обработанного входного сигнала; выходной слой, осуществляющий суммирования выходов нейронов скрытого слоя. Структура радиально-базисной нейронной сети приведена на Рис.6.

Рис. 6 - Структура радиально-базисной нейронной сети

(где xi - входы сети, y - выход сети,  - функция активации,  - веса) а функция преобразования нейронной сети выглядит так


где сi - центры в функции Гаусса, xp - элементы обучающей выборки от 1 до р

Архитектура радиально-базисных нейронных сетей определяется тем, что они состоят из трех слоев, выполняющих совершенно различные функции. Первый, входной, слой состоит из входных элементов, связывающих нейронную сеть с внешней средой. Следующий слой является единственным «скрытым» и нелинейно преобразует входное пространство в скрытое, имеющее большую размерность. Целесообразность этого обуславливается тем, что задача классификации в пространстве более высокой размерности с большей вероятностью удовлетворяет необходимости линейной разделимости. И последний, выходной слой, суммирует вычисленные нейронами скрытого слоя значения для представления их на выходы нейронной сети.

4.2 Построение нейронной сети

Построение данного вида нейронной сети рассматривается как задача аппроксимации кривой по точкам в пространстве высокой размерности. В основе работы радиально-базисной нейронной сети лежит традиционная интерполяция в многомерном пространстве. В терминологии нейронных сетей, скрытые нейроны содержат набор функций, являющихся «базисом» для разложения входных значений «векторов».


4.3 Математическая формализация

Теоретическую основу подхода построения радиально-базисных нейронных сетей представляет теорема Ковера о разделимости множеств. Она утверждает следующее:

«Нелинейное преобразование сложной задачи классификации образов в пространство более высокой размерности повышает вероятность линейной разделимости образов.»

Данная теорема базируется на двух моментах:

) Задание нелинейной скрытой функции , где х - входной вектор, i=1…,  - размерность скрытого пространства.

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

Ковер доказал, что любое множество образов, размещенных на некотором пространстве, тем более разделимо, чем больше это пространство в сравнении с первоначальным пространством этих образов. Если задать , как вероятность разделимости, то:

,

где  определяется формулой .

Так же из теоремы Ковера можно сформулировать, что если вектор радиальных функций в N-мерном входном пространстве обозначить , то это пространство является нелинейно -разделяемым на два пространственных класса X+ и X- тогда, когда существует такой вектор весов, что


граница между этими классами определяется уравнением


Увеличение размерности скрытого слоя позволяет увеличить вероятность линейной разделимости, однако для некоторых случаев достаточно простого нелинейного преобразования без увеличения размерности. Чаще всего при преобразовании T различных векторов необходимо использовать T нейронов скрытого слоя. За счет этого в контексте задачи разработки алгоритма симметричного шифрования, следует использовать столько нейронов скрытого слоя, сколько имеется кластеров для шифруемых символов.

В качестве функции активации в радиально-базисной нейронной сети чаще всего используют функцию Гаусса:


где r=x-ci - расстояние от данной точки до центра ci гипершара, σ - ширина функции

Центр гипершара и значение σ определяются в процессе обучения сети. Радиальная сеть с функцией Гаусса выглядит так (рис.7):

Рис. 7 - Радиально-базисная нейронная сеть на основе функций Гаусса

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

5. Алгоритм симметричного шифрования данных на основе базисной радиальной сети

.1 Алгоритм шифрования

Реализация алгоритма шифрования состоит из нескольких основных этапов:

на предварительном этапе, во время которого осуществляется предобработка данных и затем формируется обучающая выборка с учётом частоты появления символов исходного алфавита;

далее следует построение самой нейронной сети - выбор типа используемой нейронной сети, определение ее структуры и обучение (получение значений весовых коэффициентов);

и наконец, основной этап, на котором происходит сам процесс шифрования.

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

На Рис.8 показана основная схема работы алгоритма:

Рис. 8 - Общая схема работы алгоритма шифрования

5.2 Предварительный этап

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

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

) Для каждого символа генерируется количество областей с учетом частоты вхождения символов, и получается вектор количества областей , где  - количество различных символов,  - число областей для каждого класса.

) Далее случайно распределяются области для каждого символа, в зависимости от частоты повторяемости символа количество областей будет различным. Области задаются в виде обучающей выборки - набора близко расположенных векторов с указанием их класса. Важно, что новые сгенерированные вектора сравниваются с уже существующими. Это гарантирует, что каждый вектор будет принадлежать единственному классу.

В качестве примера рассмотрим такое шифруемое сообщение: «jerome k. jerome. three men in a boat (to say nothing of the dog). there were four of us - george, and william samuel harris, and myself, and montmorency.». Очевидно, что частота использования символов не равномерна. Например пробел встречается 28 раз, «e» - 17 раз, символы «k, b, c, (, )» - по одному разу. Рассмотрим основные статистические показатели текста:

Общее количество символов в сообщении: 154

Размер алфавита: 27

Среднее значение частоты появления символа: 0,037

Минимальное значение частоты появления символа: 0,0065

Максимальное значение частоты появления символа: 0,1818

На Рис.9 показано сравнение частоты использования символов во входной последовательности и распределения точек по пространству шифрования с соответствующими классами входной последовательности.

Рис. 9 - Сравнение частотности символов в сообщении и точек в кластерах

Видно, что они очень близки. Это гарантирует равномерное распределение символов по области шифрования и делает затруднительным применение к данному алгоритму методов частотного криптоанализа.

5.3 Построение нейронной сети

За предобработкой данных и формированием обучающей выборки следует построение нейронной сети. Формируется ее структура, ищутся значения весовых коэффициентов, проводится обучение.

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

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

При построении радиально-базисной нейронной сети в качестве центров функций скрытых нейронов удобно выбирать центры областей искажения символов. В этом случае важно выбрать ширину функции активации.