SlideShare una empresa de Scribd logo
1 de 29
Algoritmo RC4


●   Funcionamento do RC4
    –   Vetor State (S)
         ●   256 posições
               0   1       2       3       4       5       6       7   8   9




         ●   Permutação de acordo com a chave (K)
                       K       x       x       x       x       x




                                                                               1
Algoritmo RC4


index1 = 0;
index2 = 0;
for(counter = 0; counter < 256; counter++)
{
    index2 = (key[index1] + state[counter] + index2) % 256;

    swap_byte(&state[counter], &state[index2]);
    index1 = (index1 + 1) % key_data_len;

}



                                                              2
Algoritmo RC4

●   Após a permuta é realizada a criação
    da chave de qualquer tamanho pelo
    PRNG
    inicializa-se x = y = 0


    x = (x + 1) % 256;
    y = (state[x] + y) % 256;
    swap_byte(&state[x], &state[y]);
    xorIndex = (state[x] + state[y]) % 256;
    GeneratedByte = state[xorIndex];



                                              3
Algoritmo RC4


●   Verificação do funcionamento:
●   Software wep.php
●   apresenta a chave, o vetor State e os Bytes utilizandos para
    realizar a cifragem da mensagem
●   ex:


           php wep.php normal 10:11:12:13 “teste”




                                                               4
Situação Atual



●   O WEP apresenta chaves fracas
●   artigo:
    “Weaknesses in the Key Scheduling
          Algorithm of RC4” de
       Fluhrer / Mantin / Shamir

●   Programas WEPCrack e AirSnort


                                        5
Situação Atual


index1 = 0;
index2 = 0;


for(counter = 0; counter < 256; counter++)
{
    index2 = (key[index1] + state[counter] + index2) % 256;
    swap_byte(&state[counter], &state[index2]);
    index1 = (index1 + 1) % key_data_len;

}




                                                              6
Situação Atual

●   Existem dois elementos que alteram os valores de S:
    –   Index2 (varia de acordo com a chave)
    –   Counter (contador linear)
●   Existe uma probabilidade de que um valor seja
    alterado tanto pelo Index, quanto pelo Counter




                                                          7
Situação Atual



●   Ou seja existe a probabilidade de aprox. 37% de que um valor
    seja alterado apenas por Counter
●   Para uma chave com K bytes, sendo E < K existe uma
    probabilidade de que E dependa apenas dos elementos 0..E da
    chave no vetor S


●   Ou seja, em 37% dos      casos   o   algoritmo   passa   a   ser
    equivalente a.......




                                                                   8
Situação Atual
for(counter = 0; counter < 256; counter++)
 {
    index2 = (key[index1] + state[counter] + index2) % 256;
     swap_byte(&state[counter], &state[index2]);
     index1 = (index1 + 1) % key_data_len;
}



for(counter = 0; counter < 256; counter++)
{
     index2 = (key[index1] + counter + index2) % 256;
     state[counter] = index2;
     index1 = (index1 + 1) % key_data_len;
}

                                                              9
Situação Atual

●   A probabilidade     desta afirmação estar correta
    para os elementos de State




                                                        10
Situação Atual



●   prova:
●   executar os dois algoritmos e comparar o número de colisões
    para cada elemento de State




             php wep.php prove1 8 500 norm




                                                             11
Situação Atual


●   Desta forma:


           State[E] = ΣK(E) + E(E + 1)/2

●   Onde (E) representa o somatório dos bytes de 0..E
    (inclusive) da chave K


    –   State[1] = K[0] + K[1] + 1(1 + 1)/2
    –   State[2] = K[0] + K[1] + K[2] + 2(2 + 1)/2




                                                         12
Situação Atual



●   prova:
●   verificar   se   o   valor   de   State[E]   pode   ser   obtido   pela
    fórmula




     php wep.php prove1 8 500 norm state




                                                                         13
Situação Atual



●   Exemplo de chave fraca – permite a descoberta do
    segredo a partir do vetor de permutação devido a
    relação entre chaves prévias e vetor State


    –   Exemplo de previsão simples no caso em que S[1] = 1
         ●   K[0] + K[1] = 0 (chave fraca), implicando:
         ●   S[2] = K[2] + 2 (2+1) / 2 = K[2] + 3




                                                              14
Situação Atual



●   prova:
●   gerar as chaves com K[0] = 0 e K[1] = 0




     php wep.php prove1 8 500 weak state




                                              15
Situação Atual

●   Após a permuta é realizada a criação
    da chave de qualquer tamanho pelo
    PRNG
    inicializa-se x = y = 0
    x = (x + 1) % 256;
    y = (state[x] + y) % 256;
    swap_byte(&state[x], &state[y]);
    xorIndex = (state[x] + state[y]) % 256;
    GeneratedByte = state[xorIndex];




                                              16
Situação Atual


●   Considerando uma situação onde State[1]=1
     –   ou seja, K[0]=K[1]=0




    x = (0 + 1) % 256;                   /* x == 1 */
    y = (state[1] + 0) % 256;            /* y == 1 */
    swap_byte(&state[1], &state[1]);     /* no effect */
    xorIndex = (state[1] + state[1]);    /* xorIndex = 2 */
    GeneratedByte = state[2]




                                                              17
Situação Atual

●   Sempre que State[1] = 1, a alteração realizada pelo PRNG
    torna-se previsível
    –   É realizado um XOR entre o texto claro e State[2]
    –   Ao descobrir State[2], o atacante pode sugerir um K[2]
        provável
                State[2] = K[2] + 3, quando State[1]=1


●   prova:


          php wep.php normal 00:00:12:82
                      “teste”


                                                            18
Situação Atual

●   prova:
●   para encontrar novas chaves com State[1]=1
     –   1000 tentativas (aleatório)
     –   chave com tam=5


             php wep.php find_weak 1000 5




                                                 19
Quebra do WEP


●       No wep, o IV representa os primeiros 3 bytes do segredo
        compartilhado (K) = K[0], K[1], K[2]


●       O LLC adiciona sempre o mesmo cabeçalho (0xaa), primeiro
        byte a ser cifrado (texto claro)


    ●   O atacante pode, então recriar os primeiros passos
        da permuta de State a partir do IV utilizado




                                                              20
Quebra do WEP



●   Resumindo, o atacante possui:
    –   IV = K[0], K[1], K[2]
    –   Precisa descobrir S[3] para descobrir/sugerir K[3],
        pois


           S[3] = K[0] + K[1] + K[2] + K[3] + 3(3 + 1)/2




                                                           21
Quebra do WEP



●    Sempre que S[1] = 0 e S[0] = n o primeiro byte será
     cifrado por S[n], pois:

    x = (x + 1) % 256;                        x = 1
    y = (state[x] + y) % 256;                 y = (state[1]) = 0
    swap_byte(&state[x], &state[y]);          state[1] <-> state [0]
    xorIndex = (state[x] + state[y]) % 256;   xorIndex = (state[1] +
                                              state[0]) = state[1]
    GeneratedByte = state[xorIndex];          GeneratedByte = state[1]




                                                                         22
Quebra do WEP

●   prova:
●   para encontrar novas chaves com State[1]=0
     –   1000 tentativas (aleatório)
     –   chave com tam=5


             php wep.php find_weak 1000 5

●   utiliza-se a chave encontrada no RC4
●   o valor apontado por State[0] será o índice em State para o
    valor utilizado na cifragem


    php wep.php normal 50:233:61:247:240
                 "ola mundo"
                                                             23
Quebra do WEP


●   Se (S[1] + S[S[1]] = 3) então o texto será cifrado
    por S[3]
    –   Descoberta de S[3]
         ●   S[3] = texto_cifrado XOR 0xaa

    –   Inversão do processo de permutação do RC4
         ●   S[3] = K[0] + K[1] + K[2] + K[3] + 3(3 + 1)/2

●   O   mesmo    é   feito    para     K[4],   ...   Ou      seja
    (S[1]+S[S[1]]=4) ... .... ....




                                                               24
Quebra do WEP

●   Exemplo:
php wep.php normal 4:29:74:3:228 “teste”


KEY: 4:29:74:3:228<- objetivo
State:
S[0]=3 S[1]=0 S[2]=110 S[3]=116 S[4]=197 S[5]=38...
RC4 KEY:116:79:90:205:73


O atacante possui os valores iniciais da chave
IV[0]=K[0]=4 IV[1]=K[1]=29 IV[2]=K[2]=74




                                                      25
Quebra do WEP

●   Para obter K[3]:
IV[0]=K[0]=4 IV[1]=K[1]=29 IV[2]=K[2]=74
S[3]=116 (obtém realizando um XOR entre 0xaa e o valor
         do primeiro byte do pacote capturado)


S[3] = 4 + 29 + 74 + K[3] + 3 x (3+1)/2
K[3] =   116 – 4 – 29 – 74 – 6   = 3


                       K[3] = 3




                                                    26
Quebra do WEP


●   Próximo passo:
     –   Encontrar uma situação onde S[1]=0 e S[0]=4 com
         chave fraca, ou seja, que:




    S[4] = K[0] + K[1] + K[2] + K[3] + K[4] + 4(4+1)/2


                            ...




                                                         27
Quebra do WEP


●   Exemplo 2:
php wep.php normal 26:55:29:50:43 “teste”


KEY: 26:55:29:50:43<- objetivo
State:
S[0]=3 S[1]=0 S[2]=10 S[3]=166 S[4]=213 S[5]=218...


RC4 KEY:166:198:122:220:59




                                                      28
Quebra do WEP


●   Para obter K[3]:
IV[0]=K[0]=26 IV[1]=K[1]=55 IV[2]=K[2]=29
S[3]=166 (obtém realizando um XOR entre 0xaa e o valor
         do primeiro byte do pacotecapturado)


K[3] =   166 – 26 – 55 – 29 – 6   = 50


                       K[3] = 50

                       ... ... ...


                                                    29

Más contenido relacionado

Más de Andre Peres

Más de Andre Peres (20)

06 - Redes sem Fios - seguranca
06 - Redes sem Fios -  seguranca06 - Redes sem Fios -  seguranca
06 - Redes sem Fios - seguranca
 
04 - Redes sem Fios -fisico
04 - Redes sem Fios -fisico04 - Redes sem Fios -fisico
04 - Redes sem Fios -fisico
 
05 - Redes sem Fios - enlace
05 - Redes sem Fios - enlace05 - Redes sem Fios - enlace
05 - Redes sem Fios - enlace
 
03- Redes sem Fios - antenas
03- Redes sem Fios -  antenas03- Redes sem Fios -  antenas
03- Redes sem Fios - antenas
 
01 - Redes sem Fios - introducao
01 - Redes sem Fios -  introducao01 - Redes sem Fios -  introducao
01 - Redes sem Fios - introducao
 
02 - Redes sem Fios - microondas
02 - Redes sem Fios - microondas02 - Redes sem Fios - microondas
02 - Redes sem Fios - microondas
 
10 - segurança -snmp
10  - segurança -snmp10  - segurança -snmp
10 - segurança -snmp
 
8 - segurança - anatomia ataques
8 - segurança - anatomia ataques8 - segurança - anatomia ataques
8 - segurança - anatomia ataques
 
9 - segurança - ataques buffer-injection
9 - segurança -  ataques buffer-injection9 - segurança -  ataques buffer-injection
9 - segurança - ataques buffer-injection
 
7 - segurança - dmz vpn
7  - segurança -  dmz vpn7  - segurança -  dmz vpn
7 - segurança - dmz vpn
 
6 - segurança - criptografia
6   - segurança - criptografia6   - segurança - criptografia
6 - segurança - criptografia
 
5 - segurança - firewall
5  - segurança - firewall5  - segurança - firewall
5 - segurança - firewall
 
4 - segurança - mecanismos
4 - segurança - mecanismos4 - segurança - mecanismos
4 - segurança - mecanismos
 
3 - segurança - psi
3 - segurança - psi3 - segurança - psi
3 - segurança - psi
 
2 - segurança - analise de-riscos
2 - segurança - analise de-riscos2 - segurança - analise de-riscos
2 - segurança - analise de-riscos
 
1 - Segurança - introducao
1 - Segurança - introducao1 - Segurança - introducao
1 - Segurança - introducao
 
7 - Redes de Computadores - codificacao sinalizacao-multiplexacao
7 - Redes de Computadores - codificacao sinalizacao-multiplexacao7 - Redes de Computadores - codificacao sinalizacao-multiplexacao
7 - Redes de Computadores - codificacao sinalizacao-multiplexacao
 
6 - Redes de Computadores - meios transmissao
6 - Redes de Computadores - meios transmissao6 - Redes de Computadores - meios transmissao
6 - Redes de Computadores - meios transmissao
 
5 - Redes de Computadores - fr-atm-mpls
5 - Redes de Computadores - fr-atm-mpls 5 - Redes de Computadores - fr-atm-mpls
5 - Redes de Computadores - fr-atm-mpls
 
4 - Redes de Computadores - arp-vlan-equips
4 - Redes de Computadores - arp-vlan-equips4 - Redes de Computadores - arp-vlan-equips
4 - Redes de Computadores - arp-vlan-equips
 

Último

19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
rfmbrandao
 

Último (20)

6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 

Quebra wep

  • 1. Algoritmo RC4 ● Funcionamento do RC4 – Vetor State (S) ● 256 posições 0 1 2 3 4 5 6 7 8 9 ● Permutação de acordo com a chave (K) K x x x x x 1
  • 2. Algoritmo RC4 index1 = 0; index2 = 0; for(counter = 0; counter < 256; counter++) { index2 = (key[index1] + state[counter] + index2) % 256; swap_byte(&state[counter], &state[index2]); index1 = (index1 + 1) % key_data_len; } 2
  • 3. Algoritmo RC4 ● Após a permuta é realizada a criação da chave de qualquer tamanho pelo PRNG inicializa-se x = y = 0 x = (x + 1) % 256; y = (state[x] + y) % 256; swap_byte(&state[x], &state[y]); xorIndex = (state[x] + state[y]) % 256; GeneratedByte = state[xorIndex]; 3
  • 4. Algoritmo RC4 ● Verificação do funcionamento: ● Software wep.php ● apresenta a chave, o vetor State e os Bytes utilizandos para realizar a cifragem da mensagem ● ex: php wep.php normal 10:11:12:13 “teste” 4
  • 5. Situação Atual ● O WEP apresenta chaves fracas ● artigo: “Weaknesses in the Key Scheduling Algorithm of RC4” de Fluhrer / Mantin / Shamir ● Programas WEPCrack e AirSnort 5
  • 6. Situação Atual index1 = 0; index2 = 0; for(counter = 0; counter < 256; counter++) { index2 = (key[index1] + state[counter] + index2) % 256; swap_byte(&state[counter], &state[index2]); index1 = (index1 + 1) % key_data_len; } 6
  • 7. Situação Atual ● Existem dois elementos que alteram os valores de S: – Index2 (varia de acordo com a chave) – Counter (contador linear) ● Existe uma probabilidade de que um valor seja alterado tanto pelo Index, quanto pelo Counter 7
  • 8. Situação Atual ● Ou seja existe a probabilidade de aprox. 37% de que um valor seja alterado apenas por Counter ● Para uma chave com K bytes, sendo E < K existe uma probabilidade de que E dependa apenas dos elementos 0..E da chave no vetor S ● Ou seja, em 37% dos casos o algoritmo passa a ser equivalente a....... 8
  • 9. Situação Atual for(counter = 0; counter < 256; counter++) { index2 = (key[index1] + state[counter] + index2) % 256; swap_byte(&state[counter], &state[index2]); index1 = (index1 + 1) % key_data_len; } for(counter = 0; counter < 256; counter++) { index2 = (key[index1] + counter + index2) % 256; state[counter] = index2; index1 = (index1 + 1) % key_data_len; } 9
  • 10. Situação Atual ● A probabilidade desta afirmação estar correta para os elementos de State 10
  • 11. Situação Atual ● prova: ● executar os dois algoritmos e comparar o número de colisões para cada elemento de State php wep.php prove1 8 500 norm 11
  • 12. Situação Atual ● Desta forma: State[E] = ΣK(E) + E(E + 1)/2 ● Onde (E) representa o somatório dos bytes de 0..E (inclusive) da chave K – State[1] = K[0] + K[1] + 1(1 + 1)/2 – State[2] = K[0] + K[1] + K[2] + 2(2 + 1)/2 12
  • 13. Situação Atual ● prova: ● verificar se o valor de State[E] pode ser obtido pela fórmula php wep.php prove1 8 500 norm state 13
  • 14. Situação Atual ● Exemplo de chave fraca – permite a descoberta do segredo a partir do vetor de permutação devido a relação entre chaves prévias e vetor State – Exemplo de previsão simples no caso em que S[1] = 1 ● K[0] + K[1] = 0 (chave fraca), implicando: ● S[2] = K[2] + 2 (2+1) / 2 = K[2] + 3 14
  • 15. Situação Atual ● prova: ● gerar as chaves com K[0] = 0 e K[1] = 0 php wep.php prove1 8 500 weak state 15
  • 16. Situação Atual ● Após a permuta é realizada a criação da chave de qualquer tamanho pelo PRNG inicializa-se x = y = 0 x = (x + 1) % 256; y = (state[x] + y) % 256; swap_byte(&state[x], &state[y]); xorIndex = (state[x] + state[y]) % 256; GeneratedByte = state[xorIndex]; 16
  • 17. Situação Atual ● Considerando uma situação onde State[1]=1 – ou seja, K[0]=K[1]=0 x = (0 + 1) % 256; /* x == 1 */ y = (state[1] + 0) % 256; /* y == 1 */ swap_byte(&state[1], &state[1]); /* no effect */ xorIndex = (state[1] + state[1]); /* xorIndex = 2 */ GeneratedByte = state[2] 17
  • 18. Situação Atual ● Sempre que State[1] = 1, a alteração realizada pelo PRNG torna-se previsível – É realizado um XOR entre o texto claro e State[2] – Ao descobrir State[2], o atacante pode sugerir um K[2] provável State[2] = K[2] + 3, quando State[1]=1 ● prova: php wep.php normal 00:00:12:82 “teste” 18
  • 19. Situação Atual ● prova: ● para encontrar novas chaves com State[1]=1 – 1000 tentativas (aleatório) – chave com tam=5 php wep.php find_weak 1000 5 19
  • 20. Quebra do WEP ● No wep, o IV representa os primeiros 3 bytes do segredo compartilhado (K) = K[0], K[1], K[2] ● O LLC adiciona sempre o mesmo cabeçalho (0xaa), primeiro byte a ser cifrado (texto claro) ● O atacante pode, então recriar os primeiros passos da permuta de State a partir do IV utilizado 20
  • 21. Quebra do WEP ● Resumindo, o atacante possui: – IV = K[0], K[1], K[2] – Precisa descobrir S[3] para descobrir/sugerir K[3], pois S[3] = K[0] + K[1] + K[2] + K[3] + 3(3 + 1)/2 21
  • 22. Quebra do WEP ● Sempre que S[1] = 0 e S[0] = n o primeiro byte será cifrado por S[n], pois: x = (x + 1) % 256; x = 1 y = (state[x] + y) % 256; y = (state[1]) = 0 swap_byte(&state[x], &state[y]); state[1] <-> state [0] xorIndex = (state[x] + state[y]) % 256; xorIndex = (state[1] + state[0]) = state[1] GeneratedByte = state[xorIndex]; GeneratedByte = state[1] 22
  • 23. Quebra do WEP ● prova: ● para encontrar novas chaves com State[1]=0 – 1000 tentativas (aleatório) – chave com tam=5 php wep.php find_weak 1000 5 ● utiliza-se a chave encontrada no RC4 ● o valor apontado por State[0] será o índice em State para o valor utilizado na cifragem php wep.php normal 50:233:61:247:240 "ola mundo" 23
  • 24. Quebra do WEP ● Se (S[1] + S[S[1]] = 3) então o texto será cifrado por S[3] – Descoberta de S[3] ● S[3] = texto_cifrado XOR 0xaa – Inversão do processo de permutação do RC4 ● S[3] = K[0] + K[1] + K[2] + K[3] + 3(3 + 1)/2 ● O mesmo é feito para K[4], ... Ou seja (S[1]+S[S[1]]=4) ... .... .... 24
  • 25. Quebra do WEP ● Exemplo: php wep.php normal 4:29:74:3:228 “teste” KEY: 4:29:74:3:228<- objetivo State: S[0]=3 S[1]=0 S[2]=110 S[3]=116 S[4]=197 S[5]=38... RC4 KEY:116:79:90:205:73 O atacante possui os valores iniciais da chave IV[0]=K[0]=4 IV[1]=K[1]=29 IV[2]=K[2]=74 25
  • 26. Quebra do WEP ● Para obter K[3]: IV[0]=K[0]=4 IV[1]=K[1]=29 IV[2]=K[2]=74 S[3]=116 (obtém realizando um XOR entre 0xaa e o valor do primeiro byte do pacote capturado) S[3] = 4 + 29 + 74 + K[3] + 3 x (3+1)/2 K[3] = 116 – 4 – 29 – 74 – 6 = 3 K[3] = 3 26
  • 27. Quebra do WEP ● Próximo passo: – Encontrar uma situação onde S[1]=0 e S[0]=4 com chave fraca, ou seja, que: S[4] = K[0] + K[1] + K[2] + K[3] + K[4] + 4(4+1)/2 ... 27
  • 28. Quebra do WEP ● Exemplo 2: php wep.php normal 26:55:29:50:43 “teste” KEY: 26:55:29:50:43<- objetivo State: S[0]=3 S[1]=0 S[2]=10 S[3]=166 S[4]=213 S[5]=218... RC4 KEY:166:198:122:220:59 28
  • 29. Quebra do WEP ● Para obter K[3]: IV[0]=K[0]=26 IV[1]=K[1]=55 IV[2]=K[2]=29 S[3]=166 (obtém realizando um XOR entre 0xaa e o valor do primeiro byte do pacotecapturado) K[3] = 166 – 26 – 55 – 29 – 6 = 50 K[3] = 50 ... ... ... 29