RC4
RC4, ARC4 oder Arcfour ist eine Stromverschlüsselung, die mit Standards wie HTTPS, SSH 1 und WEP bzw. WPA weite Verbreitung gefunden hat.
RC4 (Ron’s Code 4) wurde 1987 von Ronald L. Rivest entwickelt, ist eine Marke von RSA Security und offiziell geheim (Security by Obscurity). ARC4 (Alleged RC4) oder Arcfour geht auf eine anonyme Veröffentlichung von Quelltext im Jahr 1994 zurück und ist Open Source.
Im Februar 2015 wurde mit RFC 7465 der Einsatz von RC4 im Rahmen von TLS verboten.<ref>Jürgen Schmidt: IETF verbietet RC4-Verschlüsselung in TLS. Heise Security, 20. Februar 2015, abgerufen am 20. Februar 2015. </ref>
Inhaltsverzeichnis
Beschreibung
Eine Zufallsfolge wird aus einem nur einmalig zu verwendenden Schlüssel erzeugt. Der Klartext wird Bit für Bit 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. 21684 Möglichkeiten, was einer Schlüssellänge von 210 (1684/8) Zeichen entsprechen würde. Nach dem Geburtstagsparadoxon ist zu erwarten, dass es Schlüssel mit einer Schlüssellänge von ((1684/2)/8) 105 Zeichen gibt, die identische Permutationen der S-Box erzeugen. Bekannt sind mittlerweile mindestens zwei 24 Zeichen (192 Bit) lange Schlüssel, die zur gleichen Permutation der S-Box führen. Damit gibt es zwei verschiedene Schlüssel, die zur gleichen Verschlüsselungsfolge führen.<ref name="fse2009matsui">Mitsuru Matsui: Key Collisions of the RC4 Stream Cipher. Fast Software Encryption, 2009. In: Lecture Notes. In: Computer Science, Nummer 5665, Springer Verlag, 2009, S. 38–50, Präsentation (PDF; 267 kB; englisch)</ref>
Der Algorithmus ist sehr einfach mit praktisch jeder Hard- und Software zu implementieren und sehr effizient berechenbar.
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
</syntaxhighlight>
SPRITZ: <syntaxhighlight lang="text">
i = i + w j = k + S[j + S[i]] k = i + k + S[j] SWAP(S[i];S[j]) z = S[j + S[i + S[z + k]]] Return z
</syntaxhighlight>
Der Parameter w ist eine zu N teilerfremde Zahl, wobei N die Größe des Arrays ist. Nach N, meist 256, Iterationen hat i daher jeden Wert von 0 bis N-1 genau einmal angenommen. Jeder Wert in der S-Box wurde entsprechend mindestens einmal vertauscht.
Weblinks
- Implementierung in Python
- Überblick über Arbeiten bezüglich der Sicherheit von RC4 (englisch)
- Original-Post des damals noch geheimen RC4-Algorithmus im Usenet (englisch)
- Scott Fluhrer, Itsik Mantin, Adi Shamir: Weaknesses in the Key Scheduling Algorithm of RC4. (PDF-Datei; 297 kB; englisch)
- RSA Security Response to Weaknesses in Key Scheduling Algorithm of RC4
- A Stream Cipher Encryption Algorithm “Arcfour” (Internet Engineering Task Force Network Working Group 1997)
- RFC 4345 – Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol
Einzelnachweise
<references />