Da quanto ho capito, l'attacco di ChopChop contro WEP, che ha lo scopo di decrittografare un pacchetto senza conoscere la chiave WEP, equivale a questo:
In primo luogo, l'attaccante prende un messaggio di testo cifrato dal flusso RF, indirizzato all'AP di destinazione. Successivamente, "abbassa" l'ultimo byte del messaggio, immediatamente prima dell'ICV (che è anche crittografato nel pacchetto) e lo sostituisce con un valore casuale compreso nell'intervallo da 01 a FA. Quindi, l'utente malintenzionato trova questa posizione di byte modificata nell'ICV e calcola che è corretta (poiché è CRC-32 lineare), pertanto il pacchetto modificato avrà il checksum ICV corretto quando viene controllato dall'AP durante il processo di decrittografia.
I pacchetti ora vengono iniettati nell'AP. L'attaccante ascolta il traffico broadcast per vedere se il pacchetto (richiesta ARP, nella maggior parte dei casi) viene nuovamente ritrasmesso.
Non riesco a capire, se il checksum è sempre corretto (l'attaccante lo calcola per corrispondere al mutato con il byte di testo in chiaro nel testo cifrato subito prima dell'iniezione di pacchetti nell'AP), come l'AP sa che il byte modificato è in realtà sbagliato e non corrisponde al testo in chiaro?
L'AP decodificherà il pacchetto (l'ultimo byte in chiaro verrà ignorato dall'algoritmo di decodifica, è già in chiaro), quindi calcolerà il checksum del testo in chiaro e vedrà se corrisponde al valore ICV decrittografato. E sarà sempre uguale, perché l'attaccante calcola appena prima dell'iniezione del pacchetto nell'AP. Quindi, l'AP non rifiuterà mai il pacchetto?
In che modo il nostro AP determina che il pacchetto con il byte capovolto è corrotto?