+ All Categories
Home > Technology > Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Date post: 25-Dec-2014
Category:
Upload: pablo-garaizar
View: 6,255 times
Download: 1 times
Share this document with a friend
Description:
Traducción de "A Stick Figure Guide to the Advanced Encryption Standard (AES)" de Jeff Moser al castellano, por Pablo Garaizar Sagarminaga.
72
Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo © Copyright 2009, Jeff Moser http://www.moserware.com/ Traducido por Pablo Garaizar
Transcript
Page 1: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

© Copyright 2009, Jeff Moserhttp://www.moserware.com/Traducido por Pablo Garaizar

Page 2: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Acto 1º: Érase una vez…

Page 3: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Gestiono petabytes* de datos cada día. Cifrodesde jugosa inteligencia Alto Secreto hasta los aburridos paquetes que llegan a tu router WiFi. ¡Lo hago todo!

* 1 petabyte = mucho

Page 4: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

… pero aún así, no parece que a nadie le importe yo o mi historia.

Page 5: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

La historia de cómo logré abrir mi propio camino para convertirme en el rey mundial del cifrado de bloques es mejor que la de Cenicienta.

Page 6: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

¡Guau! Todavía estás ahí ¿Quieres oírla?Bien, empecemos...

Page 7: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Hace algún tiempo*, la gente -exceptuando a las agencias de inteligencia- no tenía manera de juzgar la buena criptografía.

* ~ antes de 1975 para el público en general

¡EBG13 rf travny!

El ROT13 doblees mejor

Page 8: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Se promulgó un edicto en todo el país paraencontrar un algoritmo bueno y seguro.

¡Necesitamos un buen cifrado!

Page 9: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Un digno competidor llamado Luciferse dio a conocer.

Page 10: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Después de ser modificado por la Agencia Nacionalde Seguridad (NSA), fue declarado el Estándar de

Cifrado de Información (DES).

¡Yo te nombro DES!

Caja 'S'más fuerte

Clavemáscorta

Page 11: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

DES dominó la tierra durante 20 años.Los académicos lo estudiaron atentamente.Por primera vez había algo específico sobrelo que centrar su atención. Nacía el modernocampo de la criptografía.

'… por lo que respecta a nuestro conocimiento, DESestá a salvo de debilidades estadísticas o matemáticas'.

¡Fíjate en esa redde Feistel!

Page 12: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

A lo largo de los años, muchos atacantes desafiaron a DES y fue derrotado en varias batallas.

Page 13: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

La única manera de protegerse de esos ataques fueusar DES tres veces seguidas para formar 'Triple-DES'.

Esto fue efectivo, pero terriblemente lento.

Page 14: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Se promulgó otro decreto* ...

Necesitamos algoal menos tan robustocomo Triple-DES, peromás rápido y flexible.

* ~ a principios de 1997

Page 15: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

¡¡Esta es mi oportunidadde ser famoso!!

Usaré FROG

Esta invitación hizo que los cripto-magosse reunieran para desarrollar algo mejor.

Yo usaréTwofish

Page 16: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Mis creadores, Vincent Rijmen y Joan Daemen,se encontraban entre esos cripto-magos. Combinaron sus apellidos para darme mi nombre: Rinjdael*.

* pronunciado 'reindal' para los que no sean belgas.

Yo

Page 17: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Todo el mundo se reunió para votar y...

¡Votadme!

Page 18: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

¡¡Gané!!

Page 19: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

… y ahora soy el nuevo rey del cripto-mundo. Puedes encontrarme en cualquier parte. Incluso Intel está introduciendo instrucciones nativas para mí en sus próximos chips para hacerme asombrosamente rápido.

Hoja de ruta de los procesadores Intel

Page 20: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

¿Alguna pregunta?

Muy raro, me largo.

Bonita historia y todo eso, pero ¿cómofunciona el cifrado?

Page 21: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Acto 2º: Cifrado básico

Page 22: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

¡Muy buena pregunta! Solamente necesitas conocer 3 grandes ideas para entender el cifrado.

Page 23: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

1ª gran idea: confusión

Es una buena idea ocultar la relación entre tu mensaje real y tu mensaje 'cifrado'. Un ejemplo de esta 'confusión' es el viejo y fiel 'Cifrado del César':

letras

en claro:

cifrado:

Page 24: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Es también una buena idea esparcir el mensaje.Un ejemplo de esta 'difusión' sería una simpletransposición de columnas.

2ª gran idea: difusión

Separado por 3 espacios

Page 25: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Después de miles de años, hemos aprendido que es una mala idea asumir que nadie terminará por conocer cómo funciona tu método. Al final siemprehabrá alguien que lo termine sabiendo.

3ª gran idea: sólo la clave es secreta

MAL MEJOR

¡Dime cómo funciona!

¡Genial! ¡Ahorapuedo descifrarcualquier cosa!

¡Dime cómo funciona!

¡Mierda!

¡Sin problema! Está en la Wikipedia.Pero no sé la clave.

Page 26: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

¿Responde eso a tu pregunta?

¿Detalles?¡No soportolos detalles!

Está bien, pero ha sido muy general. ¿Cómo funcionas tú?

Page 27: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Acto 3º: Detalles

Page 28: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Estaría encantado de explicaros cómo funciono, pero antes tenéisque firmar esto.

Uh, ¿qué es eso?

Page 29: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Acuerdo de Prevención de disparo en el pie

Yo, ________ prometo que, una vez vea lo simple que es AES realmente, no loimplementaré en código en producción,

aunque sería realmente divertido hacerlo.

Este acuerdo tendrá validez hasta queel abajo firmante invente una coreografíaque compare y contraste la temporizaciónbasada en caché y otros ataques indirectos

y sus contramedidas.

Firma Fecha

Page 30: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Tomo tus datos y los cargo en esta tabla de 4 x 4*.

* Esta es la 'matriz de estado' que siempre llevo conmigo.

Relleno al final,dado que no eranexactamente

16 bytes

Page 31: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

En la ronda inicial calculo una OR-Exclusiva (XOR) de cada byte con el correspondiente de la clave para la primera ronda.

Page 32: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Un tributo a XOR

Hay una sencilla razón por la que uso XOR para aplicar la clave y en otros sitios: es rápido y barato, un simple cambio a nivel de bit. Usa muy poco hardware y puede hacerse en paralelo ya que no se usan molestos bits de acarreo.

Page 33: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Necesito muchas claves para usarlas en rondas posteriores.Derivo todas ellas a partir de la clave inicial usando una sencilla técnica de mezcla que es realmente rápida. A pesarde las críticas*, es suficientemente buena.

* la mayoría -por mucho- de las quejas en contra del diseño de AES se centran en esta simplificación.

Clave inicial

Expansión de la clave: parte 1

Page 34: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Tomo la última columna de la clave de la anterior ronda y muevo el byte de arriba del todo a abajo:

Expansión de la clave: parte 2a

Luego, paso cada byte por una caja de sustitución quelo traducirá en algo distinto:

Page 35: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Entonces, hago xor de la columna con una'constante de ronda' que es diferente para cada ronda:

Expansión de la clave: parte 2b

Finalmente, hago xor del resultado con la primeracolumna de la clave de la ronda previa:

Primera columna nueva

Page 36: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Las otras columnas son super-fáciles*. Solamente tengo que hacer XOR de la columna anterior con la misma columna de la clave de la ronda previa:

Expansión de la clave: parte 3

* date cuenta de que las claves de 256 bits son ligeramente más complicadas.

Columna dela clave deronda previa

Columna previa

Nueva columna Nueva clave de ronda

Page 37: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Luego, empiezo con las rondas intermedias. Unaronda es simplemente una serie de pasos que repito varias veces. El número de repeticiones depende deltamaño de la clave.

Ronda intermedia

Page 38: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Uso la confusión (1ª gran idea) para ocultar larelación de cada byte. Pongo cada byte en unacaja de sustitución (sbox), que lo traducirá a unbyte diferente

Aplicando confusión: bytes sustitutos

Denota'confusión'

Page 39: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Luego desplazo las filas hacia la izquierda

… y entonces las ajusto al otro lado

Denota 'permutación'

Aplicando difusión, parte 1: desplazar filas

Page 40: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Aplicando difusión, parte 2: mezclar columnas

Tomo cadacolumna ymezclo los

bits

Page 41: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Al final de cada ronda, aplico la siguiente clave de ronda con una XOR:

Aplicando seguridad de la clave: añadir la clave de ronda

Page 42: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

En la ronda final, me salto el paso de 'mezclar columnas',ya que no va a incrementar la seguridad y solamente ralentiza el proceso:

Ronda final

* la difusión que proporcionaría no se aprovecharía en la siguiente ronda.

Page 43: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

… y eso es todo. Cada ronda que hago añade másconfusión y difusión a los bits. También hace quela clave influya en ellos. ¡Cuantas más rondas, mejor!

Page 44: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Determinar el número de rondas siempreimplica varios compromisos

SeguridadRendimiento

'La seguridad siempre implica un coste en rendimiento' – Vincent Rijmen

Page 45: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Cuando estaba siendo desarrollado, un chico listo fue capaz de encontrar un atajo a través de 6 rondas. ¡Eso no está bien! Si miras cuidadosamente, verás que cada bit de la salida de una ronda depende de cada bit de dos rondas atrás. Para incrementar esta 'avalancha de difusión', añadí 4 rondas extra más. Este es mi 'margen de seguridad'.

Teóricamente'roto'

'Margen de seguridad'

Page 46: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Así que en imágenes, tenemos esto:

Page 47: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Descifrar implica hacer todo al revés

Aquí la 'ronda final' va al principio.

la 'ronda inicial' va al final.

Inverso de añadir clave de rondaInverso de

sustituir bytesInverso de

desplazar columnas Inverso de mezclar columnas

Page 48: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Un último detalle: no debería de ser usado tal cual, sino como pieza de construcción de un 'modo' decente.

¡MAL! Mejor

Page 49: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

¿Tiene sentido? ¿Respondeeso a tu pregunta?

Casi... salvo cuando movías tus manosy usabas analogías extrañas. ¿Qué es lo que realmente ocurre?

Page 50: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

¡Otra pregunta genial!No es difícil, pero... implicaun poco de... matemáticas.

¡Las mates son difíciles! ¡Vamosde compras!

De acuerdo.¡Dale calor!

Page 51: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Acto 4º: Matemáticas

Page 52: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Volvamos a tu clase de álgebra…

Vamos clase,¿cuál es larespuesta?

¡Yo lo sé!Es 2x.

Deberíacopiarle…

¿SaldráAshley

conmigo?

Page 53: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Repasando las bases…

la incógnita suma

multiplicacióncuadrado grado

coeficiente

polinomio

Page 54: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Cambiaremos las cosas ligeramente. Antes, los coeficientes podían ser tan grandes como queramos.Ahora solamente pueden ser 0 o 1:

AntesAhora

Coeficientes grandes Coeficientes pequeños

la nueva “suma”

* Hecho curioso: ahora, la 'nueva suma' es igual que la sustracción:

Page 55: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

¿Recuerdas cómo las multiplicaciones podían hacer que las cosas crecieran rápido?

¡Grande y asqueroso!

Page 56: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Con la 'nueva suma', las cosas son más sencillas,pero la x13 es todavía demasiado grande. Hagamos que no se pueda ir más allá de x7. ¿Cómo podríamos hacerlo?

Page 57: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Usaremos a nuestro amigo el 'reloj matemático*' para hacer esto. Solamente suma cosas y hace la división.Presta atención al resto de la división:

* Esto se conoce también como 'suma modular'. Los locos por las matemáticas lo llaman 'grupo'. AES utiliza un grupo especial llamado un 'campo finito'.

4 en punto + 10 horas = 2 en punto

+ 10 horas =

Page 58: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Podemos hacer matemáticas 'de reloj' con polinomios. En lugar de dividir por 12, mis creadores me dijeron que usara

donde

es muy grande, tenemos que hacerlo más pequeño

tiene coeficientesSupongamos que queremos multiplicar

* Recuerda que cada es o bien 0 o bien 1.

Page 59: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Lo dividimos entre y tomamos elresto:

Fíjate como las b's se desplazan hacia la izquierda 1 posición. Esto es simplemente

b7 multiplicado por un

polinomio pequeño

El resto:

Page 60: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Ahora ya estamos preparados para la explosión másfuerte del pasado: los logaritmos. Una vez dominados, el resto es pan comido. Los logaritmos nos permiten convertir multiplicación en suma:

A la inversa:

Luego…

Page 61: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

simple polinomio y contemplar cómo se complica la magia*.

* Si continuas multiplicando por (x•1) y tomas el resto después de dividirpor m(x), verás que generarás todos los posibles polinomios por debajo deX8. ¡Esto es muy importante!

simple polimonio

Podemos usar algoritmos en nuestro nuevo mundo. En lugar de usar 10 como base, podemos emplear el

Page 62: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

¿Por qué molestarnos con todas estas matemáticas?*El cifrado trata con bits y bytes, ¿no? Bueno, existeuna última conexión: un polinomio de 7º grado puedeRepresentar exactamente 1 byte, dado que ahora solamente utilizamos 0 o 1 como coeficientes:

¡¡Un solo byte!!

* A pesar de que solamente trabajaremos con bytes a partir de ahora, las matermáticas nos aseguran que todo se resuelve bien.

Page 63: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Trabajando con bytes, la suma de polinomios se convierte en una simple xor. Podemos usar nuestros conocimientos de logartimos para hacer una tabla para multiplicar muy rápidamente*.

* Podemos crear la tabla dado que seguimos multiplicando por

Page 64: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Dado que sabemos cómo multiplicarlos, podemos encontrar el byte del polinomio 'inverso' para cada byte. Este es el byte que deshará/invertirá el polinomio de nuevo a 1. Solamente hay 255 posibilidades*, así que podemos usar la fuerza bruta para encontrarlos:

encontrado por fuerza bruta usando un bucle for

* Hay solamente 255 y no 256 porque el 0 no tiene inverso.

Page 65: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Ahora ya podemos entender la misteriosa s-box.Tomaun byte 'a' y le aplica dos funciones. La primera es 'g',que solamente encuentra el byte inverso. La segunda es'f', que complica las matemáticas a propósito en contra para frustrar ataques.

Page 66: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

También podemos entender esas locas constantes de ronda en la expansión de la clave. Las consigo empezando con '1' y continuo multiplicando por 'x':

Constantes de las primeras 10 rondas

Page 67: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Mezclar las columnas es lo más complicado. Trato cada columna comoun polinomio. Uso entonces nuestro nuevo método para multiplicarlo porUn polinomio especialmente preparado y entonces tomo resto después de Dividirlo por x4+1. Esto se simplifica con una matriz de multiplicación:

la columnapolinomio especial

Page 68: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo
Page 69: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Guau… Creo que lo he entendido. Esrelativamente sencillo una vez encajasLas piezas. Gracias por explicarlo. He de irme.Un placer.

!Vuelve cuando quieras!

Page 70: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Pero hay mucho más de lo que hablar: mi resistenciaal criptoanálisis lineal y diferencial, mi estrategia'Wide Trail', la implausibilidad de ataques de claves relacionadas, y... mucho más... pero no queda nadie.

Page 71: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Oh, de acuerdo... todavía hay aburrido tráfico de router que tiene que ser cifrado. ¡Me tengo que ir!

Page 72: Una guía para entender Advanced Encryption Standard (AES) con muñecos de palo

Fin


Recommended