Quand tu as commencé à lire cette BD, ton navigateur web a affiché un cadenas vert sur la barre d’adresse.
Qu’est ce qui s’est passé ?
En pratique ils doivent se mettre d’accord sur la méthode à utiliser pour communiquer de manière sécurisée.
Cette phase de négociation entre un navigateur et un serveur est appelée le “handshake” (poignée de main).
C'est très rapide. On va te montrer comment ça marche.
C’est parti les gars !
Prêt ? Ici nous allons voir à quoi ressemble un handshake au ralenti.
C’est bon !
Recommençons, mais plus rapidement.
E-N-C-O-R-E !
Stop !
Décomposons pas à pas.
J’envoie à Compugter la liste des versions SSL/TLS et des algorithmes de chiffrement que je peux utiliser. De nos jours, je privilégie TLS 1.3, donc j’envoie aussi un key_share.
Un terme plus savant pour désigner cette liste d’algorithmes de chiffrement est “suite cryptographique” (cipher suite en anglais).
Ainsi, tu peux avoir l'air d'un pro à table.
Les protocoles SSL et TLS ont évolué au fil du temps, nous en reparlerons bientôt.
Et ensuite, j'attends une réponse de Compugter.
Je choisis TLS 1.3 et une suite de chiffrement. J’envoie également mon key_share. À partir d’ici, TLS 1.3 chiffre le reste de la poignée de main.
Juste après, j’envoie mon certificat, qui contient ma clé publique, afin qu’ils puissent vérifier mon identité.
Je vérifie les certificats de Compugter pour être sûr qu’il est légitime.
Comme nous avons tous les deux envoyé un key share auparavant, nous pouvons dériver le même secret, ce qui assure la confidentialité.
À partir de ServerHello (étape deux), la poignée de main est chiffrée.
Ils échangent des messages Finished pour prouver qu’ils ont dérivé le même secret — et paf, les clés de session sont prêtes en un aller-retour.
Mots de passe, informations de carte de crédit, tout.
Simple, non ?
La prochaine fois que tu te connecteras à un site web en toute sécurité via HTTPS, faites un shaka avec ton navigateur parce que tu connais le handshake secret.