Prévia Matemática


 

Notação Polinomial GF(28)

 

            b7 x7+ b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x + b0

            onde ={b7b6b5b4b3b2b1b0} são os bits do byte B

 

 

Soma

            E feita usando XOR´s, e o VAI 1 é descartado.

            O símbolo ( + ) denotará no decorrer do documento, a soma em módulo 2, isto é um XOR

            C=A+B onde A= {a7a6a5a4a3a2a1a0}  e  B={b7b6b5b4b3b2b1b0}

            ci = ai + bi

Exemplo:

                        {01010111} + {10000011} = {11010100}

57h  +  83h D4h

 

 

Multiplicação:

            Multiplica-se os 2 bytes na notação polinomial e o resultado modulo polinômio irredutível de grau 8, o AES  usa o m(x)=  x8 +  x4 +  x3 +  x + 1 ou (11Bh)

 

Exemplo: 53h * 83h = C1h

                    ( x6 + x4 + x2 + x + 1) ( x7 + x + 1)      =       x13 + x11 + x9 + x8 + x7 +

                                                                                         x7 + x5 + x3 + x2 + x +

                                                                                         x6 + x4 + x2 + x + 1

                                                                               =        x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1

                    x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1     módulo      x8 + x4 + x3 + x + 1   =    x7 + x6 + 1

Observar que a soma das parcelas e feita da forma descrita anteriormente.

 

 

Multiplicação por x:

            Faz-se um deslocamento a esquerda com um XOR condicional da seguinte forma

            Se b7 = 0 faz apenas o deslocamento

            Se b7 = 1 faz o deslocamento seguido de um XOR com 1Bh

Onde b7 é o bit mais significativo do byte B. Essa operação e conhecida como xtime. Fazendo-se repetidas aplicações de xtime e somando seus resultados intermediários consegue-se fazer uma multiplicação por qualquer constante.

Exemplo: 57h * 13h  =  FEh

57h * 02h = xtime(57h) = AEh

57h * 04h = xtime(AEh) = 47h

57h * 08h = xtime(47h) = 8Eh

57h * 10h = xtime(8Eh) = 07h

então

57h * 13h = 57h * (01h  + 02h  + 10h) = 57h + AEh + 07h = FEh.

 

 

Polinômios com coeficientes em GF(28)

Os coeficientes agora são bytes e não bits como anteriormente, porém a forma de calcular é semelhante.

 

Soma:

A(x) = a3 x3 + a2 x2 + a1 x + a0       

B(x) = b3 x3 + b2 x2 + b1 x + b0

 

A(x) + B(x) = (a3 + b3) x3 + (a2 + b2) x2 + (a1 + b1) x + (a0 + b0)

 

Multiplicação: C(x) = A(x) * B(x)

Passo 1)

c0 = a0 * b0

c1 = a1 * b0 + a0 * b1

c2 = a2 * b0 + a1 * b1 + a0 * b2

c3 = a3 * b0 + a2 * b1 + a1 * b2 + a0 * b3

c4 = a3 * b1 + a2 * b2 + a1 * b3

c5 = a3 * b2 + a2 * b3

c6 = a3 * b3

 

Passo 2)

Reduzir o resultado num polinômio de grau menor que 4. No AES é usado (x4 + 1).

                                               xi mod (x4 + 1) = x i mod 4

 

 

Produto Modular:

D(x) = A(x) x B(x)  onde  D(x) = d3 x3 + d2 x2 + d1 x + d0

com:

           d0 = a0 * b0 + a3 * b1 + a2 * b2 + a1 * b3

           d1 = a1 * b0 + a0 * b1 + a3 * b2 + a2 * b3

               d2 = a2 * b0 + a1 * b1 + a0 * b2 + a3 * b3

               d3 = a3 * b0 + a2 * b1 + a1 * b2 + a0 * b3

 

     O símbolo ( x ) denotará no decorrer do documento, o produto modular.

 

 

 

 

Anterior    Próxima

 

 


© Copyright 2005 Leopoldo A. P. Mathias, All Rights Reserved