Ce n’est pas un, mais trois liens de confiance qu’il faut reconstruire :
- le lien que tout le monde voit : « internaute <-> site certifié« . Qui en réalité doit être réécrit en « internaute <-> navigateur <-> site certifié« , seule la première partie de cette relation étant explicite et authentique ;
- un lien, jadis implicite, qui est devenu apparent au regard de l’actualité : le lien « internaute <-> autorité de certification« . Comment construire une confiance non-arbitraire dans une entité tierce ?
- le lien « site certifié <-> autorité de certification« , qui lui aussi se trouve brisé et joue également un rôle très important : comment une entreprise peut-elle choisir une CA au regard de l’actualité catastrophique ?
Le modèle ci-dessous, décrit en deux morceaux, propose des pistes pour reconstruire ces liens (attention ce ne sont que des réflexions en vrac et absolument pas un modèle abouti) :
- L’autorité nationale : finalement, les internautes d’un pays donné ont le plus souvent tendance à placer leur confiance dans une organisation proche d’eux, une organisation nationale, qu’il s’agisse d’une entreprise, une association, ou une entité gouvernementale. Ne serait-ce, en premier lieu, que parce qu’ils connaissent cette entité, ont une histoire commune avec elle, et peuvent juger avec un meilleur niveau d’information s’ils peuvent -ou pas- y placer leur confiance. Cette autorité peut être directe ou déléguée ; par exemple, au niveau français, une entité gouvernementale (l’ANSSI ?) aurait toute légitimité pour habiliter une ou plusieurs autorités de certification nationales à délivrer des certificats SSL (et surtout, vérifier périodiquement leur capacité à assumer leur rôle de CA). Poussons le raisonnement, on peut même envisager de rendre obligatoire le fait de s’adresser à une CA nationale pour un nom de domaine sur un TLD national. Et pourquoi pas, présenter un certificat SSL différent en fonction de l’origine géographique du client qui se connecte au service, afin que ce dernier reconnaisse ce certificat car approuvé directement par une autorité qu’il connaît, et sans jouer au jeu des signatures croisées entre CA, totalement incompréhensible pour l’utilisateur final. Un tel modèle permettrait d’adresser au moins partiellement le problème de la « portée illimitée de la confiance« , puisqu’à l’heure actuelle, toute CA peut générer des certificats pour la totalité des sites web de la planète (ce qui revient à dire que la compromission d’une seule CA compromet potentiellement la totalité des sites web disposant d’un certificat) ;
Au delà de l’authenticité, les internautes veulent sinon une preuve, du moins un indicateur de légitimité – l’authenticité n’étant que l’une des composantes de cette notion. Sans cette capacité, le glissement sémantique « authenticité » vers « légitimité » continuera d’avoir lieu. Ci-dessous, la deuxième partie de ce modèle tente aussi de réconcilier ces notions.
- L’autorité de masse (ou la CA dématérialisée) : dans ce modèle, l’idée de base est que la confiance émerge d’un jugement collectif et non d’une décision unilatérale, chaque individu basant son jugement au moins en partie sur celui des autres. Par exemple, chaque internaute, qui sera dans un avenir proche titulaire d’une « identité numérique », pourrait individuellement signer le certificat d’un site web qu’il consulte (une sorte de « crowd signing »). Ou bien supprimer sa signature lorsque ce site a cessé d’être digne de confiance. Ou bien dénoncer en un clic le certificat auprès de l’autorité qui l’aura émis, en signant cette remontée, la signature individuelle étant indispensable pour éviter les abus. Dans ce modèle, la validité (binaire : oui ou non) d’un certificat serait doublée d’une réputation (nuancée) portant sur l’organisation titulaire du certificat, peu de signatures signifiant « peu digne de confiance ». Un site purement HTTP, non accessible en HTTPS, aurait d’office mauvaise réputation. De plus, ce modèle réconcilierait « preuve d’authenticité » et « preuve de légitimité », la première étant une information purement technique et l’autre une information plus nuancée, relevant de la construction collective de la réputation. Ce principe n’est pas fondamentalement différent des mécanismes actuels d’identification des sites frauduleux (phishing, escroqueries…), basés principalement sur les remontées utilisateurs et leur prise en compte par les équipes anti-cybercriminalité (CERTs, équipes anti-abus dans les banques, dans les FAI, …). Ce modèle présente des difficultés pour l’heure insurmontables : pas d’ « identité numérique » déployée (ou en est la carte d’identité numérique ?), peu/pas de support des signatures multiples, difficultés pour mettre en place une CRL massive mise à jour et interrogée en temps réel… Mais pour autant, il offre un bénéfice important, celui de la réactivité : si la décision de révoquer un certificat reposait au moins en partie sur le jugement des internautes, alors on verrait moins de polémiques sur tel navigateur qui reconnaît encore telle CA et tel autre navigateur qui ne la reconnaît plus. Quant au risque de voir le système intoxiqué par des internautes malveillants qui signent à tort un certificat pour un site malveillant, ou au contraire qui retirent leur signature de manière abusive : d’une part, la non-répudiabilité de ces actions donne un effet dissuasif fort puisque chaque action, même rendue anonyme, est liée irrémédiablement à son auteur par sa signature numérique ; et d’autre part, l’expérience montre que l’effet de masse annule ces anomalies (exemple : les systèmes anti-spam qui se nourrissent massivement du feedback utilisateur, comme celui de Gmail qui affiche d’excellentes performances). Enfin, la souplesse de ce système le rendrait facilement adaptable à différents types de services (exemple : nombre minimum de signatures / maximum de révocations pour un service web bancaire, tolérance individuelle / d’un groupe d’individus à la mauvaise réputation d’un site, …).
A noter, ce modèle est compatible avec la pratique du certificat auto-signé, puisque ce dernier tirerait sa légitimité exclusivement de la masse – le rendant ainsi davantage vulnérable à une perte de confiance des internautes, ce qui coïncide avec le fait que l’auto-certification soit généralement considérée comme une mauvaise pratique (sauf que dans ce cas, cela résulterait d’un jugement collectif et non plus d’une décision arbitraire d’experts).
Parmi les exposés récents de la communauté sécurité sur la manière de corriger le modèle du tiers de confiance, je n’aime pas le principe des « clefs souveraines », exposé ici, car ne remettant pas en cause le modèle économique des autorités de certification ; je trouve aussi insuffisant le projet « Convergence« , exposé à la Defcon l’an dernier par Moxie Marlinspike, qui tente de résoudre le problème en créant un deuxième type d’autorité centrale, les « trusted notaries » (sorte d’office notarial virtuel qui vérifierait que le certificat que l’on consulte en ce moment est bien le même que les autres internautes du monde entier ont consulté).
Le mélange équilibré des deux modèles présentés ici – le jugement des internautes étant mis en équilibre avec le jugement d’une autorité nationale – pourrait servir de base à une nouvelle forme de « confiance » numérique, où l’on n’aurait plus à rougir en recommandant à l’internaute de vérifier la validité du certificat d’un site web.
(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/fr_FR/all.js#appId=243265768935&xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));