- •Самарский государственный архитектурно-строительный университет
- •Алгоритм кодирования и декодирования Хаффмена
- •Порядок выполнения самостоятельной работы
- •Контрольные вопросы
- •Дискреционная модель политики безопасности
- •Порядок выполнения самостоятельной работы
- •3.1. Дискреционная матрица доступов.
- •Контрольные вопросы
- •Подсистемы парольной аутентификации пользователей
- •Порядок выполнения самостоятельной работы
- •4.2. Таблица двоичного представления кодов
- •4.3. Таблица вариантов
- •Контрольные вопросы
- •Методы криптографической защиты информации
- •Шифрование методом Цезаря
- •Простая моноалфавитная замена
- •Метод простой перестановки
- •Алгоритм Гамильтона
- •Шифрование методом гаммирования
- •Порядок выполнения самостоятельной работы
- •Контрольные вопросы
- •Вычисление контрольной суммы сообщения
- •Алгоритм вычисления контрольной суммы
- •Порядок выполнения самостоятельной работы
- •Ассиметричное шифрование
- •Алгоритм шифрования rsa
- •Алгоритм формирования ключевой пары пользователем а
- •Шифрование и дешифрование сообщений в криптосистеме rsa
- •Действия получателя а
- •Действия отправителя b
- •Действия пользователя a
- •Порядок выполнения самостоятельной работы
- •Библиографический список
Контрольные вопросы
Охарактеризуйте направление «криптография». Что называют криптографическим ключом?
Проклассифицируйте традиционные алгоритмы шифрования. Кратко охарактеризуйте эти классы.
Охарактеризуйте методы шифрования Цезаря, простую моноалфавитную замену, простую перестановку, перестановки Гамильтона.
Вычисление контрольной суммы сообщения
Цель работы – изучить алгоритм вычисления контрольной суммы сообщения и научиться применять его в задачах.
Алгоритм вычисления контрольной суммы
Рассмотрим алгоритм вычисления контрольной суммы (КС).
КС — способ цифровой идентификации некоторой последовательности данных, который заключается в вычислении контрольного значения еёкода.
С точки зрения математики КС является типом хэш-функции, используемой для вычисления контрольного кода(КК). КК есть небольшое количество бит внутри большого блока данных, например, сетевого пакета, применяемого для обнаружения ошибок при передаче или хранении информации. Результат вычисления КС добавляется в конец блока данных непосредственно перед началом передачи или сохранения данных на каком -либо носителе информации. Впоследствии он проверяется для подтверждения целостностипереданной информации. Популярность КС обусловлена тем, что подобная проверка просто реализуема в двоичном цифровом оборудовании, легко анализируется, и хорошо подходит для обнаружения общих ошибок, вызванных наличием шума в каналах передачи данных.
Принцип КС основан на использовании свойств двоичного многочлена, в виде которого представляется исходная битовая последовательность блока данных. При этом каждый бит такой последовательности соответствует одному из полиномиальных коэффициентов. Например,десятичноечисло 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)
|
(6.1) |
где
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.
Как видно из решения, что при любом нарушении целостности информации меняется ее контрольная сумма, а значит будет обнаружена ошибка передачи данных.