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

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

Для вычисления МАС может использоваться алгоритм симметричного шифрования (например, DES) в режиме СВС и нулевой инициализационный вектор. В этом случае сообщение представляется в виде последовательности блоков P1, P2, …, PN, длина которых равна длине блока алгоритма шифрования. При необходимости последний блок дополняется справа нулями, чтобы получился блок нужной длины. Вычисление МАС происходит по следующей схеме:

МАС1 = EK [P1]

МАС2 = EK [P2 Å MAC1]

. . .

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

MAC = МАСN

Здесь K – секретный ключ, который используется для шифрования сообщения. Таким образом хэш-функция может вычисляться параллельно с шифрованием сообщения.

Есть схемы, в которых ключ шифрования меняется блок от блока.

МАС0 = 0

МАС1 = EМАС0 [P1] Å МАС0

МАС2 = EМАС1 [P2] Å МАС1

. . .

МАСN = EМАСN-1 [PN] Å МАСN-1

MAC = МАСN

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

МАС0 = 0

МАС1 = EP1 [МАС0] Å МАС0

МАС2 = EP2 [МАС1] Å МАС1

. . .

МАСN = EPN [МАСN-1] Å МАСN-1

MAC = МАСN

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

HMAC

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

НМАС = Н [ (K’ Å Opad) || H [ (K’ Å Ipad) || P ] ]

 

MD6

Алгоритм хеширования переменной разрядности, разработанный профессором Рональдом Ривестом (Ronald Rivest) из Массачусетского Технологического Института в 2008 году. Участвовал в конкурсе на SHA-3.

Официальная страница MD6 http://groups.csail.mit.edu/cis/md6

Skein

Разработан группой авторов во главе с Брюсом Шнайером. Участвовал в конкурсе на SHA-3. Skein поддерживает размеры внутреннего состояния 256, 512 и 1024 бит и размер выходного блока до 264−1 бит.

Алгоритм основан на блочном шифре Threefish, работающего в режиме UBI-хэширования.

Официальная документация по хэш-функции - Skein Hash Function Family - http://www.schneier.com/skein1.3.pdf

Библиографический список литературы

1. Лапонина О.Р. Основы сетевой безопасности: криптографические алгоритмы и протоколы взаимодействия: курс лекций: учеб. пособие: для студентов вузов, обучающихся по специальности 510200 «Приклад. математика и информатика» / под ред. В.А. Сухомлина. – М.: Интернет-Ун-т Информ. Технологий, 2005. – 608 с.

2. Хэш-функции. http://old.antichat.ru/txt/hashes.

3. Программные реализации хэш-функций. http://www.mirrors.wiretapped.net/security/cryptography/hashes.