- Arc4
-
RC4 (auch bekannt als ARC4 oder ARCFOUR) ist eine einfache Stromchiffre. Er wurde 1987 von Ronald L. Rivest (Ron's Code 4) für RSA Data Security Inc. (heute RSA Security) entwickelt und von vielen bekannten Unternehmen und in einer Vielzahl von Standards wie SSH 1, HTTPS und WEP bzw. WPA eingesetzt. Der Algorithmus war sieben Jahre lang geheim („security by obscurity“), bis 1994 der Quellcode anonym veröffentlicht wurde.
Inhaltsverzeichnis
Beschreibung
Eine Zufallsfolge wird aus einem nur einmalig zu verwendenden Schlüssel erzeugt. Der Klartext wird Byte für Byte per XOR mit der Zufallsfolge verknüpft, um die Daten zu verschlüsseln.
Der Zufallsgenerator verwendet eine so genannte S-Box, eine zufällig gewählte Permutation oder Substitution der Zahlen 0 bis 255. Die S-Box wird in einem ersten Schritt aus dem geheimen Schlüssel berechnet und anschließend zur Berechnung der Zufallsfolge verwendet. Nach jedem Berechnungsschritt werden zwei Werte der S-Box vertauscht.
Die Sicherheit eines solchen Verfahrens ist nur gewährleistet, wenn sich die Zufallsfolge nicht wiederholt. Daher darf der Schlüssel bzw. das Passwort nur einmalig verwendet werden. Für die Besetzung der S-Box und die Werte zweier weiterer Variablen gibt es ca. 21700 Möglichkeiten. Eine zufällige Wiederholung ist damit praktisch undenkbar.
Der Algorithmus ist sehr einfach mit praktisch jeder Hard- und Software zu implementieren und sehr effizient berechenbar. Die Verarbeitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausreichend. Der Schlüssel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kann im Gegensatz zum RC4 auch mehrfach verwendet werden. Vergleichbare Stromchiffren wie SEAL sind vergleichbar schnell und gelten als sicher.
Im WEP wurde der einmalige Schlüssel durch einfaches Zusammensetzen eines festen geheimen Schlüssels und eines Session Key bestimmt. In diesem Fall ist es jedoch möglich, den festen geheimen Schlüssel abzuleiten. Falls der Schlüssel mit einer Hash-Funktion quasi zufällig gewählt wird, kann der RC4 aber weiterhin als sicher betrachtet werden.
Bei Microsoft-Windows-Systemen, welche an eine NT-Domäne angebunden sind, wird das Anmeldepasswort, welches der Benutzer in der GINA-Oberfläche eingibt, nach vorangegangener Aushandlung eines Schlüssels per RC4-HMAC verschlüsselt und durch einen Kerberos-Frame an den Server übertragen. Die Aushandlung des Schlüssels findet während der Meldung „Netzwerkverbindungen werden vorbereitet“ statt.
Algorithmus
Kern des Verfahrens ist die so genannte S-Box, eine zufällige Vertauschung oder Permutation des verwendeten Alphabets. Das Alphabet basiert auf jedem beliebigen Zeichensystem der Größe 2n (so z. B. 28 für ein Byte). Mittels der S-Box wird eine Zufallsfolge erzeugt, die Bit für Bit durch Addition modulo 2, auch XOR-Verknüpfung genannt, mit dem Nachrichtenstrom verknüpft wird. Die S-Box wird zunächst als identische Abbildung vorbesetzt, so dass S[i] = i für alle Zeichen des verwendeten Alphabets gilt.
Die initiale Belegung der S-Box kann mit dem folgenden Pseudo-Code beschrieben werden. Die S-Box wird dabei aus dem Schlüssel k der Länge l in Byte berechnet:
Initialisierung: Setze j = 0 Setze k[] = (Schlüssel-Zeichenfolge beliebiger Länge > 0 ) Setze s[] = (sBox-Zeichenfolge der Länge 2^n) Für i = 0 bis LängeVon(s) s[i] = i j = 0 Für i = 0 bis LängeVon(s) j = (j + s[i] + k[i mod LängeVon(k)]) mod LängeVon(s) vertausche(s[i],s[j])
Die anschließende Berechnung der Zufallsfolge erfolgt analog:Setze i = 0 und j = 0 Wiederhole für alle Zeichen des Nachrichtenstroms i = (i + 1) mod LängeVon(s) j = (j + s[i]) mod LängeVon(s) vertausche(s[i],s[j]) Zufallszeichen = s[(s[i]+s[j]) mod LängeVon(s)] ChiffreZeichen = Zufallszeichen XOR (nächstes Zeichen des Nachrichtenstroms)
Nennenswerte Schwächen des Verfahrens liegen allein in der Initialisierung der S-Box begründet. Bei einer zufällig gewählten S-Box als Ausgangspunkt der Berechnung ist das Verfahren trotz seiner Einfachheit praktisch nicht zu knacken.
Sicherheit
RC4 liefert sehr effizient eine Pseudozufallszahlenfolge, die mit dem Nachrichtenstrom durch XOR verknüpft wird (bei der zweiten XOR-Verknüpfung erscheint wieder das Original). Die Folge kann im Prinzip beliebig lang gemacht werden, in der Praxis der Nachrichtenübertragung treten jedoch Synchronisationsverluste auf, so dass neu aufgesetzt werden muss. Der dabei verwendete neue Schlüssel besteht aus einem offen übertragenen Teil und einem geheimen Teil. Der offene Teil sorgt für eine andere Zahlenfolge, der geheime Teil garantiert die Sicherheit.
In der WEP-Anwendung wird die Folge ab dem ersten Byte verwendet. Genau für dieses Byte besteht aber eine Simulationsmöglichkeit: die Initialisierung des Algorithmus wird nachvollzogen und dabei das nächste Schlüsselbyte des geheimen Schlüssels „geraten“. Die Wahrscheinlichkeit, dass das nun auszugebende erste Byte der Zahlenfolge in der weiteren Initialisierung nicht mehr verändert wird, ist relativ groß. Hat man genügend viele Neusynchronisationen mit neuen offenen Schlüsselteilen aufgezeichnet, so fällt ein richtig geratenes Schlüsselbyte statistisch auf. Man fährt so fort, bis alle geheimen Schlüsselbytes ermittelt sind. Das erste Byte der Zahlenfolge erhält man aus dem Datenstrom, da die Klartexte der ersten Bytes der Datagramme aus den Datenübertragungsprotokollen bekannt sind.
Der Angriff gelingt nur, wenn das erste Byte zur Verfügung steht. Das Verwerfen der ersten fünf bis zehn Bytes ist für die Wiederherstellung der Sicherheit ausreichend. Bei der Neuauflage der Protokolle (WPA) wurde aber auch direkt ein anderes Verschlüsselungsverfahren eingeführt, da die XOR-Stromverschlüsselung weitere Angriffsmöglichkeiten bietet: ist der Aufbau eines Datensatzes bekannt, besteht nämlich die Möglichkeit der Fälschung. Beispielsweise werden bei Banküberweisungen Kontonummer, Betrag usw. immer an der gleichen Position stehen, Kontonummern und Beträge sind relativ systematisch aufgebaut. Durch ein einfaches XOR mit entsprechend berechneten Masken lassen sich Beträge und Kontonummern verändern (z. B. 1000 addieren), wobei der Betrug nur mit einer gewissen Wahrscheinlichkeit auffällt. Allerdings besteht für den Angreifer lediglich die Möglichkeit der ungezielten Fälschung. Er kann kein bestimmtes Zielkonto angeben und auch den verschlüsselten Text nicht lesen. Diese Art des Angriffs existiert bei Blockchiffren wie DES oder AES in ähnlicher Form, denn je nachdem welcher Modus gewählt wurde lassen sich die Datenblöcke löschen, kopieren oder austauschen. Beim einen Modus sind die Blöcke voneinander abhängig und bei dem anderen nicht.
Weblinks
- Bericht über den aktuellen Sicherheitsstand von RC4
- Überblick über Arbeiten bezüglich der Sicherheit von RC4, englisch
- Original-Post im Usenet des damals noch geheimen RC4-Algorithmus, englisch
- Weaknesses in the Key Scheduling Algorithm of RC4 von Scott Fluhrer, Itsik Mantin, und Adi Shamir, englisch
Wikimedia Foundation.