La fin annoncée des autorités de certification ? Alternatives: TOFU
Transcription
La fin annoncée des autorités de certification ? Alternatives: TOFU
La fin annoncée des autorités de certification ? Alternatives: TOFU, Convergence, CATA, Clés souveraines, DANE Florian Maury 29 décembre 2011 Mots-clés : – Infrastructure de Gestion de Clés (IGC)/Public Key Infrastructure (PKI) ; – Autorités de certification ; – Transport Layer Security (TLS) ; – Public Key Infrastructure X.509 (PKIX) ; – X.509 ; – Convergence ; – TOFU ; – CATA ; – Clés souveraines ; – DNS-based Authentication of Named Entities (DANE). Table des matières 1 Introduction 3 2 PKIX 3 3 TOFU : Trust On First Use 5 4 Convergence 5 5 CATA : Certificate Authority Transparency and Auditability 7 6 Les clés souveraines 7 7 DANE : DNS-based Authentication of Named 7.1 Fonctionnement de DANE . . . . . . . . . . . . 7.2 Fonctionnement de DNSSEC . . . . . . . . . . 7.2.1 Coté serveur DNS . . . . . . . . . . . . 7.2.2 Coté client DNS . . . . . . . . . . . . . 7.3 Les problèmes de sécurité de DNSSEC . . . . . 7.3.1 Les attaques par rejeu . . . . . . . . . . 7.3.2 Les attaques contre les intermédiaires . 7.3.3 La sécurité du dernier kilomètre . . . . 7.4 Vulnérabilités de DANE aux attaques MITM . 7.5 Conclusions sur DANE . . . . . . . . . . . . . . Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10 10 11 11 11 12 12 13 13 8 Conclusion 13 9 Bibliographie 14 1 Introduction nées bancaires, fichiers médicaux. . .) entre partis accordant leur confiance à l’IGC. Pour ce faire, ces sociétés de certification attestent à l’aide d’un certificat que leur client est bien celui qu’il prétend être, après des vérifications d’identité plus ou moins sérieuses. Le problème de ce système est que plusieurs ACs peuvent certifier un même client (plus précisément, un même Common Name (CN)) et qu’il n’existe pas de moyens — tel qu’est actuellement utilisé X.509 — pour un administrateur d’énoncer de manière fiable à quelles ACs il a légitimement demandé un certificat. Un attaquant réussissant à passer les tests de vérification d’identité ou les mesures de sécurité mises en place par une AC (n’importe laquelle !), peut dès lors parfaitement obtenir un certificat valide. Il lui est alors possible d’impersonner un serveur TLS sans que le moindre avertissement ne soit levé par les clients TLS (puisque le certificat est valide). Le modèle oligarchique utilisé actuellement par les ACs est, en effet, que chacune de ces sociétés possède le même pouvoir de certification que les autres (possibilité d’émettre des certificats pour n’importe quel CN), à partir du moment où elle est acceptée dans le cercle "fermé" des ACs mises par défaut dans les magasins des clients TLS (navigateurs 1 , Mail User Agent (Client email) (MUA), . . .). De fait, pour le prospect en recherche de certification, il n’existe aucune différence en terme de sécurité entre se faire certifier par une AC "de seconde zone", ou par Verisign (première AC à avoir été acceptée par Netscape (à l’époque connue sous le nom "RSA Certification Authority")). Pour lui, la seule différence est donc au niveau du prix de la certification (et plus récemment, le risque encouru de choisir une AC risquant de se faire bannir des magasins, comme ce fût le cas pour DigiCert Sdn Bhd ). Ce type de concurrence incite donc les ACs à tirer les prix vers le bas, quitte à rogner sur la qualité de leurs services : vérification de l’identité, et infrastructure robuste et sécurisée. S’en suit les déboires que nous avons connus. PKIX ne souffre cependant pas uniquement de cette oligarchie incontrôlée. Pour qu’un certificat reste sûr (celui-ci reposant sur des paires de clés cryptographiques dont la sécurité peut être remise en cause au bout d’un certain temps), il contient notamment une date limite de validité. Si la vie d’un certificat doit prendre fin avant sa date d’expiration (compromission, fin d’utilité, perte de la clé privée. . .), il est nécessaire de le révoquer. Utilisée depuis une quinzaine d’année, après l’introduction du modèle en 1994 dans le navigateur Netscape, l’IGC/PKI reposant sur les Autorités de Certification (ACs) en vue d’assurer les communications sur les protocoles Secure Socket Layer (SSL) puis TLS a connu en 2011 une série de déboires ayant retentis jusque dans la presse commune. Les défauts des certificats PKIX sont cependant bien connus des spécialistes qui tirent à boulets rouges sur ce modèle depuis des années, sans être écoutés des acteurs du marché, trop contents de pouvoir se reposer sur une architecture inspirant la confiance aux utilisateurs (le fameux petit cadenas jaune. . .). Le tremblement de terre inspiré par l’affaire Comodo [Com11], l’opération Tulipe Noire (DigiNotar ) [FI11] et plus récemment le retrait de l’Autorité de Certification (AC) DigiCert Sdn Bhd (suite à de mauvaises pratiques) [Moz11], a cependant permis de relancer la réflexion sur des modèles alternatifs ou complémentaires à cette IGC décadente. Ce document présente une partie des problèmes de PKIX tel qu’il est utilisé actuellement, puis présente des solutions alternatives ou complémentaires à ce modèle : Trust On First Use (TOFU), Convergence, Certificate Authority Transparency and Auditability (CATA), les clés souveraines et DANE. DANE, encore à l’état de brouillon à l’Internet Engineering Task Force (IETF), sera, notamment, mis en lumière, afin d’étudier ses capacités de restriction d’autorité des certificats et des ACs et d’addition d’ancres de confiance par l’intermédiaire du DNS. 2 PKIX Les certificats PKIX, signés par des ACs au moyen de la cryptographie à clé publique, sont actuellement le modèle le plus répandu de vecteur de confiance sur l’Internet. Ces derniers sont notamment utilisés pour des transactions TLS en vue de sécuriser le transport de protocoles tels que HyperText Transfer Protocol Secure (HTTPS). Ces ACs — des sociétés privées qui devraient [Zor11, Nig08,ZS09] satisfaire les plus hauts niveaux d’exigence en matière de qualité et sécurité — jouent le rôle de tiers de confiance, afin de distribuer les outils nécessaires à l’établissement de communications sécurisées pour l’échange d’informations confidentielles (authentification, coordon- 1. Dans le magasin d’un navigateur classique, il existe environ un cinquantaine de racines et plusieurs centaines d’ACs, par défaut [Eck11a]. Dans les faits, l’utilisateur lambda ne connait même pas la notion d’AC et fait aveuglément confiance au cadenas jaune, comme il y a été habitué. La décision d’à qui faire confiance est donc entre les mains seules des fournisseurs de clients TLS, des administrateurs des postes de travail (e.g. dans une société, ce qui permet de certifier n’importe quoi et de monter une attaque Man In The Middle (Homme du milieu) (MITM) sur l’ensemble des serveurs TLS consultés par les employés), et des attaquants ayant réussi à glisser leurs certificats dans le magasin des clients TLS. 3 La technique qui a été initialement adoptée afin de répondre à cette problématique est la publication de listings contenant des informations sur les certificats ayant été révoqués : les Certificate Revocation List (Liste de révocation de certificats) (CRL). En pratique, cependant cette approche ne fonctionne pas pour les raisons suivantes : également sujettes aux attaques DoS ; La mauvaise pratique consistant à considérer le certificat comme valide à défaut d’avoir pu vérifier sa validité est à nouveau très souvent observée. Ces derniers défauts (atteinte à la vie privée, et DoS de la requête OCSP) peuvent être évités par l’OCSP-stapling (littéralement "agrafage OCSP"), technique consistant à ce que le serveur TLS fasse lui-même la requête OCSP et joigne (agrafe) la réponse de l’AC, cryptographiquement signée, au certificat envoyé au client TLS. Dans la pratique, il est cependant souvent observé que ni les validations contre les CRL, ni les requêtes OCSP (avec ou sans agrafage) ne sont faites [Lan11a], causant un véritable problème de sécurité, puisque la notion de révocation est purement et simplement ignorée, et qu’un certificat compromis reste dès lors valable jusqu’à sa date d’expiration initialement programmée. De plus, de nombreux périphériques embarqués ou logiciels mal conçus ne disposent même pas de magasins de certificats d’autorités racines, et acceptent n’importe quel certificat, même autosignés (ce qui réduit à néant la notion même d’IGC, et n’offre qu’un simulacre de sécurité en utilisant par mimétisme/singerie des technologies qui ne sont manifestement pas comprises). Pire encore, des études [SEA+ 09] montrent que les utilisateurs ne comprennent pas/ne tiennent pas compte des avertissements donnés par leurs navigateurs quand un certificat est détecté comme invalide (la faute aux fréquentes mauvaises gestions des certificats (e.g. Figure 1), aux certificats auto-signés ou signés avec une AC privée mais accessibles par l’Internet) et sont prêts à cliquer autant que de nécessaire pour accéder à leur site (malgré la complexification volontaire de cette procédure par les navigateurs pour tenter de circonscrire cette démarche). Bien qu’il existe encore bien d’autres problèmes à PKIX [Gar05], les points qui viennent d’être abordés sont ceux auxquels tentent de répondre les technologies qui sont abordés dans ce document. Il est important de noter que l’usage seul de certificats X.509 dans le cadre d’une négociation entre un client et un serveur TLS avec ce dernier cherchant à s’authentifier auprès du client TLS est traité. L’usage des certificats X.509 pour l’authentification des clients auprès des serveurs n’a que très rarement été déployé, compte tenu de la complexité de gestion de ces derniers (en particulier, à cause de la révocation auprès d’une AC tierce et des procédures impliquées). Les quelques déploiements constatés sont généralement avec des certificats auto-signés ou dépendants d’une AC privée, auquel le serveur fait confiance (pas de besoin de reconnaissance en dehors de la structure les ayant émis). Les problèmes de multiples racines et de non-utilisation des schémas de révocations sont alors beaucoup plus simples à circonscrire et n’ont pas besoin des technologies présentées dans ce do- – Les listes de révocation ne sont pas centralisées et chaque AC doit donc gérer, et mettre à disposition des clients TLS sa propre CRL (avec de la haute disponibilité, cf. point suivant). Cela signifie qu’un client seul ne peut révoquer un certificat et qu’il doit nécessairement prévenir son AC et attendre que celle-ci mette à jour la CRL. De plus, même si la CRL est signée par l’AC (pour éviter les attaques MITM), si celle-ci est piratée, la liste des certificats révoqués peut devenir contrôlable par l’attaquant (retrait de révocations) ; – Les CRL sont disponibles à la demande du client TLS au lieu de lui être imposé. Cela signifie que si un client n’est pas en mesure de récupérer la CRL, pour des raisons de défaillances réseau fortuites (incident sur le chemin d’accès à l’AC) ou non (attaque de type Denial of Service (Déni de Service) (DoS) pour prévenir que le client ne la récupère), la vérification ne peut être faite. Dans de nombreux cas, pour éviter de frustrer le client, le contrôle de non-validité n’est alors pas fait, et le certificat est accepté, ruinant ainsi le modèle de sécurité [Dis11] ; – Les CRL peuvent être très longues ce qui peut poser des problèmes pour les périphériques aux ressources limitées qui ne peuvent la télécharger et l’analyser (coût en mémoire et/ou temps de calcul trop important) [Sys]. Dans ce cas, la vérification n’est bien souvent pas faite. Compte tenu de l’inefficacité pratique des CRL, un autre protocole a été créé : Online Certificate Status Protocol (OCSP) [MAM+ 99]. Ce protocole permet à un client TLS, ayant reçu un certificat de la part d’un serveur TLS dans le cadre d’une poignée de main, d’interroger — via une requête HTTP — une AC sur le statut actuel (valide, révoqué, . . .) du certificat reçu et émanant d’elle. La réponse reçue ne contenant que le statut pour un certificat spécifique, les problèmes de lourdeur des CRL et de leur traitement coûteux sont résolus. Les problèmes apparaissant à cause de ce protocole sont cependant importants puisqu’il y a nécessité d’avoir un dialogue avec l’AC (nécessité d’un chemin réseau menant à l’AC), et l’AC apprend que le client TLS cherche à vérifier tel certificat (problème de traçabilité/vie privée ; c’est d’ailleurs notamment par surveillance des origines des requêtes OCSP que les certificats émis frauduleusement par DigiNotar ont été retrouvés "en exploitation" lors de l’opération Tulipe Noire). Les requêtes de validation OCSP, à l’instar des CRL, sont 4 $ openssl s_client -connect fr.twitter.com:443 2>&- | grep "^subject=" | sed -e "s/^.*CN=\(.*\)/\1/" twitter.com Figure 1: Certificat Twitter invalide 3 cument. Les certificats utilisés pour S/MIME (signature d’emails et de documents) ne sont également pas traités. Un début de brouillon a été proposé pour adapter DANE à la signature d’emails mais ne reçoit à l’heure actuelle aucune participation. Depuis le déploiement de Domain Name System Security Extension (DNSSEC), l’utilisation de technologies comme celles décrites dans la Request For Comments (RFC) 4398 [Jos06] peuvent répondre à cette problématique. TOFU : Trust On First Use TOFU signifie "accorder sa confiance lors du premier usage". Cette approche, bien connu des administrateurs système qui l’utilisent régulièrement avec SSH 1 est également celle utilisée lorsqu’on ajoute de manière permanente un certificat invalide (e.g. auto-signé) à son magasin. Le principe général est de considérer, par un acte de foi (TOFU est également appelé, en anglais, "leap of faith"), que la première fois que l’on reçoit un certificat, celui-ci n’a pas été émis par un attaquant. Une fois le certificat accepté une première fois, il est admissible que toute communication future impliquant ce certificat soit avec le même correspondant. Le client TLS n’émettra dès lors un avertissement qu’à la réception d’un nouveau certificat. Ce cas de figure ne se présente que dans ces deux cas : – Un attaquant commence, (respectivement, termine) une attaque MITM. Le certificat reçu est alors celui de l’attaquant (respectivement, celui du serveur légitime). Ce changement est détecté puisqu’un nouveau certificat, inconnu, est reçu ; – Le serveur TLS légitime change de certificat (expiration, compromission, perte de la clé privée. . .). Lors de cet avertissement, l’utilisateur est alors requis de prendre une décision : accorder à nouveau sa confiance à ce nouveau certificat, ou non. Si cette approche est plébiscitée par certains [Pal], elle est difficilement applicable par l’utilisateur lambda qui ignore généralement les warnings et validera n’importe quel certificat sans se soucier qu’il s’agisse d’un changement de certificat légitime ou non. Cette approche a cependant un avantage certain : sa simplicité de mise en oeuvre. Il suffit en effet de vider son magasin des ACs qui y sont actuellement configurées. Une approche moins nihiliste pourra être d’installer un module complémentaire à son navigateur (tel que Certificate Patrol 2 ) qui détectera les changements de certificats (même validés par les ACs) et alertera l’utilisateur en fonction du niveau de probabilité que ce changement soit illégitime. Pour résoudre le problème qui nous concerne, nous étudierons les 5 approches suivantes : – TOFU : L’approche TOFU est basée sur la politique de sécurité très simple qui est de faire confiance au certificat qui est fourni à la première connexion à un serveur TLS et de n’avertir l’utilisateur d’un danger que si ce certificat change ; – Convergence : Un protocole permettant d’interroger des tiers de confiance usant potentiellement de différentes techniques (DANE, Perspectives, . . .) et votant afin de déterminer la validité ou non d’un certificat (éventuellement auto-signé) ; – CATA : Reposant sur la notion d’un journal public signé et dupliquable dans lequel les ACs seraient obligées d’enregistrer les certificats qu’elles émettent (sans quoi le certificat ne serait pas validable par les clients TLS) et qui peut donc être monitoré par les propriétaires de certificats afin de détecter des certificats émis frauduleusement ; – Les clés souveraines : Une approche dans laquelle les certificats des transactions TLS seraient signés par des clés souveraines, enregistrées dans un journal distribué, publique et étant uniquement extensible (impossibilité de modifier les enregistrements précédemment insérés). L’enregistrement des clés souveraines se feraient après que les administrateurs aient prouvé leur autorité sur le domaine qu’ils souhaitenet protéger (par la possession d’un certificat PKIX valide, ou par validationDANE) ; – DANE : Un protocole reposant sur la publication d’enregistrements Domain Name System (DNS) signés (DNSSEC) contenant des certificats (éventuel- 4 Convergence lement auto-signés) ou des informations sur les certificats légitimes pouvant être utilisés par un client Convergence 3 est un protocole, implémenté pour TLS. l’heure par un client (sous la forme d’un module com- 1. Alors qu’il est possible d’utiliser un enregistrement DNS SSHFP (qui plus est protégé par DNSSEC) pour fournir l’empreinte de la clé utilisée par un serveur SSH. [SG06] 2. Certificate Patrol 3. Site officiel de Convergence 5 plémentaire Firefox) et un serveur (autrement appelé Notaire) en bêta-test. Il a été introduit lors de la conférence Black Hat 2011 [Mar11]. Plus qu’un simple programme, Convergence établit un "framework" permettant à diverses techniques d’être utilisées, par l’intermédiaire de serveurs appelés "Notaires", afin de vérifier l’authenticité (éventuellement probabiliste) d’un certificat rencontré. Les Notaires sont librement installables sur n’importe quelle machine reliée à l’Internet, afin de permettre une véritable architecture distribuée. Le code d’un Notaire est actuellement disponible sur le site officiel du projet. Ce Notaire utilise un dérivé de l’approche introduite par Perspectives 1 pour valider ou non un certificat qui lui est soumis. Le client Convergence est libre d’ajouter un nombre arbitraire de Notaires auxquels il souhaite faire confiance. A tout moment, celui-ci est libre de révoquer la confiance qu’il accorde à un Notaire. Cette propriété est appelée "Agilité du lien de confiance" ("Trust Agility") et est l’un des fers de lance de cette solution. La décision finale à propos d’un certificat est laissée au client Convergence qui est libre d’adopter la politique de son choix : accepter le certificat si 1, (N ÷ 2) + 1 ou N Notaires donnent un avis favorable concernant ce certificat (avec N, le nombre de Notaires auquel le client fait confiance). Afin de préserver la vie privée de ses utilisateurs et de ne pas tomber dans le même travers que les requêtes OCSP (qui permet, indirectement, d’espionner à quel serveur TLS un client se connecte), deux mécanismes ont été mis en place : – Un cache local. Le client Convergence, à l’instar de TOFU, ne contacte les Notaires configurés qu’à la réception d’un nouveau certificat (ou lorsque le cache a été purgé). Si l’information concernant la première visite est bien transmises aux Notaires, les visites suivantes ne le sont plus, ce qui prévient l’apprentissage par les Notaires des habitudes de l’utilisateur sur l’Internet (e.g. : Quel serveur TLS ? Quand ? À quelle fréquence ?) ; – Les Notaires implémentent un système de rebond qui permet à un client de choisir aléatoirement un Notaire de sa liste de Notaires de confiance et de lui demander de lui renvoyer le résultat (signé) de tous les Notaires auquel il fait confiance, ce qui permet de n’alerter qu’un seul Notaire de la visite d’un site donné (les autres ne recevant qu’une requête anonymisée). Le défaut de cette approche est cependant que le notaire effectuant le rebond est alors capable d’apprendre la liste des Notaires auquel un client fait confiance. En dehors de la capacité de rebond, et de l’interface standard de communication avec un client Convergence (Application Programming Interface (API) basée sur Representational state transfer (REST)), un Notaire est libre de choisir la technique de validation qui lui sied (du pile ou face (hum. . .), à Perspectives, en passant par la vérification de la signature d’une AC (avec un magasin éventuellement restreint en fonction de l’actualité. . .), ou par DANE ou tout autre système imaginable), pour peu qu’une implémentation existe. Au 28 décembre 2011, Convergence souffre cependant de quelques défauts, principalement dus à sa jeunesse : – Une seule approche de validation existe : Perspectives ; – Le code a une maturité faible (il n’est qu’en version Bêta) ; – Il n’existe qu’une seule implémentation du protocole ("software variety problem") ; – Les serveurs TLS n’étant pas publiquement visibles ne peuvent pas bénéficier de l’avis de Notaires externes basés sur Perspectives. Il n’est actuellement pas prévu que les prochaines versions les prennent en compte ; – La validation des serveurs TLS utilisés avec les portails captifs est impossible (ce qui pose un sérieux problème puisque c’est le genre d’environnement très propice à des attaques MITM) ; – La fuite d’information sur notre navigation lors de la réception d’un certificat inédit et la fuite d’information de la liste des Notaires auxquels nous faisons confiance sont deux problèmes impactant la vie privée de l’utilisateur ; – L’unique implémentation existe sous la forme d’un module complémentaire pour Firefox. Cela signifie qu’elle n’est pas installée par défaut mais sur la base du volontariat des utilisateurs et que seul Firefox est en mesure d’utiliser ce protocole pour l’heure. De plus, il est illusoire, même si Convergence était intégré dans le code des navigateurs, d’espérer que les utilisateurs lambda modifient la liste des Notaires auxquels ils font confiance (puisqu’ils ne le font pas avec les ACs). Les Notaires configurés par défaut subiraient une très forte charge serveur et auraient une très grande responsabilité (décision suprême, et leur indisponibilité signifieraient la prévention d’accès à tous les serveurs TLS). Il pourrait s’en suivre que les grands groupes émetteurs de navigateurs pourraient configurer leurs propres Notaires par défaut, leur accordant encore plus qu’avec le choix des ACs de "confiance", l’autorité suprême sur nos transac- 1. Projet Perspectives – Le principe est de demander à un tiers de constater si le certificat qu’il reçoit, pour un serveur TLS (ou autre, e.g. SSH) donné, est différent du certificat que le client Perspectives a reçu. S’ils diffèrent, le client Perspectives ou le tiers est peut-être victime d’une attaque MITM. Un avertissement est alors affiché. 6 tions sécurisées, ce qui est inacceptable [Lan11b] ; – Les Notaires basés sur Perspectives ne peuvent fonctionner correctement lorsqu’ils sont confrontés au problème "Citibank". Certains administrateurs de serveurs TLS répartissent, en effet, aléatoirement la charge entre plusieurs serveurs disposant chacun d’un certificat différent. De fait, le Notaire validant les certificats avec Perspectives n’est nullement assuré de recevoir le même certificat que le client Convergence et risque de lui renvoyer, à tort, un désaveux de ce certificat ; – Les Notaires ne peuvent à l’heure actuelle pas être pondérés, ce qui pourrait être souhaitable pour réellement refléter la confiance relative que l’on peut apporter à un Notaire, et même créer des politiques de sécurité avancées telles que "pour le réseau X (au hasard, un réseau interne, actuellement non supporté), faire une confiance absolue à tel Notaire, et sinon, ne pas lui demander son avis". Le développement d’un Notaire de type "Proxy" pourrait permettre ce genre de cas d’utilisation sans augmenter la complexité du client Convergence. 5 d’une "preuve de contrôle". Cette dernière serait constituée de la signature de Merkle du certificat (i.e. la liste des condensats jusqu’à la racine de l’arbre et la signature de la racine). Le papier publié par les ingénieurs de Google ne contient pour le moment pas d’explication sur le mécanisme de révocation. D’une manière générale, le document est pour le moment bien trop vague sur de trop nombreux points pour qu’une critique construite soit établie. On peut cependant soulever les présents points : – Combien de journaux devront être créés ? – Qui tiendra ces journaux ? – Que se passerait-il si ces journaux devenaient indisponibles (chemin réseau indisponible) ? – Comment fonctionnera la révocation ? – Pourquoi ces journaux seraient plus efficacement consultés que les CRL ? – Comment se dérouleront les validations de certificats auto-signés ou émanant d’IGC privée ? – Comment une AC pourrait-elle être destituée de son statut de tiers de "confiance" dans un tel schéma ? CATA : Certificate Authority 6 Transparency and Auditability Les clés souveraines Les clés souveraines [Eck11c, Eck11b] sont une proposition de l’Electronic Frontier Foundation (EFF). Une clé souveraine est une paire de clés cryptographiques dont la partie publique (clé publique) est associée à un nom de domaine (et éventuellement à ses sousdomaines) afin de créer une "ancre de confiance" (Trust Anchors) pour ce dernier. L’association clé publique-nom de domaine est enregistrée dans des journaux publiques exclusivement extensibles, maintenus et publiés sur serveurs nommés "timeline servers" (littéralement, "serveurs de chronologie")). La partie privée de la clé souveraine (clé privée) permet de signer des certificats dont le CN est le nom de domaine (ou un sous-domaine) auquel la clé publique a été associée. Lors d’une poignée de main avec un serveur TLS, le certificat envoyé est accompagné de sa signature par la clé souveraine du domaine qu’il protège, selon les mêmes mécanismes par lesquels sont envoyés les certificats intermédiaires dans une transaction TLS reposant sur PKIX. Le client est alors en mesure de récupérer la clé publique associée à cette clé souveraine, auprès des timeline servers, vérifier que la clé souveraine est toujours active, qu’elle certifie bien le domaine concerné par la transaction TLS, et qu’elle a bien signé le certificat reçu. Le cycle de vie d’une clé souveraine commence par la création d’une paire de clés cryptographiques par l’administrateur du domaine souhaitant proposer un service TLS. L’administrateur voulant publier la partie publique CATA [LL11], littéralement "Transparence et contrôlabilité des ACs", est une proposition tenant pour le moment en quelques pages écrites par deux ingénieurs travaillant pour Google et probablement inspiré d’un brevet, que Google a déposé il y a des années, portant sur la gestion de CRL à base d’arbres [Mic00]. Le principe général est la tenue de journaux publiques contenant la liste des certificats émis par les ACs. Les clients TLS seraient alors tenus de vérifier la présence du certificat reçu du serveur TLS dans les journaux publiques. Si ce certificat ne faisait pas parti de la liste des certificats valides pour ce domaine, il serait alors rejeté. Ces journaux étant publiques, l’administrateur consciencieux d’un domaine pourrait surveiller qu’aucune AC ne publie un certificat frauduleux pour son domaine (car il doit être publié dans le journal pour être reconnu par les clients TLS) et qu’auncun mainteneur de journal ne cherche à introduire un certificat sans l’accord du propriétaire du domaine. Si cela se produisait, l’AC ou le mainteneur de journal serait, de fait, rapidement confondus. Les journaux seraient des sortes de listes exclusivement extensibles et prendraient la forme d’arbres de Merkle signés, éventuellement fragmentés en différents fichiers en fonction de la signature de Merkle des noeuds. Afin de valider un certificat fourni par un serveur TLS, celui-ci devrait être accompagné (par un moyen à établir) 7 de la clé souveraine doit prouver qu’il contrôle le-dit domaine avant de la voir enregistrée dans les journaux publiques. Pour cela, il doit fournir soit un certificat (dont le CN englobe le nom de domaine déclaré comme protégé par cette clé souveraine) signé par une AC reconnue par les timeline servers 1 ou via DANE (quand la norme sera publiée. . .). pour Simple Mail Transport Protocol Secure (SMTPS), Internet Message Access Protocol (IMAP) pour Internet Message Access Protocol Secure (IMAPS). . .). Cette dernière mesure a probablement été imposée par peur d’attaques par rétrogradation du niveau de sécurité (downgrade attacks), mais est intrusive dans la liberté de gouvernance d’un service (utilisation peut-être abusive du MUST normatif). Lors de l’enregistrement de la clé publique par les tiParmi les autres problèmes posés par les clés souvemeline servers, les preuves de contrôle du domaine (par raines, on peut compter : OCSP ou résolution DANE) sont vérifiées puis insérées – La perte de la clé privée de la clé souveraine peut enconjointement à diverses méta-données à propos de cette trainer une longue indisponibilité des services TLS clé souveraine. si aucune révocation n’est possible (pas de tiers de Notamment, une clé souveraine est accompagnée de sa confiance déclaré). Le conseil donné dans les spécifidate d’expiration, des noms (et éventuels ports) des sercations pour éviter ce problème est de dupliquer la vices TLS 2 fournis par les serveurs de ce nom de domaine clé privée afin d’être sûr de toujours en avoir une et protégés par la clé souveraine, ainsi que d’une liste, copie. . . ; éventuellement vide, de noms de domaine dont les clés – La compromission de la partie privée de la clé souvesouveraines sont autorisées à révoquer (en cas de perte de raine peut entrainer une perte définitive de contrôle contrôle de la partie privée de la clé souveraine) l’entrée d’un nom de domaine pour tous les clients validant en cours d’insertion. les clés souveraines. En effet, si la clé est compromise, Les journaux étant uniquement extensibles, une fois un enun attaquant possédant également une preuve valide registrement inséré, il est définitivement inaltérable. Toute de contrôle du domaine (e.g. un certificat obtenu aumodification de ces informations est représenté par l’inserprès d’une AC piratée) peut décider de révoquer la tion d’une nouvelle entrée de mise à jour. Cette demande précédente clé souveraine pour en déclarer une noud’erratum doit être signée par la clé souveraine adminisvelle inconnue du propriétaire légitime du domaine trant le nom de domaine associé. Si cette signature est imattaqué (l’ordre étant auto-signé avec la précédente possible à produire, le propriétaire d’un nom de domaine clé souveraine, il est non-répudiable et semble légiest incapable de procéder à la mise à jour des informations time) et vider dans le même temps la liste des entités de la clé souveraine. Il doit alors la faire révoquer par les capables de révoquer la clé souveraine de ce nom de tiers de confiance qui le peuvent (nommés initialement ou domaine. Ce problème remet en question le conseil par mise à jour) ou attendre son expiration, si aucun tiers donné par les spécifications pour répondre au pron’a été nommé à ce moment. blème du point précédent ; Cette obligation est utile afin de prévenir qu’une compro– Si un administrateur ne s’intéresse pas en premier mission d’une AC ou du DNS ne permettent la compromisaux clés souveraines (ou si sa clé souveraine expire sion de la clé souveraine, par rebond (attaquant en mesure sans qu’une nouvelle clé souveraine ne soit publiée), de fournir la preuve de sa prise de contrôle du domaine atun attaquant obtenant un certificat signé par une taqué), mais requiert la prudence, car un administrateur AC reconnue par les timeline servers (ce qui repréincompétent peut perdre le contrôle de son propre nom de sente le problème que les clés souveraines tentent de domaine. résoudre) peut déclarer avant le propriétaire légitime Outre les règles de gestion de serveurs miroirs afin (ou pendant l’intervalle pendant lequel la précédente d’augmenter la disponibilité des journaux publiques (le clé est expirée et la nouvelle non-déclarée) une clé nombre de timeline servers étant par conception limité souveraine (qui sera reconnue par tous les clients vaà quelques dizaines), de gestion des compromissions des lidant les clés souveraines) et le propriétaire légitime timeline servers et des miroirs, de gestion des réplications aura perdu définitivement la capacité de publier une inter-timeline servers des enregistrements, et autres règles clé souveraine légitime ; de gestion interne, les spécifications des clés souveraines – Les serveurs miroirs consultés pour obtenir la clé précisent qu’un service déclaré comme protégé (pour un souveraine d’un domaine apprennent l’historique de domaine donné) dans un des journaux publiques ne doit navigation d’un client validant les signatures des pas être également disponible dans une version vulnérable clés souveraines. Aucun mécanisme spécifique pour du même protocole (HyperText Transfer Protocol (HTTP) contrer ce problème n’a été précisé dans les spécificapour HTTPS, Simple Mail Transport Protocol (SMTP) tions et a été laissé à la discrétion des implémenteurs 1. La liste des ACs reconnues par les timeline servers est publique (et nécessairement à jour, par des détails de conception). 2. Les noms officiels des services sont déclarés à l’IANA 8 des validateurs. 7 déraisonnable en usant uniquement d’enregistrements de type 1. Un second usage pour les enregistrements de type 0 pourrait être de palier aux demandes d’émission de certificats frauduleuses. Les ACs pourraient effectuer une vérification de leurs présences dans les enregistrements DANE au CN demandé avant d’émettre un certificat. DANE : DNS-based Authentication of Named Entities 7.1 Fonctionnement de DANE Deux autres champs constituent un enregistrement DANE 1 est une technologie basée sur le DNS permetTLSA (en plus de son contenu) : tant à l’administrateur d’un nom de domaine de publier – Un sélecteur ("selector field") qui permet de choisir des informations à propos des certificats PKIX utilisés par entre le fait que l’enregistrement TLSA contienne ses serveurs TLS. des informations sur le certificat en entier (sélecLe brouillon 13 de DANE [HS11] définit un nouveau teur 0) ou uniquement sur les informations cryptotype d’enregistrement DNS nommé TLSA. L’emplacement graphiques du certificat (Subject Public Key Info) auquel doit être placé un enregistrement TLSA dans la (sélecteur 1) ; hiérarchie du DNS est défini par 3 informations : – Un sélecteur ("matching type field") qui permet de – Le nom de domaine auquel est accessible le service choisir entre différentes représentations de l’informaTLS (i.e. le CN des certificats PKIX qui seront sertion sélectionnée par le champ précédent : telle quelle vis) ; (0) ou hashée (et avec quel algorithme : SHA-256 (1), – Le protocole de transport utilisé par le service TLS SHA-512 (2)). (e.g. TCP, UDP ou SCTP) ; Voici un aperçu des différents enregistrements TLSA : – Le port sur lequel le service TLS est accessible. Type 0, Certificat, SHA-256 : Ainsi, un enregistrement TLSA protégeant du contenu, _443._tcp.www.exemple.tld. IN TLSA ( servi en HTTPS sur le port 443, pour le nom de 0 0 1 d2abde240d7cd3ee6b4b28c54df034b domaine exemple.tld se verra placé dans la hiérar7983a1d16e8a410e4561cb106618e971 ) chie DNS au Full Qualified Domain Name (FQDN) _443._tcp.exemple.tld. Type 1, Subject Public Key Info, SHA-512 : _443._tcp.www.exemple.tld. IN TLSA ( Un enregistrement TLSA permet de publier deux fa1 1 2 92003ba34942dc74152e2f2c408d29ec milles d’information : a5a520e7f2e06bb944f4dca346baf63c – Restrictives. Deux types d’enregistrements restric1b177615d466f6c4b71c216a50292bd5 tifs existent : 8c9ebdd2f74e38fe51ffd48c43326cbc ) – Type "0" : L’ensemble des enregistrements de ce type forment la liste exhaustive des ACs ayant émis des certificats légitimes pour le service proType 2, Certificat, Plain Text : tégé par ces enregistrements. _443._tcp.www.exemple.tld. IN TLSA ( – Type "1" : L’ensemble des enregistrements de 2 0 0 30820307308201efa003020102020...) ce type forment la liste exhaustive des certificats PKIX pouvant être utilisés par le service protégé DNS étant une technologie très vulnérable aux atpar ces enregistrements. taques MITM et aux attaques par empoisonnement de – Additives (Type "2") : ce type d’enregistrement cache [Bor08, AA04], la RFC 6394 [Bar11] recommande permet de publier une ancre de confiance ("Trust l’usage de DNSSEC pour protéger les enregistrements Anchor") qui pourra être utilisée (sauf politique lo- TLSA de types 0 et 1 et le rend obligatoire pour le type cale spécifiant le contraire) pour valider les certifi- 2. cats fournis par le service TLS concerné par cet enre- Le treizième brouillon du protocole DANE se propose d’algistrement. Cette fonctionnalité permet notamment ler plus loin et de rendre obligatoire DNSSEC de bout-end’utiliser des certificats auto-signés sans qu’aucun bout pour tous les usages de DANE [HS11]. avertissement ne soit affiché à l’utilisateur. Cette décision est justifiée par les besoins de résister à Les enregistrements de type 0 permettent, entre autre, des attaques de type dégradation du niveau de sécurité de répondre au problème CityBank (déjà abordé plus haut ("downgrade attacks"), et pour limiter les effets des atdans ce document). En effet, compte tenu que certains ad- taques MITM. Ainsi, l’acceptation des enregistrements ministrateurs utilisent des dizaines de certificats pour un TLSA se fait sur la base de la politique de sécurité suimême service TLS, la taille de la réponse DNS aurait été vante : 1. Groupe de travail DANE – IETF 9 – Si la signature DNSSEC est valide, les enregistrements TLSA devraient ("should") être utilisés pour essayer de valider le certificat reçu par le serveur TLS. Si la validation DANE de ce certificat échoue, la transaction TLS est abandonnée. Si le verdict de DANE est positif et que le certificat est également rattachable à une ancre de confiance (qu’elle soit issue d’un enregistrement TLSA valide de type 2, ou du magasin de certificats du client TLS) alors le petit cadenas jaune est affiché :o) ; – Si la signature DNSSEC des enregistrements TLSA est invalide ("Bogus") (pour des raisons de réseau mal configuré ou d’attaque), la transaction TLS doit être abandonnée ; – Si une réponse est non signée, avec un état d’authenticité indéterminé, ou que la validation DNSSEC n’a pas eu lieu en local et que le canal entre le client DANE et le résolveur DNS n’est pas sécurisé, alors les enregistrements TLSA ne doivent pas être utilisés. Dans ce cas, seule la vérification du certificat contre les certificats du magasin du client TLS est effectuée (comme si aucune validation DANE n’avait été entreprise). Ainsi protégé par DNSSEC, un administrateur utilisant DANE peut restreindre les certificats utilisables (type 0 et 1) sans risque de voir un attaquant utiliser des certificats obtenus illégitimement auprès d’une AC (puisqu’étant incapable de signer des enregistrements TLSA frauduleux pour rendre légitime ses propres certificats). Les enregistrements DANE restrictifs peuvent également être utilisés afin de "révoquer" un certificat compromis en attendant que l’AC change son statut officiel (dans les CRL et les résultats des requêtes OCSP). De la même manière, un administrateur pourra grâce à DANE (et aux enregistrements TLSA de type 2) faire valider des certificats auto-signés ou issus d’une AC inconnue d’un client TLS, sans qu’un attaquant ne puisse en faire autant, même en position de faire une attaque MITM, puisqu’il ne sera pas capable d’imiter la signature DNSSEC nécessaire à la prise en compte de son ancre de confiance. Malgré cela, un client utilisant DANE reste tout de même vulnérable à certaines classes d’attaques MITM, principalement duês à des faiblesses du protocole DNSSEC. Pour cela, il nous est nécessaire de revoir en détail le fonctionnement de DNSSEC. 7.2 7.2.1 Fonctionnement de DNSSEC Coté serveur DNS La signature des enregistrements DNS par DNSSEC se fait traditionnellement hors-ligne, souvent directement sur le serveur DNS "maître". Elle se fait en utilisant une ou plusieurs paires de clés cryptographiques (cryptographie à clé publique). La signature hors-ligne permet de conserver les clés cryptographiques hors d’atteinte d’un attaquant compromettant un serveur 1 . Les serveurs esclaves ne font alors que "recopier" la zone et la servir, et restent parfaitement inactifs cryptographiquement vis-à-vis de DNSSEC 2 . Lors de la signature de la zone DNS, chaque "jeu" d’enregistrements d’un même type ("Ressource Record Set") se voit associé un enregistrement de type RRSIG. Cet enregistrement représente la signature de ce jeu d’enregistrements, et contient, en plus de la signature, diverses informations la concernant dont la date de signature et sa date d’expiration et le type d’algorithme utilisé lors de la signature. La clé publique associée à la clé privée ayant servi à signer les enregistrements RRSIG (ce couple est appelé clé de signature de la zone ("ZSK")) est publiée dans un enregistrement DNSKEY. Traditionnellement, il est recommandé (afin de faciliter la rotations des clés) que cet enregistrement DNSKEY soit lui-même signé par une autre paire de clés cryptographiques (appelée clé de signature de la clé ("Key Signing Key (KSK)")), dont la clé publique est également publiée dans un enregistrement DNSKEY. Le hashé de la clé de signature de la clé (KSK) est ensuite transmis à la zone parente qui le stocke sous la forme d’un enregistrement DS (signataire de la zone déléguée (Delegation Signer)). La zone parente procède également à la signature de sa zone, et publie son enregistrement DS à sa zone parente, et ainsi de suite jusqu’à ce qu’on atteigne une ancre de confiance ("Trust Anchor"). Ce procédé peut être répété jusqu’à la racine du DNS, qui est elle-même signée 3 . La transmission de l’enregistrement DS à la zone parente se fait généralement par une interface dédiée (site web. . .). Un Second Level Domain (e.g. verisign.com., gouv.fr., . . . (SLD) publiera généralement son enregistrement DS dans la zone de son registre par l’intermédiaire de son bureau d’enregistrement ("registrar"). La non-existence d’un enregistrement était traditionnellement symbolisée par le code d’erreur NXDOMAIN ("No Such Domain"). Un enregistrement inexistant n’étant pas physiquement représenté dans une zone 1. Si la signature se fait directement sur le serveur maître, il peut être judicieux de le configurer comme un serveur "furtif". 2. Le transfert de zone est généralement effectué sur un canal sécurisé, par exemple, avec TSIG [KGG+ 03]. 3. Site officiel de la signature de la racine DNS 10 DNS, il ne peut générer un enregistrement RRSIG lors de la signature de la zone. Pour un attaquant en position d’effectuer un MITM, il serait alors possible de supprimer la réponse signée d’un serveur légitime et de renvoyer une réponse NXDOMAIN (non-signée) pour empoisonner un résolveur. Pour palier à ce risque, et signer la non-existence, les enregistrements de type NSEC ("Next Secure") [JS04] furent créés. Ces enregistrements signés par la clé de signature de la zone indiquent l’inexistence d’enregistrements entre deux enregistrements nommés. Le problème est qu’il est alors trivial pour un attaquant d’énumérer les enregistrements de la zone, ce qui peut être un problème pour certains administrateurs. Les enregistrements NSEC3 [LSAB08] palient à ce problème en hashant les noms des enregistrements existants qui figuraient dans les enregistrements NSEC. 7.2.2 Coté client DNS la racine, dont les enregistrements DS ). Si la signature de la réponse de la racine est correcte, le résolveur récupére les enregistrements NS et DS du SLD duquel dépend le nom de domaine recherché, et les enregistrements RRSIG de la réponse des serveurs DNS du TLD. Il valide les signatures de ces enregistrements (et contrôle qu’ils sont signés avec une clé dont l’authenticité est vérifiable grâce à l’enregistrement DS récupéré dans la zone parente), et s’ils sont authentiques, il répète le processus tout le long de la hiérarchie DNS jusqu’à avoir résolu le nom de domaine recherché et validé sa signature. Si lors de la récursion, un nom de domaine rencontré n’a pas publié d’enregistrements DS dans sa zone parente (on parle d’une île), alors la validation cesse, mais la récursion peut continuer. Les enregistrements reçus à partir de ce moment peuvent avoir été manipulés par un attaquant et doivent être considérés comme non-sûrs. Le résultat de la requête ne peut plus être considéré comme authentique. Deux exceptions existent, permettant à la validation d’être reprise, à partir d’une île : – Les enregistrements sont signés et le validateur possède une ancre de confiance pour ce nom de domaine. Le validateur doit donc l’utiliser pour valider ces nouvelles signatures, quand bien même la zone parente n’avait pas d’enregistrements DS pour cette zone. – Le validateur a été configuré avec une ancre de confiance dans un système de validation alternatif (DNS Look-aside Validation (DLV)). Dans ce cas, il effectue une recherche d’enregistrements DLV pour chaque nom de domaine récupéré afin de déterminer si des enregistrements DLV sont disponibles pour celui-ci. Le résolveur renvoie au proto-résolveur le code d’erreur SERVFAIL si la signature d’une réponse est invalide ("Bogus") ou si une zone dispose d’enregistrements DS pour une zone fille et que celle-ci renvoie des réponses non-signées (ce qui peut être dû à une mauvaise configuration du serveur DNS de la zone fille, à du matériel réseau mal-configuré ou obselète (incompatible avec Extension Mechanisms for DNS (EDNS0) (EDNS) [Vix99]), ou à un attaquant qui aurait souhaité faire une attaque par rétrogradation du niveau de sécurité ("downgrade attack")). Lorsqu’une application souhaite obtenir une information du DNS (que ce soit une adresse IP, ou tout autre type d’information pouvant être stockée dans le DNS), elle utilise le proto-résolveur ("stub resolver") de sa machine afin de contacter un résolveur DNS (souvent, par défaut, celui de son Fournisseur d’Accès à l’Internet (FAI) ou de sa société). Lors de la requête au proto-résolveur, une application dispose de deux drapeaux relatifs à la résolution sécurisée des noms de domaines. – DO (DNSSEC OK) : Ce drapeau permet de requérir que les informations relatives à DNSSEC soient renvoyées en plus des informations demandées. – CD (Checking Disabled ) : Ce drapeau permet de forcer le résolveur à renvoyer le résultat de la récursion, même si les données ne sont pas authentiques (i.e. cryptographiquement vérifiables) et que la validation est activée sur le résolveur. Une fois le processus de résolution terminé et la validation accomplie, le résolveur renvoie au proto-résolveur soit le code d’erreur SERVFAIL (en l’absence du drapeau CD et dans le cas d’un incident lors de la résolution (signature invalide, enregistrements tronqués, . . .)) soit la réponse à la requête avec le drapeau AD ("Authentic Data") signifiant que la réponse est signée et valide. Du coté du résolveur/validateur, la résolution DNSSEC se déroule ainsi. Le résolveur procède à la récupération des informations de signature au fur et à mesure du processus de récursion, 7.3 Les problèmes de sécurité de DNSSEC et les valide grâce à ses ancres de confiance. Un résolveur récupère les enregistrements NS du Top 7.3.1 Les attaques par rejeu Level Domain (e.g. com., fr., net., org., . . .) (TLD) duquel dépend le nom de domaine qu’il cherche à résoudre auprès DNSSEC est vulnérable aux attaques par rejeu [Ber09]. de la racine, ainsi que les enregistrements DS de ce TLD Même si un attaquant est incapable de forger un nouvel et les enregistrements RRSIG (pour valider la réponse de enregistrement, les signatures étant effectuées hors-ligne, 11 un enregistrement reste signé pour toute la durée de validité de la signature, car il n’existe aucun mécanisme de révocation d’une signature d’un enregistrement dans la norme [YOH+ 08]. Le problème est que le DNS étant une architecture relativement critique, sa résistance aux pannes est nécessaire. L’un des mécanismes notamment mis en place pour en assurer sa robustesse est le mécanisme de réplication maître-esclave. Le maître définit un enregistrement de type SOA ("Start of Authority") pour chaque zone qu’il sert. Cet enregistrement contient en majorité des informations à destination des esclaves parmi lesquels on retrouve un numéro de série (qui agit comme un numéro de "version" de la zone, et permet une détection rapide d’un changement, sans analyse complète de la zone), un délai de rafraîchissement des zones des esclaves, un intervalle à respecter entre deux tentatives infructueuses de rafraîchissement, et un intervalle d’expiration au-delà duquel une zone nonraffraichie est définitivement abandonnée. Cette dernière donnée est notamment importante car elle permet à un serveur esclave dont le maitre est injoignable de continuer à servir la zone, et d’éviter un point critique dans l’architecture (Single Point Of Failure (SPOF)). Un enregistrement dont la signature est expirée étant considéré comme un enregistrement invalide, si la signature ne s’effectue que sur le serveur maître, alors il est nécessaire que la signature ait une durée de vie supérieure ou égale à l’intervalle avant expiration de la zone nonraffraichie. Si ce n’était pas le cas, un esclave pourrait continuer à servir les enregistrements mais ceux-ci seront tous expirés et donc invalides. Cette situation est donc composée de deux problèmes antagonistes : – un impératif de sureté qui requiert que l’intervalle d’expiration soit long ; – un impératif de sécurité qui requiert que la signature soit le moins longtemps valide pour limiter la période de rejeu possible. Si l’on solutionne le problème en réalisant des signatures dont la validité est égale au Time To Live (TTL) du jeu d’enregistrements et en signant à la volée les réponses, le problème de sécurité est alors que les serveurs DNS esclave ont accès à la clé privée pour effectuer ces signatures. racine, les registres, et les bureaux d’enregistrement ("registrar") pour ne citer que les indispensables. Si à ce jour, leur responsabilité est déjà grande, compte tenu qu’un attaquant peut prendre le contrôle d’un domaine par leur intermédiaire et ainsi se voir accorder un certificat PKIX en prouvant son contrôle du domaine (possibilité de rediriger le domaine sur les serveurs DNS de l’attaquant), détourner le courrier électronique (modification des enregistrements MX), ou les visiteurs d’un site web (modification des enregistrements A ou AAAA), DANE augmente la criticité de ces acteurs en les rendant responsable d’une partie du chemin de confiance permettant la publication de certificat (enregistrements TLSA de type 2). L’Histoire nous a prouvé par plusieurs fois que certains de ces intermédiaires ne sont pas fiables (que ce soit au niveau technique [Dan08a, Utk11a, Utk11b, Mit11, Dan08b] ou au niveau politique [udW11b, udW11a]). 7.3.3 La sécurité du dernier kilomètre Par défaut, le canal entre un résolveur et le protorésolveur est non-sûr. Il existe diverses méthodes pour le sécuriser. – Avoir un résolveur local : Placer le résolveur/validateur sur la machine effectuant la requête est le moyen le plus simple de "sécuriser" la communication entre le proto-résolveur et le résolveur, puisqu’aucune attaque MITM n’est possible (au moins au niveau réseau). Cette solution n’est pas envisageable car elle implique que l’utilisateur lambda installe lui-même un résolveur sur sa machine 2 ; – TSIG : Un secret est pré-partagé entre le protorésolveur et le résolveur. Celui-ci est utilisé pour établir un canal chiffré entre eux. Cette approche est irréaliste car seul le proto-résolveur par défaut de GNU/Linux est actuellement capable d’utiliser TSIG et de toute façon, le déploiement de secret pré-partagé est impossible à grande échelle (sauf à inclure le secret dans les box des FAI, ce qui revient à faire confiance à son FAI et donc à son gouvernement (les FAI étant des sociétés privées soumises au droit de leur pays)) ; – SIG(0) : Le résolveur signerait ses réponses avec la partie privée d’une paire de clés cryptographiques. Le proto-résolveur, possesseur de la clé publique associée (obtenue par un autre canal), pourrait alors vérifier la réponse du résolveur. Le conditionnel est 7.3.2 Les attaques contre les intermédiaires utilisé car au 28 décembre 2011, aucune implémentaL’approche hiérarchique et centralisée du DNS (il tion de SIG(0) dans un proto-résolveur ou un résoln’existe qu’une seule racine 1 ) place une très grande resveur n’existe, alors que la RFC est vieille d’au moins ponsabilité et criticité dans les intermédiaires que sont la une décénnie [3rd00]. 1. Les racines alternatives n’ont jamais connu d’essor. Cela pourrait être amené à changer dans un futur proche [Bor11b]. 2. Cette installation est cependant grandement automatisable et simplifiée grâce à des solutions telles que DNSSEC-trigger 12 – Techniques de sécurisation de niveau réseau : L’utilisation de Virtual Private Network (Réseau privé virtuel) (VPN), tels que IPSec pourraient sécuriser le canal entre proto-résolveurs et résolveurs. Dans la pratique, ces technologies sont très lourdes à mettre en place, et donc il est irréaliste d’imaginer que ces solutions soient déployées pour sécuriser le dernier kilomètre. – Valider en local : Même sans avoir un résolveur local, il est possible de valider en local la signature d’un jeu d’enregistrements. Pour cela, l’application qui effectue les requêtes doit envoyer ses requêtes avec le drapeau DO et valider par elle-même la signature. Le module complémentaire "DNSSEC Validator" de Firefox effectue par exemple cette validation. Cette approche implique que chaque application embarque une bibliothèque de validation (comme libunbound ) et l’utilise correctement, créant beaucoup de code dupliqué et sensible. Si cette approche est fonctionnelle, elle est donc plus dangereuse. De fait, la sécurisation du dernier kilomètre reste un problème ouvert. – La nécessité de la validation DNSSEC de bout-enbout est pour le moment bloquante puisqu’il n’existe aucune solution standard et déployable à grande échelle de sécurisation du dernier kilomètre. – De nombreux proxy DNS (utilisés par exemple par les portails captifs, dans les hôtels, bars, gares, aéroports, conférences, . . .) filtrent/cassent les réponses DNSSEC jusqu’à ce qu’elles en deviennent invalides. Avec DANE, ces réponses invalides se transforment en DoS pour tous les services TLS. Le fait est que le DoS est plus global puisqu’aucune validation DNSSEC n’est possible dans ce cas. – L’impossibilité de révoquer explicitement un enregistrement ou un jeu d’enregistrements TLSA (ou une signature DNSSEC [YOH+ 08]) représente un danger dans le cas des enregistrements de type 2. Le tableau n’est cependant pas aussi noir que pourrait le laisser penser cette critique. Tout d’abord, DANE est exploitable dans bien des cas qui n’impliquent pas nécessairement un utilisateur lambda (communication de serveurs à serveurs). Cela signifie que la sécurisation du dernier kilomètre est plus facilement réalisable, et qu’il y a un risque moindre de voir les réponses DNSSEC défigurées ("mangled, scrubbed"). 7.4 Vulnérabilités de DANE aux attaques Ensuite, l’équipe de DANE envisage de travailler sur une MITM solution équivalente à l’OCSP-stapling pour DNSSEC : DNSSEC-stapling. On peut cependant s’interroger sur le La possibilité d’effectuer des attaques par rejeu est pro- bien fondé de l’idée de faire transiter des données DNSSEC blématique pour DANE notamment vis-à-vis des enregis- à l’intérieur du protocole TLS en vue d’une validation trements TLSA de type 2. DANE. Un rejeu d’un ancien jeu d’enregistrements TLSA de type 0 ou 1 dont la signature est toujours valide, et contenant une clé compromise n’empire pas la sécurité du mo8 Conclusion dèle, puisque la validation contre les CRL (ou via OCSP) doit toujours être faite. Bien que le besoin soit grand de remplacer ou compléEn revanche, un rejeu d’un enregistrement TLSA de type ter le modèle de sécurité actuellement en place (PKIX), 2 dont la signature est toujours valide et dont la paire aucune des solutions étudiées dans ce document ne réde clé associée est compromise est un véritable problème pond pour l’instant à tous les pré-requis nécessaires pour puisqu’un attaquant est alors en mesure d’effectuer une voir son adoption immédiate par le grand public. attaque MITM dont le certificat sera accepté sans avertisMalgré cela, Convergence est probablement la solution sement, malgré la validation DANE et pire, à cause de qui serait à privilégier. DANE. Son approche permettant d’externaliser la complexité de validation de la légitimité d’un parti à des tiers permet en effet de n’avoir à installer sur l’ordinateur d’un utili7.5 Conclusions sur DANE sateur lambda qu’un unique outil : le client Convergence Plusieurs points sont bloquants pour l’utilisation et (potentiellement intégré au navigateur). Quelque soit la le déploiement de DANE tel qu’il est présenté dans le technologie qui sera à l’avenir utilisée pour remplacer ou brouillon 13 de l’IETF [HS11] : compléter PKIX, celle-ci sera abstraite sous la forme d’un – Un nouveau type d’enregistrement est introduit : Notaire rendant un avis positif ou non. Cette abstraction TLSA. L’Histoire nous a déjà montré qu’en matière permet même de faire confiance simultanément à plusieurs de DNS, l’inertie était très forte et par plusieurs fois des technologies présentées dans ce document, ainsi qu’à de nouveaux enregistrements ont mis plusieurs an- de futures encore à développer. nées à être acceptés (s’ils ont finis par l’être) 1 . DANE, abstrait par un Notaire, se libérera alors des 1. EDNS, par exemple, est encore indisponible sur certains réseaux bridant les réponses DNS à 512 octets maximum. 13 contraintes de déploiement lourdes dont il souffre actuel- non-révocabilité des signatures DNSSEC (puisqu’un attalement comme la sécurisation du dernier kilomètre lors quant devra alors empoisonner plusieurs Notaires DANE de la validation DNSSEC. L’usage de plusieurs Notaires pour tromper un client). DANE permettra également de contourner le problème de 9 Bibliographie Références [3rd00] D. Eastlake 3rd. Rfc 2931 : Dns request and transaction signatures ( sig(0)s ). http://www.ietf.org/ rfc/rfc2931.txt, 2000. [AA04] D. Atkins and R. Austein. Rfc 3833 : Threat analysis of the domain name system (dns). http://www. ietf.org/rfc/rfc3833.txt, 2004. [Bar11] R. Barnes. Rfc 6394 : Use cases and requirements for dns-based authentication of named entities (dane). http://www.ietf.org/rfc/rfc6394.txt, 2011. [Ber09] Daniel J. Bernstein. Dns replay attacks. http://dnscurve.org/replays.html, 2009. [Bor08] Stéphane Bortzmeyer. Comment fonctionne la faille kaminsky ? comment-fonctionne-la-faille-kaminsky.html, 2008. [Bor09] Stéphane Bortzmeyer. Sécurité du dns et dnssec. https://2009.jres.org/planning_files/article/ pdf/5.pdf, 2009. [Bor11a] Stéphane Bortzmeyer. Des clés dans le dns, un successeur à x.509 ? http://www.bortzmeyer.org/ jres-dane-2011.html, 2011. [Bor11b] Stéphane Bortzmeyer. À quoi ressemblera la résolution de noms dans l’internet de demain ? http: //www.bortzmeyer.org/resolution-de-demain.html, 2011. [Com11] Comodo. Comodo report of incident - comodo detected and thwarted an intrusion on 26-mar-2011. http://www.comodo.com/Comodo-Fraud-Incident-2011-03-23.html, 2011. [Dan08a] Dancho Danchev. Hackers hijack dns records of high profile new zealand sites. http://m.zdnet.com/ blog/security/hackers-hijack-dns-records-of-high-profile-new-zealand-sites/3185, 2008. [Dan08b] Dancho Danchev. How was comcast.net hijacked ? how-was-comcastnet-hijacked/1224, 2008. [Dis11] Steve Dispensa. Do the major browsers implement crls ? (and if not, why not ?). http://www.quora.com/ Computer-Security/Do-the-major-browsers-implement-CRLs-And-if-not-why-not, 2011. [Eck11a] Peter Eckersley. How secure is https today ? how often is it attacked ? https://www.eff.org/deeplinks/ 2011/10/how-secure-https-today, 2011. [Eck11b] Peter Eckersley. Sovereign key cryptography for internet domains. https://git.eff.org/?p= sovereign-keys.git;a=blob_plain;f=sovereign-key-design.txt;hb=master, 2011. [Eck11c] Peter Eckersley. Sovereign keys : A proposal to make https and email more secure. https://www.eff. org/deeplinks/2011/11/sovereign-keys-proposal-make-https-and-email-more-secure, 2011. [FI11] Fox-IT. Diginotar certificate authority breach "operation black tulip". http://www. rijksoverheid.nl/ministeries/bzk/documenten-en-publicaties/rapporten/2011/09/05/ diginotar-public-report-version-1.html, 2011. [Gar05] Simson L. Garfinkel. Design principles and patterns for computer systems that are simultaneously secure and usable. http://simson.net/thesis/, 2005. [HS11] P. Hoffman and J. Schlyter. Using secure dns to associate certificates with domain names for tls – draftietf-dane-protocol-13. http://www.ietf.org/id/draft-ietf-dane-protocol-13.txt, 2011. [Jos06] S. Josefsson. Rfc 4398 : Storing certificates in the domain name system (dns). http://www.ietf.org/ rfc/rfc4398.txt, 2006. [JS04] Ed. J. Schlyter. Rfc 3845 : Dns security (dnssec) nextsecure (nsec) rdata format. http://www.ietf.org/ rfc/rfc3845.txt, 2004. 14 http://www.bortzmeyer.org/ http://m.zdnet.com/blog/security/ [KGG+ 03] S. Kwan, P. Garg, J. Gilroy, L. Esibov, J. Westhead, and R. Hall. Rfc 3645 : Generic security service algorithm for secret key transaction authentication for dns (gss-tsig). http://www.ietf.org/rfc/rfc3645. txt, 2003. [Lan11a] Adam Langley. Revocation doesn’t work. http://www.imperialviolet.org/2011/03/18/revocation. html, 2011. [Lan11b] Adam Langley. Why not convergence ? http://www.imperialviolet.org/2011/09/07/convergence. html, 2011. [LL11] Ben Laurie and Adam Langley. Certificate authority transparency and auditability. http://www.links. org/files/CertificateAuthorityTransparencyandAuditability.pdf, 2011. [LSAB08] B. Laurie, G. Sisson, R. Arends, and D. Blacka. Rfc 5155 : Dns security (dnssec) hashed authenticated denial of existence. http://www.ietf.org/rfc/rfc5155.txt, 2008. + [MAM 99] M. Myers, R. Ankney, A. Malpani, S. Galperin, and C. Adams. Rfc 2560 : X.509 internet public key infrastructure – online certificate status protocol - ocsp. http://www.ietf.org/rfc/rfc2560.txt, 1999. [Mar11] Moxie Marlinspike. Ssl and the future of authenticity. www.youtube.com/watch?v=Z7Wl2FW2TcA, 2011. [Mic00] Silvio Micali. Tree-based certificate revocation system. http://www.google.com/patents/US6097811, 2000. [Mit11] Stewart Mitchell. Sql injection blamed for widespread dns hack. http://www.pcpro.co.uk/news/ security/369700/sql-injection-blamed-for-widespread-dns-hack, 2011. [Moz11] Mozilla. Revoking trust in digicert sdn bhd intermediate certificate authority. http://blog.mozilla.com/security/2011/11/03/ revoking-trust-in-digicert-sdn-bhd-intermediate-certificate-authority/, 2011. [Nig08] Eddy Nigg. Untrusted certificates. https://blog.startcom.org/?p=145, 2008. [Pal] Chris Palmer. It’s time to fix https. https://docs.google.com/present/view?id=df9sn445_ 188dhqktpcs. [SEA+ 09] Joshua Sunshine, Serge Egelman, Hazim Almuhimedi, Neha Atri, and Lorrie Faith Cranor. Crying wolf : An empirical study of ssl warning effectiveness. http://lorrie.cranor.org/pubs/sslwarnings.pdf, 2009. [SG06] J. Schlyter and W. Griffin. Rfc 4255 : Using dns to securely publish secure shell (ssh) key fingerprints. http://www.ietf.org/rfc/rfc4255.txt, 2006. [Sys] Cisco Systems. Pki crl vs ocsp. http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ ps6586/ps6638/ps6664/product_data_sheet0900aecd80313df4.pdf. [udW11a] Des utilisateurs de Wikipedia. Loi d’orientation et de programmation pour la performance de la sécurité intérieure. http://fr.wikipedia.org/wiki/Loi_d%27orientation_et_de_programmation_pour_ la_performance_de_la_s%C3%A9curit%C3%A9_int%C3%A9rieure#Filtrage, 2011. [udW11b] Des utilisateurs de Wikipedia. Stop online piracy act. http://fr.wikipedia.org/wiki/Stop_Online_ Piracy_Act, 2011. [Utk11a] Utkarsh. Domaining.com hacked. http://dotsutra.com/domain-names/industry-news/ domaining-com-hacked/, 2011. [Utk11b] Utkarsh. South korean domain registrar gabia hacked. http://dotsutra.com/domain-names/ industry-news/south-korean-domain-registrar-gabia-hacked/, 2011. [Vix99] P. Vixie. Rfc 2671 : Extension mechanisms for dns (edns0). http://www.ietf.org/rfc/rfc2671.txt, 1999. [YOH+ 08] He Yan, Eric Osterweil, Jon Hajdu, Jonas Acres, and Dan Massey. Limiting replay vulnerabilities in dnssec. http://cs.ucla.edu/~eoster/doc/npsec_08-revocation.pdf, 2008. [Zor11] Zeljka Zorz. French certification authority reveals its private key by mistake. http://www.net-security. org/secworld.php?id=11144, 2011. [ZS09] Michael Zusman and Alexander Sotirov. Sub-prime pki : Attacking extended validation ssl. http:// www.blackhat.com/presentations/bh-usa-09/ZUSMAN/BHUSA09-Zusman-AttackExtSSL-SLIDES.pdf, 2009. 15