Criptografia e Segurança das Comunicações Bases matemáticas: Teoria dos números Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 1/40 Introdução A teoria dos números ( number theory ) aborda as propriedades de operações sobre inteiros. A teoria dos números é fundamental na criptografia, porque os ficheiros planos são transcritos em sequência de números (ordem de cada caracter num texto, sequência de bits num ficheiro gráfico,...). Os algoritmos criptográficos dependem fortemente da aritmética modular. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 2/40
Divisores (1) O conjunto dos inteiros {...,-2,-1,0,1,2,...} é representado por Z. [Def] A divisão de a por b (b 1), a/b, é um par (q,r) tal que a = q.b+r (q é designado por quociente, r por resto). Ex: 15=4.3+2 [Def] b é divisível por a, a b, sse o resto de a/b for 0. Ex: 3 9. Nota 1: se a b, então q a e q b. Nota 2: O cálculo da soma e da subtração de dois inteiros de dimensão n é O(log n), o produto e a divisão de dois inteiros é O(log 2 n). Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 3/40 Divisores (2) Teorema: dados os números a,b,c a b a c a (b + c ) a b a bc a b b c a c Exemplos: 1. 17 34 17 170 17 204 2. 17 34 17 340 3. 6 12 12 144 6 144 Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 4/40
Divisores (3) [Def] O maior divisor comum de dois números a b, gcd(a,b), é o maior inteiro d tal que d a e d b. Para determinar gcd(a,b), basta factorizar os dois números e tomar os factores comuns com o menor dos expoentes. Ex: gcd(4200, 10780) = gcd(2 3.3.5 2.7, 2 2.5. 7 2.11) = 2 2.5.7 = 140 Nota1: gcd(a,b)=gcd(b,a). Nota2: factorização de números é uma operação computacionalmente custosa. 1994: a aplicação do QS-Quadratic Sieve distribuída por 1600 computadores conseguiu factorizar número RSA-129 (129 bits) em 8 meses. 2005: factorizado número RSA-560. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 5/40 Divisores (4) Algoritmo de Euclides: determina gcd(a,b) sem cálculo de todos os factores. Figura 2-7, Behrouz Forouzan, Cryptography and Network Security Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 6/40
Divisores (5) O algoritmo de Euclides 1 é o algoritmo mais antigo ainda em uso. Algoritmo de Euclides é O(log 3 n)- log n divisões * O(log 2 n) cada divisão por multiplicação russa quociente divisor Exemplo: Determinar gcd(1547,560) resto 1547 = 2.560 + 427 calcular gcd(560,427) 560 = 1.427 + 133 calcular gcd(427,133) 427 = 3.133 + 28 calcular gcd(133,28) 133 = 4.28 + 21 calcular gcd(28,21) 28 = 1.21 + 7 calcular gcd(21,7) 21 = 3.7 + 0 gcd(1547,560)=7 1 Viveu em Alexandria, 360-290 AC, frequentemente referido como pai dividendo da geometria. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 7/40 Divisores (6) Algoritmo estendido de Euclides: Se d = gcd(a,b), existem dois números u e v tais que d=ua+vb Para calcular u,v basta inverter o algoritmo de Euclides, substituindo o resto por dividendo-quociente*divisor. Ex:7 = 28 1.21 28 1*(133-4.28) 5*28-1*133 5*(427 3*133) 1*133 5*427 16*133 5*427 16*(560 1*427) 21*427 16*560 21*(1547 2*560) 16*560 21*1547 58*560 Nota: a proposição permite facilmente calcular o inverso de um número a módulo M, se M e a forem co-primos. 1 = gcd(a,m) = ua+bm: logo, a -1 mod M = u. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 8/40
Divisores (7) O algoritmo Euclides estendido pode ser executado de forma recorrente, calculando o triplo (d,x,y) tal que ax+by=d. d é o maior divisor comun, gcd(a,b) Se d=1, então x=a -1 mod M. Extended-euclidean(a,b) { if (b==0) return (a,1,0); q = a/b; r = a%b; (d,x,y) = Extended-euclidean (b,r); return (d,y,x-qy); } Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 9/40 Divisores (8) Exemplo: determinar 123-1 mod 1003 a b q r Retorna 1003 123 8 19 (1,13,-106) 123 19 6 9 (1,-2,13) 19 9 2 1 (1,1,-2) 9 1 9 0 (1,0,1) 1 0 - - (1,1,0) 123-1 mod 1003-106 897 Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 10/40
Números primos (1) [Def] um número p é primo sse existirem apenas dois divisores (1 p e p p). Ex: são primos 1,2,3,5,7,11,13,17,19, [Def] Dois números a b são primos entre si, sse gcd(a,b)=1. Afirma-se que a é co-primo de b. Ex: 26 e 15 não são primos, mas são primos entre si. Teorema fundamental da aritmética: Qualquer número n pode ser representado por um produto de números primos 1. Ex: 4200 = 2 3.3.5 2.7, 10780=2 2.5.7 2 2 113-1= 3391.23279.65993.1868569.1066818132868207 1 Denominado por factores Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 11/40 Números primos (2) [Def] A função Euler totient, determina o número de todos os valores co-primos de n. ϕ(n) = #{0 b<n gcd(b,n)=1} Teoremas: ϕ(1) = 1. Se p for primo, ϕ(p) = p-1. Se p for primo, ϕ(p n ) = p n-1 (p-1). Se n=pq (p,q primos), então ϕ(n) = (p-1)(q-1). Proposição: Se a for primo relativo de n, então a ϕ(n) = 1 mod n Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 12/40
Números primos (3) [Def] A função π(n) indica o número de primos menores que n. Os primos até 25 são: 2, 3, 5, 7, 11, 13, 17, 19 e 23. Logo, π(3) = 2, π(10) = 4, π(25) = 9. Teorema números primos: π(n) é da ordem de n/(ln n a), com a 1. Nota: há zonas em que os primos estão mais concentrados (ex: 1_000_000_000_061, 1_000_000_000_063) e noutras mais dispersos. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 13/40 Números primos (4) Consequência 1: há muitos números primos por onde escolher! Ex: π(10 20 ) O(10 20 /19) 5.2 *10 18 (na realidade, π(10 20 ) = 2 220 819 602 560 918 840 2.2 *10 18 ). Consequência 2: a procura de um primo não é muito pesada. Em média, os números primos estão afastados O(ln n): como os pares e múltiplos de 5 não contam, a procura é 0.4 * ln n. Ex: para procurar um primo à volta de 2 200 (200 bits), devem ser necessários 0.4(ln 2 200 )=55 testes. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 14/40
Números primos (5) Computação distribuída permite determinar números primos cada vez maiores. O maior número primo, identificado em Agosto 2008, é 2 43,112,609-1 com 12_978_189 dígitos decimais. Nota1: Os primos Mersenne possuem a forma 2 n -1, sendo conhecidos 49 (31= 2 5-1 é primo, mas 2047 = 2 11-1 não é primo). Nota2: EFF premiou a descoberta com $100 000 por ser o primeiro primo com mais de 10 milhões de dígitos. Quem descobrir o primeiro primo com mais de 100 milhões de dígitos receberá $150 000. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 15/40 Primalidade (1) Como escolher um número primo? A. Por aproximação Hardly e Wright, procurar nos valores próximos prime(n) n(log n+log log n 1) Ex: prime(10 6 ) 15 400 000: na realidade é 15 485 863. Impraticável: para n elevado a distância entre dois primos é O(log n) e determinar se número é primo custa! Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 16/40
Primalidade (2) B. Peneira de Eratosthenes ( sieve ) Descoberto em 250 AC. Método determinista, mas pouco eficiente para números de grande dimensão. 1. Escrever todos os números de 2 a n-1. 2. Fazer d 2 (primeiro primo). 3. Se n não for divisível por d, eliminar da lista todos os múltiplos de d. 4. Se a lista não estiver vazia, d primo seguinte e regressar a 3. Se a lista estiver vazia, n é primo. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 17/40 Primalidade (3) [Exemplo] Seja n=17 Lista: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 d 2: 17 não é divisível por 2! Eliminados múltiplos de 2 (2 4 6 8 10 12 14 16) Lista: 3 5 7 9 11 13 15 d 3: 17 não é divisível por 3! Eliminados múltiplos de 3 (3 9) Lista: 5 7 11 13 15 d 5: 17 não é divisível por 5! Eliminados múltiplos de 5 (5 15) Lista: 7 11 13 d 7: 17 não é divisível por 7! Eliminados múltiplos de 7 (7) Prof RG Crespo... Criptografia e Segurança das Comunicações Teoria números : 18/40
Primalidade (4) C. Gerar um número aleatório n ímpar, n 5 e verificar se é primo com um teste de primalidade (ex, Rabin-Miller). Se não for, procurar à volta de lg N. Se não conseguir encontrar, gerar novo número aleatório e procurar nessa zona. Nota: esta é a estratégia usada na cifra RSA para gerar números aleatórios de grande dimensão. Aviso: Alguns primos p permitem a fácil factorização de (p-1)! Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 19/40 Primalidade (5) Teste de Rabin-Miller 1. Calcular k,m (ímpar) tal que n-1= m.2 k. Nota: O cálculo é rápido: deslocar para a direita enquanto a divisão for par, k é o número de deslocamentos, m é a divisão ímpar. 2. Seleccionar base, tal que 1 b < n. 3. a b m mod n i. Se a=n-1, então n pode ser primo. ii. Se algum dos valores a 2 mod n, a 4 mod n,, a 2^(k-1) mod n for igual n-1, então n pode ser primo. iii. Se falhar 3.1 e 3.2, então n não é primo. Para números não primos, ¾ dos valores de a acabam no ponto 3.3 Se o número for candidato a primo, efectuar o teste normal Nota: pode revelar que, afinal, não é primo! Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 20/40
Primalidade (6) Exemplo: Vejamos se n=29 é primo 1. 28 = 14.2 = 7. 2 2 2. Seleccionar base b=10 3. a 10 7 mod 29 17 1. a 28 2. (10 7 ) 2 mod 29 28. Pode ser primo (na realidade é!) Exemplo: Vejamos se n=221 é primo 1. 220 = 110.2 = 55. 2 2 2. Seleccionar base b=5 3. a 5 55 mod 221 112 1. a 220 2. (5 55 ) 2 mod 221 168 220 (nota: como k=2, não existem mais testes) 3. Conclui-se que 221 não é primo (nota: factorizando, tem-se 221=13*17) Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 21/40 Primalidade (7) Teorema pequeno de Fermat ( Fermat Little Theorem ): Se p é co-primo de a, então a p-1 =1 mod p. Ex: 7 e 3 são co-primos, pelo que 7 2 =1 mod 3. Igualmente, 3 90 =1 mod 91 [nota: 91 não é primo] Os números (a,p) são designados pseudo-primos. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 22/40
Aritmética modular (1) [Def] a módulo M, a mod M, é o resto de a/m. Nota 1: r é por vezes designado resíduo. Nota 2: sem nos aperceber, o relógio é um sistema modular (M igual a 12 horas) [Def] Z n, é o conjunto de todos os resíduos módulo n. Exemplos: Z 2 ={0,1}, Z 6 ={0,1,2,3,4,5} [Def] Dois números a,b são congruentes, a b mod N, sse tiverem o mesmo resíduo. Exemplos: 4 12 mod 8, 3-5 mod 8 Operador congruência Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 23/40 Aritmética modular (2) Os operadores aritméticos usuais em Z: +, -, * são aplicados em Z n. 1. [Opcional] Calcula-se o resíduo a cada operando para simplificar. 2. Calcula-se a operação em Z. 3. Determina-se o resíduo. Exemplos: (14+7) mod 15 = 21 mod 15 = 6 (7*11) mod 20 = 77 mod 20 = 17 Figura 2-13, Behrouz Forouzan, Cryptography and Network Security Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 24/40
Eficiência de operações (1) 1. Produto: pretende-se avaliar x.y, com valores na ordem 2 1024 10 308. i. Cálculo pelo método matricial (proposto pela primeira vez por Fibonnaci) é muito ineficiente. ii. Multiplicação russa (ou camponesa) com shift e somas. 1. Enquanto y 1 executar e colocar lado a ladox=2.x e y=y/2 2. Cortar todos os x i para y i pares 3. Somar todos os x i para y i ímpares Complexidade: O(log 2 n)- log n somas * O(log n) cada soma Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 25/40 Eficiência de operações (2) Exemplo: Cálculo de 52 * 37 52 *37 364 156 1924 multiplicação matricial russa 52 37 104 18 208 9 416 4 832 2 1664 1 1924 Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 26/40
Eficiência de operações (3) 2. Produto modular: pretende-se avaliar a*b mod N i. Cálculo ingénuo 1. Determinar primeiro a*b 2. Calcular depois a*b mod N Este cálculo pode ser muito ineficiente por gera valores de dimensão muito elevada. A redução mod N é uma operação demorada. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 27/40 Eficiência de operações (4) ii. Multiplicação Montgomery Na multiplicação modular, a redução constitui a parte mais demorada. A multiplicação Montgomery permite que a redução seja feita com valores de dimensão reduzida. Considere-se o produto ab=c mod N, com N=m k -1. Neste caso, c = c 1 m k + c 0 Rescrevendo, c = c 1 (m k 1) + c 1 + c 0 = c 1 + c 0 mod N. Ex: pretende-se calcular 3089 mod 99 sem efectuar reduções 3089 = 30*100 + 89 = 30*(100-1)+30 + 89 = 30*99 + 119 = 30*99 + 1*100+19 = 30*99 + 1*(100-1)+1+19 = 31*99 + 20 Logo, 3089 mod 99 = (31*99 + 20) mod 99 = 20 1 P. L. Montgomery; Modular multiplication without trial division. Mathematics of Computation, 44(170):519-521, Apr 1985. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 28/40
Eficiência de operações (5) Passos na multiplicação Montgomery a*b mod N: 1. Converter multiplicando e multiplicador para a forma Montgomery i. Seleccionar R=2 k, com R>N e gcd(r,n)=1. ii. Calcular R' e N' tal que RR' - NN' =1. iii. Identificar as formas Montgomey de a,b: a' = ar mod N, b' = br mod N 2. Calcular o produto a' * b' = (ar mod N) * (br mod N) = abr 2 = X 3. Converter resultado m = ((x mod R) * N') mod R x = (X+mR)/R if x N then x=x-n return x Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 29/40 Eficiência de operações (6) Exemplo: calcular 61*5 mod 79 Selecciona-se R=10 2 (nota: nos computadores usa-se base binária) a' = 61*100 mod 79 = 17, b' = 5*100 mod 79 = 26 Algoritmo Euclides invertido dá 64.100-81.79=1. Logo, R' = 64 e N' = 81 a' * b' = 17*26 = 442 m = (442 mod 10 2 * 64) mod 10 2 =(42*64) mod 10 2 =3402 mod 10 2 =2 x = (442 + 2*79)/10 2 mod 10 2 = 600/10 2 mod 10 2 = 6 mod 10 2 =6 61*5 mod 79 = 6 Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 30/40
Eficiência de operações (7) iii. Multiplicação CRT Teorema Chinês dos Restos (CRT-Chinese Remainder Theorem): Seja N=n 1 *n 2 * *n r com n i,n j (i j) co-primos. A N Qualquer A [0,(N-1)] é representado por (a 1 =A mod n 1, a 2 =A mod n 2,, a r =A mod n r ) A calculado, a partir de (a 1, a 2,, a r ), pela seguinte equação: r = i= 1 i N = n ( a N N i i i 1 i mod n ) mod N = n n Ln n 1Ln 1 2 i 1 i i+ r Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 31/40 Eficiência de operações (8) Exemplo: Sun-Tsu inicia batalha com 208 soldados e no final pretende determinar rapidamente os sobreviventes. Verifica que os sobreviventes agrupados em 3, sobram 2 (a 1 = A mod 3 2) agrupados em 5, sobram 3 (a 2 = A mod 5 3) agrupados em 7, sobram 2 (a 2 = A mod 7 2) a) N 1 =5.7=35; N 2 =3.7=21; N 3 =3.5=15 b)35-1 mod 3 = 2, 21-1 mod 5 = 1, 15-1 mod 7 = 1 c) A=2.35.2 + 3.21.1 + 2.15.1 (mod 3.5.7) = 23 mod 105. Sun-Tsu ou tem 23 ou tem 128 soldados. Nota: fácil verificar sem ter de agrupar em grupos de 11! Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 32/40
Eficiência de operações (9) Por ser o único com acesso a p,q o proprietário pode calcular mais rapidamente M=C d mod N, 1. Na construção da cifra RSA tem-se N=pq. Calcular C p = Cmod p = C mod q d p M = d mod( p 1) p = C p d p mod p C q d q M = d mod( q 1) q = C 2. Decifrar mensagem a partir dos resíduos M = ( M R R p q = ( p = ( q p 1 1 R q + M q mod q) p = R ) mod N p p mod p) q = q q 1 p 1 mod N mod N q d q mod q Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 33/40 Eficiência de operações (10) 3. Exponenciação modular: Pretende-se avaliar x c mod N Em cada multiplicação por x calcula-se logo o módulo para reduzir os valores intermédios. Exponenciação pode ser efectuada da esquerda para a direita (solução adoptada aqui), ou da direita para a esquerda. 1. Representar c = b k-1 b 0 2. Executar algoritmo z = 1; for ( i=k-1; i>=0; i-- ) { if ( b i =1 ) mult=x else mult=1; z = z 2.mult mod N;} Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 34/40
Eficiência de operações (11) Ex: Cálculo de 30 37 mod 77 (37 = 100101) 1. z = 1 2. i = 5; b 5 =1 mult= 30; z = 1 2 * 30 mod 77 30 3. i = 4; b 4 =0 mult= 1; z = 30 2 mod 77 53 4. i = 3; b 3 =0 mult= 1; z = 53 2 mod 77 37 5. i = 2; b 2 =1 mult= 30; z = 37 2 * 30 mod 77 29 6. i = 1; b 1 =0 mult= 1; z = 29 2 mod 77 71 7. i = 0; b 0 =1 mult= 30; z = 71 2 * 30 mod 77 2 Complexidade O(log 3 n) Nota: Ataque DPA ( Differential Power Analysis ) é baseado na análise das variações no consumo de energia durante o cálculo de mult*z dentro do ciclo for. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 35/40 Eficiência de operações (12) 1 x c mod N em hardware z x Lógica controlo c mult mod N Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 36/40
Números aleatórios (1) [Def] O período de uma sequência é valor mínimo de τ, tal que s(i+τ)=s(i), para todos 0 i<n-τ Ex: a sequência 010 010 01, de comprimento p=8, possui período 3. [Def] Um bloco ( block ) é uma sequência contínua de 1 s e um salto ( gap ) é uma sequência contínua de 0 s. Uma corrida ( run ) é um bloco ou um salto. Existem diversos métodos para determinar o grau de confinação de uma sequência binária pseudo-aleatória Princípio de Golomb Testes estatísticos (frequência, poker, corridas, ) Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 37/40 Números aleatórios (2) Testes estatísticos Teste série: as frequências das transições 00, 01, 10, 11 são iguais. Teste poker : dividir sequência por subsequências com mesmo número de bits (m 3)-denominados poker hands - e comparar a distribuição dos valores com o teste χ 2. Princípios de Golomb: primeira tentativa para identificar as condições necessárias, mas não suficientes! 1. A diferença entre o número de 0 s e 1 s deve ser tão pequena quanto possível. Nota: na sequência 101010101010101010101010101010101010, diferença entre 0 s e 1 s é nula, mas não é aleatória (tal será detectado pelo terceiro princípio de Golomb). Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 38/40
Números aleatórios (3) 2. Em todas as subsequências, metade das corridas são blocos e a outra metade são saltos. A frequência de corridas de comprimento i é, pelo menos, (½) i se o número de corridas for superior a 1; metade das corridas tem comprimento 1, um quarto das corridas tem comprimento 2, Ex: seja 00001100001110001111100001110001101110000100. À primeira vista a sequência parece ser aleatória, mas não obedece aos critérios de Golomb. Comprimento Blocos Saltos Corridas 1 19 25 44 (46%) 2 12 17 29 (30%) 3 6 10 16 (17%) 4 2 4 6 (6%) Falha! 5 1 0 1 (1%) Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 39/40 Números aleatórios (3) 3. Autocorrelação é de 2 valores N. C( t) = C( t) = 1 N { N, se t = 0 K, se1 t N -1 N 1 N i=0= 0 (2s i 1)(2s i+ t 1), 0 t N 1 Ex: 011001000111101, gerada pelo LFSR de polinómio conectivo x 4 +x 3 +1, satisfaz os critérios de Golomb. 1. Número de 0 s é 7, número de 1 s é 8. 2. Existem 8 corridas: 4 corridas de comprimento 1 (2 saltos, 2 blocos). 2 corridas de comprimento 2 (1 salto, 1 bloco). 1 salto de comprimento 3, 1 bloco de comprimento 4. 3. C(0)=1, C(t)=-1/15 for 1 t 14 Nota: existem bons testes estatísticos, como o Diehard. Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 40/40