Software de Telecomunicações Teoria dos números Prof RG Crespo Software de Telecomunicações Teoria números : 1/37 Números primos (1) O conjunto dos inteiros {...,-2,-1,0,1,2,...} é representado por Z. Definição: 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). b é divisível por a, a b, sse o resto de a/b for 0 (ex: 3 9) Nota: A soma e a subtração de dois inteiros é O(log n), o produto e a divisão de dois inteiros é O(log 2 n). Definição: 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, Prof RG Crespo Software de Telecomunicações Teoria números : 2/37
Números primos (2) Teorema fundamental da aritmética: Qualquer número n pode ser representado por um produto de números primos. Ex: 4200 = 2 3.3.5 2.7, 10780=2 2.5.7 2 2 113-1= 3391.23279.65993.1868569.1066818132868207 Definição: O maior divisor comum de dois números a b, gcd(a,b) é o maior inteiro d tal que d a e d b. Basta factorizar os dois números e tomar os primos comuns com o menor dos expoentes. Ex: gcd(4200,10780) = 2 2.5.7 = 140 Prof RG Crespo Software de Telecomunicações Teoria números : 3/37 Números primos (3) Nota1: gcd(a,b)=gcd(b,a). Nota2: factorização de números é operação custosa 1994: a aplicação do QS-Quadratic Sieve distribuída por 1600 computadores conseguiu factorizar número RSA-129 em 8 meses. 2005: factorizado número RSA-560. Definição: 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. Prof RG Crespo Software de Telecomunicações Teoria números : 4/37
Números primos (4) Algoritmo de Euclides (determina gcd(a,b) sem cálculo da factorização) 1. Para calcular gcd(a,b), calcular a divisão do maior número pelo menor: a = q.b+r 2. Se r 0, voltar ao passo 1 e calcular gcd(r,b). Se r=0, gcd(a,b) = b Algoritmo de Euclides é O(log 3 n)- log n divisões * O(log 2 n) cada divisão Ex: Determinar gcd(1547,560) 1547 = 2.560 + 427 calcular gcd(427,560) 560 = 1.427 + 133 calcular gcd(427,133) por multiplicação 427 = 3.133 + 28 calcular gcd(28,133) russa 133 = 4.28 + 21 calcular gcd(28,21) 28 = 1.21 + 7 calcular gcd(7,21) 21 = 3.7 + 0 gcd(1547,560)=7 Prof RG Crespo Software de Telecomunicações Teoria números : 5/37 Números primos (5) Proposição: 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 os restos pelas igualdades anteriores. 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 módulo M, se M for primo. 1 = gcd(a,m) = ua+bm: logo, a -1 mod M = u. Prof RG Crespo Software de Telecomunicações Teoria números : 6/37
Números primos (6) Algoritmo estendido de Euclides:determina triplo (d,x,y) tal que ax+my=d: se d=1, então x=a -1 mod M. Função Euclides-estendido(a,b) se b=0 retornar (a,1,0); k := a/b; r := a mod b; (d,x,y) := Euclides-estendido(b,r); retornar (d,y,x-ky); Prof RG Crespo Software de Telecomunicações Teoria números : 7/37 Números primos (7) Exemplo: determinar 123-1 mod 1003 a b k 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 Software de Telecomunicações Teoria números : 8/37
Números primos (8) Definição: A função Euler totient, ϕ(n) = #{0 b<n gcd(b,n)=1} indica o número de todos os valores coprimos de n. ϕ(1) = 1 ϕ(p) = p-1, para todos os primos de p 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 Software de Telecomunicações Teoria números : 9/37 Números primos (9) Definição: 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 Software de Telecomunicações Teoria números : 10/37
Números primos (10) 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 dígitos binários), devem ser necessários 0.4(ln 2 200 )=55 testes. Prof RG Crespo Software de Telecomunicações Teoria números : 11/37 Números primos (11) 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. Nota: 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). Prof RG Crespo Software de Telecomunicações Teoria números : 12/37
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! B. 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. Esta é a estratégia usada na cifra RSA para gerar números aleatórios de grande dimensão. Prof RG Crespo Software de Telecomunicações Teoria números : 13/37 Primalidade (2) 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 an-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 Software de Telecomunicações Teoria números : 14/37
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 Software de Telecomunicações Teoria números : 15/37 Primalidade (4) 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. Se o número for candidato a primo, efectuar o teste normal Nota: pode revelar que, afinal, não é primo! Para números não primos, ¾ dos valores de a acabam no ponto 3.3 Prof RG Crespo Software de Telecomunicações Teoria números : 16/37
Primalidade (5) 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 Software de Telecomunicações Teoria números : 17/37 Primalidade (6) 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 Software de Telecomunicações Teoria números : 18/37
Congruência (1) Definição: a é congruente a b módulo M, a b mod M, sse (a b) M. M é designado módulo da congruência. Ex: 17 4 mod 26, porque 13 26. Os números Z M ={0,1,,M-1} formam um anel de inteiros módulo M com operadores +,* módulo M. Frequentemente, a b mod M é representado por a=b modm A aritmética modular foi explorada em primeiro lugar por Gauss. A relação de congruência é fundamental na cifra, uma vez que todas as alterações não devem sair do alfabeto a cifrar/ decifrar. Prof RG Crespo Software de Telecomunicações Teoria números : 19/37 Congruência (2) As congruências, com o mesmo módulo, podem ser somadas / subtraídas ou multiplicadas. Se a b mod M e c d mod M, então a±c b±d mod M e ac bd mod M. Ex: 3 = 3 mod 9, 4 = 4 mod 9, logo 3+4 = 7 mod 9 3 = 3 mod 9, 8 = 8 mod 9, logo 3+8 = 2 mod 9 O zero é elemento neutro da adição. x+0 x mod M 0+x mod M Prof RG Crespo Software de Telecomunicações Teoria números : 20/37
Congruência (3) Tal como em Z, os aneis Z M possuem inversos aditivos. Definição: Um inverso aditivo módulo M de a é um valor b tal que a+b =1 mod M. Teorema: para cada elemento de um anel Z M, existe um e só um inverso aditivo. Ex: 3+6=0 mod 9, logo 6 é inverso aditivo de 3 módulo 9. Prof RG Crespo Software de Telecomunicações Teoria números : 21/37 Congruência (4) Ao contrário de Z, os aneis Z M possuem inversos multiplicativos para alguns elementos (não todos!). Definição: Um inverso multiplicativo módulo M de a, a -1 mod M, é um valor tal que aa -1 =1 mod M. A condição pode ser refeita para aa -1 = 1 + Mk, que tem uma única solução se a e M forem primos entre si (ou seja, gcd(a,m)=1). Se a M forem primos entre si, para identificar a -1, basta refazer a igualdade gcd(a,m)=1 1. Determinar os numeros u,v tal que 1 = um + va 2. a -1 = v Prof RG Crespo Software de Telecomunicações Teoria números : 22/37
Congruência (5) Ex: Calcular 160-1 mod 839 839 = 5.160 + 39 160 = 4.39 + 4 39 = 9.4 + 3 4 = 1.3 + 1 1 = 4 1.3 = 4 1.(39-9.4) 10.4-1.39 = 10.(160-4.39)-1.39 10.160-41.39 = 10.160-41.(839-5.160) 215.160-41.839 Logo, 160-1 mod 839 = 215 Verificação: 160*215 = 35400 = 1 mod 839 35400 839-35399 1 Prof RG Crespo Software de Telecomunicações Teoria números : 23/37 41 Congruência (6) Teorema: Num anel Z P todos os elementos não nulos possuem inverso multiplicativo, sse P for primo. Prova: pela definição de inverso multiplicativo, aa -1 = 1 + Pk que tem solução sse a,p forem co-primos. Se todos os elementos não nulos de Z P forem co-primos, então P é primo. Corrolário: a/b em Z P é dada por ab -1 mod P Ex: 37/160 mod 839 = 37*160-1 = 37*215= 7955 mod 839 = 404 Prof RG Crespo Software de Telecomunicações Teoria números : 24/37
Congruência (7) Definição: a soma módulo 2, a b, resulta 1 sse os operandos forem distintos. a b = a+b mod 2 Propriedades: para quaisquer a,k a a = 0 A B A B a k k = a 0 0 0 0 1 1 1 0 1 1 1 0 Prof RG Crespo Software de Telecomunicações Teoria números : 25/37 Eficiência de operações RSA (1) A grande dimensão dos blocos RSA levou à criação de bibliotecas de operações. i. Produto Pretende-se avaliar x.y, com valores na ordem 2 1024 10 308. Cálculo pelo método matricial (proposto pela primeira vez por Fibonnaci) é muito ineficiente. Alternativa: multiplicação russa, com shift e somas. 1. Enquanto y 1 executar e colocar lado a lado x=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 Software de Telecomunicações Teoria números : 26/37
Eficiência de operações RSA (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 Software de Telecomunicações Teoria números : 27/37 Eficiência de operações RSA (3) ii. Exponenciação módulo M Cálcular x c e só depois calcular x c mod N gera valores de dimensão muito elevada. Alternativa: em cada multiplicação por x, calcular 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 Software de Telecomunicações Teoria números : 28/37
Eficiência de operações RSA (4) 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(lg 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 Software de Telecomunicações Teoria números : 29/37 Eficiência de operações RSA (5) 1 x c mod N em hardware z x Lógica controlo c mult mod N Prof RG Crespo Software de Telecomunicações Teoria números : 30/37
Eficiência de operações RSA (6) iii. Decifra RSA Decifra mais eficiente com auxílio do 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) coprimos. 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 Software de Telecomunicações Teoria números : 31/37 Eficiência de operações RSA (7) 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 11! Prof RG Crespo Software de Telecomunicações Teoria números : 32/37
Eficiência de operações RSA (8) 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 d p M = Cmod p = C mod q = d mod( p 1) p = C p d p mod p C q d q M = d mod( q 1) = C 2. Decifrar mensagem a partir dos resíduos M = ( M R p = ( p p 1 R q + M q mod q) p = R ) mod N p p q 1 mod q 1 p 1 Rq = ( q mod p) q = q mod N Prof RG Crespo Software de Telecomunicações Teoria números : 33/37 q mod N q d q Números aleatórios (1) Definição: 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. Definição: 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 Software de Telecomunicações Teoria números : 34/37
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 Software de Telecomunicações Teoria números : 35/37 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 Software de Telecomunicações Teoria números : 36/37
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 Diehard Prof RG Crespo Software de Telecomunicações Teoria números : 37/37