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

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

Criptografia e Segurança de Rede Capítulo 4 Quarta Edição por William Stallings Tradução por Carlos Daniel Abreu.

Apresentações semelhantes


Apresentação em tema: "Criptografia e Segurança de Rede Capítulo 4 Quarta Edição por William Stallings Tradução por Carlos Daniel Abreu."— Transcrição da apresentação:

1 Criptografia e Segurança de Rede Capítulo 4 Quarta Edição por William Stallings Tradução por Carlos Daniel Abreu

2 Capítulo 4 – Corpos Finitos Na manhã seguinte, ao nascer o dia, Star entrou em casa, aparentemente ávida por uma lição. Eu disse, "Mostre oito". Ela fez uma exibição brilhante, primeiro batendo 4-4, depois batendo rapidamente , antes de entrar. É incrível como Star aprendeu a contar até oito sem dificuldade. E do seu próprio jeito descobriu que cada número pode ser dado com diferentes divisões, isso não deixa dúvida de que estava conscientemente pensando em cada número. De fato, ela fez a aritmética mental, embora não possa, como os humanos, dar nome aos números. Mas ela aprendeu a reconhecer seus nomes falados quase imediatamente e lembrar dos sons dos nomes. Star é um pássaro silvestre único que, por vontade própria, buscou a ciência dos números com ávido interesse e incrível inteligência. Living with birds, Len Howard

3 Introdução Vamos agora apresentar Corpos Finitos Vamos agora apresentar Corpos Finitos Do seu importante aumento na criptografia Do seu importante aumento na criptografia AES, Curvas Elípticas, IDEA, Chave pública AES, Curvas Elípticas, IDEA, Chave pública Dizem a respeito de operações com números Dizem a respeito de operações com números Quando o que constitui um número e os tipos de operações varia consideravelmente. Quando o que constitui um número e os tipos de operações varia consideravelmente. Começaremos com conceitos de grupos, anéis e corpos de álgebra abstrata. Começaremos com conceitos de grupos, anéis e corpos de álgebra abstrata.

4 Grupo Um conjunto de elementos ou números Um conjunto de elementos ou números Com algumas operações cujo resultado é também no conjunto (encerramento) Com algumas operações cujo resultado é também no conjunto (encerramento) Devemos cumprir: Devemos cumprir: Lei da associatividade: (a.b).c = a.(b.c) Lei da associatividade: (a.b).c = a.(b.c) Possui identidade: e.a = a.e = a Possui identidade: e.a = a.e = a Possui inversa a -1 : a.a -1 = e Possui inversa a -1 : a.a -1 = e Se for comutativo a.b = b.a Se for comutativo a.b = b.a Então forma um grupo algébrico. Então forma um grupo algébrico.

5 Grupo Cíclico definir exponenciação como aplicação repetida do operador definir exponenciação como aplicação repetida do operador exemplo: a -3 = a.a.a exemplo: a -3 = a.a.a A identidade deve ser: e=a 0 A identidade deve ser: e=a 0 Um grupo é cíclico se cada elemento for uma potência de um elemento fixo. Um grupo é cíclico se cada elemento for uma potência de um elemento fixo. Ex.: b = a k para algum a e todo b no grupo Ex.: b = a k para algum a e todo b no grupo a é dito ser um gerador do grupo a é dito ser um gerador do grupo

6 Anél 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 comutativo com a operação de adição Um grupo comutativo com a operação de adição E multiplicação: E multiplicação: fechamento fechamento Associatividade Associatividade Leis distributivas: a(b+c) = ab + ac Leis distributivas: a(b+c) = ab + ac Se a operação de multiplicação é comutativa, isso forma um anel comutativo Se a operação de multiplicação é comutativa, isso forma um anel comutativo Se a operação de multiplicação tem uma identidade e nenhum divisor por zero, isso forma um domínio integral Se a operação de multiplicação tem uma identidade e nenhum divisor por zero, isso forma um domínio integral

7 Corpos Um conjunto de números Um conjunto de números Com duas operações que formam: Com duas operações que formam: Um grupo comutativo para adição Um grupo comutativo para adição Um grupo comutativo para multiplicação (ignorando o 0) Um grupo comutativo para multiplicação (ignorando o 0) Anel Anel Tem hierarquia com mais axiomas/leis Tem hierarquia com mais axiomas/leis grupo -> anel -> corpo grupo -> anel -> corpo

8 Aritmética Modular Definimos módulo a mod n como o resto quando a é dividido por n Definimos módulo a mod n como o resto quando a é dividido 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 divididos por n, a & b tem o mesmo resto Quando divididos por n, a & b tem o mesmo resto Ex.: 100 = 34 mod 11 Ex.: 100 = 34 mod 11 b é chamado o resíduo de a mod n b é chamado o resíduo de a mod n Desde que com inteiros possamos sempre escrever: a = qn + b Desde que com inteiros possamos sempre escrever: a = qn + b Normalmente escolha o menor positivo para deixar como reíduo Normalmente escolha o menor positivo para deixar como reíduo Ex.: 0 <= b <= n-1Ex.: 0 <= b <= n-1 o processo é conhecido como Redução de Módulo o processo é conhecido como Redução de Módulo 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 Dizemos que b diferente de zero divide a se a=mb para algum m, onde a,b e m são inteiros Dizemos que b diferente de zero divide a se a=mb para algum m, onde a,b e m são inteiros b divide a se não houver resto na divisão b divide a se não houver resto na divisão A notação é b|a A notação é b|a Dizemos que b é um divisor de a Dizemos que b é um divisor de a Ex.: todos 1,2,3,4,6,8,12,24 dividem 24 Ex.: todos 1,2,3,4,6,8,12,24 dividem 24

10 Operações de Aritmética Modular Usa um número finito de valores Usa um número finito de valores Aritmética modular é quando fazemos adição & multiplicação e redução de módulo. Aritmética modular é quando fazemos adição & multiplicação e redução de módulo. Pode-se fazer a redução a qualquer momento, Ex.: Pode-se fazer a redução a qualquer momento, 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 com qualquer grupo de inteiros: Z n = {0, 1, …, n-1} Pode-se fazer com qualquer grupo de inteiros: Z n = {0, 1, …, n-1} Formando um anel comutativo para adição Formando um anel comutativo para adição Com identidade multiplicativa Com identidade multiplicativa Repare em algumas peculiaridades Repare em algumas peculiaridades if (a+b)=(a+c) mod n if (a+b)=(a+c) mod n then b=c mod n but if (a.b)=(a.c) mod n but if (a.b)=(a.c) mod n then b=c mod n somente se a for relativamente primo de n

12 Modulo 8 Addition Example

13 Máximo Divisor Comum (MDC) Um problema comum na teoria dos números Um problema comum na teoria dos números MDC (a,b) de a e b é o maior número que divide igualmente em ambos a e b MDC (a,b) de a e b é o maior número que divide igualmente em ambos a e b Ex.: MDC(60,24) = 12 Ex.: MDC(60,24) = 12 Dizemos que dois inteiros a e b são relativamente primos se seu único fator inteiro positivo comum for 1 Dizemos que dois inteiros a e b são relativamente primos se seu único fator inteiro positivo comum for 1 Ex.: MDC(8,15) = 1 Ex.: MDC(8,15) = 1 8 & 15 são relativamente primos 8 & 15 são relativamente primos

14 Algoritmo Euclidiano Um método eficiente para encontrar MDC(a,b) Um método eficiente para encontrar MDC(a,b) Baseado no teorema: Baseado no teorema: MDC(a,b) = MDC(b, a mod b) MDC(a,b) = MDC(b, a mod b) O algoritmo euclidiano para encontrar MDC(a,b) é: O algoritmo euclidiano para encontrar 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 gcd(1066, 904) 1066 = 1 x gcd(904, 162) 904 = 5 x gcd(162, 94) 162 = 1 x gcd(94, 68) 94 = 1 x gcd(68, 26) 68 = 2 x gcd(26, 16) 26 = 1 x gcd(16, 10) 16 = 1 x gcd(10, 6) 10 = 1 x gcd(6, 4) 6 = 1 x gcd(4, 2) 4 = 2 x gcd(2, 0)

16 Corpo de Galois Copos finitos desempenham um papel fundamental na criptografia Copos finitos desempenham um papel fundamental na criptografia Pode-se mostrar que a ordem de um corpo finito (número de elementos no corpo) precisa ser a potência de um primo p n Pode-se mostrar que a ordem de um corpo finito (número de elementos no corpo) precisa ser a potência de um primo p n Conhecidos como Corpos Finitos Conhecidos como Corpos Finitos O corpo finito de ordem p n geralmente é escrito como GF(p n ) [Galois Fields] O corpo finito de ordem p n geralmente é escrito como GF(p n ) [Galois Fields] Dois casos especiais são de interesse para nosso propósito: Dois casos especiais são de interesse para nosso propósito: GF(p) GF(p) GF(2 n ) GF(2 n )

17 Corpo de Galois GF(p) É definido como o conjunto de inteiros juntamente com as operações aritméticas de módulo p É definido como o conjunto de inteiros juntamente com as operações aritméticas de módulo p Forma um anel comutativo Forma um anel comutativo Desde que tenha inverso multiplicativo Desde que tenha inverso multiplicativo hence arithmetic is well-behaved and can do addition, subtraction, multiplication, and division without leaving the field GF(p) hence arithmetic is well-behaved and can do addition, subtraction, multiplication, and division without leaving the field GF(p)

18 GF(7) Multiplication Example

19 Finding Inverses 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); no inverse 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 Inverse of 550 in GF(1759) QA1A2A3B1B2B – –3109– – – –3394–

21 Aritmética Polinomial Um polinômio de grau n é uma expressão na forma Um polinômio de grau n é uma expressão na forma f(x) = a n x n + a n-1 x n-1 + … + a 1 x + a 0 = a i x i Normalmente não nos interessamos por avaliar um polinômio para determinado valor de x.Normalmente não nos interessamos por avaliar um polinômio para determinado valor de x. Que é conhecida como indeterminadaQue é conhecida como indeterminada Podemos distinguir três classes de aritmética de polinômios: Podemos distinguir três classes de aritmética de polinômios: Aritmética de polinômios ordinários; Aritmética de polinômios ordinários; Aritmética de polinômios em que a aritmética sobre os coeficientes é realizada mod p Aritmética de polinômios em que a aritmética sobre os coeficientes é realizada mod p Aritmética de polinômios em que os coeficientes estão em GF(p) Aritmética de polinômios em que os coeficientes estão em GF(p)

22 Aritmérica Polinomial Comum Adição ou subtração dos coeficientes correspondentes Adição ou subtração dos coeficientes correspondentes Multiplica-se todos os termos por cada outro Multiplica-se todos os termos por cada 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 em Zp Se considerarmos que cada polinômio distinto é um elemento do conjunto. Se considerarmos que cada polinômio distinto é um elemento do conjunto. Conhecido como anel polinomial Conhecido como anel polinomial A divisão resultará em um quociente e um resto. A divisão resultará em um quociente e um resto. Porém estamos mais interessados no mod 2 Porém estamos mais interessados no mod 2 Ex.: os coeficientes são 0 ou 1 Ex.: os coeficientes são 0 ou 1 Ex.: f(x) = x 3 + x 2 e g(x) = x 2 + x + 1 Ex.: f(x) = x 3 + x 2 e g(x) = x 2 + x + 1 f(x) + g(x) = x 3 + x + 1 f(x) x g(x) = x 5 + x 2

24 Divisão Polinomial Pode-se escrever qualquer polinômio da seguinte forma: Pode-se escrever qualquer polinômio da seguinte forma: f(x) = q(x) g(x) + r(x) f(x) = q(x) g(x) + r(x) Aceitamos r(x) como sendo o resto. Aceitamos r(x) como sendo o resto. r(x) = f(x) mod g(x) r(x) = f(x) mod g(x) Se não tem resto dizemos que g(x) divide f(x) Se não tem resto dizemos que g(x) divide f(x) se g(x) não tem outro divisor além dele mesmo & 1 dizemos ser um polinômio irredutível (ou primo) se g(x) não tem outro divisor além dele mesmo & 1 dizemos ser um polinômio irredutível (ou primo) Módulo e primo formam um corpo Módulo e primo formam um corpo

25 Encontrando o Máximo Divisor Comum Pode-se encontrar o maior divisor comum para um polinômio Pode-se encontrar o maior divisor comum para um polinômio c(x) = MDC(a(x), b(x)) se c(x) for o polinômio de maior grau que divide os dois a(x), b(x) c(x) = MDC(a(x), b(x)) se c(x) for o polinômio de maior grau que divide os dois a(x), b(x) Pode-se usar o algoritmo euclidiano pra tal: Pode-se usar o algoritmo euclidiano pra tal: EUCLID[a(x), b(x)] 1. A(x) = a(x); B(x) = b(x) 2. if B(x) = 0 return A(x) = mdc[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 Polinomial Modular Nos concentramos em GF(2 n ) Nos concentramos em GF(2 n ) Polinômios com coeficientes de módulo 2 Polinômios com coeficientes de módulo 2 Cujo grau é inferior a n Cujo grau é inferior a n Por isso deve-se reduzir o modulo a um irredutível polinômio de grau n (para multiplicação somente) Por isso deve-se reduzir o modulo a um irredutível polinômio de grau n (para multiplicação somente) Isso forma um corpo finito Isso forma um corpo finito Pode-se sempre encontrar o inverso Pode-se sempre encontrar o inverso Pode-se usar o algoritmo do Inverso Euclidiano para encontrar. Pode-se usar o algoritmo do Inverso Euclidiano para encontrar.

27 Example GF(2 3 )

28 Considerações Computacionais Sejam os coeficientes 0 ou 1, pode-se representar qualquer polinômio como uma string de bits Sejam os coeficientes 0 ou 1, pode-se representar qualquer polinômio como uma string de bits Adições se tornam um XOR bit a bit Adições se tornam um XOR bit a bit Multiplicação é deslocamento a esquerda seguido de um XOR Multiplicação é deslocamento a esquerda seguido de um XOR cf long-hand multiplication cf long-hand multiplication Pode ser obtida pela aplicação repetida da Equação acrescentando resultados intermediários. Pode ser obtida pela aplicação repetida da Equação acrescentando resultados intermediários.

29 Exemplo Computacional para GF(2 3 ) temos (x 2 +1) é & (x 2 +x+1) é para GF(2 3 ) temos (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 do modulo polinomial (get q(x) & r(x)) é Redução do modulo polinomial (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 Usando um Gerador Técnica equivalente para definir um corpo finito Técnica equivalente para definir um corpo finito um gerador g é um elemento cujas potências geram todos os elementos diferentes de zero um gerador g é um elemento cujas potências geram todos os elementos diferentes de zero Para F temos 0, g 0, g 1, …, g q-2 Para F temos 0, g 0, g 1, …, g q-2 Um elemento b contido em F é chamado de raíz do polinômio Um elemento b contido em F é chamado de raíz do polinômio Então implementa-se a multiplicação adicionando expoentes do gerador Então implementa-se a multiplicação adicionando expoentes do gerador

31 Resumo Considerações Considerações Conceito de grupos, anéis, corpos Conceito de grupos, anéis, corpos Aritmética modular com inteiros Aritmética modular com inteiros Algoritmo Euclidiano para MDC Algoritmo Euclidiano para MDC Corpos Finitos GF(p) Corpos Finitos GF(p) Aritmética Polinomial em geral e para GF(2 n ) Aritmética Polinomial em geral e para GF(2 n )


Carregar ppt "Criptografia e Segurança de Rede Capítulo 4 Quarta Edição por William Stallings Tradução por Carlos Daniel Abreu."

Apresentações semelhantes


Anúncios Google