Таблица 2 - Флаги билета Kerberos
Флаг | Описание |
FORWARDABLE | Указывает, что на основании данного билета TGTслужба выдачи билетов может генерировать новый билет TGTс другим сетевым адресом (поле имеется только в билетах TGT). |
FORWARDED | Указывает на то, что данный билет TGTбыл переадресован или генерирован на основе другого билета TGT, прошедшего переадресацию. |
PROXY | Указывает на то, что сетевой адрес в данном билете отличается от адреса, приведенного в билете TGT, на основании которого он выдан. |
RENEWABLE | Используется в сочетании с полями endtimeи renew-till, разрешая периодическое обновление службой KDCбилетов с повышенным срока действия. |
INITIAL | Указывает, что данный билет является билетом выдачи билетов (поле имеется только в билетах TGT). |
Клиенту необходимо знать часть информации, содержащейся как в обычных билетах, так и в билетах TGT, чтобы управлять своей кэш-памятью удостоверений. Возвращая билет и сеансовый ключ в рамках подпротоколов AS Exchange или TGS Exchange, служба KDC упаковывает клиентскую копию сеансового ключа в структуру данных, где уже могут быть заполнены поля flags, authtime, starttime, endtime и renew-till. Вся эта структура шифруется с помощью ключа клиента, включается в пакет KRB_AS_REP или KRB_TGS_REP и возвращается на рабочую станцию клиента.
В билете указывается время начала и конца его действия. В течение этого промежутка клиент, которому выдан данный билет, может неограниченное количество раз представить его для получения доступа к службе. Чтобы уменьшить риск компрометации билета или соответствующего сеансового ключа, администратор вправе ограничить максимальный срок действия билета. Этот срок является одним из элементов политики Kerberos.
Запрашивая в центре KDC билет для доступа к службе, клиент может указать конкретное время начала его действия. Если этого не сделано или заданное время уже минуло, центр KDC указывает в поле starttime текущее время.
Но независимо от того, указал клиент время начала действия билета или нет, запрос обязательно должен содержать время прекращения срока его действия. Получив такой запрос, служба KDC рассчитывает значение поля endtime. Для этого она суммирует наибольший срок действия билета, предусмотренный политикой Kerberos, со значением поля starttime, а затем сравнивает полученный результат со временем прекращения действия билета, указанным в запросе клиента. Если они не совпадают, в поле endtime заносится то время, которое наступит раньше.
О скором истечении срока действия сеансового билета или билета TGT служба KDC не уведомляет клиента. Не следит она и за транзакциями с клиентом, если не считать краткосрочных записей, главная цель которых - предотвратить повторное использование перехваченных пакетов.
Если клиент, пытаясь подключиться к серверу, передаст просроченный сеансовый билет, то в ответ он получит сообщение об ошибке. В этом случае клиенту придется вновь обращаться в службу KDC и заказывать новый сеансовый билет. Однако после аутентификации подключения срок действия сеансового билета перестает играть какую-либо роль, поскольку он нужен только для подключения к серверу. Даже если срок действия сеансового билета прекратится во время проведения сеанса, это никак не скажется на ходе текущих операций.
Может случиться и так, что клиент включит просроченный билет TGT в свой запрос на сеансовый билет, который направит в службу KDC. В этом случае центр выдачи билетов перешлет клиенту сообщение об ошибке, после чего клиенту придется запросить новый билет TGT, а для этого ему понадобится долговременный ключ пользователя. Если в процессе начальной регистрации такой ключ не был занесен в кэш-память, система может попросить пользователя еще раз ввести свой пароль, на основании которого будет вновь рассчитан долговременный ключ.
Один из методов защиты сеансовых ключей состоит в частой их смене. С этой целью в политике Kerberos можно предусмотреть относительно небольшой максимальный срок действия билетов. Но есть и другой способ - использовать обновляемые билеты. При этом обеспечивается периодическое обновление сеансовых ключей без необходимости запрашивать новый билет. Если политика Kerberos разрешает применение обновляемых билетов, служба KDC включает в каждый генерируемый билет флаг RENEWABLE и указывает два срока истечения его действия. Первый из них ограничивает жизнь текущего экземпляра билета, а второй определяет общее время, в течение которого может использоваться билет с учетом его обновлений.
Поле endtime указывает, когда истекает срок действия текущего экземпляра билета. Как и в случае с необновляемыми билетами, значение этого поля равно сумме значения из поля starttime и наибольшего срока действия билетов, определенного политикой Kerberos. Клиент, использующий обновляемый билет, должен представить его в службу KDC для обновления до времени, указанного в поле endtime. Одновременно с билетом в центр распределения ключей направляется и новый аутентификатор. Получив билет, который нужно обновить, служба KDC, прежде всего, проверяет общий срок его действия, указанный в поле renew-till. Это время задается при первичной генерации билета. Оно определяется путем суммирования значения из поля starttime с максимально допустимым политикой Kerberos сроком действия билета с учетом всех обновлений. Если указанное в поле renew-till время еще не наступило, служба KDC генерирует новый экземпляр билета, где указывает более позднее время endtime и заменяет сеансовый ключ.
Это дает администратору возможность предусмотреть в политике Kerberos сравнительно частое обновление билетов, например, ежедневно. Смена сеансовых ключей при обновлении билета намного снижает риск их компрометации. В то же время администратор может задать довольно длительное общее время использования билета - неделю, месяц, а то и больше. По истечении этого срока билет становится полностью непригодным для дальнейшего использования и обновлению не подлежит.
Определенную сложность для протокола Kerberos создают многоуровневые клиент-серверные приложения. Здесь клиент может подключаться к серверу, который, в свою очередь, должен будет подключиться к другому серверу более высокого уровня. Для этого первому серверу понадобится билет на подключение ко второму. В идеале такой билет должен ограничивать доступ первого сервера ко второму лишь теми функциями, на которые клиент имеет права.
Для решения этой проблемы в протоколе Kerberos имеется специальный механизм - так называемое делегирование аутентификации. По существу, в такой ситуации клиент поручает свою аутентификацию серверу. С этой целью он уведомляет службу KDC о том, что данный сервер имеет право представлять клиента. Такой подход напоминает концепцию имперсонации (concept of impersonation) Windows 2000.
Делегирование аутентификации возможно двумя способами. Во-первых, клиент может получить билет на подключение к серверу высшего уровня, а затем передать его ближайшему серверу. Билеты, полученные таким способом - клиентом для ближайшего сервера - называются представительскими (proxy tickets). Однако на этом пути имеется одна серьезная трудность: чтобы получить представительский билет, клиенту нужно знать имя сервера высшего уровня. Решить проблему помогает второй способ делегирования аутентификации. Здесь клиент передает на ближайший к нему сервер свой билет TGT, который тот по мере необходимости использует для запроса собственных билетов. Билеты TGT, полученные таким образом, то есть, по удостоверению клиента, называются передаваемыми (forwarded tickets). Какой из описанных способов применяется службой KDC, зависит от политики Kerberos.
Kerberos это - сетевой протокол аутентификации, позволяющий безопасно передавать данные через незащищённые сети для безопасной идентификации. Также является набором бесплатного ПО от Массачусетского технологического института (Massachusetts Institute of Technology (MIT)), разработавшего этот протокол. Её организация направлена в первую очередь на клиент-серверную модель и обеспечивает взаимную аутентификацию - оба пользователя через сервер подтверждают личности друг друга. Сообщения, отправляемые через протокол Kerberos, защищены от прослушивания и атак повторного воспроизведения.
Kerberos является одним из вариантов протокола Нидхема-Шрёдера, основан на симметричной криптосистеме и требует третье доверенное лицо (сервер). Расширение Kerberos позволяет использовать открытые ключи в процессе аутентификации.
1. По материалам ресурса http://ru.wikipedia.org/wiki/Kerberos
2. По материалам ресурса http://www.oszone.net/4188_4/Kerberos