TLS est un protocole de cryptographie standardisé par l’IETF et utilisé pour sécuriser des communications sur internet. Son utilisation sur le web est largement répandue. Par abus de langage, on l’appelle SSL, qui est en fait le nom de son prédécesseur.
Un navigateur doit, pour pouvoir établir une connexion SSL avec un serveur web, obtenir la clé publique de ce serveur. Il doit, en plus, avoir confiance en cette clé publique, c’est-à-dire s’assurer qu’elle est l’authentique clé publique de ce serveur. Pour cela, on utilise des certificats. Le serveur possède un certificat et l’envoie au navigateur. Ce certificat est un fichier qui contient entre autres l’identifiant du serveur, la clé publique du serveur et des dates de validité. Le tout est signé par un tiers de confiance, appelé Autorité de Certification (Certificate Authority ou CA), qui joue un rôle fondamental. Le navigateur maintient une liste des clés publiques des CA en lesquels il a confiance ; grâce à ces clés publiques, il peut vérifier l’authenticité du certificat du serveur.
Ce modèle repose donc sur la confiance en une liste déterminée de CA. Or, l’actualité récente montre une certaine fragilité de cette approche. En effet, a plusieurs reprises, des brèches de sécurité ont permis à des hackers de compromettre des CA, le cas le plus parlant étant celui de DigiNotar, aujourd’hui en faillite après que des attaquant aient réussi à forger de nombreux faux certificats.
Certains chercheurs étudient donc des alternatives. Il ne s’agit pas d’alternatives au protocole SSL en lui-même mais bien d’approches différentes pour établir la confiance. Le problème du modèle actuel basé sur les Autorités de Certification est qu’il n’est sûr que si toutes les autorités sont sûres ; autrement dit, il suffit qu’une seule autorité soit compromise et le système ne garantit plus une bonne sécurité.
L’une de ces alternatives est Convergence, proposée par Moxie Marlinspike, expert en sécurité. Le principe est simplement de remplacer les CA par un réseau de notaires et de donner à l’utilisateur le choix de faire confiance ou non à certains notaires. Chaque notaire décide de donner sa confiance à un site ou non. Lorsque le navigateur arrive pour la première fois sur un site en https, il demande le certificat du site, puis demande à tous ses notaires de confiance d’attester de l’authenticité du certificat. Si tous les notaires répondent “oui”, alors le navigateur considère le certificat comme valide. Il s’agit donc d’une approche distribuée de la confiance ; avec Convergence, il n’y a plus de Single Point Of Failure.
Que penser de Convergence ? A l’heure actuelle, on manque de notaires (une cinquantaine environ), or une masse critique de notaires sera bien sûr nécessaire pour que le système fonctionne. Et ce système pose des questions : comment vont travailler les notaires ? A l’heure actuelle, l’administrateur d’un site web qui veut obtenir un certificat peut choisir une autorité de certification pour passer commande d’un certificat. Mais comment enregistrer ce certificat auprès des notaires ? Enfin, pour l’instant, Convergence pour l’utilisateur est uniquement disponible pour le navigateur Firefox, sous la forme d’un add-on. Celui-ci ne fonctionne pas “out-of-the-box”; après un rapide test, mon navigateur ne connaît que deux notaires et n’arrive plus à se connecter en https à mes sites favoris… Utiliser Convergence va demander plus de travail de configuration à l’utilisateur, et l’on peut s’imaginer qu’il va d’abord convaincre les utilisateurs les plus avancés et sensibilisés à la problématique des certificats.
L’idée de Convergence est séduisante. Mais il va donc falloir lui laisser un peu de temps pour se développer.
Leave a Reply