Criptografia e Segurança das Comunicações Álgebra abstracta Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 1/29 Álgebra - introdução [Def]: Álgebra (do árabe “al-djebr”: reunião) é o ramo da matemática que estuda os padrões nas operações sobre objectos matemáticos. Os objectos matemáticos classificam o tipo de álgebra: – Álgebra elementar, estuda expressões algébricas e fórmulas sobre inteiros, reais e complexos. – Álgebra abstracta : estuda grupos, aneis e corpos Nota1: para aprofundamento do tema consultar D.S. Dummit and R.M. Foote, Abstract Algebra, John Wiley &Sons, 3rd edition, 2004. Nota2: informações extra, em Inglês, disponíveis em http://comp.ist.utl.pt/pdis-srm Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 2/29 Grupos (1) [Def]: Um grupo é o quádruplo (G,1, -1,•), em que: – G é o conjunto portador (“carrier”), contendo todos os elementos – 1∈G é o elemento identidade – -1 : G → G é uma função inversa – • : G × G → G é função denominada operador de grupo O grupo deve satisfazer quatro axiomas: [A1] A operação • é fechada, i.e., a•b∈G para todos a,b∈G [A2] A operação • é associativa, i.e., a•(b•c) = (a•b) •c para todos a,b,c∈G [A3] a•1 = 1•a = a para todos a∈G [A4] Cada elemento a∈G tem um inverso, a-1, tal que a•a-1 = a-1•a = 1. Nota: os grupos são aplicados em áreas científicas distintas, tais como física, cristolografia e criptografia. Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 3/29 Grupos (2) Ex1: n é um grupo aditivo (“-1” e ”•” são negação e soma módulo n). Ex2: (/n)x é um grupo multiplicativo, com o grupo portador formado pelos co-primos de n e produto módulo n. Ex2: Sn é o grupo simétrico, em que – Conjunto portador definido em ciclo por todas as permutações de {1,…,n} Ex: em (1,2,3) tem-se 12, 23 e 31. – Operação de grupo, σ1•σ2 , definido pela produto de permutações. Ex: (1,3,2)•(1,3,2)= 132, 321, 213 ∴ (1,2,3) – Identidade (1) não altera ordem (nota: se no ciclo não for indicado o número, este não e’ alterado) – Inverso definido por troca das linhas do ciclo Ex: (1,2,3)-1 = 21, 32 e 13 ∴ (1,3,2) Nota: (Sn,•) foi o grupo estudado por Évariste Galois, matemático francês18111832, para verificar como as raízes de um polinómio se relacionam entre si. Faleceu aos 20 anos de idade num duelo. Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 4/29 Grupos (3) Curiosidade, não faz parte da avaliação Nota: Num grupo aditivo – Operador de grupo, soma, é representado por + – Identidade representado por 0 – Inversão representada pelo negação A subtracção, -: G × G → G é definida por a-b = a+(-b) [Def]: Um grupo é abeliano, ou comutativo, se for satisfeito o axioma [A5] A operação • é comutativa, i.e., a•b = b•a para todos a,b∈G Ex: GLn()-(matrizes × invertíveis, matriz identidade, matriz inversa, produto matrizes) é grupo não abeliano. Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 5/29 Grupos (4) [Def]: Um grupo diz-se cíclico, se existir um elemento g (denominado gerador) tal que, para qualquer a, existe um valor inteiro n que satisfaz a propriedade a = g • g • … • g (n vezes) Exemplo 4: 7 = ({0,1,2,3,4,5,6},0,-1,soma módulo 7} é um grupo cíclico. – 1-1=6, 2-1=5, 3-1=4 (inverso dos restantes elementos facilmente calculado porque a função de grupo é comutativa) – 1 é o gerador (ex: 4=1+1+1+1) Exemplo 5: ( /9)x = ({1,2,4,5,7,8},1,-1,produto módulo 9} é um grupo cíclico – 2-1=5, 4-1=7, 8-1=8 – 2 é gerador, mas não 7 Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 6/29 Grupos (5) Curiosidade, não faz parte da avaliação [Def]: Seja (/p)x, com p primo. Um valor 0<a<p é raíz primitiva de p, sse o menor m tal que am mod p=1 é igual a p-1. a a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 Examplo: Para p=13, as raízes primitivas são {2,6,7,11} Prof RG Crespo 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 4 8 3 6 12 11 9 5 10 7 1 3 3 9 1 3 9 1 3 9 1 3 9 1 4 4 3 12 9 10 1 4 3 12 9 10 1 5 5 12 8 1 5 12 8 1 5 12 8 1 6 6 10 8 9 2 12 7 3 5 4 11 1 7 7 10 5 9 11 12 6 3 8 4 2 1 8 8 12 5 1 8 12 5 1 8 12 5 1 1 9 9 3 1 9 3 1 9 3 1 9 3 10 10 9 12 3 4 1 10 9 12 3 4 1 11 11 4 5 3 7 12 2 9 8 10 6 1 12 12 1 12 1 12 1 12 1 12 1 12 1 Criptografia e Segurança das Comunicações Álgebra abstracta : 7/29 Grupos (6) Curiosidade, não faz parte da avaliação • A determinação de 0<a<p ser raíz primitiva por “força bruta” é impraticável para p elevado. 1. Pelo pequeno teorema de Fermat, ap-1=1 mod p. 2. Factorizar p-1=p1n. p2m . . . Piz 3. a é raíz primitiva se para todos os partes de factore pi,pj, api*pj≠1 mod p Ex: 2 é raíz primitiva de 30491? – 30490 = 2.5.3049 – 22*5≠1 mod 30491, 22*3049≠1 mod 30491, 25*3049≠1 mod 30491 Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 8/29 Aneis (1) [Def]: Um anel (”ring”) é um quíntuplo (R,1, -1, +,*) em que (R,1,-1,+) é um grupo abeliano e * satisfaz 3 axiomas: [M1] A operação * é fechada, i.e., para todos a,b∈G tem-se a*b ∈G [M2] A operação * é associativa, i.e., a*(b*c) = (a*b)*c para todos a,b,c∈R [M3] A operação * é distributiva sobre +, i.e., a*(b+c) = (a*b)+(a*c) para todos a,b,c∈R Ex: O conjunto M={0,1,…,M-1} forma um anel de inteiros módulo M com identidade 0 e operadores -1, +,* módulo M. Nota: nos aneis a soma, subtracção e multiplicação são feitas dentro do portador. Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 9/29 Aneis (2) [Def]: O anel é comutativo se for satisfeito o axioma [M4] A operação * é comutativa, i.e., a*b = b*a para todos a,b∈R [Def]: Um domínio integral -”integral domain” é um anel comutativo (R,+,*) que satisfaz 2 axiomas: [M5] Existem elemento identidade 1∈R≠0, tal que a*1 = 1*a = a para todos a∈R [M6] Se a*b =0, então a=0 ou b=0 para todos a,b,c∈R Ex1: (,+,*) é um exemplo de um domínio integral. Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 10/29 Corpos (1) [Def]: Um corpo-”field” é séptuplo (F,0,1,-,-1,+,*) em que: – (F, 0, -, +) é um grupo abeliano – (F\{0}, 1, -1, *) é um grupo abeliano Os grupos devem satisfazer os axiomas A1-M6, e [F1] para todos a≠0∈F, existe a-1 ∈F tal que a*a-1= 1 A divisão, /: F × F → F é definida por a/b = a*(b)-1 Exemplos de corpos: , Nota: nos corpos a soma, subtracção, multiplicação e divisão são feitas dentro do portador. Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 11/29 Corpos (2) Teorema: Para cada pn, p primo, existe um único corpo finito de dimensão p (a menos de um isomorfismo1), denominado corpo Galois, GF. • Definição: A característica de um corpo finito, char(F), é o menor inteiro ν>0 tal que 1+1+…+1 (ν vezes)=0. Se não existir o inteiro ν, então char(F)=0. Exemplos: – A característica do corpo Galois GF(νn) é ν – A característica de Q é 0 1 função bijectiva entre duas estruturas algébricas, que preserva propriedades (elementos identidade e inverso, operações binárias) Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 12/29 Corpos (3) Corpo Anel Grupo +,0 * 1 / Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 13/29 Corpos (4) 3*2=6 mod 5=1 3*3-1=1 Exemplos de +,* em GF GF(5) GF(2) + 0 1 0 0 1 1 1 0 + 0 1 2 3 4 * 0 1 0 0 0 1 0 1 GF(3) + 0 1 2 0 0 1 2 1 1 2 0 2 2 0 1 Prof RG Crespo * 0 1 2 0 0 0 0 1 0 1 2 2 0 2 1 0 0 1 2 3 4 1 1 2 3 4 0 2 2 3 4 0 1 3 3 4 0 1 2 4 4 0 1 2 3 * 0 1 2 3 4 0 0 0 0 0 0 1 0 1 2 3 4 2 0 2 4 1 3 3 0 3 1 4 2 4 0 4 3 2 1 Nota: não existem corpos GF(4), GF(8),… Sendo gcd(2,2m)=2≠1, nem todos os elementos Z2m possuem inverso multiplicativo Criptografia e Segurança das Comunicações Álgebra abstracta : 14/29 Corpos (5) • No corpo GF(νm), n>1, uma possível representação dos membros é {0,…, ν−1}{0,…, ν−1}… {0,…, ν−1} (m dígitos). – Soma feita apenas dentro de cada posição, módulo ν. – Produto feito matricialmente, módulo polinómio primitivo gerador de GF(νm) Exemplo GF(22) • 10+11 = (1+1)mod2(0+1)mod 2 = 01 + 00 01 10 11 00 00 01 10 11 01 01 00 11 10 Prof RG Crespo 10 10 11 00 01 11 11 10 01 00 + 0 1 2 3 0 0 1 2 3 1 1 0 3 2 2 2 3 0 1 Alterados membros (até podiam ser 0,1,A,B) 3 3 2 1 0 * 00 01 10 11 Criptografia e Segurança das Comunicações 00 00 00 00 00 01 00 01 10 11 10 00 10 11 01 11 00 11 01 10 Álgebra abstracta : 15/29 Corpos (6) – Qual o resultado de 2*2 em GF(22)? O polinómio primitivo gerador de GF(22) é x2+x+1. 2*2 = x*x = x2. Como x2 = (x2+x+1)*1+(x+1), tem-se 2*2=3 em GF(22) dividendo divisor resto quociente Representação polinomial – Qual o resultado de 3*3 em GF(22)? 3*3 = (x+1)*(x+1)=(x2+2x+1) mod 2 = x2+1. Como x2+1 = (x2+x+1)*1+(x), tem-se 3*3=2 Nota: Cifra AES usa aritmética no corpo GF(28), com polinómio primitivo x8+x4+x3+x+1 Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 16/29 Polinómios (1) [Def]: Um polinómio de um indeterminado x sobre um anel Ré uma expressão na forma f(x) = anxn + ... + a2x2 + a1x1 + a0 em que ai∈R, n≥0 – ai xi é designado termo, sendo ai o coeficiente. – Um polinómio com dois termos é designado binómio e com três termos trinómio. – O maior m, para o qual am ≠ 0 é designado grau do polinómio (inteiro qualquer). Nota: o indeterminado x não é membro de R, nem x2, x3, ... x é apenas "marcador" de adição e de multiplicação. Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 17/29 Polinómios (2) Um polinómio pode ser representado vectorialmente pelos seus (coeficientes) ou [expoentes de coeficientes não nulos]. Exemplo: x2+1=(1,0,1)=[2,0] Teorema: O conjunto de todos os polinómios de grau até m-1 (inclusivé), sobre p, é um isomorfismo de GF(pm). Exemplo: Para 2, o número de polinómios de grau até 2 é igual a 23=8. Os polinómios são: – (0,0,0) = 0, (0,0,1) = 1 – (0,1,0) = x, (0,1,1) = x+1 – (1,0,0) = x2, (1,0,1) = x2+1, (1,1,0) = x2+x , (1,1,1) = x2+x+1 Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 18/29 Polinómios (3) A. Soma de polinómios Basta simplesmente somar os coeficientes, módulo Zp. Ex: Sejam polinómios sobre Z2 f(x)=x3+x+1, g(x)=x2+x f(x)+g(x) = (x3+x+1) + (x2+x) mod 2 = (x3 + x2 + 2x + 1) mod 2 = x 3 + x2 + 1 Nota: Em Z2, a soma e a subtracção são iguais (frequentemente representadas por XOR - ⊕) Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 19/29 Polinómios (4) B. Divisão de polinómios Semelhante à divisão de inteiros – Grau do termo do quociente: diferença entre grau do dividendo e do divisor – Subtrair ao dividendo, módulo Zp, produto do termo e divisor. x5+x4 +x+1 x2+1 Divisor x5 +x3 x3+x2+x+1 x4+x3 +x+1 Dividendo x4 +x2 x3+x2+x+1 Quociente -x3 -x 5 4 x +x +x+1= +x2 +1 3 2 2 -x2 -1 (x +x +x+1)*(x +1) +0 0 Prof RG Crespo Criptografia e Segurança das Comunicações Resto Álgebra abstracta : 20/29 Polinómios (5) • Multiplicar algebricamente dois polinómios de grau n,m resulta num polinómio de grau n+m. • Problema: a multiplicação de dois polinómios de GF(pm), deve continuar a ser um polinómio de GF(pm). Solução: reduzir resultado C.Produto de polinómios Multiplicar os coeficientes, módulo Zp, e reduzir o polinómio de outro primitivo de grau m+1. Ex: x*(x+1) = 1 em GF(22) x2+x x2+x+ 1 Prof RG Crespo x2+x+1 1 Definição mais à frente Criptografia e Segurança das Comunicações Álgebra abstracta : 21/29 Polinómios (6) Curiosidade, não faz parte da avaliação • A multiplicação em AES é mais eficiente – x8 mod (x8+x4+x3+x+1) = x4+x3+x+1 – xtime(P): Multiplicar polinómio P por x 1. Incrementar potência de todos os termos de P 2. Se existir um termo x8, retirá-lo e adicionar x4+x3+x+1 Exemplo: com P=x6+x4+x2+x+1=[6,4,2,1,0], pretende-se calcular P*x, P*x2, P*x4 e P*x8 – – – – xtime([6,4,2,1,0]) = [7,5,3,2,1] xtime([7,5,3,2,1])=[8,6,4,3,2]=[6,4,3,2]+[4,3,1,0] = [6,2,1,0] xtime([6,2,1,0]) = [7,3,2,1] xtime([7,3,2,1])=[8,4,3,2]=[4,3,2] +[4,3,1,0] = [2,1,0] Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 22/29 Polinómios (7) Curiosidade, não faz parte da avaliação – Multiplicação de dois polinómios P*Q 1. Calcular P*x, P*x2, P*x4 e P*x8 2. Somar todos os P*xi, com i potências do polinómio Q Exemplo: Calcular produto P=[6,4,2,1,0] e Q=[4,1,0] [6,4,2,1,0]*[4,1,0] = [6,4,2,1,0]*x4 + [6,4,2,1,0]*x + [6,4,2,1,0] = [7,3,2,1] + [7,5,3,2,1] + [6,4,2,1,0] = [7,3,2,1] + [7,6,5,4,3,0]= [6,5,4,2,1,0] Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 23/29 Polinómios (8) Definição: um polinómio é irredutível, sse não puder ser factorizado módulo ZM noutros polinómios de grau ≥1. Ex: [2,1,0] é irredutível [2,0] não é irredutível: (x+1)(x+1) = x2 + 2x + 1 ≡ x2 + 1 mod 2 Grau Polinómios irredutíveis 1 [1,0], [1] 2 [2,1,0] 3 [3,1,0] 4 [4,3,2,1,0], [4,1,0] 5 [5,4,2,1,0], [5,4,3,2,0],[5,2,0] Prof RG Crespo Nota: outros polinómios são determinados a partir destes Trinómio m=3, k=1 Trinómio m=4, k=1 Trinómio m=5, k=2 Criptografia e Segurança das Comunicações Álgebra abstracta : 24/29 Polinómios (9) • Se um polinómio de grau m não for irredutível, então é produto de dois polinómios de graus a,b tal que m=a+b. Logo, para verificar basta confirmar se é divisível por polinómios irredutíveis até grau m/2 Exemplo: x6+x2+1 é irredutível? – – – – x6+x2+1= (x).(x5) + (x2+1) x6+x2+1= (x+1).(x5+x4+x3+x2) + (1) x6+x2+1= (x2+x+1).(x4+x3+x) + (1+x) x6+x2+1= (x3+x+1).(x3+x+1) + (0) Falhou! Falhou! Falhou! Acertou!! Logo, x6+x2+1 não é irredutível!! Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 25/29 Polinómios (10) Curiosidade, não faz parte da avaliação Teoremas: – Se um trinómio xm+xk+1, 1<k<m, é primitivo sobre Z2, então xm+xm-k+1 também é. Ex: [3,1,0] é primitivo, logo [3,3-1,0]=[3,2,0] também é. – Se [a,b,c,d,0] é primitivo sobre Z2, então [a,a-d,a-c,ab,0] também é primitivo. Ex: [32,7,6,2,0] é polinómio primitivo, logo [32,32-2,32-6,32-7,0] = [32,30,26,25,0] também é primitivo. Nota: O trinómio irredutível de maior grau conhecido, identificado em Agosto 2002, é o Bibury x6_972_593 + x3_037_958 + 1 Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 26/29 Polinómios (11) [Def]: um polinómio f(x)∈GF(q) irredutível de grau m é primitivo, se só divide xn-1 para n=qm-1. Os polinómios primitivos são os que geram as sequências de periodos mais longos. Ex: x3+x+1 é primitivo. x3+x+1 x7-1 7 5 4 x +x +x x4+x2+x+1 x5+x4+1 x5+x3+x2 x4+x3+x2+1 x4 +x2+x x3+x+1 x3+x+1 0 Fazendo n=23-1=7 Prof RG Crespo Criptografia e Segurança das Comunicações Álgebra abstracta : 27/29 Polinómios (12) • O polinómio f(x) primitivo é gerador de GF*(pm) = {xi mod f(x)} • Os elementos não nulos são calculados por xi mod f(x) x3+x+1 x5 x5+x3+x2 x2+1 3 2 x +x x3 +x+1 x2+x+1 i xi mod (x3+x+1) Vector 0 1 (0,0,1) 1 x (0,1,0) 2 x2 (1,0,0) 3 x +1 (0,1,1) 4 x2 + x (1,1,0) 5 x2 + x + 1 (1,1,1) 6 Prof RG Crespo Criptografia e Segurança das Comunicações x2 +1 (1,0,1) Álgebra abstracta : 28/29 Polinómios (13) Curiosidade, não faz parte da avaliação • O número de polinómios primitivos de grau n é dado por λ(n)=φ(2n-1)/n n λ(n) n λ(n) n λ(n) Grau 1 1 9 48 17 7710 1 [1,0] 2 1 10 60 18 8064 2 [2,1,0] 3 2 11 176 19 27594 3 [3,1,0], [3,2,0] 4 2 12 144 20 24000 4 [4,3,0], [4,1,0] 5 6 13 630 21 84672 5 6 6 14 756 22 120032 [5,4,3,2,0], [5,4,3,1,0], [5,4,2,1,0], [5,3,0], [5,3,2,1,0], [5,2,0] 7 18 15 1800 23 356960 8 16 16 2048 24 276480 Prof RG Crespo Polinómios primitivos Criptografia e Segurança das Comunicações Álgebra abstracta : 29/29