Solução (Caso seja seu caso)
Tendo-se em vista todas essas fraquezas do protocolo, algumas possíveis soluções foram propostas a fim de contornar e por que não acabar com tais fraquezas.
Uma das soluções que foi cogitada foi a substituição da CRC-32 por uma função de hash MD5 ou SHA-1 por exemplo. No entanto, esta seria uma solução muito cara além do que, tornaria a execução do protocolo pelos atuais processadores muito lenta.
Uma outra solução discutida foi descartar os primeiros 256 bytes da saída do gerador de números pseudo-aleatórios utilizado na criação dos vetores de inicialização. Isso seria feito devido a alta correlação dos primeiros bits exalados pelo RC4 com a chave. Porém, essa solução mostrou-se também muito cara e para muitas aplicações, inviável de ser implementada.
Então, no final do ano de 2001, o pessoal dos laboratórios RSA sugeriu que para contornar as fraquezas do WEP fosse usada uma função de hash mais leve, que usasse uma chave temporária para criar chaves diferentes para cada pacote.
Na proposta, mostra-se que essa função de hash mais simples seria composta de duas fases distintas.
Na primeira fase teríamos como entrada a chave temporária TK e o endereço do transmissor TA. Ter o endereço de quem está transmitindo como parâmetro é muito vantajoso para evitar que seqüências RC4 sejam repetidas. Imagine por exemplo uma estação que só se comunica com o AP. A informação trocada entre eles utiliza a mesma chave temporária TK e isso aumenta as chances da seqüência se repetir, bastaria que o mesmo vetor de inicialização fosse utilizado para isso ocorrer.
No entanto agora, juntamente com a chave temporária a estação utilizará seu endereço para gerar suas seqüências RC4 e da mesma forma, o AP utilizará seu próprio endereço para gerar suas seqüências. Dessa forma, evita-se a repetição de seqüências dificultando dessa forma alguns ataques.
Na segunda fase proposta, a entrada seria a saída da primeira fase, e o vetor de inicialização. A saída dessa segunda fase seria então o que chamaram de PPK, ou seja uma chave de 128 bits, diferente para cada pacote.
Recomendação
O ideal é usar WPA e WPA2, pois a chance de tentativas de acerto é menor, mais também já vimos que é vulnerável, usando a técnica de Rainbow Tables, que será nosso próximo artigo.
Até lá.


