Universität Karlsruhe Fakultät für Informatik Universität Karlsruhe

Proseminar Rechnerkommunikation und Telefon

Netzwerksicherheit

Christoph Wölfle

Inhaltsverzeichnis

        1 Einführung
        2 Kryptographie
                2.1 Secret-Key-Algorithmen
                        2.1.1 DES (Data Encryption Standard)
                2.2 Public-Key-Algorithmen
                        2.2.1 RSA (Rivest, Shamir, Adleman)
        3 Authentifizierung (Identitätsprüfung)
                3.1 Grundlagen der Authentifizierung
                        3.1.1 Authentifizierung mit Hilfe eines geheimen Schlüssels
                3.2 Verschiedene Authentifizierungsprotokolle
                        3.2.1 Authentifizierung mit Hilfe von Public-Key Kryptographie
        4 Digitale Signaturen
                4.1 Public-Key Signaturen
                4.2 Message Digests (Nachrichtenauszüge)
        5 Zusammenfassung
        Literatur

1 Einführung

Netzwerksicherheit ist ein weites Gebiet. Viele denken hier in erster Linie an Themen wie Verschlüsselung, doch es beinhaltet weitaus mehr. Es kann grob in 4 Gebiete unterteilt werden: Die Kryptographie, der wir uns als nächstes zuwenden, wird am ausführlichsten behandelt, da diese in fast allen Gebieten der Netzwerksicherheit benötigt wird.

2 Kryptographie

Die Kryptographie (Verschlüsselungstheorie) hat eine lange Geschichte. Schon seit Menschengedenken wird versucht, Geheimsprachen zu entwerfen und Nachrichten zu verschlüsseln. Den größten Beitrag haben hierbei die Militärs geleistet.

Heute verwendet man folgendes grundlegendes Verschlüsselungsmodell:


Bild 1: Verschlüsselungsmodell

Die zu verschlüsselnde Nachricht wird als Klartext K bezeichnet. Sie wird verschlüsselt durch eine Verschlüsselungsfunktion Va, die durch einen Schlüssel a parametrisiert ist. Der Schlüssel b bestimmt eine Entschlüsselungsfunktion Eb. Ist C die verschlüsselte Nachricht, sprich der Schlüsseltext, so gilt C = Va(K), K = Eb(C) daraus folgt nun K = Eb(Va(K)). Die letzte Gleichung besagt, dass durch eine Verschlüsselung, gefolgt von einer Entschlüsselung, die Nachricht erhalten bleibt.

Eine der wichtigsten Grundlagen der Kryptographie ist die Annahme, dass der Eindringling den kompletten Schlüsseltextes, wie auch die Ver- und Entschlüsselungsfunktion kennen kann.

Hier kommen nun die Schlüssel ins Spiel. Der Schlüssel besteht aus einer relativ kurzen Zeichenkette, die eine von vielen potentiellen Verschlüsselungen auswählt. Dadurch kann der Eindringling den Schlüsseltext C, wenn überhaupt, nur sehr schwer entschlüsseln. Um so länger dabei der Schlüssel ist, um so mehr Möglichkeiten bestehen zur Ver- wie Entschlüsselung. Bei einer Schlüssellänge von 2 Ziffern ergeben sich bereits 100 mögliche Entschlüsselungen bei 3 Ziffern schon 1000 Kombinationen!

Geheimhaltung kommt durch einen starken (öffentlichen) Algorithmus und einen langen Schlüssel zustande. Um seinen Bruder zu hindern, die eigenen E-mails zu lesen, reicht ein 64-bit Schlüssel. Um eine Regierung zu hindern, wird ein 256-bit Schlüssel benötigt. Moderne Kryptographie nutzt dieselben Ideen wie die traditionelle Kryptographie: Substitution (Ersetzung) und Transposition (Vertauschung) - allerdings mit anderen Schwerpunkten. Früher dienten einfache Algorithmen und sehr lange Schlüssel der Sicherheit (->One-Time Pads). Heute wird versucht, die Algorithmen immer komplexer zu gestalten.

Ein guter Verschlüsselungsalgorithmus muss heute folgende Bedingungen erfüllen:

  1. Für jeden Schlüssel s und für jeden Klartext K ist Vs(K) = C und Es(C) = K auf einfache Weise zu berechnen.
  2. Für jeden Klartext K hat der Schlüsseltext C keine wesentlich grössere Länge
    (Ziel: kurze Übertragungszeit)
  3. Aus einem Schlüsseltext C kann ohne Kenntnis des Entschlüsselungschlüssels nicht, oder nur sehr schwer, der dazugehörige Klartext K gewonnen werden.
Die nun im folgenden behandelten Algorithmen werden diesen Anforderungen gerecht. Es wird dabei hauptsächlich zwischen 2 Arten unterschieden: den Secret-Key-Algorithmen und den Public-Key-Algorithmen

2.1 Secret-Key-Algorithmen

Bei Secret-Key-Algorithmen gibt es, wie der Name schon sagt, einen geheimen Schlüssel s, der sowohl für die Verschlüsselung, wie auch für die Entschlüsselung verwendet wird (Schlüssel a = Schlüssel b vgl. Bild 1). Daraus folgt, dass K = Es(Vs(K)) ist. Dieser geheime Schlüssel führt immer wieder zu dem Problem des Schlüsselaustausches. Einer der weitverbreitetesten und benutzten Secret-Key-Algorithmen ist DES, den wir uns nun etwas genauer anschauen wollen.

2.1.1 DES (Data Encryption Standard)

Dieser Algorithmus wurde in den 70er Jahren von IBM entwickelt. Allerdings wurde damals ein 128-bit Schlüssel verwendet, anstelle eines 56-bit Schlüssels heute. Nun stellt sich die Frage, aus welchem Grund IBM den Schlüssel reduzierte. Als die US-Regierung den Algorithmus standardisieren wollte, lud diese IBM ein über die Sache zu "diskutieren". Nach dieser Diskussion reduzierte IBM den Schlüssel von 128 bit auf 56 bit und entschied den genauen Entwicklungsprozess von DES geheim zuhalten. 1977 wurde DES von der US-Regierung zum Standard erhoben.

DES ist in seiner ursprünglichen Form nicht mehr sicher. Modifizierte Varianten wie Triple DES werden jedoch noch als sicher angesehen.

Ein Überblick über die Grundfunktion von DES ist in Bild 2 skizziert. Der Klartext wird in 64-bit Blöcken verschlüsselt, welche 64-bit Schlüsseltexte ergeben. Der Algorithmus, welcher von einem 56-bit Schlüssel parametrisiert wird, hat 19 verschiedene Stufen, wobei Stufe19 das Inverse zu Stufe 1 bildet. In der vorletzten Stufe werden die linken 32 bit mit den rechten 32 bit vertauscht. Die restlichen 16 Stufen sind funktional identisch aber durch verschiedene Funktionen des Schlüssels parametrisiert. Die Operation einer dazwischenliegenden Schicht ist in Bild 2 dargestellt. Der rechte 32-bit Ausgang Ri ergibt sich aus dem bitweisen Exklusiv-Oder des linken Eingang Li-1 und einer Funktion f(Ri-1,Si) dieser Stufe. In jedem dieser 16 Iterationen (Wiederholungen) wird dabei ein anderer Schlüssel verwendet (durch Teilung des 56-bit Schlüssel und Rotation)


Bild 2: DES / Detailbetrachtung einer Iteration

Andere wichtige Secret-Key-Algorithmen sind z.B. IDEA, BLOWFISH, FEAL oder seit kurzem AES.

Die NIST (National Institute of Standards and Technology) rief 1997 eine Art Entwicklungswettbewerb ins Leben, zur Entwicklung eines Advanced Encryption Standard (AES), welcher als Ablösung für DES gedacht war. Im Oktober 2000 entschied sich die NIST schliesslich für den Algorithmus Rijndael, der von den Belgiern Rijmen und Daemen entwickelt wurde und, im Unterschied zu DES, bis zu 256-bit lange Schlüssel unterstützt.

2.2 Public-Key-Algorithmen

Wie bereits erwähnt, ziehen die Secret-Key-Algorithmen ein grosses Problem nach sich: Die Schlüsselverteilung. Was ist z.B., wenn bei der ersten Geheimschlüssel Vereinbarung dieser Schlüssel von einem Eindringling gestohlen wird?

1976 veröffentlichten zwei Entwickler an der Stanford University, Diffie und Hellman, ein radikal neues Kryptosystem. Das besondere dabei ist, dass die Verschlüsselungs- und Entschlüsselungsschlüssel völlig unterschiedlich und nur schwer voneinander ableitbar sind. Der Algorithmus funktioniert wie folgt. Eine Person, nennen wir sie Alice, will sichere Nachrichten empfangen. Man benötigt hierzu eine Verschlüsselungsmethode Va und eine Entschlüsselungsmethode Eb die folgende Gleichung erfüllt Eb(Va(K)) = K. Ausserdem darf b von a nur besonders schwer ableitbar sein. Die Verschlüsselungsfunktion V inklusive Schlüssel a wird nun veröffentlicht, deshalb der Name Public-Key-Algorithmen. Ebenfalls bekannt ist die Entschlüsselungsfunktion E, allerdings behält Alice ihren privaten Schlüssel b geheim. Somit ist Va öffentlich aber Eb geheim. Nun will Alice (öffentlicher Schlüssel a und geheimer Schlüssel b) mit Tom (öffentlicher Schlüssel t und geheimer Schlüssel u), mit dem sie niemals zuvor Kontakt hatte, auf einem sicheren Wege kommunizieren. Alice sendet nun ihre erste Nachricht K indem sie Vt(K) errechnet und diese Nachricht an Tom schickt, der diese wiederum mit Hilfe seiner geheimen Entschlüsselungsfunktion Eu entschlüsselt. Niemand anderes als Tom kann diese Nachricht lesen.

Das einzige Problem ist, Algorithmen zu finden, die diesen Ansprüchen genügen. Eine gute Methode ist der RSA Algorithmus, benannt nach seinen 3 Erfindern.

2.2.1 RSA (Rivest, Shamir, Adleman)

Der RSA Algorithmus basiert auf dem Problem der Primfaktorzerlegung. Wir wollen uns Details ersparen und beschränken uns auf die Anwendung des RSA Algorithmus:
  1. Wähle 2 grosse Primzahlen p und q (normalerweise grösser als 10100)
  2. Errechne n = p * q und z = (p-1) * (q-1)
  3. Wähle Nummer e so das ggT(e,z) = 1
  4. Finde ein v für das gilt v * e = 1 mod z (vgl. Bild 1: a=(v,n), b=(e,n))
Mit diesen Parametern, die wir im voraus errechnet haben, sind wir bereit zur Verschlüsselung. Teile den Klartext in Blöcke von k bits, für die gilt: 0≤2k<n. Um eine Nachricht nun zu verschlüsseln rechne C = Kv mod (n). Um die Nachricht zu entschlüsseln rechne K = Ce mod (n). Es kann nachgeprüft werden, dass für jedes K die Verschlüsselung und Entschlüsselung Inverse sind. (siehe Bild 3)

Die Sicherheit bei RSA entsteht durch das Problem der Primfaktorzerlegung. Wenn der Eindringling aus n, die Primfaktoren p und q berechnen könnte, würde es kein Problem mehr sein e zu finden. Aber selbst mit den neuesten Computern ist die Primzahlzerlegung, für sehr große n, in absehbarer Zeit nicht zu berechnen.


Bild 3: Beispiel eines RSA-Algorithmus

Anzumerken sei noch, dass die meisten RSA-basierenden Systeme einen Public-Key verwenden, um einen geheimen Sitzungsschlüssel zu vereinbaren. Anschliessend setzen sie mit DES oder IDEA fort, da RSA und die anderen Public-Key-Algorithmen zu langsam sind.

3 Authentifizierung (Identitätsprüfung)

Mit Authentifizierung wird die Technik des Überprüfungsprozesses bezeichnet, die die Identität des Kommunikationspartners feststellt. Hierfür werden komplexe Protokolle benötigt, die auf Kryptographie basieren. Es wird darauf hingewiesen, dass Authentifizierung nicht mit Autorisierung verwechselt werden darf! Authentifizierung handelt von der Identitätsprüfung mit deren Hilfe wiederum die Autorisierungsrechte erfragt werden können.

3.1 Grundlagen der Authentifizierung

Das allgemeine Modell, das alle Authentifizierungsprotokolle verwenden, ist folgendes. Ein einleitender Benutzer (in Wirklichkeit meist ein Prozess), sagen wir wieder Alice, will eine sichere Verbindung mit einem zweiten Benutzer (Tom) eingehen. Alice startet den Prozess, indem sie eine Nachricht an Tom schickt. Es folgt ein Nachrichtenaustausch, meistens mit dem Ziel nach der Identitätsprüfung einen geheimen Sitzungsschlüssel zu vereinbaren. Hier muss wieder davon ausgegangen werden, dass ein Eindringling dabei die Nachrichten in vollem Umfang abfangen kann.

In der Realität wird meist ein Public-Key-Algorithmus zur Authentifizierung als auch zum Austausch des Sitzungsschlüssels verwendet. Dieser bildet dann die Grundlage für eine Secret-Key Kommunikation (z.B. bei SSH), da Public-Key Kryptographie um die 100 bis 1000mal langsamer ist als Secret-Key Kryptographie.

3.1.1 Authentifizierung mit Hilfe eines geheimen Schlüssels

Für unser erstes Authentifizierungsprotokoll wollen wir annehmen das Alice (A) und Tom (T) bereits einen geheimen Schlüssel (s) vereinbart haben. Dieses Protokoll basiert auf einer grundsätzlichen Überlegung, die in vielen Authentifizierungsprotokollen zu finden ist:

Eine Partei sendet eine Zufallszahl (Z) zu der anderen, welche diese in einer speziellen Form transformiert und das Ergebnis zurückschickt. Solche Protokolle werden auch challenge-response Protokolle genannt. Dieses Protokoll wollen wir uns auf Grundlage des Bildes 4 etwas genauer anschauen.


Bild 4: challenge-response Protokoll

3.2 Verschiedene Authentifizierungsprotokolle

Es gibt viele verschiedene Arten von Authentifizierungsprotokollen. Eine Möglichkeit ist die Einführung eines KDC (Key Distribution Center), mit dem jeder Benutzer im Netzwerk einen Schlüssel teilt. Jeder Benutzer geht dann über das KDC, als Vermittlungsstelle, eine Kommunikation mit einem anderen Benutzer (Prozess) ein. Vorteil: Nur ein Schlüssel anstelle von vielen. Nachteil: Man muss dem KDC vertrauen. In vielen Systemen wird auch das sogenannte Kerberosprotokoll verwendet. Dieses beinhaltet 2 Server. Einen Authentifizierungsserver (AS), der den Benutzer nach seinem Login überprüft (ähnlich dem KDC) und einen Ticketgewährungs-Server (TGS), der Identitätstickets ausstellt. Da die Kerberos Erfinder nicht annahmen, das die ganze Welt einem Authentizitätsserver vertraut, wird sie in einzelne Gebiete unterteilt die alle ihre eigenen Server besitzen, die dann mit den jeweiligen anderen Servern kommunizieren. Bisher haben wir angenommen, dass Alice und Tom einen geheimen Schlüssel vereinbart haben. Was aber, wenn nicht?

Hier eignet sich nun ein häufig verwendeter Authentifizierungsalgorithmus: die Authentifizierung durch Public-Key Kryptographie.

3.2.1 Authentifizierung mit Hilfe von Public-Key Kryptographie

Der Aufbau eines solchen Authentifizierungsalgorithmus kann auf verschiedene Art und Weise erfolgen. Eine typische Art wird in Bild 5 dargestellt. Alice startet dabei den Prozess, indem sie mit Toms öffentlichen Schlüssel ihre Identität A und eine Zufallszahl ZA verschlüsselt. Tom antwortet darauf indem er mit Hilfe von Alices öffentlichem Schlüssel die von Alice gewählte Zufallszahl ZA , eine selbstgewählte Zufallszahl ZT und einen vorgeschlagenen Sitzungsschlüssel s verschlüsselt und Alice schickt. Wenn Alice nun Nachricht 2 erhält, weiss sie, dass diese von Tom ist, da ZA in dieser Nachricht enthalten ist und niemand anderes ihr diese Zufallszahl hätte zurückschicken können. Alice schickt nun Nachricht 3 indem sie mit Hilfe des vereinbarten Sizungsschlüssels s die Zufallszahl ZT verschlüsselt. Nun kann sich auch Tom sicher sein, dass er mit Alice kommuniziert und mit niemandem sonst.


Bild 5: Gegenseitige Authentifizierung mit Hilfe von Public-Key Kryptographie

4 Digitale Signaturen

Die Echtheit vieler rechtsgültiger Dokumente ist bestimmt durch eine bevollmächtigte handgeschriebene Unterschrift. Fotokopien o.ä. sind nicht erlaubt. Für computerversendete Nachrichten wie z.B. E-mail muss also eine Lösung für dieses Problem gefunden werden. Das Problem, handgeschriebene Unterschriften ersetzten zu müssen, ist kein triviales. Grundsätzlich wird ein System benötigt, in welchem eine Seite der anderen Seite eine signierte Nachricht zusenden kann, so dass...
  1. der Empfänger die geforderte Identität des Senders überprüfen kann
  2. der Sender später nicht den Inhalt der Nachricht verleugnen kann
  3. der Empfänger die Nachricht nicht selbstgeschrieben haben könnte
Kommen wir nun zu den verschieden Realisierungen von digitalen Signaturen:

Eine Methode, die jedoch heute so gut wie keine Rolle mehr spielt, ist die Secret-Key Signatur. In dieser Signatur ist eine zentrale Behörde vonnöten, die alles weiss und der jeder vertraut, die sich aus der Verwendung von geheimen Schlüsseln ergibt. Zudem bekommt diese Behörde alle Nachrichten zu lesen. Deshalb wäre es wünschenswert, wenn signierte Dokumente diese Einrichtung nicht bräuchten.

Glücklicherweise kann Public-Key Kryptographie hierzu einen grossen Beitrag leisten. Betrachten wir diese Public-Key Signaturen nun etwas näher.

4.1 Public-Key Signaturen

Nehmen wir an, Public-Key Verschlüsselungs- und Entschlüsselungsalgorithmen hätten zusätzlich zur üblichen Eigenschaft E(V(K))=K die Eigenschaft V(E(K))=K. Was z.B. bei RSA der Fall ist.

Alice kann dann eine signierte Nachricht schicken indem sie Tom Vt(Ea(K)) sendet. Wenn Tom die Nachricht empfängt, entschlüsselt er zunächst mit seiner Entschlüsselungsfunktion Et die Nachricht, dadurch erhält er Ea(K). Um den Klartext zu bekommen wendet er auf diese Funktion noch die Verschlüsselungsmethode Va an, die ja bekanntlich öffentlich ist. Dadurch ist sich Tom gleichzeitig sicher das diese Nachricht nur von Alice stammen kann, da nur diese die Entschlüsselungsfunktion Ea besitzt! (siehe Bild 6)


Bild 6: Public-Key Signatur

Obwohl Public-Key Signaturen elegante Schemata sind, gibt es doch Probleme, welche sich aber eher auf die Umgebung, in welcher der Algorithmus läuft, als auf den Algorithmus selbst beziehen.

Was ist aber, wenn Alice ihren geheimen Schlüssel aufdeckt oder ihn wechselt? Dann hat Tom keine Beweise mehr, dass Alice ihm diese Nachricht geschickt hat und nicht ein Betrüger. Darum scheint es nötig eine Behörde zu haben, die diese Schlüsselwechsel und Änderungen notiert bzw. überwacht.

4.2 Message Digests (Nachrichtenauszüge)

Eine Kritik an Signaturfunktionen ist, dass sie an zwei verschiedene Funktionen erfüllen: Authentifizierung und Geheimhaltung. Oft wird Authentifizierung benötigt, Geheimhaltung jedoch nicht. Da Kryptographiealgorithmen immer noch recht langsam arbeiten, möchte man bei nicht benötigter Geheimhaltung gerne einen Algorithmus haben, der den Klartext nicht unnötigerweise verschlüsselt.

Der Message Digest löst dieses Problem. Dieses Schema basiert auf einer Einweg-Hashfunktion welche willkürlich ein langes Stück Klartext nimmt und aus diesem einen String mit fester Länge bestimmt. Diese Hashfunktion hat drei wichtige Eigenschaften:

  1. Mit gegebenem K ist MD(K) leicht zu berechnen.
  2. Mit gegebenem MD(K) ist es nahezu unmöglich K zu finden.
  3. Es ist nahezu unmöglich, 2 Nachrichten zu erstellen, die denselben Message Digest haben.
Um Kriterium 3 zu erreichen sollte die Hash mindestens 128 bit lang sein, besser mehr.

Aus einem Stück Klartext einen Message Digest zu errechnen ist wesentlich schneller als den Klartext mit einem Public-Key-Algorithmus zu verschlüsseln.

Betrachten wir zum Schluss solch einen Message Digest in einem Public-Key Kryptosytemen. Alice berechnet hierbei zuerst MD(K) und sendet diesen dann, verschlüsselt mit Ea, zusammen mit dem Klartext zu Tom (siehe Bild 7) Wird der Message Digest auf diese Art verwendet, kann sowohl die Verschlüsselungszeit verkürzt, als auch der Nachrichtentransport beschleunigt werden.


Bild 7: Message Digest in Public-Key Signatur

5 Zusammenfassung

Abschliessend bleibt noch anzumerken, dass sich diese Ausarbeitung nur mit einem Teilgebiet der Netzwerksicherheit, der Krytographie, befasst. Themen, wie die Anfangs erwähnte Integritätskontrolle über das System wurden hier vernachlässigt, da sie den Umfang dieser Ausarbeitung sprengen würden.

Wir haben gesehen, dass wir das Gebiet der Kryptographie grob in 2 Teile trennen können: In die Secret-Key Kryptographie, die einen geheimen Schlüssel, zur Ver- wie Entschlüsselung, verwendet und in die Public-Key Kryptographie. In der es jeweils einen öffentlichen Schlüssel zur Ver- und einen privaten (geheimen) Schlüssel zur Entschlüsselung gibt. Auf diesen beiden grundlegenden Verschlüsselungstechniken basieren, wie beschrieben, viele weitere Techniken der Netzwerksicherheit, die über die reine Verschlüsselung hinausgehen.

Literatur

  [Universität Karlsruhe] [Institut für Technische Informatik] [E-Mail an Autor]  
Letzte Änderung: 2001-02-27 10:06:36