14.5. Сообщения и действия
277
под выполнение каждого протокола или же используя какую-нибудь систему
управления событиями.
При наличии событийно-управляемой инфраструктуры реализовать крип-
тографический протокол будет сравнительно несложно. Состояние протокола
содержит конечный автомат, который указывает, какого типа должно быть
следующее сообщение. В общем случае сообщения других типов не принима-
ются. Если в систему поступает сообщение ожидаемого типа, оно анализиру-
ется и обрабатывается согласно установленным правилам.
14.5.5
Ошибки
Криптографические протоколы всегда включают в себя массу проверок.
К их числу относятся контроль типа протокола и типа сообщения, провер-
ка того, принадлежит ли полученное сообщение к типу, заданному состоя-
нием выполнения протокола,
анализ сообщения и выполнение необходимых
криптографических проверок. Если хотя бы одна из этих проверок окончится
неудачей, в системе будет сгенерирована ошибка.
Поскольку ошибки представляют собой потенциальный путь нападения
на систему, они нуждаются в самой тщательной обработке. Наиболее без-
опасное решение — при обнаружении ошибки не посылать никаких ответных
сообщений и моментально удалить состояние протокола. Это минимизирует
количество информации, которое злоумышленник может получить о прото-
коле. К сожалению, подобную систему, которая никак не сигнализирует об
обнаружении ошибки, едва ли можно назвать дружественной.
Чтобы система действительно была удобна в использовании, нам могут
потребоваться сообщения об ошибках. Если это возможно, не посылайте со-
общения об ошибках другим участникам протокола. Запишите сообщение об
ошибке в журнал, хранящийся в безопасном месте, чтобы системный адми-
нистратор смог определить причину проблемы. Если же вы
должны
послать
сообщение об ошибке, постарайтесь сделать его как можно менее информа-
тивным. Зачастую вполне достаточно простого сообщения, например: “Это
ошибка”.
Отправка сообщений об ошибках особенно опасна при осуществлении тай-
минг-атак. Злоумышленник Е может отправить пользователю А фальсифи-
цированное сообщение и подождать ответа. Время, которое потребуется поль-
зователю А для того, чтобы обнаружить ошибку и отослать ответ, часто поз-
воляет определить, что именно в сообщении было неправильным и до какого
момента все шло так, как нужно.
Вот хороший пример того, какую опасность могут представлять подобные
взаимодействия. Много лет назад Нильс работал с коммерческой системой
смарт-карт. Для активизации такой смарт-карты пользователю требовалось