Criptografia Wireless

10
  WEP - Wired Equivalent Privacy: o objetivo do uso do WEP é garantir a confidencialidade e a integridade das informações na rede Wireless. É o protoloco original de autenticação e criptografia definido pelo IEEE 802.11, sua chave varia de 40 e 128 bits (opcional). Possui um vetor de inicialização de 24 bits e é transmitido em texto claro, isso diminui consideravelmente a força do algoritmo. Existem ferramentas que ficam capturando os vetores de inicialização dos quadros e dessa forma conseguem decifrar a chave. Utiliza o protocolo RC4 para cifrar os dados. AS chaves são configuradas manualmente nos pontos de acesso e seus clientes, não existe uma gerência de chaves.  TKIP - Temporal Key Integrity  Protocol: foi criado com o propósito de contornar os problemas do WEP. Usa chave de 128 bits, o vetor de incialização é 48 bits e também utiliza o protocolo RC4 para cifrar os dados. Utiliza uma chave por pacote ( per-packet key mixing ). Cada estação combina a sua chave com seu endereço MAC para criar uma chave de criptografia que é unica. A chave compartilhada entre o ponto de acesso e os clientes wireless são trocadas periodicamente. Esse é o motivo pela qual falamos que o TKIP utiliza chaves dinâmicas de criptografia. Dessa forma fica mais difícil para um atacante quebrar a chave, mesmo que ele consiga, a vida útil da chave será pequena.   WPA - Wi-Fi Protected Access: Em 2001 a IEEE começou o desenvolvimento do padrão IEEE 802.11i com intuito de prover maior segurança em redes Wireless. Em 2002 a Wi-Fi Alliance optou por usar o que já estava pronto desse padrão, nesse momento ainda não estava completo o IEEE 802.11i. Assim sugiu o WPA que representa o pre-IEEE 802.11i. O WPA utiliza o TKIP para criptografia dos dados e padrão 802.1x(EAP) para autenticação. Existe tambem a possibilidade de utilizar o WPA-PSK que traz as vantagens do WPA sem a necessidade de um servidor RADIUS. A autenticação ocorre com uma chave compartilhada, parecido com o WEP. Depois que acontece a autenticação deriva-se outra chave para a criptografia dos quadros.   WPA2 ou IEEE 802.11i: podemos considerar o estado da arte em segurança para redes Wireless. Agregou vários itens do WPA, como o uso do IEEE 802.1x/EAP e adicionou novidades, como a utilização do algoritmo forte de criptografia, o AES (Advanced Encryption Standard). Em criptografia, RC4 (ou ARC4) é o algoritmo de criptografia de fluxo mais usado no software e utilizado nos protocolos mais conhecidos, como Secure Socket Layers (SSL) (para proteger o tráfego Internet) e WEP (para a segurança de redes sem fios.RC4 não é considerado um dos melhores sistemas criptográficos pelos adeptos da criptografia, e em algumas aplicações podem converter-se em sistemas muito inseguros. No entanto, alguns sistemas baseados em RC4 são seguros o bastante num contexto prático.

Transcript of Criptografia Wireless

Page 1: Criptografia Wireless

5/10/2018 Criptografia Wireless - slidepdf.com

http://slidepdf.com/reader/full/criptografia-wireless 1/10

 

  WEP - Wired Equivalent Privacy: o objetivo do uso do WEP é garantir a confidencialidade e aintegridade das informações na rede Wireless. É o protoloco original de autenticação ecriptografia definido pelo IEEE 802.11, sua chave varia de 40 e 128 bits (opcional). Possui umvetor de inicialização de 24 bits e é transmitido em texto claro, isso diminui consideravelmente aforça do algoritmo. Existem ferramentas que ficam capturando os vetores de inicialização dosquadros e dessa forma conseguem decifrar a chave. Utiliza o protocolo RC4 para cifrar os dados.AS chaves são configuradas manualmente nos pontos de acesso e seus clientes, não existe

uma gerência de chaves.

  TKIP - Temporal Key Integrity  Protocol: foi criado com o propósito de contornar os problemas doWEP. Usa chave de 128 bits, o vetor de incialização é 48 bits e também utiliza o protocolo RC4para cifrar os dados. Utiliza uma chave por pacote (per-packet key mixing ). Cada estaçãocombina a sua chave com seu endereço MAC para criar uma chave de criptografia que é unica.A chave compartilhada entre o ponto de acesso e os clientes wireless são trocadasperiodicamente. Esse é o motivo pela qual falamos que o TKIP utiliza chaves dinâmicas decriptografia. Dessa forma fica mais difícil para um atacante quebrar a chave, mesmo que eleconsiga, a vida útil da chave será pequena.

   WPA - Wi-Fi Protected Access: Em 2001 a IEEE começou o desenvolvimento do padrão IEEE

802.11i com intuito de prover maior segurança em redes Wireless. Em 2002 a Wi-Fi Allianceoptou por usar o que já estava pronto desse padrão, nesse momento ainda não estava completoo IEEE 802.11i. Assim sugiu o WPA que representa o pre-IEEE 802.11i. O WPA utiliza o TKIPpara criptografia dos dados e padrão 802.1x(EAP) para autenticação. Existe tambem apossibilidade de utilizar o WPA-PSK que traz as vantagens do WPA sem a necessidade de umservidor RADIUS. A autenticação ocorre com uma chave compartilhada, parecido com o WEP.Depois que acontece a autenticação deriva-se outra chave para a criptografia dos quadros.

   WPA2 ou IEEE 802.11i: podemos considerar o estado da arte em segurança para redes

Wireless. Agregou vários itens do WPA, como o uso do IEEE 802.1x/EAP e adicionou novidades,como a utilização do algoritmo forte de criptografia, o AES (Advanced Encryption Standard).

Em criptografia, RC4 (ou ARC4) é o algoritmo de criptografia de fluxo mais usado no software e

utilizado nos protocolos mais conhecidos, como Secure Socket Layers (SSL) (para proteger otráfego Internet) e WEP (para a segurança de redes sem fios.RC4 não é considerado um dosmelhores sistemas criptográficos pelos adeptos da criptografia, e em algumas aplicaçõespodem converter-se em sistemas muito inseguros. No entanto, alguns sistemas baseados emRC4 são seguros o bastante num contexto prático.

Page 2: Criptografia Wireless

5/10/2018 Criptografia Wireless - slidepdf.com

http://slidepdf.com/reader/full/criptografia-wireless 2/10

 

História

Em 1987 Ronald Rivest desenvolveu o algoritmo RC4 para aempresa RSA Data Security, Inc., líder mundial em algoritmos de

criptografia. Foi, durante tempos, um segredo comercial muitobem guardado, muito popular, e utilizado largamente emsoftware, como Lotus Notes,  Apple Computer’s AOCE, OracleSecure SQL, Internet Explorer, Netscape e Adobe Acrobat. 

Sete anos depois, surge numa mailing list dedicadaà criptografia (Cypherpunks) código alegadamente equivalente aoRC4. Utilizadores com cópias legais puderam confirmar acompatibilidade. É de realçar, no entanto, que esta não é a

implementação comercial, e, como tal, é habitualmente referidacomo ARC4 (Alleged RC4).

As transformações neste algoritmo são lineares, não sãonecessários cálculos complexos, já que o sistema funcionabasicamente por permutações e somas de valores inteiros, o quetorna este algoritmo muito simples e rápido. Um raro exemplode Barato, Rápido e Bom .

De uma forma geral, o algoritmo consiste em utilizar um array  que

a cada utilização tem os seus valores permutados, e misturadoscom a chave, o que provoca que seja muito dependente desta.Esta chave, utilizada na inicialização do array , pode ter até 256bytes (2048 bits), embora o algoritmo seja mais eficiente quandoé menor, pois a perturbação aleatória induzida no array ésuperior.

[editar]Algoritmo

[editar]KSAO algoritmo key-scheduling é usado para inicializar a permutaçãono array S . K.Length é definido como o número de bytes nachave e pode variar entre 1 e 256, tipicamente entre 5 e 16correspondendo ao tamanho de chave de 40-128 bits.Primeiro, o array S é inicializado de tamanho 256.Na primeira repetição:

1. O array S é preenchido com os valores de 0 à 255.

Na segunda repetição:

Page 3: Criptografia Wireless

5/10/2018 Criptografia Wireless - slidepdf.com

http://slidepdf.com/reader/full/criptografia-wireless 3/10

 

1. É somado o valor de j , o valor de S apontado por i e o valorde K (chave) apontado por i e armazenado na variável j .

2. Troca os valores entre S[i] e S[j] .[editar]C#

 

byte[] S = new byte[256];

for (int i = 0; i < 256; i++)

{

S[i] = (byte)i;

}

int j = 0;

for (int i = 0; i < 256; i++)

{j = (j + S[i] + K[i % K.Length]) % 256;

Troca(ref S[i], ref S[j]);

}

[editar]PRGA

Para todas repetições necessárias, o PRGA modifica o estado ea saída do byte resultante.Em cada repetição:

1. O PRGA incrementa em 1 a variável i .2. Adiciona o valor de S apontado por i com j e armazena o

resultado em j .3. Troca os valores entre S[i] e S[j] .4. A saída é então calculada fazendo-se a operação XOR (ver

em Lógica binária) entre o valor de S apontado por S[i] + 

S[j] e a mensagem original apontado por k .[editar]C#

 

int i = 0, j = 0;

// a mensagem original está armazenada na variável "input".

byte[] result = new byte[input.Length];

for (int k = 0; k < input.Length; k++)

{

i = (i + 1) % 256;

j = (j + S[i]) % 256;

Swap(ref S[i], ref S[j]);

result[k] = (byte)(S[(S[i] + S[j]) % 256] ^ input[k]);

}

Page 4: Criptografia Wireless

5/10/2018 Criptografia Wireless - slidepdf.com

http://slidepdf.com/reader/full/criptografia-wireless 4/10

 

return result;

O algoritmo usado para trocar os valores das variáveis

(ver Algoritmo Xor Swap).

 

static void Swap(ref byte val1, ref byte val2)

{

val1 = (byte)(val1 ^ val2); // val1 XOR val2

val2 = (byte)(val1 ^ val2);

val1 = (byte)(val1 ^ val2);

}

[editar]Exemplo

Considere a mensagem input = "Texto", convertido em bytes(ver Ascii), input = { 84, 101, 120, 116, 111 }.

Adoptemos a chave K = "chave", que convertido em bytes, K = {99, 104, 97, 118, 101 }.

Em cada repetição:

k = 0 

i = (i + 1) % 256; 

i = 1

 j = (j + S[i]) % 256; 

 j = (0 + S[1]) % 256

 j = 229

Swap(ref S[i], ref S[j]); 

S[229] = 204

S[1] = 229

result[k] = (byte)(S[(S[i] +

S[j]) % 256] ^ input[k]); 

result[0] = S[(229 + 204) %

256] ^ 84

result[0] = S[177] ^ 84

result[0] = 104 ^ 84

result[0] = 60

k = 1 

i = (i + 1) % 256; 

i = 2

 j = (j + S[i]) % 256; 

 j = (229 + S[2]) % 256

 j = 20

Swap(ref S[i], ref S[j]); 

S[20] = 68

S[2] = 47

result[k] = (byte)(S[(S[i] +

S[j]) % 256] ^ input[k]); 

result[1] = S[(47 + 68) %

256] ^ 101

result[1] = S[115] ^ 101

result[1] = 125 ^ 101

result[1] = 24

k = 2 

i = (i + 1) % 256; 

i = 3

 j = (j + S[i]) % 256; 

 j = (20 + S[3]) % 256

 j = 188

Swap(ref S[i], ref S[j]); 

S[188] = 92

S[3] = 168

result[k] = (byte)(S[(S[i] +

S[j]) % 256] ^ input[k]); 

result[2] = S[(168 + 92) %

256] ^ 120

result[2] = S[4] ^ 120

result[2] = 17 ^ 120

result[2] = 105

Page 5: Criptografia Wireless

5/10/2018 Criptografia Wireless - slidepdf.com

http://slidepdf.com/reader/full/criptografia-wireless 5/10

 

k = 3 

i = (i + 1) % 256; 

i = 4

 j = (j + S[i]) % 256; 

 j = (188 + S[4]) % 256

 j = 205

Swap(ref S[i], ref S[j]); 

S[205] = 42

S[4] = 17

result[k] = (byte)(S[(S[i] + S[j]) % 256] ^

input[k]); 

result[3] = S[(17 + 42) % 256] ^ 116

result[3] = S[59] ^ 116

result[3] = 160 ^ 116

result[3] = 212

k = 4 

i = (i + 1) % 256; 

i = 5

 j = (j + S[i]) % 256; 

 j = (205 + S[5]) % 256

 j = 70

Swap(ref S[i], ref S[j]); 

S[70] = 153

S[5] = 121

result[k] = (byte)(S[(S[i] + S[j]) % 256] ^

input[k]); 

result[4] = S[(121 + 153) % 256] ^ 111

result[4] = S[18] ^ 111

result[4] = 85 ^ 111

result[4] = 58

Ou seja, o texto cifrado result = { 60, 24, 105, 212, 58 }. Aplicando

o mesmo algoritmo em result , com a mesma chave consegue-serecuperar a mensagem original input .[editar]Implementação em C

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

//==================================================

unsigned char chave[256];unsigned char entrada[256];

unsigned char *resultado;

unsigned char s[256];

unsigned int i, j, tamanho_chave, tamanho_entrada;

 

//==================================================

void troca()

{

unsigned char aux;

aux=s[i];

s[i]=s[j];

s[j]=aux;

}

Page 6: Criptografia Wireless

5/10/2018 Criptografia Wireless - slidepdf.com

http://slidepdf.com/reader/full/criptografia-wireless 6/10

 

//====================================================

void ksa ()

{

for (i = 0; i < 256; i++){

s[i]=i;

}

j=0;

for (i = 0; i < 256; i++)

{

j = (j + s[i] + chave[i % tamanho_chave]) % 256;

 

troca(s, i, j);

}

i=0;

j=0;

}

//====================================================

void prga ()

{

unsigned int aux;

unsigned char result[tamanho_entrada-1];

 

for (aux=0; aux < tamanho_entrada; aux++)

 

{

i = (i + 1) % 256;

j = (j + s[i]) % 256;

troca(s,i,j);

result[aux]=(s[(s[i] + s[j]) % 256])^entrada[aux];

}

resultado=(unsigned char*)malloc((tamanho_entrada-1)*(sizeof(unsigned

 

char)));

strcpy(resultado, result);

}

//====================================================

int main ()

{

unsigned char confirma[256];

int confirm;

printf ("Escreva a Frase a ser Criptografada:");

scanf ("%[^\n]", entrada);

tamanho_entrada=strlen(entrada);

 

fflush(stdin);

printf ("\nChave:");

scanf ("%[^\n]", chave);

tamanho_chave=strlen(chave);

 

system("pause");

ksa ();

Page 7: Criptografia Wireless

5/10/2018 Criptografia Wireless - slidepdf.com

http://slidepdf.com/reader/full/criptografia-wireless 7/10

 

prga ();

printf ("\nResultado Gerado: %s\n", resultado);

system("pause");

fflush(stdin);

printf ("\n\nPara Desfazer, confirme a chave: ");TENTA: scanf ("%[^\n]", confirma);

confirm=strcmp(confirma, chave);

if (confirm==0)

{

printf ("\nDesfazendo....\n");

strcpy(entrada, resultado);

ksa();

prga ();

printf ("\nFrase Original: %s\n", resultado);

fflush(stdin);

system("pause");

}

else

{

fflush(stdin);

printf ("Chave nao confere, por favor insira a chave correta:\n");

goto TENTA;

}

return 0;

}

O Wikisource contém fontes primárias relacionadas com este artigo: RC4  

[editar] 

Advanced Encryption StandardOrigem: Wikipédia, a enciclopédia livre.

Page 8: Criptografia Wireless

5/10/2018 Criptografia Wireless - slidepdf.com

http://slidepdf.com/reader/full/criptografia-wireless 8/10

 

(Redirecionado de AES) 

Nota: Se procura pela empresa multinacional AES, veja  AES Corporation . 

Advanced Encryption Standard - AES

Em Criptografia, o Advanced Encryption Standard (AES, ou Padrão de Criptografia

Avançada, em português), também conhecido por Rijndael, é uma cifra de bloco adotada

como padrão de criptografia pelo governo dos Estados Unidos. Espera-se que seja utilizado

em todo o mundo e analisada extensivamente, assim como foi seu predecessor, o Data

Encryption Standard(DES). O AES foi anunciado pelo NIST (Instituto Nacional de Padrões e

Tecnologia dos EUA) como U.S. FIPS PUB (FIPS 197) em 26 de Novembro de 2001, depois

de 5 anos de um processo de padronização. Tornou-se um padrão efetivo em 26 de Maio de

2002. Em 2006, o AES já é um dos algoritmos mais populares usados para criptografia de

chave simétrica. 

[editar]O Concurso AES

Em 1997 o governo americano, através do NIST (National Institute of Standards and 

Technology ), lançou um processo de seleção que definiria um novo algoritmo de chave

simétrica para proteger informações do governo federal. Este novo algoritmo criptográfico

substituiu o DES (Data Encryption Standard ), que havia sido quebrado pela máquina DES 

Cracker , construída pela ONG Electronic Frontier Foundation com apenas 250 mil dólares.

Em setembro de 1997 o NIST indicou as condições necessárias para a candidatura de

algoritmos para substituir o DES: divulgação pública, direitos autorais livres, e os algoritmos

deveriam ser de chave privada (simétricos) e suportar blocos de 128 bits e chaves de 128, 192

e 256 bits. Em agosto de 1998, na Primeira Conferência dos Candidatos ao AES,

apresentaram-se 15 candidatos: Cast-

256, Crypton, Deal, DFC, E2, Frog, HPC, LOKI97, Magenta, MARS, RC6, Rijndael, Safer+, Ser

pent e Twofish. O NIST solicitou aos membros da comunidade criptográfica mundial uma

análise dos algoritmos candidatos. Em 1999, na Segunda Conferência dos Candidatos AES,

através da análise obtida foram selecionados 5

finalistas: MARS, RC6, Rijndael, Serpent e Twofish. Posteriormente esses 5 algoritmos

sofreram novas análises e seus criadores participaram de debates, fóruns, etc.

Três anos e meio após o início do concurso, o NIST chega à escolha do vencedor: Rijndael. O

nome é uma fusão de Vincent Rijmen e Joan Daemen, os dois belgas criadores do algoritmo.

Segundo o NIST, ele combina as características de segurança, desempenho, facilidade de

implementação e flexibilidade. O Rijndael apresenta alta resistência a ataques como "power

Page 9: Criptografia Wireless

5/10/2018 Criptografia Wireless - slidepdf.com

http://slidepdf.com/reader/full/criptografia-wireless 9/10

 

attack" e "timing attack" e exige pouca memória, o que o torna adequado para operar em

ambientes restritos como "smart cards", PDAs e telefones celulares.

[editar]Desenvolvimento

O Rijndael era um refinamento do Square , um projeto anterior de Daemen e Rijmen. O

Square, por sua vez, evoluiu do Shark . Ao contrário do seu predecessor DES, o Rijndael é

uma rede de permutação-substituição, não uma rede de Feistel. O AES é rápido tanto

em software quanto em hardware, é relativamente fácil de executar e requer pouca memória.

Apesar de ser um padrão novo de criptografia, está sendo atualmente implantado em grande

escala.

[editar]Descrição de Cifra

Estritamente falando, o AES não é exatamente o Rijndael (embora na prática possam ser

permutados) já que o Rijndael suporta uma maior gama de tamanhos do bloco e da chave. O

AES tem um tamanho de bloco fixo em 128 bits e uma chave com tamanho de 128, 192 ou

256 bits, enquanto o Rijndael pode ser especificado com chaves e tamanhos de bloco de

qualquer múltiplo de 32 bits, com um mínimo de 128 bits e um máximo de 256 bits.

A chave é expandida usando-se o escalonamento de chaves do Rijndael. A maioria dos

cálculos do AES é feita em um corpo finito próprio.

O AES opera sobre um arranjo bidimensional de bytes com 4x4 posições, denominado de

estado (as versões do Rijndael com um tamanho de bloco maior têm colunas adicionais no

estado). Para criptografar, cada turno do AES (exceto o último) consiste em quatro estágios:

1. AddRoundKey- cada byte do estado é combinado com a subchave própria do turno

(RoundKey); cada subchave é derivada da chave principal usando o algoritmo de

escalonamento de chaves.

2. SubBytes- é uma etapa de substituição não linear onde cada byte é substituído por outro

de acordo com uma tabela de referência.

3. ShiftRows- é uma etapa de transposição onde cada fileira do estado é deslocada de um

determinado número de posições.

4. MixColumns- é uma operação de mescla que opera nas colunas do estado e combina os

quatro bytes de cada coluna usando uma transformação linear.

O turno final substitui o estágio de MixColumns por um novo estágio de AddRoundKey.

Servidor radius

Page 10: Criptografia Wireless

5/10/2018 Criptografia Wireless - slidepdf.com

http://slidepdf.com/reader/full/criptografia-wireless 10/10

 

 

Servidor RADIUS: é o host que validará o pedido do NAS. A resposta do pedido de

autenticação pode ser positiva (Access-Accept) acompanhada da tabela de parâmetros

de resposta ou negativa (Access-Reject) sem nenhum parâmetro.

Nas respostas positivas (Access-Accept) os parâmetros de resposta são usados para

orientar o NAS de como tratar o cliente.

Numa rede wireless, nos parâmetros podem constar por exemplo, o tempo máximo de

conexão permitida, ou a chave de criptografia que deverá ser usada no canal de

comunicação entre o cliente e o NAS.

O serviço RADIUS é amplamente usado em provedores de acesso a internet. No Brasil

por exemplo, a Oi (empresa de telecomunicações) usa RADIUS no seu produto ADSL

chamado Velox. No sistema Velox, o cliente inicia um pedido de conexão via protocolo

PPPoE, um roteador Cisco série 7000 atende o pedido e envia o nome de usuário e

senha para o servidor RADIUS (localizado num datacenter no Rio de Janeiro), o RADIUS

por sua vez confere as credênciais em seu banco de dados e retorna para o roteador se o

cliente pode se conectar ou não. Se a resposta for positiva, o cliente receberá um IP

público e poderá navegar, caso a resposta seja negativa, o acesso é negado.