Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Vraag betreft WEP

Pagina: 1
Acties:

  • naarden 4ever
  • Registratie: Juni 2010
  • Laatst online: 28-11 20:40
Beste mensen,

Even een klein ander vraagje dan dat je zou verwachten op Tweakers, maar ik kom er even niet uit. :)

Ik ben op dit moment bezig met mijn profielwerkstuk over de beveiliging van draadloze netwerken bij consumentenrouters. Ik probeer nu uit te vinden waarom WEP zo vreselijk makkelijk te kraken is.

We gaan uit van een 64-bit WEP encryptie. Als ik het dan goed heb begrepen, is de keystream verdeeld in de IV en de 40-bit lange sleutel die de gebruiker zelf in kan stellen. Vervolgens worden 64 bits plain text met deze keystream geXORd, wat de versleutelde informatie geeft. Correct me if I'm wrong.

Ik snap dat de 24-bit IV een vrij grote kans heeft om twee keer gebruikt te worden (er zijn 16,7 miljoen mogelijkheden, dat kan binnen een paar uur opgebruikt zijn). Maar waarom is dat dan zo'n groot probleem? Waarom moet die IV altijd uniek zijn en wat maakt een dubbele IV nou een probleem?

Bovendien, begrijp ik dat je de ingestelde code altijd uit de laatste 40 bits van de keystream kunt halen. Dus als je twee keer eenzelfde stukje plain text verstuurd, en dat vang je op, krijg je tweemaal dezelfde laatste 40 bits, en dat kan een simpel berichtje zijn om de verbinding in stand te houden tussen de AP en de enrollee.

Ik snap dus hoe de WEP encryptie in elkaar zit, maar ik snap niet hoe een dubbele IV direct leid tot een zwakke plek waarmee de sleutel gekraakt kan worden. Kan iemand mij een uitleg geven waarom dit wel zo is, of waar ik met mijn interpretatie fout zit?

  • sariel
  • Registratie: Mei 2004
  • Laatst online: 22-05-2024
Even gegoogled op "why is wep weak". eerste hit:

http://www.networkworld.com/research/2002/0909wepprimer.html

En praktisch: met een usb wifi adapter en cain&able op windows heb je wep in ongeveer 15 minuten gekraakt (praktijkervaring) waarna je volledige toegang hebt tot het netwerk. Gewoon niet doen, WPA(2) wordt bijna altijd ondersteund (behalve door de meest oude brakke spullen) en is net zo makkelijk neer te zetten.

[ Voor 6% gewijzigd door sariel op 16-10-2013 16:35 ]

Copy.com


  • naarden 4ever
  • Registratie: Juni 2010
  • Laatst online: 28-11 20:40
sariel schreef op woensdag 16 oktober 2013 @ 16:35:
Even gegoogled op "why is wep weak". eerste hit:

http://www.networkworld.com/research/2002/0909wepprimer.html

En praktisch: met een usb wifi adapter en cain&able op windows heb je wep in ongeveer 15 minuten gekraakt (praktijkervaring) waarna je volledige toegang hebt tot het netwerk. Gewoon niet doen, WPA(2) wordt bijna altijd ondersteund (behalve door de meest oude brakke spullen) en is net zo makkelijk neer te zetten.
Tja, maar ik vraag waarom WEP zwak is voor een werkstuk, dat het niet veilig is weet ik ook wel...

  • stfn345
  • Registratie: Januari 2000
  • Laatst online: 13:50
is dat nou net niet het doel om dit uit te zoeken? volgens mij moet je eens in de hoek van RC4 zoeken.
http://www.dartmouth.edu/~madory/RC4/wepexp.txt

[ Voor 19% gewijzigd door stfn345 op 16-10-2013 17:21 ]


  • naarden 4ever
  • Registratie: Juni 2010
  • Laatst online: 28-11 20:40
Nee, het is het profielwerkstuk en we hebben ons eigen onderwerp gekozen, en er zijn dus geen doelen gesteld door de school zelf.

Wat ik dus niet snap, is het feit dat twee verschillende berichten met dezelfde IV (wat dus het kwetsbare punt is) een compleet verschillende 24 bits opleveren. Voorbeeld:

Bericht 1:
010100101001 (10 bits plain text)
100101110011 (10 bits IV)
------------------------------------------------- XOR
110001011010 (10 bits versleutelde code)

Bericht 2:
101110001011 (10 bits plain text)
100101110011 (10 bits IV)
------------------------------------------------- XOR
001011111000 (10 bits versleutelde code)

De twee versleutelde stukjes code zijn nog steeds verschillend, ondanks dat de IV hetzelfde is. Hoe kom je dus tot de conclusie dat dezelfde IV gebruikt is, en hoe leid je de IV er uit af? Je kunt alleen het onderste uit beide vergelijkingen opvangen, dus hoe kun je weten dat dezelfde IV gebruikt is voor beide stukjes code?

Daarnaast ben ik ook nog op zoek naar de reden waarom je moet weten dat de IV hetzelfde is, als de laatste 40 bits van de keystream/RC4 altijd een XOR is van de plain text van een pakketje, en de sleutel die je dus invoert in het configuratiescherm van je router. Ik zou bijvoorbeeld kunnen zeggen dat je twee pakketjes afluistert die bedoeld zijn om de verbinding tussen de AP en de enrollee in stand te houden (of zoiets, pakketjes die vaker verstuurd worden) waarin er genoeg stukjes bijzitten die telkens exact dezelfde laatste 40 bits hebben. Waarom moet je dan nog gebruik maken van de kwetsbaarheid van een dubbele IV?

  • Thralas
  • Registratie: December 2002
  • Laatst online: 15:20
razorhead schreef op woensdag 16 oktober 2013 @ 17:21:
is dat nou net niet het doel om dit uit te zoeken? volgens mij moet je eens in de hoek van RC4 zoeken.
http://www.dartmouth.edu/~madory/RC4/wepexp.txt
offtopic:
Natuurlijk is het niet de bedoeling dat je het profielwerkstuk voor TS schrijft, maar schermen met een willekeurig artikel dat allesbehalve de state-of-the-art van WEP security dekt, terwijl TS wel degelijk enkele concrete vragen stelt is wel een beetje flauw - al bedoel je het ongetwijfeld goed
naarden 4ever schreef op woensdag 16 oktober 2013 @ 16:31:
Even een klein ander vraagje dan dat je zou verwachten op Tweakers, maar ik kom er even niet uit. :)
Aha, echte security ipv. help-ik-heb-een-virus. Hulde!
We gaan uit van een 64-bit WEP encryptie. Als ik het dan goed heb begrepen, is de keystream verdeeld in de IV en de 40-bit lange sleutel die de gebruiker zelf in kan stellen.
Nee. Je verwart key en keystream. In het algemeen gebruikt een stream cipher de key om de cipher state te initialiseren. Vervolgens kun je de cipher gebruiken om een (pseudorandom) keystream te genereren.

WEP(-64) gebruikt RC4 als onderliggende cipher, met een unieke (64-bits) per packet key K, bestaande uit de concatenatie van een random IV (24 bits) en de WEP root key (40 bits):

K = IV || Rk

Deze key wordt gebruikt om de RC4 state te initialiseren (met behulp van de key scheduling algorithm, KSA). Vervolgens wordt de pseudo random generator (PRG) gebruikt om een keystream te genereren met dezelfde lengte als de packet plaintext. De bitwise XOR van plaintext en keystream levert vervolgens de ciphertext op, zoals je zelf ook al stelde.
Ik snap dat de 24-bit IV een vrij grote kans heeft om twee keer gebruikt te worden (er zijn 16,7 miljoen mogelijkheden, dat kan binnen een paar uur opgebruikt zijn)
Ten eerste gaat het niet om 'opgebruiken' - daarvan zou alleen sprake zijn als de IV een simpele 224-bits counter zou zijn. De IV wordt echter willekeurig gekozen, maar dat maakt de kans op reuse van een willekeurige IV enkel groter - om voor het gemak Wikipedia even te quoten, na slechts 5000 packets heb je 50% kans om twee packets aan te treffen met dezelfde IV. Dit lijkt verre van intuitief, de achterliggende theorie is dan ook de birthday paradox, zie verder verjaardagsparadox en birthday attack.
. Maar waarom is dat dan zo'n groot probleem? Waarom moet die IV altijd uniek zijn en wat maakt een dubbele IV nou een probleem?
Uit de definitie van de RC4 key K welke ik eerder gaf valt af te leiden dat een repeated IV tot gevolg heeft dat twee packets met dezelfde IV worden versleuteld door een RC4-keystream op basis van dezelfde key K, en dus dezelfde keystream.

Een van de basisvoorwaarden voor de veiligheid (of veilig gebruik) van een stream cipher is dat je nooit dezelfde keystream hergebruikt. Twee packets met gelijke IV zijn versleuteld onder dezelfde keystream, en door de ciphertexts met elkaar te XOR'en valt de keystream weg. Met enige kennis over de inhoud van beide packets is het vervolgens mogelijk om ze beide te decrypten. Zie reused key attack voor een uitgebreidere uitleg.

Mooi recent voorbeeld van de gevolgen van keystream reuse, de cryptoblunder van Whatsapp - keystream reuse doordat er 2 onafhankelijke RC4 instances worden gebruikt met dezelfde key(stream) maakt het vatbaar voor een reused key attack.

That said, verder naar je hoofdvraag:
Ik probeer nu uit te vinden waarom WEP zo vreselijk makkelijk te kraken is.
Belangrijk detail: dat is niet zo zeer IV reuse; de state-of-the-art maakt het immers mogelijk om de volledige key te recoveren. Hierbij maakt men (grotendeels) gebruik van zwakheden in RC4 - de meest relevante attacks zijn die van Fluhrer et al. (2001) [1] en Tews et al. (2007) [2].

Academische papers lezen is niet echt profielwerkstukmateriaal; als je het echt wilt behandelen kun je misschien de abstracts (samenvatting) globaal proberen te verwoorden? De abstract van [2] is vrij helder, die van [1] iets minder. In beide gevallen maakt men gebruik van een statistische afhankelijkheid tussen de RC4 key en de waarde van de eerste paar bytes van de keystream.

Waarschijnlijk was je het al van plan, maar zet vooral even zelf een WEP-netwerk op en kraak vervolgens je eigen key - als het goed is heb je dan al genoeg te experimenteren (o.a. packet injection om het proces wat te versnellen).

Volgens mij heb ik met bovenstaande correcties inmiddels wel alle vragen beantwoord of overbodig gemaakt, dus op je laatste post ga ik verder niet in. Mocht er alsnog iets onduidelijk zijn: shoot.

[1] S. Fluhrer, I. Mantin and A. Shamir, Weaknesses in the Key Scheduling Algorithm of RC4, 2001
[2] E. Tews, R.P. Weinmann and A. Pyshkin, Breaking 104 bit WEP in less than 60 seconds, 2007

  • naarden 4ever
  • Registratie: Juni 2010
  • Laatst online: 28-11 20:40
Thralas, als eerste: heel erg bedankt voor de moeite die je voor mij hebt genomen. Hier ben ik heel erg blij mee!

Toch snap ik het nog niet volledig, vooral door de nieuwe terminologie die je in je verhaal gebruikt die ik nog nooit eerder gelezen hebt, of wat ik sowieso niet snapte en waarmee je mij misschien kunt helpen. :>

Om te beginnen, heb je het in je eerste stukje uitleg over het volgende:
In het algemeen gebruikt een stream cipher de key om de cipher state te initialiseren.
Ik dacht het principe van een WEP sleutel beter te hebben begrepen met het plaatje van de engelse Wikipedia, dus die haal ik er meteen even bij:

Afbeeldingslocatie: http://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Wep-crypt-alt.svg/305px-Wep-crypt-alt.svg.png

Waar ik vastloop, is de verschillende termen voor (wat mij uit het plaatje opmakend) dezelfde stukken 1-en en 0-en zijn. Zo zie ik dat de IV met de key / sleutel wordt geconcatenated, wat leidt tot een 64-bit lange RC4, right? Wat is dan precies het verschil tussen de RC4 en de keystream, en wat betekenen de pijltjes precies? Ik dacht dat de pijltjes verder niks betekende en dat het gewoon een verwijzing is dat de IV + key (seed) vervolgens een RC4 wordt genoemd. Blijkbaar ben ik daar de mist in gegaan.

En dan het woord 'cipher stream', dat is de cipher text in de illustratie of is dat iets volledig anders? En wat bedoel je precies met 'initialiseren'?
De stream cipher is de RC4. Got it. Was bij TKIP aan het lezen en toen viel het kwartje opeens. :)
Deze key wordt gebruikt om de RC4 state te initialiseren (met behulp van de key scheduling algorithm, KSA). Vervolgens wordt de pseudo random generator (PRG) gebruikt om een keystream te genereren met dezelfde lengte als de packet plaintext.
Ik dacht te hebben begrepen dat de IV een pseudowillekeurige combinatie was van 24 bits lang, met dan erachteraan meteen de key. Maar uit jouw verhaal maak ik op dat de PRG pas nadat de RC4 wordt gemaakt wordt toegepast om een 64-bit lange keystream te maken. Waar is de RC4 dan in de keystream gebleven?
Een van de basisvoorwaarden voor de veiligheid (of veilig gebruik) van een stream cipher is dat je nooit dezelfde keystream hergebruikt. Twee packets met gelijke IV zijn versleuteld onder dezelfde keystream, en door de ciphertexts met elkaar te XOR'en valt de keystream weg.
Begrijp ik, maar als je de twee ciphertexts XORd krijg je twee door elkaar geXORde Plain texts. Voorwaarde moet dan wel zijn dat beide plain texts exact gelijk zijn, correct?

Het grootste probleem is dus (denk ik) dat ik bepaalde termen niet snap, omdat ik niet weet waar die in het vormen van de WEP-encrypted cipher text worden gebruikt. Als je dat zou willen toelichten, ben ik je zeer dankbaar. _/-\o_

Edit2: Nog een klein vraagje wat ik toe wil voegen; Hoe weet Reaver bijvoorbeeld dat een specifieke IV tweemaal gebruikt is? Hoe detecteer je dat?

[ Voor 4% gewijzigd door naarden 4ever op 17-10-2013 14:06 ]


  • Thralas
  • Registratie: December 2002
  • Laatst online: 15:20
naarden 4ever schreef op donderdag 17 oktober 2013 @ 11:30:
Waar ik vastloop, is de verschillende termen voor (wat mij uit het plaatje opmakend) dezelfde stukken 1-en en 0-en zijn. Zo zie ik dat de IV met de key / sleutel wordt geconcatenated, wat leidt tot een 64-bit lange RC4, right?
Een 64-bits key, welke gebruikt wordt om RC4 (het streamcipheralgoritme) te initialiseren. Het plaatje is verwarrend door het gebruik van seed, eigenlijk is dit gewoon de RC4-key. Verderop leg ik nogmaals uit hoe de RC4-key is opgebouwd.
Wat is dan precies het verschil tussen de RC4 en de keystream, en wat betekenen de pijltjes precies? Ik dacht dat de pijltjes verder niks betekende en dat het gewoon een verwijzing is dat de IV + key (seed) vervolgens een RC4 wordt genoemd. Blijkbaar ben ik daar de mist in gegaan.
RC4 is het algoritme. Elke streamcipher heeft als input een key, en produceert vervolgens een pseudorandom bitstream (keystream) waarmee de plaintext versleuteld wordt (dmv. een xor-operatie).
En wat bedoel je precies met 'initialiseren'?
Om er even een (vereenvoudigde) analogie bij te pakken: beschouw RC4 als een lottomachine met 256 balletjes, genummerd van 0 - 255. De initialisatie (KSA) ordent alle balletjes in de machine op basis van de key. Iedere keer dat je de cipher (de lottomachine) initialiseert met dezelfde key (dmv. de KSA) ziet de ordening van de balletjes in de lottomachine er hetzelfde uit.

Vervolgens druk je op de knop, en de lottomachine draait precies 1x rond en er rolt een balletje uit (dit is de PRG). Het balletje stop je terug in de machine en je drukt net zo vaak op de knop tot je genoeg getallen hebt. Alle getallen op een rij vormen de keystream.

We gaan hierbij uit van de perfect deterministische lottomachine; bij dezelfde beginstaat komt er altijd dezelfde serie balletjes uitrollen.
Ik dacht te hebben begrepen dat de IV een pseudowillekeurige combinatie was van 24 bits lang, met dan erachteraan meteen de key.
De concatenatie van IV en WEP key vormen samen de RC4 key (seed in het Wikipedia-plaatje). In het algemeen doel ik met key op die laatste, terwijl het dus eigenlijk een samenstelling van 2 componenten is.

KeyRC4 = IV || KeyWEP
Maar uit jouw verhaal maak ik op dat de PRG pas nadat de RC4 wordt gemaakt wordt toegepast om een 64-bit lange keystream te maken. Waar is de RC4 dan in de keystream gebleven?
KSA en PRG zijn beide onderdeel van het RC4-algoritme. RC4 beschrijft hoe de keystream wordt gegenereerd op basis van de key.
Begrijp ik, maar als je de twee ciphertexts XORd krijg je twee door elkaar geXORde Plain texts.
Twee ciphertexts versleuteld met dezelfde keystream. Gegeven cipher- en plaintexts A, B versleuteld met dezelfde keystream Ks:

CA = PA ^ Ks
CB = PB ^ Ks

Dan geldt:

CA ^
CB = PA ^ Ks ^ PB ^ Ks

Dit mag je herschrijven als:

CA ^ CB = PA ^ PB ^ Ks ^ Ks

(Net als bij vermenigvuldigen en optellen van getallen maakt de volgorde waarin je dat doet niets uit, met een moeilijk woord: de xor-operatie heeft de commutatieve eigenschap)

De (dubbele) keystream valt weg omdat geldt: Ks ^ Ks = 0 (xor van een element met zichzelf levert 0 op)

Dus dan heb je:

CA ^ CB = PA ^ PB
Voorwaarde moet dan wel zijn dat beide plain texts exact gelijk zijn, correct?
Nee. Als in bovenstaand voorbeeld zou gelden: PA = PB dan heb je ook hier een xor van een element met zichzelf, en valt ook dat weg. Dan krijg je:

CA ^ CB = 0

Als de plaintexts daarentegen verschillend zijn, is ook de xor van de ciphertexts niet 0. Met kennis van de plaintexts (bijvoorbeeld: beide plaintexts zijn een Nederlandse zin) kun je met behulp van een statistisch model beide plaintexts (deels) recoveren (that's complicated, maar niet ondenkbaar).
Edit2: Nog een klein vraagje wat ik toe wil voegen; Hoe weet Reaver bijvoorbeeld dat een specifieke IV tweemaal gebruikt is? Hoe detecteer je dat?
IV zit in de WEP header van elke packet. Simple as that. Reaver is overigens een implementatie van een attack op WPS (onderdeel van WPA2) - dus niet direct gerelateerd aan WEP.
Pagina: 1