15.11. Небольшое предупреждение
299
занных компонентов, а настоящая адская смесь спецификации и реализации.
Все это скорее напоминает плохую, очень сложную компьютерную програм-
му без каких-либо признаков модуляризации. Все мы знаем, к чему приводит
подобная мешанина, поэтому давно разработали
методы разбивки на моду-
ли, которые позволяют справиться со сложностью программы. К сожалению,
нам не хватает методов модуляризации для протоколов. Если вы ищете тему
для долгосрочного научно-исследовательского проекта, данный
вопрос может
стать хорошим предметом для изучения. С другой стороны, однажды Нильс
написал исследовательскую работу именно по этой теме. Работа Нильса бы-
ла принята. Он получил финансирование на четыре года исследований, но
впоследствии отказался от проекта, поскольку осознал, что не имеет ни ма-
лейшего представления о том, с какой стороны можно хотя бы приблизиться
к этому вопросу. Человек, которому в конце концов перепоручили проект
Нильса, тоже не продвинулся в нем ни на шаг, зато провел четыре года цен-
ных исследований совсем в другой области. Отсюда вывод: не все так просто,
как кажется. Наверное, сложно получить степень доктора наук, если после
многолетних исследований вы заявите комиссии: “Понятия не имею, как это
делается”.
15.11
Небольшое предупреждение
Мы постарались, чтобы процесс проектирования нашего протокола вы-
глядел как можно проще. Однако это не должно вводить вас в заблуждение.
В действительности проектирование протокола — занятие весьма сложное,
требующее огромного опыта. Даже опытный разработчик может легко до-
пустить ошибку. Хотя мы и приложили максимум усилий, чтобы сделать
все так, как нужно, не исключена вероятность того, что протокол согласова-
ния ключей, разработанный нами в процессе написания этой книги, окажется
ненадежным.
15.12
Согласование ключей с помощью пароля
До сих пор предполагалось, что согласование ключей основывается на
некоторой системе аутентификации. Зачастую, однако, у пользователей нет
никаких способов аутентификации кроме пароля. В подобных случаях мы
могли бы просто использовать
функцию вычисления MAC, применяя пароль
в качестве ключа, но это очень опасно: имея расшифровку протокола (добы-
тую путем прослушивания канала общения), злоумышленник может легко
проверить правильность любого конкретного пароля. Достаточно лишь вы-
числить значение MAC и посмотреть, будет ли оно правильным.