Я понимаю, что Kerberos обеспечивает аутентификацию с использованием шифрования. Я вижу, он обменивается ключами сеанса. Используются ли эти сеансовые ключи для того, чтобы приложения отправляли свои данные через это сетевое шифрование после аутентификации?
В качестве примера для пояснения:
Если я керберизирую свой telnet-сервер и клиент, мой сеанс клиента и сервера также будет зашифрован (предположительно, с использованием вышеупомянутых ключей сеанса) (то есть сниффер не может видеть команды, которые я набираю в сеансе)?
Я вижу, что протокол SPNEGO kerberos на основе HTTP этого не делает, и для защиты сеанса необходимо использовать SSL.
Это полностью зависит от того, как реализована услуга. Я достаточно уверен, что большинство версий Kerberized Telnet действительно используют ключи сеанса для шифрования трафика.
Это было бы «стандартным» использованием API-интерфейса kerberos для старых программ. Практически все, что поставляется со стандартным дистрибутивом Kerberos, использует Kerberos таким образом. Ключевой API для поиска:
krb5_mk_priv
Другой стандартный API:
gss_wrap
однако в этом случае вам необходимо изучить аргументы вызова, чтобы определить, включена ли конфиденциальность.
Видеть
http://www.kerberos.org/software/appskerberos.pdf
для относительно недавнего обзора того, как использовать Kerberos в приложении.
SPNEGO - это особый случай в мире Kerberos, поскольку он используется только для аутентификации. Как правило, любое правильно спроектированное использование kerberos в протоколе приложения будет включать в себя шифрование данных сеанса, если вы специально не отключите его по какой-либо причине.
К сожалению, не все способы использования kerberos спроектированы должным образом. Это то, что вы должны проверить при изучении любого приложения, которое утверждает, что поддерживает Kerberos.