RC4

In der Geheimschrift, RC4 (auch bekannt als ARC4 oder ARCFOUR Bedeutung Angeblichen RC4, sehen unten) ist die am weitesten verwendete Softwarestrom-Ziffer und wird in populären Protokollen wie Secure Sockets Layer (SSL) verwendet (um Internetverkehr zu schützen), und WEP (um Radionetze zu sichern). Während bemerkenswert, für seine Einfachheit und Geschwindigkeit bei der Software hat RC4 Schwächen, die gegen seinen Gebrauch in neuen Systemen argumentieren. Es ist besonders verwundbar, wenn der Anfang der Produktion keystream nicht verworfen wird, oder nichtzufällige oder zusammenhängende Schlüssel verwendet werden; einige Weisen, RC4 zu verwenden, können zu sehr unsicherem cryptosystems wie WEP führen.

Geschichte

RC4 wurde von Ron Rivest von RSA Sicherheit 1987 entworfen. Während es "Ziffer von Rivest 4 offiziell genannt wird", wie man wechselweise versteht, tritt das RC-Akronym "für den Code von Ron" ein (sieh auch RC2, RC5 und RC6).

RC4 war am Anfang ein Geschäftsgeheimnis, aber im September 1994 wurde eine Beschreibung davon zur Chiffrierpunk-Adressenliste anonym angeschlagen. Es wurde bald auf dem sci.crypt newsgroup, und von dort zu vielen Seiten im Internet angeschlagen. Der durchgelassene Code wurde bestätigt, um echt zu sein, weil, wie man fand, seine Produktion zusammengepasst hat, hat dieses des Eigentumssoftwareverwendens RC4 lizenziert. Weil der Algorithmus bekannt ist, ist es nicht mehr ein Geschäftsgeheimnis. Der Name RC4 wird gesetzlich schützen lassen, so wird RC4 häufig ARCFOUR oder ARC4 (Bedeutung angeblichen RC4) genannt, um Handelsmarke-Probleme zu vermeiden. RSA Sicherheit hat den Algorithmus nie offiziell veröffentlicht; Rivest hat sich jedoch zum Artikel über RC4 in seinen eigenen Kurs-Zeichen verbunden. RC4 ist ein Teil von einigen allgemein verwendeten Verschlüsselungsprotokollen und Standards, einschließlich WEP und WPA für Radiokarten und TLS geworden.

Die Hauptfaktoren im RC4's Erfolg über solch eine breite Reihe von Anwendungen sind seine Geschwindigkeit und Einfachheit: Effiziente Durchführungen sowohl in der Software als auch in Hardware sind sehr leicht sich zu entwickeln.

Beschreibung

RC4 erzeugt einen pseudozufälligen Strom von Bit (ein keystream). Als mit jeder Strom-Ziffer können diese für die Verschlüsselung durch das Kombinieren davon mit dem plaintext das Verwenden mit dem Bit klug exklusiv verwendet werden - oder; Dekodierung wird derselbe Weg durchgeführt (da exklusiv - oder eine symmetrische Operation ist). (Das ist der Ziffer von Vernam ähnlich, außer dass erzeugte pseudozufällige Bit, aber nicht ein bereiter Strom, verwendet werden.), Um den keystream zu erzeugen, macht die Ziffer von einem heimlichen inneren Staat Gebrauch, der aus zwei Teilen besteht:

  1. Eine Versetzung aller 256 möglichen Bytes (hat "S" unten angezeigt).
  2. Zwei 8-Bit-Index-Zeigestöcke (hat "mich" und "j" angezeigt).

Die Versetzung wird mit einem Schlüssel der variablen Länge normalerweise zwischen 40 und 256 Bit mit dem schlüsselplanenden Algorithmus (KSA) initialisiert. Sobald das vollendet worden ist, wird der Strom von Bit mit dem pseudozufälligen Generationsalgorithmus (PRGA) erzeugt.

Der schlüsselplanende Algorithmus (KSA)

Der schlüsselplanende Algorithmus wird verwendet, um die Versetzung in der Reihe "S" zu initialisieren. "keylength" wird als die Zahl von Bytes im Schlüssel definiert und kann in der Reihe 1  keylength  256, normalerweise zwischen 5 und 16, entsprechend einer Schlüssellänge 40 - 128 Bit sein. Erstens wird die Reihe "S" zur Identitätsversetzung initialisiert. S wird dann für 256 Wiederholungen auf eine ähnliche Weise zum wichtigen PRGA bearbeitet, sondern auch vermischt sich in Bytes des Schlüssels zur gleichen Zeit.

weil ich von 0 bis 255

S [ich]: = ich

endfor

j: = 0

weil ich von 0 bis 255

j: = (j + S [ich] + Schlüssel [ich mod keylength]) mod 256

Tausch-Werte von S [ich] und S [j]

endfor

Der pseudozufällige Generationsalgorithmus (PRGA)

Weil so viele Wiederholungen, wie, der PRGA erforderlich sind, den Staat und die Produktionen ein Byte des keystream modifizieren. In jeder Wiederholung erhöht der PRGA i, schlägt das ith Element von S, S [ich] nach und fügt hinzu, dass zu j, die Werte von S [ich] und S [j] austauscht, und dann die Summe S [ich] + S [j] (modulo 256) als ein Index verwendet, um ein drittes Element von S herbeizuholen, (der keystream schätzen K unten), der XORed mit dem folgenden Byte der Nachricht ist, um das folgende Byte entweder von ciphertext oder von plaintext zu erzeugen. Jedes Element von S wird mit einem anderen Element mindestens einmal alle 256 Wiederholungen getauscht.

i: = 0

j: = 0

während GeneratingOutput:

i: = (ich + 1) mod 256

j: = (j + S [ich]) mod 256

Tausch-Werte von S [ich] und S [j]

K: = S [(S [ich] + S [j]) mod 256]

Produktion K

endwhile

Durchführung

Viele Strom-Ziffern basieren auf geradlinigen Feed-Back-Verschiebungsregistern (LFSRs), die, während effizient, in der Hardware, weniger in der Software sind. Das Design von RC4 vermeidet den Gebrauch von LFSRs, und ist für die Softwaredurchführung ideal, weil es nur Byte-Manipulationen verlangt. Es verwendet 256 Bytes des Gedächtnisses für die Zustandreihe, S [0] durch S [255], k Bytes des Gedächtnisses für den Schlüssel, Schlüssel [0] durch Schlüssel [k-1], und Variablen der ganzen Zahl, mich, j, und K. Das Durchführen der Modulverminderung von einem Wert modulo 256 kann mit einem bitwise UND mit 255 getan werden (der zur Einnahme des Bytes der niedrigen Ordnung des fraglichen Werts gleichwertig ist).

Testvektoren

Diese Testvektoren sind nicht offiziell, aber für jeden günstig, ihr eigenes RC4 Programm prüfend. Die Schlüssel und plaintext sind ASCII, der keystream und ciphertext sind in hexadecimal.

Sicherheit

Verschieden von einer modernen Strom-Ziffer (wie diejenigen in eSTREAM) nimmt RC4 keinen getrennten nonce neben dem Schlüssel. Das bedeutet, dass, wenn ein einzelner langfristiger Schlüssel an sicher encrypt vielfache Ströme gewöhnt sein soll, der cryptosystem angeben muss, wie man den nonce und den langfristigen Schlüssel verbindet, den Strom-Schlüssel für RC4 zu erzeugen. Eine Annäherung an das Wenden davon soll einen "frischen" RC4 Schlüssel durch hashing ein langfristiger Schlüssel mit einem nonce erzeugen. Jedoch verketten viele Anwendungen, die RC4 einfach verwenden, Schlüssel und nonce; RC4's schwache Schlüsselliste verursacht dann eine Vielfalt von ernsten Problemen.

Weil RC4 eine Strom-Ziffer ist, ist es verformbarer als allgemeine Block-Ziffern. Wenn nicht verwendet zusammen mit einem starken Nachrichtenbeglaubigungscode (MAC) dann ist Verschlüsselung für einen Bit schnipsenden Angriff verwundbar. Es ist jedoch beachtenswert, dass RC4, eine Strom-Ziffer seiend, die einzige allgemeine Ziffer ist, die zum 2011-BIEST-Angriff auf TLS 1.0 geschützt ist, der eine bekannte Schwäche in der Weise ausnutzt, wie Ziffer-Block-Anketten-Weise mit allen anderen Ziffern verwendet wird, die durch TLS 1.0 unterstützt sind, die alle Block-Ziffern sind.

Die Neigungen von Roos und Schlüsselrekonstruktion von der Versetzung

1995 hat Andrew Roos experimentell bemerkt, dass das erste Byte des keystream zu den ersten drei Bytes des Schlüssels und den ersten paar Bytes der Versetzung aufeinander bezogen wird, nachdem die KSA zu einer geradlinigen Kombination der Schlüsselbytes aufeinander bezogen werden. Diese Neigungen sind unerwiesen bis 2007 geblieben, als Goutam Paul, Siddheshwar Rathi und Subhamoy Maitra die Keystream-Schlüsselkorrelation bewiesen haben und in einer anderen Arbeit Goutam Paul und Subhamoy Maitra die Versetzungsschlüssel-Korrelationen bewiesen haben. Die letzte Arbeit hat auch die Versetzungsschlüssel-Korrelationen verwendet, um den ersten Algorithmus für die ganze Schlüsselrekonstruktion von der Endversetzung nach dem KSA, ohne jede Annahme auf dem Schlüssel oder IV zu entwerfen. Dieser Algorithmus hat eine unveränderliche Wahrscheinlichkeit des Erfolgs in einer Zeit, die die Quadratwurzel der erschöpfenden Schlüsselsuchkompliziertheit ist. Nachher sind viele andere Arbeiten auf der Schlüsselrekonstruktion von RC4 inneren Staaten durchgeführt worden. Subhamoy Maitra und Goutam Paul haben auch gezeigt, dass die Typ-Neigungen von Roos noch andauern, selbst wenn man in Betracht zieht, hat Versetzungsindizes, wie verschachtelt oder. Diese Typen von Neigungen werden in einigen der späteren Schlüsselrekonstruktionsmethoden verwendet, für die Erfolgswahrscheinlichkeit zu vergrößern.

Voreingenommene Produktionen des RC4

Der durch den RC4 erzeugte keystream wird in unterschiedlichen Graden zu bestimmten Folgen beeinflusst. Das beste, das solcher Angriff wegen Itsik Mantins und Adi Shamirs ist, der gezeigt hat, dass das zweite Produktionsbyte der Ziffer zur Null mit der Wahrscheinlichkeit 1/128 (statt 1/256) beeinflusst wurde. Das ist auf Grund dessen, dass, wenn das dritte Byte des ursprünglichen Staates Null ist, und das zweite Byte 2 nicht gleich ist, dann ist das zweite Produktionsbyte immer Null. Solche Neigung kann durch das Beobachten von nur 256 Bytes entdeckt werden.

Souradyuti Paul und Bart Preneel von COSIC haben gezeigt, dass das erste und die zweiten Bytes des RC4 auch beeinflusst wurden. Die Zahl von erforderlichen Proben, um diese Neigung zu entdecken, ist 2 Bytes.

Scott Fluhrer und David McGrew haben auch solche Angriffe gezeigt, die den keystream des RC4 von einem zufälligen Strom gegeben ein Gigabyte der Produktion unterschieden haben.

Die ganze Charakterisierung eines Einzelschritts von RC4 PRGA wurde von Riddhipratim Basu, Shirshendu Ganguly, Subhamoy Maitra und Goutam Paul durchgeführt. Alle Versetzungen denkend, beweisen sie, dass der Vertrieb der Produktion gegeben ich und j, und demzufolge nicht gleichförmig ist, wird die Information über j immer in die Produktion durchgelassen.

Fluhrer, Mantin und Angriff von Shamir

2001 wurde eine neue und überraschende Entdeckung von Fluhrer, Mantin und Shamir gemacht: Über alle möglichen RC4 Schlüssel sind die Statistiken für die ersten paar Bytes der Produktion keystream stark nichtzufällig, Information über den Schlüssel durchlassend. Wenn der langfristige Schlüssel und nonce einfach verkettet werden, um den RC4 Schlüssel zu erzeugen, kann dieser langfristige Schlüssel durch das Analysieren einer Vielzahl von Nachrichten encrypted mit diesem Schlüssel entdeckt werden. Das und verwandte Effekten wurden dann verwendet, um zu brechen, der WEP ("hat gleichwertige Gemütlichkeit" angeschlossen) mit 802.11 Radionetzen verwendete Verschlüsselung. Das hat eine Krabbelei für einen standardbasierten Ersatz für WEP auf dem 802.11 Markt verursacht, und hat zum IEEE 802.11i Anstrengung und WPA geführt.

Cryptosystems kann gegen diesen Angriff durch die Verschrottung des anfänglichen Teils des keystream verteidigen. Solch ein modifizierter Algorithmus wird "RC4-Fall [n]" traditionell genannt, wo n die Zahl der Initiale keystream Bytes ist, die fallen gelassen sind. Der ANSEHEN-Verzug ist n = 768 Bytes, aber ein konservativer Wert würde n = 3072 Bytes sein.

Der Angriff von Klein

2005 hat Andreas Klein eine Analyse der RC4 Strom-Ziffer präsentiert, mehr Korrelationen zwischen dem RC4 keystream und dem Schlüssel zeigend. Erik Tews, Ralf-Philipp Weinmann und Andrei Pychkine haben diese Analyse verwendet, um aircrack-ptw, ein Werkzeug zu schaffen, das 104-Bit-RC4 knackt, der in 128-Bit-WEP in weniger als einer Minute verwendet ist. Wohingegen Fluhrer, Mantin und Angriff von Shamir ungefähr 10 Millionen Nachrichten verwendet haben, kann aircrack-ptw 104-Bit-Schlüssel in 40,000 Rahmen mit 50-%-Wahrscheinlichkeit, oder in 85,000 Rahmen mit 95-%-Wahrscheinlichkeit brechen.

Kombinatorisches Problem

Ein kombinatorisches Problem, das mit der Zahl von Eingängen und den Produktionen der RC4 Ziffer verbunden ist, wurde zuerst von Itsik Mantin und Adi Shamir 2001 aufgeworfen, wodurch, der 256 Gesamtelemente im typischen Staat von RC4, wenn x Zahl der Elemente (x  256) nur bekannt ist (können alle anderen Elemente leer angenommen werden), dann ist die maximale Zahl der Elemente, die deterministisch erzeugt werden kann, auch x in den folgenden 256 Runden. Diese Vermutung wurde gestellt, um sich 2004 mit einem formellen Beweis auszuruhen, der von Souradyuti Paul und Bart Preneel gegeben ist.

RC4 Varianten

Wie oben erwähnt kommt die wichtigste Schwäche von RC4 aus der ungenügenden Schlüsselliste; die ersten Bytes der Produktion offenbaren Information über den Schlüssel. Das kann durch die einfache Verschrottung eines anfänglichen Teils des Produktionsstroms korrigiert werden. Das ist als RC4-dropN bekannt, wo N normalerweise ein Vielfache 256, solcher als 768 oder 1024 ist.

Mehrere Versuche sind gemacht worden, RC4, namentlich RC4A, VMPC und RC4 + zu stärken.

RC4A

Souradyuti Paul und Bart Preneel haben eine RC4 Variante vorgeschlagen, die sie RC4A nennen.

RC4A verwendet zwei Zustandreihe S1 und S2 und zwei Indizes j1 und j2. Jedes Mal, wenn ich erhöht werde, werden zwei Bytes erzeugt:

  1. Erstens wird der grundlegende RC4 Algorithmus mit S1 und j1 durchgeführt, aber im letzten Schritt S1 [ich] + wird S1 [j1] in S2 nachgeschlagen.
  2. Zweitens wird die Operation wiederholt (ohne mich wieder zu erhöhen), auf S2 und j2 und S1 [S2 [ich] +S2 [j2]] ist Produktion.

So ist der Algorithmus:

i: = 0

j1: = 0

j2: = 0

während GeneratingOutput:

i: = ich + 1

j1: = j1 + S1 [ich]

Tausch-Werte von S1 [ich] und S1 [j1]

Produktion S2 [S1 [ich] + S1 [j1]]

j2: = j2 + S2 [ich]

Tausch-Werte von S2 [ich] und S2 [j2]

Produktion S1 [S2 [ich] + S2 [j2]]

endwhile

Obwohl der Algorithmus dieselbe Zahl von Operationen pro Produktionsbyte verlangt hat, gibt es größeren Parallelismus als RC4, eine mögliche Geschwindigkeitsverbesserung zur Verfügung stellend.

Obwohl stärker, als RC4 ist dieser Algorithmus auch, mit Alexander Maximov und einer Mannschaft von NEC sich entwickelnde Weisen angegriffen worden, seine Produktion von aufrichtig Zufallsfolge zu unterscheiden.

VMPC

"Veränderlich Modifizierte Versetzungszusammensetzung" ist eine andere RC4 Variante. Es verwendet dieselbe Schlüsselliste wie RC4, aber das Wiederholen 768mal aber nicht 256 (ist es nicht dasselbe als RC4-drop512, weil alle Wiederholungen Schlüsselmaterial vereinigen), und mit fakultativen zusätzlichen 768 Wiederholungen, um einen anfänglichen Vektoren zu vereinigen. Geschrieben, um die Ähnlichkeit zu RC4 so viel wie möglich hervorzuheben, funktioniert die Produktionsgenerationsfunktion wie folgt:

i: = 0 während GeneratingOutput:

a: = S [ich]

j: = S [j +]

b: = S [j]

Produktion S [S [b] + 1]

S [ich]: = b

S [j]: = ein

i: = ich + 1 endwhile

Das wurde in denselben Zeitungen wie RC4A angegriffen.

RC4

RC4 ist eine modifizierte Version von RC4 mit einer komplizierteren dreiphasigen Schlüsselliste (über 3× nicht weniger als RC4 oder dasselbe als RC4-drop512 nehmend), und eine kompliziertere Produktionsfunktion, die vier zusätzliche lookups in der S-Reihe für jede Byte-Produktion durchführt, ungefähr 1.7× so lange grundlegender RC4 nehmend.

während GeneratingOutput: i: = ich + 1 a: = S [ich]

j: = j + ein

b: = S [j] S [ich]: = b S [j]: = ein

c: = S [ich

Produktion (S [a+b] + S [c0xAA])  S [j+b]

endwhile

Dieser Algorithmus ist bedeutsam nicht analysiert worden.

RC4-basierter cryptosystems

  • WEP
  • WPA (Verzug-Algorithmus, aber kann konfiguriert werden, um AES-CCMP statt RC4 zu verwenden)
  • Protokoll-Verschlüsselung von BitTorrent
  • Microsoft Point-to-Point Encryption
  • Oper Mini-
  • Sichere Steckdose-Schicht (fakultativ)
  • Sichere Schale (fakultativ)
  • Entferntes Tischprotokoll
  • Kerberos (fakultativ)
  • SASL Mechanismus-Auswahl-MD5 (fakultativ)
  • Gpcode. AK, ein Anfang Computervirus im Juni 2008 für Windows von Microsoft, das Dokumentengeisel für das Lösegeld durch das Verdunkeln von ihnen mit RC4 und RSA-1024 Verschlüsselung nimmt
  • PDF
  • Skype (in der modifizierten Form)

Wo ein cryptosystem mit" (fakultativ) gekennzeichnet wird" ist RC4 eine von mehreren Ziffern, die das System konfiguriert werden kann, um zu verwenden.

Siehe auch

  • eSTREAM - Eine Einschätzung von neuen Strom-Ziffern, die durch die EU führen werden.
  • TEE, Block-TEE auch bekannt als erweiterter TEE und Korrigierter Block-TEE - Eine Familie von Block-Ziffern, dass, wie RC4, entworfen werden, um sehr einfach zu sein, durchzuführen.
  • Fortgeschrittener Verschlüsselungsstandard
  • CipherSaber

Links

RC4 in WEP


Rosencrantz und Guildenstern sind tot / Ringo Starr
Impressum & Datenschutz