
672 Глава 10. Распределенные файловые системы
тельно Боб. Еще он возвращает вызов
RB
(как часть сообщения 2), который Али-
са расшифровывает и возвращает ему обратно (сообщение 3). После взаимной
аутентификации Боб генерирует сеансовый ключ Ks, который может использо-
ваться при последующем взаимодействии между Алисой и Бобом.
Защищенные вызовы RPC в Coda требуются только для организации защи-
щенного взаимодействия между клиентом и сервером, а этого недостаточно для
начала защищенного сеанса, в который может быть вовлечено несколько серве-
ров и который может продлиться достаточно долго. Поэтому поверх защищен-
ных вызовов RPC используется второй протокол, в котором клиент, как уже
упоминалось, получает от сервера аутентификации маркеры аутентификации.
Маркер
ауте}1тификации
{authentication token) аналогичен талону Kerberos.
Он содержит идентификатор получающего его процесса, идентификатор марке-
ра, сеансовый ключ и отметки времени, указывающие срок начала и срок окон-
чания действия маркера. Для поддержания целостности подлинность маркера
может быть подтверждена средствами криптографии. Так, например, если Т
—
это маркер,
К^псе
— секретный ключ, совместно используемый всеми серверами
Vice,
а Я
—
хэш-функция, то [Г, Я
{К^гсе,
Т)]
—
криптографически удостоверен-
ная версия
Т.
Другими словами, несмотря на то, что Т посылается простым тек-
стом по незащищенному каналу, злоумышленник не в состоянии изменить его
так, чтобы сервер не заметил подмены.
Когда Алиса подключается к системе Coda, она должна первым делом полу-
чить от сервера AS маркеры аутентификации. При этом она переходит на защи-
щенные вызовы RPC, применяя свой пароль для генерации секретного ключа
KA,AS^
который будет использоваться совместно с AS, в том числе и для взаимной
аутентификации по ранее описанному механизму. AS возвращает ей два маркера
аутентификации.
Свободный маркер {clear token)
СТ= [Л,
TID,
Ks,
Tetany Tend]
иден-
тифицирует Алису и содержит идентификатор маркера
TID,
сеансовый ключ Ks
и две отметки времени,
Tstan
и
Tend^
определяющие срок действия маркера. Кроме
того,
AS посылает
секретный
маркер
{secret
token) ST=
К^ке{[СТ\*Кгпсе),
который
представляет собой свободный маркер
СТ,
подписанный общим для всех серве-
ров Vice секретным ключом
K^^ice
и зашифрованный тем же самым ключом.
Сервер Vice в состоянии расшифровать маркер ST
и
извлечь из него как мар-
кер
СТ,
так и сеансовый ключ
Ks.
Кроме того, поскольку ключ
К^се
известен толь-
ко серверам Vice, такой сервер может проверить целостность и с легкостью об-
наружить подмену свободного маркера СТ (подобная проверка требует знания
ключа
K^ice)-
Когда бы Алиса ни создавала защищенный канал с сервером Vice, для иден-
тификации она будет использовать секретный маркер ST, как показано на
рис.
10.25. Для шифрования запроса
RA,
который она посылает серверу, требует-
ся сеансовый ключ
Ks,
полученный ранее от AS в свободном маркере.
Сервер, в свою очередь, сначала расшифровывает ST, используя общий сек-
ретный ключ
Kz^ice,
и получает СТ. После этого он ищет ключ Ks, который далее
используется для завершения аутентификации. Разумеется, сервер также произ-
водит проверку целостности
СТ и
продолжает работу, только если маркер дейст-
вителен.