2010-01-21 5 views
11

Ma question concerne les certificats spécifiquement dans ssl mais je pense que les questions devraient s'appliquer à tous les certificats. J'ai inclus la procédure SSL dans un souci de clarté.SSL: Comment les certificats sont-ils protégés contre les attaques intermédiaires?

Dans SSL ce que je crois être la procédure:

1) Client

  • envoie des algorithmes de chiffrement pris en charge
  • envoie client nonce

2) Serveur

  • Choisit (et envoie) un
    • algorithme symétrique
    • un algorithme à clé publique
    • un algorithme MAC
  • envoie son certificat
  • envoie au serveur nonce

3) Client

  • vérifie le certificat
    • Extraits clé publique
  • Génère une clé secrète pré-maître (pms)
  • Crypte avec des serveurs clé publique et envoie

4) client et serveur

  • Compute maître sécrètent (MS) de PMS et nonces
  • PMS coupés en tranches pour générer deux chiffrement & deux clés mac

5) client

  • envoie un mac de tous les poignées de main (pour assurer leur n'étaient pas auparavant modifide)

6) serveur

  • envoie un mac de tous les poignées de main

Question

Ce qui empêche un homme dans l'attaque du milieu de se produire à l'étape deux?Pourquoi un homme au milieu, disons trudy, ne peut-il pas capturer le certificat envoyé par le serveur et y changer la clé publique (à quelque chose à qui il a la clé privée). Je suppose que le certificat est crypté d'une manière ou d'une autre.

Toutefois, le serveur ne peut pas crypter le certificat car le client n'a pas encore la clé publique. Lorsque le serveur reçoit la clé d'une autorité (comme veri-sign), la clé est-elle pré-encodée en utilisant la clé publique de verisign? Je pense que cela devrait fonctionner parce que tous les navigateurs Web devraient avoir les clés publiques de la plupart des autorités.

+1

dans la description de la profondeur de la façon dont ssl (ou TLS) fonctionne pour toute personne intéressée: http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html – sixtyfootersdude

Répondre

10

Non, le certificat n'est pas crypté. Mais il est signé par une autorité de certification (CA). Puisque ceux-ci vérifient les informations incluses dans le certificat (en particulier l'URL à laquelle le cert appartient), il ne devrait pas y avoir un deuxième certificat valide pour une URL donnée.

Le certificat de l'autorité de certification est vérifié par rapport à un fichier de clés certifiées (par exemple dans votre navigateur). Si ce fichier de confiance est compromis, ou si vous faites confiance à des certificats non valides, il n'y a pas de protection contre les attaques du milieu

+1

Alors qu'est-ce qui empêche Tudy (un maninmiddle) de changer l'information dans un certificat mais en laissant la même signature? La signature est-elle en quelque sorte un hachage de l'information contenue dans le certificat? Comment la signature garantit-elle que le certificat est sécurisé? – sixtyfootersdude

+1

@sixtyfootersdude Vous avez parfaitement raison. Le cert est fondamentalement un morceau de contenu (clé publique de quelqu'un, l'URL pour laquelle il appartient ...) + un hachage de ce contenu crypté avec la clé privée de l'AC. Donc, tout le monde peut déchiffrer le hachage et le comparer au hachage acutal. Mais quelqu'un qui change le contenu ne peut pas recréer le hachage crypté. –

+3

Un hachage est pris du certificat. Ce hachage est ensuite crypté avec la clé privée de l'autorité de certification. Pour vérifier, le même hachage est calculé par le vérificateur et la signature est déchiffrée avec la clé publique de l'AC et les deux hachages comparés. – Vatine

4

Les certificats sont signés par une autorité de confiance, telle que Verisign.

Les certificats pour ces autorités racine sont intégrés dans les navigateurs lorsque vous les téléchargez. Vous pouvez afficher les certificats racine dans Firefox, par exemple, en allant à tools -> options -> advanced -> encryption -> view certificates -> autorités.

Si l'une de ces autorités de certification racine est compromise, vous avez raison de croire qu'un certificat peut être falsifié, ce qui rend possible une attaque de type man-in-the-middle.

+0

Juste précisiez le processus: Si vous voulez un certificat signé par, disons, Verisign, vous devez leur prouver que vous avez la clé privée associée (en signant quelque chose pour eux), et que vous possédez le domaine en question. En règle générale, cela consiste simplement à répondre à un e-mail sur ce domaine, mais il est * beaucoup * plus impliqué (vous obligeant à aller physiquement à leur bâtiment et fournir plusieurs formes d'identification) pour EV certs (http://en.wikipedia.org/wiki/Extended_Validation_Certificate) –

+0

... et c'est la raison pour laquelle CACert a malheureusement un si mauvais moment. – Boldewyn

2

Vous avez en fait signalé un point faible de l'ICP.

Say Trudy est au milieu de vous et yourbank (bank.com). Trudy peut changer la clé publique à volonté à l'étape 2 mais la signature du certificat sera invalide. Donc, Trudy doit trouver un moyen de générer à nouveau la signature. Il est sûr de dire que les CA de confiance ne le feront pas pour lui. Il doit donc signer avec une fausse AC, qui n'est pas approuvée par votre navigateur. C'est toujours sûr en théorie. Cependant, la plupart des navigateurs (en particulier IE 6) affichent un avertissement de sécurité vague et la plupart des gens ne comprennent pas et ignorent simplement, selon certains tests.

+0

Huh, semble être une arnaque intéressante. Je parie que pour la plupart des choses, les gens ne font pas attention à ces avertissements vagues (et techniques). Mais je soupçonne que pour les opérations bancaires et autres choses de ce genre, les gens sont plus prudents. Je me demande s'il serait possible d'avoir un avertissement plus clair. – sixtyfootersdude

+2

L'expérience a montré que la seule solution est d'interdire la connexion. Peu importe la clarté de l'avertissement, l'utilisateur cliquera à travers. Je me souviens d'un exemple hilarant où une boîte de message apparaît, avec le titre "Virus Warning", le contenu de la boîte était "Ceci est un virus, voulez-vous continuer" avec deux boîtes, dont chacune dit "Oui". –

+0

> "Il est sûr de dire que les autorités de certification de confiance ne le feront pas pour lui." Euh non. Il existe des centaines d'autorités de certification de confiance et vous n'avez besoin que d'un d'entre eux pour émettre un faux certificat pour que vous puissiez faire un MITM silencieux. Certaines CA ont été révoquées pour abus généralisé de ceci et nous pouvons supposer que la NSA l'a fait depuis la fin des années 200X et que d'autres organisations criminelles n'ont aucun problème pour acheter ou émettre de faux certificats. Pour voir ce qui se passe en temps réel pour facebook, google et autres, installez l'extension Firefox Certificate Patrol. – martinwguy

Questions connexes