Глава 7. Коды аутентичности сообщений
номер сообщения, используемый для защиты от атак воспроизведения (re-
play attacks), адрес источника и назначения сообщения и т.п. Большинство
подобных полей являются частью заголовка аутентифицируемого (и часто
зашифрованного) сообщения. Значение MAC должно обеспечивать аутенти-
фикацию не только
m
, но и
d
. Как правило, для решения этой проблемы
функцию вычисления MAC применяют не к
m
, а к
d
k
m
.
Следующую проблему лучше всего определить с помощью правила про-
ектирования.
Правило проектирования 4.
Принцип Хортона: аутентифицируйте не
то, что сказано, а то, что имеется в виду.
Значение MAC аутентифицирует только строку байтов, в то время как
пользователи А и Б хотят обеспечить аутентификацию сообщения с конкрет-
ным смыслом. В действительности отличие того, что сказано (например, по-
следовательность байтов, отосланная пользователем А пользователю Б), от
того, что имеется в виду (например, интерпретация сообщения), играет очень
важную роль.
Предположим, пользователь А применяет значение MAC для аутентифи-
кации сообщения
m
:=
a
k
b
k
c
, где
a
,
b
и
c
— некоторые поля данных.
Пользователь Б получает сообщение
m
и разбивает его на поля
a
,
b
и
c
. Но
правильно ли он это делает? Разбивка на поля должна проводиться в соот-
ветствии с некоторыми правилами. Если эти правила не совпадают с теми,
которые применяются пользователем А для построения сообщения, пользо-
ватель Б получит неправильные значения полей. Подобные ситуации крайне
нежелательны, поскольку они означают возможность аутентификации фаль-
сифицированных данных. Поэтому очень важно, чтобы пользователь Б раз-
бивал сообщение
m
именно на те поля, из которых оно было составлено поль-
зователем А.
Этого несложно добиться в простых системах. Обычно поля данных име-
ют фиксированный размер. Тем не менее рано или поздно многие из нас ока-
зываются в ситуации, когда поля данных должны иметь переменный размер
или новая версия программного обеспечения будет использовать поля боль-
шего размера. Разумеется, новой версии программного обеспечения понадо-
бится обратная совместимость с более старой версией. Тут-то и начинаются
проблемы. Когда длина поля перестанет быть постоянной, пользователь Б
будет определять ее из некоторого контекста, и этот контекст может стать
объектом манипуляций злоумышленника. Предположим, что пользователь А
применяет старую версию протокола обмена данными и старые, более корот-
кие поля. Пользователь Б работает с новой версией протокола. Злоумышлен-
ник Е манипулирует каналом общения между пользователями А и Б таким
образом, чтобы пользователь Б думал, что пользователь А применяет новую
7.8. Использование MAC
131
версию протокола. (Детали того, как именно злоумышленник Е осуществляет
подобные манипуляции, не имеют значения. Чтобы подсистема вычисления
MAC была безопасной, она не должна зависеть от других частей системы.)
В результате этого пользователь Б разбивает сообщение на поля большего
размера, чем нужно, и получает некорректные данные.
Именно здесь на помощь приходит принцип Хортона
5
. Аутентифициро-
вать нужно не само сообщение, а его смысл. Другими словами, значение MAC
должно аутентифицировать не только сообщение
m
, но и всю информацию,
которая применяется пользователем Б для интерпретации этого сообщения.
Обычно подобная информация включает в себя идентификатор протокола,
номер версии протокола, идентификатор сообщения, образованный в соот-
ветствии с данным протоколом, размеры полей и т.п. Одним из частичных
решений проблемы может стать отказ от простой конкатенации полей и ис-
пользование вместо этого структуры данных наподобие XML, которая мо-
жет быть проанализирована без необходимости предоставления какой-либо
дополнительной информации.
Принцип Хортона — одна из причин того, почему аутентификация для
протоколов нижних уровней не обеспечивает необходимой аутентификации
для протоколов верхних уровней. Система аутентификации на уровне IP-па-
кетов не может знать о том, как почтовый клиент будет интерпретировать
сообщения. Следовательно, она не сможет проверить, действительно ли кон-
текст, в котором интерпретируется сообщение, соответствует контексту, в ко-
тором это сообщение было отослано. Единственным решением данной про-
блемы является создание для почтового клиента собственной системы аутен-
тификации данных (разумеется, в дополнение к системе аутентификации на
нижних уровнях).
В завершение необходимо отметить следующее: тщательно обдумайте, ка-
кие данные включать в процесс аутентификации. Все эти данные вместе с са-
мим сообщением должны быть представлены в виде строки байтов так, чтобы
последнюю можно было уникальным образом разбить на исходные поля. Не
забывайте применять это к результату конкатенации дополнительных дан-
ных и сообщения, которая упоминалась в начале этого раздела. Если вы со-
бираетесь аутентифицировать строку
d
k
m
, постарайтесь сформулировать
фиксированное правило того, как разбивать полученную строку на поля
d
и
m
.
5
Для тех, чье счастливое детство прошло не в США, поясняем: Хортон — один из пер-
сонажей д-ра Сьюсса (Dr. Seuss), автора популярных детских книг [89].
|