diff --git a/Operation.md b/Operation.md index f5a6a4b..cabea83 100644 --- a/Operation.md +++ b/Operation.md @@ -1,4 +1,17 @@ # Fonctionnement général ## Handshake -La négociation TLS, plus communément appellée \ No newline at end of file +La négociation TLS, plus communément appelée _handshake_, est l'opération qui va précéder toute connexion sur un serveur. C'est un moment décisif car c'est ce moment qui va déterminer si le client peut échanger avec le serveur **ou non**. Le chiffrement de la négociation est asymétrique. Cela signifie qu'il y a une clé différente pour chiffrer et déchiffrer des données. En d'autres termes il est impossible de déchiffrer des données avec la même clé que celle qui a été utilisée pour les chiffrer. +Le serveur possède donc ces 2 clés sur son système. La clé publique va être partagée avec les clients afin de chiffrer la connexion tandis que la clé privée sera conservée bien précieusement afin de déchiffrer les requêtes des clients. + +Ce processus se déroule en plusieurs étapes : + +1. Le serveur envoie sa clé publique au client. De par sa nature, cette dernière n'est pas chiffrée et est identique à tout les clients qui vont communiquer avec ce serveur. Elle permet donc uniquement de chiffrer les données. **A ce stade, le seul à pouvoir déchiffrer quoi que ce soit, c'est le serveur !** Le client va donc souhaiter comprendre à son tour les requêtes du serveur. Ils vont donc tout d'abord échanger quelques informations utiles, sans aucun chiffrement, telles que la version du protocole TLS ou encore les différents algorithmes de chiffrement compatibles. Cela va leur permettre de s'accorder pour assurer une communication claire. + +2. Afin d'atteindre son objectif, le client va à son tour créer une clé de chiffrement, dite clé de session qui va cette fois permettre un chiffrement symétrique. Cela signifie qu'elle sera utilisée à la fois pour chiffrer et déchiffrer les données. Elle ne doit donc en aucun cas être diffusée publiquement. + +3. Seulement, le serveur aura besoin d'avoir en sa possession cette clé de session. Afin de la transmettre sans risque qu'un intrus l'intercepte durant la communication, le client va utiliser la clé publique du serveur précédemment reçue afin de chiffrer sa propre clé de session avant de la transmettre au serveur qui sera à même de l'interpréter correctement grâce à sa propre clé privée. Une personne qui arriverait à capter cette communication recevrait donc une clé inutilisable puisqu'il serait incapable de la déchiffrer. + +**Et voilà !** Le serveur et le client sont maintenant tout les deux équipés d'une clé qui va leur permettre de communiquer de manière sécurisée. + +## \ No newline at end of file