Cryptography Reference
In-Depth Information
nengelernt haben. Die Funktionsweise ist jedoch eine völlig andere als bei den
anderen drei Mitgliedern der RC-Familie.
Rivest entwickelte RC4 im Jahr 1987. Zum Ärger vieler Kollegen hielt er die
Funktionsweise geheim und verhinderte so eine Analyse durch andere Experten.
So war die Schadenfreude groß, als 1994 der Quellcode des Verfahrens im Inter-
net auftauchte (mit unbekannter Herkunft, versteht sich). Bis heute ist keine offi-
zielle Spezifikation von RC4 erschienen, doch längst kursieren genügend inoffi-
zielle Beschreibungen, wobei manche das Verfahren ARCFOUR nennen, um
möglichen Streitigkeiten aus dem Weg zu gehen.
Nach dem Bekanntwerden der Funktionsweise wunderte sich die gesamte
Fachwelt über den simplen Aufbau von RC4. Es gibt Programmierer, die das Ver-
fahren aus dem Gedächtnis implementieren können (versuchen Sie das einmal
mit dem DES oder AES). Alice und Bob können RC4 mit etwas Übung sogar ohne
Computerunterstützung von Hand einsetzen - auch das dürfte den beiden mit
anderen Verfahren schwerfallen.
16.2.1
Funktionsweise von RC4
RC4 ist vor allem für Softwareimplementierungen geeignet. Die Schlüssellänge ist
variabel und kann zwischen einem und 2.048 Bit betragen (vorteilhaft ist ein
Vielfaches von acht). Am sinnvollsten ist eine Schlüssellänge von 128 oder 256 Bit.
Der Schlüssel beeinflusst ausschließlich den Startwert (Seed), während die Fort-
schaltfunktion nicht schlüsselabhängig ist. Das Herzstück des Verfahrens ist ein
aus 256 Byte-Variablen bestehender Status, in dem jede Zahl zwischen 0 und 255
genau einmal vorkommt. Die 256 Variablen werden im Folgenden als s 0 , s 1 , ...,
s 255 bezeichnet. Pro Fortschaltung erzeugt RC4 ein Byte Keystream. Es gibt kei-
nen Initialisierungsvektor, Alice und Bob können jedoch einen Teil des potenziell
2.048 Bit langen Schlüssels als solchen verwenden. Zur Beschreibung der Funkti-
onsweise benötigen wir zwei Variablen i und j , die am Anfang den Wert 0 besit-
zen, sowie eine weitere Variable k . Der Status s 0 , s 1 , ..., s 255 wird nun mit folgen-
der Fortschaltfunktion bearbeitet:
i := i + 1 (mod 256)
j := j + s i (mod 256)
vertausche s i und s j
k := s i + s j (mod 256)
Das Keystream-Byte, das nun ausgegeben wird, ist s k (die Keystream-Extraktion
besteht also lediglich aus der Auswahl eines Bytes). Die Initialisierung sieht vor,
dass aus dem Schlüssel die Anfangsbelegung des Status berechnet wird. Dazu
wird die Zahlenfolge mit s 0 =0, s 1 =1, s 2 =2, ..., s 255 =255 initialisiert. Zudem wird
der Schlüssel byteweise in eine weitere Zahlenfolge k 0 , k 1 , k 2 , ..., k 255 geschrie-
ben. Bei einer Schlüssellänge von 2.048 Bit geht dies genau auf. Ist der Schlüssel
Search WWH ::




Custom Search