Rechnernetze
Home Nach oben Stichworte

TLS Record Protocol

Das TLS Record Protocol ist ein Schichtenprotokoll.

Auf der Senderseite werden die folgenden Dienste angeboten:

Entgegennahme zu übermittelnder Nachrichten,
Fragmentierung der Nachrichten in handhabbare Datenblöcke,
Komprimierung der Daten (optional),
Authentifizierung der Daten,
Verschlüsseln der Daten,
Übertragen der entsprechend behandelten Daten an den Empfänger.

Auf der Empfängerseite werden die folgenden Dienste angeboten:

Entgegennahme von Nachrichten,
Entschlüsseln der Daten,
Verifikation authentifizierter Daten,
Dekompression komprimierter Daten,
Reassemblierung fragmentierter Daten,
authentifizieren der Daten,
Weiterreichen der Daten an den Empfänger.

Es werden in dem Standard vier TLS Record Protocolle beschrieben:

  1. Das Handshake-Protokoll,
  2. Das Alert-Protokoll,
  3. Das Change-Cipher-Spec-Protokoll,
  4. und das Application-Data-Protokoll.

Weitere Record-Typen können definiert werden.

In dem TLS-Connection-State werden die Parameter des TLS Record Protocols beschrieben. Die beiden Teilnehmer einer Kommunikation werden als Client und Server bezeichnet. Neben der Festlegung der jeweiligen Algorithmen zum Authentifizieren, Chiffrieren usw. werden auch die aktuellen Parameter, wie geheime Schlüssel aber auch der aktuelle Wert des Initialisierungsvektor, der sich bei jedem Block ändert, festgehalten.

Man unterscheidet current und pendig Schreib- und Lesezustände. Im Pending-State werden während des Hand-Shakes und während der Übertragung neue Parameter ausgehandelt. Danach geht das Protokoll in einen Current-State über, in welchem die Datensätze der Anwendungen bearbeitet werden.

Fragmentierung

Daten können in Blöcke von bis zu 214 Bytes Länge fragmentiert werden, wobei auch verschiedene Datensätze gleichen Typs in einem solchen TLSPlaintext-Record zusammengefasst werden können.

Kompressions-Algorithmus

Kompression, die grundsätzlich optional ist, wird mit den in dieser Sitzung definierten Kompressionsverfahren durchgeführt. Es gibt stets eine aktive Kompressionsmethode, die jedoch CompressionMethod.null sein kann. Kompression muss verlustfrei sein und darf die Datenlänge niemals um mehr als 1024 Bytes vergrößern.

Verschlüsselungs-Algorithmus

Zum Schutz der Daten vor Lesen oder absichtlicher Veränderung wird eine Verschlüsselung durchgeführt. Durch einen Zähler werden darüber hinaus fehlende, zusätzliche oder wiederholte Nachrichten erkannt.

Der MAC zur Authentisierung wird vor der Verschlüsselung berechnet. Eine Stromchiffre verschlüsselt den gesamten Datenblock, einschließlich des MAC. Stromchiffren ohne Initialisierungsvektoren (wie RC4) verwenden den Zustand der Stromchiffre des vorherigen Datenblocks für den nachfolgenden. Es ist auch die Null-Verschlüsselung erlaubt sowie eine Null-Authentifizierung (wenn der MAC-Wert null ist). Eine Blockchiffre wie DES-CBC verwendet ein während der Initialisierung ermittelten Initialisierungsvektor und benutzt den letzten Datenblock eines TLS-Records als Initialisierungsvektor für den ersten Datenblock des nächsten TLS-Records. Der Standard legt ebenfalls fest, wie nicht ganz gefüllte Datenblöcke aufgefüllt werden müssen (padding).

Schlüsselberechnung

Das Protokoll spezifiziert ein Verfahren, um Schlüssel, Initialisierungsvektoren und MAC-Geheimnisse aus den Sicherheitsparametern, die während des Hands-Shake-Protokolls ausgetauscht wurden, zu berechnen. Dazu wird das "Master-Secret" in eine Folge sicherer Bytes gehashed, welche dem Schlüssel, den Initialisierungsvektoren und MAC-Geheimnissen in folgender Reihenfolge zugeordnet werden:

  1. client write MAC secret,
  2. server write MAC secret,
  3. client write key,
  4. server write key,
  5. client write IV,
  6. server write IV.

Nicht benutzte Werte sind leer. Der Standard unterscheidet zwischen exportierbaren und nicht exportierbaren Chiffren!