web-dev-qa-db-fra.com

Les attaquants peuvent-ils modifier la clé publique du certificat pendant la négociation SSL

La communication n'est pas chiffrée pendant la négociation SSL. Si un attaquant mène une attaque d'homme au milieu entre le serveur et le client pour capturer le certificat, et changer la clé publique dans le certificat et l'envoyer au client, alors la signature numérique est la même, toutes les propriétés sauf la clé publique sont les mêmes.

Alors, comment un navigateur peut-il comprendre la différence? Si le navigateur le valide, l'attaquant peut utiliser sa propre paire de clés et n'a pas besoin de la clé privée du serveur.

18
Grey

... modifiez la clé publique dans le certificat et envoyez-la au client. La signature numérique est la même, toutes les propriétés sauf la clé publique sont identiques. Alors, comment le navigateur peut-il comprendre la différence?

Le navigateur vérifie que la signature des certificats correspond au certificat. Étant donné que la clé publique est incluse dans la signature et que la clé publique est modifiée, la signature ne correspond plus au certificat. Par conséquent, la validation échouera.

41
Steffen Ullrich

À la fin de la négociation TLS (le message "Terminé"), le client et le serveur prennent un hachage de la conversation entière qu'ils ont eu jusqu'à présent, et ils la comparent. S'il diffère - comme si quelqu'un effectuait une attaque MitM sur le certificat - alors la connexion est interrompue.

Pour citer RFC 5246 :

  The Finished message is the first one protected with the just
  negotiated algorithms, keys, and secrets.  Recipients of Finished
  messages MUST verify that the contents are correct.  Once a side
  has sent its Finished message and received and validated the
  Finished message from its peer, it may begin to send and receive
  application data over the connection.

Pour répondre aux commentaires de @Moo et @Damon, le message Terminé n'empêchera pas une attaque MitM complète (" SSL Interception "), où le MitM peut directement intercepter et proxy tous TCP et possède un certificat valide au nom de la cible. Il empêche uniquement la falsification discrète du flux entre le client et le serveur - comme cela a été proposé par l'OP.

25
gowenfawr

Les certificats n'existent pas isolément. Pour être digne de confiance, un certificat doit être signé par un émetteur; ces émetteurs sont appelés autorités de certification. Chaque navigateur (ou système d'exploitation) gère sa propre liste de quelques centaines d'autorités de certification de confiance (appelées autorités de certification racine) qu'il connaît et approuve déjà; et votre employeur ou votre école peut avoir sa propre autorité de certification racine émettrice privée. Si un certificat est signé par un émetteur inconnu d'un client, il n'est pas digne de confiance.

Tant que la négociation TLS ne parvient pas à la partie Fin du protocole, le serveur a envoyé sa clé publique dans son certificat dans le message Server Hello. Le client est responsable de valider l'intégralité du certificat dès sa réception. La validation comprend la vérification de la date d'expiration du certificat, de sa signature ET de la signature de l'émetteur et de son certificat d'émission. Si le certificat émetteur ne provient pas d'un émetteur fiable connu (celui que le client a sur cette liste interne d'autorités de certification racine de confiance), le client doit rejeter la connexion.

Par conséquent, si un attaquant remplaçait un certificat différent qui n'était pas signé par une autorité à laquelle le client fait déjà confiance, il serait rejeté car l'émetteur ne figurait pas dans la liste des autorités de certification de confiance. Si l'attaquant tentait d'utiliser sa propre clé sans envoyer le certificat approprié, le client utiliserait la mauvaise clé et ne communiquerait pas correctement pendant le message Terminé.

Si l'attaquant a réussi à ajouter sa fausse autorité de certification racine à la liste des autorités de certification dignes de confiance de votre système, alors oui, l'attaquant pourrait exécuter un homme au milieu de l'attaque et afficher vos communications. Cela est souvent fait délibérément par des entreprises qui cherchent à inspecter tout le trafic Web, à exécuter des analyses antivirus, à empêcher les logiciels malveillants, à empêcher les secrets de fuir ou à simplement surveiller la navigation Web de leurs employés.

24
John Deters