Trabalho de Redes I

Professor: Otto

Aluna: Isabela C. Santos

DRE: 098226349

Tema: WEP – Descrição e Falhas

 

 

Índice

 

1-Introdução

2-Objetivos do Protocolo WEP

3-Estrutura do WEP

4-Reutilização de uma Seqüência

5.Gerenciamento das Chaves WEP

6-Autenticação de Mensagens

7-Conclusões

8-Bibliografia

 

 

 

1. Introdução

 

  Ao longo dos últimos anos, podemos perceber um grande aumento no número de laptops, notebooks e PDA’s no mercado. As pessoas estão ganhando cada vez mais mobilidade ao usar o computador e com isso, as chamadas redes sem fio (wireless network) vem se proliferando em empresas, escolas, aeroportos e outros locais públicos.
  No entanto, ao mesmo tempo em que ganhamos vantagens como acesso rápido e fácil à internet, novos problemas surgiram com esse tipo de comunicação. Já que estamos falando de uma comunicação que se dá através de ondas de rádio, teoricamente bastaria ter um rádio para que ao entrar numa região onde há uma rede sem fio conseguíssemos interceptar e/ou interferir em tal comunicação. Porém, se você fosse um dono de banco, um administrador de uma empresa de cartões de crédito ou mesmo um simples usuário de internet, não iria ficar satisfeito com uma rede que transmite seus dados através do ar, de maneira insegura ou vulnerável.
  Justamente para combater essa fragilidade nas redes wireless é que surgiram alguns protocolos de segurança, dentre eles, talvez o mais usado seja o WEP (Wired Equivalent Privacy). Mas o que vem a ser o WEP ?
  O WEP é um protocolo de segurança usado em redes 802.11 que tenta prover segurança semelhante à redes com fio, através de criptografia e autenticação no nível do enlace wireless. Seu principal objetivo é manter a confidencialidade dos dados do usuário. Porém, ao longo deste trabalho iremos analisar sua eficiência e tentar descobrir se o WEP é de fato um protocolo seguro e se seu uso realmente garante confidencialidade, autenticidade e integridade aos dados transmitidos.

 

1. Objetivos do Protocolo WEP

 

  Vamos agora nas próximas seções, analisar melhor o funcionamento e a utilidade deste protocolo. Vimos anteriormente que os três principais objetivos a serem alcançados por este aplicativo de segurança são: confidencialidade, autenticidade e integridade dos dados transmitidos. Mas o que isto realmente significa?

  Em primeiro lugar, aparece confidencialidade, que significa simplesmente que o protocolo de segurança deve ser capaz de evitar que um “intruso”, que neste caso pode ser qualquer pessoa não autorizada a participar da comunicação, possa ler, alterar, remover ou inserir dados na rede.

  Além de confidencialidade, o protocolo deve garantir aos seus usuários autenticidade e para tal, deve implementar um controle de acesso à infraestrutura da rede sem fio. Ao utilizarmos o protocolo WEP, temos a opção de poder simplesmente descartar todos os pacotes que não chegarem devidamente encriptados pelo WEP. Fazendo isso, podemos garantir que apenas usuários que tenham uma chave WEP de criptografia possam fazer parte da comunicação. Dessa maneira, realizamos um controle de acesso à rede e uma decorrente autenticação dos usuários.

  Por último, iremos citar o terceiro e igualmente importante objetivo a ser alcançado pelo protocolo, a integridade dos dados transmitidos. Para que uma mensagem enviada chegue até seu destinatário de forma correta, sem alterações, o protocolo implementa uma função linear chamada de “checksum” para que o conteúdo da mensagem transmitida seja protegido e mantido inalterado ao longo da transmissão.

  No entanto, ao longo deste trabalho iremos mostrar que nenhum destes três objetivos são alcançados seguramente com este protocolo. Para visualizarmos melhor o que ocorre atualmente com o WEP, vamos primeiramente analisar sua estrutura, apontar suas falhas e finalmente mostrar alguns tipos de ataques ocorridos e suas conseqüências.

 

2. Estrutura do WEP

 

  A estrutura deste protocolo é bastante simples e fácil de se entender como será observado ao longo desta

seção.

  Inicialmente, cada uma das partes que desejam participar da comunicação deve possuir uma chave secreta k que será usada no processo de criptografia e no processo inverso também. Esta chave k será a mesma usada tanto para criptografar os dados a serem transmitidos como para recuperar os dados na recepção. O nome que se dá a este processo é criptografia simétrica devido ao fato da chave ser única para os dois processos. É importante lembrar que a troca de chaves deve ser feita de maneira segura, se possível pessoalmente, para que a segurança não seja comprometida. Iremos ver mais adiante que essa mesma chave k também é usada para autenticação, o que torna o protocolo um tanto quanto vulnerável neste aspecto.

  Então, suponhamos que queremos enviar uma mensagem M que irá ser transmitida através de uma wlan que utiliza o protocolo WEP. Primeiramente, essa mensagem será computada por um programa conhecido como “checksum”, que é um algoritmo polinomial detetor de erros aleatórios, que irá gerar um ICV (Integrity Check Value) para que na recepção, possa ser verificada a integridade da mensagem. Neste caso, o algoritmo utilizado para fazer esse controle é o CRC-32. Ele irá gerar um ICV de 4 bytes que deve ser recuperado exatamente igual pelo receptor da mensagem M, caso contrário, a mensagem recebida será imediatamente considerada errada e será descartada. Então, a mensagem M e o seu resultado de “checksum” c(M) serão concatenados e chamados de texto plano P. Portanto P = { M, c(M) }. É importante observarmos que o texto plano não depende da chave k.

  Num segundo estágio, é gerada uma seqüência de bits pseudo-aleatórios a partir da chave secreta k (40 bits) e de um vetor de inicialização v (24 bits) gerado aleatoriamente também. Essa seqüência é gerada pelo algoritmo de criptografia RC4 e será indicada por RC4 (v,k).

  Então, finalizando o processo de criptografia, faz-se um xor entre o texto plano P e a seqüência RC4. O resultado dessa operação de xor constituirá o pacote cifrado que será transmitido ao longo do ar. Esse pacote cifrado será aqui indicado por:

C = P Ä RC4 (v, k)

 

  Além do pacote cifrado, transmite-se também o vetor de inicialização utilizado, para que o processo reverso de decriptar seja possível.

  A recuperação do pacote se dá de maneira simples, aplicando-se o mesmo processo de maneira inversa. O receptor terá o pacote cifrado C e o vetor de inicialização v. Tendo-se este vetor e conhecendo-se a chave secreta k, o receptor pode utilizar o mesmo RC4 para gerar a seqüência de bits aleatória. Uma vez tendo essa seqüência, basta ele aplicar um xor entre essa seqüência e o pacote cifrado para recuperar o texto plano P (pacote original). Isso só é possível devido a algumas propriedades do xor que citaremos abaixo:

 

P´= C Ä RC4 (v, k)

P´= ( P Ä RC4(v, k) ) Ä RC4 (v, k)

P´= P

 

  Então, fazendo-se o xor da seqüência RC4 com ela mesma o resultado é zero. Portanto restará o xor de uma seqüência de zeros com P. Mas, o resultado do xor de qualquer número com zero, será o próprio número. Dessa maneira, foi possível recuperar o pacote original. O próximo passo do receptor agora será dividir o pacote em M´e c´(M´), em seguida ele recomputa o CRC-32 e compara o resultado obtido c(M´) com c´(M´). Se forem iguais, significa que o pacote recebido possui um checksum válido e portanto será aceito. Esta última etapa é realizada com o intuito de preservar a integridade dos dados transmitidos, fazendo com que o receptor rejeite pacotes que por ventura estejam corrompidos.

  A figura abaixo ilustra melhor o processo descrito nesta seção:

 

figura 1 – Criptografia WEP

 

3. Reutilização de uma Seqüência

 

  A criptografia WEP, ao utilizar o algoritmo RC4 permite que a mesma seqüência aleatória se repita de vez em quando. Isso, é um ponto muito desfavorável para o aspecto de segurança do protocolo, mostraremos a seguir, o que pode ocorrer ao reutilizarmos uma seqüência RC4(v,k).

  Suponha que C1 e C2 são dois pacotes cifrados com o mesmo vetor de inicialização e a mesma chave secreta.             Então temos a seguinte situação:

 

C1 = P1 Ä RC4(v,k)

C2 = P2 Ä RC4(v,k)

C1 Ä C2 = (P1 Ä RC4(v,k)) Ä (P2 Ä RC4(v,k))

= P1 Ä P2

 

  Ou seja, podemos observar que com dois pacotes cifrados com a mesma seqüência, é possível recuperar um xor dos dois textos planos sem conhecer a chave secreta e o vetor de inicialização. Isso só foi possível pois houve um cancelamento da seqüência RC4, que por sua vez ocorreu devido ao fato dos dois pacotes terem sido igualmente cifrados. Esse resultado permite uma série de ataques ao protocolo uma vez que se um dos dois textos é conhecido, imediatamente o outro torna-se conhecido. Mas conhecer um pacote não é tarefa tão difícil, afinal muitos pacotes possuem conteúdo previsível (ex: cabeçalho). Além disso, muitos textos possuem redundância, o que torna mais fácil descobrir seus conteúdos através de várias técnicas conhecidas. (ex: análise da frequência).

  Para evitar este tipo de ataque, o WEP utiliza um vetor de inicialização diferente para cada pacote, e então, apesar da chave ser a mesma para todos os pacotes, a seqüência gerada pelo RC4 será diferente para cada pacote.

  No entanto, apesar de existir a recomendação de se utilizar um vetor de inicialização diferente para cada pacote, o protocolo WEP não especifica a maneira como devem ser selecionados os VI´s, e isso causa deficiência no protocolo já que a chance de serem utilizados dois VI´s iguais, a que chamaremos de colisão, existe e nem sempre é pequena.

  Algumas placas geram os vetores de inicialização de maneira seqüencial começando do zero e incrementando seu valor a cada pacote enviado. Além disso, resetam seu valor para zero cada vez que um cartão é reinserido na máquina. Isso faz com que baixos valores de VI´s ocorram mais freqüentemente que os outros, aumentando a chance de haver colisão entre eles.

  Além disso, a própria arquitetura do protocolo permite a ocorrência de colisões. Suponha por exemplo que estamos transmitindo numa taxa de 5Mbps (o máximo seria 11Mbps) pacotes de 1500 bytes. Com isso podemos transmitir aproximadamente 416 pacotes por segundo. Como os VI´s possuem 24 bits, a quantidade de pacotes diferentes que podem ser mandados é 224 , ou seja podemos no melhor caso ficar 11 horas e 12 minutos sem mandar pacotes repetidos. No entanto esse cálculo é otimista, pois uma colisão pode acontecer mais freqüentemente. Uma implementação que usa um VI aleatório de 24 bits por pacote, terá de acordo com o “Paradoxo do Aniversário”, 50% de chance de repetir um VI depois de apenas 4823 pacotes, o que significa alguns poucos minutos. O gráfico abaixo ilustra essa probabilidade de colisão:

 

figura 2 – Probabilidade de Colisão

 

4. Gerenciamento das Chaves WEP

 

  Uma outra vulnerabilidade do protocolo, se encontra no gerenciamento das chaves de criptografia. Se na transmissão, já é mandado o vetor de inicialização sem proteção alguma, é importante que a chave seja confidencial, caso contrário qualquer um que possua a chave estará apto a descobrir a seqüência RC4(v,k).

  Então, o protocolo realiza uma distribuição global das chaves através de um mecanismo externo onde cada mensagem tem um campo IK que identifica uma entre as quatro possibilidades de chave. Porém, na prática acaba-se usando a mesma chave k para a rede inteira. Se no entanto, a rede é grande, utilizada por muitas pessoas, então, a chave será conhecida por muitas pessoas e quanto mais gente tiver conhecimento da chave, maior será a probabilidade dela deixar de ser confidencial.

  Além disso, o fato da chave ser a mesma para a rede inteira aumenta as chances de ocorrer uma colisão, o que é extremamente desfavorável.

  Para evitar este tipo de problema, uma das soluções seria a troca periódica das chaves, porém, essa troca seria manual e no caso de termos uma rede muito grande, a realização da troca de centenas ou milhares de chaves seria um tanto quanto trabalhosa e até mesmo insana.

  Uma outra medida que muitos administradores de rede tomam para tentar diminuir esse risco de descoberta da chave k é simplesmente fazer diretamente a configuração das chaves nos próprios dispositivos, dessa forma o usuário final não tem conhecimento de k. Essa medida diminui o risco, mas não resolve o problema visto que as chaves continuam guardadas nos dispositivos remotos.

 

5. Autenticação de Mensagens

 

  Como já citamos anteriormente, no protocolo WEP utiliza-se um algoritmo (CRC-32) para detectar possíveis erros de transmissão que por ventura tenham modificado o conteúdo dos dados. No entanto, como trata-se de um código linear, mostraremos a seguir que esse código não é eficiente contra ataques maliciosos que podem fazer modificações controladas no pacote e não despertar suspeita.

  Vamos ilustrar primeiro, como é feito o processo de autenticação de mensagens no WEP:

 

figura 3 – Autenticação de Mensagens

 

  O usuário para poder fazer parte da rede sem fio, envia para o AP (ponto de acesso) um pedido de autenticação. Este retorna para o usuário uma espécie de desafio, ao qual o usuário deve cifrar utilizando o RC4 e a chave que ele posssui, e então, enviar de volta o desafio cifrado para o AP que vai utilizar a chave k para decifrar o conteúdo. Se o conteúdo recuperado pelo AP for igual ao original, significa que o usuário utilizou a chave k correta e portanto poderá ser autenticado e receberá uma confirmação do AP.

  No entanto, vamos mostrar que é possível violar a integridade dos dados, interceptando uma mensagem e modificando seu conteúdo. Isso só é possível devido ao fato do checksum e do RC4 serem funções lineares. Suponhamos então que C é um texto cifrado capturado por um atacante malicioso que deseja inserir um ruído r no pacote. Então, ao inserir este ruído, o atacante modificará o texto cifrado C para C´da seguinte maneira:

 

C´= C Ä (r, c(r))

= RC4(v,k) Ä (M,c(M)) Ä (r, c(r))

= RC4(v,k) Ä (M Ä r,c(M) Ä c(r))

= RC4(v,k) Ä (M´, Ä c(M Ä r))

= RC4(v,k) Ä (M´, Ä c(M´))

 

  Portanto, provamos ser possível inserir um ruído numa mensagem alterando não só a mensagem original como também o checksum da mensagem original, fazendo isso, provamos que o CRC-32 não foi capaz de manter a integridade dos dados.

 

  Além de modificar uma mensagem, é possível também inserir na rede uma nova mensagem, violando novamente o controle de acesso a rede. Mostraremos que isto é possível, devido ao fato do checksum ser uma função que não possui chave alguma. Então, basta conhecer um texto plano P para que junto com o texto cifrado C a seqüência RC4 seja descoberta:

 

P Ä C = P Ä (P Ä RC4(v,k)) = RC4(v,k)

 

  A partir desta seqüência, é possível injetar na rede um novo pacote cifrado de uma nova mensagem M´:

 

C´= (M´,c(M´)) Ä RC4 (v,k)

 

  Com isso, um atacante estará apto a enviar para o AP o desafio cifrado corretamente e conseqüentemente receberá a confirmação de autenticação na rede.

  É importante lembrar que isso só é possível se usarmos o mesmo VI da mensagem original. Mas apesar do protocolo recomendar que não se reutilize o VI, ele não exige que os VI´s sejam trocados a cada pacote.

  Uma das possíveis soluções para este problema seria utilizar um código de autenticação de mensagem (MAC) com chave, uma função de Hash por exemplo que evitasse que o ICV fosse alterado por algum intruso.

 

  Um outro possível ataque seria através de uma redireção de IP. Este tipo de ataque é possível quando o AP atua como roteador de uma conexão da Internet.

  Nesse caso, a idéia principal seria capturar um pacote cifrado no ar e utilizar por exemplo a técnica descrita acima para modificar seu conteúdo, no caso fazer uma modificação no endereço de destino deste pacote para um novo endereço conhecido pelo atacante. Dessa maneira, estaríamos usufruindo do AP que faria todo o processo de decriptar o pacote e então enviaria este pacote decriptado para o endereço especificado pelo atacante. Através desse tipo de ataque, explora-se a capacidade do AP de decifrar os pacotes, para enviá-los da rede sem fio para a Internet.

 

6. Conclusões

 

  Através do estudo das técnicas de criptografia no WEP, foi possível analisar seu funcionamento e também apontar suas vulnerabilidades e falhas de segurança.

  Vimos que um dos grandes problemas ocorre quando há a repetição de vetores de inicialização, de maneira que deveria existir um controle mais severo quanto a não reutilização destes.

  Um outro ponto seria o tamanho da chave de criptografia que no WEP é de 40 bits e que numa versão mais atualizada aumenta para 104 bits. Esse aumento no tamanho da chave é válido para dificultar que esta seja descoberta mais rapidamente.

  Além do tamanho das chaves, um dos pontos que podem ser melhorados é a questão do gerenciamento das mesmas, que atualmente é feito manualmente, de forma tão pouco prática que raramente é realizada a troca de chaves.

  E para finalizar, outra questão que deveria ser modificada é a função de checksum que por ser uma função que não possui chave, facilita ataques que alteram a integridade dos dados bem como a autenticidade da rede sem fio.

 

7. Bibliografia

 

BORISOV, N., GOLDBERG, I., and WAGNER, D. 2001. “ Intercepting Mobile Communications: The Insecurity of 802.11 ”.

 

FLUHRER, S., MANTIN, I. and SHAMIR, A. 2001. “ Weakness in the Key Scheduling Algorithm of RC4 ”.

 

RIVEST, R. 2001. “ RSA Security Response to Weaknesses in Key Scheduling Algorithm of RC4 ”. RSA Security’s Site. (http/www.rsasecurity.com/rsalabs/technotes/wep.html) .

 

WILLIAM A. ARBAUGH, NARENDAR SHANKAR, Y. C. JUSTING 2001. “ Your 802.11 Wireless Network has no Clothes ” .

 

“ Wireless LAN Security: A Short History ” (http/www.oreillynet.com/pub/a/wireless/2002/04/19/security)

 

VERISSIMO, Fernando – Segurança em Redes sem Fio. 2002. 90f. Monografia apresentada à Universidade Federal do Rio de Janeiro, como requisito final do curso de Tópicos Especiais em Redes Integradas Faixa Larga (COS871). Disponível em http://www.ravel.ufrj.br/~verissimo/cos871, última visita em 18.Dez.2002.

 

Figuras – (http:/www.tempest.com.br)