• Nenhum resultado encontrado

A Vantagem do Discernidor de Mantin e Shamir para o Algoritmo RC4

3.6 Considerações Finais sobre a Segurança das Redes Locais sem Fios

4.1.3 A Vantagem do Discernidor de Mantin e Shamir para o Algoritmo RC4

Esta seção propõe uma análise da vantagem do discernidor de Mantin e Shamir para o algoritmo RC4. Esta análise faz parte das contribuições deste trabalho. As aplicações mais comuns do algo- ritmo RC4 na criptografia, são implementações que combinam as saídas com a mensagem através de operações OR-exclusivo (XOR), obtendo como resultado o texto cifrado. Tal operação é consid- erada uma permutação, pois o resultado da operação XOR em um byte, resulta um outro byte do mesmo domínio.

A análise que se segue foi idealizada com o objetivo de aplicar o modelo de função vantagem ao algoritmo RC4. Este algoritmo é uma função pseudo-randômica. Como indicado no esquema da Figura 4.2, o algoritmo RC4 é encapsulado, ficando no interior do esquema apresentado. Neste caso, apesar do algoritmo RC4 ser uma função pseudo-randômica, o esquema da Figura 4.2 é uma permu- tação pseudo-randômica. Utilizando o discernidor de Mantin e Shamir, demonstramos a seguir que o uso do algoritmo RC4, como uma função pseudo-randômica, é inapropriado.

Figura 4.2: Esquema criptográfico de exemplo de uso do RC4.

Seja F : {0, 1}k×{0, 1}l → {0, 1}luma família de permutações, que utiliza a saída do algoritmo

RC4, como no esquema da Figura 4.2. Neste esquema k (semente) é uma escolha randômica que define qual das permutações possíveis será usada. Na Figura 4.2, a saída do RC4 é combinada com

a mensagem através de operações do tipo XOR. Por outro lado, seja P erm uma função verdadeira- mente randômica, como foi definido na seção 2.1.2. Assuma então, a existência de duas funções g0

e g1como segue:

Function g1(x) Function g0(x)

y← F (x)R y ← P erm(x)R Return y Return y

Onde ← indica uma escolha randômica a cada chamada de gR 1 ou g0. No caso de F , significa

um k randômico a cada chamada. A função g1 recebe um valor x (mensagem), usa uma função da

família F , escolhida randomicamente através de k, para permutar o valor x por y e retorna o valor. Já a função g0 recebe o valor x, usa uma função verdadeiramente randômica para permutá-lo por y

e retorna o valor.

Considere os experimentos:

Experiment Expprp−1

F,A Experiment Exp prp−0 F,A

d← Ag1

d ← Ag0

Return d Return d

onde A é o adversário como definido na seção 2.1.3. Ele recebe um acesso a um oráculo (g1 ou

g0). A não sabe qual oráculo recebeu, isto ele deve adivinhar enviando mensagens e observando as

saídas geradas pelo oráculo.

A prp-advantage de A é dada por Advprp F,A = P £ Expprp−1 F,A = 1¤ − P £Exp prp−0 F,A = 1 ¤

que significa a probabilidade de A, recebendo o oráculo g1, responder que está no mundo 1, menos a

probabilidade de, recebendo o oráculo g0, responder que que está no mundo 1. Para qualquer t, q, µ,

conforme definido na seção 2.1.3, a prp-advantage de F é Advprp F (t, q, µ) =maxA © Advprp F,A ª

onde o máximo de todos os As que têm complexidade de tempo t e fazem no máximo q consultas ao oráculo e a soma dos tamanhos das consultas seja µ bits.

Adversário Ag Faça X ← 12l Faça C ← 0 Para i de 0 até 255 Faça Y1Y2 ← g(X) // onde Y = Y1Y2 Se Y2 = 1lentão C ← C + 1

Se C ≥ 2 então retorne 1 senão retorne 0

O algoritmo começa atribuindo uma string de bits 12l a X. Esta é a mensagem que será cifrada.

Ela tem o tamanho de duas palavras porque a tendência apresentada ocorre justamente na segunda palavra e todos os bits são fixados no valor 1. O tamanho da palavra é de l bits, no caso do protocolo WEP l é igual a 8. Um contador C recebe zero, ele conta quantas vezes o RC4 gera zero na segunda palavra. A variável i é apenas para limitar o laço em 256 vezes, pois N = 256 é o número de segundos bytes suficientes para discernir entre o mundo 0 e mundo 1, de acordo com o Teorema 4.34. O laço chama o oráculo g para a entrada X e separa o resultado em dois bytes. A partir da análise deste resultado, podemos ter informação sobre a entrada. Caso o segundo byte seja uma stringde bits igual a 1l, então mais uma vez o oráculo fez XOR da mensagem com zero. Neste caso,

o segundo byte da mensagem foi retornado. Além disso, a variável C é incrementada. No final das iterações, o valor de C é verificado. Se C é maior ou igual a 2, significa que o oráculo fez XOR com zero no segundo byte pelo menos duas vezes. Veja as regras da operação XOR na Tabela ??.

Numa função verdadeiramente randômica, a chance de sair um zero no segundo byte de uma única escolha é de 1/N, que neste caso é 1/256. Já a chance de não sair zero é de 255/256. Em duas escolhas independentes a chance de não sair zero é o produto das chance de cada escolha, isto é, (255/256) × (255/256). Assim, em i escolhas independentes, a chance de não sair zero é de (255/256)i e a chance de sair zero é de 1 − (255/256)i. Tendo então saído um zero em uma

das escolhas, a chance de sair um zero em uma outra escolha é de 1 − (255/256)i−1. E podemos

concluir que a chance de sair dois zeros em i escolhas independentes é de [1 − (255/256)i]× [1 −

(255/256)i−1].

[1− (255/256)i]× [1 − (255/256)i−1] = [1− (255/256)256]× [1 − (255/256)255] = 0, 632840× 0, 631400

= 0, 399575176 ≈ 0, 40.

Segundo o Teorema 4.33 a chance de sair zero no segundo byte de uma única saída do RC4 é de 2/N , isto é duas vezes a de uma função verdadeiramente randômica. Seguindo o raciocínio anterior, a chance é de 2/256. Já a chance de não sair zero é de 254/256. Em duas escolha independentes a chance de não sair zero é o produto das chance de cada escolha, isto é, (254/256) × (254/256). Assim em i escolhas independentes a chance de não sair zero é de (254/256)ie a chance de sair zero

é de 1 − (254/256)i. Tendo então saído um zero em uma das escolhas, a chance de sair um zero em

uma outra escolha é de 1 − (254/256)i−1. E podemos concluir que a chance de sair dois zeros em i

escolhas independentes é de [1 − (254/256)i]× [1 − (254/256)i−1].

Nosso adversário A tenta 256 escolhas, então i = 256. Assim,

[1− (254/256)i]× [1 − (254/256)i−1] = [1− (254/256)256]× [1 − (254/256)255]

= 0, 865723× 0, 864666 = 0, 748561

≈ 0, 75

Então é possível afirmar que

PhExpprf −1 F,A = 1 i = 0, 75 PhExpprf −0 F,A = 1 i = 0, 40.

Na primeira equação acima, temos a probabilidade de o adversário A conseguir mais de uma saída igual a zero no segundo byte e retornar 1. Neste caso, o adversário recebe o oráculo g1 que faz

acesso ao algoritmo RC4. Na segunda equação, também temos a probabilidade de o adversário A obter mais de uma saída igual a zero no segundo byte e retornar 1. Mas neste caso, o adversário

recebeu o oráculo g0, que faz acesso a uma função perfeitamente randômica.

Então, a vantagem do adversário A ao atacar o algoritmo RC4 é: Advprf −RC4

F,A = 0, 75− 0, 40 = 0, 35

Considere t a complexidade de tempo do algoritmo do adversário A. O algoritmo Ag possui um

laço com N passos, ou seja, ele é executado N vezes. O custo da execução de cada passo deste laço é o custo de execução da função g(x), que é igual a O(N), quando estamos utilizando o algoritmo RC4. Portanto, o custo de A é igual a N · O(N). Isto é, t = O(N2).

Se número de consultas feitas por A é somente 256, então a soma dos tamanhos das consultas é de 512l. Assim, Advprp−RC4 F (t, 256, 512l) = maxA n Advprp−RC4 F,A o ≥ Advprp−RC4F,A ≥ 0, 35.

Neste caso, o adversário consegue esta vantagem com poucos recursos. Isto torna o RC4 inse- guro como uma permutação pseudo-randômica. Apesar de o ataque apresentado ser possível apenas em aplicações de broadcast isto mostra que o algoritmo RC4 tem graves falhas de segurança.