Question:
Existe-t-il un moyen de prouver que HTTPS crypte la communication avec mon site?
NTHINGs
2016-10-06 00:06:44 UTC
view on stackexchange narkive permalink

Je travaille pour une entreprise qui s'occupe de développement d'applications Web et je suis "l'expert en sécurité". J'ai récemment implémenté HTTPS dans une application avec Let's Encrypt, et mon patron me demande de prouver que HTTPS crypte vraiment les informations.

Comment puis-je faire cela?

https://www.ssllabs.com/ssltest/ ou affichez le certificat en action avec l'icône de cadenas vert dans votre navigateur.Ce sont deux façons de sortir de ma tête.EDIT: une autre méthode serait de renifler votre trafic avec quelque chose comme WireShark, montrez-lui les paquets crypté[email protected] m'a battu
Si ceux-ci ne satisfont pas, vous pouvez toujours utiliser WireShark pour montrer qu'il n'y a rien en texte brut.
J'ai essayé WireShark mais seuls les packages TCP apparaissent
Qu'espériez-vous?HTTPS fonctionne sur TCP, il utilise très rarement un protocole différent.
désolé pour les débutants ici, et à quoi devrait ressembler le paquet crypté dans WireShark
Suivez le flux TCP et voyez si l'une des données apparaît en texte brut.[Voici un lien] (https://ask.wireshark.org/questions/14802/how-to-confirm-encrypted-data-using-wireshark)
@NTHINGs trouver un site qui prend en charge à la fois http et https.Comparez dans WireShark la navigation dans les deux modes.Vous verrez la différence.
N'oubliez pas non plus d'arrêter HTTP sur le port 80 et d'implémenter l'en-tête [Http Strict Transport Security] (https://www.owasp.org/index.php/HTTP_Strict_Transport_Security_Cheat_Sheet) afin qu'une attaque de rétrogradation ne puisse pas être effectuée.
OpenSSL et GnuTL sont des logiciels libres, vous venez sûrement de lire la source et de vérifier qu'elle fonctionne et de la montrer à votre patron?:) C'est tout l'argument de vente du logiciel libre, n'est-ce pas?Que vous puissiez lire la source et vérifier que cela ne va pas.Et tout le monde le fait.Excepté toi.(/ s)
Je pense que seul votre patron peut répondre à cette question - s'il ne fait pas confiance à l'indication du navigateur selon laquelle la session est sécurisée, quelle preuve cherche-t-il?Veut-il voir une capture de paquet?Comment pourriez-vous lui prouver que les paquets capturés sont cryptés et pas seulement obscurcis (ou compressés)?Veut-il une autre preuve?Peut-être une explication du fonctionnement de TLS et de la signification des indications du navigateur?
J'ai modifié le titre de la question pour qu'il y ait moins de différence entre le titre et la question posée dans le corps.Le titre précédent était quelque peu vague et ambigu à mon avis.J'ai senti que le titre original ressemblait plus à "comment configurer HTTPS pour qu'il fonctionne sur tous les clients", et non à "comment prouver que HTTPS fonctionne".
Pouvez-vous fournir plus de détails sur ce que le patron essaie de prouver?Essaie-t-il de voir si le SSL standard de l'industrie est appliqué, ou vérifie-t-il que les informations sensibles ne sont pas envoyées en texte brut, ou est-il paranoïaque que le cryptage que vous avez appliqué (et que vous pouvez voir dans le navigateur) n'est pas sécurisé?
Quel que soit le test que vous faites, assurez-vous de faire le même test avec HTTP et comparez les résultats.
Il convient de noter que HTTPS n'est pas toujours crypté, par exemplesi le serveur et le client prennent en charge le [protocole nul] (http://security.stackexchange.com/questions/39315/checking-ssl-tls-servers-for-null-encryption-support).Vous devez désactiver cela pour contrecarrer les [attaques de rétrogradation] (https://www.praetorian.com/blog/man-in-the-middle-tls-ssl-protocol-downgrade-attack).Voir [OWASP A5] (https://www.owasp.org/index.php/Top_10_2013-A5-Security_Misconfiguration) et sa [correction] (https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers_Insufficient_Transport_Layer_Protection_ (OTG-CRYPST-001)).
Montrez-lui cette question.Peut-être qu'il apprendra quelque chose.Aussi, s'il vous plaît, pour l'amour de tous les saints, dites-nous que les sites de cette société n'ont pas encore transmis les informations d'identification des utilisateurs sur Internet en texte brut.Si c'était le cas et que personne ne le savait ... je serais enclin à commencer à travailler sur mon CV.
Six réponses:
#1
+63
Bryan Field
2016-10-06 00:41:47 UTC
view on stackexchange narkive permalink

Mon patron me demande de prouver que HTTPS crypte vraiment les informations. Comment puis-je faire cela?

Au niveau de base, vous pouvez utiliser un inspecteur de paquets ou un simple proxy de redirection de port. Peut-être que Wireshark inspectera les paquets assez facilement.

Vous devriez rapidement pouvoir trouver que le trafic HTTP est du texte brut, tandis que le HTTPS est du charabia binaire. (à l'exception du nom d'hôte)

Cependant, cela prouve seulement que la connexion est obscurcie. Cela ne prouve pas le cryptage ou la sécurité. Plus précisément, il ne fait rien pour montrer l'immunité à MiTM.

Heureusement, le navigateur fait tout cela pour vous. Si un navigateur moderne tente de se connecter à une page Web HTTPS, il vérifiera les éléments suivants:

  • Algorithmes de hachage suffisamment puissants pour les certificats impliqués.
  • Algorithmes de chiffrement suffisamment puissants. (c'est-à-dire qu'elle est effectivement chiffrée)
  • Chaîne de certificats émise par une ou plusieurs autorités de certification de confiance (c.-à-d. CA qui vérifie la propriété du domaine avant d'émettre leurs certificats)
  • Non-expiration des certificats .
  • La correspondance des valeurs de hachage signifie qu'il n'y aura pas de MiTM.

Bien que votre patron puisse aimer voir le charabia de WireShark comparant HTTP à HTTPS , un test plus fort est de visiter tout simplement le site HTTPS avec un navigateur moderne.

Assurez-vous que le navigateur n'a pas été préconfiguré pour ignorer l'avertissement. (test à partir de plusieurs ordinateurs et smartphones)

Si vous prévoyez de continuer HTTPS de manière permanente (ce que vous devriez), une sage précaution serait de forcer la redirection de toutes les visites HTTP vers le site HTTPS, car vous ne pouvez pas garantir que tous les visiteurs incluront le préfixe https: // lors de la visite de votre site.

Une démonstration dans WireShark suffit généralement à quelqu'un d'assez stupide pour demander une démonstration qu'elle est protégée.
Je ne pense pas que demander des preuves soit * du tout * idiot.Si l'OP utilisait accidentellement HTTP, tout fonctionnerait très bien - ce ne serait tout simplement pas sécurisé!
@Joshua, ce n'est pas du tout idiot.Si un gestionnaire n'a pas confiance en son expert, et n'a pas les ressources à embaucher et l'expert en qui il a confiance, c'est la meilleure solution.En demandant à votre subordonné de prouver que vous incitez à un processus de réflexion, un autre cycle de pensée critique.C'est une question très intelligente à poser.
@AndrewSavinykh: La preuve n'est en fait pas bonne.Vous ne pouvez pas distinguer un bon cryptage d'un mauvais en regardant.
@Joshua - Je pense que vous manquez mon point
Vous prouvez qu'un toit fuit en attendant la pluie ou en sortant le tuyau.Si ni vous ni votre patron ne savez comment exploiter un cryptage incorrect ou désactivé, tout ce que vous faites est d'attendre la pluie.
#2
+38
INV3NT3D
2016-10-06 00:42:49 UTC
view on stackexchange narkive permalink

Voici quelques moyens (non exhaustifs) pour prouver que votre application crypte les informations :

  1. SSL Labs dispose d'une application Web pour tester la mise en œuvre SSL

OU de votre application Web

  1. Dans votre navigateur Web, les sites sécurisés avec HTTPS afficheront un verrou vert à côté de l'URL comme suit: a picture that shows the green lock icon next to the URL for google.ca

Si vous avez besoin de plus de détails, ou d'une meilleure preuve que votre certificat fonctionne autrement que le verrou vert, cliquez sur ce verrou, affichez les détails et vous verrez quelque chose comme ceci (dans Chrome pour cet exemple):

details that describe the certificate is encrypting your connection and working properly

Cela vous donnera tous les petits détails sales dont vous avez besoin pour vérifier que votre le certificat fonctionne comme prévu.

OR

  1. Lancez Wireshark , ou un sniffer / analyseur de paquets de votre choix, puis exécuter des données via votre application qui doivent être chiffrées (connexion, soumettre un formulaire etc ...). Recherchez le paquet , suivez le flux TCP et vérifiez que rien n'est transmis en texte brut .
Eh bien ... pour une personne paranoïaque, les 3 méthodes décrites ici * au mieux * montrent des preuves circonstancielles, mais ne peuvent pas être qualifiées de preuves.La seule façon de le prouver est de capturer tous les paquets et ** manuellement ** de vérifier que le protocole TLS est effectivement fait, les données sont cryptées à l'aide de l'algorithme et de la clé corrects (que vous ne pouvez prouver que par 1) des tests statistiques et 2) le décrypter en utilisant l'algorithme et la clé de décryptage correspondants) etc. et il n'y a pas de moyen simple et rapide de le faire, en particulier pour quelqu'un qui n'a aucune idée de la sécurité.
@Bakuriu, Je suis entièrement d'accord.Cela visait à montrer des méthodes simples pour «prouver» le cryptage à une personne, peut-être, pas si techniquement encline.En fait, je préfère la réponse de George Bailey à la mienne.Bons points cependant.
@Bakuriu Tout ce qui sort par la fenêtre si vous ne faites pas confiance au navigateur, de toute façon.
#3
+15
symcbean
2016-10-06 04:25:08 UTC
view on stackexchange narkive permalink

SSLlabs est un excellent outil pour analyser un site Web HTTPS. Mais ....

  • Cela ne prouve pas que vous avez fermé les parties non SSL du site
  • J'ai l'impression que votre patron ne le fera pas comprendre ce qu'il vous dit sur votre site
  • D'après vos commentaires sur WireShark, vous semblez avoir un peu de mal à comprendre ce qui se passe par vous-même

Vous dites que vous ' On m'a demandé de prouver que "HTTPS crypte vraiment les informations". Peut-être que quelqu'un a mal choisi ses mots, mais pris au pied de la lettre, vous dites qu'on vous demande de prouver que la technologie sur laquelle le monde s'appuie pour sécuriser le commerce électronique met réellement en œuvre son exigence la plus fondamentale. Je pense que quelqu'un aurait pu le remarquer maintenant si ce n'était pas le cas.

(Je dois souligner qu'il est techniquement possible de configurer https pour utiliser un chiffrement nul avec certains clients et mais il est extrêmement difficile de le faire par conception. Vous n’avez pas pu le faire par accident)

En supposant que votre patron ne voulait pas vraiment dire cela, on vous demande de convaincre lui que le travail que vous avez fait est valide. La plupart des navigateurs vous montreront les algorithmes de chiffrement utilisés pour accéder à un site.

Si votre patron veut quelque chose de différent / de plus, nous ne savons pas ce qui le convaincra. Vous devrez lui demander une exigence plus spécifique et des détails sur ce qu'il / elle considérerait comme une preuve acceptable .

Je dois également ajouter que sa très mauvaise pratique de gestion consiste à demander à l'implémenteur de quelque chose de prouver que cela fonctionne, qu'il s'agisse d'une fonctionnalité de sécurité, fonctionnelle, de performance, de capacité ou d'utilisabilité.
«Je pense que quelqu'un aurait pu le remarquer maintenant si ce n'était pas le cas.Le monde a.Plusieurs fois.Les anciennes versions de SSL / TLS sont devenues obsolètes.Les bogues dans les bibliothèques SSL / TLS ont été corrigés.Les principales exigences en matière de résistance ont été augmentées.C'est un système imparfait, bien sûr, mais c'est un système imparfait que le monde surveille de très près et investit des millions (milliards?) De dollars chaque année pour le rendre aussi bon que possible.Aucune petite entreprise avec un patron qui ne sait même pas à quel point le HTTPS est omniprésent ne proposera une meilleure alternative.+1
#4
+2
bdsl
2016-10-06 16:56:33 UTC
view on stackexchange narkive permalink

Contrat avec un expert professionnel de la sécurité informatique et un expert en cryptographie de bonne réputation. Permettez-leur de capturer le trafic sur votre réseau et demandez-leur d'essayer de savoir quels messages sont envoyés vers et depuis le site.

S'ils échouent, vous aurez établi que le trafic est effectivement chiffré. Bien sûr, ce ne sera probablement pas bon marché.

Alors c'est un bon travail que n'importe qui vaguement technique puisse utiliser Wireshark pour examiner les données eux-mêmes (comme expliqué dans les réponses précédentes) - pas besoin de payer qui que ce soit.
Cela dépend du niveau de preuve que le patron veut et est prêt à payer.Le patron peut ne pas être satisfait du témoignage de quelqu'un de «vaguement technique».Si le patron regarde les données lui-même, il ne sera probablement pas en mesure de faire la distinction entre un cryptage fort et un schéma qui remplace tous les uns par des zéros et vice versa.
S'ils échouent, cela peut être dû au fait qu'ils sont incompétents ou paresseux ou insuffisamment financés ou budgétisés ou n'ont rien fait.Cela ne suffit pas.
Non;c'est une réponse viable.Proposez de rechercher un expert et de lui faire faire une démonstration coûteuse.Juxtaposez cela à une démonstration de Wireshark.Si le patron choisit l'expert, vous saurez qu'il ne fait pas confiance à ses propres personnes pour être les experts.Cela justifiera de passer à autre chose lorsque l'économie sera bonne.
@EJP c'est pourquoi ce devrait être quelqu'un de bonne réputation.S'ils ont des antécédents d'incompétence ou de paresseux, ils n'auraient pas cette réputation et ils voudront probablement préserver la réputation.S'ils ne disposent pas de ressources suffisantes, ils devraient vouloir le préciser pour montrer qu'ils ne sont ni incompétents ni paresseux.
#5
+1
Luc
2016-10-07 16:57:22 UTC
view on stackexchange narkive permalink

Si vous cliquez sur l'icône de verrouillage dans Firefox et cliquez sur Plus d'infos, vous verrez quelque chose comme ceci:

Connection encrypted with TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 256 bit keys

Ce qui indique clairement que la connexion est cryptée et quels protocoles ont été utilisés.

#6
-3
Greenstone Walker
2016-10-06 06:32:34 UTC
view on stackexchange narkive permalink

Dites à votre patron: "Amazon.com l'utilise."

Ils sont assez vieux et suffisamment expérimentés en commerce électronique et sur le Web pour savoir ce qui fonctionne et ce qui ne fonctionne pas. S'ils considèrent que HTTPS est suffisant pour protéger votre carte de crédit, cela devrait être une preuve suffisante.

Quand j'ai fait de la programmation Web, il y a de nombreuses lunes, nous avons enseigné l'abréviation WADI - serait Amazon Do It. Si quelqu'un a dit "hé, notre site Web devrait faire ça!", Votre réponse serait "Est-ce qu'Amazon fait ça? Sinon, alors nous ne devrions pas non plus."

Je suis assez convaincu qu'Amazon n'utilise PAS Let's Encrypt .... Aucune de ces réponses n'est utile pour «prouver» que l'application Web utilise correctement et uniformément le canal crypté.La question OP est particulièrement importante si vous déchargez le TLS vers un équilibreur de charge ou un autre périphérique frontalier.
Le sous-texte que j'obtiens de la réponse est que le patron n'est pas technique.Dans ce cas, une preuve technique ne sera pas comprise, vous recherchez donc des preuves non techniques.
@GreenstoneWalker ne pense pas que le patron recherche une preuve technique, mais il y a deux questions ici, 1) Let's Encrypt a-t-il appliqué le cryptage SSL moderne et standard de l'industrie sur le site, et 2) Ce cryptage est-il sécurisé?Votre réponse ne traite que de ce dernier et ne répond pas à la préoccupation du patron selon laquelle quelqu'un a manqué quelque chose lors de la configuration et que le cryptage ne s'est jamais produit.
@GreenstoneWalker mentir à votre patron n'est pas un bon moyen de gagner sa confiance en votre service.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...