Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Теперь посмотрим, что происходит, если пользователь joeuser (а точнее, принципал joeuser@MYREALM.RU – поле instance для «живых» пользователей обычно не используется) пытается получить доступ к этому серверу. Предполагается, что как клиентская программа telnet, так и telnetd демон собраны с поддержкой Kerberos (обе эти программы входят в дистрибутив Heimdal). Разумеется, как сам сервер, так и пользователь должны быть зарегистрированы в одном и том же секторе Kerberos. Как обычно, сеанс подключения к серверу начинается с того, что пользователь запускает telnet со своим регистрационным именем и именем удаленного компьютера telnet -l joeuser kdc.myrealm.ru. Клиентская программа после этого обращается к KDC с просьбой предоставить для joeuser доступ к хосту kdc.myrealm.ru. Kerberos генерирует по определенным правилам шифровальный ключ (session key) и разыскивает по своей базе данных принципалов joeuser и host/kdc.myrealm.ru, а также их пароли (ключи). Если пароли найдены (в противном случае сеанс заканчивается аварийно – т.к. кто-то из этих двух принципалов не зарегистрирован в секторе Kerberos), Kerberos приступает к генерированию сессионного ключа (session key). С помощью ключа принципала host/kdc.myrealm.ru он шифрует сгенерированный session key вместе с именем пользователя joeuser, потом прилагает к зашифрованному блоку вторую копию того же session key и снова шифрует получившийся билетик с помощью пароля пользователя. После этого пакет отсылается клиентской программе. Если к этому времени пользователь набрал свой пароль и он совпадает с паролем, использованным Kerberos при шифровке, то клиентская программа сумеет расшифровать билетик. Далее, половина билетика (с session key) остается пользователю, а вторая, которая не может быть расшифрована клиентом, поскольку ключ сервера ей неизвестен, пересылается на сервер. Сервер расшифровывает ее с помощью своего ключа и таким образом узнает как session key, так и имя пользователя, что позволяет серверу авторизовать его своими собственными средствами. Заметим, что помимо регистрации в этом случае имеется возможность использовать полученный session key, поскольку в итоге он известен как клиенту, так и серверу, для шифрования сетевого трафика в рамках данной сессии, чем многие приложения и пользуются. Схематически процесс обмена сертификатами показан на рис. 1.
Что еще интересного в используемом Kerberos механизме аутентификации? Дело в том, что Kerberos оказывается еще более параноидальным, чем мы предполагали вначале, т.е. считает ненадежными не только сетевые соединения (ни один из паролей, как вы могли заметить, не передается в открытую по сети), но и клиентский, и даже серверный компьютер. Для каждого из них ключ/пароль партнера так и остается неизвестным – только session key, который для потенциального взломщика интереса не представляет, поскольку используется только в данной сессии. Как известно, безопасность и удобство пользователей вещи взаимоисключающие. Но ученым из МТИ удалось найти удачный компромисс, придумав еще одну замечательную вещь – ticket granting ticket (TGT). Если пытаться переводить этот термин на русский – «билет для выдачи других билетов», что-то вроде единого проездного. Смысл его в том, что пользователь сети проходит полностью процедуру регистрации (с вводом имени и пароля) в своем секторе только один раз, а сертификат, полученный в результате, затем используется клиентскими приложениями как эквивалент пользовательского пароля для получения доступа к сетевым сервисам. Процесс выдачи ТGT ничем не отличается от описанного выше, только в качестве службы, к которой пользователь получает доступ, выступает сам Kerberos – его Ticket Granting Service. После получения TGT записывается в кэш-файл на диске клиентского компьютера и затем по мере надобности извлекается оттуда. В схеме, описанной выше, session-key, закодированный в TGT используется вместо пароля пользователя при шифровании сертификата, предоставляемого для доступа к сетевому ресурсу. И хотя TGT хранится в кэше на диске рабочей станции пользователя, угроза, связанная с его перехватом, не столь уж серьезна, поскольку его действенность ограничена по времени. TGT позволяет организовать в корпоративной сети single sign-on (система единой регистрации) систему. Например, с помощью замены системного login на керберизованный аналог (программа с тем же именем входит в состав Heimdal Kerberos) при входе на рабочую станцию пользователь получает TGT, который затем используется для генерирования билетиков, специфичных для какой-нибудь из сетевых служб.