close

Вход

Забыли?

вход по аккаунту

код для вставкиСкачать
Правительство Российской Федерации
Федеральное государственное автономное образовательное
учреждение
высшего профессионального образования
«Национальный исследовательский университет
«Высшая школа экономики»
Факультет Бизнес-информатика
Отделение Программной инженерии
Кафедра Управление разработкой программного обеспечения
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
На тему: Потоковый шифр с линейным регистром сдвига
Листов 29
Руководитель работы: доцент каф.
УРПО
__________________ /Набебин А. А./
«____»_____________________ 2014 г.
Исполнитель: студент группы 471 ПИ
___________________ /Сотов А. Н./
«____»_____________________ 2014 г.
Москва, 2014 г
Аннотация
Тема данной выпускной квалификационной работы –
потоковый шифр с линейным регистром сдвига. В данной работе
исследован и разработан математико-алгоритмического аппарат и
программное обеспечение на основе общих конечных полей GF(p)
для задач шифрования и дешифрования символьной блоковой и
потоковой информации с помощью линейных регистров сдвига. В
рамках этой работы написана библиотека классов с методами для
решения вышеописанных задач и задач полиномиальной
факторизации. На основе библиотеки классов разработаны
демонстрационные программы шифрования и дешифрования
текстовой информации.
Данная работа содержит:
 29 листов машинописного текста
 6 иллюстраций, 1 таблицу, 7 формул
 4 главы текста
 12 использованных источников
2
Определения, сокращения и обозначения
В данной работе используются следующие сокращения:
 ЛРСОС – линейный регистр с обратной связью;
 ОЛРП – однородная линейная рекуррентная
последовательность.
Ниже приведены определения главных свойств полинома ключа –
неприводимости и примитивности([5]):
Определение. Неприводимый полином f(x) из p[x] есть
примитивный полином, если x есть генератор для
мультипликативной группы p всех ненулевых элементов
конечного поля p= p[x](f(x)).
Определение. Полином f(x) из p[x] неприводим над p, если f(x) не
может быть представлен как произведение двух полиномов
положительной степени из p[x].
Оглавление
Аннотация ..................................................................................................................... 2
Определения, сокращения и обозначения ................................................................. 3
3
1. Введение ................................................................................................................... 5
2. Анализ предметной области ................................................................................... 8
2.1 Описание предметной области ......................................................................... 8
2.2 Потоковый шифр ............................................................................................... 9
2.3 Линейный регистр сдвига ............................................................................... 11
3. Описание используемых алгоритмов................................................................... 14
3.1 Тестирование полинома из p[x] на неприводимость ................................. 14
3.2 Тестирование полинома из p[x] на примитивность ................................... 15
3.3 Шифрование и дешифрование с помощью ЛРСОС ..................................... 16
3.4 Алгоритм Берлекампа-Мэсси ........................................................................ 17
4.Технологический раздел ........................................................................................ 19
3.1 Структура разрабатываемой библиотеки классов ....................................... 19
3.2 Разработка GUI демонстрационных программ ............................................. 22
Заключение ................................................................................................................. 26
Список литературы .................................................................................................... 28
ПРИЛОЖЕНИЯ ........................................................................................................ 30
1. Введение
4
Информация в современном мире является одним из самых
ценных ресурсов и не зря порой становится предметов торгов, что
делает ее похожей на некое богатство.
Появление первых в мире ЭВМ кардинально изменило
криптографию. Владение нужной и полезной информацией часто
равносильно получению большой власти над массами людей.
Единоличное обладание такой информацией часто оказывается
решающим преимуществом в любой борьбе и определяет, тем
самым, высокую цену наличия информации у одной из сторон.
Именно поэтому, как и любой важный ресурс, информация
нуждается в защите от неблагоприятного проникновения других
людей. Защитой данных занимается криптография. Криптография прикладная наука, она использует самые последние достижения
фундаментальных наук. Также, она является одной из старейших
наук, её история насчитывает около 4 тысяч лет. Основными
задачами всех криптографических алгоритмов защиты информации
является
шифрование
нужных
данных
и
дальнейшая
их
расшифровка.
Шифрование - процесс применения шифра к информации,
требующей защиты, т.е. преобразование защищаемой информации в
шифрованное сообщение (шифротекст) с помощью определенных
правил, содержащихся в шифре.
Дешифрование - обратный процесс. Оно заключается в
преобразовании
шифрованного
сообщения
в
информацию
с
помощью определенных правил, содержащихся в шифре.
Для современной криптографии характерно использование
открытых алгоритмов шифрования, предполагающих использование
вычислительных средств. Существует около десятка проверенных
5
алгоритмов шифрования, которые при использовании ключа
достаточной длины криптографически устойчивы.
Самым
потоковое
распространенным
шифрование
в
данных.
нынешнее
Главным
время
является
свойством
такого
шифрования является зависимость не только от использующегося
ключа, но и от положения шифруемого элемента в передаваемой
последовательности.
Другим,
иногда
намного
более
эффективным
методом
шифрования является шифрование блоками. В этом случае создается
фиксированный объем информации от передаваемого сообщения, а
затем преобразованный определенным методом передаётся в
приложение для дешифровки.
Целью данной выпускной квалификационной работы является
изучение самого распространенного вида шифрования – потокового,
и разработка библиотеки классов, содержащей методы для решения
задач
шифрования
и
дешифрования
потоковой
текстовой
информации с помощью линейных регистров сдвига
Для достижения цели работы необходимо решить следующие
задачи:
1. Изучить
алгоритмы
тестирования
полинома
на
неприводимость и примитивность над простым полем Zp,
поиска
НОД
полиномов,
алгоритмы
арифметических
преобразований над Zp;
2. Изучить теорию блоковой криптосистемы (шифрования и
дешифрования), основанную на линейных регистрах сдвига с
обратной связью;
3. Изучить конструкцию линейных регистров сдвига с обратной
связью как автономный конечный автомат с выходом (без
входа)
и
его
математическое
6
описание
в
терминах
полиномиальной алгебры;
4. Реализовать
алгоритм
потокового
шифрования
и
дешифрования символьной информации;
5. Разработать
демонстрационные
программы
на
основе
библиотеки классов с методами;
6. Разработать алгоритм Берлекампа-Мэсси для расшифровки
линейного
регистра
сдвига
по
продуцируемой
им
рекуррентной последовательности длины 2k, где k степень
ключевого полинома.
7
2. Анализ предметной области
2.1 Описание предметной области
Большую важность из-за
многочисленных применений в
области шифрования имеют последовательности над конечными и
общими полями, каждый член которых, будучи элементом
основного поля, некоторым образом зависит от предшествующих
ему членов. Такие последовательности получаются с помощью
рекурсивных процедур, что является преимуществом с точки зрения
удобства вычислений и программной реализации. Кроме того, такие
последовательности
обладают
полезными
структурными
свойствами. Практический интерес для шифрования представляет
случай, когда члены последовательности линейным образом зависят
от фиксированного числа предыдущих членов. Они применяются в
теории кодирования и криптографии и называются линейными
рекуррентными
последовательностями.
Для
большинства
аппаратных реализаций выбирается поле с характеристикой равной
2, но теория рекуррентных последовательностей может быть развита
для произвольного конечного поля, которая и рассматривается в
данной
работе.
Поэтому
разработанные
демонстрационные
программы рассматривают шифрование в обоих случаях – в
конечных полях GF(2) с использованием перевода в бинарную
последовательность текстового сообщения и в общих полях GF(p).
Линейная рекуррентная последовательность продуцируется
линейным регистром сдвига с обратной связью с помощью
ключевого неприводимого примитивного полинома. Затем эта
последовательность используется в генерации шифротекста для
передачи. О том, что такое потоковое шифрование и линейный
8
регистр с обратной связью и в чем их особенности описано в
следующей главе.
2.2 Потоковый шифр
Потоковые
шифры
преобразуют
открытый
текст
в
шифротекст по одному биту за операцию. Простейшая реализация
потокового шифра показана на Рис. 1. Поток ключей выдает поток
битов: k1,k2, k3, ..., ki. Этот поток ключей (иногда называемый
бегущим ключом) и поток битов открытого текста, p1,p2, p3, ..., pi,
подвергаются операции "исключающее или"(XOR), и в результате
получается поток битов шифротекста.
ci =piki
При дешифрировании операция XOR выполняется над
битами шифротекста и тем же самым потоком ключей для
восстановления битов открытого текста.
pi = ciki
Безопасность
системы
полностью
зависит
от
свойств
генератора. Если генератор потока ключей выдает бесконечную
строку нулей, шифротекст будет совпадать с открытым текстом, и
все операция будет бессмысленна. Если генератор потока ключей
выдает бесконечный поток случайных или псевдослучайных битов,
вы получаете надежную систему шифрования.
Если рассматривать потоковый шифр, генератор потока
ключей создает псевдослучайный битовый поток, который похож на
случайный, но в действительности детерминирован и может быть
безошибочно воспроизведен при дешифрировании. Чем ближе
выход генератора потока ключей к случайному, тем потребуется
больше времени, чтобы взломать шифр.
9
Pi
Генератор
потока ключей
Генератор
потока ключей
Поток ключей Ki
Поток ключей Ki
Шифротекст
Открытый
текст
Открытый
текст
Ci
Pi
Дешифрирование
Шифрование
Рис. 1
Однако, если генератор потока ключей при каждом включении
создает один и тот же битовый поток, то использующую его
криптосистему взломать нетрудно. Потоковые шифры особенно
полезны для шифрования бесконечных потоков коммуникационного
трафика, например, канала, связывающего два компьютера.
Генератор потока ключей состоит из трех основных частей
(см. Рис. 2). Внутреннее состояние описывает текущее состояние
генератора потока ключей. Два генератора потока ключей, с
одинаковым ключом и одинаковым внутренним состоянием, выдают
одинаковые потоки ключей. Функция выхода по внутреннему
состоянию генерирует бит потока ключей. Функция следующего
состояния по внутреннему состоянию генерирует новое внутреннее
состояние.
Внутреннее
состояние
Функция
следующего
состояния
КЛЮЧ K
Функция
выхода
Ki
10
Рис. 2
2.3 Линейный регистр сдвига с обратной связью
Пусть f(x) = xm + am1xm1 + a m2x m2 + … + a1x + a0 = 0 уравнение, где
f(x) есть нормированный примитивный полином из p[x] степени m 1.
Тогда
xm =am1xm1a m2x m2 … a1xa0.
Последовательность
(1)
s1, s2,…
s0,
элем ентов
поля
p,удовлетворяющая соотношению
s n+m = am1s n+m-1a m2 s n+m-2 … a1sn+1a0sn, n= 0,1,… (2)
называется
однородной
линейной
рекуррентной
последовательностью порядка m над полем p. Полином f(x)
называется характеристическим полиномом для ОЛРП s0, s1, s2 ,…
Соотношение
(2)
называется
однородным
линейным
рекуррентным соотношением порядка m над полем p. Первые
члены
s0,
s1,… ,
s m 1
по следо ва те льнос ть
и
однозна чно
на зы ва ютс я
опр еделя ют
ее
вс ю
н ач а льными
зна чени ями . ОЛР П можно по луч ать с помо щ ью ЛР СОС.
Это
элек тронны е
прео бра зова тели,
пер ераба ты ва ющие
инфор ма цию, зад анн ую с помо щью эле мен тов по ля p.
Лине йные
ре ги стры
кон с тр ук тивных
сдви га
э лем енто в
с троя тс я
трех
типо в :
ус и ли те лии задерж ки ( триг геры ) ( см Рис .3 ).
11
с
помо щ ью
сум м а торы,
Сум ма тор
Ус или тель
Зад ер жка
Рис. 3
Регистр сдвига с обратной связью строится путем
соединения конечного числа указанных выше конструктивных
элементов в замкнутую цепь таким образом, что никакие два
выхода
не
присоединяется
вырабатывающий
друг
к
другу.
последовательность
ЛРСОС,
ОЛРП,
удовлетворяющую соотношению (2), изображен на Рис. 4.
Рис.4
Длина ЛРСОС есть степень m полинома f(x). В начале работы
каждый элемент задержки Di, i=0,1,…,m1, содержит некоторое
начальное заполнение si. На следующем такте работы каждый
элемент задержки Di содержит заполнение si+1. Поэтому выход
регистра сдвига с обратной связью есть последовательность
элементов s0, s1,s2,… Всякая выходная последовательность регистра
12
сдвига является (чисто) периодической. Начальное заполнение
s0=0,
s1=0,…,
sm2=0,sm1=1
порожденная
называется
импульсом,
импульсом.
называется
ОЛРП,
импульсной
последовательностью. Если характеристический полином f(x) для
ОЛРП
примитивен,
то
минимальный
период
ОЛРП
имеет
наибольшую длину и равен pm1. В следующей главе подробно
описаны основные алгоритмы для потокового шифрования и
дешифрования символьной информации.
3.Описание используемых алгоритмов
Разработка метода шифрования и дешифрования информации
с использованием потокового шифра и линейного регистра сдвига
является основной задачей в данной работе. В процессе разработки
системы шифрования также разработаны трудоемкие алгоритмы,
например: произведение двух полиномов, деление двух полиномов
с нахождением частного и остатка, производная полинома, алгоритм
Евклида вычисления НОД двух полиномов и тестирование
полинома из Zp[x] на неприводимость и примитивность. Данные
алгоритмы объединены в библиотеку классов, что позволит
использовать их в
других задачах, связанных с защитой
информации или полиномиальной факторизацией. Рассматривая
часть криптосистемы для потокового шифрования информации,
можно выделить 4 этапа:
- Тестирование полинома на неприводимость и примитивность
- Продуцирование рекуррентной линейной последовательности
- Шифрование информации на основе периодической
рекуррентной последовательности
- Передача шифротекста
13
Далее будут рассмотрены основные алгоритмы, использующиеся
для решения данных задач.
3.1 Тестирование полинома из Zp[x] на неприводимость
Для приложений особый интерес представляют рекуррентные
последовательности, имеющие (очень) большой минимальный период.
Последовательности, вырабатываемые линейным регистром сдвига с
обратной связью, близки к случайным. Ключом шифра является
примитивный полином с достаточно большим значением pm1,
обеспечивающий получение импульсной последовательности с
большим минимальным периодом, где p – характеристика поля, m –
степень полинома. Поэтому первоочередной задачей в потоковом
шифровании с помощью ЛРСОС является поиск ключевого
примитивного полинома.
Исходя из определения примитивности полинома, искомый полином
должен сначала быть протестирован на свойство неприводимости.
Алгоритм приведен в источнике [16]:
ВХОД. Простое число p и нормированный полином f(x) степени m
из p[x].
ВЫХОД. Ответ на вопрос: «Является ли полином f(x) неприводимым
над p?».
1. u(x) :x.
2. Для i от 1 до m/2 выполнить следующее.
2.1. u(x) :u(x)p (mod f(x)); d(x) :НОД(f(x), u(x)x).
2.2. Если d(x)  1, то вернуть «приводимый».
3. Вернуть «неприводимый».
3.2 Тестирование полинома из Zp[x] на примитивность
14
Следующим шагом для проверки ключевого полинома
является тестирование на примитивность. Алгоритм также приведен
в источнике [16]
ВХОД. Простое число p; целое m 1; все различные простые
делители r1, r2, …, rt числа pm1; нормированный неприводимый
полином f(x) степени m из p[x].
ВЫХОД. Ответ на вопрос: «Примитивен ли полином f(x)?
1. Для i от 1 доt выполнить следующее.
m
1.1. l(x) : x( p 1)/ ri (modf(x)).
1.2. Если l(x)  1, то вернуть «не примитивный».
2. Вернуть «примитивный».
Поиск примитивного ключевого полинома осуществляется
перебором всех возможных вариантов в заданном поле при известной
степени полинома и проведением тестов на неприводимость и
примитивность каждого такого полинома. Так же для создания списка
примитивных полиномов для шифрования в демонстрационной
программе использовался источник [2].
3.3 Шифрование и дешифрование с помощью ЛРСОС
Разработанное ПО решает различные задачи в зависимости от
основания p:
 В общих полях GF(pm) – передача текстовой информации
блоками
 В конечных полях GF(2m) – передача текстовой информации
потоком
Шифрование текста производится по данным этапам:
1) Перевод текста в десятеричную кодировку по таблице ASCII
2) Продуцирование импульсной рекуррентной
последовательности на основе выбранного ключевого
15
полинома длиной, равной длине последовательности числовой
кодировки входящего текста.
3) Сложение векторов импульсной последовательности и
последовательности десятеричной кодировки символов текста.
Результат суммы есть вектор шифротекста
Рассмотрим наглядный пример шифрования и дешифрования текста.
Полином f(x) = x 3 + 173 x 2 + 211 x + 183 и з p[x], p=257, m=3,
примитивен. По лино м у f(x) соответствует импульсная
последовательность si, i= 0,1,… с минимальным периодом p m  1 =
257 3 1 = 16974592 .
Шифрование. Пусть «Send $100 tohim» есть шифруемый текстt; v = (
83 101 110 100 32 36 49 48 48 32 116 111 32 104 105 109) есть
вектор (длины 16) кодов ASCII символов текстаt; s = (84 163 154 179
1 182 53 48 149 142 232 38 214 141 85 164) есть вектор длины 16
импульсной последовательности между позициями m и 18 (с м .
Таб л.1 ); шифротекст есть вектор c = v+s (mod p) = (167 7 7 22 33
218 102 96 197 174 91 149 246 245 190 16).
i
si
i
si
0
0
11
149
1
0
12
142
2
1
13
232
3
84
14
38
4
163
15
214
5
6
7
8
9
10
154 179 1
182 53 48
16 17 18 19 20 21
141 85 164 107 206 181
Таблица 1
Дешифрование. Вектор v = cs (mod p), откуда исходный текст есть
t.
3.4 Алгоритм Берлекампа-Мэсси
Взломать линейный регистр сдвига значит найти примитивный
полином, который полностью определяет регистр. Для взлома регистра
достаточно знать лишь степень k его примитивного полинома и
начальный отрезок длины 2k импульсной последовательности,
продуцируемой регистром. Алгоритм Берлекампа-Мэссидействителен,
16
даже если обеспечивающий дизайн ЛРСОС полином m(x) не является
ни примитивным, ни неприводимым.
ВХОД. 1. Степень k примитивного полинома m(x) из p[x],
определяющего ЛРСОС.
2. Начальный отрезок S = s0, s1,…, s2k1 длины 2k рекуррентной
последовательности, продуцируемой ЛРСОС.
ВЫХОД. Примитивный полином m(x).
0
1. G(x) : =
si xi .

i k 1
2. g0(x) : = 1, h0(x) : =x, m0 : = 0.
3. Для jот 1 до 2k1 выполнить следующее.
3.1. gG(x) := gj(x)G(x).
3.2. bj положить равным коэффициенту полинома gG(x) при xj.
 g j ( x)  bj  hj ( x), если bj  0, m j  0,
3.3. gj+1(x) := 
 x  hj ( x) в противном случае.
m j , если bj  0, m j  0,
3.4. mj+1(x) := 
m j 1 в противном случае.
4. r := k + 1/2 m2k/2 .
5. m(x) := xrg2k(1/x).
6. Вернуть полином m(x).
Основываясь на входных и выходных данных алгоритма можно
утверждать, что следует обеспечивать строгую секретность не только по
степени k примитивного полинома m(x), но и по начальному отрезку
длины 2k соответствующей рекуррентной последовательности.
В следующей главе будет рассмотрена структура разработанной
библиотеки классов и GUI демонстрационных программ.
17
4.Технологический раздел
4.1 Структура библиотеки классов
Для
написания
библиотеки
классов
и
демонстрационных
программ для потокового шифрования и дешифрования с помощью
линейных регистров сдвига выбран объектно-ориентированный
язык программирования C# и среда разработки программных
продуктов MS Visual Studio 2010. Выбор обусловлен простотой
разработки интерфейсов демонстрационных программ и опытом
разработки в данной среде.
Программная документация представлена в Приложениях.
Далее приведена схема программного проекта:
Рис.4
Библиотека содержит 4 класса:
 Polynomial – класс содержащий методы для арифметических
преобразований полиномов и чисел и вспомогательные
18
методы для шифрования(например, числовая и
полиномиальная факторизация)
 Berlekamps – класс с методами для реализации факторизации
Берлекампа через нуль-матрицу и метода вскрытия шифра с
помощью алгоритма Берлекампа-Мэсси
 Crypt – класс с методами для кодирования текстовой
информации и ее шифрованием/дешифрованием
 Test – класс, содержащий методы для проверки полиномов на
свойство примитивности и неприводимости. Также содержит
методы проверки результата полиномиальной факторизации.
Класс Polynomial содержит методы:
 Norm() – метод нормировки многочлена надZp
 Pn() – вспомогательная функция для преобразования числа в
Zp
 P() – вспомогательная функция для преобразования полинома
в Zp
 InitSequence() – метод для продуцирования импульсной
рекуррентной последовательности в случае передачи
информации блоком
 ImpulseGenerate() - метод для генерации следующего 8битного элемента продуцируемой последовательности
(используется при потоковой передаче текста)
 NumbFactorization() – метод числовой факторизации
 UniqueList() – вспомогательный метод для выявления
уникальных элементов в последовательности
 Diff() – метод возвращающий разность двух полиномов над Zp
 Sum() – метод возвращающий сумму двух полиномов над Zp
19
 Mult() – метод возвращающий произведение двух полиномов
над Zp
 Mult() – метод возвращающий произведение двух полиномов
 Func() – метод, преобразующий полином, ставя первым
мономом старшую степень с ненулевым коэффициентом
 Format() – метод возвращающий строковое значение монома
 Deconv() - метод возвращающий результат деления с
остатком двух полиномов над Zp
 Derivative() – метод возвращающий производную от полинома
над Zp
 DtoStr() – метод преобразования числового представления
полинома в строку
 StrToD() – метод преобразования строкового представления
полинома в числовое
 GCD() – метод поиска наибольшего общего делителя двух
полиномов над Zp
 ExGCD() – метод поиска наибольшего общего делителя с
помощью алгоритма Евклида
 SQF() – метод полиномиальной факторизации на множители
свободные от квадратов
Класс Berlekamps содержит методы:
 InverseElement() –метод нахождения обратных элементов
ненулевым элементам GF(p)
 MultMatrix() – метод произведения двух матриц над Zp
 Q_IMatrix() – метод нахождения матрицы Q-I
 Inc() – вспомогательная функция для метода нахождения
нуль-пространства матрицы Q
20
 NullSpace() – метод нахождения нуль-пространства
матрицы Q
 Factorize() – метод полиномиальной факторизации
алгоритмом Берлекампа
 Berlekamp_Messy() – метод вскрытия шифра с помощью
алгоритма Берлекампа-Мэсси
Класс Crypt содержит методы:
 isPrime() – метод проверки числа на принадлежность к
множеству простых натуральных чисел
 minP() – метод поиска минимального числа p для
шифрования всех символов в строке
 Sum() – метод поиска суммы двух целочисленных
последовательностей равной длины над полем числа p
 Diff() – метод поиска разности двух целочисленных
последовательностей равной длины над полем числа p
 Cipher() – метод шифрования информации
 ReCipher() – метод дешифрования информации
Класс Test содержит методы:
 Factorization() – метод проверки произведения множителей
 TestForIrreducibility() – метод тестирования полинома на
неприводимость
 TestForPrimitivity() – метод тестирования полинома на
примитивность
4.2 Разработка GUI демонстрационных программ
Для взаимодействия с пользователем и демонстрации методов
шифрования и дешифрования библиотеки классов необходимо
создать интуитивно-понятный графический интерфейс программы.
21
Из окна программы шифрования (класс EncForm)и окна программы
дешифрования (класс DecForm) пользователю должны быть
доступны следующие функции:
 Возможность ввода ключевого полинома с клавиатуры и
выбрать его из предложенного списка
 Возможность проверки введенного полинома на свойства
неприводимости и примитивности
 Возможность сохранить полином, после того как он прошел
тесты на неприводимость и примитивность
 Осуществление передачи текстовой информации потоком и
блоком
На основе данных функциональных требований были
разработаны данные окна программ шифрования и
дешифрования:
Рис. 5: Окна программы шифрования
22
Рис. 6: Окна программы дешифрования
Демонстрационные программы содержат следующие компоненты
 Кнопки «Зашифровать» и «Расшифровать» требуются для
шифрования/дешифрования выбранного текста в случае
передачи информации файлом. Компонент использует методы
библиотеки Crypt
 Кнопка «Провести тесты» проверяет введенный полином на
свойства неприводимости и примитивности. Использует
методы TestForIrrudicibility() и TestForPrimitivity()
 Кнопка «Добавить полином» сохраняет введенный полином
после успешного прохождения полинома тестов на свойства
неприводимости и примитивности
 Кнопка «Начать шифрование»(значок начала
воспроизведения) требуется на начала потоковой передачи
шифротекста программе дешифрования
 Кнопки выбора способа передачи «Файл» и «Поток» нужны
для выбора пользователем способа передачи/приема
шифротекста
 Кнопки выбора способа ввода полинома «С клавиатуры/ Из
списка» нужны для выбора пользователем способа ввода
ключевого полинома
 В поле ввода «С клавиатуры» вводится полином, который
может использоваться как ключевой, в случае прохождения
тестов на неприводимость и примитивность
 Комбинированное поле вводы со списком «Список
полиномов» требуется для выбора примитивных полиномов из
файла Keys.pk, хранящегося в корне с .exeфайлом
23
 Поле ввода «Характеристика поля» требуется для ввода
характеристики поля. При вводе числового значения, оно
проверяется на принадлежность к множеству простых чисел.
 В полях ввода и вывода в окнах для шифрования и
дешифрования потока, соответственно, вводится и выводится
символьная информация вводимая в поток в реальном
времени.
 Поле «Шифротекст» в окне символьного шифрования потока
отображает битовыйшифротекст, являющийся результатом
вводимого текста
Если обобщить принцип работы демонстрационных программ, то
их главная цель – продемонстрировать методы библиотеки
MethodsLibrary.dll для поточного шифрования текстовой
информации двумя способами: блоками и потоком. В первом случае
на вход программы шифрования подается ключевой полином и
выбирается текстовый файлформата .txt для начала потокового
шифрования. Обязательным условием успешного шифрования
текста является maxChar<p, где maxChar – максимальная числовая
кодировка по таблице ASCII символа в тексте и p–характеристика
поля. Зашифрованный файл также имеет формат .txt. Далее в
программе дешифрования выбирается файл с шифром и
производится его дешифровка. Файл с результатом дешифрования
сохраняется по выбранному пути. В случае передачи шифротекста
потоком используются вторые окна программ для шифрования и
дешифрования вместо работы с текстовым файлом используют
временный файл формата .tmp для синхронизации символьного
потока шифротекста.
24
25
Заключение
В результате были решены следующие задачи:
- Изучены
алгоритмы
тестирования
полинома
на
неприводимость и примитивность над простым полем Zp,
поиска
НОД
полиномов,
алгоритмы
арифметических
преобразований над Zp;
- Изучена теория блоковой криптосистемы (шифрования и
дешифрования), основанная на линейных регистрах сдвига с
обратной связью;
- Изучена конструкция линейных регистров сдвига с обратной
связью как автономный конечный автомат с выходом (без
входа)
и
его
математическое
описание
в
терминах
полиномиальной алгебры;
- Реализован
алгоритм
потокового
шифрования
и
дешифрования символьной информации;
- Разработаны
демонстрационные
программы
на
основе
библиотеки классов с методами;
- Разработан алгоритм Берлекампа-Мэсси для расшифровки
линейного
регистра
сдвига
по
продуцируемой
им
рекуррентной последовательности длины 2k, где k степень
ключевого полинома.
В
качестве
программной
разработаныдемонстрационные
реализации
программы
были
шифрования
и
дешифрования символьной потоковой и блоковой информации.
В качестве направления для дальнейшей работы можно выделить:
1.
шифрование
и
дешифрование
потоковой информации (видео поток, звук)
26
других
видов
2.
разработка
серверной
части
для
хранения
ключевых полиномов и клиентских частей криптосистемы для
передачи данных.
27
Список литературы
Айерлэнд К., Роузен М. Классическое введение в
[1]
современную теорию чисел.: Пер. с англ. – М.: Мир, 1987. –
416 с.
Болотов А.А., Гашков С.Б., Фролов А.Б., Часовских
[2]
А.А. Алгоритмические основы эллиптической криптографии.
– М.: изд-во, 2004. – 499 с., ил.
Брассар Ж. Современная криптология.: Пер. с англ. –
[3]
М., Издательско-полиграфическая фирма ПОЛИМЕД, 1999. –
176 с., илл.
Жельников
[4]
В.
Криптография
от
папируса
до
компьютера.
Лидл Р., Нидеррайтер Г. - Конечные поля (том 1,
[5]
2),1988.
Набебин А.А. Модулярная арифметика и криптография.
[6]
М.: МЭИ, 2007. – 201 с.
Петров
[7]
А.А.
Компьютерная
безопасность.
Криптографические методы защиты. – М.: ДМК, 2000. – 448
с.: ил.
Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. Защита
[8]
информации в компьютерных системах и сетях / Под ред.
Шаньгина В.Ф. – 2-е изд., перераб. и доп. – М.: Радио и связь,
2001. – 376 с.: ил.
Смарт Н. Криптография. – М.: Техносфера, 2005. – 528
[9]
с.
28
[10]
ФергюсонНильсон,
Шнайер
Брюс.
Практическая
криптография.: Пер. с англ. – М.: Издательский дом
«Вильямс», 2005. – 424 с.:илл. – Парал. тит. англ.
[11]
Фомичев В.М. дискретная математика и криптография.
Курс лекций / под общ. ред. Д-ра физ.-мат. Н.Д. Подуфалова. –
М.:ДИАЛОГ-МИФИ, 2003 – 400с.
[12]
Menezes A., van Oorshot P., Vanstone S. Handbook of
applied cryptography, 1997.
29
1/--страниц
Пожаловаться на содержимое документа