2009-10-19 4 views
1

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

Моей главной задачей является атака «человек в середине». Кто-то может захватить TGT и притвориться клиентом.

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

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

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

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

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

ответ

3

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

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

+0

У меня есть SSL для работы, потому что я решил, что вариант 1 будет болезненным. Я не могу использовать сценарий с закрытым ключом, потому что клиентское приложение может быть декомпилировано для его работы. SSL/TLS похоже на путь. Спасибо – djb

+1

Великий, чтобы помочь. Чтобы уточнить, я имел в виду, что симметричный алгоритм шифрования может использовать ключ сеанса как свой секрет. Это не было бы жестко запрограммировано и изменилось бы на каждом сеансе. –

Смежные вопросы