A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Criptografia e Segurança de Redes Capítulo 4 Quarta Edição por William Stallings Slides por Lawrie Brown Tradução: Marcos J Pinto."— Transcrição da apresentação:

1 Criptografia e Segurança de Redes Capítulo 4 Quarta Edição por William Stallings Slides por Lawrie Brown 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 Vivendo com pássaros, Len Howard

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

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

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

6 Anel um conjunto de números um conjunto de números com duas operações (adição e multiplicação) que formam: com duas operações (adição e multiplicação) que formam: um grupo abeliano com operação de adição um grupo abeliano com operação de adição e multiplicação: e multiplicação: tem fechamento tem fechamento é associativo é associativo distributivo sobre a adição: a(b+c) = ab + ac 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 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 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 um conjunto de números com duas operações que formam: com duas operações que formam: grupo abeliano para adição grupo abeliano para adição grupo abeliano para multiplicação (ignorando 0) grupo abeliano para multiplicação (ignorando 0) anel anel ter hierarquia com mais axiomas/leis ter hierarquia com mais axiomas/leis grupo -> anel -> corpo 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 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 usa-se o termo congruência para: a = b mod n quando dividido por n, a & b têm o mesmo resto quando dividido por n, a & b têm o mesmo resto ex.: 100 = 34 mod 11 ex.: 100 = 34 mod 11 b é chamado de resíduo de a mod n b é chamado de resíduo de a mod n como com inteiros pode-se sempre escrever: a = qn + b como com inteiros pode-se sempre escrever: a = qn + b geralmente escolhe-se o menor resto positivo como resíduo geralmente escolhe-se o menor resto positivo como resíduo ex: 0 <= b <= n-1ex: 0 <= b <= n-1 o processo é conhecido como redução modular o processo é conhecido como redução modular ex: -12 mod 7 = -5 mod 7 = 2 mod 7 = 9 mod 7ex: -12 mod 7 = -5 mod 7 = 2 mod 7 = 9 mod 7

9 Divisores digamos que um número diferente de zero b divida a se para algum m houver a=mb ( a,b,m todos inteiros) digamos que um número diferente de zero b divida a se para algum m houver a=mb ( a,b,m todos inteiros) ou seja, b divide a sem resto ou seja, b divide a sem resto representa-se isso como b|a representa-se isso como b|a e diz-se que b é um divisor de a e diz-se que b é um divisor de a ex: 1,2,3,4,6,8,12,24 dividem 24 ex: 1,2,3,4,6,8,12,24 dividem 24

10 Operações de Aritmética Modular é a aritmética do relógio' é a aritmética do relógio' emprega um número finito de valores e faz retorno circular de cada extremidade 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 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 podem-se fazer reduções em qualquer ponto, ex a+b mod n = [a mod n + b mod n] mod n 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: Z n = {0, 1, …, n-1} pode-se fazer aritmética modular com qualquer grupo de inteiros: Z n = {0, 1, …, n-1} forma um anel comutativo para adição forma um anel comutativo para adição com uma identidade multiplicativa com uma identidade multiplicativa observe algumas peculiaridades observe algumas peculiaridades se (a+b)=(a+c) mod n se (a+b)=(a+c) mod n então b=c mod n mas se (a.b)=(a.c) mod n mas se (a.b)=(a.c) mod n então b=c mod n somente se a for relativamente primo de n

12 Exemplo de adição módulo

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

14 Algoritmo Euclideano maneira eficiente de encontrar MDC(a,b) maneira eficiente de encontrar MDC(a,b) emprega o teorema que: emprega o teorema que: MDC(a,b) = MDC(b, a mod b) MDC(a,b) = MDC(b, a mod b) Algoritmo Euclideano para calcular MDC(a,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 mdc(1066, 904) 1066 = 1 x mdc (904, 162) 904 = 5 x mdc (162, 94) 162 = 1 x mdc (94, 68) 94 = 1 x mdc (68, 26) 68 = 2 x mdc (26, 16) 26 = 1 x mdc (16, 10) 16 = 1 x mdc (10, 6) 10 = 1 x mdc (6, 4) 6 = 1 x mdc (4, 2) 4 = 2 x mdc (2, 0)

16 Corpo de Galois corpos finitos são fundamentais em criptografia 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 p n demonstra que o número de elementos em um corpo finito deve ser uma potência de um primo p n Conhecido como corpo de Galois Conhecido como corpo de Galois representado como GF(p n ) representado como GF(p n ) particularmente costuma usar os corpos: particularmente costuma usar os corpos: GF(p) GF(p) GF(2 n ) GF(2 n )

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 GF(p) é o conjunto de inteiros {0,1, …, p- 1} com operações aritméticas módulo primo p formam um corpo finito formam um corpo finito já que há inversos multiplicativos 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) 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) QA1A2A3B1B2B – –3109– – – –3394–

21 Aritmética de polinômios é possível calcular com polinômios é possível calcular com polinômios f(x) = a n x n + a n-1 x n-1 + … + a 1 x + a 0 = a i x i nota: não interessa qualquer valor específico de xnota: não interessa qualquer valor específico de x que é conhecido como indeterminadoque é conhecido como indeterminado diversas alternativas disponíveis diversas alternativas disponíveis aritmética de polinômios comum aritmética de polinômios comum aritmética de pol com coordenadas mod p aritmética de pol com coordenadas mod p aritmética de pol com coordenadas mod p e polinômios mod m(x) 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 adicionar ou subtrair coeficientes correspondentes multiplicar todos os termos um pelo outro multiplicar todos os termos um pelo outro ex ex let f(x) = x 3 + x and g(x) = x 2 – x + 1 f(x) + g(x) = x 3 + 2x 2 – x + 3 f(x) – g(x) = x 3 + x + 1 f(x) x g(x) = x 5 + 3x 2 – 2x + 2

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

24 Divisão de Polinômios pode-se escrever qualquer polinômio na forma: pode-se escrever qualquer polinômio na forma: f(x) = q(x) g(x) + r(x) f(x) = q(x) g(x) + r(x) pode-se interpretar r(x) como um resto pode-se interpretar r(x) como um resto r(x) = f(x) mod g(x) r(x) = f(x) mod g(x) Se não houver resto, digamos g(x) divide f(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) 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 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 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) 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: 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(2 n ) pode-se calcular em corpo GF(2 n ) polinômios com coeficientes módulo 2 polinômios com coeficientes módulo 2 cujo grau seja inferior a n cujo grau seja inferior a n assim deve-se reduzir modulo um poli irredutível de grau n (somente para multiplicação) assim deve-se reduzir modulo um poli irredutível de grau n (somente para multiplicação) forma um corpo finito forma um corpo finito pode-se sempre encontrar um inverso pode-se sempre encontrar um inverso pode-se ampliar o algoritmo inverso de Euclides para calcular pode-se ampliar o algoritmo inverso de Euclides para calcular

27 Exemplo GF(2 3 )

28 Considerações Computacionais como os coeficientes são 0 ou 1, podem representar qualquer polinômio tal como uma string de 1 bit 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 adição se torna um XOR entre strings de bit a multiplicação é shift & XOR a multiplicação é shift & XOR cf long-hand multiplication 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) 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(2 3 ) tendo (x 2 +1) é & (x 2 +x+1) é em CG(2 3 ) tendo (x 2 +1) é & (x 2 +x+1) é então a adição é então a adição é (x 2 +1) + (x 2 +x+1) = x (x 2 +1) + (x 2 +x+1) = x 101 XOR 111 = XOR 111 = e a multiplicação é e a multiplicação é (x+1).(x 2 +1) = x.(x 2 +1) + 1.(x 2 +1) (x+1).(x 2 +1) = x.(x 2 +1) + 1.(x 2 +1) = x 3 +x+x 2 +1 = x 3 +x 2 +x = (101)<<1 XOR (101)<<0 = = (101)<<1 XOR (101)<<0 = 1010 XOR 101 = redução módulo de polinômios (get q(x) & r(x)) redução módulo de polinômios (get q(x) & r(x)) (x 3 +x 2 +x+1 ) mod (x 3 +x+1) = 1.(x 3 +x+1) + (x 2 ) = x 2 (x 3 +x 2 +x+1 ) mod (x 3 +x+1) = 1.(x 3 +x+1) + (x 2 ) = x mod 1011 = 1111 XOR 1011 = mod 1011 = 1111 XOR 1011 =

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

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


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

Apresentações semelhantes


Anúncios Google