SSL - Secure Socket Layer - ist ein Sicherungsprotokoll,
das 1994 durch die Firma Netscape entwickelt wurde. Ursprünglich
wurde dieses Protokoll vor allem für den Austausch von Daten zwischen
WWW-Servern und WWW-Clients konzipiert. Inzwischen wurden allerdings
auch Anpassungen für andere Anwendungen wie Telnet, FTP und NNTP
entwickelt.
Im ISO/OSI-Schichtenmodell ist SSL als Schicht zwischen der Transportschicht
und der Anwendungsschicht anzusiedeln. Es werden alle gängigen
Verschlüsselungsverfahren wie DES, RSA, DSS, MD5 unterstützt und
die Einbindung weiterer Verfahren ermöglicht. Grundsätzlich gibt
es zwei verschiedene Verfahren zur Verschlüsselung von Daten:
symmetrische Verschlüsselung
Hierbei wird der gleiche Schlüssel zur Ver- und Entschlüsselung
benutzt. Dieses Verfahren ist sehr schnell und daher in der Lage
große Datenmengen innerhalb kürzester Zeit zu verschlüsseln. Allerdings
muß der Schlüssel beiden Seiten der Kommunikation bekannt und
gegenüber allen anderen geheim sein.
asymmetrische Verschlüsselung
Die asymmetrische Verschlüsselung benutzt zwei verschiedene Schlüssel
zur Ver- und Entschlüsselung. Das hat den Vorteil, daß einer der
Schlüssel veröffentlicht werden kann. Man spricht dabei vom sogenannten
Public Key. Diese Form der Verschlüsselung ist aufwendiger und
daher auch langsamer und für große Daten- mengen eher nicht geeignet.
Bei der SSL-Verschlüsselung werden sowohl symmetrische als auch
asymmetrische Verschlüsselung genutzt. Man spricht daher auch
von einem hybriden Verfahren. Es folgt dabei der Austausch eines
Schlüssels per asymmetrischem Verfahren. Anschließend wird dieser
Schlüssel dann zur symmetrischen Verschlüsselung genutzt. Das
verbindet die Vorteile beider Verfahren. SSL benutzt darüber hinaus
ein Prüfsummenverfahren, das die Integrität der übertragenen Daten
sicherstellt.
Außerdem arbeitet SSL mit sogenannten Zertifikaten. Diese Zertifikate
werden von bestimmten Vergabestellen ausgestellt. Dabei wird ein
Zertifikat immer für einen bestimmten Server erstellt. Dieses
enthält dann die ID des Servers und seinen öffentlichen Schlüssel.
Dieses Zertifikat wird dann mit dem privaten Schlüssel der Zertifizierungsstelle
unterschrieben und ist somit fälschungssicher. Fordert nun ein
Client Daten von diesem Server per SSL an, so überträgt der Server
sein Zertifikat. Der Client kann das Zertifikat mit dem Schlüssel
der Zertifizierungsstelle, der öffentlich ist, entschlüsseln und
somit die Echtheit des Zertifikates und die Identität des Servers
verifizieren. Diese Vorgänge sind natürlich in modernen Browsern
automatisiert und für den Benutzer transparent. Die meisten Browser
teilen dem Nutzer lediglich die erfolgreiche Prüfung und den Aufbau
einer sicheren Verbindung mit. Die zur Prüfung von Zertifikaten
nötigen public keys der Zertifizierungsstellen sind also bereits
im Browser gespeichert.
Der Aufbau einer sicheren Verbindung mit SSL erfolgt im sogenannten
Handshake-Verfahren, also einer wechselseitigen Kommunikation.
Man spricht auch davon, daß die Kommunikation ausgehandelt wird.
Eine einfache sichere Kommunikation, bei der nur eine Zertifizierung
seitens des Servers notwendig ist, erfolgt in 6 Schritten:
1. Schritt
CLIENT HELLO
Der Client überträgt eine erste Nachricht zum Server, in der z.B.
die benutzte Versionsnummer, eine Sitzungsnummer und das gewünschte
Verschlüsselungsverfahren enthalten sind.
2.Schritt
SERVER HELLO
Der Server übermittelt seinerseits eine Nachricht, die die Versionsnummer
und das zu verwendende Verschlüsselungs- und Kompressionsverfahren
enthält.
3.Schritt
SERVER CERTIFICATE
Der Server sendet sein Zertifikat, welches im Normalfall ein X.509
Zertifikat ist.
4.Schritt
SERVER KEY EXCHANGE
Der Server übermittelt nun die Parameter für das zu verwendende
Verschlüsselungsverfahren.
5.Schritt
SERVER HELLO DONE
Damit signalisiert der Server das Ende seiner Übermittlung.
6.Schritt
FINISHED
Mit dieser letzten Nachricht des Clients wird noch einmal ein
digitaler Finger- abdruck des gesamten Protokolls übermittelt.
Mit dessen Hilfe kann der Server dessen Integrität prüfen.
Nach diesen Schritten kann die sichere Kommunikation auf der Anwendungsebene
erfolgen. Es gibt auch eine Kommunikationsvariante, bei der zusätzlich
vom Client ein Zertifikat gefordert wird. Dieses ist dann um die
entsprechenden Schritte für den Client erweitert. |