J'utilise RSA pour crypter la communication entre un serveur et un client. Disons que nous avons 2 clés asymétriques, clé 1 et clé 2.
Le serveur a la clé1 (privée) depuis le début et le client a la clé1 (publique).
Voici donc le scénario :
- le client génère la clé2
- le client se connecte au serveur
- envoi de la clé2(publique) cryptée avec la clé1(publique)
- à partir de maintenant, le serveur enverra toutes les données cryptées avec la clé2(publique)
- le client envoie des données aléatoires au serveur
- le serveur renvoie les mêmes données hachées
- le client vérifie que les données sont correctes
D'après ce que je vois, cela devrait empêcher une attaque de type "man-in-the-middle", ou est-ce que j'ai raté quelque chose ? Au point 7, le client devrait savoir si quelqu'un essaie de donner au serveur la mauvaise clé pour chiffrer, car personne d'autre que le serveur ne peut déchiffrer key2(public).
S'il y a quelque chose à faire pour améliorer la sécurité, dites-le moi.