A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Criptografia de chave pública Baseada em problemas matemáticos complexos Matematicamente, atacante sabe o que fazer para quebrar o algoritmo (descobrir.

Apresentações semelhantes


Apresentação em tema: "Criptografia de chave pública Baseada em problemas matemáticos complexos Matematicamente, atacante sabe o que fazer para quebrar o algoritmo (descobrir."— Transcrição da apresentação:

1 Criptografia de chave pública Baseada em problemas matemáticos complexos Matematicamente, atacante sabe o que fazer para quebrar o algoritmo (descobrir a chave) Atacante deve resolver um problema complexo (NP-completo) Usuário do sistema deve resolver um sistema relativamente simples (complexidade P)

2 Criptografia de chave pública Problemas matemáticos complexos: Fatoração de um número inteiro Minimização de equações booleanas Escalonamento ótimo de um sistema operacional Logaritmo em aritmética de módulo etc

3 Aritmética em módulo b = a mod n : b é o resto de a / n 0 <= resto < n soma módulo n multiplicação módulo n exemplos: (11 x 13) mod 16 = 143 mod 16 = 15 ( 7 x 9) mod 16 = 63 mod 16 = 15 (7 + 9 ) mod 16 = 16 mod 16 = 0 ( ) mod 16 = 24 mod 16 = 8

4 Adição e multiplicação módulo n Propriedades –Fechada –Associativa –Comutativa –Elemento identidade da adição : 0 –Elemento identidade da multiplicação : 1 Propriedades similares a da aritmética inteira

5 Inverso aditivo Inverso aditivo de a é n-a ( a + (n-a) ) mod n = ( a - a + n ) mod n = n mod n = 0 Todo a sempre possui um inverso aditivo Exemplos (n=7) 1: 62: 53: 4 4: 35: 26: 1 0: 0 Se b é o inverso aditivo de a, a é o inverso aditivo de b

6 Inverso multiplicativo Inverso multiplicativo de a : a -1 –a x a -1 = 1 (mod n) –Só existe se mdc(a,n) = 1 –Só existe se a e n são primos relativos –Se n é primo, a -1 existe para qualquer a Exemplos (n = 26) 1: 13: 95: 21 7: 15 11: 1917: 2325: 25 Inverso multiplicativo, se existe, é único

7 RSA

8

9 Exemplo Bob escolhe p = 101 e q = 113 Então n = e (n) = 100 x 112 = Como = , qualquer número que não seja divisível por 2, 5 e 7 serve para e Na prática e é randômico e testa-se por mdc(e, (n)) = 1 Bob escolhe e = 3533 Então d = e -1 mod (p–1).(q–1) = 6597 A chave pública de Bob é (3533,11413) Alice deseja cifrar 9726 para Bob Alice calcula mod = 5761 Para decifrar, Bob calcula mod = 9726

10 Funcionamento do RSA Pequeno Teorema de Fermat –Se m é primo, então a m-1 mod m = 1, para todo 0 < a < m Generalização de Euler a (n) mod n = 1, se mdc(a,n) = 1 –se n é primo, (n) = n - 1 –se n = p.q, (n) = (p-1).(q-1) – (n) = função totient de Euler (quantidade de inteiros positivos menores que n primos relativos a n)

11 Funcionamento do RSA C = M e mod n M = C d mod n M = (M e mod n) d mod n M = M ed mod n como (e.d) mod (p–1).(q–1) = 1 M = M k(p–1).(q–1) + 1 mod n M = M k(p–1).(q–1).M mod n M = (M (p–1).(q–1) mod n) k.M mod n M = (1) k.M mod n = M mod n = M

12 Aritmética para RSA Cálculo de z = x b mod n –Quociente é irrelevante –Basta calcular o resto –Número b representável em binário por k bits Algoritmo Square-and-Multiply 1.z = 1 2.For i = k-1 downto 0 do 3.z = z 2 mod n 4.If b(i) = 1 then z = z. x mod n

13 Aritmética para RSA Cálculo de z = x b mod n –Exemplo: b = 21 (10101) –10101 = –10101 = ((( ).2 + 1).2 + 0) –x b = x ((( ).2 + 1).2 + 0) –x b = (((x 2 ) 2. x) 2 ) 2. x Algoritmo Square-and-Multiply 1.z = 1 2.For i = k-1 downto 0 do 3.z = z 2 mod n 4.If b(i) = 1 then z = z. x mod n

14 Aritmética para RSA Cálculo de z = x b mod n Seja n = 11413, b = 3533 e x = 9726

15 Determinação do inverso multiplicativo Base: algoritmo de Euclides para g = mdc(x,y) Seja y >= x 1.g = y 2.While x > 0 do 3.g = x 4.x = y mod x 5.y = g

16 Determinação do inverso multiplicativo 1.g = y 2.While x > 0 do 3.g = x 4.x = y mod x 5.y = g Exemplo: 27 e 45

17 Determinação do inverso multiplicativo de b em módulo n 1.n0 = n 2.t0 = 0 3.t = 1 4.q = n0 div b 5.r = n0 - q. b 6.while r > 0 do 7. temp = t0 - q. t 8.if temp >=0 then temp = temp mod n 9. else temp = n - ((-temp) mod n) 10.t0 = t 11.t = temp 12.n0 = b 13.b = r 14.q = n0 div b 15.r = n0 - q. b 16.If b <> 1 then b nao possui inverso multiplicativo 17. else t é o inverso multiplicativo de b

18 Determinação do inverso multiplicativo de 28 em módulo 75 1.n0 = n 2.t0 = 0 3.t = 1 4.q = n0 div b 5.r = n0 - q. b 6.while r > 0 do 7. temp = t0 - q. t 8.if temp >=0 then temp = temp mod n 9. else temp = n - ((-temp) mod n) 10.t0 = t 11.t = temp 12.n0 = b 13.b = r 14.q = n0 div b 15.r = n0 - q. b 16.If b <> 1 then b não possui inverso multiplicativo 17. else t é o inverso multiplicativo de b

19 Teste de primalidade Atacante deve fatorar n = p x q Depois, de posse da chave pública e, é fácil calcular a chave secreta d: d = e -1 mod (p-1)x(q-1) Problema do atacante: fatorar n, ou seja, decompor nos seus componentes primos

20 Teste de primalidade Problema da geração das chaves: –Descobrir p primo –Descobrir q primo Teste probabilístico, com duas respostas possíveis: (a) não é primo (b) pode ser primo (50% de probabilidade)

21 Teste de primalidade probabilístico O teste de Soloway-Strassen para n: 1.Escolher um número a, 0 < a < n 2.Se gcd(a,n) <> 1, então n não é primo 3.Se a (n-1)/2 mod n = J(a,n) então n é primo com 50% de probabilidade 4.Senão, n não é primo Erro para um teste: 50% (1/2)

22 Teste de primalidade probabilístico A função J(a,n) é definida como segue: 1.J(0,n) = 0 2.J(1,n) = 1 3.J(2,n) = 1 se (n 2 -1)/8 for par, e -1 caso contrário 4.J(a,n) = J((a mod n),n) 5.J(a.b,n) = J(a,n). J(b,n) 6.J(a,n.m) = J(a,n). J(a,m) 7.Se gcd(a,b)=1, e a e b forem ímpares: J(a,b) = J(b,a) se (a-1)(b-1)/4 for par J(a,b) = -J(b,a) se (a-1)(b-1)/4 for ímpar

23 Teste de primalidade probabilístico Exemplo: J(7411,9823): 1.J(7411,9823) = -J(9823,7411)regra 7 2.= -J(1872,7411)regra 4 3.= -J(2,7411) 4. J(117,7411)regra 5 4.= -J(117,7411)regra 3 5.= -J( )regra 7 6.= -J(40,117)regra 4 7.=-J(2,117) 3. J(5,117)regra 5 8.= J(5,117)regra 3 9.= J(117,5)regra = J(2,5)regra 4 11.= - 1regra 3

24 Teste de primalidade probabilístico Repetindo-se o teste t vezes Sendo a resposta sempre pode ser Então n é primo com uma margem de erro de 1 em 2 t Na prática, usa-se t = 100 Na faixa dos números de 1024 a 4096 bits, existe um primo a cada 160 números Complexidade: O((log n) 3 )

25 Teste de primalidade probabilístico O teste de Miller-Rabin para n: Escrever n como k. m (n-1 = 2 k.m) 1.Escolher um número a, 0 < a < n 2.Calcular b = a m mod n 3.Se b = 1, então n pode ser primo 4.Para i=0 até k-1 5.Se b = -1 mod n então n pode ser primo 6.Senão, b = b 2 mod n 7.n não é primo Erro para um teste: 25% (1/4)

26 Teste de primalidade probabilístico Repetindo-se o teste t vezes Sendo a resposta sempre pode ser Então n é primo com uma margem de erro de 1 em 4 t Complexidade: O((log n) 3 ) Melhor que Soloway-Strassen, apesar de ter a mesma complexidade

27 Teste de primalidade probabilístico Geração de primos na prática 1.Escolher um número n, randômico 2.Ligar os bits mais e menos significativos (para ser da magnitude desejada e ser ímpar) 3.Testar divisibilidade por 3, 5, 7 (elimina 54%) 4.Realizar o teste de primalidade

28 Teste de primalidade determinístico Teste ASK (Agarwal, Saxena e Kayal) 1. if ( n is of the form a b, b > 1 ) output COMPOSITE; 2. r = 2; 3. while(r < n) 4. if ( gcd(n,r) 1 ) output COMPOSITE; 5. if (r is prime) 6. let q be the largest prime factor of r - 1; 7. if (q 4 sqrt(r) log n) and (n (r-1)/q mod r 1) 8.break; 9.r r + 1; 11. for a=1 to 2 srqt(r) log n 12. if ( (x - a) n (x n - a) n mod x r - 1 output COMPOSITE; 13. Output PRIME;

29 RSA (Rivest, Shamir e Adelman)

30 Ataques ao RSA Fatorar n (depois determinar chave privada) Problema NP Melhores algoritmos são exponenciais Fatorar por tentativas de divisão (de 2 a sqrt(n)) –Efetivo para n < Algoritmos: Pollard p-1, Pollard Rho, Dixons Random Squares

31 Ataques ao RSA Fatorar n (depois determinar chave privada) Algoritmos atuais –quadratic sieve O(e sqrt(ln n. ln ln n) ) RSA-129 fatorado em 1994 –elliptic curve O(e sqrt(2.ln p. ln ln p) ) (p é fator de n) –number field sieve O(e (ln n) 1/3. (ln ln n) 2/3 ) RSA-130 fatorado em 1996 RSA-140 fatorado em fevereiro de 1999 RSA-155 fatorado em agosto de 1999 (chaves de 512 bits) Desafios vão até RSA-500

32 Ataques ao RSA Calcular (n) –Tão complexo quanto fatorar n Ataques à chave privada –Tão complexo quanto fatorar n –Mas se e e d são conhecidos, é possível fatorar n Recomendações: –Não compartilhar n entre vários usuários (common modulus attack) –A chave privada deve ser grande (d > n 1/4 ) (ataque de Wiener)


Carregar ppt "Criptografia de chave pública Baseada em problemas matemáticos complexos Matematicamente, atacante sabe o que fazer para quebrar o algoritmo (descobrir."

Apresentações semelhantes


Anúncios Google