Теория кодирования и криптография Курсовой проект
Цель курсового проекта   Приобретение навыков разработки программного обеспечения для решения задач сжатия данных, защиты данных от помех и несанкционированного использования.
Задачи курсового проекта Изучение современных методов сжатия данных, защиты от помех и шифрования данных (методов кодирования информации) Изучение особенностей программной реализации методов кодирования с учетом ограничений на вычислительные ресурсы Реализация алгоритмов кодирования на языке высокого уровня для персонального компьютера под управлением операционной системы семейства  Microsoft Windows
Содержание курсового проекта Задание на курсовой проект Описание целей и задач проектируемого программного обеспечения Описание источника кодируемой информации Описание алгоритмов решения задач Описание примеров выполнения алгоритмов Описание модулей программного обеспечения Руководство по применению программного обеспечения Выводы Список литературы Приложения
Требования к оформлению пояснительной записки По результатам курсового проекта необходимо оформить отчет в виде пояснительной записки объемом 30 – 50 страниц основного текста (без учета приложений) в машинописной форме (шрифт  Times New Roman , 14-й размер, полуторный интервал).
Основные понятия теории сжатия Компрессор  ( кодер)  – программа, которая сжимает исходную информацию. Программа, выполняющая восстановление информации, называется  декомпрессором  ( декодером) . Для объединения кодера и декодера иногда используется понятие  кодек . Метод  неадаптивного  сжатия – метод сжатия, в котором не предусмотрена возможность изменения операций, параметров и настроек в зависимости от характера сжимаемой информации. Метод, в котором предусмотрена возможность изменения операций, параметров и настроек в зависимости от сжимаемой информации, называется методом  адаптивного  сжатия. Если для изменения операций, параметров и настроек предварительно собирается некоторая статистика сжимаемой информации, то метод сжатия называется  полуадаптивным . Метод сжатия называется  локально адаптивным , если в нем предусмотрена возможность изменения параметров в зависимости от локальных особенностей входного файла.
Основные понятия теории сжатия (продолжение) Метод сжатия  без потерь  позволяет восстановить сжатую информацию без искажений. Метод сжатия  с потерями  предусматривает искажение сжимаемой информации для получения требуемых характеристик сжатия. Симметричный  метод сжатия – это метод, при использовании которого кодер и декодер выполняют одни и те же действия, но в противоположных направлениях. Если либо кодер либо декодер выполняет существенно большую работу, то соответствующий метод сжатия называется  асимметричным . Коэффициент сжатия  – величина, получающаяся в результате деления размера сжатого файла на размер исходного (несжатого) файла. Фактор сжатия  – величина, обратная коэффициенту сжатия.
Адаптивное сжатие Алгоритм кодирования: ИнициализироватьМодель(); Пока не конец сообщения Символ = ВзятьСледующийСимвол(); Закодировать (Символ); ОбновитьМодельСимволом (Символ); Конец Пока Алгоритм декодирования: ИнициализироватьМодель(); Пока не конец сжатой информации Символ =  РаскодироватьСледующийСимвол(); ВыдатьСимвол (Символ); ОбновитьМодельСимволом (Символ); Конец Пока
Арифметическое сжатие Алгоритм арифметического кодирования: НижняяГраница = 0.0; ВерхняяГраница= 1.0; Пока ((ОчереднойСимвол = ДайОчереднойСимвол()) != КОНЕЦ)  Интервал = ВерхняяГраница - НижняяГраница;  ВерхняяГраница = НижняяГраница + Интервал *  ВерхняяГраницаИнтервалаДля(ОчереднойСимвол); НижняяГраница = НижняяГраница + Интервал * НижняяГраницаИнтервалаДля(ОчереднойСимвол); Конец Пока  Выдать (НижняяГраница)
Арифметическое сжатие Алгоритм арифметического декодирования: Число = ПрочитатьЧисло(); Всегда Символ =  НайтиСимволВинтервалКоторогоПопадаетЧисло(Число) Выдать (Символ) Интервал = ВерхняяГраницаИнтервалаДля (Символ) –  НижняяГраницаИнтервалаДля (Символ);  Число = Число - НижняяГраницаИнтервалаДля(Символ); Число = Число / Интервал; Конец Всегда
Алгоритм  LZ77 В качестве модели данных LZ77 использует «скользящее» по сообщению окно, разделенное на две неравные части. Первая, большая по размеру, включает уже просмотренную часть сообщения. Вторая, намного меньшая, является буфером, содержащим еще не закодированные символы входного потока. Алгоритм пытается найти в словаре фрагмент, совпадающий с содержимым буфера. Алгоритм LZ77 выдает коды, состоящие из трех элементов: смещение в словаре относительно его начала подстроки, совпадающей с содержимым буфера; длина подстроки; первый символ в буфере, следующий за подстрокой. После выдачи кода алгоритм сдвигает все содержимое окна на длину совпадающей подстроки + 1 символ влево и одновременно втягивает соответствующее количество очередных символов сообщения. Если совпадение не обнаружено, то алгоритм выдает код   <0, 0, первый символ в буфере> и продолжает свою работу.
Алгоритм  LZ78 В  LZ 78 и кодер, и декодер начинают работу с «почти пустого» словаря, содержащего только одну закодированную строку — НОЛЬ-строку. Когда кодер считывает очередной символ сообщения, символ добавляется к текущей строке. До тех пор пока текущая строка соответствует какой-либо фразе из словаря, процесс продолжается. Если текущая строка перестает соответствовать какой-либо фразе словаря, то кодер выдает код, состоящий из индекса последнего совпадения и следующего за ним символа, нарушившего совпадение строк. После этого новая фраза, состоящая из индекса совпадения и следующего за ним символа, добавляется в словарь.
Алгоритм  LZW Алгоритм кодирования: Проинициализировать словарь односимвольными фразами;  Прочитать первый символ сообщения в текущую фразу  w ; Шаг алгоритма: Прочитать очередной символ сообщения  К ; Если КОНЕЦ_СООБЩЕНИЯ Выдать код  w ; ВЫХОД; Конец Если Если фраза  wK  уже есть в словаре, Заменить  w  на код фразы  wK ; Повторить Шаг алгоритма; Иначе Выдать код  w ; Добавить  wK  в словарь; Повторить Шаг алгоритма; Конец Если;
Алгоритм  LZW Алгоритм декодирования: КОД = Прочитать первый код сообщения(); ПредыдущийКОД = КОД; Выдать символ  К , у которого код( К ) == КОД; ПоследнийСимвол =  К Следующий код: КОД = Прочитать очередной код сообщения(); ВходнойКОД = КОД; Если КОНЕЦ_СООБЩЕНИЯ ВЫХОД;  Конец Если; Если Неизвестен(КОД)  Выдать(ПоследнийСимвол) КОД = ПредыдущийКОД  ВходнойКОД = код (ПредыдущийКОД, ПоследнийСимвол)  Конец Если;
Алгоритм  LZW Алгоритм декодирования (продолжение): Следующий символ: Если КОД == кoд( w K )  В_СТЕК ( К ); КОД = код( w ); Повторить Следующий символ; Иначе если КОД == код( К )  Выдать  К ; ПоследнийСимвол =  К ; Пока стек не пуст Выдать (ИЗ_СТЕКА()); Конец пока; Добавить в словарь (Предыдущий КОД,  К ); ПредыдущийКОД = ВходнойКОД; Повторить СледующийКОД;  Конец Если;
Методы контекстного моделирования Последовательность символов, непосредственно предшествующую некоторому символу в информационном сообщении, принято называть  контекстом этого символа , а длину этой последовательности –  порядком контекста . На основе статистики, собираемой во время обработки информации, метод контекстного моделирования позволяет оценить вероятность появления в текущем контексте произвольного символа или последовательности символов. Оценка вероятности определяет длину кода, который генерируется с использованием алгоритма энтропийного кодирования (метод Хаффмена или арифметическое кодирование).
Методы  PPM PPMA PPMB PPMC PPMZ PPMD PPMP PPMX PPMXC PPM* PPMZ
Методы  CRC- кодирования На практике для обнаружения ошибок в данных используются алгоритмы построения и анализа циклических  CRC -кодов: CRC -4; CRC -8; CRC -12; CRC -16; CRC -32.
Образующие многочлены  CRC- кодов CRC -4:  x 4  +  x  + 1 CRC -8:  x 8  +  x 2  +  x  + 1 CRC -12:  x 12  +  x 11  +  x 3  +  x 2  +  x  + 1 CRC -16:  x 16  +  x 15  +  x 2  + 1 CRC-16 :  x 16  +  x 12  +  x 5  + 1 CRC -32:   x 32  +  x 26  +  x 23  +  x 22  +  x 16  +  x 12  +  x 11  +  +  x 10  +  x 8  +  x 7  +  x 5  +  x 4  +  x 2  +  x  + 1
Свойства  CRC- кодов Общее число символов:   n   = 2 m  – 1, Число информационных символов:  k  = 2 m  –  m   – 2, Число проверочных символов:  r  =  m  + 1, Кодовое расстояние:  d  = 4; все ошибки кратности 3 или меньше обнаруживаются; все ошибки нечетной кратности обнаруживаются; все пакеты ошибок  l  =  m  + 1 или меньше обнаруживаются; доля необнаруживаемых пакетов ошибок  l  =  m  + 2 составляет 2 – m ; доля необнаруживаемых пакетов ошибок  l      m  + 3 составляет 2 –( m –1) .
Алгоритм  CRC- кодирования Пока (в строке имеются необработанные биты) Индекс = СтаршийБайтРегистра; Регистр = СдвигРегистра OR НовыеБитыИзСтроки; Регистр = Регистр  XOR  Таблица [Индекс]; Конец Пока
Модель шифрования   C  =  E k 1 ( M ),   M ’ =  D k 2 ( C ), где M   –открытый текст, C   –криптограмма, E  – функция зашифровывания, k 1 –ключ зашифровывания,   M ’ – расшифрованная информация, k 2 – ключ расшифровывания, D  – функция расшифровывания
Определение ключа Под ключом, согласно ГОСТ 28147-89, понимается конкретное секретное состояние некоторых параметров алгоритма криптографического преобразования, обеспечивающее выбор одного преобразования из совокупности всевозможных для данного алгоритма преобразований, т.е. ключ – это уникальный элемент, с помощью которого можно варьировать результат работы алгоритма шифрования.
Криптостойкость алгоритма шифрования Алгоритм является криптографически стойким, если не существует каких-либо методов его вскрытия, кроме перебора всех возможных вариантов, и при этом размер ключа алгоритма является достаточно большим для того, чтобы перебор вариантов стал невозможным при текущем уровне вычислительной техники
Классификация алгоритмов шифрования Алгоритмы  симметричного шифрования, в которых  k 2 =  k 1 =  k Алгоритмы  асимметричного шифрования, в которых ключ зашифровывания  k 1 вычисляется из ключа  k 2 таким образом, что обратное вычисление невозможно, например, по формуле k 1 =  a k 2  mod  p , где  a   и  p  – параметры алгоритма
Принцип работы симметричных алгоритмов Большинство симметричных алгоритмов работают следующим образом: над шифруемым текстом выполняется некоторое преобразование с участием ключа шифрования, которое повторяется определенное число раз (раундов).
Простейшие симметричные шифры Шифры простой замены – замена каждого знака письма на другой знак по выбранному правилу. Шифры замены с множеством символов –замена символа исходного сообщения на любой символ из заданного для него множества символов. Шифры-перестановки – знаки сообщения специальным образом переставляются между собой Шифры-перестановки с ключом – порядок перестановок определяется ключом
Алгоритмы асимметричного шифрования В основе алгоритма шифрования с открытым ключом лежит идея использования легко осуществимого на стадии шифрования математического преобразования, которое сложно было бы обратить (без знания специальной секретной информации) для   реализации второй стадии алгоритма, т. е. расшифрования. Преобразование, обладающее указанным свойством, называется односторонней функцией или функцией-ловушкой. Наиболее известный алгоритм  RSA  основан на применении функции Эйлера для натурального числа и разложении числа на простые сомножители.
Алгоритм разложения натурального числа на простые сомножители i  =  0 ; k   =  n ; l  =2; Пока ( k   ≠ 1) Если ( k  mod  l  = 0 ) k  =  k  div  l ; i  =  i  + 1; n i  =  l ;  Результат:  n 1 ,  n 2 ,  n 3 , … Иначе Если ( l   *  l   >  k ) l   =  k ; Иначе l   =  l  + 1; Конец Если Конец Если Конец Пока
Задание на курсовой проект Варианты методов сжатия и вид исходных данных приведены в таблице 2. В качестве метода защиты данных от помех использовать  CRC -кодирование. Метод криптографической защиты необходимо выбрать и обосновать самостоятельно.
Таблица 2 № Метод сжатия данных 1 LZSS 2 LZ77 с адаптивным арифметическим кодирование 3 LZ78 c адаптивным кодированием по Хаффману 4 LZW с адаптивным арифметическим кодированием 5 PPMA с арифметическим кодированием Вид исходных данных Текстовые файлы с художественным произведением на английском языке Текстовые файлы с художественным произведением на русском языке Текстовые файлы с программами на языке C++ Текстовые файлы с программами на языке ассемблера Исполняемые файлы для ОС MS Windows
Таблица 2 (продолжение) № Метод сжатия данных 6 PPMB с арифметическим кодированием PPMC с арифметическим кодированием PPMD с арифметическим кодированием 9 PPM* с арифметическим кодированием 10 PPMZ  с арифметическим кодированием Вид исходных данных Файлы драйверов для ОС MS Windows Текстовые файлы с научно-технической информацией на английском языке Текстовые файлы с научно-технической информацией на русском языке Документы MS Word Файлы баз данных MS Access
Таблица 2 (продолжение) № Метод сжатия данных 11 LZSS 12 LZ77 с адаптивным кодированием по Хаффману LZ78 с адаптивным арифметическим кодированием LZW с адаптивным кодированием по Хаффману 15 PPMA с кодированием по Хаффману Вид исходных данных Файлы MS Excel Файлы баз данных MS Access Документы MS Word Текстовые файлы с художественным произведением на английском языке Текстовые файлы с художественным произведением на русском языке
Таблица 2 (продолжение) № Метод сжатия данных 16 PPMB с кодированием по Хаффману PPMC с кодированием по Хаффману 18 PPMD с кодированием по Хаффману 19 PPM* с кодированием по Хаффману 20 PPMZ  с кодированием по Хаффману Вид исходных данных Текстовые файлы с программами на языке C++ Текстовые файлы с программами на языке ассемблера Исполняемые файлы для ОС MS Windows Файлы драйверов для ОС MS Windows Текстовые файлы с научно-технической информацией на английском языке
Таблица 2 (продолжение) № Метод сжатия данных LZ77 с кодированием по Хаффману 22 LZSS 23 LZ77 с арифметическим кодированием 24 LZ78 с арифметическим кодированием 25 LZW с арифметическим кодированием Вид исходных данных Текстовые файлы с научно-технической информацией на русском языке Документы MS Word Файлы баз данных MS Access Файлы MS Excel Файлы баз данных MS Access
Рекомендуемая литература Арапов Д. Пишем упаковщик //Монитор, 1993 – № 1 – С. 16 – 20; Бабаш А.В., Шанкин Г.П. Криптография. – М.: СОЛОН-ПРЕСС, 2007; Балашов К. Ю. Сжатие информации: анализ методов и подходов. – Минск, 2000; Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео. – М.: ДИАЛОГ–МИФИ, 2002; Вельшенбах М. Криптография на Си и  C ++ в действии. Учебное пособие. – М.: Издательство Триумф, 2004; Вернер М. Основы кодирования. Учебник для ВУЗов. – М.: Техносфера, 2004; Кудряшов Б.Д. Теория информации: Учебник для вузов. – СПб.: Питер, 2009; Лапонин О.Р. Криптографические основы безопасности //  www . intuit . ru ;
Рекомендуемая литература (продолжение) Лидовский В.В. Теория информации // www . intuit . ru ; Мастрюков Д. Алгоритмы сжатия информации. Ч. 1. Сжатие по Хаффмену //Монитор, 1993. – № 7 – 8 – С. 14 – 20; Мастрюков Д. Алгоритмы сжатия информации. Ч. 2. Арифметическое кодирование //Монитор, 1994 – № 1 – С. 20 – 23; Мастрюков Д. Алгоритмы сжатия информации. Ч. 3. Алгоритмы группы  LZ  //Монитор, 1994 – № 2 – С. 10 – 13; Мастрюков Д. Алгоритмы сжатия информации. Ч. 3. Алгоритмы группы  LZ  //Монитор, 1994 – № 3 – С. 8 – 11; Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. - М.: Техносфера, 2005; Панасенко С.П. Алгоритмы шифрования. Специальный справочник. – СПб: БХВ-Петебург, 2009; Рябко Б.Я., Фионов А.Н. Основы современной криптографии для специалистов в информационных технологиях. – М.: Научный мир, 2004;
Рекомендуемая литература (продолжение) Семенюк В. В. Экономное кодирование дискретной информации. – СПб.: СПб ГИТМО (ТУ), 2001; Смарт Г. Криптография. – М.: Техносфера, 2005; Смирнов М. А. Обзор применения методов безущербного сжатия данных в СУБД // www . compression . ru ; Смирнов М. А. Использование методов сжатия данных без потерь информации в условиях жестких ограничений на ресурсы устройства-декодера. // www . compression . ru Сэломон Д. Сжатие данных, изображений и звука. – М.: Техносфера, 2004; Фомин А. А. Основы сжатия информации. – СПб.: СПГТУ, 1998.

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

  • 1.
    Теория кодирования икриптография Курсовой проект
  • 2.
    Цель курсового проекта Приобретение навыков разработки программного обеспечения для решения задач сжатия данных, защиты данных от помех и несанкционированного использования.
  • 3.
    Задачи курсового проектаИзучение современных методов сжатия данных, защиты от помех и шифрования данных (методов кодирования информации) Изучение особенностей программной реализации методов кодирования с учетом ограничений на вычислительные ресурсы Реализация алгоритмов кодирования на языке высокого уровня для персонального компьютера под управлением операционной системы семейства Microsoft Windows
  • 4.
    Содержание курсового проектаЗадание на курсовой проект Описание целей и задач проектируемого программного обеспечения Описание источника кодируемой информации Описание алгоритмов решения задач Описание примеров выполнения алгоритмов Описание модулей программного обеспечения Руководство по применению программного обеспечения Выводы Список литературы Приложения
  • 5.
    Требования к оформлениюпояснительной записки По результатам курсового проекта необходимо оформить отчет в виде пояснительной записки объемом 30 – 50 страниц основного текста (без учета приложений) в машинописной форме (шрифт Times New Roman , 14-й размер, полуторный интервал).
  • 6.
    Основные понятия теориисжатия Компрессор ( кодер) – программа, которая сжимает исходную информацию. Программа, выполняющая восстановление информации, называется декомпрессором ( декодером) . Для объединения кодера и декодера иногда используется понятие кодек . Метод неадаптивного сжатия – метод сжатия, в котором не предусмотрена возможность изменения операций, параметров и настроек в зависимости от характера сжимаемой информации. Метод, в котором предусмотрена возможность изменения операций, параметров и настроек в зависимости от сжимаемой информации, называется методом адаптивного сжатия. Если для изменения операций, параметров и настроек предварительно собирается некоторая статистика сжимаемой информации, то метод сжатия называется полуадаптивным . Метод сжатия называется локально адаптивным , если в нем предусмотрена возможность изменения параметров в зависимости от локальных особенностей входного файла.
  • 7.
    Основные понятия теориисжатия (продолжение) Метод сжатия без потерь позволяет восстановить сжатую информацию без искажений. Метод сжатия с потерями предусматривает искажение сжимаемой информации для получения требуемых характеристик сжатия. Симметричный метод сжатия – это метод, при использовании которого кодер и декодер выполняют одни и те же действия, но в противоположных направлениях. Если либо кодер либо декодер выполняет существенно большую работу, то соответствующий метод сжатия называется асимметричным . Коэффициент сжатия – величина, получающаяся в результате деления размера сжатого файла на размер исходного (несжатого) файла. Фактор сжатия – величина, обратная коэффициенту сжатия.
  • 8.
    Адаптивное сжатие Алгоритмкодирования: ИнициализироватьМодель(); Пока не конец сообщения Символ = ВзятьСледующийСимвол(); Закодировать (Символ); ОбновитьМодельСимволом (Символ); Конец Пока Алгоритм декодирования: ИнициализироватьМодель(); Пока не конец сжатой информации Символ = РаскодироватьСледующийСимвол(); ВыдатьСимвол (Символ); ОбновитьМодельСимволом (Символ); Конец Пока
  • 9.
    Арифметическое сжатие Алгоритмарифметического кодирования: НижняяГраница = 0.0; ВерхняяГраница= 1.0; Пока ((ОчереднойСимвол = ДайОчереднойСимвол()) != КОНЕЦ) Интервал = ВерхняяГраница - НижняяГраница; ВерхняяГраница = НижняяГраница + Интервал * ВерхняяГраницаИнтервалаДля(ОчереднойСимвол); НижняяГраница = НижняяГраница + Интервал * НижняяГраницаИнтервалаДля(ОчереднойСимвол); Конец Пока Выдать (НижняяГраница)
  • 10.
    Арифметическое сжатие Алгоритмарифметического декодирования: Число = ПрочитатьЧисло(); Всегда Символ = НайтиСимволВинтервалКоторогоПопадаетЧисло(Число) Выдать (Символ) Интервал = ВерхняяГраницаИнтервалаДля (Символ) – НижняяГраницаИнтервалаДля (Символ); Число = Число - НижняяГраницаИнтервалаДля(Символ); Число = Число / Интервал; Конец Всегда
  • 11.
    Алгоритм LZ77В качестве модели данных LZ77 использует «скользящее» по сообщению окно, разделенное на две неравные части. Первая, большая по размеру, включает уже просмотренную часть сообщения. Вторая, намного меньшая, является буфером, содержащим еще не закодированные символы входного потока. Алгоритм пытается найти в словаре фрагмент, совпадающий с содержимым буфера. Алгоритм LZ77 выдает коды, состоящие из трех элементов: смещение в словаре относительно его начала подстроки, совпадающей с содержимым буфера; длина подстроки; первый символ в буфере, следующий за подстрокой. После выдачи кода алгоритм сдвигает все содержимое окна на длину совпадающей подстроки + 1 символ влево и одновременно втягивает соответствующее количество очередных символов сообщения. Если совпадение не обнаружено, то алгоритм выдает код <0, 0, первый символ в буфере> и продолжает свою работу.
  • 12.
    Алгоритм LZ78В LZ 78 и кодер, и декодер начинают работу с «почти пустого» словаря, содержащего только одну закодированную строку — НОЛЬ-строку. Когда кодер считывает очередной символ сообщения, символ добавляется к текущей строке. До тех пор пока текущая строка соответствует какой-либо фразе из словаря, процесс продолжается. Если текущая строка перестает соответствовать какой-либо фразе словаря, то кодер выдает код, состоящий из индекса последнего совпадения и следующего за ним символа, нарушившего совпадение строк. После этого новая фраза, состоящая из индекса совпадения и следующего за ним символа, добавляется в словарь.
  • 13.
    Алгоритм LZWАлгоритм кодирования: Проинициализировать словарь односимвольными фразами; Прочитать первый символ сообщения в текущую фразу w ; Шаг алгоритма: Прочитать очередной символ сообщения К ; Если КОНЕЦ_СООБЩЕНИЯ Выдать код w ; ВЫХОД; Конец Если Если фраза wK уже есть в словаре, Заменить w на код фразы wK ; Повторить Шаг алгоритма; Иначе Выдать код w ; Добавить wK в словарь; Повторить Шаг алгоритма; Конец Если;
  • 14.
    Алгоритм LZWАлгоритм декодирования: КОД = Прочитать первый код сообщения(); ПредыдущийКОД = КОД; Выдать символ К , у которого код( К ) == КОД; ПоследнийСимвол = К Следующий код: КОД = Прочитать очередной код сообщения(); ВходнойКОД = КОД; Если КОНЕЦ_СООБЩЕНИЯ ВЫХОД; Конец Если; Если Неизвестен(КОД) Выдать(ПоследнийСимвол) КОД = ПредыдущийКОД ВходнойКОД = код (ПредыдущийКОД, ПоследнийСимвол) Конец Если;
  • 15.
    Алгоритм LZWАлгоритм декодирования (продолжение): Следующий символ: Если КОД == кoд( w K ) В_СТЕК ( К ); КОД = код( w ); Повторить Следующий символ; Иначе если КОД == код( К ) Выдать К ; ПоследнийСимвол = К ; Пока стек не пуст Выдать (ИЗ_СТЕКА()); Конец пока; Добавить в словарь (Предыдущий КОД, К ); ПредыдущийКОД = ВходнойКОД; Повторить СледующийКОД; Конец Если;
  • 16.
    Методы контекстного моделированияПоследовательность символов, непосредственно предшествующую некоторому символу в информационном сообщении, принято называть контекстом этого символа , а длину этой последовательности – порядком контекста . На основе статистики, собираемой во время обработки информации, метод контекстного моделирования позволяет оценить вероятность появления в текущем контексте произвольного символа или последовательности символов. Оценка вероятности определяет длину кода, который генерируется с использованием алгоритма энтропийного кодирования (метод Хаффмена или арифметическое кодирование).
  • 17.
    Методы PPMPPMA PPMB PPMC PPMZ PPMD PPMP PPMX PPMXC PPM* PPMZ
  • 18.
    Методы CRC-кодирования На практике для обнаружения ошибок в данных используются алгоритмы построения и анализа циклических CRC -кодов: CRC -4; CRC -8; CRC -12; CRC -16; CRC -32.
  • 19.
    Образующие многочлены CRC- кодов CRC -4: x 4 + x + 1 CRC -8: x 8 + x 2 + x + 1 CRC -12: x 12 + x 11 + x 3 + x 2 + x + 1 CRC -16: x 16 + x 15 + x 2 + 1 CRC-16 : x 16 + x 12 + x 5 + 1 CRC -32: x 32 + x 26 + x 23 + x 22 + x 16 + x 12 + x 11 + + x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1
  • 20.
    Свойства CRC-кодов Общее число символов: n = 2 m – 1, Число информационных символов: k = 2 m – m – 2, Число проверочных символов: r = m + 1, Кодовое расстояние: d = 4; все ошибки кратности 3 или меньше обнаруживаются; все ошибки нечетной кратности обнаруживаются; все пакеты ошибок l = m + 1 или меньше обнаруживаются; доля необнаруживаемых пакетов ошибок l = m + 2 составляет 2 – m ; доля необнаруживаемых пакетов ошибок l  m + 3 составляет 2 –( m –1) .
  • 21.
    Алгоритм CRC-кодирования Пока (в строке имеются необработанные биты) Индекс = СтаршийБайтРегистра; Регистр = СдвигРегистра OR НовыеБитыИзСтроки; Регистр = Регистр XOR Таблица [Индекс]; Конец Пока
  • 22.
    Модель шифрования C = E k 1 ( M ), M ’ = D k 2 ( C ), где M –открытый текст, C –криптограмма, E – функция зашифровывания, k 1 –ключ зашифровывания, M ’ – расшифрованная информация, k 2 – ключ расшифровывания, D – функция расшифровывания
  • 23.
    Определение ключа Подключом, согласно ГОСТ 28147-89, понимается конкретное секретное состояние некоторых параметров алгоритма криптографического преобразования, обеспечивающее выбор одного преобразования из совокупности всевозможных для данного алгоритма преобразований, т.е. ключ – это уникальный элемент, с помощью которого можно варьировать результат работы алгоритма шифрования.
  • 24.
    Криптостойкость алгоритма шифрованияАлгоритм является криптографически стойким, если не существует каких-либо методов его вскрытия, кроме перебора всех возможных вариантов, и при этом размер ключа алгоритма является достаточно большим для того, чтобы перебор вариантов стал невозможным при текущем уровне вычислительной техники
  • 25.
    Классификация алгоритмов шифрованияАлгоритмы симметричного шифрования, в которых k 2 = k 1 = k Алгоритмы асимметричного шифрования, в которых ключ зашифровывания k 1 вычисляется из ключа k 2 таким образом, что обратное вычисление невозможно, например, по формуле k 1 = a k 2 mod p , где a и p – параметры алгоритма
  • 26.
    Принцип работы симметричныхалгоритмов Большинство симметричных алгоритмов работают следующим образом: над шифруемым текстом выполняется некоторое преобразование с участием ключа шифрования, которое повторяется определенное число раз (раундов).
  • 27.
    Простейшие симметричные шифрыШифры простой замены – замена каждого знака письма на другой знак по выбранному правилу. Шифры замены с множеством символов –замена символа исходного сообщения на любой символ из заданного для него множества символов. Шифры-перестановки – знаки сообщения специальным образом переставляются между собой Шифры-перестановки с ключом – порядок перестановок определяется ключом
  • 28.
    Алгоритмы асимметричного шифрованияВ основе алгоритма шифрования с открытым ключом лежит идея использования легко осуществимого на стадии шифрования математического преобразования, которое сложно было бы обратить (без знания специальной секретной информации) для реализации второй стадии алгоритма, т. е. расшифрования. Преобразование, обладающее указанным свойством, называется односторонней функцией или функцией-ловушкой. Наиболее известный алгоритм RSA основан на применении функции Эйлера для натурального числа и разложении числа на простые сомножители.
  • 29.
    Алгоритм разложения натуральногочисла на простые сомножители i = 0 ; k = n ; l =2; Пока ( k ≠ 1) Если ( k mod l = 0 ) k = k div l ; i = i + 1; n i = l ; Результат: n 1 , n 2 , n 3 , … Иначе Если ( l * l > k ) l = k ; Иначе l = l + 1; Конец Если Конец Если Конец Пока
  • 30.
    Задание на курсовойпроект Варианты методов сжатия и вид исходных данных приведены в таблице 2. В качестве метода защиты данных от помех использовать CRC -кодирование. Метод криптографической защиты необходимо выбрать и обосновать самостоятельно.
  • 31.
    Таблица 2 №Метод сжатия данных 1 LZSS 2 LZ77 с адаптивным арифметическим кодирование 3 LZ78 c адаптивным кодированием по Хаффману 4 LZW с адаптивным арифметическим кодированием 5 PPMA с арифметическим кодированием Вид исходных данных Текстовые файлы с художественным произведением на английском языке Текстовые файлы с художественным произведением на русском языке Текстовые файлы с программами на языке C++ Текстовые файлы с программами на языке ассемблера Исполняемые файлы для ОС MS Windows
  • 32.
    Таблица 2 (продолжение)№ Метод сжатия данных 6 PPMB с арифметическим кодированием PPMC с арифметическим кодированием PPMD с арифметическим кодированием 9 PPM* с арифметическим кодированием 10 PPMZ с арифметическим кодированием Вид исходных данных Файлы драйверов для ОС MS Windows Текстовые файлы с научно-технической информацией на английском языке Текстовые файлы с научно-технической информацией на русском языке Документы MS Word Файлы баз данных MS Access
  • 33.
    Таблица 2 (продолжение)№ Метод сжатия данных 11 LZSS 12 LZ77 с адаптивным кодированием по Хаффману LZ78 с адаптивным арифметическим кодированием LZW с адаптивным кодированием по Хаффману 15 PPMA с кодированием по Хаффману Вид исходных данных Файлы MS Excel Файлы баз данных MS Access Документы MS Word Текстовые файлы с художественным произведением на английском языке Текстовые файлы с художественным произведением на русском языке
  • 34.
    Таблица 2 (продолжение)№ Метод сжатия данных 16 PPMB с кодированием по Хаффману PPMC с кодированием по Хаффману 18 PPMD с кодированием по Хаффману 19 PPM* с кодированием по Хаффману 20 PPMZ с кодированием по Хаффману Вид исходных данных Текстовые файлы с программами на языке C++ Текстовые файлы с программами на языке ассемблера Исполняемые файлы для ОС MS Windows Файлы драйверов для ОС MS Windows Текстовые файлы с научно-технической информацией на английском языке
  • 35.
    Таблица 2 (продолжение)№ Метод сжатия данных LZ77 с кодированием по Хаффману 22 LZSS 23 LZ77 с арифметическим кодированием 24 LZ78 с арифметическим кодированием 25 LZW с арифметическим кодированием Вид исходных данных Текстовые файлы с научно-технической информацией на русском языке Документы MS Word Файлы баз данных MS Access Файлы MS Excel Файлы баз данных MS Access
  • 36.
    Рекомендуемая литература АраповД. Пишем упаковщик //Монитор, 1993 – № 1 – С. 16 – 20; Бабаш А.В., Шанкин Г.П. Криптография. – М.: СОЛОН-ПРЕСС, 2007; Балашов К. Ю. Сжатие информации: анализ методов и подходов. – Минск, 2000; Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео. – М.: ДИАЛОГ–МИФИ, 2002; Вельшенбах М. Криптография на Си и C ++ в действии. Учебное пособие. – М.: Издательство Триумф, 2004; Вернер М. Основы кодирования. Учебник для ВУЗов. – М.: Техносфера, 2004; Кудряшов Б.Д. Теория информации: Учебник для вузов. – СПб.: Питер, 2009; Лапонин О.Р. Криптографические основы безопасности // www . intuit . ru ;
  • 37.
    Рекомендуемая литература (продолжение)Лидовский В.В. Теория информации // www . intuit . ru ; Мастрюков Д. Алгоритмы сжатия информации. Ч. 1. Сжатие по Хаффмену //Монитор, 1993. – № 7 – 8 – С. 14 – 20; Мастрюков Д. Алгоритмы сжатия информации. Ч. 2. Арифметическое кодирование //Монитор, 1994 – № 1 – С. 20 – 23; Мастрюков Д. Алгоритмы сжатия информации. Ч. 3. Алгоритмы группы LZ //Монитор, 1994 – № 2 – С. 10 – 13; Мастрюков Д. Алгоритмы сжатия информации. Ч. 3. Алгоритмы группы LZ //Монитор, 1994 – № 3 – С. 8 – 11; Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. - М.: Техносфера, 2005; Панасенко С.П. Алгоритмы шифрования. Специальный справочник. – СПб: БХВ-Петебург, 2009; Рябко Б.Я., Фионов А.Н. Основы современной криптографии для специалистов в информационных технологиях. – М.: Научный мир, 2004;
  • 38.
    Рекомендуемая литература (продолжение)Семенюк В. В. Экономное кодирование дискретной информации. – СПб.: СПб ГИТМО (ТУ), 2001; Смарт Г. Криптография. – М.: Техносфера, 2005; Смирнов М. А. Обзор применения методов безущербного сжатия данных в СУБД // www . compression . ru ; Смирнов М. А. Использование методов сжатия данных без потерь информации в условиях жестких ограничений на ресурсы устройства-декодера. // www . compression . ru Сэломон Д. Сжатие данных, изображений и звука. – М.: Техносфера, 2004; Фомин А. А. Основы сжатия информации. – СПб.: СПГТУ, 1998.