2009-10-19 10 views
1

J'ai mis en place un serveur/client Kerberos en utilisant les sockets en Java, où le client envoie son service TGT au serveur, et le serveur connaît le client est authentique.Interaction Java/C# Kerberos possible?

Ma principale préoccupation est le furetage 'man-in-the-middle' attaque. Quelqu'un pourrait capturer le TGT et prétendre être le client. Dans une implémentation Java pure, cela ne pose aucun problème, car une communication supplémentaire est cryptée avec les clés de session de service (GSSContext.wrap()/GSSContext.unwrap()), ce qui n'est pas le cas du snooper.

Mais l'application cliente doit être ré-écrit en C#.

Je figure mes deux options pour maintenir la communication cryptée sont:

  1. écrire mes propres méthodes wrap() et déballez() en C#
  2. SSL/TLS.

Est-ce que l'option 1 est possible, avant de considérer le SSL comme une option?

Répondre

3

Option 1 implique un certain portage de code lourd que vous pouvez peut ou non avoir le temps de le faire. L'option 2 sonne bien.

Il est l'option 3 qui dépend de vos contraintes, utilisez un canal crypté TCP privé, qui devrait être plus rapide que le protocole SSL/TLS, mais comme je le disais peut ne pas être applicable. Il pourrait utiliser le chiffrement symétrique, ayant initialisé par les clés de session (qui sont secrets)

+0

J'ai SSL pour travailler, parce que je pensais que l'option 1 serait douloureuse. Je ne peux pas vraiment utiliser un scénario de clé privée, car l'application cliente pourrait être décompilée pour fonctionner. SSL/TLS semble être le chemin à parcourir. Merci – djb

+1

Super d'avoir été utile. Juste pour clarifier, je voulais dire que l'algorithme de chiffrement symétrique pourrait utiliser la clé de session comme son secret. Ce ne serait pas codé en dur et changerait à chaque session. –