Security im Überblick (Teil 2)

Kryptologische Verfahren

25.06.2003 von Prof. Dr. Axel Sikora
Die Rechner- und Netzsicherheit wird immer mehr zum zentralen IT-Faktor im Unternehmen. Im zweiten Teil unserer Security-Serie beschäftigen wir uns mit den wichtigsten kryptographischen Verfahren.

Das Wort Kryptographie ist aus den griechischen Wörtern krypto (versteckt, geheim) und graph (Schrift, Wort) entlehnt. Damit bedeutet Kryptographie im Ursprung so viel wie Geheimschrift. Sie behandelt zum einen die Verschlüsselung (encryption), also die Transformation einer verständlichen Informationsdarstellung (Klartext, plain text) in eine nicht verständliche Darstellung (Geheimtext, cipher text). Diese muss so erfolgen, dass die angewandte Transformation im Rahmen einer Entschlüsselung (decryption) von Befugten wieder eindeutig rückgängig gemacht werden kann.

Im erweiterten Sinne zählen zur Kryptographie auch Aufgaben der Integritätsprüfung und Authentifizierung. Oft basieren entsprechende Funktionen auf eingeschränkten kryptographischen Verfahren (Hash-Funktionen), bei denen die Verschlüsselung nicht unbedingt rückgängig gemacht werden muss. Es gilt lediglich sicherzustellen, dass zwei unterschiedliche Eingaben nur mit einer sehr geringen Wahrscheinlichkeit das gleiche Ergebnis liefern.

Grundlagen: Security

Teil 1

Einführung in die Kryptographie

Teil 2

Kryptologische Verfahren

Teil 3

Security auf dem Link Layer

Teil 4

Security auf dem Network Layer

Teil 5

Security auf dem Application Layer

Teil 6

Security mit VPNs

Symmetrische Verschlüsselungsverfahren

Exemplarisch für symmetrische Verschlüsselungsverfahren sehen wir uns drei Beispiele an: Die Verknüpfung mit Hilfe einer logischen Exklusiv-Oder-Funktion, den darauf aufbauenden RC-4-Algorithmus sowie den Data Encryption Standard (DES).

Der einfachste Einsatz symmetrischer Schlüssel basiert auf der logischen Exklusiv-Oder-Funktion. Die zweifache XOR-Verknüpfung eines Zeichens A mit einem Zeichen B hat wieder das ursprüngliche Zeichen A zum Ergebnis. Das zweifache Exklusiv-Oder mit einem identischen Zeichen entspricht also der inversen Verknüpfung:

Zur verschlüsselten Übertragung verknüpft der Sender ein Zeichen A mit einem Schlüssel B per XOR und übersendet dann das Resultat. Der Empfänger verknüpft das empfangene Zeichen erneut mit dem Schlüssel B und erhält dann das ursprüngliche Zeichen A.

RC-4

RC-4 wurde 1987 von dem bekannten Kryptographen Ron Rivest entwickelt. Das Kürzel RC steht für Rivest Cipher. Es handelt sich um ein einfaches und schnelles Stromverschlüsselungsverfahren, das auf der schon beschriebenen XOR-Verknüpfung basiert. Da sich der Algorithmus sehr gut zur Implementation in Software eignet, kam RC-4 schon bald in zahlreichen kommerziellen Produkten zum Einsatz, darunter Lotus Notes, Oracle Secure SQL und Netscape Navigator.

Die Stärke des Algorithmus besteht darin, dass mit einem sehr einfachen Verfahren aus dem eingegebenen Schlüssel S ein langer, pseudo-zufälliger interner Schlüssel P erzeugt wird. Diesen nutzt RC-4 dann zur Chiffrierung des Klartexts. Besteht der Schlüssel S aus n Bytes von S(0) bis S(n-1), dann initialisiert man:

i, j = 0
P[k] = k mit k=0,...,256

und berechnet 256 Mal:

j = j+P[i]+S[i] mod 256
vertausche P[i] und P[j]
i = i+1 mod n

Das zur Ver- respektive Entschlüsselung des Nachrichten-Bytes i notwendige Schlüssel-Byte K[i] berechnet sich nach der Vorschrift:

i = i+1 mod 256
j = j+P[i] mod 256
vertausche P[i] und P[j]
t = P[i]+P[j] mod 256
K[i] = P[t]

Über die Variablen i und j sowie die Permutation P speichert RC-4 also 258 verschiedene Zustandsinformationen. 256 der Bytes sind Permutationen von 0, ...,255 und somit gleich verteilt.

DES

Der Data Encryption Standard (DES) wurde Mitte der 70er Jahre von IBM entwickelt, 1977 vom US-amerikanischen National Bureau of Standards vorgestellt und 1979 vom National Institute of Standards and Technology (NIST) als Standard verabschiedet.

DES gehört zur Familie der Blockchiffren und teilt eine Nachricht in 64 Bit große Datenblöcke auf. Auf der Verschlüsselungsseite umfasst es drei Bearbeitungsschritte, die wieder den originalen Text liefern, wenn sie auf der Entschlüsselungsseite identisch durchgeführt werden.

DES zählt zu den heute immer noch am weitesten verbreiteten Verschlüsselungsalgorithmen. Zwar gilt der Ur-Algorithmus inzwischen nicht mehr als zeitgemäß. Die aktuelle Variante Triple-DES (3DES) jedoch führt die Verschlüsselung drei Mal hintereinander aus, was zu einer exponentiellen Steigerung der Sicherheit führt. 3DES findet vielfach Anwendung im Bereich der Finanzdienstleistungen.

Permutationen

DES besteht sowohl bei der Verschlüsselung als auch bei der Entschlüsselung aus den drei Bearbeitungsschritten initiale Permutation, Ver-/Entschlüsselung in mehreren Runden sowie finale Permutation.

Die Permutationen vor der ersten und nach der letzten Runde dienen keinerlei erkennbarem kryptologischen Zweck. Da DES ursprünglich zur Implementation in Hardware entwickelt wurde, vermutet man, dass die Umstellung der Bits zur Anpassung an die schmalen Register der 70er-Jahre-CPUs diente.

Bei der finalen Permutation handelt es sich schlicht um eine Inverse der initialen Permutation. Nach Durchführung der initialen und der finalen Permutation steht ein Bit also einfach wieder an der ursprünglichen Stelle.

Verschlüsselung

Die DES-Verschlüsselung basiert auf einem 64 Bit langen Schlüssel. Davon sind aber nur 56 Bit kryptographisch relevant, da es sich bei jedem achten Bit um ein Parity-Bit handelt. DES erzeugt aus diesen 64 Bit 16 verschiedene, je 48 Bit lange Schlüssel.

Dazu bildet es aus den 56 relevanten Bits mit Hilfe einer Permutation zwei 28 Bit lange Muster C[i-1] und D[i-1]. Anschließend rotiert DES diese beiden Teilschlüssel rundenabhängig um ein oder zwei Bit nach links. In den Phasen 1, 2, 9 und 16 wird um ein Bit geshiftet, in den anderen Runden um zwei Bit. Die so erzeugten Schlüssel C[i] und D[i] werden zu den neuen Schlüsseln C[i-1] und D[i-1]. Schließlich stellt eine weitere Permutation aus C[i] und D[i] zwei 24 Bit lange Folgen zusammen, die in Kombination zum Schlüssel K[n] werden.

Für die Verschlüsselung teilt DES den Klartext nun in jeweils 64 Bit lange Blöcke auf. Diese splittet es nochmals in zwei 32 Bit lange Bestandteile L[n] und R[n]. R[n] wird über eine so genannte Mangler-Funktion vermischt. Dazu kommt eine tabellenbasierte Umrechnung auf der Grundlage der Eingangsvariablen R[n] und des Schlüssels K[n] zum Einsatz.

IDEA

Der International Data Encryption Algorithm (IDEA) wurde Anfang der Neunziger Jahre von Xuejia Lai und James Massey an der ETH Zürich entwickelt und 1991 veröffentlicht. Er zählt ebenfalls zu den Blockchiffren, wendet allerdings einen 128 Bit großen Schlüssel auf die 64 Bit großen Datenpakete des Klartextes an.

IDEA beruht auf der Mischung dreier mathematischer Funktionen, die jeweils auf 16-Bit-Blöcke des Texts angewendet werden. Neben der schon bekannten XOR-Funktion kommt eine Addition modulo 2^16 zum Einsatz, die zwei Blöcke unter Verwerfen des Übertrags addiert. Bei der dritten Funktion handelt es sich um eine Multiplikation modulo 2^16+1, die zunächst zwei Blöcke multipliziert und das Resultat dann durch 2^16+1 dividiert. Der Rest wird als 16-Bit-Ergebnis übernommen.

IDEA verknüpft diese drei Operationen zu einem recht komplizierten Netzwerk, das in insgesamt acht Runden durchlaufen wird. Trotz der komplizierteren Verfahrensweise operiert IDEA (als Software-Implementation) schneller als DES und gilt gleichzeitig als sicherer gegen Kryptangriffe.

Asymmetrische Verschlüsselungsverfahren

Während symmetrische Verfahren mit einem identischen Key zur Ver- und Entschlüsselung arbeiten, setzen die auch als Public-Key-Verfahren bezeichneten asymmetrischen Methoden auf zwei unterschiedliche Schlüssel.

Der eine Schlüssel heißt privater Schlüssel (private key), der zugehörige Algorithmus Dechiffrier-Algorithmus. Den anderen Schlüssel nennt man öffentlichen Schlüssel (public key), den entsprechenden Algorithmus Chiffrier-Algorithmus. Dabei lässt sich aus dem public key nicht auf den private key schließen. Daher kann man den public Key ohne Gefahr öffentlich bekannt machen. Er ist von Dritten zur Verschlüsselung von Nachrichten nutzbar, die anschließend nur der Besitzer des zugehörigen private key wieder dechiffrieren kann.

Bekanntester Vertreter der Public-key-Verfahren ist der nach den Initialen seiner Entwickler Ron Rivest, Adi Shamir und Leonard Adleman benannte RSA-Algorithmus. Er basiert auf der Grundlage, dass die Multiplikation zweier Zahlen eine einfache Operation darstellt, während der umgekehrte Vorgang, also die Faktorzerlegung eines Produkts, einen enormen Rechenaufwand bedeutet. Dies gilt insbesondere dann, wenn das Produkt in seine Primfaktoren zerlegt werden muss.

RSA

Der RSA-Algorithmus basiert auf folgenden vier Schritten:

Bei der Verschlüsselung kommt der RSA-Algorithmus folgendermaßen zum Einsatz:

Wie man sieht, führt der Empfänger bei der Entschlüsselung die gleiche Operation durch wie der Sender bei der Verschlüsselung. In ähnlicher Weise lässt sich der RSA-Algorithmus zur Erzeugung und Überprüfung von Signaturen einsetzen:

Diffie-Hellman

Der nach seinen Erfindern benannte Diffie-Hellman-Algorithmus (DH) dient der Vereinbarung eines gemeinsamen symmetrischen Schlüssels über einen unsicheren Kanal. Wie RSA basiert auch DH auf einem öffentlichen und einem privaten Schlüssel:

Beide Zahlen K[1] und K[2] sind gleich, es gilt: K = K[1] = K[2] = g^a*b mod p. K wird nun als geheimer symmetrischer Schlüssel verwendet, der ohne Kenntnis von a und b nicht berechnet werden kann.

Man in the Middle

Der grundlegende Diffie-Hellman-Algorithmus gibt lediglich Sicherheit gegen passives Abhören. Ein Man-in-the-Middle-Angriff kann hingegen sowohl Alice als auch Bob suggerieren, dass nur sie miteinander sprächen. Ein solcher Angriff könnte folgendermaßen verlaufen:

Mallory kann nun alle Nachrichten von Alice an Bob aufnehmen, mit K[1m] entschlüsseln, mit K[2m] erneut verschlüsseln und dann an Bob weiterleiten. Gleiches tut er umgekehrt mit den Nachrichten von Bob an Alice. Sowohl Alice als auch Bob glauben, unmittelbar miteinander zu kommunizieren.

Das funktioniert aber nur, wenn Mallory die Möglichkeit hat, bei der Verteilung des öffentlichen Schlüssels eine Manipulation vorzunehmen. Wird der öffentliche Schlüssel authentifiziert oder über ein zuverlässiges Medium übertragen, dann ist der Diffie-Hellman-Algorithmus gegen solche Angriffe geschützt.

Einweg-Hash-Funktionen

Hash-Funktionen sind in der Informatik seit langem bekannt. Sie dienen beispielsweise bei Datenbank-Anwendungen zur einfachen Indizierung und somit dem schnellen Wiederauffinden von Informationen. Dazu fassen sie umfangreiche Informationen - wie etwa Kundennamen - durch Bilden irgendeiner Art von Quersumme zu einer komprimierten, leichter verwaltbaren Information zusammen. Letztere nennt man den Hash-Wert der Information. Die verwendete Hash-Funktion muss natürlich sicherstellen, dass für verschiedene Eingangsinformationen auch hinreichend unterschiedliche Hash-Werte entstehen.

Solche Hashes lassen sich auch gut zur Authentifizierung und Signatur einsetzen, falls der verwendete Algorithmus zwei zusätzliche Kriterien erfüllen kann. Zum einen darf es nicht möglich sein, mit vertretbarem Aufwand aus dem Hash-Wert die Originalinformation zu rekonstruieren. Zum Zweiten muss es aus Gründen der Fälschungssicherheit ausgeschlossen sein, mit vertretbarem Aufwand aus einer gegebenen Originalinformation eine zweite Information zu generieren, die denselben Hash-Wert ergäbe ("Kollision").

Einweg-Hash-Funktionen werden unter anderem auch als Kompressionsfunktion, Message Digest, kryptographische Prüfsumme oder Message Integrity Check (MIC) bezeichnet. Schon daraus lässt sich das breite Einsatzspektrum ersehen. Da Einweg-Hash-Funktionen für jedermann berechenbar sein sollen, verwenden sie keine geheimen Schlüssel. Den Hash-Wert einer Einweg-Funktion bezeichnet man als Message Authentication Code (MAC).

MD-5

Zu den am weitesten verbreiteten Message-Digest-Funktionen zählt MD-5. Es gehört mit MD-2 und MD-4 zu einer Familie stetig verbesserter Hash-Funktionen, die von dem bereits mehrfach zitierten Ron Rivest entwickelt wurde.

MD-5 verarbeitet Nachrichten in 512-Bit-Blöcken, indem es jeweils sechzehn 32-Bit-Blöcke zusammenfasst. Auf Grund dieser Eigenschaft eignet sich MD-5 besonders für den Einsatz auf 32-Bit-Prozessoren. Auch als MAC erhält man einen 128 Bit langen Block aus vier 32-Bit-Blöcken.

Die Verarbeitung findet bei MD-5 in mehreren Stufen statt, wobei als Eingangsfolge jeder Stufe ein 512 Bit langer Block der Nachricht und das MAC der vorangegangenen Stufe dienen. Für die erste Stufe wird ein initialer MAC mit den vier 32-Bit-Blöcken d0 = 6745230116, d1 = efcdab8916, d2 = 98badcfe16 und d3 = 1032547616 verwendet. Beim MAC der letzten Stufe handelt es sich dann um den gültigen Message Digest.

SHA-1

Zu den Schwächen des MD-5-Algorithmus zählt, dass sich entgegen der Anforderung an Einweg-Hash-Funktionen relativ schnell Kollisionen der Hash-Werte ergeben können. Diesem Umstand versucht der 1994 von NIST vorgeschlagene Secure Hash Algorithm SHA-1 abzuhelfen.

SHA-1 generiert aus einer maximal 2^64 Bit langen Eingangsfolge eine 160 Bit lange Zeichenfolge. Dabei arbeitet es mit 512-Bit-Blöcken. Der Algorithmus verwendet fünf Stufen, wobei auf jeder Stufe 80 Schritte ausgeführt werden. Wie MD-5 nutzt auch SHA-1 anfangs einen vorgegebenen, initialen Message Digest.

Auf Grund seiner längeren Ergebnisfolge besteht bei SHA-1 eine wesentlich geringere Wahrscheinlichkeit für eine Kollision als bei MD-5. Während bei MD-5 durchschnittlich nach 2^64 Operationen eine Kollision entsteht, ist dies bei SHA-1 erst alle 2^80 Operationen der Fall.

DSA

Aus dem mit Hilfe einer Hash-Funktion generierten Message Authentication Code lässt sich eine digitale Unterschrift erzeugen, indem man ihn mit einem privaten Schlüssel chiffriert. Auf diesem Weg arbeitet etwa der Digital Signature Algorithm (DSA) des Digital Signature Standard (DSS). Er zeigt ein mögliches Vorgehen auf der Grundlage eines mit SHA-1 erzeugten MAC:

Alice versendet nun (m, r, s). Der Empfänger Bob überprüft die digitale Unterschrift mit Hilfe von:

Falls v = r ist, gilt die Unterschrift von Alice als bestätigt.

Ausblick

In den ersten beiden Teilen unserer Artikelserie zu Security haben wir einige Basisdefinitionen abgeklärt und uns näher mit den verschiedenen Verschlüsselungs- und Authentifizierungsverfahren vertraut gemacht.

Davon ausgehend nehmen wir im nächsten Teil der Serie die wichtigsten Sicherheitsprotokolle auf dem Link Layer des Netzwerks näher unter die Lupe. Dazu zählen unter anderem PPP, PAP und CHAP, die Tunneling-Protokolle PPTP sowie L2TP und nicht zuletzt moderne RAS-Security-Verfahren wie RADIUS/TACACS und IEEE 802.1x. (jlu)

Grundlagen: Security

Teil 1

Einführung in die Kryptographie

Teil 2

Kryptologische Verfahren

Teil 3

Security auf dem Link Layer

Teil 4

Security auf dem Network Layer

Teil 5

Security auf dem Application Layer

Teil 6

Security mit VPNs