|
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
|