Disons que je devais télécharger une trace Wireshark sur un site Web qui était accessible au public. Disons que le journal de clés SSL, les informations de certificat, etc. étaient disponibles. Si quelqu'un avait le lien avec la trace, quels dangers y aurait-il?
De toute évidence, le contenu et les informations de la session de trace donnée sont visibles par tout le monde, qu'en est-il d'une session passée ou future qui s'est produite? Qu'en est-il des sessions qui ont eu lieu avec d'autres clients ou d'autres serveurs? Pourrais-je être en danger de quelque chose comme une attaque de relecture ou une attaque de l'homme au milieu?
Si la trace wireShark a été créée du point de vue d'une écoute clandestine passive, il n'y a rien dans la trace qui pourrait être utilisé pour falsifier les futures connexions SSL/TLS.
Gardez à l'esprit que de nombreuses entités sont en mesure de faire la même trace que vous, notamment les opérateurs de hotspot sans fil, les FAI, les opérateurs de dorsale, les centres de données, etc. S'il était possible de falsifier les futures connexions SSL/TLS à l'aide de la trace que vous avez faite, alors n'importe laquelle de ces entités pourrait faire la même chose. SSL/TLS a été spécialement conçu pour résister à ce type d'altération.
Même si vous exécutez la trace sur le client et enregistrez les informations de session dans SSLKEYLOGFILE, les informations de ce fichier ne seront pas utiles pour falsifier les futures connexions SSL/TLS, car ce fichier contient uniquement des clés éphémères et des clés de session utilisées uniquement pour le session lorsque la trace a été effectuée.
Si quelqu'un n'a accès qu'à une capture de paquets et à aucun autre élément clé, il pourra évidemment voir des données non cryptées telles que le nom du serveur (SNI) et le certificat de serveur dans TLS 1.2, mais pas les données cryptées. TLS est conçu pour empêcher des tiers de falsifier la session et pour empêcher les attaques de relecture.
Le fichier généré par la variable d'environnement SSLKEYLOGFILE stocke généralement les secrets par session et est écrit par un point de terminaison (client ou serveur). Son format est documenté à https://developer.mozilla.org/NSS_Key_Log_Format
Pour TLS 1.3 , les secrets enregistrés ne seront utilisables que pour cette session particulière. Ces secrets ne peuvent pas être utilisés pour décrypter une autre session. Cela inclut les sessions précédentes, les sessions futures et les sessions avec d'autres clients ou serveurs. La raison en est que les secrets sont dérivés de la transcription complète des messages de prise de contact. Tout changement dans la prise de contact (par exemple, un client aléatoire différent ou un nom de serveur différent) entraînera un secret différent.
Pour TLS 1.2 et versions antérieures, la situation est presque la même. Cependant, il y a deux exceptions qui cassent la sécurité des futures sessions.
Le deuxième problème est subtil, mais très important. Il a été résolu dans TLS 1.3 où chaque session comprend toujours un échange de clé complet, rendant ainsi le "secret de reprise" indépendant des secrets réels qui seront utilisés pour le cryptage de la poignée de main et des données d'application.
Un exemple illustrant le problème de reprise de session TLS 1.2:
Le problème ici est que l'étape 5 pourrait finir par utiliser la reprise de session TLS 1.2. Un attaquant passif (MitM) qui voit le trafic de votre réseau (par exemple, dans un réseau Wi-Fi public dans un café) pourra utiliser les secrets de l'étape 7 pour décrypter votre activité à l'étape 6. Il pourrait potentiellement apprendre votre mot de passe, et faites des choses terribles avec.
Morale de l'histoire: oui, il est sûr de partager la capture de paquets avec le SSLKEYLOGFILE, mais assurez-vous qu'il ne comprend que des clés pour les sessions qui ne vous intéressent pas. Si vous souhaitez créer une trace pour le partage, utilisez une machine virtuelle ou utilisez un profil de navigation distinct. Un exemple de ce dernier peut être trouvé dans la diapositive 8 de mes diapositives sur l'exécution du décryptage TLS avec Wireshark: https://lekensteyn.nl/files/wireshark-tls-debugging-sharkfest19eu.pdf
Si vous ne pouvez pas démarrer un nouveau profil de navigation, vous pouvez au moins essayer de vider votre cache. Cela devrait garantir que la prochaine nouvelle connexion utilise de nouvelles clés.
Bien que vous l'ayez mentionné dans votre question, je le répéterai une fois de plus pour être complet: la trace décryptée peut révéler des cookies, des URL, des images, le contenu de la page Web et tout autre détail que vous avez partagé pendant la session de capture. Même si vous arrêtez votre capture locale, quelqu'un d'autre pourrait écouter et capturer tout dans la connexion existante. Une fois que vous avez publié les secrets, ils peuvent tout décrypter dans cette connexion.