Тема урока: «Использование корректирующих кодов при защите информации»
Цели урока:
Образовательные:
Углубить теоретические знания по теме «Программно-аппаратные средства обеспечения информационной безопасности».
Способствовать применению знаний в решении практических задач по обеспечению информационной безопасности.
Развивающие:
Развивать навыки индивидуальной и групповой практической работы.
Развивать способность логически рассуждать, делать выводы.
Воспитательные:
Формировать умения работать в коллективе и команде, эффективно общаться с коллегами, руководством, клиентами.
Методические:
Познакомить педколлектив с групповой формой организации деятельности студентов на уроке, освоением методов самостоятельного анализа полученной на уроке информации и самостоятельного решения задач.
Тип урока: урок применения знаний, умений, навыков на практике
Методы проведения:
решение практических задач с использованием УМК (лабораторного практикума с CD);
технология парного программирования;
технология разноуровневого обучения
Ход урока
Организационный момент.
Приветствие, проверка отсутствующих, наличия письменных принадлежностей, готовности к уроку.
Мотивация учебной деятельности студентов
Осмысление значимости выполняемой работы по изучению темы студентами для осуществления профессиональной деятельности
Актуализация опорных знаний
Фронтальный опрос:
Перечислите методы контроля целостности программ и данных
Поясните, в чем заключается метод использования контрольного суммирования
Поясните, в чем заключается метод использования хэш-функции
Перечислите виды ошибок, возникающих при передаче информации
Поясните, что такое систематический код (корректирующий код)
Поясните, в чем заключается идея метода помехоустойчивого кодирования
После окончания опроса преподаватель устно отмечает активно работающих студентов, дает оценку.
Если студент не отвечает на вопрос, ему помогают товарищи.
Ознакомление с методом корректирующих кодов, инструкция по решению задач
Работа с презентацией, методическими рекомендациями к выполнению лабораторной работы:
Код с проверкой на четность
Код Хэмминга: решение задачи на построение кода, проверка правильности, внесение ошибки, исправление ошибки
Примеры практического использования метода корректирующих кодов:
Сообщение «Разработки Хэмминга» - Багдасарян А.
Сообщение «Примеры программной реализации корректирующих кодов» - Собко Н.
Методические рекомендации к выполнению лабораторной работы представлены в Приложении 1.
Выполнение лабораторной работы.
Самостоятельная работа студентов по группам по решению задач на построение кода Хэмминга – 25 мин
Студенты решают задачу №1 лабораторной работы «Корректирующие коды. Коды Хэмминга» по парам в 5 вариантах. Работа студентов на ПК.
Проверка выполнения в тетрадях с пояснением метода; замечания, корректировка, оценка.
Один любой вариант студенты представляют на демонстрационном экране с пояснением алгоритма решения.
Решения задач представлены в Приложении 2.
Индивидуальная самостоятельная работа студентов по решению задач обнаружения ошибки в полученном сообщении и ее исправления – 20 мин.
Студенты решают задачу №2 лабораторной работы «Корректирующие коды. Коды Хэмминга» индивидуально в 3 вариантах. Работа студентов на ПК.
Проверка выполнения в тетрадях с пояснением метода; замечания, корректировка, оценка.
Один любой вариант студенты представляют на демонстрационном экране с пояснением алгоритма решения.
Решения задач представлены в Приложении 2
Дополнительное задание представлено в Приложении 4
Проверка выполнения заданий
Обсуждение работ по контрольным вопросам в лабораторной работе
Контрольные вопросы:
Охарактеризуйте понятие «корректирующий код»
Приведите алгоритм построения кода Хэмминга
К какому виду кодирования относится метод Хэмминга?
Поясните алгоритм вычисления функции H(X)
Каким образом можно установить наличие ошибки в сообщении Х? Как определить место ошибки?
Какие ошибки можно исправить с помощью кода Хэмминга?
Подведение итогов – 5 мин.
Подведение итогов: преподаватель подводит итог урока, оценивает работу каждого студента с последующей самооценкой студента.
Критерии оценки различных видов работ представлены в Приложении 3
Домашнее задание:
Подготовить сообщения о методах программной реализации кодов с проверкой на нечетность и других модификаций корректирующих кодов
Рефлексия:
Студенты по очереди высказываются одним предложением, выбирая начало фразы:
сегодня я узнал…
было интересно…
было трудно…
я выполнял задания…
я понял, что…
теперь я могу…
я приобрел…
я научился…
у меня получилось …
Приложение 1
Лабораторная работа
Корректирующие коды. Коды Хэмминга
Цель: ознакомиться с общими принципами построения и использования корректирующих кодов для контроля целостности информации, распространяемой по телекоммуникационным каналам, изучить метод кодирования по Хэммингу
Кодом называется система условных знаков (символов) для передачи, обработки и хранения (запоминания) различной информации.
Предметом исследования теории кодирования являются отображения конечных или счетных множеств объектов произвольной природы в множества последовательностей из цифр 0, 1,…r-1, где r – некоторое целое положительное число (в частности, r = 2). Такие отображения называются кодированиями.
Большинство задач теории кодирования укладывается в следующую схему:
Для заданного множества объектов рассматривается класс кодирований, обладающих определенными свойствами. Требуется построить кодирование из рассматриваемого класса, оптимальное в некотором заранее заданном смысле. Обычно критерий оптимальности кодирования так или иначе связан с минимизацией длин кодов, в то время как требуемые свойства кодирований могут быть весьма разнообразными. Среди таких свойств:
существование однозначного обратного отображения (декодирования),
возможность исправления при декодировании ошибок различного типа,
возможность простой реализации (простота алгоритма) кодирования и декодирования и т.п.
Некоторые виды преобразований двоичных слов, называемых ошибками:
Одиночная ошибка вида 01 (10) в слове X - замещение символа,
Одиночная ошибка вида 0 (1) в слове X - удаление одного из символов 0 (соответственно 1)
Одиночная ошибка вида 0 (1) - вставка символа перед некоторым символом слова или после его последнего символа
Одиночная ошибка вида +2i (-2i) в слове X Вn, где 0 i
Для иллюстрации в таблице 1 приведены слова, полученные из слова 0001101 (двоичная запись числа 13) в результате ошибок рассматриваемых видов.
Таблица 1
Вид ошибки | Место ошибки | Слово, полученное в результате ошибки | Примечание |
0 1 | 2 символ | 0101101 | |
1 0 | 5 символ | 0001001 | |
0 | 2 символ | 001101 | |
1 | 5 символ | 000101 | |
0 | между 2 и 3 символами | 00001101 | |
1 | между 2 и 3 символами | 00101101 | |
+22 | | 0010001 | 13+4 = 17 |
-22 | | 0001001 | 13-4 = 9 |
Далее мы будем рассматривать только случай одиночной ошибки типа замещения.
Способы контроля правильности передачи данных. Код с проверкой на четность
Контроль целостности информации при передаче от источника к приемнику может осуществляться с использованием корректирующих кодов.
Простейший корректирующий код – код с проверкой на четность, который образуется добавлением к группе информационных разрядов одного избыточного, значение которого выбирается таким образом, чтобы сумма единиц в кодовой комбинации, т.е. вес кодовой комбинации, была всегда четна.
Пример 1. Рассмотрим код с проверкой на четность, образованный добавлением контрольного разряда к простому двоичному коду:
| Информационные разряды | Контрольный разряд |
0 | 000 | 0 |
1 | 001 | 1 |
2 | 010 | 1 |
3 | 011 | 0 |
4 | 100 | 1 |
5 | 101 | 0 |
6 | 110 | 0 |
7 | 111 | 1 |
Такой код обнаруживает все одиночные ошибки и групповые ошибки нечетной кратности, так как четность количества единиц в этом случае будет также нарушаться.
Следует отметить, что при кодировании целесообразно число единиц в кодовой комбинации делать нечетным и осуществлять контроль на нечетность. В этом случае любая комбинация, в том числе и изображающая ноль, будет иметь хотя бы одну единицу, что дает возможность отличить полное отсутствие информации от передачи нуля.
Возможно экономное помехоустойчивое кодирование. Идея таких методов заключается в следующем:
На множестве двоичных слов рассматривается некоторая функция. Искомый код определяется как множество слов из Вn, на которых эта функция принимает некоторое фиксированное значение. Функция подбирается таким образом, чтобы в результате любой одиночной ошибки значение функции изменялось и чтобы по этому изменению и, быть может, самому полученному слову можно было однозначно определить вид и место ошибки.
Н(Х) представляет собой вектор длины k, полученный в результате сложения векторов, являющихся двоичными записями (с помощью k цифр) номеров единичных символов слова X.
Теорема. Код Хэмминга Hn, состоящий из всех слов X = х1х2...хn Вn таких, что
Н(Х) = (0,0,…,0),
является кодом с исправлением одного замещения.
Примечание: при вычислении функции Н(Х) вычисляется сумма по модулю 2 двоичных номеров строк, в которых знак сообщения Х равен единице.
Р.Хэммингом предложен способ кодирования, обеспечивающий простое и удобное декодирование.
N-значный код Хэмминга имеет m информационных и k контрольных разрядов.
Число контрольных разрядов должно удовлетворять соотношению
k log2(n+1),
откуда m n - log2(n+1)
Для этого кодируемое слово X длины m дополняется k контрольными разрядами, которые определенным образом рассчитываются при кодировании, и полученное сообщение Х состоит из m информационных и k контрольных позиций.
Для контрольных разрядов отводятся 1-й, 2-й, 4-й, 8-й и т.д., номера которых являются целыми степенями числа 2: их двоичные представления содержат ровно одну единицу. На остальные места: 3, 5, 6, 7, 9, 10,... помещают символы кодируемого слова X.
Рассмотрим пример построения кода Хэмминга в следующей задаче:
Для заданного сообщения Х = 0110101 построить код Хэмминга Х. Внести одиночную ошибку замещения и произвести декодирование.
Решение:
Построение кода Хэмминга |
№ п/п | Алгоритм | Конкретное соответствие задания алгоритму |
1 | Подготовить строку для сообщения Х, отводя места с номерами, равными 2k , для контрольных символов, а остальные разряды – для информационных символов сообщения Х | Разряды 1, 2, 4, 8 – контрольные; Разряды 3, 5, 6, 7, 9, 10, 11,… - информационные Рис. 1.Подготовка строки для сообщения |
2 | Разместить знаки сообщения Х в информационных разрядах | Рис. 2. Размещение знаков сообщения в информационных разрядах |
3 | Построить таблицу с двоичными номерами разрядов и внести в информационные разряды знаки сообщения Х | Рис. 3. Построение таблицы с информационными знаками |
4 | Для каждого из контрольных разрядов с номером 2k определить строки, формирующие контрольные знаки кода Х: информационный знак кода Х равен 1; в двоичном представлении номера строки k-й разряд равен 1. | Рис. 4. Расчет контрольных знаков кода В таблице выделены жирным шрифтом единицы в тех строках, в которых значение исходного сообщения равно1 (строки 3, 6, 9, 10) |
5 | Вычислить значения контрольных разрядов | Контрольные символы p1, p2, p4, p8 вычисляются следующим образом: рi равно сумме по модулю 2 тех информационных символов, номера которых имеют единицу в двоичном представлении там же, где и номер рi, т.е. в i-ом разряде справа: p1 - в 1-ом разряде, p2 - во 2-ом, p4 - в 3-ем, p8 – в 4-ом. |
6 | Объединяя информационные и контрольные разряды, получить искомое сообщение Х | Рис. 5. Получен код Х Построенное закодированное по Хэммингу сообщение Х = 01100101110 (списано снизу вверх поразрядно) |
Проверка кодирования. Проверка четности |
7 | Проверим правильность кодирования, вычислив значение H(X) | Выпишем в столбец двоичные номера строк, в которых знак сообщения Х равен единице. Сумма по модулю 2 знаков номеров в каждом разряде должна быть равной 0. Рис. 6. Проверка четности |
Внесение ошибки. Исправление ошибки |
8 | Внести ошибку замещения в один из разрядов и произвести декодирование | Пусть при передаче сообщения Х произошла ошибка замещения в 7-ом разряде, т.е. полученное сообщение Х = 01101101110 Вычислим значение H(Х): Выпишем в столбец двоичные номера строк, в которых знак сообщения Х равен единице. Суммируем по модулю 2 знаки номеров в каждом разряде: Рис. 7. Проверка на наличие ошибки | Полученное двоичное число 0111 равно номеру разряда 7, в котором произошла ошибка. Заменяя в сообщении Х значение 7-го разряда на противоположное, восстанавливаем Х; вычеркивая из Х проверочные разряды, получаем искомое сообщение Х. | |
Самостоятельно решить задачи:
Построить код Хэмминга Х для заданного сообщения Х. Внести одиночную ошибку замещения в i-й разряд и, произведя декодирование, подтвердить место ошибки:
а) Х = 11001010 (i = 6) б) Х = 10110011 (i = 4)
в) Х = 00110101 (i = 9) г) Х = 11101001 (i = 10)
д) Х = 1010011 (i = 5)
Принят некоторый код, проверить правильность кода, при необходимости исправить ошибку. Выполнить декодирование, получить исходное сообщение Х
а) принят код 111100
б) принят код 111010
в) принят код 100000
Примечание: при решении задач используйте справочный материал к работе, оформите решения средствами MS Excel или MS Word.
Выполните конспект работы в тетради.
Контрольные вопросы:
Охарактеризуйте понятие «корректирующий код»
Приведите алгоритм построения кода Хэмминга
К какому виду кодирования относится метод Хэмминга?
Поясните алгоритм вычисления функции H(X)
Каким образом можно установить наличие ошибки в сообщении Х? Как определить место ошибки?
Какие ошибки можно исправить с помощью кода Хэмминга?
Справочный материал к лабораторной работе
Восьмеричная система счисления
Для представления одной цифры восьмеричной системы используется три двоичных разряда (триада):
Цифра | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Триада | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
Шестнадцатеричная система счисления
Для представления одной цифры шестнадцатеричной системы используется четыре двоичных разряда (тетрада):
Цифра | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Тетрада | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
Цифра | 8 | 9 | А | В | С | D | E | F |
Тетрада | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
Основные логические операции
ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR)
Отличается от обычного ИЛИ последней строкой в таблице истинности:
А | В | А В | | А | В | А XOR B |
0 | 0 | 0 | | 0 | 0 | 0 |
0 | 1 | 1 | | 0 | 1 | 1 |
1 | 0 | 1 | | 1 | 0 | 1 |
1 | 1 | 1 | | 1 | 1 | 0 |
Схема ИСКЛЮЧАЮЩЕЕ ИЛИ соответствует «сложению по модулю 2» и представлена на рис. 1.
Рис. 8 Схема ИСКЛЮЧАЮЩЕЕ ИЛИ
Приложение 2
Решения задач лабораторной работы
Построить код Хэмминга Х для заданного сообщения Х. Внести одиночную ошибку замещения в i-й разряд и, произведя декодирование, подтвердить место ошибки:
а) Х = 11001010 (i = 6) б) Х = 10110011 (i = 4)
в) Х = 00110101 (i = 9) г) Х = 11101001 (i = 10)
д) Х = 1010011 (i = 5)
Решение №1 (а):
Построить код Хэмминга Х для заданного сообщения Х. Внести одиночную ошибку замещения в i-й разряд и, произведя декодирование, подтвердить место ошибки:
а) Х = 11001010 (i = 6)
Размещение знаков сообщения в информационных разрядах
Рис. 9. Первый этап решения: информационные знаки
Вычисление контрольных разрядов Рис. 10. Вычисление контрольных знаков | Построенный код Х = 110001011001 Проверка четности. Вычисление Н(Х) Рис. 11. Проверка четности |
Ошибка в разряде 6: Х = 110001111001 6. Проверка кода: Рис. 12. Проверка кода | 7. Замена знака в разряде 6; получение сообщения Х = 110001011001; удаление контрольных знаков, получение Х = 11001010 |
Решение №1 (б):
Построить код Хэмминга Х для заданного сообщения Х. Внести одиночную ошибку замещения в i-й разряд и, произведя декодирование, подтвердить место ошибки:
б) Х = 10110011 (i = 4)
Размещение знаков сообщения в информационных разрядах
Рис. 13. Первый этап решения: информационные знаки
Вычисление контрольных разрядов Рис. 14. Вычисление контрольных знаков | 3. Построенный код Х = 101110010101 Проверка четности. Вычисление Н(Х) Рис. 15. Проверка четности |
Ошибка в разряде 4: Х = 101110011101 | |
6. Проверка кода: Рис. 16. Проверка кода | 7. Замена знака в разряде 4; получение сообщения Х = 101110010101; удаление контрольных знаков, получение Х = 10110011 |
Решение №1 (в):
Построить код Хэмминга Х для заданного сообщения Х. Внести одиночную ошибку замещения в i-й разряд и, произведя декодирование, подтвердить место ошибки:
в) Х = 00110101 (i = 9)
Размещение знаков сообщения в информационных разрядах
Рис. 17. Первый этап решения: информационные знаки
Вычисление контрольных разрядов Рис. 18. Вычисление контрольных знаков | 3. Построенный код Х = 001100101110 Проверка четности. Вычисление Н(Х) Рис. 19. Проверка четности |
5. Ошибка в разряде 9: Х = 001000101110 | |
6. Проверка кода: Рис. 20. Проверка кода | 7. Замена знака в разряде 9; получение сообщения Х = 001100101110; удаление контрольных знаков, получение Х = 00110101 |
Решение №1 (г):
Построить код Хэмминга Х для заданного сообщения Х. Внести одиночную ошибку замещения в i-й разряд и, произведя декодирование, подтвердить место ошибки:
г) Х = 11101001 (i = 10)
Размещение знаков сообщения в информационных разрядах
Рис. 21. Первый этап решения: информационные знаки
Вычисление контрольных разрядов Рис. 22. Вычисление контрольных знаков | Построенный код Х = 111011000101 Проверка четности. Вычисление Н(Х) Рис. 23. Проверка четности |
5. Ошибка в разряде 10: Х = 110011000101 | |
6. Проверка кода: Рис. 24. Проверка кода | 7. Замена знака в разряде 10; получение сообщения Х = 111011000101; удаление контрольных знаков, получение Х = 11101001 |
Решение №1 (д):
Построить код Хэмминга Х для заданного сообщения Х. Внести одиночную ошибку замещения в i-й разряд и, произведя декодирование, подтвердить место ошибки:
д) Х = 1010011 (i = 5)
Размещение знаков сообщения в информационных разрядах
Рис. 25. Первый этап решения: информационные знаки
Вычисление контрольных разрядов Рис. 26. Вычисление контрольных знаков | 3. Построенный код Х = 10100011100 Проверка четности. Вычисление Н(Х) Рис. 27. Проверка четности |
5. Ошибка в разряде 5: Х = 10100001100 6. Проверка кода: Рис. 28. Проверка кода | 7. Замена знака в разряде 5; получение сообщения Х = 10100011100; удаление контрольных знаков, исходное сообщение Х = 1010011 |
Решение задачи №2
Принят некоторый код, проверить правильность кода, при необходимости исправить ошибку. Выполнить декодирование, получить исходное сообщение Х
А) принят код 111100
Б) принят код 111010
В) принят код 100000
Решение №2 (а)
Принят некоторый код, проверить правильность кода, при необходимости исправить ошибку. Выполнить декодирование, получить исходное сообщение Х
А) принят код 111100
Размещение знаков сообщения в информационных разрядах
Рис. 29. Запись разрядов кода
2. Проверка четности. Вычисление Н(Х) Рис. 30 Проверка четности | Замена знака в разряде 4, отправленный код Рис. 31. Отправленный код Определение контрольных разрядов, удаление контрольных разрядов из кода, исходное сообщение Х = 111 |
Решение №2 (б)
Принят некоторый код, проверить правильность кода, при необходимости исправить ошибку. Выполнить декодирование, получить исходное сообщение Х
Б) принят код 111010
Размещение знаков сообщения в информационных разрядах
Рис. 32. Запись разрядов кода
2. Проверка четности. Вычисление Н(Х) Рис. 33 Проверка четности | Замена знака в разряде 5, отправленный код Рис.34. Отправленный код Определение контрольных разрядов, удаление контрольных разрядов из кода, исходное сообщение Х = 100 |
Решение №2 (в)
Принят некоторый код, проверить правильность кода, при необходимости исправить ошибку. Выполнить декодирование, получить исходное сообщение Х
В) принят код 100000
Размещение знаков сообщения в информационных разрядах
Рис. 35. Запись разрядов кода
2. Проверка четности. Вычисление Н(Х) Рис. 36. Проверка четности | Замена знака в разряде 6, отправленный код Рис.37. Отправленный код Определение контрольных разрядов, удаление контрольных разрядов из кода, исходное сообщение Х = 000 |
Приложение 3
Критерии оценки различных видов работ
Актуализация знаний | Решение задач | Защита работы по контрольным вопросам |
Максимальный балл – 5 За дополнение - 1 | Максимальный балл (решены верно 2 задачи) - 5 Решение задачи №2 не закончено, но студент может рассказать ход и методы решения – 4 Решена 1 задача, контрольные вопросы – 4 Конспект работы в тетради, записана рассмотренная задача – 3 | Представление решения задачи на демонстрационном экране - 5 Защита работы на ПК - 5 Защита работы (обсуждение по вопросам) – 4 За дополнение - 1 |
В результате выводится средняя оценка каждому студенту.
Дополнительное задание оценивается отдельно, студент получает вторую оценку на занятии.
30