Criptografia de chave pública Baseada em problemas matemáticos complexos Matematicamente, atacante...

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

Transcript of Criptografia de chave pública Baseada em problemas matemáticos complexos Matematicamente, atacante...

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

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)

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

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

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

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

(11 + 13) mod 16 = 24 mod 16 = 8

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

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

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

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

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

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: 21 7: 15

11: 19 17: 23 25: 25

• Inverso multiplicativo, se existe, é único

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

RSA

Chave pública

n: produto de dois primos, p e q (devem ser secretos) e: primo relativo a (p–1).(q–1)

Chave privada

d: (e.d) mod (p–1).(q–1) = 1, ou d = e-1 mod (p–1).(q–1)

Cifragem C = Me mod n Decifragem M = Cd mod n Assinatura A = Md mod n Verificação Aceitar se Ae mod n = M

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

RSA

Chavepública

n: produto de dois primos, p e q (devem ser secretos)e: primo relativo a (p–1).(q–1)

Chaveprivada

d: (e.d) mod (p–1).(q–1) = 1, oud = e-1 mod (p–1).(q–1)

Cifragem C = Me mod n com a chave pública (e,n) do destinatárioDecifragem M = Cd mod n com a chave privada (d,n) do destinatárioAssinatura A = Md mod n com a chave privada (e,n) do remetenteVerificação Aceitar se Ae mod n = M com a chave pública (e,n) do

remetente a partir de (A,M)

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

Exemplo

• Bob escolhe p = 101 e q = 113

• Então n = 11413 e (n) = 100 x 112 = 11200

• Como 11200 = 26 52 7, 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 97263533 mod 11413 = 5761

• Para decifrar, Bob calcula 57616597 mod 11413 = 9726

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

Funcionamento do RSA

• Pequeno Teorema de Fermat– Se m é primo, então

am-1 mod m = 1, para todo 0 < a < m

• Generalização de Eulera(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)

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

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

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

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

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

Aritmética para RSA

• Cálculo de z = xb mod n– Exemplo: b = 21 (10101)

– 10101 = 1.24+0.23+1.22+0.21+1.20

– 10101 = (((1.2 + 0).2 + 1).2 + 0).2 + 1

– xb = x (((1.2 + 0).2 + 1).2 + 0).2 + 1

– xb = (((x2)2 . x)2)2 . x

1 0 1 0 1• 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

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

Aritmética para RSA

• Cálculo de z = xb mod n

• Seja n = 11413, b = 3533 e x = 9726i b(i) z11 1 12 . 9726 = 972610 1 97262 . 9726 = 26599 0 26592 = 56348 1 56342 . 9726 = 91677 1 91672 . 9726 = 49586 1 49582 . 9726 = 77835 0 77832 = 62984 0 62982 = 46293 1 46292 . 9726 = 101852 1 101852 . 9726 = 1051 0 1052 = 110250 1 110252 . 9726 = 5761

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

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

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

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

g x y45 27 4527 18 2718 9 189 0 9

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

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”

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

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”

temp t0 t n0 b q r0 1 75 28 2 19

73 1 73 28 19 1 93 73 3 19 9 2 167 3 67 9 1 9 0

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

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

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

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)

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

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)

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

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

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

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(7411.117)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. = - 1 regra 3

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

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)

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

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)

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

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

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

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

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

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;

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

RSA (Rivest, Shamir e Adelman)

Chavepública

n: produto de dois primos, p e q (devem sersecretos)e: primo relativo a (p–1).(q–1)

Chaveprivada

d: (e.d) mod (p–1).(q–1) = 1,ou d = 1/e mod (p–1).(q–1)

Cifragem C = Me mod nDecifragem M = Cd mod nAssinatura A = Md mod nVerificação Aceitar se Ae mod n = M

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

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

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

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(e1.92 . (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

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

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 > n1/4) (ataque de Wiener)