Возможно ли взаимодействие Java / C # Kerberos?
Вопрос
Я реализовал сервер / клиент Kerberos с использованием сокетов на Java, где клиент отправляет свой service-TGT на сервер, и сервер знает, что клиент аутентичен.
Моя главная проблема - это скрытная атака "человек посередине".Кто-то мог бы захватить TGT и притвориться клиентом.
В чистой реализации Java это не проблема, поскольку дальнейшая связь шифруется с помощью сеансовых ключей сервиса (GSSContext.wrap()/GSSContext.unwrap()), которых нет у ищейки.
Но клиентское приложение необходимо переписать на C #.
Я полагаю, что моими двумя вариантами сохранения зашифрованной связи являются:
- Напишите мои собственные методы wrap() и unwrap() на C#
- Используйте SSL / TLS.
Возможен ли вариант 1, прежде чем я рассмотрю SSL в качестве опции?
Решение
Вариант 1 предполагает некоторое тяжелое перенос кода, на которое у вас может быть время, а может и не быть.Вариант 2 звучит неплохо.
Существует вариант 3, который зависит от ваших ограничений, используйте частный зашифрованный TCP-канал, который должен быть быстрее, чем SSL / TLS, но, как я уже сказал, может быть неприменим.Он мог бы использовать симметричное шифрование, инициализированное сеансовыми ключами (которые являются секретными).