Strumenti Utente

Strumenti Sito


it:chopchoptheory

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

it:chopchoptheory [2009/08/18 13:04] (versione attuale)
drosophila creata
Linea 1: Linea 1:
 +====== Teoria dell'​attacco Chopchop ======
 +
 +Un frame WEP 802.11 è composto da molti campi: header, dati (in inglese data), ICV, ecc. Ora prendere in considerazione solo il campo data e ICV, supponendo che l'​[[http://​en.wikipedia.org/​wiki/​Initialisation_vector|IV]] sia costante.
 +
 +L'​algoritmo [[http://​en.wikipedia.org/​wiki/​ICV_-_Integrity_Check_Value|ICV]] è un'​implementazione del [[http://​en.wikipedia.org/​wiki/​Cyclic_redundancy_check|CRC32]]. Viene calcolato in modo incrementale per ogni byte di dati del frame. Di seguito gli step in C: 
 +   crc = crc_tbl[(crc ^ data[i]) & 0xFF] ^ ( crc >> 8 );
 +L'ICV viene memorizzato in little-endian ed il frame viene xorato con un keystream RC4.
 +Da ora in poi, l'​operazione di XOR sarà rappresentata con il simbolo `+'.
 +
 +Frame 1:
 +  _____ DATA ___ ____ICV ___
 +  D0 D1 D2 D3 D4 I3 I2 I1 I0
 +   ​+ ​ +  +  +  +  +  +  +  +
 +  K0 K1 K2 K3 K4 K5 K6 K7 K8
 +   ​= ​ =  =  =  =  =  =  =  =
 +  R0 R1 R2 R3 R4 R5 R6 R7 R8
 +
 +Dove D è il plaintext (i byte di dati), l è l'ICV, K è il keystream e R è il risultato. Aggiungendo un byte di dati (D5) si ottiene un secondo frame, il Frame 2:
 +  ​
 +  _____ DATA ______ ____ICV ___
 +  D0 D1 D2 D3 D4 D5 J3 J2 J1 J0
 +   ​+ ​ +  +  +  +  +  +  +  +  +
 +  K0 K1 K2 K3 K4 K5 K6 K7 K8 K9
 +   ​= ​ =  =  =  =  =  =  =  =  =
 +  S0 S1 S2 S3 S4 S5 S6 S7 S8 S9
 +
 +Dove J è l'ICV e S è il risultato.
 +
 +E' possibile risalire al Frame 1 dal Frame 2 ipotizzando il valore della somma I3+D5, che sarà indicato con X (uno dei 256 cambiamenti). X=I3+D5
 +  * i byte da D0 a D4 rimangono uguali.
 +  * R5 = I3 + K5 = I3 + (D5+D5) + K5 = (I3+D5) + (D5+K5) = X + S5.
 +  * i byte da R6 a R8 vengono calcolati reversando uno step del CRC basato sul valore di X. C'è una corrispondenza tra I2-I0 e J3-J1 perché il CRC li shifta indietro ma D5 li "​spinge"​ nuovamente in avanti. Essi non devono necessariamente mantenere gli stessi valori, ma la loro differenza dipende solo da X, che è stato ipotizzato.
 +  * J0 dipende solo da X. K9 = S9 + J0. Sono stati dunque ipotizzati l'​ultimo byte del messaggio e l'​ultimo byte del keystream.
 +
 +Il valore di X sarà indovinato provando e sbagliando. L'​access point scarterà i frame invalidi, processo che in qualche modo aiuta ad indovinare il valore di X.
 +
 +In questo modo viene trovato un frame valido più piccolo di 1 byte rispetto all'​originale,​ e di conseguenza viene indovinato un byte del keystream. Questo processo può essere utilizzato per ottenere l'​intero keystream.
 +
 +Per una descrizione più dettagliata vedere:
 +
 +  * [[http://​www.netstumbler.org/​showthread.php?​t=12489|Chopchop Attack]] in the original Netstumbler thread.
 +  * [[http://​www.informit.com/​guides/​printerfriendly.asp?​g=security&​seqNum=196|Byte-Sized Decryption of WEP with Chopchop, Part 1]] and [[http://​www.informit.com/​guides/​printerfriendly.asp?​g=security&​seqNum=197|Byte-Sized Decryption of WEP with Chopchop, Part 2]]
 +
  
it/chopchoptheory.txt · Ultima modifica: 2009/08/18 13:04 da drosophila