le HTTPS, Let’s Encrypt, et les données personnelles

le HTTPS, Let’s Encrypt, et les données personnelles

Tranquillement installé sur la place des Cocotiers ou à la terrasse d’un café, vous profitez du wifi gratuit pour surfer sur vos sites favoris. Vous pourriez même être chez vous ou au boulot que ça ne changerait pas grand chose. Internet est devenu tellement banal qu’on ne s’en rend pas forcément compte, mais surfer présente des risques.

 

De quels risques parle t’on?

Pour cet article, je vais me concentrer sur la divulgation de vos données personnelles, celles qu’on utilise tous les jours sur divers sites sans même y prêter attention : les identifiants et mots de passe en premier, mais aussi les recherches diverses, la liste des sites consultés, les liens cliqués… toutes ces informations, nous les distribuons tous de façon publique lorsqu’on se promène sur internet.

Lorsque vous êtes sur un réseau public, avoir accès à toutes ces informations en temps réel est relativement simple, cela ne demande pas de connaissances ou de matériel très poussé. Dans un environnement plus personnel, les techniques sont un peu différentes, mais le manque d’attention sur notre sécurité informatique est tellement important que ça ne demande pas grand chose de plus, et bien sûr sans jamais que vous ne soyez conscients que vous êtes « sur écoute ».

Le principe de base pour récupérer des informations est de se placer entre l’ordinateur (ou smartphone ou tablette) que l’on souhaite « écouter » et le site web qu’il consulte. C’est possible par exemple en remplaçant le wifi public par son propre wifi, ou en s’introduisant dans votre modem-routeur dont vous n’avez pas fait les dernières mises à jour.

Une fois que l’attaquant voit les données échangées entre vous et internet, il peut lire ce que vous envoyez et ce que vous recevez, mais il peut aussi modifier les échanges, et par exemple ajouter du code dans chacun des sites que vous visitez pour y récupérer vos informations.

Le wifi public n'est pas sans risque

 

Mais alors, que faire pour se protéger?

Bien sûr il faut être vigilant sur les mises à jour et sur les logiciels qu’on utilise, mais ça ne suffit pas toujours. Heureusement, des solutions existent depuis bien longtemps, et le HTTPS qui sécurise les échanges est en train de devenir un standard pour tous les sites internet. HTTP, c’est le protocole du web, c’est pour ça que les adresses des sites commencent toutes par « // » même si nos navigateurs le cachent la plupart du temps pour plus de lisibilité. Le HTTPS ajoute la Sécurité au protocole, grâce à un certificat SSL installé sur le serveur qui héberge le site web. Les navigateurs nous font savoir qu’on utilise le protocole HTTP sécurisé généralement avec un cadenas à côté de l’adresse qui commence par « // ».

 

Comment fonctionne le HTTPS ?

Le but du HTTPS est de s’assurer qu’on consulte bien le site web que l’on souhaite, et pas une version faite par un attaquant. Une fois que l’on s’est assuré de l’identité du serveur, le HTTPS s’occupe également de sécuriser les échanges pour que personne ne puisse les lire ou les modifier.

La connexion HTTPS se fait en plusieurs étapes :

  1. Le client (le navigateur de l’utilisateur) envoie un premier message (non chiffré) au serveur (le site web sécurisé) avec tout ce dont il aura besoin pour établir la connexion sécurisée, notamment les algorithmes de chiffrement qu’il connaît (les « cipher suites ») et la version de SSL qu’il est capable de supporter. Le serveur compare ces informations avec ce qu’il est lui-même capable de fournir, et fait le meilleur choix possible pour cet échange. Il envoie sa décision au client en clair (non chiffré).
  2. Le contact a été établi, le serveur va maintenant essayer de prouver au client qu’il est bien celui qu’il prétend être. Pour cela, il lui envoie sa « carte d’identité », qui est en fait son certificat SSL incluant le domaine correspondant, et une clé publique associée. Ce certificat a été édité par une autorité de certification, qui s’est assurée que celui qui a demandé la délivrance du certificat était bien propriétaire du domaine auquel il est attaché. Le client vérifie auprès de l’autorité que tout est en règle avant de poursuivre l’échange.
  3. Le client génère une clé de chiffrement aléatoire du type convenu à l’étape 1 (cipher suite), et il utilise la clé publique du certificat SSL du serveur pour la chiffrer et l’envoyer au serveur. De cette façon, seul le détendeur de la clé privée correspondante (le serveur) peut déchiffrer le message et obtenir la clé générée par le client. C’est une clé symétrique, qui sert à chiffrer et déchiffrer les messages.

A partir de là, tous les échanges seront chiffrés et déchiffrés grâce à cette clé, que seuls ce client et le serveur connaissent. Lorsque la session est terminée, la clé est détruite. S’ils doivent de nouveau communiquer, une nouvelle clé sera générée et communiquée de la même façon que la première fois.

Schéma de fonctionnement d'une connexion HTTPS

Le gros point fort du HTTPS, c’est que même si un attaquant écoute les échanges en entier, il ne sera pas en mesure de les comprendre à partir du moment où le HTTPS les sécurise en les chiffrant !

 

Super, mais alors tous les sites utilisent le HTTPS ?

Malheureusement, non. Il y a plusieurs raisons à cela, la première est que jusqu’à il y a peu de temps, il fallait payer pour obtenir un certificat SSL (en moyenne 12 000F par an minimum), et passer par une procédure plutôt contraignante (du genre administrative) pour en obtenir un. La seconde est qu’il faut l’installer sur le serveur, effectuer la configuration, et la mettre à jour à chaque renouvellement du certificat, généralement tous les ans. Les éditeurs de sites web n’avaient pas toujours les moyens, le temps, et les compétences de s’en occuper malgré les bénéfices évidents.

Heureusement, depuis début 2016, un nouvel acteur est arrivé sur le marché des certificats SSL : Let’s Encrypt. C’est une autorité de certification un peu différente des autres : les certificats sont gratuits, ils ne durent pas 1 an mais 3 mois seulement (meilleure sécurité), et la procédure d’obtention est entièrement automatisée. Cela signifie que lorsqu’on a mis en place la configuration du HTTPS sur un site, il n’y a plus rien à faire, le renouvellement se fera automatiquement tous les 3 mois gratuitement !

 

Let’s Encrypt, c’est la révolution ?

Le concept a cartonné dès son lancement, et continue encore de convaincre de plus en plus de sites web de passer au HTTPS.

évolution de l'utilisation de Let's Encrypt

Plus de stats sur let’s Encrypt par là : //letsencrypt.org/stats/

Le HTTPS est aujourd’hui un protocole éprouvé, on le connaît bien. Let’s Encrypt a apporté la dernière brique qui manquait pour qu’il devienne très rapidement le standard qu’on attend tous pour améliorer notre sécurité sur le web : la facilité et la gratuité. Google a déjà commencé à pénaliser les sites qui n’utilisent pas HTTPS dans ses résultats de recherche. Firefox, Chrome et d’autres navigateurs affichent désormais des messages d’alertes si un site non sécurisé vous demande vos identifiants, et vous incitent à quitter le site immédiatement.

Il n’y a donc plus d’excuse. Si vous avez un site web, vous devez à vos visiteurs de leur proposer le HTTPS !

Site sécurité par Let's Encryot

 

Comment on met en place Let’s Encrypt ?

La communauté de développeurs du monde entier a bien travaillé depuis le lancement de Let’s Encrypt pour fournir à tous des solutions de déploiement simples. Il existe maintenant un outil très bien fait appelé « certbot » qui s’installe et se configure en quelques commandes. Par exemple, pour un serveur Apache sous Debian 9 :

Installation :

sudo apt install python-certbot-apache

Obtenir un certificat :

sudo certbot --apache

Le script va vous poser plusieurs questions, la procédure est très bien guidée. En quelques instants, vous avez un nouveau certificat. Pas plus compliqué !

En plus, l’installation a déjà automatiquement installé le cron qui permettra le renouvellement automatique. Il n’y a vraiment rien d’autre à faire.

Si vous n’êtes pas sous Debian 9, ou que vous utilisez un autre serveur web qu’Apache, le site certbot.eff.org propose plein d’autres tutoriels simples et bien faits.

 

En savoir plus

Il y aurait encore beaucoup de choses à dire sur le HTTPS, les autorités de certification, les clés symétriques et asymétriques, les autres risques qui ne sont pas pris en charge avec le HTTPS ou encore les techniques avancées de mise en place de Let’s Encrypt dans des environnements particuliers ou avec des besoins spécifiques. Si ça vous intéresse, on trouve beaucoup de ressources très intéressantes en ligne sur ces sujets, en voici quelques unes :

 

Besoin d’aide ?

Vous avez besoin d’aide pour mettre en place Let’s Encrypt pour votre site web ? N’hésitez pas à me contacter !