Selon des chiffres diffusés par NetTrack, Let's Encrypt a passé en avril la barre des 50 % des domaines gérés, parmi les presque 8 millions surveillés par le service.
Cela pose plusieurs problèmes dont je n'ai pas vu (encore ?) d'analyse. Donc je me lance, même si je vais pas mal radoter mon premier jet sur Let's Encrypt.
Le premier problème est une question de vie privée. Afin de s'assurer qu'un certificat x509 n'a pas été révoqué, un client TLS (un navigateur web, un logiciel d'emails, un logiciel de messagerie instantanée, etc.) peut émettre une requête HTTP destinée à l'autorité de certification qui a émis le certificat présenté par un serveur TLS (serveur web, serveur mails, etc.). Évidemment, l'autorité de certification signe sa réponse avec sa clé privée. Ainsi, le client TLS pourra vérifier l'authenticité de la réponse avec la clé publique de l'autorité (contenue dans le certificat x509 de cette autorité). Il s'agit du protocole OCSP. Il est activé par défaut un peu partout.
Cela signifie qu'avec ce protocole, une autorité de certification stocke, dans ses journaux, des infos comme : telle IP a demandé la vérification du certificat x509 du site web ineedmoarporn.example à telle date+heure.
Si une autorité de certification devient un acteur incontournable, cela signifie qu'elle consigne, dans ses journaux, l'information qu'une même IP a visité les sites web ineedmoarporn.example, lacroix.example, fillon2017.example avant de consulter ses emails hébergés chez sans-nuage.fr.
Je ne sais pas pour toi, mais je trouve que c'est un vrai problème, quand bien même il y a des associations militantes pour les libertés humaines (mais pas que) derrière Let's Encrypt.
Comment voir quel serveur OCSP sera contacté pour un certificat x509 donné ? Il suffit de regarder les détails d'un certificat x509, notamment la section « Authority Information Access ». Avec Firefox. Exemple en ligne de commande :
$ echo | openssl s_client -servername mediapart.fr -connect mediapart.fr:443 2>/dev/null | openssl x509 -noout -ocsp_uri
http://ocsp.usertrust.com
Ici, quand un⋅e citoyen⋅ne consulte ce journal, son navigateur web émet une requête HTTP destinée à ocsp.usertrust.com. User Trust sait donc que l'ordinateur utilisé par ce⋅tte citoyen⋅ne va probablement consulter le site web de ce journal dans les prochaines secondes.
Dans le cas de Let's Encrypt, le serveur OCSP est pointé par le nom « cert.int-x3.letsencrypt.org » et est hébergé… par Akamai, un géant des infrastructures Internet… Tu le sens, le respect de ta vie privée ?
Pour limiter l'impact de ce flicage :
Le deuxième problème est une question éthique et philosophique. Quand un acteur concentre un marché, il exerce un pouvoir sur le marché. Quand un acteur a du pouvoir, il en abuse. Forcément. S'il n'a pas de concurrent, alors les citoyen⋅ne⋅s sont pris au piège, ce qui renforce le pouvoir de cet acteur. Je pense que c'est assez évident avec l'affaire Facebook / Cambridge Analytica (je prends l'exemple le plus récent, mais il y en a une infinité) : tu peux être scandalisé, tu vas quand même rester sur Facebook pour parler avec tes "ami⋅e⋅s" car il n'y a pas vraiment de concurrent avec un service similaire aussi fréquenté.
Je me moque de savoir que, derrière Let's Encrypt, il y a des associations qui militent pour les libertés humaines. Car tout acteur est corruptible. Tout acteur peut ne pas percevoir une entourloupe et la valider. Sans compter que toute la sécurité apportée par x509 repose sur la plus mauvaise autorité de certification acceptée par la communauté (des navigateurs web et des systèmes d'exploitation), car n'importe quelle autorité de certification peut émettre des certificats x509 pour n'importe quel site web, même pour un site web dont l'éditeur⋅rice n'est pas client chez elle. x509 est ainsi fait. Let's Encrypt peut être absolument irréprochable, ça ne change pas la donne.
Il découle du paragraphe précédent que ce qui compte à mes yeux, c'est d'avoir un équilibre des pouvoirs : qui dispose d'un pouvoir similaire afin d'exercer un pouvoir de contrôle sur Let's Encrypt ? Personne. Vers qui se tourner si Let's Encrypt failli (tout en conservant un service similaire) ? Personne. Puis-je vérifier moi-même ce que fait Let's Encrypt ? Non. Ai-je un pouvoir de décision, même indirect sur ce que fait Let's Encrypt ? Non. Le pouvoir d'émission de certificats x509 est confisqué aux citoyen⋅ne⋅s. Certes, il l'a toujours été, mais Let's Encrypt enfonce le clou alors que des alternatives sont possibles, j'y reviens à la fin.
Un monde dans lequel
… est un monde dans lequel chaque autorité de certification est un acteur puissant supplémentaire qui décide de ce qu'est la liberté d'expression et des contenus qui en relève…ou non. Elle peut refuser de délivrer un certificat à tel ou tel site web ou de révoquer le certificat de tel site web. Les navigateurs web feront alors peur aux visiteur⋅e⋅s de ce site web, les moteurs de recherche déclasseront ce site web et ce sera la fin. Il y a déjà suffisamment d'acteurs qui ont ce pouvoir… Est-on obligé de s'en imposer un de plus ?! Les gouvernements, entre autres, ont déjà ordonné à des intermédiaires techniques, comme les registres DNS, de pratiquer la censure sans décision de justice, alors ordonner la même chose à un intermédiaire technique de plus ne les découragera pas.
Certes, Let's Encrypt n'est pas à l'origine de tout ce que je décris depuis le début de ce shaarli, mais cette initiative, qui partait d'une bonne intention, va considérablement retarder l'émergence de réelles solutions à tout ce merdier. Et c'est ça que je reproche à toutes les personnes qui ont fait la promotion de Let's Encrypt sans se poser plus de questions, au motif que le chiffrement est à la mode depuis Snowden… Alors que le chiffrement est inutile quand les gens concentrent leurs données sur quelques sites web états-unien où elles peuvent être récupérées tranquillou par tout le monde parce que les lois, sur la surveillance de masse et sur la protection de la vie privée, le permettent… Let's Encrypt est une fuite en avant, pas une solution durable.
Par ordre de complexité :