2. Wired Equivalent Privacy

O protocolo WEP, sigla de "Privacidade Equivalente à de Redes com Fios", foi o pioneiro no assunto de proteção de redes sem fio, tendo sido lançado como um padrão de segurança neste tipo de rede em 1997. Ele utiliza o algoritmo de criptografia RC4, que é apontado por muitos como seu principal ponto negativo. Mesmo estando obsoleto no quesito segurança, o WEP continua sendo amplamente utilizado em residências de todo o mundo, reflexo da falta de informação dos usuários de redes sem fio e da insistência de fabricantes de pontos de acesso em permitir que ele seja um dos padrões de segurança.

2.1. Algoritmo RC4

O algoritmo de criptografia RC4 foi criado em 1987 por Ronald Rivest, o mesmo criador do RSA e do MD5, e seu funcionamento permaneceu em segredo até o ano de 1994, quando foi vazado em uma página de discussões na Web. Ele possui duas funcionalidades básicas: uma para gerar um "código" que será usado para encriptar e decriptar (KSA) e outra para realizar a criptografia propriamente dita da mensagem com o uso deste código (PRGA).

A função KSA, sigla de Algoritmo Escalonador de Chaves (do inglês "Key Scheduler Algorithm"), é responsável por gerar uma permutação pseudo-aleatória do conteúdo de uma chave secreta. O fato de ela ser pseudo-aleatória se deve à invariância do valor retornado com relação ao tempo, dependendo apenas do valor de entrada. Portanto, é necessária a execução desta função apenas uma vez para a obtenção da permutação que será usada.

A função PRGA, sigla de Algoritmo de Geração Pseudo-Aleatória (do inglês "Pseudo Random Generation Algorithm"), é responsável pela encriptação da mensagem a partir do valor retornado pelo KSA. Ela consiste basicamente de operações de Ou-Exclusivo entre a permutação da chave secreta e a mensagem de entrada, retornando uma mensagem cifrada. Pela lógica de Boole, sabe-se que operações deste tipo são simétricas e, portanto, a aplicação do PRGA na mensagem cifrada gera a mensagem original caso a permutação utilizada seja a mesma do processo de encriptação.

Uma implementação deste algoritmo em C/C++ pode ser encontrada aqui, com chave secreta de 256 bits, correspondendo fielmente ao algoritmo atualmente utilizado para criptografia em redes sem fio domésticas. Repare que o número de operações realizadas é muito pequeno, refletindo a simplicidade do mesmo.

O RC4 é considerado um algoritmo de chave simétrica de cifra de fluxo ("stream cypher") pelo fato de o processo de encriptação e decriptação serem independentes do tamanho da mensagem de entrada. Em contrapartida aos algoritmos de cifra de fluxo, existem os de cifra em bloco, cujo funcionamento requer mensagens de tamanho fixado, geralmente com o comprimento sendo uma potência de 2. A grande vantagem daquele sobre este é a sua simplicidade de implementação, requerendo poucas operações. Contudo, ele peca no quesito segurança, pelo fato de cada bit de saída ser uma função apenas do bit de entrada, enquanto no outro é uma função de todos os bits do bloco original.

2.2. Funcionamento do WEP

O funcionamento do WEP pode ser dividido em duas partes: autenticação e encriptação/decriptação de mensagens. Ele é todo baseado na troca de quadros encriptados pelo algoritmo RC4. A ordem apresentada seá a inversa da de textos da área: primeiro o processo de troca de mensagens e então, o de autenticação. Esta ordem é mais interessante pelo fato de a autenticação utilizar mecanismos que estão presentes na troca de mensagens.

A compreensão do funcionamento do mecanismo de encriptação/decriptação baseia-se no entendimento do algoritmo RC4. Como detalhe adicional, para garantir maior segurança ao processo, a permutação oriunda do KSA deve ser diferente a cada mensagem enviada. Para isto, existe um vetor de inicialização pseudo-aleatório que é recalculado a cada iteração do algoritmo e é acrescido à chave secreta. Como quem recebe a mensagem não possui este valor, o mesmo deve ser incluído no texto cifrado que será enviado. Por fim, existe ainda um mecanismo que provê integridade ao conteúdo do texto cifrado que é recebido, tendo em vista que o meio de propagação da mensagem - o ar - é muito suscetível a erros.

A Figura 2(a) demonstra o processo de encriptação da mensagem. Em um primeiro momento, a entidade responsável pelo seu envio calcula o próximo valor da sequência do vetor de inicialização, concatena o mesmo com a chave secreta que ele compartilha com a entidade que receberá a mensagem e calcula o valor da permutação a partir do KSA. Após este processo, ela divide a mensage original de forma que possa caber em um quadro WEP e calcula o valor do hash (a partir da função resumo CRC-32). Em seguida, ocorre a aplicação do algoritmo PRGA sobre o pedaço da mensagem e seu respectivo valor de hash. Por fim, o resultado deste processo é concatenado com o valor atual do vetor de inicialização e finalmente enviado.


                     test
                     (a) Encriptação
   
(b) Decriptação

Figura 2: Diagrama de Blocos do Protocolo WEP

A Figura 2(b) apresenta o processo inverso, que é realizado pela entidade que recebe o texto cifrado. Primeiramente, ocorre a separação do vetor de inicialização e da mensagem cifrada. O primeiro é concatenado com a chave secreta que é compartilhada com a entidade que realizou o envio e passa novamente pelo KSA. Com isto, ele calcula a mensagem original acrescida do hash no PRGA, lembrando que esta função é composta de operações de Ou-Exclusivo (sendo, portanto, simétrica). Assim, ele divide o resultado desta função em mensagem original e hash. Por fim, é aplicada a mesma função resumo que fora usada pela entidade que enviou a mensagem e ocorre a comparação com o que recebeu. Caso haja alguma discrepância dos resultados, é solicitado o reenvio do quadro; caso contrário, é enviada uma mensagem de confirmação de recebimento.

Todo o processo enunciado acima supôs que a máquina já possuía algum tipo de mecanismo de comunicação com o ponto de acesso. Para tanto, foi necessária a realização de um processo tipo de autenticação. Existem dois métodos básicos para a realização dele: o modo sistema aberto ("Open System") e o de chave compartilhada ("Shared Key").

O WEP Open System assume que qualquer um que conheça o nome de identificação da rede, ou SSID (do inglês "Service Set Identifier"), é passível de se conectar a ela. Assim, conforme ilustrado na Figura 3(a), a máquina que deseja se conectar deve apenas enviar uma requisição junto com o SSID. Caso ele esteja correto, o access point retorna uma resposta positiva de conexão; caso contrário, uma resposta de negação de conexão é enviada.


                     test
                     (a) WEP Open System
   
(b) WEP Shared Key

Figura 3: Métodos de Autenticação do WEP

Em contrapartida ao WEP Open System, o WEP Shared Key só realiza a conexão de quem possuir a chave secreta que o access point possui. Assim, quando for solicitada a conexão na rede por alguma máquina, o ponto de acesso lhe envia uma mensagem com um desafio" composto de um número inteiro aleatório. A máquina deve responder com uma mensagem contendo este número encriptado de acordo com o processo da Figura 2(a). Ao receber a mensagem, o ponto de acesso tenta repetir os passos da Figura 2(b). Em caso de sucesso, isto é, caso o valor decriptado seja idêntico ao original, ele envia uma mensagem confirmando a conexão; caso contrário, há o envio de uma mensagem indicando falha de conexão.

2.3. Falhas

Existem diversas falhas conhecidas há mais de uma década no protocolo WEP. Elas são muitas vezes exploradas por pessoas maliciosas que desejam prejudicar o uso da rede sem fio ou simplesmente obter acesso à Internet. Entre as falhas mais graves, encontram-se a presente no mecanismo de confirmação de recebimento de quadros WEP, a possibilidade de inundação da rede com quadros repetidos e a fragilidade do algoritmo RC4.

2.3.1. Acesso de Estranhos

Dentre os diversos ataques existentes para a obtenção da chave secreta utilizada no WEP, alguns se destacam pela simplicidade e tempo de execução muito baixos, da ordem de minutos:

  • Força Bruta: A chave secreta do WEP possui 40 bits, valor relativamente alto, mas que, com o uso de ataques de dicionário, isto é, através da utilização de nomes que são comumente utilizados, torna-se plausível sua execução.
  • Conexão: Durante a conexão de um suplicante ao ponto de acesso, o desafio passa em claro e logo depois encriptado. Assim, é possível ter acesso ao mesmo conteúdo das duas formas, facilitando o processo de obtenção da chave secreta.
  • Escuta: Existem outros tipos de ataque que conseguem recuperar a chave secreta a partir da escuta do tráfego por alguns minutos, até que o valor do vetor de inicialização se repita.

O maior agravante do processo de encriptação do WEP é a utilização da chave secreta (que não é provisória), em todas as etapas. Assim, a descoberta deste valor significa a utilização da rede até que o mesmo seja trocado pelo administrador da mesma.

2.3.2. Troca de bits

Outro tipo de ataque bastante conhecido no protocolo WEP é a captura de quadros transmitidos e a alteração do conteúdo de alguns deles. A função resumo utilizada como provedora de integridade (CRC-32) possui um comportamento conhecido para determinados padrões de alteração de bits, o que possibilita alguém mal-intencionado forjar o conteúdo de mensagens.

2.3.3. Inundação

Não existe nenhum tipo de ordem nos quadros transmitidos, isto é, teoricamente não há como saber se um quadro veio fora de ordem. Portanto, um dos ataques mais comuns é o de captura de um e sua retransmissão continuamente, a fim de congestionar o tráfego de alguma máquina especial da rede.

2.4. Evolução

Várias tentativas foram feitas para melhorar o WEP. Porém, elas foram em vão, pois não focaram na essência do principal problema deste protocolo: a maneira como o algoritmo RC4 é utilizado. Todas essas implementações não são nenhum tipo de padrão da indústria, sendo de uso específico de grupos de usuários.

2.4.1. WEP2

Nesta implementação, para tentar diminuir a chance de que algum estranho descubra o valor da chave secreta, seu número de bits foi aumentado e o vetor de inicialização teve seu comprimento dobrado. Porém, isto surtiu pouco efeito, tendo em vista que o problema não se encontra apenas no tamanho da chave, mas na fragilidade do algoritmo como um todo.

2.4.2. WEP+ e WEP Dinâmico

WEP+ e WEP Dinâmico são duas implementações proprietárias do protocolo WEP. A primeira escolhe de maneira mais "inteligente" o valor dos vetores de inicialização, tentando diminuir a chance de um eventual ataque ser bem sucedido. O WEP Dinâmico, porém, muda o valor da chave periodicamente. Contudo, caso o tempo de alteração de valor seja maior que o tempo que leva para a quebra do algoritmo, ele não surte o efeito desejado. Todavia, a ideia por trás desta implementação foi utilizada em parte pelo WPA.


Anterior | Topo | Próxima