Upload
internet
View
113
Download
6
Embed Size (px)
Citation preview
Criptografia e Criptografia e Segurança de Rede Segurança de Rede
Capítulo 4Capítulo 4
Quarta EdiçãoQuarta Edição
por William Stallingspor William Stallings
Tradução por Carlos Daniel AbreuTradução por Carlos Daniel Abreu
Capítulo 4 – Corpos FinitosCapítulo 4 – Corpos FinitosNa manhã seguinte, ao nascer o dia, Star entrou em Na manhã seguinte, ao nascer o dia, Star entrou em casa, aparentemente ávida por uma lição. Eu disse, casa, aparentemente ávida por uma lição. Eu disse, "Mostre oito". Ela fez uma exibição brilhante, primeiro "Mostre oito". Ela fez uma exibição brilhante, primeiro batendo 4-4, depois batendo rapidamente 2-2-2-2, batendo 4-4, depois batendo rapidamente 2-2-2-2, antes de entrar. É incrível como Star aprendeu a contar antes de entrar. É incrível como Star aprendeu a contar até oito sem dificuldade. E do seu próprio jeito descobriu até oito sem dificuldade. E do seu próprio jeito descobriu que cada número pode ser dado com diferentes que cada número pode ser dado com diferentes divisões, isso não deixa dúvida de que estava divisões, isso não deixa dúvida de que estava conscientemente pensando em cada número. De fato, conscientemente pensando em cada número. De fato, ela fez a aritmética mental, embora não possa, como os ela fez a aritmética mental, embora não possa, como os humanos, dar nome aos números. Mas ela aprendeu a humanos, dar nome aos números. Mas ela aprendeu a reconhecer seus nomes falados quase imediatamente e reconhecer seus nomes falados quase imediatamente e lembrar dos sons dos nomes. Star é um pássaro lembrar dos sons dos nomes. Star é um pássaro silvestre único que, por vontade própria, buscou a silvestre único que, por vontade própria, buscou a ciência dos números com ávido interesse e incrível ciência dos números com ávido interesse e incrível inteligência.inteligência.
Living with birds, Len HowardLiving with birds, Len Howard
IntroduçãoIntrodução
Vamos agora apresentar Corpos FinitosVamos agora apresentar Corpos Finitos Do seu importante aumento na criptografiaDo seu importante aumento na criptografia
AES, Curvas Elípticas, IDEA, Chave públicaAES, Curvas Elípticas, IDEA, Chave pública Dizem a respeito de operações com númerosDizem a respeito de operações com números
Quando o que constitui um “número” e os tipos de Quando o que constitui um “número” e os tipos de operações varia consideravelmente.operações varia consideravelmente.
Começaremos com conceitos de grupos, anéis Começaremos com conceitos de grupos, anéis e corpos de álgebra abstrata.e corpos de álgebra abstrata.
GrupoGrupo
Um conjunto de elementos ou númerosUm conjunto de elementos ou números Com algumas operações cujo resultado é Com algumas operações cujo resultado é
também no conjunto (encerramento) também no conjunto (encerramento) Devemos cumprir:Devemos cumprir:
Lei da associatividade:Lei da associatividade: (a.b).c = a.(b.c)(a.b).c = a.(b.c) Possui identidade: Possui identidade: e.a = a.e = ae.a = a.e = a Possui inversa Possui inversa aa-1-1:: a.aa.a-1-1 = e = e
Se for comutativo Se for comutativo a.b = b.aa.b = b.a Então forma um Então forma um grupo algébrico.grupo algébrico.
Grupo CíclicoGrupo Cíclico
definir definir exponenciaçãoexponenciação como aplicação como aplicação repetida do operadorrepetida do operador exemplo:exemplo: aa-3-3 = a.a.a = a.a.a
A identidade deve ser:A identidade deve ser: e=ae=a00
Um grupo é cíclico se cada elemento for Um grupo é cíclico se cada elemento for uma potência de um elemento fixo.uma potência de um elemento fixo. Ex.: Ex.: b =b = aakk para algum para algum aa e todo e todo bb no grupo no grupo
aa é dito ser um gerador do grupo é dito ser um gerador do grupo
AnélAnél Um conjunto de númerosUm conjunto de números Com duas operações (adição e multiplicação) Com duas operações (adição e multiplicação)
que formam: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:
fechamentofechamento AssociatividadeAssociatividade Leis distributivas:Leis distributivas: a(b+c) = ab + aca(b+c) = ab + ac
Se a operação de multiplicação é comutativa, Se a operação de multiplicação é comutativa, isso forma um isso forma um anel comutativoanel comutativo
Se a operação de multiplicação tem uma Se a operação de multiplicação tem uma identidade e nenhum divisor por zero, isso identidade e nenhum divisor por zero, isso forma um forma um domínio integraldomínio integral
CorposCorpos
Um conjunto de númerosUm 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 Um grupo comutativo para multiplicação
(ignorando o 0)(ignorando o 0) AnelAnel
Tem hierarquia com mais axiomas/leisTem hierarquia com mais axiomas/leis grupo -> anel -> corpogrupo -> anel -> corpo
Aritmética ModularAritmética Modular Definimos Definimos módulomódulo “ “a mod n”a mod n” como o resto como o resto
quando a é dividido por nquando a é dividido por n Usa-se o termo Usa-se o termo congruênciacongruência para: para: a = b mod a = b mod nn Quando divididos por Quando divididos por n,n, a & b tem o mesmo resto a & b tem o mesmo resto Ex.: 100 = 34 mod 11 Ex.: 100 = 34 mod 11
b é chamado o b é chamado o resíduoresíduo de de a mod na mod n Desde que com inteiros possamos sempre escrever: Desde que com inteiros possamos sempre escrever: a = qn + ba = qn + b
Normalmente escolha o menor positivo para deixar Normalmente escolha o menor positivo para deixar como reíduocomo reíduo
• Ex.: Ex.: 0 <= b <= n-10 <= b <= n-1 o processo é conhecido como Redução de Móduloo processo é conhecido como Redução de Módulo
• Ex.: -12 mod 7 Ex.: -12 mod 7 == -5 mod 7 -5 mod 7 == 2 mod 7 2 mod 7 == 9 mod 7 9 mod 7
DivisoresDivisores
Dizemos que b diferente de zero divide a Dizemos que b diferente de zero divide a se se a=mba=mb para algum m, onde a,b e m são para algum m, onde a,b e m são inteiros inteiros
b divide a se não houver resto na divisãob divide a se não houver resto na divisão A notação é A notação é b|ab|a Dizemos que Dizemos que bb é um é um divisordivisor de de aa Ex.: todos 1,2,3,4,6,8,12,24 dividem 24 Ex.: todos 1,2,3,4,6,8,12,24 dividem 24
Operações de Aritmética Operações de Aritmética ModularModular
Usa um número finito de valoresUsa um número finito de valores Aritmética modular é quando fazemos Aritmética modular é quando fazemos
adição adição & & multiplicação multiplicação e e redução de redução de módulomódulo..
Pode-se fazer a redução a qualquer Pode-se fazer a redução a qualquer momento, Ex.:momento, Ex.: a+b mod n = [a mod n + b mod n] mod na+b mod n = [a mod n + b mod n] mod n
Aritmética ModularAritmética Modular
Pode-se fazer com qualquer grupo de inteiros: Pode-se fazer com qualquer grupo de inteiros: ZZnn = {0, 1, … , n-1} = {0, 1, … , n-1}
Formando um anel comutativo para adiçãoFormando um anel comutativo para adição Com identidade multiplicativaCom identidade multiplicativa Repare em algumas peculiaridadesRepare em algumas peculiaridades
if if (a+b)(a+b)=(a+c) mod n =(a+c) mod n
thenthen b=c mod n b=c mod n but if but if (a.b)(a.b)=(a.c) mod n =(a.c) mod n
thenthen b=c mod n b=c mod n somente sesomente se a a for relativamente for relativamente primo deprimo de n n
Modulo 8 Addition ExampleModulo 8 Addition Example+ 0 1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 0
2 2 3 4 5 6 7 0 1
3 3 4 5 6 7 0 1 2
4 4 5 6 7 0 1 2 3
5 5 6 7 0 1 2 3 4
6 6 7 0 1 2 3 4 5
7 7 0 1 2 3 4 5 6
Máximo Divisor Comum (MDC)Máximo Divisor Comum (MDC) Um problema comum na teoria dos Um problema comum na teoria dos
númerosnúmeros MDC (a,b) de a e b é o maior número que MDC (a,b) de a e b é o maior número que
divide igualmente em ambos a e bdivide igualmente em ambos a e b Ex.: MDC(60,24) = 12Ex.: MDC(60,24) = 12
Dizemos que dois inteiros a e b são Dizemos que dois inteiros a e b são relativamente primos se seu único fator relativamente primos se seu único fator inteiro positivo comum for 1inteiro positivo comum for 1 Ex.: MDC(8,15) = 1Ex.: MDC(8,15) = 1 8 & 15 são relativamente primos8 & 15 são relativamente primos
Algoritmo EuclidianoAlgoritmo 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)EUCLID(a,b)1. A = a; B = b 1. A = a; B = b 2. if B = 0 return A = mdc(a, b) 2. if B = 0 return A = mdc(a, b) 3. R = A mod B 3. R = A mod B 4. A = B 4. A = B 5. B = R 5. B = R 6. goto 26. goto 2
Exemplo MDC(1970,1066)Exemplo MDC(1970,1066)
1970 = 1 x 1066 + 904 1970 = 1 x 1066 + 904 gcd(1066, 904)gcd(1066, 904)1066 = 1 x 904 + 162 1066 = 1 x 904 + 162 gcd(904, 162)gcd(904, 162)904 = 5 x 162 + 94 904 = 5 x 162 + 94 gcd(162, 94)gcd(162, 94)162 = 1 x 94 + 68 162 = 1 x 94 + 68 gcd(94, 68)gcd(94, 68)94 = 1 x 68 + 26 94 = 1 x 68 + 26 gcd(68, 26)gcd(68, 26)68 = 2 x 26 + 16 68 = 2 x 26 + 16 gcd(26, 16)gcd(26, 16)26 = 1 x 16 + 10 26 = 1 x 16 + 10 gcd(16, 10)gcd(16, 10)16 = 1 x 10 + 6 16 = 1 x 10 + 6 gcd(10, 6)gcd(10, 6)10 = 1 x 6 + 4 10 = 1 x 6 + 4 gcd(6, 4)gcd(6, 4)6 = 1 x 4 + 2 6 = 1 x 4 + 2 gcd(4, 2)gcd(4, 2)4 = 2 x 2 + 0 4 = 2 x 2 + 0 gcd(2, 0)gcd(2, 0)
Corpo de GaloisCorpo de Galois Copos finitos desempenham um papel Copos finitos desempenham um papel
fundamental na criptografiafundamental na criptografia Pode-se mostrar que a ordem de um corpo finito Pode-se mostrar que a ordem de um corpo finito
(número de elementos no corpo) precisa ser a (número de elementos no corpo) precisa ser a potência de um primo ppotência de um primo pnn
Conhecidos como Corpos FinitosConhecidos como Corpos Finitos O corpo finito de ordem pO corpo finito de ordem pnn geralmente é escrito geralmente é escrito
como GF(pcomo GF(pnn) [Galois Fields]) [Galois Fields] Dois casos especiais são de interesse para nosso Dois casos especiais são de interesse para nosso
propósito:propósito: GF(p)GF(p) GF(2GF(2nn))
Corpo de Galois GF(p)Corpo de Galois GF(p) É definido como o conjunto de inteiros É definido como o conjunto de inteiros
juntamente com as operações aritméticas juntamente com as operações aritméticas de módulo pde módulo p
Forma um anel comutativoForma um anel comutativo Desde que tenha inverso multiplicativoDesde que tenha inverso multiplicativo
hence arithmetic is “well-behaved” and hence arithmetic is “well-behaved” and can do addition, subtraction, multiplication, can do addition, subtraction, multiplication, and division without leaving the field GF(p)and division without leaving the field GF(p)
GF(7) Multiplication Example GF(7) Multiplication Example
0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6
2 0 2 4 6 1 3 5
3 0 3 6 2 5 1 4
4 0 4 1 5 2 6 3
5 0 5 3 1 6 4 2
6 0 6 5 4 3 2 1
Finding InversesFinding Inverses
EXTENDED EUCLID(EXTENDED EUCLID(mm, , bb))1.1. (A1, A2, A3)=(1, 0, (A1, A2, A3)=(1, 0, mm); );
(B1, B2, B3)=(0, 1, (B1, B2, B3)=(0, 1, bb))2. if 2. if B3 = 0B3 = 0
return return A3 = gcd(A3 = gcd(mm, , bb); no inverse); no inverse3. if 3. if B3 = 1 B3 = 1
return return B3 = gcd(B3 = gcd(mm, , bb); B2 = ); B2 = bb–1–1 mod mod mm4. 4. Q = A3 div B3Q = A3 div B35. 5. (T1, T2, T3)=(A1 – Q B1, A2 – Q B2, A3 – Q B3)(T1, T2, T3)=(A1 – Q B1, A2 – Q B2, A3 – Q B3)6. 6. (A1, A2, A3)=(B1, B2, B3)(A1, A2, A3)=(B1, B2, B3)7. 7. (B1, B2, B3)=(T1, T2, T3)(B1, B2, B3)=(T1, T2, T3)8. goto 8. goto 22
Inverse of 550 in GF(1759)Inverse of 550 in GF(1759)
Q A1 A2 A3 B1 B2 B3
— 1 0 1759 0 1 550
3 0 1 550 1 –3 109
5 1 –3 109 –5 16 5
21 –5 16 5 106 –339 4
1 106 –339 4 –111 355 1
Aritmética PolinomialAritmética Polinomial Um polinômio de grau n é uma expressão na Um polinômio de grau n é uma expressão na
formaforma
ff((xx) = a) = annxxnn + a + an-1n-1xxn-1n-1 + … + a + … + a11x + x + aa00 = ∑ a = ∑ aiixxii
• Normalmente não nos interessamos por avaliar Normalmente não nos interessamos por avaliar um polinômio para determinado valor de x.um polinômio para determinado valor de x.
• Que é conhecida como Que é conhecida como indeterminadaindeterminada
Podemos distinguir três classes de aritmética de Podemos distinguir três classes de aritmética de polinômios: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 Aritmética de polinômios em que a aritmética
sobre os coeficientes é realizada mod psobre os coeficientes é realizada mod p Aritmética de polinômios em que os coeficientes Aritmética de polinômios em que os coeficientes
estão em GF(p)estão em GF(p)
Aritmérica Polinomial ComumAritmérica Polinomial Comum
Adição ou subtração dos coeficientes Adição ou subtração dos coeficientes correspondentescorrespondentes
Multiplica-se todos os termos por cada Multiplica-se todos os termos por cada outrooutro
Ex.:Ex.:let let ff((xx) = ) = xx33 + + xx22 + 2 and + 2 and gg((xx) = ) = xx22 – – x x + 1+ 1ff((xx) + ) + gg((xx) = ) = xx33 + 2 + 2xx22 – – x x + 3+ 3ff((xx) – ) – gg((xx) = ) = xx33 + + x x + 1+ 1ff((xx) x ) x gg((xx) = ) = xx55 + 3 + 3xx22 – 2 – 2x x + 2+ 2
Aritmética de Polinômios com Aritmética de Polinômios com Coeficientes em ZpCoeficientes em Zp
Se considerarmos que cada polinômio Se considerarmos que cada polinômio distinto é um elemento do conjunto.distinto é um elemento do conjunto. Conhecido como anel polinomialConhecido como anel polinomial
A divisão resultará em um quociente e um A divisão resultará em um quociente e um resto.resto.
Porém estamos mais interessados no Porém estamos mais interessados no mod 2mod 2 Ex.: os coeficientes são 0 ou 1Ex.: os coeficientes são 0 ou 1 Ex.: Ex.: ff((xx) = ) = xx33 + + xx22 e e gg((xx) = ) = xx22 + + x x + 1+ 1
ff((xx) + ) + gg((xx) = ) = xx33 + + x x + 1+ 1ff((xx) x ) x gg((xx) = ) = xx55 + + xx22
Divisão PolinomialDivisão Polinomial Pode-se escrever qualquer polinômio da Pode-se escrever qualquer polinômio da
seguinte forma:seguinte forma: ff((xx) = ) = qq((xx) ) gg((xx) + ) + rr((xx)) Aceitamos Aceitamos rr((xx) como sendo o resto.) como sendo o resto. rr((xx) = ) = ff((xx) mod ) mod gg((xx))
Se não tem resto dizemos que Se não tem resto dizemos que gg((xx) divide ) divide ff((xx))
se se gg((xx) não tem outro divisor além dele ) não tem outro divisor além dele mesmo & 1 dizemos ser um mesmo & 1 dizemos ser um polinômiopolinômio irredutívelirredutível (ou primo) (ou primo)
Módulo e primo formam um corpoMódulo e primo formam um corpo
Encontrando o Máximo Encontrando o Máximo Divisor ComumDivisor Comum
Pode-se encontrar o maior divisor comum para um Pode-se encontrar o maior divisor comum para um polinômiopolinômio
c(x)c(x) = MDC( = MDC(a(x), b(x)a(x), b(x)) se ) se c(x)c(x) for o polinômio de maior for o polinômio de maior grau que divide os dois grau que divide os dois a(x), b(x)a(x), b(x)
Pode-se usar o algoritmo euclidiano pra tal:Pode-se usar o algoritmo euclidiano pra tal:EUCLID[EUCLID[aa((xx)), b, b((xx)])]1. 1. A(A(xx) = ) = aa((xx); B(); B(xx) = ) = bb((xx))2. if 2. if B(B(xx) = 0 ) = 0 return return A(A(xx) = mdc[) = mdc[aa((xx)), b, b((xx)])]3. 3. R(R(xx) = A() = A(xx) mod B() mod B(xx))4. 4. A(A(xx) ¨ B() ¨ B(xx))5. 5. B(B(xx) ¨ R() ¨ R(xx))6. goto 6. goto 22
Aritmética Polinomial ModularAritmética Polinomial Modular
Nos concentramos em GF(2Nos concentramos em GF(2nn) ) Polinômios com coeficientes de módulo 2Polinômios com coeficientes de módulo 2 Cujo grau é inferior a nCujo grau é inferior a n Por isso deve-se reduzir o modulo a um Por isso deve-se reduzir o modulo a um
irredutível polinômio de grau n (para irredutível polinômio de grau n (para multiplicação somente)multiplicação somente)
Isso forma um corpo finitoIsso forma um corpo finito Pode-se sempre encontrar o inversoPode-se sempre encontrar o inverso
Pode-se usar o algoritmo do Inverso Pode-se usar o algoritmo do Inverso Euclidiano para encontrar.Euclidiano para encontrar.
Example GF(2Example GF(233))
Considerações Considerações ComputacionaisComputacionais
Sejam os coeficientes 0 ou 1, pode-se Sejam os coeficientes 0 ou 1, pode-se representar qualquer polinômio como uma representar qualquer polinômio como uma string de bitsstring de bits
Adições se tornam um XOR bit a bitAdições se tornam um XOR bit a bit Multiplicação é deslocamento a esquerda Multiplicação é deslocamento a esquerda
seguido de um XORseguido de um XOR cf long-hand multiplicationcf long-hand multiplication
Pode ser obtida pela aplicação repetida da Pode ser obtida pela aplicação repetida da Equação acrescentando resultados Equação acrescentando resultados intermediários.intermediários.
Exemplo ComputacionalExemplo Computacional
para para GF(2GF(233) temos ) temos (x(x22+1) é 101+1) é 10122 & (x & (x22+x+1) é +x+1) é 11111122
Então a adição é:Então a adição é: (x(x22+1) + (x+1) + (x22+x+1) = x +x+1) = x 101 XOR 111 = 010101 XOR 111 = 01022
E a multiplicação é:E a multiplicação é: (x+1).(x(x+1).(x22+1) = x.(x+1) = x.(x22+1) + 1.(x+1) + 1.(x22+1) +1)
= x= x33+x+x+x+x22+1 = x+1 = x33+x+x22+x+1 +x+1 011.101 = (101)<<1 XOR (101)<<0 = 011.101 = (101)<<1 XOR (101)<<0 =
1010 XOR 101 = 11111010 XOR 101 = 111122 Redução do modulo polinomial (get q(x) & r(x)) éRedução do modulo polinomial (get q(x) & r(x)) é
(x(x33+x+x22+x+1 ) mod (x+x+1 ) mod (x33+x+1) = 1.(x+x+1) = 1.(x33+x+1) + (x+x+1) + (x22) = x) = x22
1111 mod 1011 = 1111 XOR 1011 = 01001111 mod 1011 = 1111 XOR 1011 = 010022
Usando um GeradorUsando um Gerador
Técnica equivalente para definir um corpo Técnica equivalente para definir um corpo finitofinito
um um geradorgerador g é um elemento cujas g é um elemento cujas potências geram todos os elementos potências geram todos os elementos diferentes de zerodiferentes de zero Para F temos 0, gPara F temos 0, g00, g, g11, …, g, …, gq-2q-2
Um elemento b contido em F é chamado Um elemento b contido em F é chamado de raíz do polinômiode raíz do polinômio
Então implementa-se a multiplicação Então implementa-se a multiplicação adicionando expoentes do geradoradicionando expoentes do gerador
ResumoResumo
ConsideraçõesConsiderações Conceito de grupos, anéis, corposConceito de grupos, anéis, corpos Aritmética modular com inteirosAritmética modular com inteiros Algoritmo Euclidiano para MDCAlgoritmo Euclidiano para MDC Corpos Finitos GF(p)Corpos Finitos GF(p) Aritmética Polinomial em geral e para GF(2Aritmética Polinomial em geral e para GF(2nn) )