Suche

Sichere Datenübertragung im Internet

Annja Zahn, Lehrstuhl für Praktische Informatik I

mit Apache-SSL und Netscape Navigator/Communicator

erschienen Juli 1998 in: Augsburg
Verlag: Selbstverlag
ISSN 1435-1684


Vertrauliche und sensitive Informationen wurden in den Anfängen der Datenübertragung im Klartext über das Internet verschickt. Damit waren sie für Unbefugte sowohl lesbar als auch veränderbar. Die heutigen Geschäftsvorgänge im Internet - Stichwort Internetbanking - erfordern ausreichende Schutzmechanismen für die Anwender. Dieser Artikel zeigt die Möglichkeiten, wie Sicherheit im Internet "funktioniert" und was man als Anwender selbst dazu beitragen kann.

Die internationale Normierungsorganisation ISO hat mit ihrem OSI-Schichtenmodell die Grundlage für die Kommunikation unterschiedlicher (offener) Systeme geschaffen. Kern der gesamten Protokollhierarchie ist die Transportschicht. Wie die Namensgebung bereits verrät, ist sie für den Transport der Daten vom Absender zum Empfänger verantwortlich. Dies beinhaltet auch eine Reihe von Dienstgüteparametern wie Übertragungsrate oder Ausfallwahrscheinlichkeit beim Verbindungsaufbau. Das Transportprotokoll bestimmt zudem die Route, welche die Daten über das Netzwerk nehmen und stellt gegebenenfalls sicher, daß Pakete weder verlorengehen noch in der falschen Reihenfolge ausgeliefert werden.

Die darüberliegenden Schichten befassen sich mit der Bereitstellung von benutzerorientierten Diensten. Sie verwenden den blanken, fehlerfreien Transportkanal, den die Transportschicht zur Verfügung stellt. Die Sitzungsschicht stellt Verbindungen (Sitzungen) zwischen Applikationen bereit und übernimmt den Verbindungsauf- und -abbau. Die Darstellungsschicht konvertiert Daten, falls Empfänger und Absender aus verschiedenen Hardwaresystemen bestehen, die unterschiedliche Datendarstellungen verwenden. Die Applikationsverbindung zuoberst nutzt die Dienste der unteren Schichten. Sie ist als einzige für den Benutzer "sichtbar", d.h. sie wird von den Anwendungsprogrammen gebildet.

Kryptografie

Unter Kryptografie versteht man die Wissenschaft von den Methoden der Verschlüsselung und Entschlüsselung von Daten. Im Gegensatz dazu steht die Kryptoanalyse, die zum unbefugten Entschlüsseln von Daten oder Knacken von Verschlüsselungsverfahren dient. Beide Disziplinen werden von der Kryptologie eingeschlossen, die als die "Wissenschaft des Geheimnisses" bezeichnet wird. Einsatzgebiete der Kryptografie sind:
  • Sichere Kommunikation: Schutz vor Lesen und (unerkannter) Veränderung
  • Digitale Unterschrift
  • Authentifikation
  • Zeitstempel
Die Verschlüsselungsverfahren arbeiten in der Regel nach folgendem vereinfacht dargestelltem Schema: Die Nachricht wird vom Absender verschlüsselt, über das Netz geschickt und vom Empfänger entschlüsselt. Kritisch ist dabei die Zeit der Übertragung über das Netz, da hier die Daten gelesen und gegebenenfalls sogar verändert werden können. Das Kernstück der Kryptografie bilden Schlüssel. Verschlüsselte Daten können nur mit dem passenden Schlüssel gelesen werden. Ein Schlüssel ist eine (möglichst) zufällige Zahlen-und/oder Buchstabenfolge. Die Länge eines Schlüssels wird in Bit gemessen: Je länger, desto unwahrscheinlicher, schwerer zu erraten und damit sicherer ist ein Schlüssel.

Detaillierte Informationen dazu finden Sie in T. Konerts Artikel "PGP - Pretty Good Privacy" in connect 2/1997.

Anwendungen im World Wide Web

Im World Wide Web werden derzeit drei verschiedene Verfahren zur Authentifizierung und sicheren Datenübertragung eingesetzt. Dies sind:
  • Basic Authentication ist als einziges Verfahren standardisiert und von jedem HTTP-konformen Client implementiert. Es garantiert jedoch nur Authentizität und verfügt nicht über kryptografische Verschlüsselung.
  • Secure Hypertext Transfer Protocol (S-HTTP) realisiert kryptografische Verfahren auf der Anwendungsebene. Die Beispielimplementierung von Mosaic ist derzeit nur in den USA verfügbar.
  • Secure Socket Layer (SSL) realisiert kryptografische Verfahren auf der Transportebene. SSL garantiert Authentizität per Server- und optional eine Client-Authentifizierung. Die Integrität der übertragenen Daten sowie die Vertraulichkeit wird mittels Datenverschlüsselung gewährleistet. Implementierungen von SSL sind sowohl kommerziell als auch frei erhältlich.

Basic Authentication

Die Basic Authentication schützt Dokumente oder Verzeichnisse vor unerlaubtem Zugriff. Der Client muß sich gegenüber dem Server über eine User-ID und ein zugehöriges Paßwort authentifizieren. Darüber wird im Vorfeld eine Vereinbarung getroffen. Die untenstehende Abbildung zeigt wie der Netscape Navigator 4.04 den Nutzer zur Authentifizierung auffordert. Zuzüglich zu User-ID und Paßwort kann man den Zugriff aufgrund der Rechneradresse des Benutzers einschränken. Etwas weiterentwickelt ist die Digest Access Authentication, die im Gegensatz zur Basic Authentication das Paßwort und die User-ID nicht im Klartext über das Netz schickt.

basic
Basic Authentication: Aufforderung der Eingabe einer User-ID und Passwort.

Im allgemeinen verhindert diese Art der Authentifizierung nur zufällige unberechtigte Zugriffe auf geschützte Bereiche. Bei beiden Methoden kann jeder Unbefugte, der den Übertragungskanal abhört, das jeweilig übermittelte Dokument mitlesen. Für einen ernsthaften Angriff stellt dieser Schutz keine allzu große Hürde dar. Wer Daten mittels "Basic" schützt muß daher abwägen, wie groß der Schaden maximal werden kann, wenn ein Unberechtigter geschützte Daten abruft. Beispiel dafür ist der eingeschränkte Zugriff auf die monatlichen Informationen des akademischen Mittelbaus im WWW.

Um von kryptografischen Verfahren profitieren zu können, benötigen Client und Server eingebaute Sicherheits-Funktionalitäten.

Secure HTTP

Das S-HTTP-Protokoll wurde in der Version 1.0 von CommerceNet entwickelt und ab Version 1.1 von EIT Corp., CA (USA) weiterentwickelt. S-HTTP ist eine Erweiterung des bestehenden HTTP-Protokolls und baut auf drei Arten von Sicherheit auf: Unterschrift, Authentifikation und Verschlüsselung. Dabei unterstützt es u.a. Kerberos und PEM (Privacy Enhanced Mail).

S-HTTP kapselt gewöhnliche HTTP-Nachrichten. Die eingeschlossenen Requests und Responses sind entweder chiffriert oder signiert, chiffriert und signiert oder keines von beiden. Es unterstützt eine ganze Reihe Verfahren für das initiale Handshake, für Chiffrierung, digitale Unterschriften und mehr. Damit lassen sich nicht nur Dokumente vertraulich austauschen sondern auch leicht signieren, was für den Benutzer ein großer Vorteil ist. Eine Beispielimplementierung stellen Secure Mosaic und Secure NSCA httpd dar, die aus Patentrechten allerdings nur in den USA verfügbar sind. Secure Mosaic macht die verschiedenen Sicherheitsstufen für den Benutzer mit Icons sichtbar.

Secure Socket Layer

Das SSL Protokoll wurde von Netscape Communcations Corp., CA (USA) entwickelt. SSL legt, wie der Name schon andeutet, eine zusätzliche Schicht über die Socket-Ebene (siehe Abb.). Diese sieht nach oben, d.h. zur Anwendungsschicht hin, wie die übliche Socketebene aus. Gegenüber den eigentlichen Sockets erscheint sie als Anwendung. Dieses Sicherheitsprotokoll ermöglicht Datenverschlüsselung, Echtheitsbestätigung von Servern und die Sicherstellung der Nachrichtenintegrität für TCP/IP-Verbindungen.

Secure Socket Layer bietet dem Client immer eine Authentifizierung des Servers. Daher benötigt der Betreiber des Servers immer ein Zertifikat einer Zertifizierungsstelle. Die Authentifizierung der Client-Seite erfolgt optional und ist nur dann erfolgreich, falls der Client über ein offiziell registriertes Zertifikat verfügt. Ist die SSL-Verbindung zwischen Client und Server hergestellt, werden alle Daten verschlüsselt und damit für Außenstehende unlesbar übertragen. Sämtliche Informationen, sowohl die der HTTP-Anfrage als auch die der HTTP-Antwort, werden vollständig verschlüsselt. Dazu gehört auch die URL, die der Client anfordert, die in Formularen übermittelte Informationen, die Informationen zur Echtheitsbestätigung des HTTP-Zugriffs sowie alle Daten, die der Server an den Client überträgt. SSL nutzt das Public-Key-Verfahren, bei dem mit einem öffentlich zugänglichen Schlüssel codierte Daten nur mit einem ganz bestimmten privaten Schlüssel wieder dechiffriert werden können. Eine Integritätsprüfung in SSL erkennt gegebenenfalls eine Verfälschung der gesendeten Daten.

Das Protokoll des Verbindungsaufbaus mit SSL verdeutlicht die Zusammenhänge zwischen Schlüsseln, Verschlüsselungsverfahren, Zertifikaten und der Funktionsweise von SSL. Dieser Aufbau gliedert sich in vier Schritte:

  • In der Hello-Phase baut der Client eine Verbindung zum Server auf und teilt ihm mit, welche Kryptografie-Algorithmen er unterstützt.
  • Der Server wählt ein Public-Key-, ein Private-Key- und ein Hash-Verfahren aus, und teilt sie dem Client mit. Gleichzeitig sendet der Server ein Zertifikat, das unter anderem den öffentlichen Schlüssel des Servers enthält. Mit Hilfe dieses Zertifikats kann der Client überprüfen, ob die Antwort tatsächlich vom gewünschten Server stammt.
  • Der Client generiert einen Sitzungsschlüssel für einen Datenaustausch per Private-Key-Verfahren. Aus Geschwindigkeitsgründen werden standardmäßig symmetrische Verfahren verwendet. Der dazu notwendige Schlüsselaustausch wird durch Verschlüsselung mit den in den Zertifikaten enthaltenen öffentlichen Schlüsseln geschützt. Diesen chiffrierten Schlüssel schickt der Client an den Server.
  • In der abschließenden Authentifizierungs-Phase authentifiziert der Client den Server, indem er ihm eine Reihe von mit dem Sitzungsschlüssel chiffrierten zufälligen Testnachrichten schickt, die der Server nur dann korrekt dechiffrieren und bestätigen kann, wenn es sich um den "echten" Server handelt. In einem optionalen Schritt kann der Server auf vergleichbare Weise den Client authentifizieren. Die Client-Authentifikation funktioniert nur dann, wenn der Client über ein offiziell registriertes Zertifikat verfügt.

    Damit ist der initiale Verbindungsaufbau abgeschlossen Anschließend können die eigentlichen Daten geschützt übertragen werden.

    Die zu übertragenden Daten werden in kleine Blöcke geteilt, die zusätzlich noch komprimiert werden können. Damit steigert sich die Geschwindigkeit der Übertragung und auch die Sicherheit wird erhöht. Die Blocknummer wird hinzugefügt und mittels einer Hash-Funktion eine Prüfsumme angehängt. Abschließend wird mit dem symmetrischen Verfahren verschlüsselt. Sollten beim Empfang Ungereimtheiten auftreten, z.B. durch falsche Prüfsummen, so wird dies auf eine versuchte Manipulation zurückgeführt, da dem Übertragungsprotokoll TCP/IP vertraut wird. Daraufhin wird eine verschlüsselte Fehlernachricht versandt und die Verbindung abgebrochen.

    Netscape hat SSL in den Navigator eingebaut und vertreibt mit dem Netscape Secure Server das entsprechende Gegenstück. Allerdings ist die Übertragung "von Haus aus" nur in den USA richtig sicher. Die restriktive US-Exportpolitik verhindert eine gute Verschlüsselung außerhalb der USA. Netscape darf, um eine Exportlizenz zu erhalten, den Sitzungsschlüssel nicht in voller Länge chiffriert übertragen. Lediglich eine Chiffrierung von 40 Bit des Schlüssels ist erlaubt. Inzwischen ist es mehrfach gelungen, einen Sitzungsschlüssel zwischen einem Netscape-Client und einem Netscape Secure Server zu knacken. Damit wurde gezeigt, daß für kryptografische Anwendungen die Schlüssellänge von 40 Bit zum sicheren Datentransfer nicht ausreichend ist. Aber auch außerhalb der USA gibt es nun die Möglichkeit, einen 128 Bit Sitzungsschlüssel zu generieren. Das Programm Fortify für Netscape übernimmt diese Aufgabe. Es ist frei verfügbar und unterstützt Netscape Navigator und Netscape Communicator in mehreren Versionen. Der Browser muß nur mit der richtigen Software gepatcht werden und schon funktioniert die 128 Bit-Verschlüsselung auch außerhalb der USA.

    SSL-fähige Web-Server

    Bei der Suche nach einem praxiserprobten SSL-fähigen Web-Server stößt man unweigerlich auf Apache. Der Apache Web-Server besaß im Juni 1998 einen Marktanteil über 50%. Der erweiterte Server - Apache-SSL - basiert auf einer Implementierung des Apache-Servers und SSLeay. SSLeay ist eine freie Implementierung von Netscapes Secure Socket Layer - dem Verschlüsselungsprotokoll von Netscape Secure Server und Netscape Navigator. Mehrere Web-Server werden, sowohl kommerziell als auch frei, von SSLeay unterstützt. Dies sind u.a. Stronghold, Roxen, TinyWeb, Cryptozilla und iNETstore. Zur Generierung des Sitzungsschlüssels (siehe Schritt 2 und 3 im Verhandlungsprotokoll) bietet SSLeay eine Auswahl an Verschlüsselungsalgorithmen. Dies sind: DES, RSA, RC4, IDEA und Blowfish.

    Für eine Testinstallation an der Universität Augsburg im Rahmen meiner Dissertation wurde Apache 1.2.6, SSLeay 0.8.0 und der zugehörige SSLPatch gewählt. Der Web-Server läuft auf einer IBM RS/6000 mit dem Betriebssystem AIX 4.1 und ist unter der URL https://aixcip02.math.uni-augsburg.de:8888/ zu erreichen. Wichtig ist die richtige Bezeichnung des Protokolls, nämlich https und die Angabe des Ports. Das HTTP-Protokoll liefert sonst bei Aufruf der URL den Fehler "The requested URL could not be retrieved".

    Wie bereits erwähnt, bietet Secure Socket Layer dem Client immer eine Authentifizierung des Servers. Im Umfang von SSLeay ist ein Programm enthalten, mit dem sich ein Testzertifikat erstellen läßt. Dieses Zertifikat ist für die erfolgreiche Installation des Servers notwendig. Die Abbildung zeigt das Zertifikat des Inhabers "ReGTime" beim erstmaligen Kontakt, beglaubigt von sich selbst. Das Zertifikat enthält Informationen über den Eigentümer, die zertifizierende Instanz, die Gültigkeitsdauer sowie den Fingerprint der Instanz. Diesen Fingerprint kann der Client überprüfen und demnach das Zertifikat akzeptieren und die geschützte Seite laden oder aber ablehnen, dann wird keine Verbindung zu dem sicheren Web-Server hergestellt.

    viewcert
    Der erste Kontakt mit einem sicheren Web-Server zeigt das Zertifikat und bietet weitere Infos.

    Die Installation erwies sich im Ganzen als problemlos. Bei der Konfiguration des Servers ist lediglich zu beachten, ob eine Client-Authentifizierung gewünscht ist oder nicht. Zur Auswahl stehen folgende Abstufungen:

    • Stufe 0: Es ist kein Zertifikat erforderlich
    • Stufe 1: Der Client kann ein gültiges Zertifikat vorweisen
    • Stufe 2: Der Client muß ein gültiges Zertifikat vorweisen
    • Stufe 3: Der Client kann ein gültiges Zertifikat vorweisen, welches nicht von einer Zertifizierungsinstanz beglaubigt sein muß
    Für die Installation bedeutet das Weglassen der Client-Authentifizierung das Auskommentieren einer Zeile im Konfigurationsfile des Web-Servers. SSLeay beinhaltet auch ein Programm, das es erlaubt, eine eigene Zertifizierungsinstanz aufzubauen. Darauf soll hier aber nicht eingegangen werden.

    SSL-fähige Web-Browser

    Netscape- oder Microsoft-Browser unterstützen das Verschlüsselungsverfahren SSL. Je nach Browser zeigen die Symbole (Schlüssel oder Vorhängeschloß) eine ungesicherte Verbindung bzw. eine gesicherte Verbindung an.

    Die Verschlüsselungsverfahren, mit denen Sitzungsschlüssel generiert werden, unterliegen keinerlei Beschränkungen bezüglich der Länge des zu generierenden Schlüssels. Daß z.B. die Web-Browser von Netscape nur 40 Bit Sitzungsschlüssel erzeugen liegt an der Exportpolitik des Landes. Trotzdem kann der Anwender hier einen Beitrag für mehr Sicherheit leisten. Netscape Navigator und Communicator können mit dem Programm Fortify (für Netscape, URL: http://www.fortify.net/) und dessen Installation den Browser so aufpeppen, daß er in der Lage ist, einen 128 Bit-Sitzungsschlüssel zu erzeugen. Dies geht allerdings nur dann, wenn der sichere Web-Server, wie z.B. Apache-SSL, ebenfalls diese Verschlüsselungslänge unterstützt.

    Die Installation ist sehr einfach und dauert gerade mal fünf Minuten. Fortify verändert den Quellcode des Browsers und kann bei Bedarf wieder entfernt werden. Nach erfolgreicher Installation und dem Zugriff auf geschützte Seiten zeigt das Zertifikat, daß die neue Schlüssellänge benutzt wird.

    Wenn Sie die Fähigkeiten Ihres Browsers testen wollen, rufen Sie die URL http://www.fortify.net/sslcheck.html auf. Die Web-Seite zeigt Ihnen, welche Verschlüsselungslänge Ihr Browser maximal erreichen kann.

    Fazit

    Sowohl der Anbieter von Informationen im Web als auch der Leser sollten abwägen, wieviel Sicherheit für ihre konkrete Anwendung nötig ist. Für vorlesungsbegleitendes Material genügt in der Regel der Schutz, den Basic Authentication bietet. Werden sensitive Daten über das Internet geschickt, z.B. Kreditkartennummern oder Geheimcodes, so sollte dies über eine SSL-Verbindung in Kombination mit einer Zugangsberechtigung gesichert werden. Dabei sollte sich auch der Anwender um Sicherheit bemühen und seinen Browser auf die höchste Verschlüsselungslänge einstellen.