Die dargestellte TLS 1.3-Verbindung (jedes Byte erklärt und wiedergegeben)

Jedes Byte erklärt und wiedergegeben

Hallo Kunde

Die Sitzung beginnt damit, dass der Kunde "Hallo" sagt. Der Auftraggeber stellt insbesondere folgende Informationen zur Verfügung: zufällige Kundendaten (werden später im Handshake verwendet) eine Liste der vom Client unterstützten Verschlüsselungssammlungen eine Liste öffentlicher Schlüssel, die der Server für den Schlüsselaustausch geeignet finden könnte Protokollversionen, die der Client unterstützen kann Datensatzkopf 16 03 01 00 f8 TLS-Sitzungen werden in sendende und empfangende „Datensätze“ unterteilt, bei denen es sich um Datenblöcke mit Typ, Protokollversion und Länge handelt. 16 - Typ ist 0x16 (Handshake-Aufzeichnung) 03 01 – Protokollversion ist „3.1“ (auch bekannt als TLS 1.0) 00 f8 - 0xF8 (248) Handshake-Nachrichtenbytes folgen Interessanterweise ist die Version in diesem Datensatz „3.1“ (TLS 1.0) statt „3.4“ (TLS 1.3). Dies dient der Interoperabilität mit früheren Implementierungen. Handshake-Header 01 00 00 f4 Jede Handshake-Nachricht beginnt mit einem Typ und einer Länge. 01 - Handshake-Nachrichtentyp 0x01 (Hallo Kunde) 00 00 f4 - 0xF4 (244) Kunden-Hallo-Datenbytes folgen Kundenfreigabe 03 03 Als Protokollversion wird „3.3“ (also TLS 1.2) angegeben. Da Middleboxen erstellt und weit verbreitet sind, die keine Protokollversionen zulassen, die sie nicht erkennen, muss die TLS 1.3-Sitzung als TLS 1.2-Sitzung getarnt werden. Dieses Feld wird nicht mehr für die Versionsverhandlung verwendet und ist in Version 1.2 fest codiert. Stattdessen wird die Versionsverhandlung mithilfe der Erweiterung „Unterstützte Versionen“ unten durchgeführt.

Die ungewöhnliche Versionsnummer ("3.3" steht für TLS 1.2) liegt daran, dass TLS 1.0 eine geringfügige Überarbeitung des SSL 3.0-Protokolls ist. Daher wird TLS 1.0 durch „3.1“ dargestellt, TLS 1.1 ist „3.2“ und so weiter.

Zufälliger Kunde 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f

Der Client stellt 32 Byte Zufallsdaten bereit. Diese Daten werden später in der Sitzung verwendet. In diesem Beispiel haben wir die Zufallsdaten zu einer vorhersagbaren Zeichenfolge gemacht.

Sitzungs-ID 20 e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff In früheren Versionen von TLS konnte der Client eine ID einer zuvor ausgehandelten Sitzung bereitstellen, sodass Server und Client den Zeit- und Kostenaufwand für das Aushandeln neuer Schlüssel sparen konnten.

In TLS 1.3 erfolgt diese "Sitzungswiederaufnahme" über den flexibleren PSK-Mechanismus (Pre-Shared Keys), sodass dieses Feld für diesen Zweck nicht mehr benötigt wird. Stattdessen wird ein nicht leerer Wert in diesem Feld verwendet, um den „Midbox-Kompatibilitätsmodus“ auszulösen, wodurch TLS 1.3-Sitzungen als fortgesetzte TLS 1.2-Sitzungen getarnt werden können. Der Client hat Zufallsdaten generiert, um dieses Feld auszufüllen.

20 - 0x20 (32) Sitzungs-ID-Bytes folgen e0 e1 ... fe ff - gefälschte Sitzungs-ID Cipher Suites 00 08 13 02 13 03 13 01 00 ff. Der Client stellt eine geordnete Liste von Verschlüsselungssammlungen bereit, die er für die Verschlüsselung unterstützt. Die Liste erfolgt in der vom Kunden bevorzugten Reihenfolge, wobei die höchste Präferenz zuerst angezeigt wird.

In TLS 1.3 wurde die Liste der möglichen Cipher Suites erheblich reduziert. Alle verbleibenden Suiten sind AEAD-Algorithmen, die stärkere Verschlüsselungsgarantien als viele frühere Suiten mit einfacherer All-in-One-Implementierung bieten.

00 08 - 8 Byte Cipher-Suite-Daten 13 02 – zugewiesener Wert für TLS_AES_256_GCM_SHA384 13 03 – zugewiesener Wert für TLS_CHACHA20_POLY1305_SHA256 13 01 – zugewiesener Wert für TLS_AES_128_GCM_SHA256 00 ff - zugewiesener Wert für TLS_EMPTY_RENEGOTIATION_INFO_SCSV Komprimierungsmethoden 01 00 Frühere Versionen von TLS unterstützten die Komprimierung, bei der festgestellt wurde, dass Informationen über verschlüsselte Daten preisgegeben wurden, sodass sie gelesen werden konnten (siehe KRIMINALITÄT).

TLS 1.3 erlaubt keine Komprimierung mehr, daher ist dieses Feld immer noch ein einzelner Eintrag mit der "Null"-Komprimierungsmethode, die keine Änderungen an den Daten vornimmt.

01 - 1 Byte Komprimierungsmethoden 00 - zugewiesener Wert für "Null"-Komprimierung Verlängerungen Länge 00 a3 Der Client hat eine Liste mit optionalen Erweiterungen bereitgestellt, die der Server verwenden kann, um Maßnahmen zu ergreifen oder neue Funktionen zu aktivieren. 00 a3 - Erweiterungen nehmen 0xA3 (163) b ...

Die dargestellte TLS 1.3-Verbindung (jedes Byte erklärt und wiedergegeben)
Jedes Byte erklärt und wiedergegeben

Hallo Kunde

Die Sitzung beginnt damit, dass der Kunde "Hallo" sagt. Der Auftraggeber stellt insbesondere folgende Informationen zur Verfügung: zufällige Kundendaten (werden später im Handshake verwendet) eine Liste der vom Client unterstützten Verschlüsselungssammlungen eine Liste öffentlicher Schlüssel, die der Server für den Schlüsselaustausch geeignet finden könnte Protokollversionen, die der Client unterstützen kann Datensatzkopf 16 03 01 00 f8 TLS-Sitzungen werden in sendende und empfangende „Datensätze“ unterteilt, bei denen es sich um Datenblöcke mit Typ, Protokollversion und Länge handelt. 16 - Typ ist 0x16 (Handshake-Aufzeichnung) 03 01 – Protokollversion ist „3.1“ (auch bekannt als TLS 1.0) 00 f8 - 0xF8 (248) Handshake-Nachrichtenbytes folgen Interessanterweise ist die Version in diesem Datensatz „3.1“ (TLS 1.0) statt „3.4“ (TLS 1.3). Dies dient der Interoperabilität mit früheren Implementierungen. Handshake-Header 01 00 00 f4 Jede Handshake-Nachricht beginnt mit einem Typ und einer Länge. 01 - Handshake-Nachrichtentyp 0x01 (Hallo Kunde) 00 00 f4 - 0xF4 (244) Kunden-Hallo-Datenbytes folgen Kundenfreigabe 03 03 Als Protokollversion wird „3.3“ (also TLS 1.2) angegeben. Da Middleboxen erstellt und weit verbreitet sind, die keine Protokollversionen zulassen, die sie nicht erkennen, muss die TLS 1.3-Sitzung als TLS 1.2-Sitzung getarnt werden. Dieses Feld wird nicht mehr für die Versionsverhandlung verwendet und ist in Version 1.2 fest codiert. Stattdessen wird die Versionsverhandlung mithilfe der Erweiterung „Unterstützte Versionen“ unten durchgeführt.

Die ungewöhnliche Versionsnummer ("3.3" steht für TLS 1.2) liegt daran, dass TLS 1.0 eine geringfügige Überarbeitung des SSL 3.0-Protokolls ist. Daher wird TLS 1.0 durch „3.1“ dargestellt, TLS 1.1 ist „3.2“ und so weiter.

Zufälliger Kunde 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f

Der Client stellt 32 Byte Zufallsdaten bereit. Diese Daten werden später in der Sitzung verwendet. In diesem Beispiel haben wir die Zufallsdaten zu einer vorhersagbaren Zeichenfolge gemacht.

Sitzungs-ID 20 e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff In früheren Versionen von TLS konnte der Client eine ID einer zuvor ausgehandelten Sitzung bereitstellen, sodass Server und Client den Zeit- und Kostenaufwand für das Aushandeln neuer Schlüssel sparen konnten.

In TLS 1.3 erfolgt diese "Sitzungswiederaufnahme" über den flexibleren PSK-Mechanismus (Pre-Shared Keys), sodass dieses Feld für diesen Zweck nicht mehr benötigt wird. Stattdessen wird ein nicht leerer Wert in diesem Feld verwendet, um den „Midbox-Kompatibilitätsmodus“ auszulösen, wodurch TLS 1.3-Sitzungen als fortgesetzte TLS 1.2-Sitzungen getarnt werden können. Der Client hat Zufallsdaten generiert, um dieses Feld auszufüllen.

20 - 0x20 (32) Sitzungs-ID-Bytes folgen e0 e1 ... fe ff - gefälschte Sitzungs-ID Cipher Suites 00 08 13 02 13 03 13 01 00 ff. Der Client stellt eine geordnete Liste von Verschlüsselungssammlungen bereit, die er für die Verschlüsselung unterstützt. Die Liste erfolgt in der vom Kunden bevorzugten Reihenfolge, wobei die höchste Präferenz zuerst angezeigt wird.

In TLS 1.3 wurde die Liste der möglichen Cipher Suites erheblich reduziert. Alle verbleibenden Suiten sind AEAD-Algorithmen, die stärkere Verschlüsselungsgarantien als viele frühere Suiten mit einfacherer All-in-One-Implementierung bieten.

00 08 - 8 Byte Cipher-Suite-Daten 13 02 – zugewiesener Wert für TLS_AES_256_GCM_SHA384 13 03 – zugewiesener Wert für TLS_CHACHA20_POLY1305_SHA256 13 01 – zugewiesener Wert für TLS_AES_128_GCM_SHA256 00 ff - zugewiesener Wert für TLS_EMPTY_RENEGOTIATION_INFO_SCSV Komprimierungsmethoden 01 00 Frühere Versionen von TLS unterstützten die Komprimierung, bei der festgestellt wurde, dass Informationen über verschlüsselte Daten preisgegeben wurden, sodass sie gelesen werden konnten (siehe KRIMINALITÄT).

TLS 1.3 erlaubt keine Komprimierung mehr, daher ist dieses Feld immer noch ein einzelner Eintrag mit der "Null"-Komprimierungsmethode, die keine Änderungen an den Daten vornimmt.

01 - 1 Byte Komprimierungsmethoden 00 - zugewiesener Wert für "Null"-Komprimierung Verlängerungen Länge 00 a3 Der Client hat eine Liste mit optionalen Erweiterungen bereitgestellt, die der Server verwenden kann, um Maßnahmen zu ergreifen oder neue Funktionen zu aktivieren. 00 a3 - Erweiterungen nehmen 0xA3 (163) b ...

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow