x - Sciyouth.ru

реклама
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
Самарский государственный архитектурно-строительный университет
Факультет информационных систем и технологий
Кафедра прикладной математики и вычислительной техники
Отчет по лабораторной работе № 6
по дисциплине: «Информационная безопасность и защита информации»
ВЫПОЛНИЛ студент группы
ГИП-113
ПРОВЕРИЛ проф., д.т.н.
оценка
Самара
2015 г.
Алексанова Е.В.
Прохорова О. В.
Оглавление
Постановка задачи ........................................................................................................................ 3
1. Алгоритмическая часть ......................................................................................................... 4
2. Аналитическая часть ............................................................................................................. 5
3. Конструкторская часть ............................................................................................................. 8
Литература ................................................................................................................................... 10
2
Постановка задачи
Изучить алгоритм вычисления контрольной суммы сообщения и научиться применять его в задачах.
3
1. Алгоритмическая часть
1. Взять любое число P, например, трехзначное. Представить его в двоичной системе счисления (x=2). Получить
полином P(х), который будет передаваться по каналу связи вместе с контрольной суммой (КС) блоками по 8 бит.
2. В качестве порождающего полинома взять G(x) = 1 * x3 + 0 * x2 + 1 * x1 + 1 * x0 , где степень полинома r = 3.
3. Вычислить число порождающего полинома G(x).
4. Вычислить контрольный код и представить его объемом 8 бит, добавляя незначащие нули слева.
5. Присоединить КС к передаваемому числу в конец блока из 8 бит.
6. Изменить начальное число и пересчитать после этого контрольную сумму, сверить с заданной и определить, был
сбой
в системе или нет.
4
2. Аналитическая часть
Алгоритм вычисления контрольной суммы
Рассмотрим алгоритм вычисления контрольной суммы (КС).
КС — способ цифровой идентификации некоторой последовательности данных, который заключается в вычислении
контрольного значения её кода.
С точки зрения математики КС является типом хэш-функции, используемой для вычисления контрольного кода
(КК). КК есть
небольшое количество бит внутри большого блока данных, например, сетевого пакета, применяемого
для обнаружения ошибок при передаче или хранении информации. Результат вычисления КС добавляется в конец блока
данных непосредственно перед началом передачи или сохранения данных на каком -либо носителе информации.
Впоследствии он проверяется для подтверждения целостности переданной информации. Популярность КС обусловлена
тем, что подобная проверка просто реализуема в двоичном цифровом оборудовании, легко анализируется, и хорошо
подходит для обнаружения общих ошибок, вызванных наличием шума в каналах передачи данных.
Принцип КС основан на использовании свойств двоичного многочлена, в виде которого представляется исходная
битовая последовательность блока данных. При этом каждый бит такой последовательности соответствует одному из
полиномиальных коэффициентов. Например, десятичное число 90 (1011010 в двоичной записи) соответствует
многочлену следующего вида:
5
P(x) = 1 * x6 + 0 * x5 + 1 * x4 + 1 * x3 + 0 * x2 + 1 * x1 + 0 * x0
Подобным же образом в виде многочлена может быть представлен любой из блоков обрабатываемых данных.
При вычислении контрольного кода по методу КС используется свойство поведения многочленов, позволяющее
выполнять с ними любые арифметические действия. Контрольный код рассчитывается, как остаток от деления по
модулю 2 многочлена, полученного из исходной битовой последовательности на некоторый другой заранее
определённый многочлен (такой многочлен называется порождающим или примитивным).
R(x) = P(x) * xr mod G(x)
(2.1)
где
R(x) — контрольный код многочлена P(x).
P(x) — исходный многочлен.
G(x) — порождающий многочлен.
r — степень порождающего многочлена.
Применим алгоритм к поиску КС, если задано:
6
Р(х) = 90, х = 2.
Пусть G(x)= 1 * x3 + 0 * x2 + 1 * x1 + 0 * x0 – этот полином скрыт от передачи и не изменен.
r=3, G(x) = 8 + 0 + 2 + 0 = 10. Тогда, согласно формуле получим:
R(x) = 90 * 2r mod 10=90*8 mod 10 = 720 mod 10 = 0.
Продолжим решение и внесем изменение в передаваемую информацию, изменив только один последний бит,
получим число 91 (1011011 в двоичной записи) соответствует многочлену следующего вида:
P(x) = 1 * x6 + 0 * x5 + 1 * x4 + 1 * x3 + 0 * x2 + 1 * x1 + 1 * x0
Далее действуем по аналогии с выше рассмотренными действиями. Получим:
Р(х) = 91, х = 2.
Пусть G(x)= 1 * x3 + 0 * x2 + 1 * x1 + 0 * x0
r=3, G(x) = 8 + 0 + 2 + 0 = 10. Тогда, согласно формуле получим:
R(x) = 91 * 2r mod 10=91*8 mod 10 = 728 mod 10 = 8.
Как видно из решения, что при любом нарушении целостности информации меняется ее контрольная сумма, а значит
будет обнаружена ошибка передачи данных.
7
3. Конструкторская часть
Возьмем число 108 (1101100 в двоичной записи) соответствует многочлену следующего вида:
P(x) = 1 * x6 + 1 * x5 + 0 * x4 + 1 * x3 + 1 * x2 + 0 * x1 +0*х0
Контрольный код рассчитывается, как остаток от деления по модулю 2 многочлена, полученного из исходной
битовой последовательности на некоторый другой заранее определённый многочлен (такой многочлен называется
порождающим или примитивным).
r
(3.1)
R(x) = P(x) * x mod G(x)
Р(х) = 108, х = 2.
Пусть G(x)= 1 * x3 + 0 * x2 + 1 * x1 + 1 * x0 – этот полином скрыт от передачи и не изменен.
r=3, G(x) = 8 + 0 + 2 + 1 = 11. Тогда, согласно формуле получим:
R(x) = 108 * 2r (mod 11)=108*8 (mod 11) = 864 (mod 11) = 6.
Представим КС в виде двоичного числа в виде 8 битного кода, получим 0 0 0 0 0 1 1 0. Теперь
присоединим этот блок к передаваемому числу 108, представленному в двоичном коде, получим
8
передаваемое сообщение вида: 110110000000110, т.е. передаваемый текст и его дайджет.
Продолжим
решение и внесем изменение в передаваемую информацию, изменив только один
последний бит, получим число109 ( 1101101в двоичной записи), ему соответствует многочлен вида:
P(x) = 1 * x6 + 1 * x5 + 0 * x4 + 1 * x3 + 1 * x2 + 0 * x1 +1*х0
Далее действуем по аналогии с выше рассмотренными действиями. Получим:
Р(х) = 109, х = 2.
Пусть G(x)= 1 * x3 + 0 * x2 + 1 * x1 + 1 * x0
r=3, G(x) = 8 + 0 + 2 + 1 = 11. Тогда, согласно формуле получим:
R(x) =109 * 2r (mod 11)=109*8 (mod 11) =872 (mod 11) = 3.
Как видно из решения, что при любом нарушении целостности информации меняется ее контрольная
сумма (в данном случае с 6 на 3), заменить КС в процессе передачи информации нельзя, т.к. взломщику
неизвестен порождающий полином, а значит будет обнаружена ошибка передачи данных.
9
Литература
1. Прохорова, О.В. Защита информации. Курс лекций. СГАСУ, 2015 г. —149с.
10
Скачать