1 / 31

Criptografia e Segurança de Redes Capítulo 4

Criptografia e Segurança de Redes Capítulo 4. Quarta Edição por William Stallings Slides por Lawrie Brown Tradução: Marcos J Pinto. Capítulo 4 – Corpos Finitos.

nhi
Download Presentation

Criptografia e Segurança de Redes Capítulo 4

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Criptografia e Segurança de RedesCapítulo4 QuartaEdição porWilliam Stallings Slides porLawrieBrown Tradução: Marcos J Pinto

  2. Capítulo 4 – Corpos Finitos Na alvorada da manhã seguinte, Star voou porta adentro, parecendo ansiosa por uma aula. Eu disse: “Bata oito”. Ela fez uma apresentação brilhante, primeiro batendo 4 e 4 e, em seguida, lançando-me um olhar rápido, fez em 2, 2, 2, 2 antes de pegar sua castanha. É impressionante como Star aprendeu a contar até 8 sem dificuldade e, por conta própria, descobriu que cada número poderia ser dividido de diferentes formas, não deixando dúvidas de que ela estava obtendo conscientemente cada número. Na verdade, ela fazia aritmética mental, embora não tivesse a capcidade dos humanos de nomear os números. Star é ímpar como uma ave silvestre que, por vontade própria, buscou a ciência dos números com grande interesse e inteligência surpreendente. — Vivendo com pássaros, Len Howard

  3. Introdução • Veremos agora os corpos • de crescente importância em criptografia • AES, Curvas Elipticas, IDEA, Chave Pública • envolve operações com “numbers” • onde o que constitui um “número” e os tipos de operações variam consideravelmente • Iniciamos com conceitos sobre grupos, anéis e corpos a partir da álgebra abstrata

  4. Grupo • um conjunto de elementos ou “números” • com alguma operação cujo resultado também está presente no conjunto (fechamento) • obedece: • lei associativa:(a.b).c = a.(b.c) • tem a identidade e: e.a = a.e = a • possui inversas a-1: a.a-1 = e • se comutativo a.b = b.a • então forma um grupo abeliano

  5. Grupo cíclico • define a exponenciação como a aplicação repetida de um operador • exemplo:a-3 = a.a.a • seja a identidade:e=a0 • um grupo será cíclico se todos os elementos forem uma potência de algum elemento fixo • ex b =akpara alguns ae todos os bdo grupo • diz-se que a é um gerador do grupo

  6. Anel • um conjunto de “números” • com duas operações (adição e multiplicação) que formam: • um grupo abeliano com operação de adição • e multiplicação: • tem fechamento • é associativo • distributivo sobre a adição:a(b+c) = ab + ac • Se a operação de multiplicação for comutativa, formará um anel comutativo • se a operação de multiplicação tiver uma identidade e nenhum divisor zero, formará um domínio integral

  7. Corpo • um conjunto de números • com duas operações que formam: • grupo abeliano para adição • grupo abeliano para multiplicação (ignorando 0) • anel • ter hierarquia com mais axiomas/leis • grupo -> anel -> corpo

  8. Aritmética Modular • define-se o operador módulo “a mod n” como o resto da divisão de a is por n • usa-se o termo congruência para: a = b mod n • quando dividido por n, a & b têm o mesmo resto • ex.: 100 = 34 mod 11 • b é chamado de resíduo de a mod n • como com inteiros pode-se sempre escrever: a = qn + b • geralmente escolhe-se o menor resto positivo como resíduo • ex: 0 <= b <= n-1 • o processo é conhecido como redução modular • ex: -12 mod 7 = -5 mod 7 = 2 mod 7 = 9 mod 7

  9. Divisores • digamos que um número diferente de zero bdividaase para algum mhouver a=mb (a,b,mtodos inteiros) • ou seja, bdivide asem resto • representa-se isso como b|a • e diz-se que bé um divisorde a • ex: 1,2,3,4,6,8,12,24 dividem 24

  10. Operações de Aritmética Modular • é a ‘aritmética do relógio' • emprega um número finito de valores e faz retorno circular de cada extremidade • há aritmética modular quando a adição & multiplicação e módulo reduzem a resposta • podem-se fazer reduções em qualquer ponto, ex • a+b mod n = [a mod n + b mod n] mod n

  11. Aritmética Modular • pode-se fazer aritmética modular com qualquer grupo de inteiros: Zn = {0, 1, … , n-1} • forma um anel comutativo para adição • com uma identidade multiplicativa • observe algumas peculiaridades • se (a+b)=(a+c) mod n entãob=c mod n • mas se (a.b)=(a.c) mod n entãob=c mod n somente sea for relativamente primo den

  12. Exemplo de adição módulo 8

  13. Máximo Divisor Comum (MDC) • um problema comum em teoria dos números • MDC (a,b) entre a e b é o maior divisor comum entre a e b • ex.: MDC(60,24) = 12 • frequentemente não exige fatores comuns (exceto 1) e então os números são relativamente primos • ex.: MDC(8,15) = 1 • então 8 & 15 são relativamente primos

  14. Algoritmo Euclideano • maneira eficiente de encontrar MDC(a,b) • emprega o teorema que: • MDC(a,b) = MDC(b, a mod b) • Algoritmo Euclideano para calcular MDC(a,b) é: EUCLID(a,b) 1. A = a; B = b 2. if B = 0 return A = mdc(a, b) 3. R = A mod B 4. A = B 5. B = R 6. goto 2

  15. Exemplo: MDC(1970,1066) 1970 = 1 x 1066 + 904 mdc(1066, 904) 1066 = 1 x 904 + 162 mdc (904, 162) 904 = 5 x 162 + 94 mdc (162, 94) 162 = 1 x 94 + 68 mdc (94, 68) 94 = 1 x 68 + 26 mdc (68, 26) 68 = 2 x 26 + 16 mdc (26, 16) 26 = 1 x 16 + 10 mdc (16, 10) 16 = 1 x 10 + 6 mdc (10, 6) 10 = 1 x 6 + 4 mdc (6, 4) 6 = 1 x 4 + 2 mdc (4, 2) 4 = 2 x 2 + 0 mdc (2, 0)

  16. Corpo de Galois • corpos finitos são fundamentais em criptografia • demonstra que o número de elementos em um corpo finito deve ser uma potência de um primo pn • Conhecido como corpo de Galois • representado como GF(pn) • particularmente costuma usar os corpos: • GF(p) • GF(2n)

  17. Corpo de Galois GF(p) • GF(p) é o conjunto de inteiros {0,1, … , p-1} com operações aritméticas módulo primo p • formam um corpo finito • já que há inversos multiplicativos • então a aritmética é “bem comportada” e pode fazer adição, subtração, multiplicação e divisão sem sair do corpo GF(p)

  18. Exemplo de multiplicação GF(7)

  19. Cálculo de inversos EXTENDED EUCLID(m, b) 1. (A1, A2, A3)=(1, 0, m); (B1, B2, B3)=(0, 1, b) 2. if B3 = 0 return A3 = gcd(m, b); não há inverso 3. if B3 = 1 return B3 = gcd(m, b); B2 = b–1 mod m 4. Q = A3 div B3 5. (T1, T2, T3)=(A1 – Q B1, A2 – Q B2, A3 – Q B3) 6. (A1, A2, A3)=(B1, B2, B3) 7. (B1, B2, B3)=(T1, T2, T3) 8. goto 2

  20. Inverso de 550 em CF(1759)

  21. Aritmética de polinômios • é possível calcular com polinômios f(x) = anxn + an-1xn-1 + … + a1x + a0 = ∑ aixi • nota: não interessa qualquer valor específico de x • que é conhecido como indeterminado • diversas alternativas disponíveis • aritmética de polinômios comum • aritmética de pol com coordenadas mod p • aritmética de pol com coordenadas mod p e polinômios mod m(x)

  22. Aritmética comum entre polinômios • adicionar ou subtrair coeficientes correspondentes • multiplicar todos os termos um pelo outro • ex let f(x) = x3 + x2 + 2 and g(x) = x2 – x + 1 f(x) + g(x) = x3 + 2x2 – x + 3 f(x) – g(x) = x3 + x + 1 f(x) x g(x) = x5 + 3x2 – 2x + 2

  23. Aritmética de polinômios com Coeficientes de Módulo • ao calcular o valor de cada coeficiente, calcular modulo algum valor • forma um anel de polinômios • poderia ser modulo qualquer primo • mas estamos mais interessados em mod 2 • ou seja, todos os coeficientes são 0 ou 1 • ex. seja f(x) = x3 + x2 and g(x) = x2 + x + 1 f(x) + g(x) = x3 + x + 1 f(x) x g(x) = x5 + x2

  24. Divisão de Polinômios • pode-se escrever qualquer polinômio na forma: • f(x) = q(x) g(x) + r(x) • pode-se interpretar r(x) como um resto • r(x) = f(x) mod g(x) • Se não houver resto, digamos g(x) divide f(x) • Se g(x) não tiver divisores além dele próprio & 1 diz-se polinômio irredutível(ou primo) • aritmética módulo um polinômio irredutível forma um corpo

  25. MDC de Polinômios • pode-se calcular o máximo divisor comum entre polinômios • c(x) = MDC(a(x), b(x)) se c(x)for o polinômio de maior grau que divide tanto a(x) como b(x) • pode-se adaptar o Algoritmo de Euclides para calcular: EUCLID[a(x), b(x)] 1. A(x) = a(x); B(x) = b(x) 2. if B(x) = 0 return A(x) = gcd[a(x), b(x)] 3. R(x) = A(x) mod B(x) 4. A(x) ¨ B(x) 5. B(x) ¨ R(x) 6. goto 2

  26. Aritmética de Polinômios Modular • pode-se calcular em corpo GF(2n) • polinômios com coeficientes módulo 2 • cujo grau seja inferior a n • assim deve-se reduzir modulo um poli irredutível de grau n (somente para multiplicação) • forma um corpo finito • pode-se sempre encontrar um inverso • pode-se ampliar o algoritmo inverso de Euclides para calcular

  27. Exemplo GF(23)

  28. Considerações Computacionais • como os coeficientes são 0 ou 1, podem representar qualquer polinômio tal como uma string de 1 bit • a adição se torna um XOR entre strings de bit • a multiplicação é shift & XOR • cf long-hand multiplication • a redução módulo é feita substituindo-se repetidas vezes a maior potência com o resto do poli irredutível (também shift & XOR)

  29. Exemplo computacional • em CG(23) tendo (x2+1) é 1012 & (x2+x+1) é 1112 • então a adição é • (x2+1) + (x2+x+1) = x • 101 XOR 111 = 0102 • e a multiplicação é • (x+1).(x2+1) = x.(x2+1) + 1.(x2+1) = x3+x+x2+1 = x3+x2+x+1 • 011.101 = (101)<<1 XOR (101)<<0 = 1010 XOR 101 = 11112 • redução módulo de polinômios (get q(x) & r(x)) • (x3+x2+x+1 ) mod (x3+x+1) = 1.(x3+x+1) + (x2) = x2 • 1111 mod 1011 = 1111 XOR 1011 = 01002

  30. Uso de um Gerador • definição equivalente de um corpo finito • um generator g é um elemento cujas potências geram todos elementos diferentes de zero • em F há 0, g0, g1, …, gq-2 • pode-se criar um gerador a partir da raiz do polinômio irredutível • depois implementar a multiplicação adicionando-se expoentes do gerador

  31. Sumário • foi abordado: • conceito de grupos, anéis e corpos • aritmética modular com inteiros • algoritmo de Euclides para MDC • corpos finitos GF(p) • aritmética de polinômios em geral e em GF(2n)

More Related