Comment HTTPS sécurise les connexions – Partie 1

Le fonctionnement du protocole HTTPS reste bien souvent une énigme pour les utilisateurs d’Internet. Celui-ci est pourtant très souvent mis en avant lors de discussions concernant la sécurité que ce soit dans les institutions ou sur le web en général.

Afin d’utiliser les services web de manière sécurisée, comprendre le fonctionnement d’un tel protocole peut s’avérer très utile. Notamment afin de bien cerner dans quelles circonstances HTTPS me protège et de quoi.

Je vais donc essayer de vulgariser les concepts utilisés par le protocole HTTPS dans cette série d’articles.


En termes techniques, TLS est utilisé pour sécuriser le protocole HTTP, d’où l’ajout du S à HTTPs [ms_tooltip title= »TLS est utilisé dans la plupart des cas, mais pas exclusivement » background_color= » » border_radius= »0″ placement= »right » trigger= »hover » class= » » id= » »][1][/ms_tooltip].
En termes moins techniques, la communication entre votre navigateur et le site web que vous consultez est encryptée [ms_tooltip title= »Je parle ici de site web afin de simplifier l’explication, mais cela s’applique à n’importe quelle communication HTTP » background_color= » » border_radius= »0″ placement= »right » trigger= »hover » class= » » id= » »][2][/ms_tooltip]. Une personne qui intercepterait la communication entre vous et le serveur ne pourra donc pas en lire le contenu car il ne verra que le message encrypté.
Ce que le protocole ne fait pas, c’est encrypter les informations sur le serveur proposant le site web. HTTPS ne fait qu’encrypter la communication, il se peut donc que la communication soit sécurisée mais les données que vous enregistrez sur le site web soient stockées de manière non sécurisée sur le serveur.

Nous avons donc vu que le protocole HTTP permet de communiquer des informations entre votre navigateur et le serveur hébergeant le site web que vous consultez, TLS permettant la réelle sécurisation du message, formant ainsi HTTPS.

Voyons maintenant comment TLS s’y prend pour sécuriser nos communications avec le serveur.
Le principe repose sur deux concepts principaux :

  1. l’encryption du message
  2. l’authentification de l’émetteur et du récepteur

Je vais m’atteler à vulgariser le premier concept dans ce billet. Le second fera l’objet d’un article ultérieur.

La cryptographie asymétrique

La cryptographie asymétrique permet d’encrypter un message avec un concept simple. Chacun des acteurs de la communication dispose de deux « clés », la clé publique et la clé privée.
La clé publique permet d’encrypter le message qui ne pourra ensuite être décrypté que par la clé privée. Ces deux clés sont donc liées par un procédé magique [ms_tooltip title= »ce procédé magique est plus communément appelé : les Mathématiques et l’Algorithmique » background_color= » » border_radius= »0″ placement= »right » trigger= »hover » class= » » id= » »][3][/ms_tooltip].
Il suffit donc de donner sa clé publique à son correspondant, que celui-ci utilisera pour encrypter son message. Lorsqu’on reçoit le message, il ne nous reste plus qu’à le décrypter avec notre clé privée. Inversément, nous emploierons la clé publique de notre correspondant pour encrypter les messages que l’on souhaite lui envoyer.

Ce qui est intéressant avec la cryptographie asymétrique, c’est que le système permet de convenir d’une clé secrète connue des deux parties sans jamais la communiquer directement, permettant ainsi d’établir une connexion sécurisée en partant d’une communication qui ne l’est pas en utilisant les clés privées des deux correspondants + quelques informations publiques.

Pour illustrer ceci, nous allons remplacer les clés privées par des couleurs. Prenons comme exemple Alice et Bob. Ceux-ci aimeraient se mettre d’accord sur une couleur commune, mais ne peuvent la communiquer par oral car Eve écoute toutes les conversations.

Cryptographie asymétrique avec des couleurs

Ils vont donc chacun choisir une couleur privée qu’il ne communiqueront à personne (alias la clé privée), ici le rouge pour Alice et le turquoise pour Bob. Ils choisissent ensuite ensemble une couleur publique à savoir le jaune.
A partir de ces couleurs, chacun va mixer sa couleur privée avec la couleur publique commune et envoyer le résultat à son correspondant (orange pour Alice et bleu pour Bob). Ils n’auront alors plus qu’à ajouter leur couleur à la mixture reçue pour créer la même couleur secrète (brun).
Voici un récapitulatif de ce qui est connu pour chacun des participants (Alice, Bob et Eve).

Connu d’Alice Connu de Bob Connu d’Eve

On peut donc voir qu’Eve ne connait ni les clés privées de chacun des deux communicateurs, ni la clé privé partagée qu’ils ont créée.

Ce qui est vital dans le procédé, c’est que deviner la couleur secrète de chacun des participants à partir de la mixture créée et envoyée publiquement soit le plus compliqué possible. C’est pourquoi les mathématiques sont utilisées en réalité et non de simples couleurs.
Voici le procédé utilisé en réalité, remplaçant les couleurs par des chiffres et les mélanges par des math.

Alice et Bob se mettent d’accord sur deux nombres : une racine ainsi qu’un nombre premier (très grand, 300+ chiffres). Ces deux informations remplacent la couleur jaune dans le schéma précédent.
Voici les calculs qu’ils vont ensuite effectuer pour obtenir leurs mixtures, orange et bleue :

Mixture d’Alice = (racine clé secrète d’Alice) % nombre premier
Mixture de Bob = (racine clé secrète de Bob) % nombre premier

Il ne leur reste plus qu’à calculer le secret commun (la couleur brune) à partir de la mixture reçue de l’autre :

Alice calcule :
(Mixture de Bob clé secrète d’Alice) % nombre premier

Bob calcule :
(Mixture d’Alice clé secrète de Bob) % nombre premier

Grâce à ce procédé, Alice et Bob ont pu obtenir le même résultat (la couleur brune) sans jamais la partager publiquement, ni leurs clés privées respectives. L’astuce consiste dans le fait que le calcul est simple dans un sens, mais extrêmement complexe dans l’autre, ainsi il n’est pas possible de calculer les clés privées à partir des « mixtures » échangées publiquement.

Encryption symétrique

Les échanges et calculs expliqués précédemment n’ont besoin d’être effectués qu’une seule fois par session, la première fois que votre navigateur se connecte au serveur hébergeant le site web.
Ensuite, ceux-ci utilisent le secret partagé calculé (couleur brune) pour encrypter leurs communications.

Tous ces processus permettent donc d’encrypter les messages qui sont échangés entre les deux acteurs. Ceci serait cependant vain si l’un des deux protagonistes se trouvait être un imposteur depuis le début. C’est là que l’authentification entre en jeu, que je tâcherai de vulgariser dans un prochain billet de blog.


Sources