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

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

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

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

5.4 Обучение нейронной сети

Процесс обучения радиально-базисной нейронной сети сводится к двум действиям:

) Подбору центров ci и значений σ в базисной функции. Для этого чаще всего используют алгоритмы без учителя;

) Распределению весов нейронов выходного слоя. Для этого чаще всего используют алгоритмы с учителем.

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

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

Рассмотрим процесс обучения подробнее:

) Самое первое действие - это предобработка данных. Каждый символ исходного текста двоично кодируется кодом bj. После производится анализ входного текста на частотность вхождения в него символов и составляется соотношение lj для символа, показывающее частотность каждого символа. Далее на основе этого соотношения производится создание поля кластеров, по которым будут распределены символы текста. Поле задается таким образом:

В двумерном пространстве размером N*k X N*k случайно распределяются N точек (где N - требуемое количество кластеров, равное i*M, где M - количество символов, i=1,2,3…), с единственным правилом - они должны быть не менее чем на 2*k удалены друг от друга от границ выбранного пространства;

Далее производится пошаговое увеличение их радиусов с одним требованием - скорость увеличения aj прямо зависит от lj каждого кластера;

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

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

) Далее происходит создание набора данных для обучения нейронной сети. Набор создается путем выбора определенного количества точек z из каждого кластера и соотношения их с двоичным кодом b каждого символа. Наборы упорядочиваются и подготавливаются для обучения нейронной сети.

) Третий шаг - создание скрытого слоя нейронной сети. Количество нейронов скрытого слоя равно N - количеству кластеров, заданных для символов. В каждом нейроне задается своя функция активации. В качестве функции активации используется функция Гаусса


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

) Далее созданная нейронная сеть обучается с помощью полученных ранее обучающих выборок. Корректировка весов выходов нейронов скрытого слоя происходит с использованием псевдообратной матрицы Грина G, в которой xi обозначает все обучающие выборки, а K - количество нейронов скрытого слоя


где x-входные данные, сi-центр кластера радиально-базисной функции, - радиально-базисная функция нейрона скрытого слоя

С использованием этой матрицы можно легко определить вектор весов скрытого слоя с использованием псевдоинверсии:

,  где , d - вектор ожидаемых значений

5.5 Основной этап

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

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

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

3) Из этой области случайно выбирается вектор (где  - значение i-ой координаты вектора, а r - размерность области определения), для которого результат работы сети соответствует исходному классу. Так получается случайный вектор, принадлежащий выбранной области и классу.

) Полученный шифр  сохраняется, и алгоритм обрабатывает следующий символ.

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

5.6 Этап дешифровки

криптография нейронный сеть шифрование

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

5.7 Анализ алгоритма и предложенной системы

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

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

6. Программная реализация

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

6.1 Функционал программы

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

6.2 Алгоритм работы программы

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

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

Заключение

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

Список литературы

1.      Осовский С. Нейронные сети для обработки информации / Пер. с польского И.Д. Рудинского. - М.: Финансы и статистика, 2002. - 344 с

.        Жельников В. Кpиптография от папируса до компьютера. - М.: ABF, 1996. - 335 с. - ISBN 5-87484-054-0.

.        Мао Венбо. Современная криптография: теория и практика. : Пер. с англ. - М. : Издательский дом «Вильямс», 2005. - 768 с.: ил. - Парал. тит. англ.

.        Баричев С.Г., Гончаров В.В., Серов Р.Е. Основы современной криптографии. - М.: Горячая линия - Телеком, 2002. - 175 с.

5.      Simon Haykin. Neural Networks: A Comprehensive Foundation. - 2nd edition. - Upper Saddle River, NJ: Prentice Hall, 1999

6.      Дэвид Кан. Взломщики кодов. - Центрполиграф, 2000 год. - 480 с. - (Секретная папка). - 10 000 экз. - ISBN 5-227-00678-4.

.        Шеннон К. Работы по теории информации и кибернетике. - М.: Изд-во иностранной литературы, 1963. - 830 с.

.        Электронные деньги. Дмитрий Анатольевич Кочергин ЦИПСиР, 2011 - страниц: 422