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

Post on 12-Apr-2017

1.675 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Конец Всегда

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Конец Если;

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

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

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

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

Конец Если;

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

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

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

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

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

Методы PPM

PPMAPPMBPPMCPPMZPPMD

PPMPPPMXPPMXCPPM*PPMZ

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

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

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

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

CRC-4;

CRC-8;

CRC-12;

CRC-16;

CRC-32.

Образующие многочлены 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

Свойства 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).

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

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

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

Конец Пока

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

M’ = Dk2(C),где

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

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

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

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

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

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

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

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

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

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

техники

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

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

k2 = k1 = k

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

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

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

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

k1 = ak2 mod p,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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;Конец Если

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Документы MS Word

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

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

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

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

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

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

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

Документы MS Word

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

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

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

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

Хаффману

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

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

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

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

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

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

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

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

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

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

Хаффману

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

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

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

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

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

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

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

Файлы MS Excel

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

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

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

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

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

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

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

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

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

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

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;

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

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

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

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

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

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

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

top related