zoals u waarschijnlijk al weet wordt Wired Equivalent Privacy (WEP) gebruikt door bedrijven om hun draadloze verbindingen te beveiligen tegen sniffing aanvallen. Je hebt waarschijnlijk ook gehoord dat het niet erg veilig is. In het eerste deel van deze 2 delige serie zal ik de innerlijke werking van WEP uitleggen en volgende maand volgen met waarom het onzeker is.
zoals u waarschijnlijk al weet, wordt Wired Equivalent Privacy (WEP) gebruikt door bedrijven om hun draadloze verbindingen te beveiligen tegen snuifaanvallen. Je hebt waarschijnlijk ook gehoord dat het niet erg veilig is. In het eerste deel van deze 2 delige serie zal ik de innerlijke werking van WEP uitleggen en volgende maand volgen met waarom het onzeker is.
heb ik WEP nodig?
een authentieke gebruiker, Bob gebruikt zijn laptop om zijn Gmail-account elke dag te controleren. Hij heeft een draadloze kaart in zijn laptop die automatisch detecteert zijn ISP ‘ s wireless access point (WAP) aan de overkant van de straat. Zodra hij verbonden is met de WAP kan hij zijn e-mail checken. Alice is een stiekeme gebruiker die de ISP niet wil betalen voor toegang tot het Internet. Ze weet echter dat de ISP aan de overkant van de straat een toegangspunt heeft waar iedereen verbinding mee kan maken en toegang kan krijgen tot het Internet. Ze sluit haar laptop aan en downloadt binnenkort muziek van het Internet. WEP is ontworpen om ervoor te zorgen dat gebruikers zich authenticeren voordat ze resources gebruiken, om Alice te blokkeren en Bob toe te staan. Eens kijken hoe het dit doet.
Hoe werkt WEP
WEP gebruikt het RC4-algoritme om de informatiepakketten te versleutelen die worden verzonden vanaf het toegangspunt of de draadloze netwerkkaart. Zodra het access point de pakketten ontvangt die door de netwerkkaart van de gebruiker zijn verzonden, ontsleutelt het deze.
elke byte van data zal versleuteld worden met een andere pakketsleutel. Dit zorgt ervoor dat als een hacker erin slaagt om deze pakketsleutel te kraken de enige informatie die wordt gelekt is dat wat is opgenomen in dat pakket.
de werkelijke encryptie logica in RC4 is zeer eenvoudig. De platte tekst is XOR-ed met een oneindig lange toetsstroom. De beveiliging van RC4 komt van de geheimhouding van de pakketsleutel die is afgeleid van de keystream.
dus wat is een pakketsleutel?
de pakketsleutel wordt gevormd door een vooraf gedeeld wachtwoord, een statusarray en een initialisatievector (IV) te combineren. Laten we eerst elk van deze termen begrijpen:
Pre-shared wachtwoord: hetzelfde pre-shared wachtwoord wordt gebruikt door alle gebruikers voor elk pakket dat wordt verzonden.
State Array: het is een reeks getallen die worden versleuteld en vervolgens door RC4 worden gebruikt om de key stream te construeren.
initialisatievector (IV): De IV is een willekeurig getal van 3 bytes dat door de computer wordt gegenereerd. Het is voorbereid of toegevoegd aan de codeertekst en verzonden naar de ontvanger die het infuus verwijdert voor het ontcijferen van de codeertekst.
het RC4-algoritme bestaat uit 2 hoofdonderdelen:
het algoritme voor Sleutelplanning: het KSA-proces omvat het maken van een scrambled state array . Deze toestandsarray zal nu gebruikt worden als input in de tweede fase, genaamd de prga fase.
het algoritme voor Pseudo-willekeurige generatie: de toestandsarray van het KSA-proces wordt hier gebruikt om een definitieve sleutelstroom te genereren. Elke byte van de gegenereerde key stream wordt dan Xor ‘ ed met de bijbehorende platte tekst byte om de gewenste cipher tekst te produceren.
Key Scheduling Algorithm
de IV wordt berekend met behulp van een statusarray en eigenschappen van het vooraf gedeelde wachtwoord. Dit wordt bereikt door het creëren van een array van waarden gelijk aan de index die u wilt gebruiken in het algoritme. De Index voor WEP is standaard 256. De componenten die nodig zijn voor de KSA zijn de waarden van de variabelen i en j, de indexwaarde, het vooraf gedeelde wachtwoord en de lengte ervan. Het algoritme dat deze waarden gebruikt om een laatste toetsstroom te genereren wordt hieronder geschetst.
initialisatie:
For i=0 ... index-1
S=i
J=0
klauteren:
For i=0 ... index-1
J = j + state + K
Swap(state , state)
een lus loopt eerst van 0 naar index-1 om de status array te initialiseren met waarden van 0 naar index. Voor eg. Als index = 4 de status array zal worden gevuld met waarden van 0 tot 3. Daarom zullen de matrixwaarden als volgt zijn:
s=0 s=1 s=2 s=3
de waarde van j is ingesteld op 0. Een andere lus wordt dan gestart. Voor elke keer door de lus wordt de waarde van j berekend en wordt de array-waarde die in toestand wordt gehouden, geruild voor de waarde die in toestand wordt gehouden .
Pseudo Random Generation Algorithm (Prga)
een pseudorandom number generator (PRNG) is een algoritme dat een willekeurige reeks getallen genereert. De PRGA is verantwoordelijk voor het maken van de streaming waarden die worden gebruikt om de platte tekst te versleutelen, die is gebaseerd op de status array, de uitvoer van de KSA . De methode die de PRGA volgt, wordt hieronder beschreven.
initialisatie:
I=0 j=0 index=4
Generatiealgoritme
I=(i+1) mod index
J=(j+state) mod index
Swap(state, state)
Z=state + statemod index]
de streaming-waarde wordt gecreëerd door voor elke byte van het pakket door het algoritme te lussen. De variabelen i en j worden geïnitialiseerd naar 0. Voor elk pakket wordt de waarde van j berekend en wordt de array-waarde die in Status wordt gehouden, geruild voor de waarde die in Status wordt gehouden . De uitvoer z wordt dan berekend voor elk pakket. Aan het einde van het proces hebben we een PRGA stream.
de PRGA-stream wordt dan Xor ‘ ed met de platte tekst om versleutelde tekst te genereren die naar de andere partij wordt verzonden.
een voorbeeld
laten we de bovenstaande begrippen in de vorm van een voorbeeld illustreren. De te versleutelen platte tekst is TEST. Het wachtwoord dat hier zal worden gebruikt is 6258. De beginwaarden van onze variabele zijn als volgt:
i=0 j=0 password=6258 pass length=4 index=4
volgens het algoritme krijgen we:
Stap-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
salaristrap-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
salaristrap 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
salaristrap 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
zodra de KSA state array klaar is, wordt de PRGA procedure geïnitialiseerd. De procedure is als volgt::
Initially i=0 j=0
K=6 K=2 K=5 K=8
eerste lus:
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
tweede lus:
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
derde lus:
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
vierde lus:
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
de uitgangen z1-z4 aan het einde van elke lus moeten worden Xor ‘ ed met de ASCII van elk teken van platte tekst die in ons geval wordt getest. Vandaar dat de cipher tekst voor de platte tekst TEST als volgt zal zijn:
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
het woord TEST wanneer versleuteld met WEP is UDRU.
dit artikel was slechts een inleiding tot WEP en de exacte procedure waarin encryptie plaatsvindt in WEP. In het volgende deel zullen we ingaan op de vraag die in jullie hoofd staat: “Waarom is WEP onzeker? Aan welke risico ‘ s ben ik blootgesteld als ik WEP gebruik?”