AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent...

21
AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Transcript of AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent...

Page 1: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

AES: Algoritmo de cifrado simétrico estándar del siglo XXIAdvanced Encryption Standard

Vincent Rijmen(Bélgica, 1970- )

Joan Daemen(Bélgica, 1965- )

Page 2: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

¿Cuánto vale la siguiente expresión?

12232

Page 3: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

+ 0 1 2

0 0 1 2

1 1 2 0

2 2 0 1

}1,0{2 Z

0 1 2

0 0 0 0

1 0 1 2

2 0 2 1

}2,1,0{3 Z

+ 0 1

0 0 1

1 1 0

. 0 1

0 0 0

1 0 1

Page 4: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

}3,2,1,0{4 Z+ 0 1 2 3

0 0 1 2 3

1 1 2 3 0

2 2 3 0 1

3 3 0 1 2

. 0 1 2 3

0 0 0 0 0

1 0 1 2 3

2 0 2 0 2

3 0 3 2 1

}5,4,3,2,1,0{5 Z

+ 0 1 2 3 4

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

Page 5: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

6Z

+ 0 1 2 3 4 5

0 0 1 2 3 4 5

1 1 2 3 4 5 0

2 2 3 4 5 0 1

3 3 4 5 0 1 2

4 4 5 0 1 2 3

5 5 0 1 2 3 4

+ 0 1 2 3 4 5

0 0 0 0 0 0 0

1 0 1 2 3 4 5

2 0 2 4 0 2 4

3 0 3 0 3 0 3

4 0 4 2 0 4 2

5 0 5 4 3 2 1

¡¡ Interesa trabajar con conjuntos donde todos los elementos no nulos tengan inverso !!

Ese tipo de conjuntos se llaman cuerpos de Galois (1811-1832), en inglés GF (Galois Field)

Page 6: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

• Zn con n primo es cuerpo.

• De manera que, por ejemplo, Z8 no es cuerpo

• ¿Existe un cuerpo con 8 elementos?.

Galois demostró que sí.

En realidad demostró algo mucho mejor: que el número de elementos de cualquier cuerpo finito era de la forma con p primo.

¿Pero cómo se construye este cuerpo?.

Vamos a verlo.

np

Page 7: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Construcción del cuerpo GF( )=GF(8)Consideremos el conjunto formado por todos los polinomios del tipo:

cxbxa 2

donde los coeficientes son ceros o unos

32

¿Cuántos polinomios se pueden formar?

a b c cxbxa 2 Binario Decimal

0 0 0 0 000 0

0 0 1 1 001 1

0 1 0 x 010 2

0 1 1 1x 011 3

1 0 0 2x 100 4

1 0 1 12 x 101 5

1 1 0 xx 2 110 6

1 1 1 12 xx 111 7

Page 8: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Construcción del cuerpo GF( )=GF(8)Vamos a hacer la tabla de sumar.

Los polinomios se suman como siempre sólo que ahora los coeficientes valen cero o uno ( suma de )

32

+ 0 1 x 1x 2x 12 x xx 2 12 xx

0 0 1 x 1x 2x 12 x xx 2 12 xx 1 1 0 1x x 12 x 2x 12 xx

xx 2

x x 1x 0 1 xx 2 12 xx

2x 12 x

1x 1x x 1 0 12 xx

xx 2 12 x 2x 2x 2x 12 x xx 2 12 xx

0 1 x 1x

12 x 12 x 2x 12 xx

xx 2 1 0 1x x

xx 2 xx 2 12 xx

2x 12 x x 1x 0 1

12 xx

12 xx

xx 2 12 x 2x 1x x 1 0

2Z

Ejemplo: xxxx )1()1( 22

Page 9: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Construcción del cuerpo GF( )=GF(8)La tabla de sumar anterior se puede escribir con números:

32

+ 0 1 2 3 4 5 6 7

0 0 1 2 3 4 5 6 7

1 1 0 3 2 5 4 7 6

2 2 3 0 1 6 7 4 5

3 3 2 1 0 7 6 5 4

4 4 5 6 7 0 1 2 3

5 5 4 7 6 1 0 3 2

6 6 7 4 5 2 3 0 1

7 7 6 5 4 3 2 1 0

71111110101052 2(

22

2(2( xxxx

41001111101173 2(

22

2(2( xxxx

Page 10: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Construcción del cuerpo GF( )=GF(8)Vamos a hacer la tabla de multiplicar.

Los polinomios se multiplican como siempre pero sólo con ceros y unos.

32

xxxqxpxxq

xxp

2)()(

1)(

)(

11)1()1()()(1)(

1)( 22

xxxxxxxqxpxxq

xxp

xxxxxxxqxpxxq

xxxp

3223

2

)()(1)(

)(

¡¡El resultado se sale fuera de donde estamos trabajando!!

¿Y ahora qué hacemos?

Page 11: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Construcción del cuerpo GF( )=GF(8)32

xxxxxxxqxpxxq

xxxp

3223

2

)()(1)(

)(

Pues vamos a dividir el polinomio que nos salga entre el polinomio:

1)( 3 xxxm

Y así nos aseguramos que el resultado siempre sea un polinomio de grado dos (como mucho).

1

11

1|

3

33

xx

xxxx

Ahora nos quedamos con el resto:

))((mod1)()( 3 xmxxxqxp

Page 12: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Construcción del cuerpo GF( )=GF(8)32

0 1 x 1x 2x 12 x xx 2 12 xx 0 0 0 0 0 0 0 0 0

1 0 1 x 1x 2x 12 x xx 2 12 xx x 0 x 2x xx 2 1x 1 12 xx

12 x

1x 0 1x xx 2 12 x 12 xx

2x 1 x 2x 0 2x 1x 12 xx

xx 2 x 12 x 1

12 x 0 12 x 1 2x x 12 xx

1x xx 2

xx 2 0 xx 2 12 xx

1 12 x 1x x 2x

12 xx

0 12 xx

12 x x 1 xx 2 2x 1x

Page 13: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

0 1 2 3 4 5 6 7

0 0 0 0 0 0 0 0 0

1 0 1 2 3 4 5 6 7

2 0 2 4 6 3 1 7 5

3 0 3 6 5 7 4 1 2

4 0 4 3 7 6 2 5 1

5 0 5 1 4 2 7 3 6

6 0 6 7 1 5 3 2 4

7 0 7 5 2 1 6 4 3

Construcción del cuerpo GF( )=GF(8)32

71111)1(01101032 2(2232

2(2( xxxxxx

1

11

1|

2

3

323

xx

xx

xxxx

Page 14: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

0 1 2 3 4 5 6 7

0 0 0 0 0 0 0 0 0

1 0 1 2 3 4 5 6 7

2 0 2 4 6 3 1 7 5

3 0 3 6 5 7 4 1 2

4 0 4 3 7 6 2 5 1

5 0 5 1 4 2 7 3 6

6 0 6 7 1 5 3 2 4

7 0 7 5 2 1 6 4 3

Construcción del cuerpo GF( )=GF(8)32+ 0 1 2 3 4 5 6 7

0 0 1 2 3 4 5 6 7

1 1 0 3 2 5 4 7 6

2 2 3 0 1 6 7 4 5

3 3 2 1 0 7 6 5 4

4 4 5 6 7 0 1 2 3

5 5 4 7 6 1 0 3 2

6 6 7 4 5 2 3 0 1

7 7 6 5 4 3 2 1 0

Ejemplos:

47371273645

31214612232

Page 15: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

1112232

Ahora ya se puede contestar a la pregunta del inicio

114112232

612232

En la aritmética habitual:

En la aritmética en :

En la aritmética en GF(8):

5Z

¡¡ El resultado depende del conjunto donde estamos trabajando !!

Page 16: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Aritmética de AES• El algoritmo AES trabaja con el cuerpo GF(256)=

•Trabaja con bytes y no con bits como hace DES.

• Cada 8 bits (1 byte) de entrada se interpretarán como un polinomio de grado siete:

)2( 8GF

01

12

23

34

45

56

67

701234567 bxbxbxbxbxbxbxbbbbbbbbb

101010111 2462( xxxx

Por ejemplo:

Page 17: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Aritmética de AES

¿Cómo se suma en AES?. Pues de la misma forma que razonamos en GF(8)

Ahora la tabla de sumar será mucho más grande ya que GF(256) tiene 256 elementos: 0, 1, 2, …, 255

Como la tabla de sumar no nos cabe aquí, vamos a hacer un ejemplo:

21201001101

11

001110000111010113187

2(

24677246

2(2(

xxxxxxxxxx

Page 18: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Aritmética de AES

La tabla de multiplicar también se hace igual que antes.

Cuando el producto nos dé como resultado un polinomio de grado

mayor que 7, lo dividiremos entre

La tabla de multiplicar es muy grande, así que sólo hacemos un ejemplo:

1)( 348 xxxxxm

1)1()1(

00111000011101011318734568911137246

2(2(

xxxxxxxxxxxxxx

Como el resultado es un polinomio de grado mayor que 7, tenemos que dividir entre m(x) y quedarnos con el resto

Page 19: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Aritmética de AES 1)( 348 xxxxxm

1)1()1(

00111000011101011318734568911137246

2(2(

xxxxxxxxxxxxxx

1

1

1|1

67

346711

3411

35568913

3483456891113

xx

xxxxx

xxx

xxxxxxx

xxxxxxxxxxxx

19300011100

1))((mod113187 673456891113

xxxmxxxxxxxx

Page 20: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Aritmética de AESHemos visto cómo se suman y cómo se multiplican dos números en AES:

19313187

21213187

De esa forma se completan las tablas de sumar y multiplicar.

Por último, sólo hay que decir que además es habitual trabajar en hexadecimal (base 16) en AES.

En base 16 se usan los símbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C D, E, F

Los elementos de GF(256), que iban desde 0 hasta 255, irán en hexadecimal desde 00 hasta FF. Volviendo a nuestro ejemplo anterior:

18357

48357

C

D

19313187

21213187

BASE 10 BASE 16

Page 21: AES : Algoritmo de cifrado simétrico estándar del siglo XXI Advanced Encryption Standard Vincent Rijmen (Bélgica, 1970- ) Joan Daemen (Bélgica, 1965- )

Ejemplo:

¿Podrías averiguar cuál es el resultado en GF(256) de las siguientes operaciones?

16(16(

16(16(

1357

413

A