7.4. CBC-MAC
121
Иногда результатом
функции CBC-MAC считают половину последнего
блока, но это уже зависит от конкретной ситуации.
Классическое определение алгоритма CBC-MAC требует, чтобы значение
вектора инициализации было фиксированным и равнялось нулю. Именно та-
кое определение часто встречается в учебниках. Вообще говоря, функцию
CBC-MAC можно использовать и с любыми другими типами вектора иници-
ализации, которые обсуждались при рассмотрении режима CBC, но очевид-
ных преимуществ это не дает.
Никогда не используйте один и тот же ключ для шифрования и аутен-
тификации (разве что вы твердо уверены в необходимости этого шага). Осо-
бенно опасно использовать шифрование в режиме CBC и аутентификацию
CBC-MAC с одним и тем же ключом. В этом случае значение MAC будет
просто равно последнему блоку шифрованного текста.
Алгоритм CBC-MAC не слишком прост в применении. Тем не менее в об-
щем случае он считается безопасным, если соответствующий блочный шифр
также безопасен. Существует ряд атак на основе коллизий, которые сокра-
щают уровень безопасности CBC-MAC до половины размера блока [12]. Вот
простой пример одной из таких атак. Пусть
M
— это
функция CBC-MAC.
Если известно, что
M
(
a
) =
M
(
b
)
, значит,
M
(
a
k
c
) =
M
(
b
k
c
)
. Это объясня-
ется спецификой алгоритма CBC-MAC. Проиллюстрируем данное свойство
на простом примере, когда
c
состоит из одного блока текста. Мы знаем, что
M
(
a
k
c
) =
E
K
(
c
⊕
M
(
a
))
,
M
(
b
k
c
) =
E
K
(
c
⊕
M
(
b
))
.
Поскольку
M
(
a
) =
M
(
b
)
, правые части этих выражений равны.
Такая атака выполняется в два этапа. На первом этапе злоумышленник
собирает значения MAC для большого количества сообщений, пока не на-
ткнется на коллизию. В этом случае у него появятся сообщения
a
и
b
, для
которых
M
(
a
) =
M
(
b
)
. Если теперь злоумышленнику удастся аутентифици-
ровать у получателя сообщение
a
k
c
, он может заменить его сообщением
b
k
c
, причем значение MAC останется прежним. Получатель проверит зна-
чение MAC и примет поддельное сообщение. (Напомним, что мы работаем
с параноидальной моделью. Вполне возможно, что злоумышленник может
создать сообщение и аутентифицировать его у получателя. В реальной жизни
такие ситуации встречаются довольно часто.) Существует много усовершен-
ствованных вариантов такой атаки, которые работают даже при добавлении
поля с длиной сообщения и применении правил дополнения [12].
Эта атака не является тривиальной, поскольку она не срабатывает для
идеальной
функции вычисления MAC. Найти коллизию несложно и для иде-
альной функции. Тем не менее, даже когда у вас появятся сообщения
a
и
b
,