Autoblog de gordon.re

Ce site n'est pas le site officiel de gordon.re
C'est un blog automatisé qui réplique les articles de gordon.re

Brainstorming : Hacking SSL

Thu, 20 Oct 2011 18:44:01 +0000 - (source)

Constat

le modèle de certification SSL s’appuie sur un système de confiance désuet et peu fiable : à l’inverse de la conception même du Net, décentralisé, il se base sur des « autorités » ayant le pouvoir de certifier l’identité d’un site web (ou d’un quelconque service). Mais ces autorités ne peuvent pas garantir leur fiabilité, leur honnêteté : leur opacité est contre-nature vis-à-vis d’Internet. Pire, ils représentent des points de faiblesse, et des attaques ciblées contre eux peuvent causer d’énormes dommages.

Modèles de confiance

Il existe globalement deux modèles de confiance sur Internet : le premier, pair-à-pair, est utilisé notamment par GPG, et permet de déterminer une confiance non binaire : en faisant confiance à 60% à une personne qui fait confiance à 80% à un individu, ma confiance envers lui n’est que de 48% au maximum. Ce qui me poussera naturellement à me méfier, en gardant en tête qu’il est possible que l’individu ne soit pas celui auquel je m’attend. Il nécessite cependant, comme tout fonctionnement pair-à-pair, une implication des utilisateurs pour se certifier les uns les autres.
Le second est binaire et centralisé. Une autorité se charge de certifier l’identité de quelqu’un (ou d’un site web), souvent en échange d’espèces sonnantes et trébuchantes, et invitera les internautes à lui faire pleinement confiance pour certifier les identités. Ça a l’avantage d’être quasiment transparent pour l’utilisateur, qui utilisera des logiciels intégrant par défaut une liste d’autorités de certification. Mais il y a également de gros inconvénients :

What do ?

Ainsi, je souhaiterais entamer une profonde réflexion dans le but de passer dans un modèle de confiance plus fiable au sein de SSL. Voici comment cela pourrait, selon moi, fonctionner :

Voilà donc le principe de fonctionnement. On aurait pu se baser sur le modèle qu’utilise GPG, mais il semble trop simpliste, et ne gère que 3 niveaux de confiance (aucun, marginal et total). Par ailleurs, il ne semble pas savoir gérer les les signatures concurrentes. Enfin, il faut garder à l’esprit que GPG est un système qui se repose bien plus sur la validation directe plutôt que sur la chaîne de confiance. Évidemment, le fonctionnement ci-dessus n’est certainement pas sans défauts, et mériterait une réflexion commune pour être réellement efficace, mais il a le mérite d’apporter quelque chose. On peut se poser plusieurs questions relatives à son fonctionnement ou son concept :

Implémentation

Il existe déjà un projet semblant répondre aux spécifications détaillées ici, Convergence. Il se présente sous la forme d’un addon Firefox en béta (et devrait donc probablement évoluer pour toucher les autres navigateurs à terme), et, à l’époque où je l’avais trouvé, je n’avais pas pu le tester car il était incompatible avec ma version de Firefox. Je viens tout juste de me rendre compte que ça avait changé, et donc je vais de ce pas tester ce projet.

Mais en dehors de ça, si on devait reprendre à zéro (ou presque), il n’y aurait pas besoin de réinventer la roue : OpenSSL fonctionne déjà très bien et sait créer des certificats, autosignés ou pas (ce qui n’a guère d’importance dans notre cas). La modification de fonctionnement se ferait essentiellement côté client : l’utilisateur disposerait d’une identité GPG et d’un trousseau de clés appartenant à ses contacts de confiance. Sur la base de cette liste de contacts, il chercherait à déterminer les différentes chaînes menant au certificat du site recherché (à la façon de BGP), en examinant la confiance « SSL » indépendamment de la confiance GPG (on peut être sûr qu’une clé appartient bien à telle personne, sans pour autant faire confiance à cette personne). C’est donc au cœur de la libssl que je prévoierais de placer ce système, idéalement

Reste à mettre les mains à la pâte, n’est-ce pas ? Je vais passer du temps à examiner le fonctionnement de Convergence, et, s’il s’avère nécessaire de partir sur d’autres bases, je m’attaquerai, avec qui veut participer, à un PoC du système. N’hésitez donc pas à apporter vos idées, votre expérience ou vos compétences.

flattr this!


Powered by VroumVroumBlog 0.1.31 - RSS Feed
Download config articles