Menu

Let’s Encrypt

25 octobre 2015 - News, Tribunes

Bonjour à tous !

Savez-vous comment marche le mécanisme de la confiance dans une page web reçue avec HTTPS ? Petit tour rapide et présentation de Let’s Encrypt.

Si vous êtes un lecteur régulier du site, vous savez que le chiffrement de bout en bout est un dada chez moi, plutôt que le chiffrement point-à-point. On n’a pas encore fait de glossaire, donc je vais le réexpliquer à cette occasion, mais on finira par se référer à un petit manuel de bases. Donc si vous connaissez, vous pouvez zaper la partie 0 qui suit.

0 – Chiffrement de bout en bout vs chiffrement point à point.

C’est assez simple :

Sur internet vous utilisez les deux :

I – Comment fonctionne le HTTPS ?

1. HTTP vs HTTPS, méthode de chiffement

HTTP est un protocole qui permet de récupérer des pages web. Exemples de ce qu’on peut « dire en HTTP » :

Et beaucoup d’autres. HTTPS n’est que l’utilisation d’une couche de chiffrement (SSL/TLS) pour chiffrer les données :

Pour visualiser la couche de chiffrement, on peut se représenter un tunnel entre le client et le serveur dans lequel la donnée passe. Personne ne peut accéder à l’intérieur du tunnel parce qu’il est solide, et le tunnel a une entrée (le client) et une sortie (le serveur).

2. Confiance de HTTPS

Lorsqu’Alice va demander la page web de Bob en HTTPS, que va-t-il se passer ?

Tout ça s’est fait automatiquement. Voyons un peu l’architecture de chiffrement mise en place ici. Il s’agit d’une infrastructure clef publique/clef privée + autorité de confiance :

Ainsi, la confiance que l’on a dans HTTPS dépend de deux facteurs :

On ne parlera pas plus des algorithmes ici, à la place on se concentrera sur comment le navigateur a décidé de reconnaître un certificat, ou de l’invalider.

3. Réseau de confiance de l’architecture X509

Le problème de fond, c’est de reconnaître la validité d’une clef de chiffrement (publique) pouvant changer fréquemment obtenue via internet.

On utilise ce qu’on appelle un pair de confiance. Si un certificat est signé par un pair de confiance, alors le certificat est considéré comme valide. Le pair de confiance dans l’architecture X509 s’appelle une autorité de certification (AC, parce que j’ai pas envie de le réécrire 😉 ). Par défaut Firefox fait donc confiance à un certaint nombre d’AC.

Ainsi lorsqu’une clef publique arrive depuis internet :

Dans les AC vous en connaissez peut-être quelques unes dont Thawte, VeriSign, GoDaddy, CA-Cert, Gandi, Google (eh oui, il font ça aussi), et depuis peu Let’s Encrypt.

Mais la chaîne de confiance n’est pas complète. Comment savoir quelles sont les entités reconnues, comment en rajouter sans mettre à jour tous les navigateurs ?

Eh bien à la base de la création de X509, on a généré une clef c0, et une clef c1, on a signé la clef c1 avec la clef c0 et découpé c0 en plusieurs (4 ?) parties qu’on a dispachées dans des coffres-forts. On fait donc en sorte que la clef 0 soit reconnue, et on signe les AC avec la clef c1. Les entités créent leur clef c_entite (plusieurs en fait), qui est valide, puisque signée par c1, elle-même valide puisque signée par c0.

Récapitulons. On fait confiance à c0. c0 signe c1, de telle sorte que :

On signe les AC, qui créent leur clefs, qui sont signées par c1 de telle sorte que :

Ainsi, la chaîne de confiance est une hiérarchie. Faire confiance à c0 permet/implique a priori de faire confiance à beaucoup de gens (on peut cependant demander à Firefox de ne pas accepter un certificat valide).

4. Subtilité de X509, résilience

Vous avez peut-être remarqué que c0 ne sert qu’à signer c1, puis on demande au navigateur de reconnaître c0, puis on signe avec c1.

Vous vous demandez peut être pourquoi… Imaginons que c0 = c1 = c\alpha , c’est à dire qu’au début de la chaîne de confiance il y ait non pas deux mais une seule clef c\alpha .

Un problème se pose, et a pas mal de répercussions :

Si la clef \alpha est perdue alors toute la sécurité de l’architecture X509 s’effondre.

II – Let’s Encrypt

Alors pourquoi est-ce que je vous rabats les oreilles avec tout ça ? Eh bien pour deux raisons :

Vous l’avez compris, il y a beaucoup d’enjeux concernant une AC. La confiance qu’on a, la qualité de son travail, de la façon dont elle sécurise ses données pour ne pas perdre sa clef et servir de vecteur d’attaque, etc. Il y a d’autres enjeux dont la possibilité pour tous de chiffrer facilement, en effet les certificats ne sont pas gratuits, sauf certains de CA-Cert, et de Gandi.

C’est pourquoi Mozilla Cisco l’EFF et d’autres se sont unis pour créer une AC dont le but serit de permettre à tous de pratiquer le chiffrement à tour de bras. Et voilà qui est fait.

Depuis le 19 octobre 2015 les certificats de Let’s Encrypt sont de confiance par défaut dans les versions récentes de Firefox (probablement Chrome/Chromium, Microsoft Edge, et Safari).

Let’s Encrypt va donc pouvoir se mettre à un rythme de croisière de signatures de certificats d’ici très peu de temps.

Bon chiffrement à tous et bonne journée !

Motius

2 réflexions sur “ Let’s Encrypt ”

  • Ping : Sécuriser ses sites web avec Let’s Encrypt | Hashtagueule

  • Ping : La guerre du chiffrement | Hashtagueule

  • Laisser un commentaire