Wie Sie wahrscheinlich bereits wissen, wird Wired Equivalent Privacy (WEP) von Unternehmen verwendet, um ihre drahtlosen Verbindungen vor Schnüffelangriffen zu schützen. Sie haben wahrscheinlich auch gehört, dass es nicht sehr sicher ist. Im ersten Teil dieser 2-teiligen Serie werde ich das Innenleben von WEP erklären und nächsten Monat nachverfolgen, warum es unsicher ist.
Wie Sie wahrscheinlich bereits wissen, wird Wired Equivalent Privacy (WEP) von Unternehmen verwendet, um ihre drahtlosen Verbindungen vor Schnüffelangriffen zu schützen. Sie haben wahrscheinlich auch gehört, dass es nicht sehr sicher ist. Im ersten Teil dieser 2-teiligen Serie werde ich das Innenleben von WEP erklären und nächsten Monat nachverfolgen, warum es unsicher ist.
Brauche ich überhaupt WEP?
Als authentischer Benutzer verwendet Bob seinen Laptop, um jeden Tag sein Google Mail-Konto zu überprüfen. Er hat eine WLAN-Karte in seinem Laptop, die den Wireless Access Point (WAP) seines Internetdienstanbieters auf der anderen Straßenseite automatisch erkennt. Sobald er mit dem WAP verbunden ist, kann er seine E-Mails abrufen. Alice ist ein hinterhältiger Benutzer, der den ISP nicht für den Internetzugang bezahlen möchte. Sie weiß jedoch, dass der ISP auf der anderen Straßenseite einen Zugangspunkt hat, an den sich jeder anschließen und auf das Internet zugreifen kann. Sie steckt ihren Laptop ein und lädt bald Musik aus dem Internet herunter. WEP wurde entwickelt, um sicherzustellen, dass sich Benutzer vor der Verwendung von Ressourcen authentifizieren, Alice blockieren und Bob zulassen. Mal sehen, wie es das macht.
Funktionsweise von WEP
WEP verwendet den RC4-Algorithmus, um die Informationspakete zu verschlüsseln, die vom Access Point oder der drahtlosen Netzwerkkarte gesendet werden. Sobald der Access Point die von der Netzwerkkarte des Benutzers gesendeten Pakete empfängt, entschlüsselt er sie.
Jedes Datenbyte wird mit einem anderen Paketschlüssel verschlüsselt. Dies stellt sicher, dass, wenn ein Hacker es schafft, diesen Paketschlüssel zu knacken, die einzige Information, die durchgesickert ist, die ist, die in diesem Paket enthalten ist.
Die eigentliche Verschlüsselungslogik in RC4 ist sehr einfach. Der Klartext wird mit einem unendlich langen Keystream XOR-ed. Die Sicherheit von RC4 beruht auf der Geheimhaltung des Paketschlüssels, der aus dem Keystream abgeleitet wird.
Also, was ist ein Paketschlüssel?
Der Paketschlüssel wird durch die Kombination eines vorab freigegebenen Passworts, eines Zustandsarrays und eines Initialisierungsvektors (IV) gebildet. Lassen Sie uns zuerst jeden dieser Begriffe verstehen:
Pre-Shared Password: Das gleiche Pre-Shared Passwort wird von allen Benutzern für jedes Paket verwendet, das übertragen wird.
State Array: Es ist eine Reihe von Zahlen, die verschlüsselt und dann von RC4 verwendet werden, um den Schlüsselstrom zu konstruieren.
Initialisierungsvektor (IV): Der IV ist eine 3-Byte-Zufallszahl, die vom Computer generiert wird. Es wird entweder dem Chiffretext vorangestellt oder angehängt und an den Empfänger gesendet, der die IV abstreift, bevor der Chiffretext entschlüsselt wird.
Der RC4-Algorithmus besteht aus 2 Hauptteilen:
Der Schlüsselplanungsalgorithmus: Der KSA-Prozess beinhaltet die Erstellung eines verschlüsselten Zustandsarrays . Dieses Zustandsarray wird nun als Eingabe in der zweiten Phase, der sogenannten PRGA-Phase, verwendet.
Der Pseudozufallsgenerierungsalgorithmus: Das Zustandsarray aus dem KSA-Prozess wird hier verwendet, um einen endgültigen Schlüsselstrom zu generieren. Jedes Byte des erzeugten Schlüsselstroms wird dann mit dem entsprechenden Klartextbyte Xor’ed, um den gewünschten Chiffriertext zu erzeugen.
Schlüsselplanungsalgorithmus
Die IV wird unter Verwendung eines Zustandsarrays und der Eigenschaften des vordefinierten Kennworts berechnet. Dies wird erreicht, indem ein Array von Werten erstellt wird, die dem Index entsprechen, den Sie im Algorithmus verwenden möchten. Der Index für WEP ist standardmäßig 256. Die für die KSA erforderlichen Komponenten sind die Werte der Variablen i und j, der Indexwert, das vorab freigegebene Kennwort und seine Länge. Der Algorithmus, der diese Werte verwendet, um einen endgültigen Keystream zu generieren, wird unten beschrieben.
Initialisierung:
For i=0 ... index-1
S=i
J=0
Scrambling:
For i=0 ... index-1
J = j + state + K
Swap(state , state)
Eine Schleife läuft zuerst von 0 bis index-1, um das Statusarray mit Werten von 0 bis index zu initialisieren. Für zB. Wenn index =4 ist, wird das Statusarray mit Werten von 0 bis 3 gefüllt. Daher sind die Array-Werte wie folgt:
s=0 s=1 s=2 s=3
Der Wert von j wird auf 0 gesetzt. Eine weitere Schleife wird dann gestartet. Für jedes Mal, wenn die Schleife durchlaufen wird, wird der Wert von j berechnet, und der im Status gehaltene Array-Wert wird gegen den im Status gehaltenen Wert ausgetauscht.
Pseudo Random Generation Algorithm (PRGA)
Ein Pseudozufallszahlengenerator (PRNG) ist ein Algorithmus, der eine zufällige Folge von Zahlen generiert. Der PRGA ist für die Erstellung der Streaming-Werte verantwortlich, die zum Verschlüsseln des Klartexts verwendet werden, der auf dem Statusarray, der Ausgabe des KSA, basiert . Die Methodik, der das PRGA folgt, wird im Folgenden beschrieben.
Initialisierung:
I=0 j=0 index=4
Generierungsalgorithmus
I=(i+1) mod index
J=(j+state) mod index
Swap(state, state)
Z=state + statemod index]
Der Streaming-Wert wird durch Durchlaufen des Algorithmus für jedes Byte des Pakets erstellt. Die Variablen i und j werden auf 0 initialisiert. Für jedes Paket wird der Wert von j berechnet, und der im Status gehaltene Array-Wert wird gegen den im Status gehaltenen Wert ausgetauscht. Die Ausgabe z wird dann für jedes Paket berechnet. Am Ende des Prozesses haben wir einen PRGA-Stream.
Der PRGA-Stream wird dann mit dem Klartext Xor’ed, um Chiffretext zu erzeugen, der an die andere Partei übertragen wird.
Ein Beispiel
Lassen Sie uns die obigen Konzepte in Form eines Beispiels veranschaulichen. Der Klartext, der verschlüsselt werden soll, ist TEST. Das Passwort, das hier verwendet wird, ist 6258. Die Anfangswerte unserer Variablen lauten wie folgt:
i=0 j=0 password=6258 pass length=4 index=4
Nach dem Algorithmus erhalten wir:
Schritt-1
State array: State=0 State=1 State=2 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 6 mod 4 = 2
Swap(State , State) = Swap(0,2)
State=2 State=1 State=0 State=3
Schritt-2
i=1 j=2
State array: State=2 State=1 State=0 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 5 mod 4 = 1
Swap(State, State) = Swap(1,0)
State=2 State=0 State=1 State=3
Schritt 3
i=2 j=1
State array: State=2 State=0 State=1 State=3
Password: K=6 K=2 K=5 K=8
j = + K]mod 4 = 7 mod 4 = 3
Swap(State, State) = Swap(1,3)
State=2 State=0 State=3 State=1
Schritt 4
i=3 j=3
State array: State=2 State=0 State=3 State=1
Password: K=6 K=2 K=5 K=8
j = +K]mod 4 = 12 mod 4 = 0
Swap(State, State) = Swap(1,2)
State=1 State=0 State=3 State=2
Final State Array: State=1 State=0 State=3 State=2
Sobald das KSA-Statusarray bereit ist, wird die PRGA-Prozedur initialisiert. Das Verfahren ist wie folgt:
Initially i=0 j=0
K=6 K=2 K=5 K=8
Erste Schleife:
State=1 State=0 State=3 State=2
i=1 j=0+State=0+0=0
Swap(State, State) = Swap(0,1)
State=0 State=1 State=3 State=2
z = State + State mod 4] = State = 1
z1 = 00000001
Zweite Schleife:
State=0 State=1 State=3 State=2
i=2 j=0+State=3
Swap(State, State) = Swap(3,2)
State=0 State=1 State=2 State=3
z = State + State mod 4] = State = 1
z2 = 00000001
Dritte Schleife:
State=0 State=1 State=2 State=3
i=3 j=3+State=6 mod 4 = 2
Swap(State,State) = Swap(3,2)
State=0 State=1 State=3 State=2
z = State + State] mod 4 = State = 1
z3=00000001
Vierte Schleife:
State=0 State=1 State=3 State=2
i=4 j=2+State=2+State = 2+State = 2
Swap(State,State) = Swap(State,State) = Swap(0,3)
State=3 State=1 State=0 State=2
z4 = State + State] = State +
State] = State = 2
z4=00000010
Die Ausgänge z1-z4 am Ende jeder Schleife müssen mit dem ASCII jedes Zeichens von Klartext, der in unserem Fall TEST ist, Xor’ed werden. Daher lautet der Chiffretext für den Klartexttest wie folgt:
T xor z1 = 01010100 xor 00000001 = 01010101 = U
E xor z2 = 01000101 xor 00000001 = 01000100 = D
S xor z3 = 01010011 xor 00000001 = 01010010 = R
T xor z4 = 01010100 xor 00000010 = 01010110 = U
Das Wort TEST, wenn es mit WEP verschlüsselt ist, ist UDRU.
Dieser Artikel war nur eine Einführung in WEP und das genaue Verfahren, in dem die Verschlüsselung in WEP stattfindet. Im nächsten Teil werden wir uns mit der Frage befassen, die Ihnen am wichtigsten ist: „Warum ist WEP unsicher? Welchen Risiken bin ich ausgesetzt, wenn ich WEP verwende?“