18.3. Решения попроще
333
телем Б, ЦРК выполняет свою
функцию и тут же об этом забывает. Он не
следит за тем, какие ключи были сгенерированы им для общения пользо-
вателей друг с другом. Это очень удобное свойство, так как оно позволяет
без особых трудностей распределить сверх меры загруженный сервер клю-
чей между несколькими компьютерами. Поскольку серверу ключей не нуж-
но обновлять свое состояние, пользователь А может в один момент общаться
с одной копией сервера, а в следующий момент — уже с другой его копией.
Оказывается, что криптографические протоколы, которые требуются для
работы систем на основе Kerberos, очень сложны. Вначале проектирование
подобных протоколов выглядит довольно простым, но даже разработки опыт-
ных криптографов в конце концов оказывались взломанными. Изъяны, кото-
рым удается проникнуть в эти протоколы, крайне тонки и незаметны. Мы не
будем рассматривать протоколы такого типа, поскольку считаем их слишком
опасными. Даже мы избегаем разрабатывать их “с нуля”. Если вам действи-
тельно нужен подобный протокол, воспользуйтесь последней версией Ker-
beros. Он уже довольно давно применяется на практике и тщательно изучен
многими компетентными критиками.
18.3
Решения попроще
Иногда использовать Kerberos невозможно. Структуру этого протокола
никак не назовешь простой. Кроме того, она накладывает на систему неко-
торые ограничения. Серверы должны запоминать все принятые ими билеты,
а каждому участнику общения нужны надежные часы
1
. В некоторых ситуа-
циях удовлетворить подобные требования невозможно.
Между тем мы можем создать более простое и надежное решение, если не
будем слишком заострять внимание на эффективности. Оказывается, что со-
хранение сервером ключей своего состояния может весьма пригодиться для
распространения ключей. Современные компьютеры намного мощнее, чем
вычислительные машины тех лет, когда создавался Kerberos. Поэтому они
не должны испытывать затруднений, сохраняя состояние сервера для десят-
ков тысяч участников. Даже наличие большой системы со 100 000 участников
не представляет особых проблем: если на каждого участника потребуется по
1 Кбайт для сохранения состояния на сервере ключей, сохранение всех состо-
яний потребует лишь 100 Мбайт памяти. Разумеется, сервер ключей все же
должен быть достаточно быстрым, чтобы генерировать все запрашиваемые
ключи, но это не составит
проблем для современных быстрых компьютеров.
Мы ограничимся тем, что рассмотрим использование только одного сер-
вера ключей. Существуют методы, с помощью которых состояние сервера
1
Билет (ticket) — это сообщение, которое пользователь А отсылает пользователю Б. Это
стандартная терминология Kerberos.