Inhaltsverzeichnis         Kapitel 1         Kapitel 2         Kapitel 3         Kapitel 4         Kapitel 5         Kapitel 6         Literaturverzeichnis




4 Absicherungen des TCP/IP

4.1 Die Schichten des TCP/IP

In der folgenden Tabelle sind die Schichten des TCP/IP (Transmission Control Protocol/Internet Protocol) und die zu den Schichten gehörenden Teilprotokolle dargestellt. SSL ist eine von Netscape Communications eingeführte Schicht, die eine sichere Ende-zu-Ende-Kommunikation ermöglicht (Kapitel 4.4):

Schicht

Protokolle

Verarbeitungsschicht

HTTP, S-HTTP, FTP, SMTP, POP3, TELNET, DNS, S-DNS, NNTP

Secure Socket Layer (SSL)

SSL-Protokoll

Transportschicht

TCP, UDP

Internetschicht

IP

Host-an-Netz-Schicht

nicht festgelegt

Tabelle 2: Die Schichten des TCP/IP


Host-an-Netz-Schicht: Das TCP/IP sagt über diese Schicht nur aus, dass ein Host am Netz über ein nicht festgelegtes Protokoll in der Lage sein muss, IP-Pakete zu versenden und zu empfangen. Das Protokoll hängt von dem verwendeten Host und dem Netz ab, in dem sich der Host befindet.

Internetschicht: Die Internetschicht befördert Datenpakete von einem Host zu einem anderen, wobei sich Sender und Empfänger in unterschiedlichen Teilnetzen befinden dürfen. Das dazugehörige Protokoll heißt IP (Internet Protocol). Das IP ist verbindungslos; die Pakete werden unabhängig voneinander und womöglich über unterschiedliche Rechner zum Ziel befördert.

Transportschicht: In der Transportschicht sind zwei Ende-zu-Ende-Protokolle definiert: das TCP (Transmission Control Protocol) ist ein zuverlässiges, verbindungsorientiertes Protokoll, mit dessen Hilfe ein Datenstrom fehlerfrei von einem Host zu einem anderen Host befördert wird. Der Datenstrom wird dazu in einzelne IP-Pakete zerlegt, die beim Empfänger in der richtigen Reihenfolge wieder zusammengesetzt werden. TCP beinhaltet eine Flusssteuerung, die verhindern soll, dass ein langsamer Empfänger nicht mit Nachrichten vom schnellen Sender überlastet wird. Das UDP (User Data Protocol) ist verbindungslos und unzuverlässig. Es enthält keine Flusssteuerung, berücksichtigt keine Paketreihenfolge und bietet keine Fehlerkorrektur, hat aber den Vorteil der höheren Zustellgeschwindigkeit.

Secure Socket Layer (SSL): Diese Schicht wird in Kapitel 4.4 beschrieben.

Verarbeitungsschicht: Auf der Verarbeitungsschicht befinden sich spezialisierte Protokolle, auf denen viele Internet-Anwendungen aufsetzen, z. B. HTTP für die Übertragung von Webseiten, FTP zur Dateiübertragung oder NNTP zum Senden und Empfangen von Newsbeiträgen.


4.2 Sicherheitsprobleme des TCP/IP

Auf der Internetschicht (IP) ergeben sich folgende Probleme:

-

Es ist nicht sicher, dass die Daten fehlerfrei übertragen werden.

-

Es ist nicht feststellbar, ob ein Paket seinen Empfänger erreicht hat.

-

Jeder Rechner, durch den das Paket geroutet wird, kann das Paket lesen oder fälschen.

-

Es können IP-Pakete mit falscher Absenderadresse verschickt werden (IP Spoofing).

-

Die Daten werden unverschlüsselt übertragen.

-

Sender und Empfänger können nicht authentifiziert werden.

Die Fehlerfreiheit der übertragenen Daten wird durch TCP gewährleistet, das eine Fehlerkorrektur implementiert. Die Protokolle der Verarbeitungsschicht können Bestätigungsmitteilungen für empfangene Pakete vorsehen.

Die üblichen Protokolle auf der Verarbeitungsschicht sind Klartextprotokolle, die gesendeten Daten werden nicht verschlüsselt. Dies kann es einem Angreifer ermöglichen, aus abgefangenen Paketen vertrauliche Daten wie z. B. Passwörter für E-Mail oder FTP-Server zu entnehmen. Ein weiteres Problem ist das sogenannte DNS-Spoofing: ein Angreifer fängt eine Datenbankanfrage an den DNS (Domain Name Service) ab, der eine für den Menschen lesbare Internetadresse (z. B. http://www.internetbank.de) in eine IP-Adresse verwandelt. Der Angreifer antwortet nun mit einer IP-Adresse, die beispielsweise den Benutzer nicht auf die Webseite der Internetbank führt, sondern auf seine eigene. Der Angreifer kann seine Webseite so gestalten, dass sie wie die Webseite der Internetbank aussieht. Der Kunde denkt, dass er mit der Webseite der Internetbank verbunden ist und gibt dem Angreifer unter Umständen wichtige Informationen (z. B. PIN oder TAN) preis. Dieser Angriff kann durch das Überprüfen des Server-Zertifikats (falls vorhanden) abgewehrt werden.

In Kapitel 4.3 wird der künftige Standard IPv6 angesprochen, der Authentifizierung und Verschlüsselungsmechanismen anbietet. Kapitel 4.4 beschreibt den SSL-Standard, der schon heute authentische und vertrauliche Kommunikation bietet und weitgehend akzeptiert ist.


4.3 Absicherung auf der Internetschicht - IPv6

IPv6 stellt die Weiterentwicklung des heute üblichen IPv4 dar. IPv6 erlaubt die Authentifizierung des Senders und die Verschlüsselung der übertragenen Daten. IPv6 sieht allerdings keinen Mechanismus zur Schlüsselverteilung vor wie zum Beispiel SSL (Kapitel 4.4).


4.4 Absicherung auf der Transportschicht - SSL

SSL (Secure Socket Layer) wurde von Netscape Communications entwickelt, um sichere und authentische Kommunikation über das Internet zu ermöglichen und wird heute weltweit als Standard akzeptiert. SSL ist eine Schicht, die sich zwischen Transportschicht und Verarbeitungsschicht des TCP/IP-Schichtenmodells schiebt (Kapitel 4.1) und daher Verschlüsselung und Authentifikation allen Protokollen der Verarbeitungsschicht zur Verfügung stellt. Das SSL-Protokoll besteht aus zwei Teilen: dem sog. Record-Protokoll, das das Format definiert, wie die Daten übertragen werden und dem sog. Handshake-Protokoll, das der Authentifizierung der Kommunikationspartner (Client und Server) sowie der Schlüsselübertragung dient und das Record Protokoll zur Nachrichtenübertragung benutzt.

Nachdem eine TCP/IP-Verbindung zwischen Client und Server aufgebaut wurde, setzt das Handshake Protokoll ein ([NET98] und [FKK96]):

1.

Der Client sendet die von ihm unterstützte SSL-Version, eine Liste der von ihm unterstützten Verschlüsselungs- und Hashverfahren und zufällig generierte Daten an den Server.

2.

Der Server legt daraufhin die anzuwendenden Verfahren fest. Dies geschieht in Abhängigkeit von den unterstützten Verfahren und internationalen Regelungen (z. B. darf aus den USA exportierte Software nur mit eingeschränkter Schlüssellänge verschlüsseln). Der Server sendet außerdem sein Zertifikat an den Client und verlangt eventuell das Zertifikat vom Client.

3.

Der Client überprüft das Zertifikat des Servers (Kapitel 3.2.4). War die Überprüfung erfolgreich, geht es weiter mit Schritt 4, ansonsten wird die Verbindung beendet.

4.

Der Client generiert aus den zufälligen Daten das sog. "premaster secret", aus denen später die vier Sitzungsschlüssel generiert werden, verschlüsselt dieses mit dem öffentlichen Schlüssel des Servers und sendet das verschlüsselte premaster secret an den Server.

5.

Falls der Server die Authentifizierung des Client verlangt (Kapitel 3.3.2), schickt der Client sein Zertifikat an den Server. Kann der Server das Zertifikat des Client als gültig erkennen und ist der Client berechtigt, auf die angeforderte Ressource zuzugreifen, geht es weiter mit Schritt 6, ansonsten wird die Verbindung beendet.

6.

Der Server entschlüsselt das vom Client erhaltene verschlüsselte premaster secret mit seinem privaten Schlüssel. Client und Server generieren aus dem premaster secret die vier Sitzungsschlüssel, die zur Verschlüsselung und Integritätssicherung der zu übertragenden Daten dienen.

7.

Client und Server senden zwei Nachrichten an ihren jeweiligen Kommunikationspartner, die besagen, dass zukünftige Nachrichten mit den Sitzungsschlüsseln verschlüsselt werden und dass der jeweilige Teil des Handshake-Protokolls abgearbeitet wurde.

8.

Nun ist der Handshake beendet und die Datenübertragung zwischen Client und Server kann gemäß dem Record-Protokoll unter Benutzung der vier Sitzungsschlüssel erfolgen. Diese Sitzungsschlüssel sind symmetrisch. Der "Client-write-key" wird vom Client zur Verschlüsselung von Nachrichten benutzt, das "Client-write-MAC-secret" benötigt der Client zum Signieren. Um ein Datenpaket zu signieren, wird aus dem Datenpaket und dem "Client-write-MAC-secret" ein Hashwert generiert. Nur der Server kann den Hashwert überprüfen, da er ebenfalls das "Client-write-MAC-secret" besitzt. Die Verschlüsselung des Datenpakets erfolgt symmetrisch mit dem "Client-write-key". Analog benutzt der Server den "Server-write-key" und das "Server-write-MAC-secret".

SSL erfüllt die in Kapitel 2 gestellten Anforderungen: Vertraulichkeit durch Verschlüsselung mit den "Write-keys", Integrität durch digitale Signaturen, Authentifizierung und Autorisierung durch Zertifikate und Nichtabstreitbarkeit durch Zertifikate und digitale Signaturen.


4.5 Absicherung auf der Verarbeitungsschicht - S-HTTP

S-HTTP ist ein Protokoll der Verarbeitungsschicht und erweitert HTTP um Sicherheitsfunktionen. S-HTTP kann daher seine Sicherheitsmechanismen nur HTTP zur Verfügung stellen, die anderen höheren Protokolle wie z. B. FTP oder TELNET können S-HTTP nicht nutzen. S-HTTP sichert die Geheimhaltung durch Verschlüsselung, die Nicht-Abstreitbarkeit durch digitiale Signaturen, die Authentifizierung durch Zertifikate und die Integrität der Daten durch sog. Message Authentication Codes (MACs). S-HTTP konnte sich nicht durchsetzen, da mit SSL bereits eine akzeptierte und flexiblere Lösung vorliegt.


Inhaltsverzeichnis         Kapitel 1         Kapitel 2         Kapitel 3         Kapitel 4         Kapitel 5         Kapitel 6         Literaturverzeichnis