TLS Record ProtocolDas TLS Record Protocol ist ein Schichtenprotokoll. Auf der Senderseite werden die folgenden Dienste angeboten:
Auf der Empfängerseite werden die folgenden Dienste angeboten:
Es werden in dem Standard vier TLS Record Protocolle beschrieben:
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. FragmentierungDaten 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-AlgorithmusKompression, 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-AlgorithmusZum 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üsselberechnungDas 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:
Nicht benutzte Werte sind leer. Der Standard unterscheidet zwischen exportierbaren und nicht exportierbaren Chiffren! |