Date post: | 25-Dec-2014 |
Category: |
Technology |
Upload: | pablo-garaizar |
View: | 6,255 times |
Download: | 1 times |
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
Acto 1º: Érase una vez…
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
… pero aún así, no parece que a nadie le importe yo o mi historia.
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.
¡Guau! Todavía estás ahí ¿Quieres oírla?Bien, empecemos...
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
Se promulgó un edicto en todo el país paraencontrar un algoritmo bueno y seguro.
¡Necesitamos un buen cifrado!
Un digno competidor llamado Luciferse dio a conocer.
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
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!
A lo largo de los años, muchos atacantes desafiaron a DES y fue derrotado en varias batallas.
La única manera de protegerse de esos ataques fueusar DES tres veces seguidas para formar 'Triple-DES'.
Esto fue efectivo, pero terriblemente lento.
Se promulgó otro decreto* ...
Necesitamos algoal menos tan robustocomo Triple-DES, peromás rápido y flexible.
* ~ a principios de 1997
¡¡Esta es mi oportunidadde ser famoso!!
Usaré FROG
Esta invitación hizo que los cripto-magosse reunieran para desarrollar algo mejor.
Yo usaréTwofish
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
Todo el mundo se reunió para votar y...
¡Votadme!
¡¡Gané!!
… 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
¿Alguna pregunta?
Muy raro, me largo.
Bonita historia y todo eso, pero ¿cómofunciona el cifrado?
Acto 2º: Cifrado básico
¡Muy buena pregunta! Solamente necesitas conocer 3 grandes ideas para entender el cifrado.
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:
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
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.
¿Responde eso a tu pregunta?
¿Detalles?¡No soportolos detalles!
Está bien, pero ha sido muy general. ¿Cómo funcionas tú?
Acto 3º: Detalles
Estaría encantado de explicaros cómo funciono, pero antes tenéisque firmar esto.
Uh, ¿qué es eso?
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
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
En la ronda inicial calculo una OR-Exclusiva (XOR) de cada byte con el correspondiente de la clave para la primera ronda.
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.
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
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:
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
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
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
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'
Luego desplazo las filas hacia la izquierda
… y entonces las ajusto al otro lado
Denota 'permutación'
Aplicando difusión, parte 1: desplazar filas
Aplicando difusión, parte 2: mezclar columnas
Tomo cadacolumna ymezclo los
bits
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
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.
… 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!
Determinar el número de rondas siempreimplica varios compromisos
SeguridadRendimiento
'La seguridad siempre implica un coste en rendimiento' – Vincent Rijmen
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'
Así que en imágenes, tenemos esto:
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
Un último detalle: no debería de ser usado tal cual, sino como pieza de construcción de un 'modo' decente.
¡MAL! Mejor
¿Tiene sentido? ¿Respondeeso a tu pregunta?
Casi... salvo cuando movías tus manosy usabas analogías extrañas. ¿Qué es lo que realmente ocurre?
¡Otra pregunta genial!No es difícil, pero... implicaun poco de... matemáticas.
¡Las mates son difíciles! ¡Vamosde compras!
De acuerdo.¡Dale calor!
Acto 4º: Matemáticas
Volvamos a tu clase de álgebra…
Vamos clase,¿cuál es larespuesta?
Tú
¡Yo lo sé!Es 2x.
Deberíacopiarle…
¿SaldráAshley
conmigo?
Repasando las bases…
la incógnita suma
multiplicacióncuadrado grado
coeficiente
polinomio
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:
¿Recuerdas cómo las multiplicaciones podían hacer que las cosas crecieran rápido?
¡Grande y asqueroso!
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?
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 =
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.
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:
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…
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
¿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.
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
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.
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.
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
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
Guau… Creo que lo he entendido. Esrelativamente sencillo una vez encajasLas piezas. Gracias por explicarlo. He de irme.Un placer.
!Vuelve cuando quieras!
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.
Oh, de acuerdo... todavía hay aburrido tráfico de router que tiene que ser cifrado. ¡Me tengo que ir!
Fin