Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по методам и средствам ЗИ.doc
Скачиваний:
90
Добавлен:
23.09.2019
Размер:
831.49 Кб
Скачать

Код аутентичности сообщения

Код аутентичности сообщения (message authentication code – MAC) – это функция, которая принимает на вход два аргумента: ключ К фиксированной длины и сообщение М произвольной длины и выдает значение фиксированной длины. Для обеспечения аутентификации сообщения пользователь отсылает не только сообщение М, но и код аутентичности этого сообщения СK (M).

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

В данном случае под МАС понимается некоторый аутентификатор, являющийся определенным способом вычисленным блоком данных, с помощью которого можно проверить целостность сообщения. В некоторой степени симметричное шифрование всего сообщения может выполнять функцию аутентификации этого сообщения. Но в таком случае сообщение должно содержать достаточную избыточность, которая позволяла бы проверить, что сообщение не было изменено. Избыточность может быть в виде определенным образом отформатированного сообщения, текста на конкретном языке и т.п. Если сообщение допускает произвольную последовательность битов (например, зашифрован ключ сессии), то симметричное шифрование всего сообщения не может обеспечивать его целостность, так как при дешифровании в любом случае получится последовательность битов, правильность которой проверить нельзя.

Поэтому гораздо чаще используется критографически созданный небольшой блок данных фиксированного размера, так называемый аутентификатор или имитовставка, с помощью которого проверяется целостность сообщения. МАС вычисляется в тот момент, когда известно, что сообщение корректно. После этого МАС присоединяется к сообщению и передается вместе с ним получателю. Получатель вычисляет МАС, используя тот же самый секретный ключ, и сравнивает вычисленное значение с полученным. Если эти значения совпадают, то с большой долей вероятности можно считать, что при пересылке изменения сообщения не произошло.

Рассмотрим свойства, которыми должна обладать функция МАС. Если длина ключа, используемого при вычислении МАС, равна k, то при условии сильной функции МАС противнику потребуется выполнить 2k попыток для перебора всех ключей. Если длина значения, создаваемого МАС, равна n, то всего существует 2n различных значений МАС.

Функция вычисления МАС должна обладать следующими свойствами:

  1. Должно быть вычислительно трудно, зная М и СK (M), найти сообщение М′, такое, что СK(M) = СK(M′).

  2. Значения СK(M) должны быть равномерно распределенными в том смысле, что для любых сообщений М и M′ вероятность того, что СK(M) = СK(M′), должна быть равна 2-n, где n – длина значения МАС.

МАС на основе алгоритма симметричного шифрования

Для вычисления МАС может использоваться алгоритм симметричного шифрования (например, DES в режиме СВС) или ГОСТ 28147-89 в режиме гаммирования с обратной связью и нулевым инициализационным вектором. Основная идея алгоритма заключается в том, чтобы зашифровать сообщение с помощью блочного шифра в указанном режиме, а затем отбросить все блоки кроме последнего. Для сообщения состоящего из блоков Р1....Рn вычисление МАС происходит по следующей схеме:

МАС1 = EK [P1]

МАС2 = EK [P2 MAC1]

. . .

МАСN = EK [PN MACN-1]

MAC = МАСN

МАС на основе хэш-функции

Другим способом обеспечения целостности является использование хэш-функции. Хэш-код присоединяется к сообщению в тот момент, когда известно, что сообщение корректно. Получатель проверяет целостность сообщения вычислением хэш-кода полученного сообщения и сравнением его с полученным хэш-кодом, который должен быть передан безопасным способом. Одним из таких безопасных способов может быть шифрование хэш-кода закрытым ключом отправителя, т.е. создание подписи. Возможно также шифрование полученного хэш-кода алгоритмом симметричного шифрования, если отправитель и получатель имеют общий ключ симметричного шифрования.

НМАС

Еще один вариант использования хэш-функции для получения МАС состоит в том, чтобы определенным образом добавить секретное значение к сообщению, которое подается на вход хэш-функции. Такой алгоритм носит название НМАС, и он описан в RFC 2104.

При разработке алгоритма НМАС преследовались следующие цели:

    • возможность использовать без модификаций уже имеющиеся хэш-функции;

    • возможность легкой замены встроенных хэш-функций на более быстрые или более стойкие;

    • сохранение скорости работы алгоритма, близкой к скорости работы соответствующей хэш-функции;

    • возможность применения ключей и простота работы с ними.

В алгоритме НМАС хэш-функция представляет собой "черный ящик". Это, во-первых, позволяет использовать существующие реализации хэш-функций, а во-вторых, обеспечивает легкую замену существующей хэш-функции на новую.

Введем следующие обозначения:

Н – встроенная хэш-функция.

b – длина блока используемой хэш-функции.

n – длина хэш-кода.

K – секретный ключ. К этому ключу слева добавляют нули, чтобы получить b-битовый ключ K+.

Вводится два вспомогательных значения:

Ipad – значение '00110110', повторенное b/8 раз.

Opad – значение '01011010', повторенное b/8 раз.

Далее НМАС вычисляется следующим образом:

НМАС = Н ((K+ Opad) || H ((K+ Ipad) || M

- 7 -