Paar & Pelzl, Capítulos 6,7 Introdução à criptografia moderna: funções de sentido único Vantagens: partilha de chaves desnecessária, não-repúdio, mecanismo de assinatura Problemas: autenticação, eficiência RSA e o problema da factorização Construção do RSA, correcção Testes de primalidade e abundância de números primos Algoritmo de Euclides estendido Teorema chinês dos restos Teorema de Euler Função de Euler Exponenciação modular eficiente Ataques: analíticos e quânticos; má utilização, maleabilidade e padding; side-channel %%%% RSA primos p,q (grandes) n=p x q e,d tais que e x d = 1 mod (p-1) x (q-1) e,n públicos cifra(x,(e,n)) = x^e mod n decifra(y,(d,n)) = y^d mod n %%%% Teorema da abundância dos números primos probabilidade de um número aleatório n ser primo é aproximadamente 1/log(n) %%%% Algoritmo de Euclides estendido AE(x,y) -> mdc(x,y) calculando divisões inteiras sucessivas se x<y então mdc(x,y) = mdc(y mod x, x) AEE(x,y) -> mdc(x,y)=ax+by Se mdc(y mod x, x)=a(y mod x)+bx então mdc(x,y)=(b-a(y div x))x + ay %%%% Teorema chinês dos restos mdc(n,m)=1, a em Zn, b em Zm existe exactamente um valor x mod (nm) tal que x = a mod n e x = b mod m x = a.m.(minv mod n) + b.n.(ninv mod m) mod (nm) %%%% Função de Euler phi(n) = nº de elementos invertíveis de Zn phi(xy) = phi(x) phi(y) se mdc(x,y)=1 phi(p^e) = p^e-p^(e-1) se p é primo %%%% Teorema de Euler se mdc(x,n)=1 então x^phi(n) = 1 mod n INV conjunto dos invertíveis de Zn; |INV|=phi(n) x.INV = INV (mod n) produto INV = produto x.INV = x^phi(n). produto INV mod n %%%% exponenciação modular eficiente (square & multiply) x^e= (x^2)^(e/2) se e for par x^e= x*(x^2)^((e-1)/2) se e for ímpar Exercícios Exercício 1 (nível 1) Usando o Algoritmo de Euclides determine o máximo divisor comum entre a. 957 e 1093. b. 7469 e 2464. c. 1819 e 3587. Obtenha os coeficientes que permitem escrever o máximo divisor comum como combinação linear dos valores dados em cada alínea. Exercício 2 (nível 1) Derive fórmulas simplificadas da função de Euler para os casos em que n é: a. um número primo. b. p x q em que p e q são primos. Exercício 3 (nível 2) a. Determine, usando a função de Euler, o cardinal dos grupos: i. Z26*; ii. Z143*. b. Usando o Teorema de Euler obtenha o inverso de 2 em cada um dos grupos. c. De um modo mais geral, o inverso em Z26* de um número x é x^11. Usando o Teorema de Euler, explique porquê. Exercício 4 (nível 2) Calcule a exponenciação x^e mod m usando o algoritmo SQUARE-AND-MULTIPLY: a. x = 2, e = 79, m = 101 b. x = 3, e = 197, m = 101 Exercício 5 (nível 2) Suponha que um esquema de encriptação do RSA tem como parâmetros p = 31 e q = 37. a. Qual das seguintes chaves e = 17 ou e = 16 pode ser uma chave pública admissível? Justifique. b. Usando a chave obtida em a. cifre a mensagem y=2. c. Determine d, a chave privada correspondente. d. Verifique a correção da chave obtida em a, isto é, prove que o processo de decifra com a chave privada de um texto cifrado com a chave pública leva à obtenção do texto original. e. Usando o Teorema Chinês dos restos decifre a mensagem 15. f. Determine um novo par de chaves pública e privada para os mesmos valores de p e q. Exercício 6 (nível 2) Suponha que dispõe de um mecanismo que responde verdade ou falso a questões da forma "n tem um factor primo menor que k", onde n e k são números naturais. Mostre como pode utilizar este mecanismo para quebrar o RSA. Exercício 7 (nível 3) Neste exercício pretende-se mostrar que o RSA é vulnerável a ataques de texto cifrado escolhido. a. Mostre que o RSA é maleável, isto é, que c(x*y,e)= c(x,e)*c(y,e). b. Assuma que Bob recebe uma mensagem cifrada y1 da Alice que o Oscar obteve por escuta. Mais tarde, Oscar envia uma mensagem aparentemente inocente y2 a Bob, que a decifra, e consegue de alguma forma obter o texto original correspondente x2. Mostre como é que Oscar pode obter o texto original x1 correspondente a y1. Exercício 8 (nível 3) (Ataque do módulo comum.) Num grupo de pessoas estabelece-se um módulo comum, isto é, escolhe-se N=pxq e chaves públicas (e1,N), ..., (en,N) que são distribuídas pelos utilizadores, de tal modo que os ei são todos coprimos com N. Mostre que um adversário que conheça dois criptogramas de um mesmo texto, por exemplo, conhece c1=m^e1 mod N e c2=m^e2 mod N, é capaz obter o texto original m. Nível 1 – 1,2,4 Nível 2 – 3,5,6 Nível 3 – 7,8