2010-09-24 6 views
1

Donc, j'ai un protocole de travail que le client doit authentifier avec l'utilisateur et le mot de passe pour se connecter sur le serveur. Ensuite, le serveur et le client échangeraient des messages et des fichiers. Tout fonctionne bien et j'utilise le flux d'entrée/sortie pour cela. J'ai besoin d'ajouter le cryptage à la conversation et l'authentification utilisateur/mot de passe aussi. Je ne veux pas stocker une clé symétrique dans mon pot, donc je pense que je vais avoir besoin d'une clé publique/privée pour cela. Je sais que je pourrais utiliser le cryptage public/privé pour envoyer une clé symétrique, mais je ne sais vraiment pas comment faire cela en Java. Et je pense que je pourrais juste utiliser le cryptage sur les messages et non sur le transfert de fichiers. J'ai cherché sur Google et trouvé différentes façons d'utiliser la cryptographie avec des prises Java, quelle est la meilleure (correcte) façon? Utilisation de CipherOutput (Input) Stream? Ou y a-t-il un autre moyen?Comment puis-je ajouter du cryptage à mon propre protocole TCP à l'aide de Java Sockets?

Si quelqu'un pouvait poster un morceau de code Je vous serais reconnaissant

Répondre

3

SSL. Voir javax.net.ssl ​​et le Guide de référence JSSE.

+0

merci, ça a l'air génial et simple, mais puis-je l'utiliser avec NIO pour le serveur aussi ?? – fredcrs

+0

Oui mais avec beaucoup de difficulté. Voir le SSLEngine. Mais ce n'est pas pour les timides. – EJP

0

Si vous êtes dans le pétrin pour le temps, vous pouvez appuyer sur SSH port forwarding.

Vous allez configurer une règle de pare-feu sur votre serveur qui autorisera l'accès direct au port de libération de texte uniquement à partir de l'hôte du pare-feu.

Ensuite, sur un client, vous allez configurer une session SSH de transfert de port (option -L sur le client ssh).

La machine cliente parlera alors du texte clair à un hôte local sur le port transféré et toute la conversation sera cryptée par le tunnel SSH.

+0

C'est aussi une bonne idée, mais je dois l'implémenter en tant que logiciel commercial et ne pas être en mesure de compter avec n'importe quelle règle de pare-feu. – fredcrs

Questions connexes