web-dev-qa-db-fra.com

Pourquoi un pirate ne peut-il pas simplement obtenir un nouveau certificat SSL pour votre site Web?

SSL est destiné à protéger votre site Web contre une attaque d'homme au milieu.

Mais si quelqu'un est en mesure de le faire, cela ne pourrait-il pas simplement demander un nouveau certificat à une autorité de certification, puis modifier le trafic envoyé de l'autorité de certification au serveur (qui ne peut évidemment pas être chiffré) pour passer le test requis par l'autorité de certification en tant que vérification de la propriété?

34
user28763

Être en mesure de MitM une autorité de certification n'est peut-être pas aussi trivial que vous l'imaginez. Vous ne savez pas quelle machine ils utilisent pour évaluer la propriété, et j'espère qu'ils ne le font pas via le wifi Starbucks.

Les certificats s'appliquent aux noms de domaine , pas aux machines ou aux adresses IP, et donc la propriété n'est généralement pas vérifiée en testant les réponses fournies par un certain serveur HTTP. Par exemple, jetez un oeil à exigences de Mozilla pour les autorités de certification ,

Nous considérons que la vérification des demandes de signature de certificat est acceptable si elle satisfait ou dépasse les exigences suivantes:

  • toutes les informations fournies par l'abonné du certificat doivent être vérifiées en utilisant une source indépendante d'informations ou un autre canal de communication avant d'être incluses dans le certificat;
  • pour qu'un certificat soit utilisé pour la signature numérique ou le cryptage des e-mails, l'AC prend des mesures raisonnables pour vérifier que l'entité soumettant la demande contrôle le compte de messagerie associé à l'adresse e-mail référencée dans le certificat ou a été autorisé par le titulaire du compte de messagerie à agir au nom du titulaire du compte;
  • pour qu'un certificat soit utilisé pour des serveurs SSL, l'AC prend des mesures raisonnables pour vérifier que l'entité soumettant la demande de signature de certificat a enregistré le ou les domaines référencés dans le certificat ou a été autorisée par le titulaire de domaine à agir sur la le nom du titulaire;
  • pour les certificats à utiliser pour et marqués comme validation étendue, l'autorité de certification se conforme aux directives pour l'émission et la gestion des certificats de validation étendue version 1.4 ou ultérieure.

Vous devrez donc soit MitM la connexion entre l'autorité de certification et un serveur DNS, ou compromettre le DNS du site (le plus probable).

L'émetteur du certificat promet de n'émettre un certificat pour votre nom de domaine qu'aux personnes qui peuvent prouver qu'elles contrôlent ce domaine

Je suppose qu'un homme au milieu de l'attaque contre HTTP et SMTP pourrait être utilisé pour tromper l'émetteur et ainsi obtenir un certificat "de contrôle de domaine validé" auquel l'attaquant n'a pas droit, ce certificat frauduleux pourrait alors être utilisé pour usurper l'identité de votre site dans une attaque de l'homme du milieu contre le trafic HTTPS. si les serveurs HTTP et SMTP sont différents, deux attaques MITM seront nécessaires.

Les certificats de validation étendus (comme ceux utilisés par les banques) qui affichent un long message vert dans la barre d'adresse nécessitent plus d'étapes que de simplement prouver le contrôle du nom de domaine et ne pourraient probablement pas être acquis frauduleusement aussi facilement.

6
Jasen

HPKP (HTTP Public Key Pinning) est une politique de sécurité fournie via un en-tête de réponse HTTP qui:

  • permet à un hôte de fournir des informations à un agent utilisateur sur les identités cryptographiques qu'il devrait accepter de l'hôte à l'avenir
  • protège un site Web hôte contre un compromis de sécurité dans une autorité de certification où des certificats frauduleux peuvent être émis
  • permet à un hôte de fournir un ensemble d'empreintes digitales aux identités cryptographiques que l'agent utilisateur (UA) devrait accepter pour le site à l'avenir
  • est un mécanisme de confiance lors de la première utilisation (TOFU) et l'UA doit établir au moins une session sécurisée avec l'hôte pour recevoir l'en-tête intact. Une fois que l'en-tête a été reçu, l'agent d'utilisateur mettra en cache et appliquera la politique conformément aux directives incluses dans l'en-tête

Répondre à votre question: un hôte qui implémente HPKP empêche les pirates d'utiliser des certificats SSL nouveaux/escrocs .

HPKP peut être facile à configurer, mais il doit être fait avec soin et il est "essentiel" d'avoir des sauvegardes :

  • la solution la plus idéale consiste à inclure l'empreinte digitale du certificat TLS actuel et au moins une sauvegarde
  • la sauvegarde peut être l'empreinte digitale d'une demande de signature de certificat (CSR) , évitant ainsi d'avoir à acheter un certificat de sauvegarde
  • si la clé privée du certificat était jamais compromise, un CSR pourrait être utilisé afin de demander la signature d'une nouvelle clé publique (pour que cela fonctionne, le CSR doit être créé avec une toute nouvelle paire de clés RSA et stocké en toute sécurité hors ligne )
  • comme l'empreinte digitale du CSR était déjà dans l'en-tête HPKP, le passage au nouveau certificat peut être effectué sans problème
  • en utilisant cette méthode, si une autorité de certification a déjà été compromise, même votre propre autorité de certification , tous les certificats malveillants émis pour votre domaine ne serait pas accepté par un navigateur ayant reçu l'en-tête HPKP
  • parce que l'empreinte digitale du certificat non autorisé n'a pas été reçue et mise en cache par le navigateur, elle sera rejetée et une connexion au site ne sera pas autorisée

Cela signifie que si toutes vos sauvegardes sont perdues, alors:

vous avez seulement jusqu'à l'expiration de votre certificat actuel pour diffuser une nouvelle politique à tous vos visiteurs!

C'est peut-être la raison pour laquelle peu de sites Web implémentent actuellement HPKP (recherchez quelques exemples dans securityheaders.io et vous constaterez peut-être que la plupart des banques en ligne ne le font pas, par exemple JP Morgan ), mais il traite/résout spécifiquement le problème soulevé par votre question.

2
CPHPython

La base de la sécurité du certificat est qu'un tiers (l'émetteur) certifie que le certificat a été délivré à une personne disposant des droits appropriés sur le domaine.

Si, en tant que client, je fais confiance à l'émetteur, je peux faire confiance à n'importe quel certificat qu'il a signé.

Les fraudes possibles sont:

  • quelqu'un vient avec de faux documents montrant qu'il est propriétaire du domaine. Cela pourrait être fait, mais l'émetteur doit être très prudent à ce sujet car cette partie est son vrai travail, et s'il peut facilement être trompé, personne ne lui fera plus confiance.

  • quelqu'un pirate un émetteur et obtient une clé privée valide permettant la signature du certificat. Les règles de sécurité des émetteurs de certificats sérieux ont tendance à rendre cela extrêmement difficile, et il est probable que le certificat volé sera bientôt révoqué.

En fait, on suppose généralement que le coût d'obtention d'un faux certificat n'en vaut pas la peine. Il existe de nombreuses autres façons plus simples de voler des informations sur le Web, dans la vie réelle.
N'oubliez jamais ce qui peut être fait avec une clé de 5 $

Bien sûr, les choses peuvent être différentes lorsque vous pensez aux agences gouvernementales. Je n'ai aucune preuve réelle que ce soit vrai ou non, mais je pense que la sécurité de l'État était vraiment concernée, ils pourraient demander un certificat valide pour un domaine tiers pour faire des interceptions légales.

0
Serge Ballesta