3. Wi-Fi Protected Access

O protocolo WPA, sigla de "Acesso Protegido a Wi-Fi", foi criado em 2002 pela WFA (Wi-Fi Alliance) como postulante a substituto do WEP. Durante a sua concepção, foi dado um enfoque maior na correção das falhas de segurança encontradas neste protocolo. Dentre as melhorias propostas, a mais significativa foi a utilização do algoritmo RC4 de uma forma mais segura, dentro do protocolo TKIP.

Em 2004, a WFA lançou o sucessor do WPA, o WPA2, após a descoberta de algumas falhas de segurança presentes no TKIP. Assim, para tentar contorná-las, ele foi substuído pelo protocolo CCMP, que faz uso de um algoritmo de criptografia simétrica muito robusto e amplamente utilizado, o AES.

3.1. WPA: Protocolo TKIP

O TKIP, sigla de Protocolo de Integridade de Chave Temporal (do inglês "Temporal Key Integrity Protocol"), é o protocolo usado pelo WPA para encriptação da mensagem transmitida. Ele faz uso do algoritmo RC4, da mesma forma que o WEP, mas toma algumas precauções para evitar ataques, como não enviar a chave secreta "em claro" e trabalhar com uma política de vetores de inicialização mais inteligente.

O WPA funciona a partir de uma chave secreta contendo entre 32 e 512 bits conhecida como PMK, ou Chave Mestra Dupla, que gera uma PTK, ou Chave Transiente de Dupla (do inglês "Pairwise Transient Key"), a partir de alguns parâmetros obtidos durante a conexão, sendo compartilhada entre o computador e o ponto de acesso. Ela é composta de 512 bits e pode ser dividida em 4 outras chaves de 128 bits - KCK, KEK, TEK, TMK - que são usadas em processos distintos deste protocolo.

No WEP, é possível a alteração do conteúdo de uma mensagem transmitida sem que o receptor perceba alguma mudança. O TKIP impede que isto ocorra através do uso do MIC (também apelidado de Michael), sigla de Código de Integridade de Mensagem (do inglês "Message Integrity Code"). Esta função utiliza metade (em número de bits) do TMK, Chave Temporária do MIC, para o "embaralhamento" do conteúdo da mensagem original, acrescido do endereço MAC de origem e de destino, retornando um valor de 8 bytes após operações de permutação e deslocamento de bits e Ou-Exclusivo. Vale acrescentar, ainda, que na especificação do protocolo, computador local e ponto de acesso usam metades distintas do TMK para cálculo do MIC. Um esquema simplificado do processo pode ser visto na Figura 4(a). A robustez do MIC se encontra no fato de o seu produto final não ter nenhum tipo de correlação com o vetor de inicialização, tornando qualquer tentativa de ataque restrita à força bruta.


                     test
                     (a) Código de Integridade de Mensagem
   
(b) Algoritmo de Mistura de Chaves

Figura 4: Algoritmos do TKIP

Outra fraqueza do WEP reside no fato de uma terceira pessoa poder capturar um pacote e reenviá-lo por tempo indefinido. A política adotada pelo WPA é muito simples e consiste no uso do vetor de inicialização de 48 bits como um identificador do pacote: o cliente da rede e o ponto de acesso zeram o vetor de inicialização referente à comunicação entre eles quando esta começa e o incrementam a cada novo envio; caso algum pacote chegue com o valor do IV menor do que o último recebido, é sinal de uma tentativa de ataque de repetição e este é ignorado.

Por fim, durante a troca de mensagens, existe uma mistura em duas fases da TEK, ou Chave Temporal de Encriptação, com o vetor de inicialização, de modo a aumentar a complexidade de obter a primeira. Na primeira fase, os 32 bits mais significativos do vetor de inicialização, o TEK e o endereço MAC de quem está transmitindo a mensagem entram como parâmetros de uma função resumo (Fase 1) que retorna um valor de 80 bits. Este valor e os 16 bits menos significativos do vetor de inicialização são enviado para uma nova função resumo (Fase 2), que retorna um valor de 128 bits: os 24 primeiros correspondem ao vetor de inicialização usado pelo RC4, enquanto que os outros 104 correspondem à chave secreta. Um esquema resumido deste algoritmo de mistura de chaves é apresentado na Figura 4(b).

O processo de troca de mensagens no WPA ocorre a partir do uso dos dois mecanismos descritos acima. Ocorre a geração da chave secreta e vetor de inicialização que serão usados no processo do WEP. E, enfim, é feito o cálculo do MIC para a mensagem, sendo também acrescido a ela e enviado para o bloco WEP. Este processo pode ser visto de maneira resumida na Figura 5(a). A parte de decriptação segue o mesmo princípio, com a avaliação do número de sequência da mensagem como um adicional. Após passar pelo decodificador WEP, há o cálculo do MIC, que é comparado com o que foi recebido; caso haja erro, é sinal de que a integridade da mensagem está compreendida. A Figura 5(b) representa este processo de maneira simplificada.


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

Figura 5: Diagrama de Blocos do Protocolo WPA

A parte de conexão do WPA-PSK é parecida com a do WEP Shared Key. Porém, ela provê mais segurança ao não passar pelo ar nem a chave compartilhada (PMK), nem a chave de sessão (PTK). Este processo é composto por dois atores, o suplicante e o ponto de acesso. O primeiro passo é o envio de uma requisição de conexão por parte do suplicante. O ponto de acesso responde com o envio de uma mensagem com um número aleatório chamado de ANonce. O suplicante, então, gera um novo número aleatório, SNonce, e a partir da combinação destes dois com a chave secreta compartilhada, PMK, ele calcula a chave secreta que será utilizada na sessão. Conforme já visto, a PTK pode ser dividida em quatro partes, dentre as quais duas tem propósito de realizar conexão, a KEK e a KCK (a primeira é usada para encriptar mensagens, enquanto a segunda serve como chave usada pelo MIC). Após o cálculo do PTK, o suplicante envia uma nova mensagem contendo o SNonce em claro e o MIC do ANonce, a partir do uso do KCK. Com isso, o ponto de acesso consegue calcular o valor do PTK e confere se o MIC recebido está correto. Então, ele calcula a GTK, que é a chave utilizada durante a sessão para o envio de mensagens broadcast. Ela é uma combinação do GMK (chave mestra de grupo) com um outro número aleatório, o GNonce. Por fim, ele envia para o suplicante uma mensagem com o GTK encriptado com o uso do KEK, acrescido do MIC desta mensagem (usando o KCK). Ao receber esta última mensagem, o suplicante confere se os valores estão corretos e tem acesso à chave de grupo. Por último, ele valida as duas chaves enviando um ACK para o ponto de acesso, que as valida igualmente. Um diagrama resumido deste processo pode ser visto na Figura 6.


                                                      test

Figura 6: Diagrama de Inicialização de Comunicação do WPA-PSK

3.2. Algoritmo AES

O algoritmo AES, sigla de Padrão de Encriptação Avançado (do inglês "Advanced Encryption Standard"), é um algoritmo de criptografia simétrica de cifra de bloco (a entrada deve possuir um tamanho fixo) criado em 1997 pelo NIST (National Institute of Standards and Technology), órgão do governo dos Estados Unidos. Ele surgiu como uma alternativa ao algoritmo DES, que começava a apresentar problemas de segurança.

O AES, na verdade, foi originalmente proposto por Vincent Rijmen e Joan Daemen, sendo conhecido como algoritmo Rijndael. Ele sofreu algumas modificações para comportar a encriptação apenas de palavras de 128, 192 e 256 bits. Ele funciona em rodadas, nas quais ocorrem operações de permutações e combinações dos bits. Assim, o algoritmo é eficiente computacionalmente, podendo ser calculado rapidamente.

3.3. WPA2: Protocolo CCMP

O CCMP é o protocolo usado pelo WPA2 para encriptação das mensagens transmitidas. Ele é totalmente independente do funcionamento do WEP, diferentemente do WPA, pelo fato de não usar o algoritmo RC4. Ao invés disto, a mensagem é codificada antes de ser transmitida com o uso do AES. Porém, o conceito de chaves temporárias e código de integridade de mensagem introduzido pelo WPA continuou a ser usado, só que funcionando de maneira diferente. Além disto, a parte de autenticação é bem semelhante à do último e, portanto, será omitida.

A primeira grande diferença se encontra na PTK: enquanto a do WPA possui 512 bits, a do WPA2 dispõe de apenas de 384, pelo fato de usar a TEK tanto para encriptação quanto para cálculo do MIC (ele "alimenta" o algoritmo AES em todos os passos), o que exclui o uso da TMK. Além disto, o vetor de inicialização recebe uma nomenclatura: número de pacote. Outro ponto importante é o uso do cabeçalho do quadro nas duas partes principais do protocolo. Por fim, existe um vetor com determinados parâmetros, chamado de Nonce, que é incrementado cada vez que passa pelo bloco AES.

A parte de cálculo do MIC é bem simples, envolvendo sucessivas operações de Ou-Exclusivo e encriptação com o AES. Primeiramente, o número de pacote passa pelo AES e seu resultado é levado para um bloco de Ou-Exclusivo com a parte mais significativa do cabeçalho. O produto passa novamente por um bloco AES e vai junto com a parte menos significativa do cabeçalho para outro bloco de Ou-Exclusivo. A partir deste ponto, começa a entrar o conteúdo da mensagem, em blocos de 128 bits, seguindo o seguinte padrão: realização da operação de Ou-Exclusivo com o último resultado e envio da saída para o bloco AES. Por fim, quando todos os pedaços da mensagem tiverem passado por este processo, o resultado será uma saída de 128 bits, dos quais os mais significativos são o MIC. Uma simplificação deste processo pode ser visto na Figura 7(a).


                     test
                     (a) Código de Integridade de Mensagem
   
(b) Encriptação

Figura 7: MIC e Encriptação no WPA2

O processo de encriptação (e, analogamente, de decriptação) utiliza o Nonce para codificar a mensagem, que tem seu conteúdo dividido em pedaços de 128 bits. O primeiro passo é a geração de um novo valor de MIC, ao passar o Nonce pelo bloco AES e realizar um Ou-Exclusivo da parte mais significativa do resultado com o valor atual do MIC. Após este passo, para cada pedaço da mensagem, realiza-se o incremento de Nonce, que passa por um bloco AES e é combinado com o pedaço através de uma operação de Ou-Exclusivo, gerando o pedaço encriptado correspondente. Como este tipo de operação é invertível, fica óbvio que a parte de decriptação corresponde ao mesmo processo, além da verificação do MIC obtido com o recebido. Uma simplificação deste processo de encriptação pode ser visto na Figura 7(b).


Anterior | Topo | Próxima