O WPA é um protocolo sucessor do WEP, sendo respectivamente um definido pela Wi-Fi Alliance e outro pelo IEEE.
O WPA funciona com "pilares" de segurança separados, sendo este os seguintes pilares:
Criptografia: Utiliza o TKIP, que é o foco deste artigo.
Autenticação: Utiliza o 802.1x ou uma chave pré-compartilhada.
Integridade: Utiliza o protocolo MIC, que garante que o dado não será alterado.
Eu pretendo entrar em mais detalhes do WEP em outro artigo, mas por enquanto pense que o WEP realiza a criptografia e a autenticação utilizando a "WEP KEY", pensando é claro no modo clássico e não no modo com 802.1x.
Bom, sobre o WPA, temos duas formas de autenticação possível:Enterprise: Utiliza o 802.1x e realiza integração com o sistema de segurança da empresa através do protocolo Radius.
Personal: Utiliza uma chave pré-compartilhada (pre-shared key).
É importante ressaltar novamnete que estes são os metodos de autenticação, ou seja, de garantir que efetivamente você é um usuário legitimo. Mas então, como funciona a criptografia no WPA?
Bem, primeiro vamos ao 802.1x:Após o processo de autenticação o Servidor Radius gera uma chave MESTRA, chamada de PMK (Pairwise Master Key). Esta chave é entregue de forma segura para o Access-Point e o cliente Wireless através do processo EAP do Radius.
Esta chave, porém, é uma chave que não deve ser exposta de forma alguma, então se faz necessário a criação de uma nova chave para criptografar os pacotes, esta é a chave Transiente, ou temporária (PTK: Pairwise Transient Key).
A PTK é gerada através do Hash dos seguintes elementos:
a) PMK
b) Valor aleatório do AP (AP_NONCE*)
c) Valor aleatório do cliente (S_NONCE*)
d) MAC address do AP
d) MAC address do Cliente
* Nonce é um valor aleatório para garantir que as chaves não estejam velhas.
Esta chave PTK tem o tamanho de 512 bits, sendo esta dividida em várias partes, da seguinte forma:
a) Os primeiros 128 bits é uma chave chamada de EAPOL-Key Encryption Key (KEK). Usada no processo para criptografar a GTK, como veremos a frente.
b) Os próximos 128 bits é uma outra chave chamada de EAPOL-Key Confirmation Key (KCK). Usada para computar o MIC no 4-way Handshake.
c) Os próximos 128 bits é uma outra chave chamada Temporal Key (TK). Esta chave é usada para criptografar e descriptografar pacotes unicast.
d) Os próximos 64 bits é a chave usada para o cálculo do valor de checagem de integridade MIC. Eu vou explicar como funciona com detalhes em outro artigo. Este campo é usado para o calculo de integridade quando o AP envia o dado para a estação.
e) Os últimos 64 bits é a chave usada para o cálculo do MIC, que tem a mesma função anterior, mas usada para dados enviados da Estação para o AP.
Para se obter a PTK, é preciso que ambos os lados saibam os seguintes dados:
1) NR_AP: Número Randômico AP
2) NR_AP: Número Randômico PC
3) MAC_AP
4) MAC_PC
5) Chave Mestra (PMK)
O processo de criação desta chave se dá através de um mecanismo chamado 4-way handshake. Este mecanismo funciona da seguinte forma:1) O AP envia para o cliente um número randômico (NR_AP):
Passo 1.5) O cliente recebe o NR_AP e gera o seu número randômico (NR_PC). A partir deste ponto ele gera a PTK e a armazena, mas ainda não a instala.
Passo 2) O cliente envia o NR_PC para o AP.
Passo 2.5) O AP recebe o NR_PC. A partir deste ponto ele gera a PTK e a instala para utilzar no fluxo de dados daqui para frente.
Passo 3) Após gerada a PTK, o AP envia para o Cliente o WPA IE, que indica as capacidades do AP. Esta informação é criptografada com a Chave Transiniente (TK). É gerado o valor de integridade MIC.
Passo 4) Após receber a mensagem o Cliente envia uma mensagem de confirmação.
Quando o processo de chave de unicast é finalizado, se inicia o processo de chave Broadcast/Multicast. A chave GTK é gerada a partir da GMK, uma chave de grupo mestra.
A GMK nunca é enviada na rede, e o seu conhecedor e somente o AP. A GTK é entregue de forma segura, sendo criptografada usando o KEK.
a) Chave de Broadcast/Multicast, chamada GTK (Group Transient Key).
b) Número de Sequência que será usado na próxima tranmissão de Broadcast
c) Resultado do MIC
4)O Cliente envia a confirmação do recebimento.
Para uma rede com autenticação WPA Pre-shared Key (PSK), o processo funciona da mesma forma, com uma única diferença na geração da PMK, onde ocorre a concatenação dos seguintes valores:
a) PSK
b) SSID
a) O Tamanho do SSID
Esses dados são "hasheados" 4096 vezes e gerado a PMK de 256 bytes.