Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ЗИ_Э.doc
Скачиваний:
1018
Добавлен:
29.03.2015
Размер:
1.67 Mб
Скачать

Алгоритм вычисления контрольной суммы

Рассмотрим алгоритм вычисления контрольной суммы (КС).

КСспособ цифровой идентификации некоторой последовательности данных, который заключается в вычислении контрольного значения еёкода.

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

Принцип КС основан на использовании свойств двоичного многочлена, в виде которого представляется исходная битовая последовательность блока данных. При этом каждый бит такой последовательности соответствует одному из полиномиальных коэффициентов. Например, десятичноечисло 90 (1011010 в двоичной записи) соответствует многочлену следующего вида:

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)

где

R(x) — контрольный код многочлена P(x).

P(x) — исходный многочлен.

G(x) — порождающий многочлен.

r — степень порождающего многочлена.

Применим алгоритм к поиску КС, если задано:

Р(х) = 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.

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

Проверка КС используется в протоколах TCP\IP сетевого и канального уровня, а также там, где необходима проверка целостности полученных данных.

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