como você provavelmente já sabe Wired Equivalent Privacy (WEP) é usado por empresas para proteger suas conexões sem fio de ataques de farejar. Você provavelmente também ouviu falar que não é muito seguro. Na primeira parte desta série de 2 partes, vou explicar o funcionamento interno do WEP e acompanhá-lo no próximo mês com por que é inseguro.
como você provavelmente já sabe Wired Equivalent Privacy (WEP) é usado por empresas para proteger suas conexões sem fio de ataques de farejar. Você provavelmente também ouviu falar que não é muito seguro. Na primeira parte desta série de 2 partes, vou explicar o funcionamento interno do WEP e acompanhá-lo no próximo mês com por que é inseguro.
preciso de WEP?
um usuário autêntico, Bob usa seu laptop para verificar sua conta do Gmail todos os dias. Ele tem uma placa sem fio em seu laptop que detecta automaticamente o ponto de acesso sem fio (WAP) do seu ISP do outro lado da rua. Uma vez que ele está conectado ao WAP, ele pode ir em frente e verificar seu e-mail. Alice é um usuário sorrateiro que não quer pagar o ISP pelo acesso à Internet. No entanto, ela sabe que o ISP do outro lado da rua tem um ponto de acesso ao qual qualquer pessoa pode se conectar e acessar a Internet. Ela se conecta ao laptop e logo está baixando músicas da Internet. O WEP foi projetado para garantir que os usuários se autentiquem antes de usar recursos, para bloquear Alice e permitir Bob. Vamos ver como ele faz isso.
como o WEP funciona
o WEP usa o algoritmo RC4 para criptografar os pacotes de informações à medida que são enviados do ponto de acesso ou da placa de rede sem fio. Assim que o ponto de acesso recebe os pacotes enviados pela placa de rede do usuário, ele os descriptografa.
cada byte de dados será criptografado usando uma chave de pacote diferente. Isso garante que, se um hacker conseguir quebrar essa chave de pacote, a única informação que vazou é a que está contida nesse pacote.
a lógica de criptografia real no RC4 é muito simples. O texto simples é XOR-ed com um fluxo de teclas infinitamente longo. A segurança do RC4 vem do sigilo da chave de pacote que é derivada do keystream.
então, o que é uma chave de pacote?
a chave de pacote é formada combinando uma senha pré-compartilhada, uma matriz de estado e um vetor de inicialização (IV). Vamos primeiro entender cada um desses Termos:
senha pré-compartilhada: a mesma senha pré-compartilhada é usada por todos os usuários para cada pacote que é transmitido.
State Array: é uma série de números que são embaralhados e usados pelo RC4 para construir o fluxo de chaves.
Vetor de inicialização (IV): O IV é um número aleatório de 3 bytes gerado pelo computador. É anexado ou anexado ao texto cifrado e enviado ao receptor que retira o IV antes de descriptografar o texto cifrado.
o algoritmo RC4 consiste em 2 partes principais:
o algoritmo de agendamento de chaves: o processo KSA envolve a criação de uma matriz de Estado embaralhada . Esta matriz de Estado agora será usada como entrada na segunda fase, chamada de fase PRGA.
o algoritmo de Geração Pseudo-aleatória: a matriz de Estado do processo KSA é usada aqui para gerar um fluxo de chave final. Cada byte do fluxo de chaves gerado é então Xor’ed com o byte de texto simples correspondente para produzir o texto cifrado desejado.
algoritmo de programação de chaves
o IV é calculado usando uma matriz de estado e propriedades da senha pré-compartilhada. Isso é feito criando uma matriz de valores iguais ao índice que você deseja usar no algoritmo. O Índice para WEP por padrão é 256. Os componentes necessários para o KSA são os valores das variáveis i E j, O valor do índice, a senha pré-compartilhada e seu comprimento. O algoritmo que usa esses valores para gerar um fluxo de chaves final é descrito abaixo.
inicialização:
For i=0 ... index-1
S=i
J=0
Scrambling:
For i=0 ... index-1
J = j + state + K
Swap(state , state)
um loop é executado primeiro de 0 ao índice-1 para inicializar a matriz de estado com valores de 0 ao índice. Por exemplo. Se index =4, a matriz de estado será preenchida com valores de 0 a 3. Portanto, os valores da matriz serão os seguintes:
s=0 s=1 s=2 s=3
o valor de j é definido como 0. Outro loop é então iniciado. Para cada vez através do loop, o valor de j é calculado e o valor da matriz mantido no estado é trocado pelo valor mantido no estado .
algoritmo de Geração Pseudo-Aleatória (PRGA)
um gerador de números pseudo-aleatórios (PRNG) é um algoritmo que gera uma sequência aleatória de números. O PRGA é responsável por criar os valores de streaming usados para criptografar o texto simples, que é baseado na matriz de estado, a saída do KSA . A metodologia que o PRGA segue é descrita abaixo.
inicialização:
I=0 j=0 index=4
algoritmo de Geração
I=(i+1) mod index
J=(j+state) mod index
Swap(state, state)
Z=state + statemod index]
o valor de streaming é criado por looping através do algoritmo para cada byte do pacote. As variáveis i E j são inicializadas para 0. Para cada pacote, o valor de j é calculado e o valor da matriz mantido no estado é trocado pelo valor mantido no estado . A saída z é então calculada para cada pacote. No final do processo, temos um fluxo PRGA.
o fluxo PRGA é então Xor’ed com o texto simples para gerar texto cifrado que é transmitido para a outra parte.
um exemplo
vamos ilustrar os conceitos acima na forma de um exemplo. O texto simples que deve ser criptografado é teste. A senha que será usada aqui é 6258. Os valores iniciais de nossa variável são como segue:
i=0 j=0 password=6258 pass length=4 index=4
a Seguir o algoritmo que obtém:
Passo-1
State array: State=0 State=1 State=2 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 6 mod 4 = 2
Swap(State , State) = Swap(0,2)
State=2 State=1 State=0 State=3
Passo-2
i=1 j=2
State array: State=2 State=1 State=0 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 5 mod 4 = 1
Swap(State, State) = Swap(1,0)
State=2 State=0 State=1 State=3
Passo 3
i=2 j=1
State array: State=2 State=0 State=1 State=3
Password: K=6 K=2 K=5 K=8
j = + K]mod 4 = 7 mod 4 = 3
Swap(State, State) = Swap(1,3)
State=2 State=0 State=3 State=1
Passo 4
i=3 j=3
State array: State=2 State=0 State=3 State=1
Password: K=6 K=2 K=5 K=8
j = +K]mod 4 = 12 mod 4 = 0
Swap(State, State) = Swap(1,2)
State=1 State=0 State=3 State=2
Final State Array: State=1 State=0 State=3 State=2
uma Vez que a KSA matriz de estado está pronto, os pacotes prga; procedimento é inicializado. O procedimento é o seguinte:
Initially i=0 j=0
K=6 K=2 K=5 K=8
primeiro Loop:
State=1 State=0 State=3 State=2
i=1 j=0+State=0+0=0
Swap(State, State) = Swap(0,1)
State=0 State=1 State=3 State=2
z = State + State mod 4] = State = 1
z1 = 00000001
segundo Loop:
State=0 State=1 State=3 State=2
i=2 j=0+State=3
Swap(State, State) = Swap(3,2)
State=0 State=1 State=2 State=3
z = State + State mod 4] = State = 1
z2 = 00000001
Terceiro Ciclo:
State=0 State=1 State=2 State=3
i=3 j=3+State=6 mod 4 = 2
Swap(State,State) = Swap(3,2)
State=0 State=1 State=3 State=2
z = State + State] mod 4 = State = 1
z3=00000001
Quarta Loop:
State=0 State=1 State=3 State=2
i=4 j=2+State=2+State = 2+State = 2
Swap(State,State) = Swap(State,State) = Swap(0,3)
State=3 State=1 State=0 State=2
z4 = State + State] = State +
State] = State = 2
z4=00000010
As saídas z1-z4 no final de cada ciclo deve ser Xor ed com o ASCII de cada caractere de texto simples, que no nosso caso é o TESTE. Portanto, o texto cifrado para o teste de texto simples será o seguinte:
T xor z1 = 01010100 xor 00000001 = 01010101 = U
E xor z2 = 01000101 xor 00000001 = 01000100 = D
S xor z3 = 01010011 xor 00000001 = 01010010 = R
T xor z4 = 01010100 xor 00000010 = 01010110 = U
o teste de palavras quando criptografado com WEP é UDRU.
este artigo foi apenas uma introdução ao WEP e o procedimento exato em que a criptografia ocorre no WEP. Na próxima parte, abordaremos a questão que está mais no topo de suas mentes: “por que o WEP é inseguro? A que riscos estou exposto se usar o WEP?”