- •Оглавление
- •ВВЕДЕНИЕ
- •1.1. Предмет криптографии и основные определения
- •1.2. Математические основы криптографии
- •1.3. Математическая модель шифра
- •1.4. Классификация шифров
- •1.5. Обзор истории криптографии
- •Появление шифров
- •Становление криптографии как науки
- •Криптография в Новое время
- •Научная криптология
- •2.1. Понятие подстановки
- •2.2. Математическая модель шифра подстановок
- •2.3. Сравнимость
- •2.4. Примеры классических шифров подстановок
- •2.5. Математическая модель шифра перестановок
- •2.6. Маршрутные перестановки как пример шифра перестановок
- •ГЛАВА 3 Характеристики открытых текстов. Вероятностный подход
- •3.2. Вероятностный подход к анализу текстов
- •Частоты букв европейских языков, в %
- •Частоты символов русского языка, в %
- •Сочетаемость букв русского языка
- •Чередование гласных и согласных для текста длиной 105 знаков
- •Буква
- •Буква
- •4.1. Теоретико-информационный подход к анализу текстов
- •4.2. Комбинаторный подход к анализу текстов
- •Современные симметричные криптосистемы
- •5.1. Математическая модель шифра замены
- •5.2. Классификация шифров замены
- •ГЛАВА 6 Принципы построения симметричных шифров
- •6.1. Принципы построения поточных шифров
- •6.2. Принципы построения блочных шифров
- •ГЛАВА 7 Математические основы асимметричной криптографии
- •7.1. История и основные определения асимметричной криптографии
- •7.2. Основы теории простых чисел
- •7.3. Функция Эйлера
- •ГЛАВА 8 Теоремы асимметричной криптографии и алгоритм RSA
- •8.1. Основные теоремы асимметричной криптографии
- •8.2. Алгоритм RSA
- •9.1. Задачи асимметричной криптографии
- •10.1. Понятие электронной подписи
- •10.2. Алгоритм электронной подписи на основе алгоритма RSA
- •ГЛАВА 11 Управление криптографическими ключами
- •11.1. Задачи управления криптографическими ключами
- •11.2. Генерация ключей
- •11.3. Хранение ключей
- •Заключение
- •Список рекомендованной литературы
ГЛАВА 9 Аутентификация информации.
Подтверждение целостности информации
Задачи асимметричной криптографии. Обеспечение целостности информации при ее передаче и хранении. Хэшфункции.
9.1.Задачи асимметричной криптографии
Вглаве 8 мы рассмотрели одну из задач симметричной криптогра-
фии – шифрование информации без передачи секретного ключа. В «чи-
стом» виде алгоритмы такого рода используются достаточно редко в силу того, что, во-первых, не обладают достаточной криптостойкостью, а вовторых, требуют больших вычислительных затрат. Чаще всего реализации криптоалгоритмов, применяемые на практике (средства криптографической защиты информации), используют комбинированный подход – пользователи обмениваются секретным ключом, используя асимметричные криптоалгоритмы, а зашифрование/расшифрование данных происходит на полученном таким образом симметричном ключе. В результате не требуется установление защищенного канала связи для обмена симметричным ключом. Таким образом, второй задачей, которую решает асимметричная криптография, является безопасное распространение секретных ключей.
Третья важная задача, решить которую позволяет использование асимметричных криптоалгоритмов, – это аутентификация.
Вобщих словах, аутентификация – это процесс, позволяющий устанавливать подлинность. Аутентификация может применяться как к самой информации, так и к ее источнику. В первом случае процесс аутентификации позволяет устанавливать целостность информации, то есть ее
неизменность в процессе передачи и хранения. Во втором случае устанавливается подлинность источника информации.
68
9.2.Обеспечение целостности информации при передаче
ихранении. Хэш-функции
Рассмотрим сообщение M. Для проверки его целостности к сообщению присоединяется некоторая проверочная комбинация S, которая назы-
вается кодом аутентификации, или имитовставкой. К этой комбинации предъявляются следующие требования:
при известном M легко вычислить S;
при известном S трудно определить соответствующее ему M;
при известном M и известном S трудно подобрать другое M’, ко-
торому бы соответствовало то же S.
Отметим, что при защите сообщения имитовставкой само сообщение M не обязательно должно зашифровываться. Однако если наряду с задачей обеспечения целостности сообщения ставится задача обеспечения конфиденциальности, к сообщению M могут быть применены алгоритмы шифрования.
Как правило, имитовставка является значением некоторой криптографической функции h(M ) от данного сообщения, называемой хэшфункцией. Точнее, хэш-функцией называется преобразование произвольного набора данных в битовую комбинацию фиксированной длины (хэш-
значение).
Схема применения хэш-функции h для подтверждения подлинности сообщения M может быть следующей.
Отправитель:
1.Создает сообщение M.
2.Вычисляет хэш-значение h0 (M ) по определенному алгоритму.
3.Присоединяет вычисленное значение h0 (M ) к сообщению.
4.Отправляет сообщение M || h0 (M ) получателю (здесь символ ||
обозначает операцию конкатенации – «сцепления» сообщений).
Получатель:
1.Получает сообщение M || h0 (M ).
2.Вычисляет значение h(M ) по тому же алгоритму, что и отправ и- тель.
3.Сравнивает полученное значение h(M ) с h0 (M ).
69
4. В случае совпадения значений h(M ) и h0 (M ) считает подтвержденной подлинность сообщения M.
Алгоритм вычисления хэш-значения может зависеть от секретного ключа k, известного отправителю и получателю. В этом случае хэшфункция hk (M )называется ключевой.
При вычислении значений бесключевой хэш-функции секретный ключ не используется. Такие хэш-функции могут применяться, например, для обнаружения ошибок при передаче и хранении информации, но не для обнаружения воздействий нарушителя.
Важным моментом при построении хэш-функций является необходимость учитывать их устойчивость к коллизиям – совпадению полученных хэш-значений для разных исходных сообщений. Действительно, исходные сообщения могут быть произвольной длины, а хэш-значения – это битовая последовательность фиксированной длины, чаще всего меньшей, чем само сообщение. Следовательно, можно сделать вывод о бесконечности множества исходных сообщений и конечности множества хэшзначений. Таким образом, любая хэш-функция, отображая бесконечное множество в конечное, будет создавать коллизии. Для каждой из известных хэш-функций вероятность соответствия одного и того же хэшзначения разным сообщениям является различной. Эта вероятность и определяет устойчивость хэш-функции к коллизиям. Чем сложнее подобрать разные сообщения с одним и тем же хэш-значением, тем более надежной является хэш-функция.
В общем виде принцип построения хэш-функций основан на использовании метода пошагового сжатия. Этот метод состоит в следующем.
1.Исходное сообщение M разбивается на N двоичных векторов одинаковой длины m: M1, M2, …, MN.
2.В качестве исходной информации задается начальный двоичный вектор H0 длины m.
3.Для каждого i=1, 2, …, N, к паре векторов Mi и Hi-1 применяется сжимающее преобразование y = f (x1, x2 ), результатом которого является двоичный вектор y длины m:
Hi = f (Mi , Hi −1 ).
70
4. В качестве результирующего хэш-значения берется: h(M )= H N = f (M N , H N −1 ).
Важно иметь ввиду, что длина исходного сообщения M может быть не кратна требуемому m, то есть последний отрезок текста может иметь длину, меньшую, чем m. Для того чтобы добиться идентичности сжимающего преобразования на всех итерациях, производят так называемую «набивку нулями» последнего блока сообщения – добавляют в его начало нужное количество разрядов и заполняют их нулями, что не влияет на значение блока.
Наиболее известными хэш-функциями являются Snefru, N-хэш, MD4 (MD – от Message Digest – дайджест сообщения), MD5, MD2, SHA (Secure Hash Algorithm – алгоритм стойкого хэширования) и другие. С кратким описанием всех этих алгоритмов можно ознакомиться в книге Брюса Шнайера «Прикладная криптография». Мы же остановимся подробнее на российском алгоритме вычисления хэш-значений сообщений.
71
