Anwendungsdaten mit (Pre) -Master-Secret-Protokolldatei in Wireshark entschlüsseln

486
cwanjt

Ich habe einige Artikel gelesen, in denen ein Verfahren zum Entschlüsseln von SSL / TLS-Verkehr ohne einen privaten Schlüssel beschrieben wird. Sitzungsschlüssel werden in einer Protokolldatei generiert, die dann von Wireshark nach Punkt in die Protokolldatei gelesen wird.

SSL-Verkehr mit Sitzungsschlüsseln entschlüsseln

Meine spezielle Protokolldatei mit den Sitzungsschlüsseln wurde jedoch erstellt, nachdem wir eine Paketaufzeichnungssitzung mit Wireshark durchgeführt hatten. Ist es möglich, die in dieser Protokolldatei geschriebenen Schlüssel zum Entschlüsseln der zuvor in Wireshark erfassten Pakete zu verwenden, oder muss dieser Vorgang parallel ausgeführt werden (Schreiben in die Protokolldatei und Erfassen der Pakete in Wireshark)?

Die Tatsache, dass es sich hierbei um Sitzungsschlüssel handelt, lässt vermuten, dass die in die Protokolldatei geschriebenen Schlüssel den erfassten Paketen zugeordnet werden müssen, aber ich konnte nicht bestätigen, dass dies tatsächlich der Fall ist.

0

1 Antwort auf die Frage

2
Frank Thomas

Nein, wahrscheinlich nicht, es sei denn, der Schlüssel wurde später in derselben Sitzung protokolliert. Jede Sitzung verwendet einen eigenen Schlüssel.

Per MSDN:

Session

An exchange of messages under the protection of a single piece of  keying material. For example, SSL sessions use a single key to send multiple messages back and forth under that key.  

Sitzungsschlüssel

A relatively short-lived cryptographic key, often negotiated by a  client and a server based on a shared secret. A session key's lifespan is bounded by the session to which it is associated. A session key should be strong enough to withstand cryptanalysis for the lifespan of the session. When session keys are transmitted, they are generally protected with key exchange keys (which are usually asymmetric keys) so that only the intended recipient can access them. Session keys can be derived from hash values by calling the CryptDeriveKey function. 

Quelle

Daher ist es fast sicher, dass die erfassten Nachrichten einen vorherigen Schlüssel verwenden, es sei denn, Sie haben den Schlüssel vor dem Starten einer neuen Sitzung mit dem Protokoll erfasst.

TLS und SSL verwenden einen deterministischen Psuedo-Zufallszahlengenerator (DPRNG), um eine Stream-Sequenz für den Schlüssel zu generieren, die sowohl auf dem Host als auch auf dem Client parallel generiert wird, basierend auf einem gemeinsamen Ausgangswert, den sie aushandeln Anfangskern und dann den Versatz für jede Nachricht (da es sich um eine Stromverschlüsselung handelt) und über die Mittel verfügen, um den DPRNG schnell an die richtige Position für den Nachrichtenteil des Streams vorwärts zu spulen. Wireshark hat wahrscheinlich die Möglichkeit, das später auszuführen, vorausgesetzt, der Stream wurde von Anfang an erfasst. Ohne den Seed kann der Schlüssel für die jeweilige Nachricht jedoch nicht gefunden werden.