38
Теория кодирования и криптография Курсовой проект

курсовой проект

Embed Size (px)

Citation preview

Page 1: курсовой проект

Теория кодирования и криптография

Курсовой проект

Page 2: курсовой проект

Цель курсового проекта

Приобретение навыков

разработки программного обеспечения

для решения задач сжатия данных,

защиты данных от помех и

несанкционированного использования.

Page 3: курсовой проект

Задачи курсового проекта1. Изучение современных методов сжатия данных,

защиты от помех и шифрования данных (методов кодирования информации)

2. Изучение особенностей программной реализации методов кодирования с учетом ограничений на вычислительные ресурсы

3. Реализация алгоритмов кодирования на языке высокого уровня для персонального компьютера под управлением операционной системы семейства Microsoft Windows

Page 4: курсовой проект

Содержание курсового проекта

1. Задание на курсовой проект2. Описание целей и задач проектируемого программного

обеспечения3. Описание источника кодируемой информации4. Описание алгоритмов решения задач5. Описание примеров выполнения алгоритмов6. Описание модулей программного обеспечения7. Руководство по применению программного обеспечения8. Выводы9. Список литературы10.Приложения

Page 5: курсовой проект

Требования к оформлению пояснительной записки

По результатам курсового проекта необходимо оформить отчет в виде пояснительной записки объемом 30 – 50 страниц основного текста (без учета приложений) в машинописной форме (шрифт Times New Roman, 14-й размер, полуторный интервал).

Page 6: курсовой проект

Основные понятия теории сжатия Компрессор (кодер) – программа, которая сжимает исходную

информацию. Программа, выполняющая восстановление информации, называется декомпрессором (декодером). Для объединения кодера и декодера иногда используется понятие кодек.

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

Page 7: курсовой проект

Основные понятия теории сжатия (продолжение)

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

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

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

Фактор сжатия – величина, обратная коэффициенту сжатия.

Page 8: курсовой проект

Адаптивное сжатие Алгоритм кодирования:

ИнициализироватьМодель();Пока не конец сообщенияСимвол = ВзятьСледующийСимвол();Закодировать (Символ);ОбновитьМодельСимволом (Символ);Конец Пока

Алгоритм декодирования:ИнициализироватьМодель();Пока не конец сжатой информацииСимвол = РаскодироватьСледующийСимвол();ВыдатьСимвол (Символ);ОбновитьМодельСимволом (Символ);Конец Пока

Page 9: курсовой проект

Арифметическое сжатиеАлгоритм арифметического кодирования:

НижняяГраница = 0.0;ВерхняяГраница= 1.0;Пока ((ОчереднойСимвол = ДайОчереднойСимвол()) != КОНЕЦ)

Интервал = ВерхняяГраница - НижняяГраница; ВерхняяГраница = НижняяГраница + Интервал * ВерхняяГраницаИнтервалаДля(ОчереднойСимвол);НижняяГраница = НижняяГраница + Интервал *НижняяГраницаИнтервалаДля(ОчереднойСимвол);

Конец Пока Выдать (НижняяГраница)

Page 10: курсовой проект

Арифметическое сжатиеАлгоритм арифметического декодирования:

Число = ПрочитатьЧисло();Всегда

Символ = НайтиСимволВинтервалКоторогоПопадаетЧисло(Число)Выдать (Символ)Интервал = ВерхняяГраницаИнтервалаДля (Символ) –

НижняяГраницаИнтервалаДля (Символ); Число = Число - НижняяГраницаИнтервалаДля(Символ);Число = Число / Интервал;

Конец Всегда

Page 11: курсовой проект

Алгоритм LZ771. В качестве модели данных LZ77 использует «скользящее» по

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

2. Алгоритм LZ77 выдает коды, состоящие из трех элементов: смещение в словаре относительно его начала подстроки,

совпадающей с содержимым буфера; длина подстроки; первый символ в буфере, следующий за подстрокой.

3. После выдачи кода алгоритм сдвигает все содержимое окна на длину совпадающей подстроки + 1 символ влево и одновременно втягивает соответствующее количество очередных символов сообщения.

4. Если совпадение не обнаружено, то алгоритм выдает код <0, 0, первый символ в буфере>

и продолжает свою работу.

Page 12: курсовой проект

Алгоритм LZ78В LZ78 и кодер, и декодер начинают работу с

«почти пустого» словаря, содержащего только одну закодированную строку — НОЛЬ-строку. Когда кодер считывает очередной символ сообщения, символ добавляется к текущей строке. До тех пор пока текущая строка соответствует какой-либо фразе из словаря, процесс продолжается. Если текущая строка перестает соответствовать какой-либо фразе словаря, то кодер выдает код, состоящий из индекса последнего совпадения и следующего за ним символа, нарушившего совпадение строк. После этого новая фраза, состоящая из индекса совпадения и следующего за ним символа, добавляется в словарь.

Page 13: курсовой проект

Алгоритм LZWАлгоритм кодирования:

Проинициализировать словарь односимвольными фразами; Прочитать первый символ сообщения в текущую фразу w;Шаг алгоритма:

Прочитать очередной символ сообщения К;Если КОНЕЦ_СООБЩЕНИЯ

Выдать код w;ВЫХОД;

Конец ЕслиЕсли фраза wK уже есть в словаре,

Заменить w на код фразы wK;Повторить Шаг алгоритма;

ИначеВыдать код w;Добавить wK в словарь;Повторить Шаг алгоритма;

Конец Если;

Page 14: курсовой проект

Алгоритм LZWАлгоритм декодирования:

КОД = Прочитать первый код сообщения();ПредыдущийКОД = КОД;Выдать символ К, у которого код(К) == КОД;ПоследнийСимвол = КСледующий код:КОД = Прочитать очередной код сообщения();ВходнойКОД = КОД;Если КОНЕЦ_СООБЩЕНИЯ

ВЫХОД; Конец Если;Если Неизвестен(КОД)

Выдать(ПоследнийСимвол)КОД = ПредыдущийКОД ВходнойКОД = код (ПредыдущийКОД, ПоследнийСимвол)

Конец Если;

Page 15: курсовой проект

Алгоритм LZWАлгоритм декодирования (продолжение):

Следующий символ:Если КОД == кoд(wK) В_СТЕК (К);КОД = код(w);Повторить Следующий символ;Иначе если КОД == код(К) Выдать К;ПоследнийСимвол = К;Пока стек не пустВыдать (ИЗ_СТЕКА());Конец пока;Добавить в словарь (Предыдущий КОД, К);ПредыдущийКОД = ВходнойКОД;Повторить СледующийКОД; Конец Если;

Page 16: курсовой проект

Методы контекстного моделирования

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

На основе статистики, собираемой во время обработки информации, метод контекстного моделирования позволяет оценить вероятность появления в текущем контексте произвольного символа или последовательности символов. Оценка вероятности определяет длину кода, который генерируется с использованием алгоритма энтропийного кодирования (метод Хаффмена или арифметическое кодирование).

Page 17: курсовой проект

Методы PPM

PPMAPPMBPPMCPPMZPPMD

PPMPPPMXPPMXCPPM*PPMZ

Page 18: курсовой проект

Методы CRC-кодирования

На практике для обнаружения ошибок в данных

используются алгоритмы построения и анализа

циклических CRC-кодов:

CRC-4;

CRC-8;

CRC-12;

CRC-16;

CRC-32.

Page 19: курсовой проект

Образующие многочлены CRC-кодов

CRC-4: x4 + x + 1

CRC-8: x8 + x2 + x + 1

CRC-12: x12 + x11 + x3 + x2 + x + 1

CRC-16: x16 + x15 + x2 + 1

CRC-16: x16 + x12 + x5 + 1

CRC-32: x32 + x26 + x23 + x22 + x16 + x12 + x11 + +

x10 + x8 + x7 + x5 + x4 + x2 + x + 1

Page 20: курсовой проект

Свойства CRC-кодов1. Общее число символов: n = 2m – 1,

Число информационных символов: k = 2m – m – 2,Число проверочных символов: r = m + 1,Кодовое расстояние: d = 4;

2. все ошибки кратности 3 или меньше обнаруживаются;

3. все ошибки нечетной кратности обнаруживаются;4. все пакеты ошибок l = m + 1 или меньше

обнаруживаются;5. доля необнаруживаемых пакетов ошибок l = m + 2

составляет 2–m;6. доля необнаруживаемых пакетов ошибок l m + 3

составляет 2–(m–1).

Page 21: курсовой проект

Алгоритм CRC-кодирования

Пока (в строке имеются необработанные биты)Индекс = СтаршийБайтРегистра;Регистр = СдвигРегистра OR

НовыеБитыИзСтроки;Регистр = Регистр XOR Таблица [Индекс];

Конец Пока

Page 22: курсовой проект

Модель шифрования C = Ek1(M),

M’ = Dk2(C),где

M –открытый текст,C –криптограмма,E – функция зашифровывания,k1 –ключ зашифровывания, M’ – расшифрованная информация,k2 – ключ расшифровывания,D – функция расшифровывания

Page 23: курсовой проект

Определение ключаПод ключом, согласно ГОСТ 28147-89,

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

Page 24: курсовой проект

Криптостойкость алгоритма шифрования

Алгоритм является криптографически стойким, если не

существует каких-либо методов его вскрытия, кроме

перебора всех возможных вариантов, и

при этом размер ключа алгоритма является достаточно

большим для того, чтобы перебор вариантов стал

невозможным при текущем уровне вычислительной

техники

Page 25: курсовой проект

Классификация алгоритмов шифрования

Алгоритмы симметричного шифрования, в которых

k2 = k1 = k

Алгоритмы асимметричного шифрования, в которых

ключ зашифровывания k1 вычисляется из ключа k2

таким образом, что обратное вычисление невозможно,

например, по формуле

k1 = ak2 mod p,

где a и p – параметры алгоритма

Page 26: курсовой проект

Принцип работы симметричных алгоритмов

Большинство симметричных алгоритмов

работают следующим образом: над шифруемым

текстом выполняется некоторое преобразование с

участием ключа шифрования, которое повторяется

определенное число раз (раундов).

Page 27: курсовой проект

Простейшие симметричные шифры

Шифры простой замены – замена каждого знака письма на другой знак по выбранному правилу.

Шифры замены с множеством символов –замена символа исходного сообщения на любой символ из заданного для него множества символов.

Шифры-перестановки – знаки сообщения специальным образом переставляются между собой

Шифры-перестановки с ключом – порядок перестановок определяется ключом

Page 28: курсовой проект

Алгоритмы асимметричного шифрования

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

Наиболее известный алгоритм RSA основан на применении функции Эйлера для натурального числа и разложении числа на простые сомножители.

Page 29: курсовой проект

Алгоритм разложения натурального числа на простые сомножители

i = 0;k = n;l =2;Пока (k ≠ 1)

Если (k mod l = 0)k = k div l;i = i + 1;ni = l;

Результат: n1, n2, n3, …

ИначеЕсли (l * l > k)

l = k;Иначе

l = l + 1;Конец Если

Конец ЕслиКонец Пока

Page 30: курсовой проект

Задание на курсовой проект

1. Варианты методов сжатия и вид исходных данных приведены в таблице 2.

2. В качестве метода защиты данных от помех использовать CRC-кодирование.

3. Метод криптографической защиты необходимо выбрать и обосновать самостоятельно.

Page 31: курсовой проект

Таблица 2№ Метод сжатия данных1 LZSS

2 LZ77 с адаптивным арифметическим кодирование

3 LZ78 c адаптивным кодированием по Хаффману

4 LZW с адаптивным арифметическим кодированием

5 PPMA с арифметическим кодированием

Вид исходных данныхТекстовые файлы с

художественным произведением на английском языке

Текстовые файлы с художественным произведением на русском языке

Текстовые файлы с программами на языке C++

Текстовые файлы с программами на языке ассемблера

Исполняемые файлы для ОС MS Windows

Page 32: курсовой проект

Таблица 2 (продолжение)№ Метод сжатия данных6 PPMB с арифметическим

кодированием7 PPMC с арифметическим

кодированием

8 PPMD с арифметическим кодированием

9 PPM* с арифметическим кодированием

10 PPMZ с арифметическим кодированием

Вид исходных данныхФайлы драйверов для ОС MS

WindowsТекстовые файлы с научно-

технической информацией на английском языке

Текстовые файлы с научно-технической информацией на русском языке

Документы MS Word

Файлы баз данных MS Access

Page 33: курсовой проект

Таблица 2 (продолжение)№ Метод сжатия данных11 LZSS12 LZ77 с адаптивным

кодированием по Хаффману13 LZ78 с адаптивным

арифметическим кодированием

14 LZW с адаптивным кодированием по Хаффману

15 PPMA с кодированием по Хаффману

Вид исходных данныхФайлы MS ExcelФайлы баз данных MS Access

Документы MS Word

Текстовые файлы с художественным произведением на английском языке

Текстовые файлы с художественным произведением на русском языке

Page 34: курсовой проект

Таблица 2 (продолжение)№ Метод сжатия данных16 PPMB с кодированием по

Хаффману17 PPMC с кодированием по

Хаффману

18 PPMD с кодированием по Хаффману

19 PPM* с кодированием по Хаффману

20 PPMZ с кодированием по Хаффману

Вид исходных данныхТекстовые файлы с

программами на языке C++Текстовые файлы с

программами на языке ассемблера

Исполняемые файлы для ОС MS Windows

Файлы драйверов для ОС MS Windows

Текстовые файлы с научно-технической информацией на английском языке

Page 35: курсовой проект

Таблица 2 (продолжение)№ Метод сжатия данных21 LZ77 с кодированием по

Хаффману

22 LZSS23 LZ77 с арифметическим

кодированием24 LZ78 с арифметическим

кодированием25 LZW с арифметическим

кодированием

Вид исходных данныхТекстовые файлы с научно-

технической информацией на русском языке

Документы MS WordФайлы баз данных MS Access

Файлы MS Excel

Файлы баз данных MS Access

Page 36: курсовой проект

Рекомендуемая литература1. Арапов Д. Пишем упаковщик //Монитор, 1993 – № 1 – С. 16 – 20;2. Бабаш А.В., Шанкин Г.П. Криптография. – М.: СОЛОН-ПРЕСС,

2007;3. Балашов К. Ю. Сжатие информации: анализ методов и подходов.

– Минск, 2000;4. Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия

данных. Устройство архиваторов, сжатие изображений и видео. – М.: ДИАЛОГ–МИФИ, 2002;

5. Вельшенбах М. Криптография на Си и C++ в действии. Учебное пособие. – М.: Издательство Триумф, 2004;

6. Вернер М. Основы кодирования. Учебник для ВУЗов. – М.: Техносфера, 2004;

7. Кудряшов Б.Д. Теория информации: Учебник для вузов. – СПб.: Питер, 2009;

8. Лапонин О.Р. Криптографические основы безопасности // www.intuit.ru;

Page 37: курсовой проект

Рекомендуемая литература (продолжение)

9. Лидовский В.В. Теория информации //www.intuit.ru;10. Мастрюков Д. Алгоритмы сжатия информации. Ч. 1. Сжатие по

Хаффмену //Монитор, 1993. – № 7 – 8 – С. 14 – 20;11. Мастрюков Д. Алгоритмы сжатия информации. Ч. 2.

Арифметическое кодирование //Монитор, 1994 – № 1 – С. 20 – 23;12. Мастрюков Д. Алгоритмы сжатия информации. Ч. 3. Алгоритмы

группы LZ //Монитор, 1994 – № 2 – С. 10 – 13;13. Мастрюков Д. Алгоритмы сжатия информации. Ч. 3. Алгоритмы

группы LZ //Монитор, 1994 – № 3 – С. 8 – 11;14. Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования.

Методы, алгоритмы, применение. - М.: Техносфера, 2005;15. Панасенко С.П. Алгоритмы шифрования. Специальный

справочник. – СПб: БХВ-Петебург, 2009;16. Рябко Б.Я., Фионов А.Н. Основы современной криптографии для

специалистов в информационных технологиях. – М.: Научный мир, 2004;

Page 38: курсовой проект

Рекомендуемая литература (продолжение)

17. Семенюк В. В. Экономное кодирование дискретной информации. – СПб.: СПб ГИТМО (ТУ), 2001;

18. Смарт Г. Криптография. – М.: Техносфера, 2005;19. Смирнов М. А. Обзор применения методов безущербного сжатия

данных в СУБД //www.compression.ru;20. Смирнов М. А. Использование методов сжатия данных без потерь

информации в условиях жестких ограничений на ресурсы устройства-декодера. //www.compression.ru

21. Сэломон Д. Сжатие данных, изображений и звука. – М.: Техносфера, 2004;

22. Фомин А. А. Основы сжатия информации. – СПб.: СПГТУ, 1998.