Je suis nouveau dans le domaine des demandes et de la sécurité HTTP et de toutes ces bonnes choses, mais d'après ce que j'ai lu, si vous voulez que vos demandes et réponses soient chiffrées, utilisez HTTPS et SSL, et vous serez bon. Quelqu'un dans une question précédente a posté un lien vers cette application http://www.charlesproxy.com/ qui montre qu'il est effectivement possible de renifler les requêtes HTTPS, et de voir le demande et réponse en texte PLAIN.
J'ai essayé cela avec la connexion facebook.com, et j'ai en effet pu voir mon nom d'utilisateur ET mon mot de passe en texte clair. C'était aussi facile. Que se passe-t-il? Je pensais que c'était tout l'intérêt de HTTPS - pour crypter les demandes et les réponses?
Ceci est expliqué dans leur page sur proxy SSL , peut-être pas avec suffisamment d'explications.
Un proxy est, par définition, un man-in-the-middle : le client se connecte au proxy et le proxy se connecte au serveur.
SSL fait deux choses:
C'est la deuxième partie qui est importante et apparemment cassée ici: vous êtes assis devant votre navigateur et surpris que votre navigateur se connecte au proxy alors que vous vous attendiez à ce qu'il se connecte à Facebook. Techniquement, le proxy ne renifle pas le trafic HTTPS, il le relaie.
Votre navigateur sait qu'il est connecté à Facebook car le site a un certificat qui dit "Je suis vraiment www.facebook.com
”. Cryptographie à clé publique , ce qui signifie que je n'entrerai pas ici, garantit que seul le détenteur de la clé privée peut établir une connexion valide avec ce certificat. Ce n'est que la moitié de la bataille: vous avez seulement la prétention du serveur que c'est vraiment www.facebook.com
et pas randomhijacker.com
. Votre navigateur vérifie en outre que le certificat a été validé par autorité de certification . Votre navigateur ou système d'exploitation est accompagné d'une liste d'autorités de certification auxquelles il fait confiance. Encore une fois, la cryptographie à clé publique garantit que seule l'autorité de certification peut émettre des certificats que votre navigateur acceptera.
Lorsque vous vous connectez au proxy, votre navigateur reçoit un certificat indiquant "Je suis vraiment www.facebook.com
”. Mais ce certificat n'est pas signé par une autorité de certification à laquelle votre navigateur fait confiance par défaut. Donc:
https://www.facebook.com/
;Dans tous les cas, vous avez demandé à votre navigateur de faire confiance au proxy. Il en est ainsi. Une connexion SSL n'est pas sécurisée si vous commencez à faire confiance à des étrangers aléatoires.
Lecture recommandée pour plus d'informations:
Vous ne pouvez pas casser https à moins d'avoir accès à la clé symétrique de la session . En bref, les sessions https fonctionnent de cette façon:
Si certains avancent en cours de route, un tiers peut accéder au secret partagé, il sera également en mesure de générer la clé symétrique de session et de décrypter la communication.