Objetivo do Blog:
1) "Go Deep!" A internet está repleta de post com conteúdo superficiais, mas fraca de conteúdo apronfudados.

2) "KISS: Keep It Simple Stupid!" Os post devem ser o mais simples possíveis. Eu parto da filosofia que se algo é complicado, com certeza você não entendeu a ponto de conseguir simplificar e simplesmente replicou a complexidade que lhe foi ensinada.

29 de jul. de 2009

Desmitificando o CSMA/CA

Caros,

Existe uma lenda urbana sobre Wireless quase tão famosa quando a lenda da Loira dos banheiros aqui de São Paulo. Essa lenda diz que toda rede 802.11 trabalha igual ao Token Ring, solicitando sempre o meio para o Access-Point.

Bom, gostaria de explicar aqui a forma correta de como funciona as redes 802.11, de forma geral.

Temos descrito pelo IEEE dois métodos básicos de trabalho em redes Wi-Fi:

DCF (Distributed Coordination Function): De forma geral, neste método o acesso a rede é distribuido, sendo cada estação Wi-Fi tendo seu proprio algoritmo para usar o meio.

PCF (Point Coordination Function): Neste método, o AP é responsável por alocar o meio. Este método não é implementando por nenhum fabricante conhecido.

As redes 802.11, que usam o DCF foram projetadas para trabalhar com o CSMA/CA, sendo diferente em uma letra do nosso amigo CSMA/CD. O processo de funcionamento, porém, é em grande parte muito diferente.

No CSMA/CD, toda vez que uma maquina decide transmitir e percebe que o maio está livre, ela simplesmente transmite. Caso haja algum problema, ai sim nosso amigo COLISION DETECTION age e distribui um valor aleatório para o equipamento transmissor e ele é obrigado a zerar este valor para ser capaz de transmitir, ou seja, primeiro eu espero que alguém seja atropelado para depois instalar uma passarela. ;-)

No CSMA/CA, a coisa funciona diferente. Quando uma estação deseja transmitir, ela espera que o meio esteja livre, quando o meio estiver livre, ela vai aguardar os seguintes tempos antes de transmitir:

1) Interframe Space (IFS). Temos 3 tipos de tempos, sendo que o maior deles é o DIFS e o menor o SIFS. Em redes 802.11, a rede trabalha em Slot Times, onde cada Slot Time representa 20us (u = Microsegundos)
  • SIFS (Short Interframe Space): 10 us
  • PIFS (PCF Interframe Space): SIFS + 1 Time Slot = 30 us.
  • DIFS (DCF Interframe Space): PIFS + 1 Time Slot = 50 us.
2) Random Backoff Time: Tempo aleatório aguardado para transmissão. Usado mais comumente para garantir que não haja uma transmissão simultânea.

Ok, até aqui sem problemas, mas quando usar cada IFS?

Bem, vamos lá:

  • SIFS: Todo os dados em redes Wireless trabalham com confirmação. Logo, depois de um dado ser enviado a um dispositivo, seja AP ou Cliente, o mesmo devolve um ACK.
  • PIFS: Não implementado, assim como o PCF.
  • DIFS: Tempo usado em uma transmissão normal de dados.
Então vou agora demonstrar passo a passo como ocorre a transmissão em uma rede Wireless:

Passo 1: Estação Escuta o Meio.


Passo 2: Estações geram tempo de espera para transmissão.

Passo 3: Inicia-se a contagem regressiva (Count down).


Passo 4: Ao chegar a Zero, a estação da Direita transmite o dado.

No cabeçalho Wi-Fi (802.11) existe um campo chamado NAV (Network Allocation Vector). Este campo informa por quanto tempo o meio estará alocado para a estação que está transmitindo. Como isto é transmitido em ondas de rádio, todos estações recebem este campo.

Obs: O NAV é calculado somando os seguinte valores:

1) Tempo para Transmitir o dado + Cabeçalho
2) SIFS
3) Tempo para receber o ACK.

Passo 5: O Receptor, neste caso o AP, envia um ACK um SIFS após ter recebido o dado.



Passo 6: A estação checa o meio para ter certeza que está livre.

Passo 7: Estando livre, a estação da direita transmite o dado.



Bom pessoal, essa é ideia. Isso considerando a rede toda trabalhando com o mesmo protocolo, não tendo mix de 802.11b e 802.11g. Vou fazer outro post falando do modo misto.

27 de jul. de 2009

Processo de Criptografia WPA

No artigo anterior discutimos sobre o processo de obtenção das chaves de criptografia WPA de Unicast (PTK) e Multicast/Broadcast (GTK). Este artigo tem como foco explicar de forma clara o processo de criptografia em sí.


Passo 1) É realizado uma concatenação da chave transiniente, Mac de destino e número do pacote.


Passo 2) O Resultado obtido é inserido no algoritmo RC4 juntamente com o Initialization Vector (IV). A partir deste ponto temos a chave de sessão que será usada para criptografar os dados deste pacote.



Passo 3) Será realizada a função XOR com o dado a ser criptografado e a chave de sessão:


Passo 4) O dado criptografado é inserido no cabeçalho 802.11 assim como o Initialization Vector.



Observando de forma Global, este processo ficará da seguinte forma:



Assim, uma das grandes vantagens do algoritmo WPA é que ele individualiza a chave de criptografia por pacote e não mais somente por usuário, como ocorre com o WEP.


3 de jul. de 2009

Entendendo o processo de chaves WPA

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.

Twitter

    Siga-me no Twitter

    Sobre o autor do blog.

    Meu nome é Yuri Mecca, tenho 24 anos e trabalho na área de redes desde os 18 anos quando entrei na faculdade. Neste percurso passei por quatro empresas. Atualmente sou responsável pelos projetos de Wireless e Datacenter na CPM Braxis, parceira GOLD da Cisco. Sou Certificado CCNP, e estou seguindo a área de Certificação de Wireless, onde tenho atualmente o CCNA de Wireless.
    Eu fui aprovado no Exame teórico CCIE Wireless em Dezembro e meu LAB está agendado para 5 de Maio.


    Siga-me no Twitter: yurimecca