Ludovic Frank - Développeur freelance

Le petit cadenas garantit-il la sécurité ?

ionicons-v5-k Ludovic Frank 14 mai 2021
Logo vague
287 lectures Niveau :

Nouvelle semaine, nouvel article !
Ça va vous ? La femme ? Les gosses ? Le poisson rouge ? (c’est important le poisson rouge 😁)

Cette semaine on va essayer de comprendre ce que signifie le cadenas dans la barre d’adresse de votre navigateur, alors oui sur ce site il y en a un (voilà, je viens de vous éviter de lever les yeux pour vérifier).
Naaaaaa mais partez pas, c’est un sujet intéressant ! promis 😂.

Avant de commencer

Je vous redirige vers le paragraphe “le chiffrement asymétrique” de mon article sur les ransomwares, car ça ne sert à rien de le réécrire dans cet article, mais vous en aurez besoin pour comprendre la suite.

En passant, merci, je vois que l’article sur les ransomware plait ! Vous êtes au top.

Que signifie le cadenas en barre d’adresse ?

Cela signifie que le protocole utilisé entre votre terminal et le serveur est le protocole httpS, le protocole HTTP est ce qui permet de faire transiter les pages internet (entre autres) sur le réseau, le S signifie tout simplement que c’est la version sécurisée de ce protocole.

Pour que la connexion soit valide, le serveur doit être en mesure de fournir un certificat de sécurité qui est en fait une clef publique valide
(ah ! bah je vous avais prévenu qu’il fallait relire l’article sur les ransomwares 😛)

Une fois que le serveur a pu fournir un certificat valide, alors le serveur et le client se mettent d’accord sur une “clef de chiffrement” qui sera utilisé lors de la navigation sur le site (imaginez refaire cette procédure à chaque changement de page, ce serait LOOOOONNNGGG …. Non, il n’y a pas de blague ici, ça aurait été de mauvais goûts 🤣)

Comment vérifier que le serveur fournit un certificat valide ?

Les autorités de confiance

Comme toujours, tout est question de confiance, il existe des entreprises ou associations qui ont pour travail de vérifier l’identité d’une personne ou d’une structure, une fois la procédure de vérification terminée, l'autorité de confiance signe le certificat de l’entreprise vérifié avec sa clé privée (quoi … vous n’avez toujours pas été lire l’article sur les ransomwares ? Pas possible ça ! Bon OK j’arrête avec cette blague 😛). 

Les magasins de confiance ou “Trust Store” 

Votre terminal (Ordinateur, Smartphone … etc.) contient ce que l'on appelle un “magasin de confiance”, celui-ci peut faire partie du système d’exploitation (Windows, macOS, iOS, Android …) ou du navigateur (c’est le cas de Firefox qui a son propre magasin de confiance). 
Ce magasin contient l’ensemble des clefs publiques (non… retiens-toi Ludo … fais pas la blague … retiens-toi !) des autorités de confiance.

Alors du coup comment le terminal sait que le certificat est valide ?

Eh bien ! C’est simple, il vérifie que le certificat émis par le serveur a bien été signé par une autorité de confiance, et pour le savoir il puise dans son magasin de confiance, si cela correspond alors oui, le certificat est valide.

Il est possible d’ajouter une clef publique dans le “trust store”.
Ah voilà, le voilà le problème, avant que je vous en parle savez-vous ce qu’était un trust store ? (Oui ? Non ? Peut-être ? La réponse D ?)

Maintenant il faut savoir que vous pouvez y ajouter de nouvelles clefs publiques, c’est ce que font certains antivirus d’ailleurs, ils ajoutent leurs clés publiques dans le « trust store » mettent entre vous et le serveur site puis, il génère un certificat que votre navigateur jugera valide, car celui-ci sera signé par une “autorité reconnue du trust store”.

Cette méthode s'appelle “The man in the middle”, se mettre entre vous et le serveur… et si vous avez bien suivi… Il est par exemple possible d’installer d’une manière ou d’une autre une clef publique dans votre “trust store” puis… se mettre entre vous et internet, ça peut par exemple arriver en entreprise, puisque la connexion internet passe par un serveur qu’on appel un “proxy”, le « proxy » peut parfaitement se mettre entre le terminal client et le serveur, si le client dispose de la clef publique du proxy dans son trust store (sinon vous auriez un gros message TOUT ROUGE).

Comment se protéger ?

En fait c’est très simple, si vous cliquez sur le cadenas vous pouvez voir “pourquoi” votre navigateur estime que le site est de confiance et surtout voir toutes les informations des certificats, par exemple sur paypal.com nous pouvons voir ça : 

Certificat alternatif Paypal

Cela veut dire que l’autorité qui a vérifié l’identité de PayPal est "Digicert", la clef privée qui a été utilisée pour signer le certificat de PayPal a été générée le 22 octobre 2013. Du coup là on est bon. 

Si vous jetez un œil à mon site moi c’est Let’s Encrypt qui vérifie mon identité (je suis moi. Si si.. je vous jure 😆).

Bonus : Plusieurs niveaux de vérification.

En fait, il y a plusieurs niveaux de vérification, qui sont généralement liés à des assurances pour l’entreprise vérifiée

il y a les petits certificats simples, par exemple le mien : 

Certificat developpeur-freelance.io

On voit qu’il y a juste le domaine (developpeur-freelance.io) qui a été vérifié dans mon cas.
Et dans d’autres cas, il y a des certificats qui certifient plus de choses, par exemple pour Stripe :

Certificat Stripe

Ici, on voit que le certificat contient des informations sur l’entreprise vérifiée.

Conclusion

L’idée de l’article est de vous permettre de comprendre comment le HTTPS fonctionne et de vous permettre de rester en sécurité sur internet.
À plus tard 😁.