web-dev-qa-db-fra.com

Est-il possible de décrypter une session SSL / TLS sans faire une attaque MITM?

Je ne parle pas de décrypter la connexion pendant que le SSL/TLS se produit (MITM), mais après la fermeture de la connexion et j'ai un fichier PCAP de l'ensemble du processus de négociation/transfert de données.

Comment puis-je déchiffrer les données qui ont été transmises dans la connexion? Existe-t-il un moyen d'obtenir la clé de session (sans attendre quelques années pour le processus de calcul)? Les ordinateurs quantiques vont-ils aider?

6
YSY

La réponse courte est non". La réponse longue est que SSL est spécifiquement conçue pour rendre cela impossible. Si cela était possible, SSL serait inutile à sa destination principale - à des choses sûres comme les numéros de carte de crédit envoyés pour sécuriser les sites Web.

La réponse abrégée (et techniquement incorrecte) pour la manière dont SSL est-ce comme suit:

  1. Le serveur présente un certificat au client.

  2. Le client confirme que le certificat a été signé par une organisation les fiducies du client et que cette organisation certifie que le certificat appartient au serveur que le client souhaite atteindre.

  3. Le client génère une clé aléatoire, la crypte avec la clé publique du certificat et l'envoie au serveur.

  4. Le serveur décrypte la clé et utilise le secret partagé que le serveur et le client doivent désormais sécuriser davantage de communications. (Elle le fait de manière un peu complexe cependant. Encore une fois, ceci est une explication simplificatrice.)

Le déchiffrement des données nécessiterait au moins la récupération du secret partagé généré à l'étape 3. Mais comment feriez-vous cela? Il n'a été envoyé sur le fil crypté, et vous n'avez pas la clé privée du serveur.

14
David Schwartz

Cela peut être fait, mais cela nécessite des informations au-delà de ce que vous avez sur le fil. Wireshark a la possibilité de faire ce type de reniflement , en supposant que cela puisse voir toute la conversation et que vous avez également la clé privée du certificat SSL du serveur. Sans la clé privée, cela ne fonctionne pas.

C'est pourquoi vous devez protéger vos clés privées.

J'ai utilisé cette fonctionnalité dans le logiciel de débogage. Une application client/serveur a utilisé SSL pour transmettre des données et quelque chose de drôle se déroulait dans la couche réseau. Étant donné que j'ai contrôlé l'ensemble de l'environnement, j'ai eu la clé privée pour le certificat SSL, vous pouvez donc utiliser Wireshark pour obtenir la conversation. Qui à son tour pointa sur un bug que j'ai signalé au développement.

8
sysadmin1138