Álgebra e Teoria dos Números Diego F. Aranha Institute of Computing UNICAMP dfaranha (IC) Álgebra e Teoria dos Números 1/22 Primos e divisibilidade Divisibilidade Para a, b 2 Z, dizemos que a divide b (denotado por a | b) ou que a é divisor de b se existe c 2 Z tal que ac = b. Se a 62 {1, b}, dizemos que a é fator ou divisor não-trivial de b. Primalidade Um número inteiro p > 1 é primo se não possui fatores, ou seja, só possui divisores triviais. Um número que não é primo é dito composto. Teorema Fundamental da Aritmética Qualquer número inteiro N > 1 pode ser expressado unicamente (a Q menos de permutação) como um produto de fatores primos N = i piei , com pi distintos e ei 1 para todo i. dfaranha (IC) Álgebra e Teoria dos Números 2/22 Divisibilidade Divisão Seja a 2 Z e b inteiro positivo. Existem inteiros únicos q, r tais que a = bq + r , com 0 r < b. Máximo Divisor Comum Sejam a, b inteiros positivos. Existem inteiros x, y tais que ax + by = mdc(a, b) e mdc(a, b) é o menor inteiro que pode ser escrito dessa forma. Propriedades - Se c | ab e mdc(a, c) = 1, então c | b. Em particular, se p é primo e p | ab, então p | a ou p | b. - Se p | N, q | N e mdc(p, q) = 1, então pq | N. dfaranha (IC) Álgebra e Teoria dos Números 3/22 Algoritmo de Euclides Algorithm 1 Cálculo de mdc(a, b). 1: r0 a, r1 b, m 1 2: while rm 6= 0 do 3: qm b rmrm 1 c 4: rm+1 rm 1 qm rm 5: m m+1 6: end while 7: m m 1 8: return (q1 , . . . , qm ; rm = mdc(a, b)) Invariantes - Para 0 i rm - Temos que rm 1 2 : ri = qi+1 ri+1 + ri+2 , com 0 < ri+2 < ri+1 ; = qm rm ; - mdc(r0 , r1 ) = mdc(r1 , r2 ) = · · · = mdc(rm dfaranha (IC) Álgebra e Teoria dos Números 1 , rm ) = rm 4/22 Algoritmo de Euclides Sejam as duas seqüências: 8 > <0 tj = 1 > : tj 8 > <1 sj = 0 > : sj 2 2 qj qj 1 tj 1 se j = 0 se j = 1 se j 2 1 sj 1 se j = 0 se j = 1 se j 2 Teorema Para 0 j m, temos que rj = sj r0 + tj r1 . Prova: Por indução forte! dfaranha (IC) Álgebra e Teoria dos Números 5/22 Algoritmo Estendido de Euclides Algorithm 2 Cálculo de r = mdc(a, b) = sa + tb, com r , s, t 2 Z. 1: a0 a, b0 b 2: t0 0, t 1, s0 1, s 0 a0 3: q b b0 c, r a0 qb0 4: while r > 0 do 5: T t0 qt, t0 t, t T 6: T s0 qs, s0 s, s T a0 7: a0 b0 , b0 r, q b b0 c, r a0 qb0 8: end while 9: r b0 10: return (r , s, t) dfaranha (IC) Álgebra e Teoria dos Números 6/22 Aritmética Modular Definições Sejam a, b, N 2 Z, com N > 1. A redução modular de a módulo N (a mod N) denota o resto da divisão inteira de a por N. Dizemos que a, b são congruentes módulo N (a ⌘ b (mod N)) se a mod N = b mod N ou ainda se N | (a b). A relação de congruência é reflexiva, simétrica e transitiva. Lembrete: ad ⌘ cd (mod N) nem sempre implica a ⌘ c (mod N). Inverso Sejam a, N 2 Z , com N > 1. Então a é inversı́vel módulo N sse mdc(a, N) = 1. O inverso único de a é denotado por a 1 e pode ser calculado pelo Algoritmo Estendido de Euclides. Exemplo: 14 é o inverso de 11 módulo 17. dfaranha (IC) Álgebra e Teoria dos Números 7/22 Grupos Definição Um grupo G é um conjunto equipado com uma operação binária possui as seguintes propriedades: - Fechamento: Se g , h 2 G, então g h 2 G; - Inverso: 8g 2 G, 9h 2 G tal que g h=e=g - Elemento Neutro: 9e 2 G tal que 8g 2 G, g e=e que g = g. e. - Associatividade: 8g1 , g2 , g3 2 G, g1 (g2 g3 ) = (g1 g2 ) g3 . Quando G é um grupo finito, denotamos o número de elementos (ordem) de G por |G|. Um grupo é dito abeliano se é uma relação comutativa, ou seja, 8g1 , g2 2 G, g1 g2 = g2 g1 . Exemplos: (Z, +), (R, +), (R⇤ , ⇥), (ZN = {0, 1, . . . , N 1}, +). Subgrupo Se G é um grupo, um conjunto H ✓ G é subgrupo se H for um grupo sob a mesma operação de G. dfaranha (IC) Álgebra e Teoria dos Números 8/22 Grupos Notação A operação de grupo pode utilizar notação aditiva ou multiplicativa. Quando a operação de grupo é aplicada (m 1) vezes a um elemento g , utilizamos a notação aditiva m · g ou multiplicativa g m . Inversos e elementros neutros são denotados por ( g , 0) e (g 1 , 1), respectivamente. Importante: Não confundir com adição ou multiplicação inteira. Teorema Seja G um grupo finito de ordem m. Para todo g 2 G e i 2 Z , temos que g m = 1 e se m > 1, g i = g i mod m . Corolário Seja d, e 2 Z e G um grupo finito de ordem m > 1. A função fe : G ! G tal que fe (g ) = g e é uma permutação quando mdc(e, m) = 1 e fd é função inversa de fe se d = e 1 mod m. dfaranha (IC) Álgebra e Teoria dos Números 9/22 O grupo Z⇤N Teorema Q Sejam um inteiro N > 1 com fatoração N = i piei e Z⇤N = {a 2 {1, . . . , N 1} | mdc(a, N) = 1}. Então Z⇤N é um grupo abeliano sob a multiplicação módulo A ordem do grupo é dada pela Q N. ei 1 função totiente de Euler (N) = i pi (pi 1). Corolário Seja N > 1 inteiro e a 2 Z⇤N . Então a a 2 Zp , temos que ap 1 = 1 mod p. dfaranha (IC) (N) = 1 mod N. Se N é primo e Álgebra e Teoria dos Números 10/22 Teorema Chinês do Resto Isomorfismo Sejam G, H grupos com operações G , H , respectivamente. A função f : G ! H é um isomorfismo se f é uma bijeção e 8g1 , g2 2 G, f (g1 G g2 ) = f (g1 ) H f (g2 ). Teorema Seja N = pq, com p, q relativamente primos. A função f (x) = (x mod p, x mod q) é um isomorfismo de ZN para Zp ⇥ Zq e de Z⇤N para Z⇤p ⇥ Z⇤q . Importante: A mudança de representação afeta o custo computacional de operações em grupo. dfaranha (IC) Álgebra e Teoria dos Números 11/22 Teorema Chinês do Resto Sejam m1 , . . . , mr inteiros co-primos entre si dois a dois e suponha a1 , . . . , ar inteiros. Considere o sistema de equações: x x x ⌘ a1 (mod m1 ) ⌘ a2 (mod m2 ) ⌘ ar (mod mr ) ··· O Teorema Chinês Qr do Resto fornece uma solução única para esse sistema módulo M = i=1 mi : Teorema A solução para o sistema de equações é x = Mi = M/mi e yi = Mi dfaranha (IC) 1 r X ai Mi yi mod M, onde i=1 mod mi , para 1 i r . Álgebra e Teoria dos Números 12/22 Geração de números primos Precisamos da geração de números primos grandes, ou ainda, a geração de números grandes e teste de sua primalidade. Alternativas: - Teste determinı́stico polinomial: [AKS 2002], O(n6 ); - Teste probabilı́stico: mais rápido, chance de erro. Teorema dos números primos Seja ⇡(N) a quantidade de números primos menores ou iguais a N. Podemos aproximar ⇡(N) ⇡ N/ ln (N). Exemplo: Para n com 1024 bits, precisamos gerar p, q com 512 bits. Um número aleatório com 512 bits tem probabilidade 2/355 de ser primo ı́mpar. dfaranha (IC) Álgebra e Teoria dos Números 13/22 Algoritmo probabilı́stico Definição Um algoritmo probabilı́stico é qualquer algoritmo que utiliza números aleatórios. Quando há chance de erro, o algoritmo é dito de Monte Carlo. Quando a resposta é sempre correta, mas com chance de falha, o algoritmo é dito Las Vegas. Classificação para solução de problemas de decisão: 1 Monte Carlo com viés positivo: uma resposta SIM é sempre correta, mas uma resposta NÃO pode estar incorreta; 2 Monte Carlo com viés negativo: uma resposta NÃO é sempre correta, mas uma resposta SIM pode estar incorreta. A probabilidade de erro é limitada superiormente por ✏. Importante: como transformar Monte Carlo em Las Vegas? dfaranha (IC) Álgebra e Teoria dos Números 14/22 Problema de decisão Composto(n), n 2 O conjunto D(n) de divisores distintos de n possui mais do que dois elementos? Alternativas para resolver o problema: 1 Solovay-Strassen: Monte Carlo com viés positivo, ✏ = 1/2; 2 Miller-Rabin: Monte Carlo com viés positivo, ✏ = 1/4. dfaranha (IC) Álgebra e Teoria dos Números 15/22 Problema de decisão Definição Seja p um primo ı́mpar e a inteiro. Dizemos que a é resı́duo quadrático módulo p se a 6= 0 (mod p) e y 2 ⌘ a (mod p) possui duas soluções (y , y ) módulo p. Caso contrário, a é resı́duo não-quadrático. Exemplo: Em Z11 , os resı́duos quadráticos são 1, 3, 4, 5 e 9. Os resı́duos não-quadráticos são 2, 6, 7, 8 e 10. Lema Se p é um primo ı́mpar, então as únicas raı́zes quadradas de 1 módulo p são 1 e 1 mod p. dfaranha (IC) Álgebra e Teoria dos Números 16/22 Sı́mbolos de Jacobi e Legendre Teorema (Critério de Euler) Seja p primo ı́mpar. Então a é resı́duo quadrático módulo p sse a(p 1)/2 ⌘ 1 (mod p). Prova: Suponha que a ⌘ y 2 (mod p). Se p é primo, então ap (mod p), 8a 6⌘ 0 (mod p). Logo: a(p 1)/2 dfaranha (IC) ⌘ (y 2 )(p 1)/2 ⌘1 1 ⌘1 (mod p). Álgebra e Teoria dos Números 17/22 Sı́mbolos de Jacobi e Legendre Teorema (Critério de Euler) Seja p primo ı́mpar. Então a é resı́duo quadrático módulo p sse a(p 1)/2 ⌘ 1 (mod p). Prova: Suponha que a ⌘ y 2 (mod p). Se p é primo, então ap (mod p), 8a 6⌘ 0 (mod p). Logo: a(p 1)/2 ⌘ (y 2 )(p 1)/2 ⌘1 1 ⌘1 (mod p). Agora, suponha que a(p 1)/2 ⌘ 1 (mod p). Seja b um elemento primitivo módulo p. Então a ⌘ b i (mod p) para i 2 Z. Logo: a(p 1)/2 ⌘ (b i )(p 1)/2 (mod p). Como b tem ordem p 1, então (p 1)|i(p raı́zes quadradas de a são ±b i/2 mod p. dfaranha (IC) Álgebra e Teoria dos Números 1)/2. Então i é par e as 17/22 Sı́mbolos de Jacobi e Legendre Definição ⇣ ⌘ Para a 2 Z, p primo ı́mpar, o sı́mbolo de Legendre pa é: 8 se a ⌘ 0 (mod p) ✓ ◆ > <0 a = 1 se a é resı́duo quadrático módulo p > p : 1 se a é resı́duo não-quadrático módulo p. ⇣ ⌘ Temos que pa ⌘ a(p 1)/2 (mod p). dfaranha (IC) Álgebra e Teoria dos Números 18/22 Sı́mbolos de Jacobi e Legendre Definição ⇣ ⌘ Para a 2 Z, p primo ı́mpar, o sı́mbolo de Legendre pa é: 8 se a ⌘ 0 (mod p) ✓ ◆ > <0 a = 1 se a é resı́duo quadrático módulo p > p : 1 se a é resı́duo não-quadrático módulo p. ⇣ ⌘ Temos que pa ⌘ a(p 1)/2 (mod p). Definição Q Suponha n 2 Z ı́mpar positivo com fatoração n = ki=1 pi ei . Seja a 2 Z. O sı́mbolo de Jacobi na é definido como: ⇣a⌘ n dfaranha (IC) = k ✓ ◆ ei Y a i=1 pi Álgebra e Teoria dos Números 18/22 Algoritmo Solovay-Strassen Para o sı́mbolo de Jacobi, temos que na = 0 sse mdc(a, n) 6= 1. Temos ainda que para n composto, a igualdade na = a(n 1)/2 (mod n) é verdadeira para metade dos inteiros a 2 Z⇤n . dfaranha (IC) Álgebra e Teoria dos Números 19/22 Algoritmo Solovay-Strassen Para o sı́mbolo de Jacobi, temos que na = 0 sse mdc(a, n) 6= 1. Temos ainda que para n composto, a igualdade na = a(n 1)/2 (mod n) é verdadeira para metade dos inteiros a 2 Z⇤n . Algoritmo 1 Escolher inteiro aleatório a tal que 1 a n 2 x 1 a n 3 Se x = 0, retorne COMPOSTO 4 y a(n 1)/2 (mod n) 5 Se x ⌘ y (mod n), retorne PRIMO. Caso contrário, retorne COMPOSTO. Importante: Por que o algoritmo tem viés positivo com ✏ = 1/2? dfaranha (IC) Álgebra e Teoria dos Números 19/22 Algoritmo Solovay-Strassen Propriedades do sı́mbolo de Jacobi: - Se n > 0 ı́mpar e m1 ⌘ m2 (mod n), então: ⇣m ⌘ ⇣m ⌘ 1 2 = . n n - Se n > 0 ı́mpar, então: ✓ ◆ ( 1 se n ⌘ ±1 (mod 8) 2 = n 1 se n ⌘ ±3 (mod 8). - Se n > 0 ı́mpar, então: ✓ ◆ ✓ ◆k ⇣ ⌘ ⇣m m ⌘ ⇣m ⌘ ⇣m ⌘ m = 2k t 2 t 1 2 1 2 = , ou = n n n n n n - Se m, n > 0 ı́mpares, então: ( ⇣m⌘ n m = n n m dfaranha (IC) se m ⌘ n ⌘ 3 (mod 4) caso contrário. Álgebra e Teoria dos Números 20/22 Algoritmo Miller-Rabin Intuição: Não há raı́zes não-triviais de 1 módulo p primo. Extrair raı́zes quadradas de an 1 mod n e verificar se todas são ±1 mod n. Algoritmo 1 Escrever n 1 = 2k m, com m ı́mpar 2 Escolher inteiro aleatório a tal que 1 a n 3 b 1 am mod n 4 Se b ⌘ 1 (mod n), retorne PRIMO 5 Para i 0 até k 1, faça: - Se b ⌘ 1 (mod n), retorne PRIMO - b b 2 mod n 6 Retorne COMPOSTO Importante: Por que o algoritmo tem viés positivo com ✏ = 1/4? dfaranha (IC) Álgebra e Teoria dos Números 21/22 RSA (Rivest, Shamir, Adleman, 1977) Geração de chaves: 1 Gerar primos p e q com k/2 bits; 2 Calcular N = pq e (N) = (p 1)(q 1); 3 Selecionar e tal que mdc(e, (N)) = 1; (primo pequeno?) 4 Calcular d tal que d = e 1 mod (N); 5 M = C = ZN ; 6 K = (N, p, q, d, e). 7 Chave pública é (e, N), chave privada é (d, N, p, q). Cifração: Calcular EncK (x) = x e mod N; Decifração: Calcular DecK (y ) = y d mod N. dfaranha (IC) Álgebra e Teoria dos Números 22/22