
курсак
.pdf51
2.4 Электронная цифровая подпись ГОСТ
ГОСТ Р 34.10-2001 (полное название: «ГОСТ Р 34.10-2001. Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи») – российский стандарт, описывающий алгоритмы формирования и проверки электронной цифровой подписи.
Цифровая подпись позволяет:
а) аутентифицировать лицо, подписавшее сообщение; б) контролировать целостность сообщения; в) защищать сообщение от подделок;
г) доказать авторство лица, подписавшего сообщение.
ГОСТ Р 34.10-2001 основан на эллиптических кривых. Его стойкость основывается на сложности вычисления дискретного логарифма в группе точек эллиптической кривой, а также на стойкости хэш-функции по ГОСТ Р 34.11-94. После подписывания сообщения М к нему дописывается цифровая подпись размером 512 бит и текстовое поле. В текстовом поле могут содержаться, например, дата и время отправки или различные данные об отправителе.
Данный алгоритм не описывает механизм генерации параметров, необходимых для формирования подписи, а только определяет, каким образом на основании таких параметров получить цифровую подпись. Механизм генерации параметров определяется на месте в зависимости от разрабатываемой системы.
Поле "текст", дополняющее поле "цифровая подпись", может, например, содержать различные данные об отправителе сообщения или дату и время отправки.
Установленная в настоящем стандарте схема цифровой подписи должна быть реализована с использованием операций группы точек эллиптической кривой, определенной над конечным простым полем, а также хэш-функции.
Криптографическая стойкость данной схемы цифровой подписи основывается на сложности решения задачи дискретного логарифмирования в группе точек эллиптической кривой, а также на стойкости используемой хэшфункции.
Цифровая подпись, представленная в виде двоичного вектора длиной 512 бит, должна вычисляться с помощью определенного набора правил (рис. 2.5).

52
Рисунок 2.5 – Алгоритм формирования цифровой подписи
Криптостойкость цифровой подписи опирается на две компоненты – на стойкость хэш-функции и на стойкость самого алгоритма шифрования. Вероятность взлома хэш-функции по ГОСТ 34.11-94 составляет 1,73*10-77 при подборе коллизии на фиксированное сообщение и 2,94*10-39 при подборе любой коллизии. Стойкость алгоритма шифрования основывается на дискретном логарифмировании в группе точек эллиптической кривой. На данный момент нет метода решения данной задачи хотя бы с субэкспоненциальной сложностью.
53
2.5 Хэш-функция MD5
Функция хэширования H представляет собой отображение, на вход которого подаётся сообщение M произвольной длины, а на выходе получается значение h конечной длины, где h = H(M).
В общем случае хэш-значение h гораздо меньше исходного сообщения M. Так для MD5 h=128 бит. Хэш-функция должна обладать следующими свойствами:
1 По достаточно большому сообщению M хэш-функция должна быстро вычислить h значение, которое должно зависеть от каждого бита сообщения M;
2 Необратимость: по h значению невозможно восстановить исходный текст
M;
3 Вычислительно очень трудно (почти невозможно) найти два сообщения M и M1, которые дают два одинаковых h-значения.
Хэш-значение является контрольной суммой исходного сообщения M и называется MDC (Manipulation Detection Code – код обнаружения изменений) или MIC (Message Integrity Check – проверка целостности сообщения). Если хэшфункция использует для своей работы ключ (пароль), то получаемое значение называется MAC (Message Authentication Code – код аутентичности сообщения)
Описание алгоритма MD5.
Подробное официальное описание MD5 даётся в RFC 1321 (The MD5 Message-Digest Algorithm). Ниже приводиться наиболее важные детали русского перевода: MD5 алгоритм используется в приложениях криптографии и электронно-цифровых подписей для генерации ключа шифрования. Алгоритм разработан, что бы быть достаточно быстрым на 32-битных системах и не требовать больших объемов памяти. MD5 является чуть более медленным, чем MD4, но является более устойчивым к криптографическим атакам. Далее под "словом" будет подразумеваться количество информации в 32 бита, а под "байтом" – 8 бит. Последовательность бит интерпретируется в естественной форме – как последовательность байт, где каждая группа из 8 бит является отдельным байтом, причём старший бит байта идет первым. Аналогично представляется последовательность байт, как последовательность слов, только младший байт идет первым. Предполагается, что в качестве входного потока имеется поток данных N бит. N – неотрицательное целое (возможно 0), не обязательно кратное 8. Для вычисления MD5 хэш-функции необходимо выполнить следующие 4 шага.
54
Шаг 1: выравнивание потока.
Входной поток выравнивается так, что бы его длина стала конгруэнтной (сравнимой) с 448 по модулю 512. Выравнивание происходит следующим образом: к потоку добавляется один бит '1', а затем биты '0' до тех пор, пока длина потока не будет сравнима с 448 по модулю 512. Выравнивание происходит всегда, даже если длина потока была уже сравнима с 448 по модулю 512. Таким образом к потоку добавляется минимум 1 бит, максимум – 512.
Шаг 2: добавление длины.
64 битное представление длины входного потока (длины потока до выравниваия) добавляется к результату предидущего шага. Если длина потока превосходит 2^64, то добавляются младшие 64 бит. Эти биты добавляются как 2 32-битных слова, младшее слово добавляется первым. Таким образом на этом шаге длина потока становится кратной 512 битам или 16, 32-битным словам. Далее будем рассматривать входной поток как массив M[0 ... N–1] слов длиной N.
Шаг 3: инициализация MD буфера.
Буфер из 4 слов {A, B, C, D} используется для вычисления хэш функции, который инициализируется в следующие значения:
A = 0x67452301 B = 0xEFCDAB89 C = 0x98BADCFE D = 0x10325476
Шаг 4: вывод MD5.
Результат вычисления (хэш) представлен четырьмя 32 битными словами – A, B, C, D (младшим записывается A, старшим – D). 128-битный MD5 хэш готов.
55