Home
IPSec
SSL

e-Mail an mich

Unterschiede zwischen SSL und TLS

Angriffe

Unterschiede zwischen SSL und TLS

In diesem Abschnitt werden die Unterschiede zwischen SSL Version 3.0 und TLS Version 1.0 aufgezeigt. Da wäre zum Einen die Versionsnummer. TLS arbeitet mit dem gleichen Record Protokoll wie SSL. Daher steht bei TLS in dem Feld Major Version eine 3 und im Feld Minor Version eine 1. TLS Version 1.0 wird also als SSL Version 3.1 angezeigt.

Die Erstellung des MAC bei SSL weicht etwas von der Definition des HMAC ab. Bei der Definition von TLS entschied man sich, auf den Standard HMAC zurückzugreifen. Auf Grund der sehr ähnlichen Struktur der MACs stellt die Realisierung der Kompatibilität jedoch keinen allzu großen Aufwand dar.

Im Gegensatz zu SSL, ist bei TLS Version 1.0 die Erzeugung von Pseudozufallszahlen definiert. Es handelt sich um ein iteratives Verfahren, das beliebig oft angewendet werden kann, um eine bestimmte Menge Pseudozufallsdaten zu erhalten. Ein Startwert dient zusammen mit einem geheimen Schlüssel als Input für den HMAC. An das Ergebnis, das als A(1) bezeichnet wird, wird der Startwert angehängt und diese Daten dienen nochmals zusammen mit dem geheimen Schlüssel als Input für den HMAC. Das Ergebnis ist der erste Block an Pseudozufallsdaten. Dieser Block hat die Länge 128 Bit, wenn als Hashfunktion MD5 eingesetzt wurde, und 160 Bit, wenn SHA-1 genutzt wird. Wird ein weiterer Block Daten benötigt, so dient A(1) statt des Startwerts als Input für den HMAC.

Die Alert Meldungen von SSL Version 3.0 sind bis auf die no_certificate Meldung alle in TLS Version 1.0 definiert. Darüber hinaus gibt es bei TLS noch einige zusätzliche Meldungen. Stets die Bewertung fatal haben dabei:

  • decryption_failed (21): Der Chiffretext ließ sich nicht entschlüsseln, da z.B. die Blocklänge nicht korrekt ist.
  • record_overflow (22): Ein Record Paket wurde empfangen, dessen Größe verschlüsselt 214 + 2048 Byte oder entschlüsselt 214 + 1024 Byte überschreitet.
  • unknown_ca (48): Ein gültiges Zertifikat wurde abgelehnt, weil die Certification Authority CA nicht lokalisiert werden konnte oder nicht als vertrauenswürdig eingestuft wurde.
  • access_denied (49): Der Sender dieser Meldung hat den Verbindungsaufbau nach Erhalt des Zertifikats der Gegenseite abgebrochen.
  • decode_error (50): Eine Nachricht konnte nicht ausgewertet werden, weil ein Parameter außerhalb des erlaubten Bereichs liegt oder die Länge der Nachricht nicht korrekt ist.
  • export_restriction (60): Beim Verbindungsaufbau wurde eine Verletzung der Exportbestimmungen bezüglich der erlaubten Schlüssellängen festgestellt.
  • protocol_version (70): Die vom Client angegebene Protokollversion von SSL / TLS ist zwar bekannt, wird aber nicht unterstützt.
  • insufficient_security (71): Diese Meldung ersetzt die Meldung handshake_failure, wenn der Server stärkere Verschlüsselung fordert, als der Client unterstützt.
  • internal_error (80): Ein interner Fehler, der keinen Bezug zur Gegenseite oder zur Korrektheit des Protokolls hat, macht eine weitere Verbindung unmöglich.

Des Weiteren existieren bei TLS Version 1.0 drei zusätzliche Meldungen, die im Normalfall der Einstufung warning unterliegen. Dies sind:

  • decrypt_error (51): Der Verbindungsaufbau schlug fehl, da eine Signatur nicht verifiziert werden konnte, der ausgetauschte Schlüssel nicht entschlüsselt werden konnte oder die Meldung finished nicht bestätigt wurde.
  • user_canceled (90): Der Verbindungsaufbau wurde vom Benutzer abgebrochen.
  • no_renegotiation (100): Diese Nachricht folgt auf ein hello_request des Servers oder ein client_hello des Clients, wenn der Absender der Meldung nicht in der Lage ist, eine neue Verhandlung durchzuführen.

Darüber hinaus werden die Zertifikate des Clients anders eingeteilt. Im Gegensatz zu SSL Version 3.0 werden bei TLS 1.0 keine gesonderten Zertifikatstypen beim ephemeral Diffie-Hellman Schlüsselaustausch definiert. Da die Verfahren SKIPJACK und KEA bei TLS nicht unterstützt werden, gibt es auch kein KEA-Zertifikat.

Bei der Berechnung des Hashwertes für die Nachricht certificate_verify werden nur die Handshake Nachrichten als Input genutzt. Bei SSL Version 3.0 werden zusätzlich auch die Paddingwerte und der geheime Schlüssel in den Hashwert einbezogen.

Auch bei der Nachricht finished ist die Berechnung des MAC unterschiedlich zu SSL Version 3.0. Im Falle von TLS 1.0 dienen der geheime Schlüssel, die Kennzeichnung, ob die Nachricht vom Client oder vom Server stammt, und die Hashwerte der Handshake Nachrichten nach MD5 und SHA-1 als Input für den Pseudozufallszahlengenerator.

Der Pseudozufallszahlengenerator spielt auch bei der Gewinnung des geheimen Schlüssels aus dem sogenannten Pre-Master Secret eine wichtige Rolle. Nutzt SSL Version 3.0 die Hashverfahren MD5 und SHA-1, um den geheimen Schlüssel zu ermitteln, so geschieht dies bei TLS Version 1.0 wiederum durch den Pseudozufallszahlengenerator. Als Input dienen hier das Pre-Master Secret, der Schriftzug „master secret“ und die Zufallswerte, die Client und Server in ihren Hello Meldungen geschickt haben.

Schließlich unterscheidet sich auch das Padding bei TLS Version 1.0 vom Padding bei SSL Version 3.0. Bei SSL Version 3.0 wird genau die Menge an Bits angehängt, die der Verschlüsselungsalgorithmus benötigt, um alle Datenblöcke verarbeiten zu können. Bei TLS Version 1.0 hingegen, ist die Paddinglänge variabel und kann den Minimalwert um Vielfache der gewünschten Blocklänge bis zu einem Wert von 255 Byte übersteigen. Dies soll einen Angreifer zusätzlich verwirren, da er sich bei einer gegebenen Klartextlänge verschiedenen Möglichkeiten des Paddings gegenüber sieht.

Angriffe

[Home] [IPSec] [SSL] [AES-Kandidaten] [Über mich] [Links] [Gästebuch]