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

Apresentações semelhantes


Apresentação em tema: "Criptografia e Segurança de Redes Capítulo 4"— 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 Slides de Lawrie Brown para “Criptografia e Segurança de Redes”, 4a edição, de William Stallings, Capítulo 4 – “Corpos Finitos”. Tradução de Marcos J Pinto marcosjpin em gmail com

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 Citação introdutória.

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 Corpos finitos obtiveram crescente importância em criptografia. Diversos algoritmos criptográficos baseiam-se firmemente nas propriedades dos corpos finitos, tais como o AES, Curvas Elipticas, IDEA e diversos algoritmos de chaves públicas. Grupos, anéis e corpos são elementos fundamentais de álgebra abstrata, que trabalha com conjuntos em cujos elementos (“números”) podemos operar de forma algébrica. .

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 Agora vamos definir alguns conceitos importantes em álgebra abstrata – começando pelo grupo. Em álgebra abstrata, estamos interessados nos conjuntos em cujos elementos podemos fazer operações algébricas; ou seja, podemos combinar dois elementos do conjunto e obter um terceiro elemento desse conjunto. Essas operações estão sujeitas a regras específicas, que definem a natureza do conjunto. Um grupo é um conjunto com as propriedades relacionadas acima. Representamos um grupo como {G,}. Usamos . como operador: poderia ter sido operadores de adição +, multiplicação x ou qualquer outro operador matemático. Um grupo pode ter um número finito (fixo) de elementos ou pode ser infinito. Note que os inteiros (+ve, -ve e 0) que utilizam adição formam um grupo abeliano infinito. Da mesma forma que os números reais utilizando a multiplicação.

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 = ak para alguns a e todos os b do grupo diz-se que a é um gerador do grupo Define a exponenciação em um grupo como o uso repetido do operador do grupo. Note que estamos mais familiarizados com ele sendo aplicado à multiplicação, mas é mais genérico do que isso. Se o uso repetido do operador em algum valor a no grupo resultar em todos os valores possíveis que estiverem sendo criados, o grupo será chamado de cíclico, e a será um gerador do (ou gerará) o grupo G.

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 A seguir descrevemos um anel. Basicamente, um anel é um conjunto em que podemos fazer adições, subtrações [a – b = a + (–b)] e multiplicações sem deixar o conjunto. Representamos um anel como {R, +.} Com relação à adição e à multiplicação, o conjunto de todas as matrizes n-quadradas sobre números reais formam um anel. O conjunto de inteiros com adição & multiplicação formam 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 Por fim definimos um corpo. Basicamente, um corpo é um conjunto em que podemos fazer adição, subtração, multiplicação e divisão sem sair do conjunto. A divisão é definida pela seguinte regra: a/b = a (b–1). Representamos um corpo como {F,+,.} Exemplos de corpos: números racionais, números reais, números complexos. Note que os inteiros NÃO são um corpo, já que não há inversas multiplicativas (exceto para o 1). Estes são os temos que usamos para os diversos tipos de “sistemas numéricos”, aqueles que obedecem a diversos conjuntos de leis. De grupo a anel e corpo, temos cada vez mais leis a serem obedecidas. Consulte Stallings, Figura 4.1. Para ajudar a memorizar, use um acrônimo para os grupos (em inglês): CAIN (Closure Associative Identity iNverse, ou Fechamento, Associativo, Identidade e iNverso) e ABEL. Precisamos principalmente computar com anéis, se não com corpos. Quando fazemos aritmética módulo um primo, temos um 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 Dado um inteiro positivo n e qualquer inteiro não negativo a, se dividirmos a por n, obteremos um quociente inteiro q e um resto inteiro r. Na aritmética modular estamos interessados somente no resto (ou resíduo) após a divisão por algum módulo e os resultados com o mesmo resto serão considerados equivalentes. Dois inteiros a e b são ditos congruentes modulo n, se (a mod n) =(b mod n).

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) ou seja, b divide a sem resto representa-se isso como b|a e diz-se que b é um divisor de a ex: 1,2,3,4,6,8,12,24 dividem 24 Definir o conceito de “divisores”. Dizemos que um número b diferente de zero divide a se a=m.b para algum m, onde a, b e m são inteiros. Ou seja, b divide a se não houver resto dessa divisão. Podemos representar isso como b|a e dizer que b é um divisor de a. Por exemplo, os divisores positivos de 24 são 1,2,3,4,6,8,12 e 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 É na aritmética modular que realizamos operações aritméticas dentro dos limites de algum conjunto de inteiros mod n. Ela emprega um número finito de valores e executa uma volta circular de uma das extremidades, quando necessário. Ao reduzir, “geralmente” queremos encontrar o resto positivo após dividir pelo módulo. Com números positivos, é apenas o resto normal. Com números negativos temos que “extrapolar” (ou seja, encontrar o próximo múltiplo maior do que o número) e “voltar” (ou seja, adicionar um resto positivo para obter o número); em vez de ter um “resto negativo”. Observar em seguida algumas propriedades importante da aritmética modular, o que significa que você pode fazer a redução modular em qualquer ponto e obter uma resposta equivalente.

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ão b=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 Observar mais algumas propriedades importantes da aritmética modular, conforme discutido em texto mais à frente.

12 Exemplo de adição módulo 8
+ 1 2 3 4 5 6 7 Exemplo demonstrando adição em GF(8), de Stallings, Tabela 4.1a.

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 Uma das técnicas básicas da teoria dos números é o Algoritmo Euclideano, que é um procedimento simples para determinar o maior divisor comum entre dois inteiros positivos. Utiliza-se a notação mdc(a,b) para representar o maior divisor comum entre a e b. Diz-se que o inteiro positivo c o maior divisor comum entre a e b se c for divisor de a e de b; e qualquer divisor de a e b será um divisor de c. Diz-se que dois inteiros a e b são relativamente primos se o único fator inteiro positivo comum entre eles for igual a 1, ou seja, MCD(a,b)=1.

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 O algoritmo Euclideano é uma maneira eficiente de encntrar o MDC(a,b). O algoritmo Euclideano deriva da observação de que se a & b têm um fator comum d (ou seja, a=m.d & b=n.d), então d é também um fator em qualquer diferença entre ambos, vis: a-p.b = (m.d)-p.(n.d) = d.(m-p.n). O Algoritmo de Euclides prossegue calculando diferenças sucessivas até desaparecer, quando então o maior divisor comum terá sido atingido.

15 Exemplo: MDC(1970,1066) 1970 = 1 x 1066 + 904 mdc(1066, 904)
Ilustra como podemos calcular instâncias sucessivas de MDC(a,b)=MDC(b, a mod b); exemplo tirado do texto. Note que isto DEVE sempre terminar, já que acabará obtendo a mod b = 0 (ou seja, não haverá resto). A resposta será então o último valor diferente de zero. Neste caso, MDC(1970,1066)=2.

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) Os corpos finitos não são de grande interesse no contexto da criptografia. Contudo, os corpos finitos são fundamentais em muitos algoritmos criptográficos. Pode-se demonstrar que a ordem de um corpo finito (o número de elementos em um corpo) deve ser uma potência positiva de um primo, que são conhecidos como corpos de Galois e representados como GF(p^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 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) Comece considerando CF(p) sobre um conjunto de inteiros {0…p-1} com adição & multiplicaçào módulo p. Isto formará um corpo finito “bem comportado”.

18 Exemplo de multiplicação GF(7)
1 2 3 4 5 6 Exemplo ilustrando a multiplicação em CG(7), do Stallings Tabela 4.3b.

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 Um problema importante é calcular inversos multiplicativos em tais corpos finitos. É possível mostrar que tais inversos sempre existem e podem ampliar o algoritmo Euclideano para encontrá-los como demonstrado. Consulte o texto para ver a explicação de por que isso funciona.

20 Inverso de 550 em CF(1759) Q A1 A2 A3 B1 B2 B3 — 1 1759 550 3 –3 109 5
1759 550 3 –3 109 5 –5 16 21 106 –339 4 –111 355 Exemplo demonstrando como calcular o inverso de 550 em CF(1759), do Stallings Tabela 4.4.

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) O próximo assunto é a interessante aritmética de polinômios, o uso de polinômios em uma única variável x, com diversas variáveis conforme relacionado acima. Observer que normalmente não estamos interessados em avaliar em polinômio para qualquer valor de x, que então é conhecido como indeterminado.

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 A aritmética de polinômios envolve os operadores de adição, subtração e multiplicação, definidos da forma normal, ou seja, adicionar ou subtrair coeficientes correspondentes, ou ou multiplicar todos os termos uns pelos outros. Os exemplos foram tirados do texto, Stallings Figura 4.3.

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 Considerar variante onde agora, ao calcular o valor de cada coeficiente, faça o cálculo modulo algum valor, geralmente um primo. Se os coeficientes forem calculados em um corop (CG(p)), então será possível a divisão nos polinômios e teremos um anel de polinômios. Nos interessa mais utilizar CG(2) – ou seja, todos os coeficientes serão 0 ou 1 e qualquer adição/subtração de coeficientes será feita mod 2 (ou seja, 2x é o mesmo que 0x!),que é a função XOR comum.

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 Observe que podemos escrever um polinômio na forma f(x) = q(x) g(x) + r(x), onde a divisão de f(x) por g(x) resulta em no quociente q(x) e o resto r(x). Pode-se então ampliar o conceito de divisores a partir do caso dos inteiros e mostrar que o algoritmo Euclideano pode ser ampliado para encontrar o máximo divisor comum entre dois polinômios cujos coeficientes são elementos de um corpo. Define um um polinômio irredutível (ou primo) como aquele sem divisores além dele próprio e 1. Se fazendo a aritmética do polinômio módulo um polinômio irredutível, isto formará um corpo finito, e o MDC e algoritmos inversos poderão ser adaptados para ele.

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 Podemos estender a analogia entre a aritmética de polinômios sobre um corpo e a aritmética de inteiros definindo-se o máximo divisor comum como mostrado.

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 Considere agora o caso da aritmética de polinômios com coordenadas mod 2 e polinômios mod um polinômio irredutível m(x). Isto é Aritimética de Polinômios Modular, usa o conjunto S de todos os polinômios de grau n-1 ou menos, sobre o corpo Zp. Com a definição apropriada das operações aritméticas, cada conjunto S desses é um corpo finito. A definição consiste dos seguintes elementos: A aritmética segue as regras comuns da aritmética de polinômios, usando as regras básicas de álgebra, com os dois refinamentos a seguir. 2. A aritmética nos coeficientes é realizada módulo p. 3. Se a multiplicação resultar em um polinômio de grau maior que n-1, então o polinômio será reduzido módulo algum polinômio irredutível m(x) de grau n. Ou seja, dividimos por m(x) e mantemos o resto. Isto forma um corpo finito. E assim como o algoritmo Euclideano pode ser adaptado para calcular o máximo divisor comum entre dois polinômios, o algoritmo Euclideano estendido pode ser adaptado para calcular a inversa multiplicativa de um polinômio.

27 Exemplo GF(23) O exemplo ilustra a adição & multiplicação em CG(23) módulo (x3+x+1), Stallings, Tabela 4.6.

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) Uma motivação importante para o uso da aritmética de polinômios em CG(2n) é que os polinômios podem ser representados como uma string de bits, usando todos os valores possíveis, e os cálculos usam somente instruções comuns de máquina – adição é apenas XOR e multiplicação envolve shifts & XOR’s. Consulte o texto para obter maiores detalhes. O atalho para a redução de polinômios vem da observação de que se em CG(2n) então o poli irredutível g(x) terá o termo mais alto xn , e se for calculado xn mod g(x) a resposta será g(x)- xn

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 = (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 Há ilustrados aqui alguns exemplos simples de adição, multiplicação & redução módulo em CG(23). Observe que a redução módulo em forma longa encontra p(x)=q(x).m(x)+r(x) com r(x) sendo o resto desejado.

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 Há uma técnica equivalente para definir um corpo finito na form a CG(2n) utilizando-se o mesmo polinômio irredutível, baseado nas potências de um gerador do grupo, o que resulta em uma boa implementação da multiplicação. O gerador pode ser encontrado a partir da raiz de um polinômio irredutível, conforme explicado no texto.

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) Sumário do Capítulo 4.


Carregar ppt "Criptografia e Segurança de Redes Capítulo 4"

Apresentações semelhantes


Anúncios Google