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. |
|
| Im Standard vier TLS Record Protocolle beschrieben: |
- Das Handshake-Protokoll,
- Das Alert-Protokoll,
- Das Change-Cipher-Spec-Protokoll,
- und das Application-Data-Protokoll.
| Weitere Record-Typen können definiert werden. |
| TLS-Connection-State
| beschreibt Parameter des TLS
Record Protocols |
| Teilnehmer einer Kommunikation
werden Client und Server bezeichnet |
| Festlegung der jeweiligen
Algorithmen zum
| Authentifizieren, |
| Chiffrieren usw. |
|
| aktuelle Parameter festgehalten
| geheime Schlüssel |
| aktueller Wert des Initialisierungsvektor
| ändert sich bei jedem Block |
|
|
|
| Man unterscheidet current und pendig Schreib- und
Lesezustände
| Pending-State
| während Hand-Shakes und
Übertragung neue Parameter ausgehandelt |
| Dann wechsel in
Current-State |
|
|
Current-State
| bearbeitet Datensätze der Anwendungen |
|
|
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
| grundsätzlich optional |
| mit (in dieser Sitzung
definierten) Kompressionsverfahren |
| stets eine aktive
Kompressionsmethode, |
| kann CompressionMethod.null sein |
|
Kompression muss verlustfrei sein |
| darf Datenlänge niemals um mehr als 1024 Bytes vergrößern |
|
Verschlüsselungs-Algorithmus
|
Verschlüsselung
| Schutz der Daten vor Lesen oder |
| absichtlicher Veränderung |
| Zähler erkennt
|
fehlende, |
| zusätzliche oder |
| wiederholte Nachrichten |
|
|
| MAC zur Authentisierung
| vor der Verschlüsselung berechnet |
|
|
Stromchiffre
| verschlüsselt gesamten Datenblock, |
| einschließlich des MAC. |
|
Stromchiffren ohne Initialisierungsvektoren (wie RC4) |
| verwenden Zustand der
Stromchiffre des vorherigen Datenblocks für den nachfolgenden |
| auch
Null-Verschlüsselung erlaubt |
| Null-Authentifizierung (wenn der MAC-Wert
null ist) |
| Blockchiffre wie DES-CBC
| verwendet Initialisierungsvektor
| während der
Initialisierung ermittelt |
|
| Initialisierungsvektor für ersten
Datenblock des nächsten TLS-Records
| letzter
Datenblock eines TLS-Records |
|
|
nicht ganz gefüllte Datenblöcke
| Standard legt fest, wie aufzufüllen (padding). |
|
|
|
Schlüsselberechnung
| Das Protokoll spezifiziert ein Verfahren zur Berechnung
| Schlüssel, |
|
Initialisierungsvektoren und |
| MAC-Geheimnisse |
|
| aus den Sicherheitsparametern,
|
während des Hands-Shake-Protokolls ausgetauscht |
| "Master-Secret" in Folge sicherer Bytes gehashed |
| in folgender
Reihenfolge zugeordnet
| dem
Schlüssel, |
| dem Initialisierungsvektoren und |
| den MAC-Geheimnissen |
|
|
- client write MAC secret,
- server write MAC secret,
- client write key,
- server write key,
- client write IV,
- server write IV.
| Nicht benutzte Werte sind leer. |
| Standard unterscheidet zwischen
exportierbaren und nicht exportierbaren Chiffren! |
|