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.

30 de jun. de 2009

Entendendo Velocidades WI-FI

As redes sem fio IEEE 802.11 tem a característica de trabalhar com diversas velocidades para ter uma melhor garantia na entrega dos dados.

Precisamos antes conceituar dois termos muito importantes:

Símbolo: A transmissão por rádio frequência não transmite diretamente bits lógicos, ela transmite símbolos. Uma sequência de símbolos são convertidos em bits lógicos de acordo com a codificação utilizada.

Modulação: Define qual característica da Senoide RF que foi alterado (Amplitude, Fase,...) para se transmitir símbolos.

Codificação
: É a forma como os simbolos são lidos e interpretados em bits lógicos.

Técnica de Transmissão
: Como o meio físico é aproveitado para ser transmitido.

802.11b:
Técnica de Transmissão: DSSS

Velocidades:
  • 1 Mbps: DBPSK, Codificação Barker
  • 2 Mbps: DQPSK, Codificação Barker
  • 5,5 Mbps: DQPSK, Codificação CCK
  • 11 Mbps: DQPSK, Codificação CCK
Para entender melhor as codificações, primeiro é importante ressaltar que o DBPSK é o mais seguro para envio de dados, porém o com pior aproveitamento do meio, e o 16-QAM é o menos seguro mas o mais eficiente em aproveitamento do meio. Por isto a modulação e por consequência a velocidade variam de acordo com a distância do Access-Point.

Modulação DBPSK: (Diferencial Binary Phase-Shift Keying) Modulação baseada no diferencial da fase de uma onda. A regra diz o seguinte: "Se for necessário a transmissão de um ZERO, não altere a fase, se for necessário a transmissão de um UM varie a fase em 180 graus".

Desta forma, se a onda senoidal estiver crescendo positivamente e eu tiver a necessidade de expressar o simbolo 1, eu inverteria o sentido da onda, assim fazendo ela crescer negativamente. Se a onda estiver crescendo negativamente eu poderia fazer a mesma crescer positivamente.

Modulação DQPSK: (Quadrature Phase-Shift Keying) Modulação que se basea na variação de 90 graus da Senoide RF para expressar um grupo de dois simbolos. O importante ressaltar é que ela expressa o próximo simbolo através da onda atual. A seguinte regra é utilizada:

00: "Se o próximo símbolo for 00, não altere a senoide RF."
01: "Se o próximo símbolo for 01, gire 90 graus a senoide."
10: "Se o próximo símbolo for 10 gire 270 graus o sentido da senoide RF."
11: "Se o próximo símbolo for 11 gire 180 graus o sentido da senoide RF."

Obs.: Existe a modulação QPSK, onde esta regra se modifica um pouco, porém a DQPSK que é efetivamente usada em modulação 802.11. Falando de QPSK, a regra seria a seguinte:

00: "Se o próximo símbolo for 00, gire 270 graus a senoide RF."
01: "Se o próximo simbolo for 01, gire 180 graus a senoide RF."
10: "Se o próximo símbolo for 10, gire 90 graus a senoide RF."
11: "Se o próximo símbolo for 11, não altere a senoide RF."

Codificação Barker: A codificação Barker utiliza 11 simbolos de sinais de RF para formar 1 Bit.
Nesta codificação, seguimos a seguinte regra:

Bit lógico 0: 11001100100
Bit lógico 1: 00110011011

Logo, para enviar uma simples sequência lógica de bits "1001", o equipamento que trabalha com 802.11 precisaria enviar a seguinte sequência de símbolos:

1: 00110011011
0: 11001100100
0: 11001100100
1: 00110011011

Resultado: 00110011011 - 11001100100 - 11001100100 - 00110011011

Codificação CCK (Complementary Code Keying): Neste tipo de codificação é possível transmitir 4 bits lógicos em uma sequência de 8 símbolos (5.5 Mbps) ou 8 Bits lógicos em uma sequência de 8 símbolos (11Mbps) através de um complexo esquema de codificação baseado no DQPSK. Para não entrar no mérito matemático precisamos entender que cada simbolo pode variar em 4 valores lógicos, seguindo a lógica do DQPSK.

802.11a:

Tipo de Tranmissão: OFDM
  • 6 Mbps: BPSK
  • 9 Mbps: BPSK
  • 12 Mbps: QPSK
  • 18 Mbps: QPSK
  • 24 Mbps: 16-QAM
  • 36 Mbps: 16-QAM
  • 48 Mbps: 64-QAM
  • 54 Mbps: 64-QAM

802.11g:

Tipo de Modulação: OFDM e DSSS (Compatibilidade 802.11b)
  • 1 Mbps: DBPSK, Codificação Barker (DSSS)
  • 2 Mbps: DQPSK, Codificação Barker (DSSS)
  • 5,5 Mbps: DQPSK, Codificação CCK (DSSS)
  • 6 Mbps: BPSK, Codificação: OFDM
  • 9 Mbps: BPSK, Codificação: OFDM
  • 11 Mbps: DQPSK, Codificação CCK (DSSS)
  • 12 Mbps: QPSK, Codificação: OFDM
  • 18 Mbps: QPSK, Codificação: OFDM
  • 24 Mbps: 16-QAM, Codificação: OFDM
  • 36 Mbps: 16-QAM, Codificação: OFDM
  • 48 Mbps: 64-QAM, Codificação: OFDM
  • 54 Mbps: 128-QAM, Codificação: OFDM

23 de abr. de 2009

Diferença entre LMI Cisco e ANSI e Q933a

Além de ser Proprietário Cisco, Este LMI envia o valor de CIR em suas mensagens. Ele é enviado como "BW".

Observe a saida do debug

Cisco LMI type, DLCI 1023

: Serial1(in): Status, myseq 68
: RT IE 1, length 1, type 0
: KA IE 3, length 2, yourseq 68, myseq 68
: PVC IE 0x7 , length 0x6 , dlci 100, status 0x2 , bw 0
: PVC IE 0x7 , length 0x6 , dlci 200, status 0x2 , bw 0
Repare que nos outros dois LMI este valor não é publicado.

ANSI-617d (ANSI or annex D) LMI type, DLCI 0

: Serial1(in): Status, myseq 3
: RT IE 1, length 1, type 0
: KA IE 3, length 2, yourseq 4 , myseq 3
: PVC IE 0x7 , length 0x3 , dlci 100, status 0x0
: PVC IE 0x7 , length 0x3 , dlci 200, status 0x0

Q933a (CCITT or annex A) LMI type, DLCI 0

: Serial1(in): Status, myseq 1
: RT IE 51, length 1, type 0
: KA IE 53, length 2, yourseq 2 , myseq 1
: PVC IE 0x57, length 0x3 , dlci 100, status 0x0
: PVC IE 0x57, length 0x3 , dlci 200, status 0x0
Fonte: http://www.cisco.com/en/US/tech/tk713/tk237/technologies_tech_note09186a0080094183.shtml#t5

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