200 likes | 380 Views
Criptografia e Segurança de Redes Capítulo 8. Quarta Edição por William Stallings Tradução : Cesar e Luis Augusto. Capítulo 8 – Introdução à Teoria dos Números.
E N D
Criptografia e Segurança de RedesCapítulo 8 QuartaEdição por William Stallings Tradução: Cesar e Luis Augusto
Capítulo 8 – Introdução à Teoria dos Números O diabo disse a Daniel Webster: “De-me uma tarefa que eu não possa realizar, e eu vou lhe dar qualquer coisa no mundo que você pedir." Daniel Webster: "É justo. Prove que para n maior que 2, a equação a^n + b^n = c^n não possui solução trivial no conjunto dos inteiros." Eles concordaram com um período de três dias para o trabalho, e o diabo desapareceu. Ao final de três dias, o diabo apresentou-se, fatigado, mordendo o lábio. Daniel Webster lhe disse: "Bem, como você se saiu na minha tarefa? Conseguiu provar o teorema? "Eh? Não... Não,eu não consegui provar." "Então eu posso ter o que eu quiser? Dinheiro? A Presidência? "O quê? Ah, é claro. Mas escute! Se pudéssemos simplesmente provar os dois lemas a seguir...“ ThemathematicalMagpie, CliftonFadiman
Números Primos • Números primos são divisíveis por 1 e ele mesmo • Eles não podem ser escritos como produto de outros números • Observe: 1 é primo, mas geralmente não é de interesse • Ex.: 2,3,5,7 são primos, 4,6,8,9,10 não são • Números primos são o centro da teoria dos números • A lista das primos menores que 200 é: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
Fatoração em Primo • Fatorar um número n é escrevê-lo como produto de outros números: n=a x b x c • Observe que fatorar é relativamente difícil comparado com multiplicar os fatores juntos para gerar o número • A fatoração de um primo n é quando ele é um produto de primos • Ex.: 91=7x13 ; 3600=24x32x52
Relatividade de Números Primos & MDC • Dois números a, b são relativamente primos se não tem nenhum divisor comum a não ser o 1 • Ex.: 8 & 15 são relativamente primos desde que os fatores de 8 sejam 1,2,4,8 e do 15 sejam 1,3,5,15 e 1 é o único fator comum • Inversa pode determinar o máximo divisor comum comparando suas fatorações de primos e usando a menor potência • Ex.: 300=21x31x52 18=21x32por isso MDC(18,300)=21x31x50=6
Teorema de Fermat • ap-1 = 1 (mod p) • onde p é primo e mdc(a,p)=1 • Também conhecido como Pequeno Teorema de Fermat • também ap = a (mod p) • Aplicável em chaves públicas e testes de primalidade
FunçãoTotientede Euler ø(n) • Quando usamos aritmética módulo n • Conjunto completo de resíduos é: 0..n-1 • Conjunto reduzido de resíduos são aqueles números (resíduos) que são relativamente primos de n • Ex.: para n=10, • Conjunto completo de resíduos é: {0,1,2,3,4,5,6,7,8,9} • Conjunto reduzido é: {1,3,7,9} • O número de elementos no conjunto reduzido de resíduos é chamado Função Totiente de Euler ø(n)
FunçãoTotientede Euler ø(n) • Para computar ø(n) é preciso contar o número de resíduos à ser excluído • Geralmente faz-se a fatoração do primo, mas • Para p (p primo) ø(p) = p-1 • para p.q (p,q primo) ø(pq) =(p-1)x(q-1) • Ex.: ø(37) = 36 ø(21) = (3–1)x(7–1) = 2x6 = 12
Teorema de Euler • Uma generalização do Teorema de Fermat • aø(n) = 1 (mod n) • para cada a,n onde mdc(a,n)=1 • Ex.: a=3;n=10; ø(10)=4; por isso 34 = 81 = 1 mod 10 a=2;n=11; ø(11)=10; por isso 210 = 1024 = 1 mod 11
Teste de primalidade • Freqüentemente precisa-se encontrar o maior número primo • Tradicionalmente seleciona utilizando divisão básica • Ex.: divide por todos números (primos) menores do que a raiz quadrada do número • Só funciona para números pequenos • Uma alternativa é usar o teste de primalidade estatística baseado na propriedade dos primos • Para que todos os números primos satisfaçam a propriedade • Mas alguns números compostos, chamados pseudo-primos, também satisfazem a propriedade • Pode usar um teste de primalidade determinística mais devagar
Algoritmo de Miller Rabin • Um teste baseado no teorema de Fermat • O algoritmo é: TEST (n) é: 1. Encontre inteiros k, q, com k > 0, q impar, de modo que (n – 1 = 2kq); 2. Selecione um inteiro aleatório a, 1 < a < n – 1; 3.Se aqmodn = 1então return (“talvez primo”); 4. Para j = 0 até k – 1 faça 5. se (a2jqmodn = n - 1) então return(" talvez primo "); 6. return (“composto");
Considerações Probabilísticas • Se Miller-Rabin retornar “composto” o número é definitivamente não-primo • De outro modo, é primo ou pseudo-primo • As chances de detectar um pseudo-primo é de menos de ¼ • Por isso se repetir o teste com diferentes aleatoriedades a chance de n primos depois de t testes são: • Pr(n primos depois de t testes) = 1-4-t • Ex.: para t=10 esta probabilidade é > 0.99999
Distribuição dos Primos • Teoria dos números primos afirma que primos ocorrem aproximadamente a toda (ln n) • Mas pode ignorar os eventos imediatamente • Então, na prática precisa testar somente 0.5 ln(n) números de tamanho n para encontrar um primo • Observe, isto é somente a “média” • Algumas vezes os primos estão próximos • Outras estão muito distantes
Teorema Resto Chinês • Usado par acelerar a computação de módulo • Se rodando o módulo de um produto de números • Ex.:. mod M = m1m2..mk • Teorema Resto Chinês nos deixa trabalhar em cada módulo mi separadamente • Desde o custo computacional é proporcional ao tamanho, ele é mais rápido do que trabalhar no tamanho total M
Teorema Resto Chinês • Pode-se implementar o CRT de várias formas • Para calcular A(mod M) • Primeiro calcule todos ai = A mod mi separadamente • Determine constantes ci abaixo, onde Mi = M/mi • Então combine os resultados para obter a resposta usando:
Raiz Primitiva • Do Teorema de Euler temos aø(n)mod n=1 • considere am=1 (mod n), MDC(a,n)=1 • Deve existir para m = ø(n) mas deve ser menor • Quando potência atingir m, repete o ciclo • Se o menor for m = ø(n) então a é chamado um raiz primitiva • Se p é primo, potências sucessivas de a “geram" o grupo mod p • São úteis, mas difícil de se encontrar
Logaritimos Discretos • O problema inverso à exponenciação é encontar o logaritmo discreto de um número módulo p • Isto é encontrar x desde que y = gx (mod p) • É escrito como x = logg y (mod p) • Se g for um raiz primitiva então isto sempre existe, senão pode não existir • Ex.: x = log3 4 mod 13 não tem resposta x = log2 3 mod 13 = 4 mas tentando sucessivas potências • Enquanto exponenciação é relativamente fácil, encontrar logaritmo discreto é um grande problema
Sumário • Considerações: • Números primos • Teorema de Fermat e Euler & ø(n) • Teste de primalidade • Teorema do Resto Chinês • Logaritmos Discretos
É um teste rápido, mas siga as etapas com atenção. • Não pule etapas. • Responda as perguntas e leia atentamente até o final. • 1 - Olhe no relógio e marque as horas!!! • 2 - Pense em um número inteiro de 1 a 9 • 3 - Multipique seu valor por 9 • 4 - some os dois algarismos deste produto! (Ex.: 21, 2+1 3) • 5 - Nao pule as etapas!!!! • 6 - some 7 ao resultado • 7 - divida o resultado por 4 • 8 - Faca a conversao do número por uma letra do alfabeto (Ex.: 1 a 2 b 3 c • 9 - Pense em um pais com a letra correspondente • 10 - Nao pule as etapas!!!! • 11 - Ache a 5ª Letra deste pais • 12 - Pense em um animal com esta letra. • 13 - Depois de Tudo isso, veja as horas.
14 - Veja quanto tempo da sua vida você perdeu!!!! • E além do mais, na Dinamarca não se pode criar macaco!