Вопрос

Я реализовал сервер / клиент Kerberos с использованием сокетов на Java, где клиент отправляет свой service-TGT на сервер, и сервер знает, что клиент аутентичен.

Моя главная проблема - это скрытная атака "человек посередине".Кто-то мог бы захватить TGT и притвориться клиентом.

В чистой реализации Java это не проблема, поскольку дальнейшая связь шифруется с помощью сеансовых ключей сервиса (GSSContext.wrap()/GSSContext.unwrap()), которых нет у ищейки.

Но клиентское приложение необходимо переписать на C #.

Я полагаю, что моими двумя вариантами сохранения зашифрованной связи являются:

  1. Напишите мои собственные методы wrap() и unwrap() на C#
  2. Используйте SSL / TLS.

Возможен ли вариант 1, прежде чем я рассмотрю SSL в качестве опции?

Это было полезно?

Решение

Вариант 1 предполагает некоторое тяжелое перенос кода, на которое у вас может быть время, а может и не быть.Вариант 2 звучит неплохо.

Существует вариант 3, который зависит от ваших ограничений, используйте частный зашифрованный TCP-канал, который должен быть быстрее, чем SSL / TLS, но, как я уже сказал, может быть неприменим.Он мог бы использовать симметричное шифрование, инициализированное сеансовыми ключами (которые являются секретными).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top