SSL

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Secure Socket Layer, SSL oder auch Transport Layer Secure, TLS genannt, ist ein Protokoll für die Verschlüsselung einer Übertragung. Dabei wird SSL als Schicht zwischen TCP und dem Anwendungsprotokoll, z.B. HTTP, FTP oder TELNET verwendet. Mit SSL werden verschiedene Sicherheitsaspekte abgedeckt:

  • Authentifizierung - Der Server muss sich dem Client gegenüber mit seinem Zertifikat authentifizieren
  • Verschlüsselung - Die Kommunikation des Clients mit dem Server und umgekehrt wird vollständig symetrisch verschlüsselt, z.B. mit DES, Tripple DES oder AES
  • Authentizität und Integrität - Alle Daten werden mit kryptographischen Prüfsummen versehen, welche z.B. mit MD5 oder SHA-1 gebildet werden.

Aufbau

Das SSL Protokoll besitzt 2 Ebenen:

SSL Handshake Protocol SSL Change Cipherspec. Protocol SSL Alert Protocol SSL Application Data Protocol
SSL Record Protocol

SSL Record Protocol

Das Record Protocol bildet die Grundlage der SSL Kommunikation, es sorgt für eine mit einem symetrischen Schlüssel verschlüsselte Ende-zu-Ende Verbindung und für eine Fragmentierung der Daten von maximal 65536 Bytes. Die Art Verschlüsselung und der Schlüssel wird mit dem SSL Handshake Protocol ausgehandelt. Neben der Fragmentierung werden die Daten auch mit kryptographischen Prüfsummen versehen. Es ist auch möglich, dass die Daten vor der Verschlüsselung komprimiert werden. Dies wird auch mit dem SSL Handshake Protokoll ausgehandelt.

SSL Handshake Protocol

Mit dem Handshake Protocol werden die Komprimierung, Art der Verschlüsselung sowie die Schlüssel ausgetaucht. Desweiteren können mit dem Handshake Protocol die Teilnehmer identifiziert und authorisiert werden, dies ist jedoch optional. Bei der gesamten Kommunikation verwendet das Handshake Protocol immer das Record Protocol als Grundlage.

Der Ablauf der Kommunikation kann in 4 Phasen unterteilt werden:

  1. Der Client sendet dem Server ein client_hello, darin enthalten ist die höchste vom Client unterstützt SSL Version, eine 32Bit Zufallszahl um das pre-master-secret zu bilden. Somit schützt sie auch vor Replay-Attacken. Desweiteren ist eine Session ID enthalten und die zu verwendende Verschlüsselung. Der Server antwortet darauf mit einem server_hellp worin er die Daten bestätigt.
  2. (Optional) Der Server übermittelt dem Client sein X509v3-Zertifikat, außerdem kann der Server ein CertificateRequest an den Client schicken um dessen Zertifikat zu erhalten.
  3. (Optional) Der Client sendet dem Server sein X509v3-Zertifikat, wenn er keins besitzt einen NoCertificateAlert. Außerdem wird das Zertifikat vom Server verifiziert. Wenn als Verschlüsselung RSA verwendet wird, tauscht der Client das pre-master-secret mit dem öffentlichen Schlüssel des Servers aus. Hier kann auch das Diffie-Hellman Verfahren verwendet werden.
  4. Mit dem pre-master-secret kann das Master Secret erzeugt werden, woraus der symetrische Sitzungschlüssel gebildet wird. Dieser wird mit Hilfe von SHA-1 und MD5 aus dem pre-master-secret und der Zufallszahl aus dem 1.Schritt erzeugt.

SSL Change Cipherspec. Protocol

Mit dem Change Cipherspec. Protocol lässt sich die Verschlüsselung wärend des Verbindungsaufbaus ändern.

SSL Alert Protocol

Das Alert Protocol signalisiert dem anderen Teilnehmer, dass ein Fehler bei der Verbindung aufgetreten ist, beispielsweise wenn der Client kein Zertifikat besitzt, der Server aber eins verlangt hat.

SSL Application Data Protocol

Mit dem Application Data Protocol werden die Daten der übergeordneten Anwendung versendet.


Client/Server Authentifizierung

Bei der Authentifizierung werden 4 Elemente aus dem Zertifikat überprüft:

  • Liegt das aktuelle Datum innerhalb des Validätszeitraum des Zertifikates?
  • Findet sich die CA in der Liste der vertrauenswürdigen CAs des Clients?
  • Ist die Signatur des Zertifikats in Ordnung?
  • Stimmt der Domainname des Servers mit dem Domainnamen im Zertifikat überein?

Wenn der Server den Client überprüft, wird außerdem nachgesehen ob der Client in der Liste (z.B. LDAP) der vertrauenswürdigen Personen steht.

Vorteile

Ein großer Vorteil von SSL ist, das es jede Art von Protokoll transportieren kann, dass auf TCP aufbaut.

Nachteile

Der Verbindungsaufbau ist für den Server sehr rechenintensiv und damit auch langsam. Außerdem können Daten nur vollständig verschlüsselt werden, soll beispielsweise ein Verbindung über mehrere Stationen laufen die alle einen Teil der Daten lesen sollen ist dies nicht möglich. Wird SSL ohne Zertifikatsauthorisierung verwendet ist eineMan-In-The-Middle-Attacke möglich, bei der der Angreifer den Schlüssel mit beiden Partnern tauscht und so alles mitschneidet.

Weiterführende Artikel

Links