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

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

Criptografia de chave pública

Apresentações semelhantes


Apresentação em tema: "Criptografia de chave pública"— 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

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: 6 2: 5 3: 4 4: 3 5: 2 6: 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: 1 3: 9 5: : 15 11: 19 17: : 25 Inverso multiplicativo, se existe, é único

7 RSA

8 RSA

9 Exemplo Bob escolhe p = 101 e q = 113
Então n = e (n) = 100 x 112 = 11200 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 Generalização de Euler
Se m é primo, então am-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 = Me mod n M = Cd mod n M = (Me mod n)d mod n
M = Med mod n como (e.d) mod (p–1).(q–1) = 1 M = Mk(p–1).(q–1) + 1 mod n M = Mk(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 = xb 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 = z2 mod n 4. If b(i) = 1 then z = z . x mod n

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

14 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

15 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

16 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 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” else “t é o inverso multiplicativo de b”

17 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 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” else “t é o inverso multiplicativo de b”

18 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

19 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)

20 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)

21 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 (n2 -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

22 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 7 10. = J(2,5) regra 4 11. = regra 3

23 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 2t 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)

24 Teste de primalidade probabilístico
O teste de Miller-Rabin para n: Escrever n como 1 + 2k . m (n-1 = 2k.m) 1. Escolher um número a, 0 < a < n 2. Calcular b = am 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 = b2 mod n 7. n não é primo Erro para um teste: 25% (1/4)

25 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 4t Complexidade: O((log n)3) Melhor que Soloway-Strassen, apesar de ter a mesma complexidade

26 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

27 Teste de primalidade determinístico
Teste ASK (Agarwal, Saxena e Kayal) 1. if ( n is of the form ab, 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  (xn - a)n mod xr - 1 output COMPOSITE; 13. Output PRIME;

28 RSA (Rivest, Shamir e Adelman)

29 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 < 1012 Algoritmos: Pollard p-1, Pollard Rho, Dixon’s Random Squares

30 Ataques ao RSA Fatorar n (depois determinar chave privada)
Algoritmos atuais quadratic sieve O(esqrt(ln n . ln ln n)) RSA-129 fatorado em 1994 elliptic curve O(esqrt(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

31 Ataques ao RSA Calcular (n) Ataques à chave privada Recomendações:
Tão complexo quanto fatorar n Ataques à chave privada 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 > n1/4) (ataque de Wiener)

32 Criptosistema da Mochila
Baseado no Problema da Mochila Formar um número s a partir de um conjunto de inteiros (sem repetir nenhum) Este problema é NP-completo Usado por Merkle e Hellman para formar um criptosistema de chave pública Atacante: resolver o problema da mochila Usuário: resolver o problema da mochila supercrescente

33 Criptosistema da Mochila
Supercrescente: cada número é maior que a soma dos anteriores Exemplo: S = (2, 5, 9, 21, 45, 103, 215, 450, 946) A partir desta seqüência, formar outra: ti = si . a mod p onde p é um primo maior que a soma de todos os elementos, e a é o gerador da nova seqüência Para p = 2003 e a = 1289: T = (575, 436, 1586, 1030, 1921, 569, 721, 1183, 1570)

34 Criptosistema da Mochila
A seqüência supercrescente S e o número a são a chave secreta A seqüência T é a chave pública Para cifrar um número (binário), somam-se os termos correspondentes aos 1’s Exemplo: seja M = T = (575, 436, 1586, 1030, 1921, 569, 721, 1183, 1570) C= = 6655

35 Criptosistema da Mochila
Exemplo: seja M = T = (575, 436, 1586, 1030, 1921, 569, 721, 1183, 1570) C= = 6655 Para decifrar, faz-se: C1 = C . a-1 mod p = mod 2003 C1 = mod p = 1643 Resolve-se agora 1643 para S = (2, 5, 9, 21, 45, 103, 215, 450, 946)

36 Criptosistema da Mochila
Merkle sugeria números da ordem de 100 dígitos binários O sistema foi quebrado por Shamir em 1982 Detalhes do método utilizado (Lenstra) em “Contemporary Cryptology: the Science of Information Integrity”, de Gustavus J. Simmons

37 El Gamal

38 DSA - Digital Signature


Carregar ppt "Criptografia de chave pública"

Apresentações semelhantes


Anúncios Google